You are on page 1of 2

**&---------------------------------------------------------------------*

**& Report Y_TEST_RJK


**&
**&---------------------------------------------------------------------*
**&
**&
**&---------------------------------------------------------------------*
*
REPORT y_test_rjk.

FIELD-SYMBOLS : <dyn_table> TYPE STANDARD TABLE.

DATA : lt_table TYPE REF TO data,


lw_line TYPE REF TO data,

lt_field_cat TYPE lvc_t_fcat,


lw_struc_cat TYPE lvc_s_fcat,

lt_desc_tab TYPE abap_compdescr_tab.

DATA : lr_ref_tab TYPE REF TO cl_abap_structdescr.

**-- Selection Screen


SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-scr.
PARAMETERS : p_table(30) TYPE c DEFAULT 'T001'.
SELECTION-SCREEN : END OF BLOCK b1.

**-- Start of Selection


START-OF-SELECTION.

"Get Structure from table name


lr_ref_tab ?= cl_abap_typedescr=>describe_by_name( p_table ).
lt_desc_tab[] = lr_ref_tab->components[].

LOOP AT lt_desc_tab ASSIGNING FIELD-SYMBOL(<fs_desc_tab>).

APPEND INITIAL LINE TO lt_field_cat ASSIGNING FIELD-SYMBOL(<fs_field_cat>).


<fs_field_cat>-fieldname = <fs_desc_tab>-name.

CASE <fs_desc_tab>-type_kind.
WHEN 'C'.
<fs_field_cat>-datatype = 'CHAR'.
WHEN 'N'.
<fs_field_cat>-datatype = 'NUMC'.
WHEN 'D'.
<fs_field_cat>-datatype = 'DATE'.
WHEN 'P'.
<fs_field_cat>-datatype = 'PACK'.
WHEN OTHERS.
<fs_field_cat>-datatype = <fs_desc_tab>-type_kind.
ENDCASE.

<fs_field_cat>-inttype = <fs_desc_tab>-type_kind.
<fs_field_cat>-intlen = <fs_desc_tab>-length.
<fs_field_cat>-decimals = <fs_desc_tab>-decimals.
UNASSIGN : <fs_field_cat>.

ENDLOOP.

IF lt_field_cat IS NOT INITIAL.


"Create dynamic internal table and assign to FS
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_field_cat
i_length_in_byte = abap_true
IMPORTING
ep_table = lt_table.

ASSIGN lt_table->* TO <dyn_table>.

"Create dynamic work area and assign to FS


CREATE DATA lw_line LIKE LINE OF <dyn_table>.
ASSIGN lw_line->* TO FIELD-SYMBOL(<dyn_wa>).

"Create Dynamic Internal Table


SELECT *
FROM (p_table)
INTO TABLE <dyn_table>.
IF sy-subrc EQ 0.
LOOP AT <dyn_table> INTO <dyn_wa>.
DO.
ASSIGN COMPONENT sy-index
OF STRUCTURE <dyn_wa> TO FIELD-SYMBOL(<dyn_field>).
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF sy-index = 1.
WRITE:/ <dyn_field>.
ELSE.
WRITE: <dyn_field>.
ENDIF.
ENDDO.
ENDLOOP.
ENDIF.

ENDIF.

You might also like