REPORT ztest_0018.
*TYPE-POOLS:abap.
*PARAMETERS p_name TYPE tabname.
*DATA: d_ref TYPE REF TO data,
* lt_alv_cat TYPE TABLE OF lvc_s_fcat,
* ls_alv_cat LIKE LINE OF lt_alv_cat.
*
*DATA: lt_table LIKE TABLE OF dntab.
*DATA: ls_table TYPE dntab.
*
*FIELD-SYMBOLS : <dyn_table> TYPE table,
* <dyn_wa> TYPE any,
* <dyn_field> TYPE any.
**取出表结构的字段目录
*CALL FUNCTION 'NAMETAB_GET'
* EXPORTING
* langu = sy-langu
* tabname = p_name
* TABLES
* nametab = lt_table
* EXCEPTIONS
* no_texts_found = 1.
**根据取出的字段目录生成参考字段目录
*LOOP AT lt_table INTO ls_table.
* ls_alv_cat-fieldname = ls_table-fieldname.
* ls_alv_cat-ref_table = p_name.
* ls_alv_cat-ref_field = ls_table-fieldname.
* APPEND ls_alv_cat TO lt_alv_cat.
* CLEAR ls_alv_cat.
*ENDLOOP.
**内表创建
*CALL METHOD cl_alv_table_create=>create_dynamic_table
* EXPORTING
* it_fieldcatalog = lt_alv_cat
* IMPORTING
* ep_table = d_ref.
**指定生成的内表到字段符号
*ASSIGN d_ref->* TO <dyn_table>.
**从动态表中取数到动态内表中
*SELECT * INTO CORRESPONDING FIELDS OF TABLE <dyn_table> UP TO 100
*ROWS FROM (p_name).
**显示内表中的数据
*CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
* EXPORTING
* i_structure_name = p_name
* TABLES
* t_outtab = <dyn_table>
* EXCEPTIONS
* program_error = 1
* OTHERS = 2.
*IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*ENDIF.
PARAMETERS p_name TYPE tabname.
DATA: dyn_table TYPE REF TO data.
DATA: dyn_wa TYPE REF TO data.
FIELD-SYMBOLS: <dyn_table> TYPE table,
<dyn_wa> TYPE any.
*创建动态表结构
CREATE DATA dyn_table TYPE TABLE OF (p_name).
*创建动态内表
ASSIGN dyn_table->* TO <dyn_table>.
*创建动态工作区结构
CREATE DATA dyn_wa LIKE LINE OF <dyn_table>.
*创建动态工作区
ASSIGN dyn_wa->* TO <dyn_wa>.
*从动态表中取数到动态内表中
SELECT * INTO CORRESPONDING FIELDS OF TABLE <dyn_table> UP TO 100
ROWS FROM (p_name).
*对取出数据进行处理
LOOP AT <dyn_table> ASSIGNING <dyn_wa>.
"内表数据处理
ENDLOOP.
*显示内表中的数据
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_structure_name = p_name
TABLES
t_outtab = <dyn_table>
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ABAP根据输入表动态展示
最新推荐文章于 2023-07-11 16:07:37 发布