我有以下一段代码。函数模块调用中的函数方法调用,为什么只与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中。我宁愿不混淆这两者。而且,至于你的问题 - “CALL FUNCTION”是一团糟 - 是否足够的答案? ;-) – vwegert
那么是不是说[内嵌](https://scn.sap.com/community/abap/blog/2013/05/23/abap-news-for-release-740--inline-声明)声明一样混乱?尽管如此,我还是会重新翻译一下,因为这种方法调用的方式从一开始就被命名为功能。我记得C++中的'inline'函数,它们对于预处理器宏来说是很好的选择。 – Jagger