次のコードがあります。
REPORT ZZY.
CLASS lcl_main DEFINITION FINAL CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS:
convert_to_xstring
IMPORTING
i_param1 TYPE i
i_param2 TYPE i
RETURNING
VALUE(rv_result) TYPE xstring,
main.
ENDCLASS.
CLASS lcl_main IMPLEMENTATION.
METHOD convert_to_xstring.
ENDMETHOD.
METHOD main.
DATA: lt_binary_tab TYPE STANDARD TABLE OF x.
DATA(lv_result) = convert_to_xstring( i_param1 = 1 i_param2 = 2 ).
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lcl_main=>convert_to_xstring(
EXPORTING
i_param1 = 1
i_param2 = 2
)
TABLES
binary_tab = lt_binary_tab.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
lcl_main=>main( ).
汎用モジュール呼び出しの一部ではない関数メソッド呼び出しは、そのように記述できます。
DATA(lv_result) = convert_to_xstring( i_param1 = 1 i_param2 = 2 ).
ただし、上記のとおりに使用したい場合
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lcl_main=>convert_to_xstring( i_param1 = 1 i_param2 = 2 )
TABLES
binary_tab = lt_binary_tab.
次の構文エラーが発生します。
フィールド "CONVERT_TO_XSTRING(" は不明です。指定されたテーブルのいずれにも存在せず、"DATA" ステートメントによって定義されていません。"DATA" ステートメント。
この場合、コンパイラは属性とメソッドを区別するために何らかのガイダンスを必要とするようです。コンパイラがこのようなケースを記述せずに許可するのはなぜ曖昧なのでしょうEXPORTING
か?
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lcl_main=>convert_to_xstring( EXPORTING i_param1 = 1 i_param2 = 2 )
TABLES
binary_tab = lt_binary_tab.