效果
此謂詞表達式用于檢查過程的某個形式參數“para”是否已賦值或被請求使用。如果在調用時實際參數被賦值給了該形式參數,則該表達式為真。
這種關系表達式僅能在函數模塊和方法中使用。而對于“para”而言,所有可選的形參都可以進行指定。
加上“NOT”后,如果在調用時沒有將實際參數賦給形式參數,那么該表達式即為真。
在以下流程中必須遵守一些特定的規則:
遠程啟用的功能模塊
在兩個 AS ABAP 系統之間的遠程功能調用中,兩者都必須至少具有 ABAP 4.6 版本,以便在被調用的功能模塊中能夠使用 IS SUPPLIED。
使用 CALL FUNCTION … STARTING NEW TASK … 調用功能模塊時,IS SUPPLIED 不會被評估。
從外部 RFC 接口調用時,對于所有當前支持的 RFC 庫,IS SUPPLIED 都會被評估。只有當使用較舊的 RFC 庫(如 librfc32.dll)而并非 RFC C 和 C++ 軟件開發套件時,IS SUPPLIED 才不會被評估。
更新功能模塊
使用 CALL FUNCTION … IN UPDATE TASK … 調用更新功能模塊時,IS SUPPLIED 不會被評估。
在“IS SUPPLIED”未被評估的情況下,該謂詞表達式將返回值“真”。
提示
在一種被稱為“函數式方法”的模式中,謂詞表達式“IS SUPPLIED”在其返回值上為真。在這種情況下,始終會有一個臨時的實際參數與返回值綁定,該返回值用作當前操作位置的運算符。
謂詞表達式“IS SUPPLIED”包含了過時的表達式“IS REQUESTED”。
示例
在方法 m1 中,第一個 IF 語句的邏輯表達式在調用時如果實際參數被賦值給形式參數 p1 時為真。這里對初始值的檢查是不夠的,因為這是使用 DEFAULT 指定的替換參數的值。第二個 IF 語句的邏輯表達式是在調用時如果形式參數 p2 沒有被實際參數賦值時為真。
CLASS c1 DEFINITION.PUBLIC SECTION.CLASS-METHODS m1 IMPORTING p1 TYPE i DEFAULT 0EXPORTING p2 TYPE i.
ENDCLASS.CLASS c1 IMPLEMENTATION.METHOD m1.IF p1 IS SUPPLIED....ELSE....ENDIF.IF p2 IS NOT SUPPLIED.RETURN.ELSE....ENDIF.ENDMETHOD.
ENDCLASS.