如何通过RFC更新程序源代码?是否有适配的功能模块?
可实现ABAP程序源码修改的RFC功能模块参考
标准SAP里确实没放命名为RPY_PROGRAM_UPDATE的公开RFC,但有几个正经可用的远程调用模块能满足修改程序源码的需求:
- 同RPY接口组的
RPY_PROGRAM_MODIFY
这个和你提到的RPY_PROGRAM_INSERT、RPY_PROGRAM_READ是一套仓库对象接口,专门用来改已经存在的ABAP程序的属性、源码、文档等要素。入参和INSERT模块差不多,传目标程序名、完整源码内表、程序属性、绑定的传输请求号就能直接覆盖更新。要注意两个坑:一是它不会自动帮你建不存在的程序,调用前得确认目标程序已经在系统里;二是默认不做语法检查,改完要校验的话得搭配同组的RPY_PROGRAM_CHECK远程调用。 - 7.4以上高版本可用的
RPY_REPOSITORY_MODIFY
要是你用的NetWeaver版本在7.4及以上,直接用这个统一仓库修改接口就行,传对象类型为PROG、对象名是目标程序名,再填好源码、属性参数就能完成更新。这个接口把对象锁检查、权限校验、CTS传输绑定的逻辑都整合好了,不用自己单独写前置校验逻辑,兼容性比单对象的MODIFY模块好很多。 - 全版本兼容的自定义封装方案
要是上面两个标准模块因为系统补丁版本问题用不了,自己封一个远程启用的自定义FM就行,内部按顺序走:调RS_ACCESS_PERMISSION校验修改权限、给程序加对象锁、用INSERT REPORT语句传源码更新、绑定对应传输请求、最后释放锁。这个方案灵活度最高,还能自己加语法检查、操作日志之类的自定义逻辑。
提醒一句:所有改仓库对象的RFC调用,都要给通信用户配
S_DEVELOP权限对象下PROG类型的02(修改)权限;开了传输管控的系统必须传有效的可修改传输请求号,不然操作直接被拦。别用SAP没公开释放的内部FM,版本升级、打补丁的时候说删就删说改就改,踩坑概率极高。
内容的提问来源于stack exchange,提问作者siasty
相关产品推荐
相关产品推荐

