ABAP动态内表

已知一方数据来源于外围系统,另一方数据来源于SAP。经过处理得到多个两两比较的内表。通过指针,存储不同结构的内表到lt_tab

TYPES:BEGIN OF l_person,
        pernr TYPE pernr_d,
      END OF l_person .
TYPES: t_person TYPE TABLE OF l_person .
DATA: lt_person TYPE TABLE OF l_person .
lt_person = VALUE #(
  ( pernr = '1263' )
  ( pernr = '1264' )
  ( pernr = '1265' )
).

TYPES:BEGIN OF l_job,
        objid TYPE objid,
      END OF l_job .
TYPES: t_job TYPE TABLE OF l_job .
DATA: lt_job TYPE TABLE OF l_job .
lt_job = VALUE #(
  ( objid = '180001' )
  ( objid = '180002' )
).

TYPES: BEGIN OF l_type,
         type_name  TYPE char30,
         table_name TYPE char30,
       END OF l_type .
DATA: lt_type TYPE TABLE OF l_type,
      ls_type TYPE l_type.

lt_type = VALUE #(
  ( type_name = 't_person' table_name = 'lt_person' )
  ( type_name = 't_job'    table_name = 'lt_job' )
).


DATA: dy_tab  TYPE REF TO data.
FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE, 
               <dyn_temp>  TYPE STANDARD TABLE.

TYPES: BEGIN OF l_tab,
         content TYPE REF TO data,
       END OF l_tab .
DATA: lt_tab TYPE TABLE OF l_tab,
      ls_tab TYPE l_tab.

LOOP AT lt_type INTO ls_type.
  CREATE DATA ls_tab-content TYPE (ls_type-type_name).
  ASSIGN (ls_type-table_name) TO <dyn_temp>.
  ASSIGN ls_tab-content->* TO <dyn_table> .
  MOVE-CORRESPONDING <dyn_temp> TO <dyn_table> .
  APPEND ls_tab TO lt_tab .
ENDLOOP.

结果

posted @   tbmr  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示