ABAP 内表指针使用

 REPORT  ZCMH11.
TYPE-POOLS: slis.

* Field Catalog for List Viewer Control

DATA: gt_fcat TYPE lvc_t_fcat,
  gh_fcat LIKE LINE OF gt_fcat.

DATA: gt_dyn TYPE REF TO data.
DATA: gh_line TYPE REF TO data.

FIELD-SYMBOLS: <fs_table> TYPE ANY TABLE,
  <fs_line> TYPE ANY,
  <fs_field> TYPE ANY.

*----------------------------------------------------------------------*

* START-OF-SELECTION

*----------------------------------------------------------------------*

START-OF-SELECTION.

* Create Field catalog

  gh_fcat-col_pos = 1.
  gh_fcat-fieldname = 'ID'.
  APPEND gh_fcat TO gt_fcat.

  gh_fcat-col_pos = 2.
  gh_fcat-fieldname = 'NAME'.
  APPEND gh_fcat TO gt_fcat.

* Create Dynamic Data Table

  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog = gt_fcat
    IMPORTING
      ep_table        = gt_dyn.

* Create a new Line with the same structure of the table

  ASSIGN gt_dyn->* TO <fs_table>.

  CREATE DATA gh_line LIKE LINE OF <fs_table>.

  ASSIGN gh_line->* TO <fs_line>.

* Fill Data Table

  ASSIGN COMPONENT 1 OF STRUCTURE <fs_line> TO <fs_field>.

  <fs_field> = '001'.

  ASSIGN COMPONENT 2 OF STRUCTURE <fs_line> TO <fs_field>.

  <fs_field> = 'RAY1'.

  INSERT <fs_line> INTO TABLE <fs_table>.
*-----------------

  ASSIGN COMPONENT 1 OF STRUCTURE <fs_line> TO <fs_field>.

  <fs_field> = '002'.

  ASSIGN COMPONENT 2 OF STRUCTURE <fs_line> TO <fs_field>.

  <fs_field> = 'RAY2'.

  INSERT <fs_line> INTO TABLE <fs_table>.
*----------------------
  ASSIGN COMPONENT 1 OF STRUCTURE <fs_line> TO <fs_field>.

  <fs_field> = '003'.

  ASSIGN COMPONENT 2 OF STRUCTURE <fs_line> TO <fs_field>.

  <fs_field> = 'RAY3'.

  INSERT <fs_line> INTO TABLE <fs_table>.
*----------------------------



* Display Data Table
* 修改I内表里编码是 002 的名称
  LOOP AT <fs_table> ASSIGNING <fs_line> .

    ASSIGN COMPONENT 'ID' OF STRUCTURE <fs_line> TO <fs_field>.
    if <fs_field> = '002'.
      ASSIGN COMPONENT 'NAME' OF STRUCTURE <fs_line> TO <fs_field>.
      <fs_field> = 'NAME3'.
    endif.

  ENDLOOP.
* 输出内表数据
LOOP AT <fs_table> ASSIGNING <fs_line> .

      WRITE: / <fs_line>.

  ENDLOOP.

你可能感兴趣的:(table)