zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    Java中关系操作符==的学习以及与equals的对比
    关于alibaba.fastjson的使用
    给有C或C++基础的Python入门 :Python Crash Course 1
    快速幂基本模板
    断言封装及应用(有难度)
    断言封装之key检查及kv实战示例
    正则取值及断言实战示例
    关联实现下-jsonpath取值(有难度!!耗时长)
    关联实现上-jsonpath取值
    requests顺序执行实现
  • 原文地址:https://www.cnblogs.com/BruceKing/p/12768027.html
Copyright © 2011-2022 走看看