批量处理功能模块接口?

Handling function module interfaces in bulk?

有没有一种方法可以访问传递给功能模块的导入参数而无需单独处理它们? ABAP 是否将它们存储在某些内部 table 中,因此我可以通过循环遍历某些 table 中的行或结构的字段来使用它们?

我们可以使用 PATTERN 函数,只知道功能模块的名称,让 ABAP 为我们打印出功能模块的界面,所以我想知道这些信息存储在哪里,以及一旦我可以使用它功能组已加载到内存中。

提前致谢!

您可以使用功能模块RPY_FUNCTIONMODULE_READ获取功能模块的参数结构信息,然后动态访问参数。这有几个缺点 - 最明显的是,这样做的用户将需要(额外的)S_DEVELOP 授权,并且以这种方式记录通常会对性能产生严重影响。

我宁愿手动将功能模块参数添加到 logging/tracing 函数一次 - 使用足够通用的方法调用,这并不难。我也倾向于将单个参数分组到结构中以方便以后的增强。

PARAMETER-TABLE构造自古以来就存在于ABAP中,它允许批量传递参数:

应该创建两个 abap_func_parmbind_tababap_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.