Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

TABLES: dd03l.

DATA: it_fldname TYPE STANDARD TABLE OF dd03l-fieldname.


DATA: it_dd04v TYPE STANDARD TABLE OF dd04v,
wa_dd04v TYPE dd04v.
DATA: lt_fieldcatalog TYPE lvc_t_fcat,
ls_fieldcatalog TYPE lvc_s_fcat.
DATA: dy_table TYPE REF TO data,
dy_line TYPE REF TO data.
DATA: char TYPE string,
pack TYPE char20 VALUE '999999999999999999999'.
FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
<dyn_wa> TYPE any,
<dyn_field> TYPE any.
DATA: lo_alv

TYPE REF TO cl_salv_table.

SELECT-OPTIONS : s_dename FOR dd03l-fieldname OBLIGATORY.


START-OF-SELECTION.
PERFORM get_fieldinfo.
PERFORM build_dy_itab.
PERFORM build_dummy_data.
PERFORM display_data.
*&---------------------------------------------------------------------*
*&
Form get_fieldinfo
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM get_fieldinfo.
DATA : col_pos TYPE i.
data: wa_dd03l type dd03l.
DEFINE dyn_tab.
col_pos = col_pos + 1.
ls_fieldcatalog-fieldname = &1.
if &2 is not initial.
ls_fieldcatalog-rollname = &2.
endif.
if &6 is not initial.
ls_fieldcatalog-intlen = &6.
translate &6 using '0 '.
condense &6 no-gaps.
endif.
ls_fieldcatalog-col_pos = col_pos.
if &3 is not initial .
ls_fieldcatalog-scrtext_s = |{ &3 }({ &6 })|.
endif.
if &4 is not initial.
ls_fieldcatalog-scrtext_m = |{ &4 }({ &6 })|.
endif.
if &5 is not initial.
ls_fieldcatalog-scrtext_l = |{ &5 }({ &6 })|.
endif.
if &7 is NOT INITIAL.
ls_fieldcatalog-ref_field = &7.
endif.
if &8 is NOT INITIAL.

ls_fieldcatalog-ref_table = &8.
endif.
append ls_fieldcatalog to lt_fieldcatalog.
clear ls_fieldcatalog.
END-OF-DEFINITION.
SELECT * FROM dd04v INTO TABLE it_dd04v
WHERE rollname IN s_dename
AND ddlanguage = sy-langu.
LOOP AT s_dename.
CLEAR wa_dd04v.
select single * from dd03l into wa_dd03l
where rollname = s_dename-low.
READ TABLE it_dd04v INTO wa_dd04v WITH KEY rollname = s_dename-low.
dyn_tab s_dename-low s_dename-low wa_dd04v-scrtext_s wa_dd04v-scrtext_m wa_d
d04v-scrtext_l wa_dd04v-leng
wa_dd03l-fieldname wa_dd03l-tabname.
ENDLOOP.
ENDFORM.
"get_fieldinfo
*&---------------------------------------------------------------------*
*&
Form build_dy_itab
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM build_dy_itab.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_fieldcatalog
i_length_in_byte = 'X'
IMPORTING
ep_table
= dy_table.
ASSIGN dy_table->* TO <dyn_table>.
IF sy-subrc = 0.
CREATE DATA dy_line LIKE LINE OF <dyn_table>.
ASSIGN dy_line->* TO <dyn_wa>.
ENDIF.
ENDFORM.
"build_dy_itab
*&---------------------------------------------------------------------*
*&
Form build_dummy_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM build_dummy_data.
data: intlen type i.
LOOP AT lt_fieldcatalog INTO ls_fieldcatalog.
READ TABLE it_dd04v INTO wa_dd04v WITH KEY rollname = ls_fieldcatalog-fieldn
ame.
IF sy-subrc = 0.
intlen = wa_dd04v-leng - wa_dd04v-decimals.
IF <dyn_field> IS ASSIGNED.
UNASSIGN <dyn_field>.
*
CLEAR <dyn_field>.
ENDIF.
ASSIGN COMPONENT wa_dd04v-rollname OF STRUCTURE <dyn_wa> TO <dyn_field>.
IF sy-subrc = 0.
CASE wa_dd04v-datatype.
WHEN 'CHAR'.
TRANSLATE <dyn_field> USING ' A'.
WHEN 'DATS'.

<dyn_field> = sy-datum.
WHEN 'TIMS'.
<dyn_field> = sy-uzeit.
WHEN 'NUMC'.
TRANSLATE <dyn_field> USING '09'.
WHEN 'CURR'.
<dyn_field> = pack(intlen).
WHEN 'QUAN'.
WHEN 'DEC'.
WHEN 'INT1' OR 'INT2' OR 'INT4'.
ENDCASE.
ENDIF.
ENDIF.
ENDLOOP.
APPEND <dyn_wa> TO <dyn_table>.
ENDFORM.
"build_dummy_data
*&---------------------------------------------------------------------*
*&
Form display_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM display_data.
TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table
= <dyn_table>.
lo_alv->display( ).
ENDTRY.
ENDFORM.
"display_data

You might also like