是否有一种方法可以访问传递到函数模块的导入参数而不单独解决它们?ABAP是否将它们存储在某个内部表中,因此我可以通过在某个表中的行或结构的字段中循环循环来与它们合作?
我们可以使用模式函数,仅知道功能模块的名称,让ABAP打印出我们为我们打印功能模块的界面,因此我想知道该信息存储在哪里,并且一旦函数组就可以使用它已加载到内存中。
预先感谢!
您可以使用功能模块RPY_FUNCTIONMODULE_READ
获取有关功能模块的参数结构的信息,然后动态访问参数。这有几个缺点 - 最值得注意的是,这样做的用户将需要(其他)S_DEVELOP
授权,并且以这种方式记录通常会对性能产生严重的影响。
我宁愿将功能模块参数添加到记录/跟踪函数一次 - 使用足够通用的方法调用,这并不困难。我还倾向于将单个参数分为结构,以促进以后的增强。
PARAMETER-TABLE
构建体存在于远古时代以来的ABAP中,它允许在批处理中传递参数:
一个人应该创建两个类型的参数表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.