ABAP动态内表

来源:互联网 发布:威海鑫星渔具淘宝店 编辑:程序博客网 时间:2024/04/30 10:40

 

一、根据2结构和一个data element 构建一个动态内表

 

“定义的动态内表<dyn_table>  ,<DYN_WA>对应内表一行的工作区

FIELD-SYMBOLS:<dyn_table> TYPE STANDARD TABLE,
                              <dyn_wa> TYPE ANY.

 

FORM create_dynamic_table .

  DATAlt_fcat TYPE slis_t_fieldcat_alv,
        ls_fcat LIKE LINE OF lt_fcat,
        lt_fieldcat TYPE lvc_t_fcat,
        ls_fieldcat LIKE LINE OF lt_fieldcat,
        dy_table    type ref to data.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name 'RFPOS'
    CHANGING
      ct_fieldcat      lt_fcat[].
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name 'BSEG'
    CHANGING
      ct_fieldcat      lt_fcat[].

  clear ls_fcat.
  ls_fcat-col_pos =  lineslt_fcat[] 1.
  ls_fcat-no_out 'X'.
  ls_fcat-fieldname 'LOKKT_TXT30'.
  ls_fcat-ref_fieldname 'TXT20'.
  ls_fcat-ref_tabname  'SKAT'.
  ls_fcat-reptext_ddic ls_fcat-seltext_s =
  ls_fcat-seltext_m ls_fcat-seltext_l text-133.
  APPEND ls_fcat TO lt_fcat.

   LOOP AT lt_fcat INTO ls_fcat"WHERE NOT reptext_ddic IS initial.
    MOVE-CORRESPONDING ls_fcat TO ls_fieldcat.
    ls_fieldcat-fieldname ls_fcat-fieldname.
    ls_fieldcat-ref_field ls_fcat-ref_fieldname.
    ls_fieldcat-ref_table ls_fcat-ref_tabname.
    APPEND ls_fieldcat TO lt_fieldcat.
  ENDLOOP.


  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog lt_fieldcat
    IMPORTING
      ep_table        dy_table.

  ASSIGN dy_table->TO <dyn_table>.

ENDFORM.   

 

 

二 、  给动态内表赋值

 

“ g_items  和  bseg 已经有数据的工作区

 DATA:WA_NEW_LINE TYPE REF TO DATA.


    CREATE DATA WA_NEW_LINE LIKE LINE OF <DYN_TABLE>.
    ASSIGN WA_NEW_LINE->TO <DYN_WA>.
    move-corresponding g_items TO <DYN_WA>.
    move-corresponding bseg   TO <DYN_WA>.
    APPEND <DYN_WA> TO <DYN_TABLE>.

原创粉丝点击