效果
此谓词表达式用于检查过程的某个形式参数“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.