簡體   English   中英

ABAP CALL 語句是否設置 SY-SUBRC 值?

[英]Does ABAP CALL statement set SY-SUBRC value?

我正在查看 SAP ABAP 關鍵字定義中的CALL - 系統函數調用的描述。 此類調用的格式為CALL 'xxx' ID 'yyy' FIELD 'zzz'. ABAP 關鍵字定義沒有提到通過調用系統函數來設置sy-subrc 但不知何故,我懷疑它是。

  • 在這種情況下,我可以“信任”關鍵字定義嗎? (未提及sy-subrc => 未設置)
  • 在 SAP 系統上測試它的“好”示例系統函數調用是什么? (不會破壞/改變任何東西,存在於所有系統上)

請注意,我不是 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回答你的問題:

  1. 不,你不能那樣解釋它。 如果事情沒有在ABAP文檔中提到那么這個不知道在所有的肯定或沒有意義的。
  2. 我根本無法確認這是個好主意(測試系統調用),但是如果您願意,可以嘗試調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM