[英]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.