私は以下のコードを持っています。汎用モジュール呼び出し内の機能メソッド呼び出し、なぜEXPORTINGでのみですか?
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.
これらのメソッドの呼び出しは[関数のメソッド](https://help.sap.com/abapdocu_70/en/ABAPMETHODS_FUNCTIONAL.htm)と呼ばれ、[インライン関数またはメソッド](https:// en .wikipedia.org/wiki/Inline_function)、AFAIKはABAPには存在しません。私はむしろ2つを混同しないでください。そして、あなたの質問については、 'コール関数'が混乱している - それは十分な答えですか? ;-) – vwegert
[インライン](https://scn.sap.com/community/abap/blog/2013/05/23/abap-news-for-release-740--inline-宣言)の宣言を混乱させるようにしますか?私は、このメソッド呼び出しの方法は、実際には非常に最初から機能的な名前が付けられているので、私は言い換えることができます。私はC++で 'inline'関数を覚えていますが、プリプロセッサマクロにとっては良い選択肢です。 – Jagger