我正在查看SAP ABAP关键字定义中 CALL - 系统函数调用的描述。此类调用的格式为CALL 'xxx' ID 'yyy' FIELD 'zzz'.
ABAP关键字定义未提及通过调用系统函数来设置sy-subrc
。但不知何故,我怀疑它是。
sy-subrc
未提及=>未设置)请注意,我不是ABAP程序员,我通常使用Java作为文本/解析树处理第三方ABAP程序。我知道通常不应该调用系统函数,但我看到的ABAP代码可能有这样的调用。此外,我对特定系统调用设置sy-subrc
的实际值不感兴趣,只是系统调用是否设置为/ sy-subrc
。
答案 0 :(得分:1)
现在这应该是适用于任何系统的安全通话:
DATA: dbserver TYPE char255.
CALL 'C_SAPGPARAM' ID 'NAME' FIELD 'SAPDBHOST'
ID 'VALUE' FIELD dbserver.
您可能已经知道可能会发生一些exceptions。至于sy-subrc
,当命令设置sy-subrc
时,它通常在文档中明确提到,包括它可以容纳哪些值及其含义。但请不要引用我的话。
答案 1 :(得分:1)
好吧,正如您在问这个问题时,您已经意识到这不是推荐使用直接SYSTEM调用的方法。但是,如果您仍想使用它们...
通过使用CALL
语句调用SAP内核C模块并且在不知道源的情况下我们无法自信地解释返回值,无论是0还是1。
尽管有一些示例(参见DYNP_VALUES_READ
FM的第230行),但在系统调用后检查sy-subrc
值,除SAP之外的任何人都知道在某些情况下要检查哪个值。我们也不是。
还有报告(1,2)关于测试期间这些值的模糊含义。
所以答案是否,sy-subrc
在这种情况下不会带来任何有意义的信息。
P.S。回答你的问题:
SYSTEM
函数。 它调用任意Unix命令。
例如,您可以移动存储在ABAP服务器上的文件,如下所示:
CALL 'SYSTEM'
ID 'COMMAND'
FIELD 'mv /usr/sap/temporary
/usr/sap/definite'.
答案 2 :(得分:0)
简单(无害)函数模块RH_GET_DATE_DAYNAME
需要语言和10个字符的日期(例如26.10.2016
)作为输入字段,而DATE_TO_DAY
只需要10个字符的日期作为输入。如果输入了有效日期,则sy-subrc
应返回为0
。