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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM