有没有办法访问传入功能模块的导入参数而不单独处理它们?ABAP 是否将它们存储在某个内部表中,以便我可以通过循环某个表中的行或结构的字段来使用它们?
我们可以使用 PATTERN 函数,只知道函数模块的名称,让 ABAP 为我们打印出函数模块的接口,所以我想知道这些信息存储在哪里,一旦加载了函数组,我是否可以使用它进入记忆。
提前致谢!
有没有办法访问传入功能模块的导入参数而不单独处理它们?ABAP 是否将它们存储在某个内部表中,以便我可以通过循环某个表中的行或结构的字段来使用它们?
我们可以使用 PATTERN 函数,只知道函数模块的名称,让 ABAP 为我们打印出函数模块的接口,所以我想知道这些信息存储在哪里,一旦加载了函数组,我是否可以使用它进入记忆。
提前致谢!
您可以通过功能模块RPY_FUNCTIONMODULE_READ
获取功能模块的参数结构信息,然后动态访问参数。这有几个缺点 - 最明显的是,这样做的用户将需要(额外的)S_DEVELOP
授权,并且以这种方式记录通常会产生严重的性能影响。
我宁愿手动将函数模块参数添加到日志记录/跟踪函数中 - 使用足够通用的方法调用,这并不难。我还倾向于将单个参数分组到结构中,以方便以后的增强。
PARAMETER-TABLE
自古以来ABAP中就存在construct,它允许批量传递参数:
应该创建两个类型的参数表,abap_func_parmbind_tab
并abap_func_excpbind_tab
像这样填充它们:
DATA: ptab TYPE abap_func_parmbind_tab,
etab TYPE abap_func_excpbind_tab,
itab TYPE TABLE OF string.
ptab = VALUE #(
( name = 'FILENAME' kind = abap_func_exporting value = REF #( 'c:\text.txt' ) )
( name = 'FILETYPE' kind = abap_func_exporting value = REF #( 'ASC' ) )
( name = 'DATA_TAB' kind = abap_func_tables value = REF #( itab ) )
( name = 'FILELENGTH' kind = abap_func_importing value = REF #( space ) ) ).
etab = VALUE #( ( name = 'OTHERS' value = 10 ) ) .
CALL FUNCTION 'GUI_DOWNLOAD'
PARAMETER-TABLE ptab
EXCEPTION-TABLE etab.