• ABAP——FIELD-SYMBOLS指针


    代码:

    REPORT ZPPRTEST.
    
    "定义任意类型指针
    FIELD-SYMBOLS: <f1> TYPE ANY.
    FIELD-SYMBOLS: <f2> TYPE c.
    
    DATA: l_txt(10) VALUE '2020-02-02'.
    
    "注意ASSING只能是同类型变量
    ASSIGN l_txt TO <f1>.
    ASSIGN l_txt TO <f2>.
    
    "定义含结构类型指针
    TYPES: BEGIN OF ty_data,
      matnr TYPE mara-matnr,
      maktx TYPE makt-maktx,
    END OF ty_data.
    
    FIELD-SYMBOLS: <f3> TYPE ty_data.
    DATA: ls_data TYPE ty_data.
    ls_data-matnr = '物料1'.
    ls_data-maktx = '物料1说明'.
    
    ASSIGN ls_data TO <f3>.
    
    "定义动态内表
    DATA: lt_table TYPE REF TO data,
          l_line TYPE REF TO data,
          it_fieldcat TYPE lvc_t_fcat,
          is_fieldcat TYPE lvc_s_fcat.
    FIELD-SYMBOLS: <table> TYPE STANDARD TABLE,
                   <line> TYPE ANY,
                   <field> TYPE ANY.
    
    is_fieldcat-fieldname = 'MATNR' .
    is_fieldcat-col_pos   = 1.
    is_fieldcat-ref_field = 'MATNR'.
    is_fieldcat-ref_table = 'MARA'.
    APPEND is_fieldcat TO it_fieldcat.
    CLEAR is_fieldcat.
    
    is_fieldcat-fieldname = 'MAKTX' .
    is_fieldcat-col_pos   = 2.
    is_fieldcat-ref_field = 'MAKTX'.
    is_fieldcat-ref_table = 'MAKT'.
    APPEND is_fieldcat TO it_fieldcat.
    CLEAR is_fieldcat.
    
    CALL METHOD cl_alv_table_create=>create_dynamic_table"创建内表
      EXPORTING
        it_fieldcatalog = it_fieldcat
      IMPORTING
        ep_table        = lt_table.
    
    ASSIGN lt_table->* TO <table>.
    CREATE DATA l_line LIKE LINE OF <table>.
    ASSIGN l_line->* TO <line>.
    
    ASSIGN COMPONENT 'MATNR' OF STRUCTURE <line> TO <field>.
    <field> = '物料1'.
    ASSIGN COMPONENT 'MAKTX' OF STRUCTURE <line> TO <field>.
    <field> = '物料1说明'.
    APPEND <line> TO <table>.
    CLEAR <line>.
    
    ASSIGN COMPONENT 'MATNR' OF STRUCTURE <line> TO <field>.
    <field> = '物料2'.
    ASSIGN COMPONENT 'MAKTX' OF STRUCTURE <line> TO <field>.
    <field> = '物料2说明'.
    APPEND <line> TO <table>.
    CLEAR <line>.
    
    cl_demo_output=>write( <f1> ).
    cl_demo_output=>write( <f2> ).
    cl_demo_output=>write( <f3> ).
    cl_demo_output=>write( <table> ).
    cl_demo_output=>display(  ).

    运行效果:

     

  • 相关阅读:
    第三次作业附加
    第三次作业(计算器第一步)
    课程学生列表
    第二次作业
    《面向对象程序设计》第一次作业
    期末总结
    最后的总成绩
    第七次作业
    第六次作业(团队作业)
    第五次成绩
  • 原文地址:https://www.cnblogs.com/StephenAmell/p/12585735.html
Copyright © 2020-2023  润新知