繁体   English   中英

如何动态创建内部表的名称

[英]How to create the name of Internal Table dynamically

我想动态创建 ITAB 的名称,例如 itab_name = |it_itab{ time }|。 其中时间是 1 或 2 或 .... itab 将是 BAPIACGL09 的类型标准表。
我想要做的是多次运行 BAPI 'BAPI_ACC_BILLING_POST' 并且我想多次填充结构和表,即我想要 GIT_ACCOUNTGL、GIT_ACCOUNTGL01、GIT_ACCOUNTGL02 等并多次运行 BAPI我拥有的 ITAB 和结构。
有人可以告诉我该怎么做吗?
谢谢

使用表格表格。 每行代表您描述的其中一个 itabs。 按索引而不是某个名称对表进行寻址。

TYPES table_type TYPE STANDARD TABLE OF bapiacgl09 WITH EMPTY KEY.
TYPES collection_type TYPE STANDARD TABLE OF table_type WITH EMPTY KEY.

DATA all_results TYPE collection_type.

" collect the results
DO 100 TIMES.
  DATA(single_result) = " call bapi
  INSERT single_result INTO TABLE all_results.
ENDDO.

" access a specific result by index
DATA(forty_second_result) = all_results[ 42 ].

" iterate all results
LOOP AT all_results INTO single_result.
ENDLOOP.

这取决于您所说的“动态”,但是基于 Florian 的提议(在我的情况下使用表,“复杂结构表”)的一种可能性是:

TYPES : BEGIN OF ty_bapiarglist,
          " arguments passed to the BAPI
          accountgl TYPE STANDARD TABLE OF bapiacgl01 WITH EMPTY KEY,
          " ...
          " arguments returned by the BAPI
          return    TYPE STANDARD TABLE OF bapiret2 WITH EMPTY KEY,
          " ...
        END OF ty_bapiarglist.

DATA: bapiarglist  TYPE ty_bapiarglist,
      bapiarglists TYPE TABLE OF ty_bapiarglist.

"++++++++++++++
" Call BAPI
" Fill lists of arguments
"++++++++++++++

LOOP AT someitab...

  " fill arguments to transmit
  " bapiarglist-accountgl = ...

  CALL FUNCTION 'BAPI_ACC_BILLING_POST'
     ...
     TABLES
       accountgl = bapiarglist-accountgl
       return    = bapiarglist-return
       ...

  APPEND bapiarglist TO bapiarglists.

ENDLOOP.

"++++++++++++++
" Later usage
"++++++++++++++

LOOP AT bapiarglists INTO bapiarglist.
  ...
ENDLOOP.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM