![](/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.