![](/img/trans.png)
[英]Does a program make a system call to get the value of an environment variable in linux?
[英]Does ABAP CALL statement set SY-SUBRC value?
我正在查看 SAP ABAP 关键字定义中的CALL - 系统函数调用的描述。 此类调用的格式为CALL 'xxx' ID 'yyy' FIELD 'zzz'.
ABAP 关键字定义没有提到通过调用系统函数来设置sy-subrc
。 但不知何故,我怀疑它是。
sy-subrc
=> 未设置) 请注意,我不是 ABAP 程序员,我通常将 Java 中的第三方 ABAP 程序作为文本/解析树处理。 我知道通常不应该调用系统函数,但是我查看的 ABAP 代码可能会有这样的调用。 此外,我对特定系统调用将sy-subrc
设置为的实际值不感兴趣,只sy-subrc
系统调用是否设置/更改sy-subrc
的事实。
好吧,当您问这个问题时,您已经知道这不是使用直接 SYSTEM 调用的推荐方法。 但是,如果您仍然想使用它们......
通过使用CALL
语句CALL
SAP 内核 C 模块,并且在不知道来源的情况下,我们无法自信地解释返回值,无论是 0 还是 1。
尽管有一些示例(参见DYNP_VALUES_READ
FM 的第 230 行)在系统调用后检查sy-subrc
值,但除了 SAP 之外没有人知道在某些情况下要检查哪个值。 我们也不。
也有关于这些值在测试过程中含义不明确的报告 ( 1 , 2 )。
所以答案是否定的,在这种情况下sy-subrc
没有带来任何有意义的信息。
PS回答你的问题:
SYSTEM
函数。 它调用任意 Unix 命令。
例如,您可以像这样移动存储在 ABAP 服务器上的文件:
CALL 'SYSTEM'
ID 'COMMAND'
FIELD 'mv /usr/sap/temporary
/usr/sap/definite'.
现在这应该是一个适用于任何系统的安全调用:
DATA: dbserver TYPE char255.
CALL 'C_SAPGPARAM' ID 'NAME' FIELD 'SAPDBHOST'
ID 'VALUE' FIELD dbserver.
正如您可能已经知道的那样,可能会发生一些例外情况。 至于sy-subrc
,当命令设置sy-subrc
,通常在文档中明确提到它,包括它可以保存哪些值及其含义。 但不要引用我的话。
简单(无害)功能模块是RH_GET_DATE_DAYNAME
需要语言和 10 个字符的日期(例如26.10.2016
)作为输入字段和DATE_TO_DAY
只需要 10 个字符的日期作为输入。 如果输入了有效日期,则sy-subrc
应返回0
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.