abap 动态指针理解加深ASSIGN COMPONENT
"ASSIGN COMPONENT 运用 REPORT AA. TABLES:ZTFI029. TYPES:BEGIN OF ZTFI029, MANDT TYPE STRING, KUNRG TYPE STRING, MATNR TYPE STRING, CHARG TYPE STRING, Z_CPMC TYPE STRING, Z_GGXH TYPE STRING, Z_MEINS TYPE STRING, END OF ZTFI029. TYPES:BEGIN OF TY_DATA, ROW TYPE I, COL TYPE I, TEST TYPE STRING, NAME TYPE STRING, END OF TY_DATA. DATA:WA_DATA TYPE TY_DATA. DATA:LT_DATA TYPE STANDARD TABLE OF TY_DATA. DATA:LT_ZTFI029 TYPE STANDARD TABLE OF ZTFI029 WITH HEADER LINE. DATA:LT_ZTFI029_01 TYPE STANDARD TABLE OF ZTFI029 WITH HEADER LINE. DATA:NUM TYPE I. DATA:NUM_01 TYPE STRING. FIELD-SYMBOLS:<FS>. LT_DATA = VALUE #( ( ROW = 1 COL = 1 TEST = 'KUNRG' NAME = 'AA' ) ( ROW = 1 COL = 2 TEST = 'CHARG' NAME = 'BB' ) ( ROW = 1 COL = 3 TEST = 'Z_CPMC' NAME = 'CC' ) ( ROW = 1 COL = 4 TEST = 'Z_MEINS' NAME = 'DD' ) ). LOOP AT LT_DATA INTO WA_DATA. NUM = WA_DATA-COL. ASSIGN COMPONENT NUM OF STRUCTURE LT_ZTFI029 TO <FS>. "如果没有指定固定的字段,则按照顺序进行指针的指向 <FS> = WA_DATA-NAME. AT END OF ROW. APPEND LT_ZTFI029. CLEAR LT_ZTFI029. ENDAT. CLEAR:WA_DATA. ENDLOOP. LOOP AT LT_ZTFI029. WRITE:/ 'MANDT为',LT_ZTFI029-MANDT, '|KUNRG为',LT_ZTFI029-KUNRG, '|MATNR为',LT_ZTFI029-MATNR, '|CHARG为',LT_ZTFI029-CHARG, '|Z_CPMC为',LT_ZTFI029-Z_CPMC, '|Z_GGXH为',LT_ZTFI029-Z_GGXH, '|Z_MEINS为',LT_ZTFI029-Z_MEINS. ENDLOOP. WRITE:/ SY-ULINE. LOOP AT LT_DATA INTO WA_DATA. NUM_01 = WA_DATA-TEST. "如果指定了字段的名称,则按照字段名称进行指针的指向, "理解为LT_ZTFI029_01的NUM_01字段指向了<FS>,下面<FS>赋值,即等于LT_ZTFI029_01的NUM_01字段赋值 ASSIGN COMPONENT NUM_01 OF STRUCTURE LT_ZTFI029_01 TO <FS>. <FS> = WA_DATA-NAME. AT END OF ROW. APPEND LT_ZTFI029_01. CLEAR LT_ZTFI029_01. ENDAT. CLEAR:WA_DATA. ENDLOOP. LOOP AT LT_ZTFI029_01. WRITE:/ 'MANDT为',LT_ZTFI029_01-MANDT, '|KUNRG为',LT_ZTFI029_01-KUNRG, '|MATNR为',LT_ZTFI029_01-MATNR, '|CHARG为',LT_ZTFI029_01-CHARG, '|Z_CPMC为',LT_ZTFI029_01-Z_CPMC, '|Z_GGXH为',LT_ZTFI029_01-Z_GGXH, '|Z_MEINS为',LT_ZTFI029_01-Z_MEINS. ENDLOOP. WRITE:/ SY-ULINE.