*&---------------------------------------------------------------------*
*& Report ZRA_TEST_046
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zra_test_046.
TABLES: mara.
TYPE-POOLS:vrm,slis.
TYPES: BEGIN OF ty_mara,
c1 TYPE char1,
matnr TYPE matnr,
ersda TYPE ersda,
END OF ty_mara,
BEGIN OF ty_marc,
matnr TYPE matnr,
werks TYPE werks_d,
END OF ty_marc.
DATA: it_mara TYPE STANDARD TABLE OF ty_mara INITIAL SIZE 0,
wa_mara TYPE ty_mara,
it_marc TYPE STANDARD TABLE OF ty_marc INITIAL SIZE 0,
wa_marc TYPE ty_marc,
lv_matnr TYPE matnr,
it_dlist TYPE vrm_values,
wa_dlist TYPE vrm_value,
i_fldcat TYPE slis_t_fieldcat_alv,
wa_fldcat TYPE slis_fieldcat_alv,
wa_layout TYPE slis_layout_alv.
PARAMETERS: p_dlist TYPE c AS LISTBOX VISIBLE LENGTH 15.
SELECT-OPTIONS: s_matnr FOR mara-matnr.
INITIALIZATION.
REFRESH: it_dlist.
CLEAR: wa_dlist.
wa_dlist-key = '1'.
wa_dlist-text = 'CLASSICAL'.
APPEND wa_dlist TO it_dlist.
CLEAR: wa_dlist.
wa_dlist-key = '2'.
wa_dlist-text = 'INTERACTIVE'.
APPEND wa_dlist TO it_dlist.
CLEAR: wa_dlist.
wa_dlist-key = '3'.
wa_dlist-text = 'ALV'.
APPEND wa_dlist TO it_dlist.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'P_DLIST'
values = it_dlist
.
AT SELECTION-SCREEN OUTPUT .
CASE p_dlist.
WHEN '1'.
s_matnr-low = '1'.
s_matnr-high = '1000'.
s_matnr-sign = 'I'.
APPEND s_matnr.
WHEN '2'.
CLEAR s_matnr.
REFRESH s_matnr.
s_matnr-low = '1001'.
s_matnr-high = '2000'.
s_matnr-sign = 'I'.
APPEND s_matnr.
WHEN '3'.
CLEAR s_matnr.
REFRESH s_matnr.
s_matnr-low = '1'.
s_matnr-high = '2000'.
s_matnr-sign = 'I'.
APPEND s_matnr.
ENDCASE.
START-OF-SELECTION.
SELECT matnr
ersda
FROM mara
INTO CORRESPONDING FIELDS OF TABLE it_mara
WHERE matnr IN s_matnr.
IF sy-subrc = 0.
SORT it_mara BY matnr.
ENDIF.
END-OF-SELECTION.
IF p_dlist = '1'.
PERFORM display_classical.
ELSEIF p_dlist = '2'.
PERFORM display_classical.
ELSEIF p_dlist = '3'.
PERFORM create_fieldcatalog.
PERFORM create_layout.
PERFORM create_display.
ENDIF.
AT LINE-SELECTION.
IF p_dlist = '2'.
REFRESH it_marc.
SELECT matnr
werks
FROM marc
INTO TABLE it_marc
WHERE matnr = wa_mara-matnr.
IF sy-subrc = 0.
SORT it_marc BY matnr.
LOOP AT it_marc INTO wa_marc.
WRITE: / wa_marc-matnr,
wa_marc-werks.
ENDLOOP.
ELSE.
MESSAGE 'NO ENTRIES IN MARC' TYPE 'E'.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Form display_classical
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_classical .
IF it_mara IS NOT INITIAL.
LOOP AT it_mara INTO wa_mara.
WRITE: / wa_mara-matnr,
wa_mara-ersda.
HIDE wa_mara-matnr.
ENDLOOP.
ENDIF.
ENDFORM. " display_classical
*&---------------------------------------------------------------------*
*& Form create_fieldcatalog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_fieldcatalog .
DATA: c_pos TYPE i VALUE 1,
r_pos TYPE i VALUE 1.
wa_fldcat-col_pos = c_pos.
wa_fldcat-row_pos = r_pos.
wa_fldcat-fieldname = 'C1'.
wa_fldcat-seltext_l = 'SELECT'.
wa_fldcat-tabname = 'IT_MARA'.
wa_fldcat-checkbox = 'X'.
wa_fldcat-edit = 'X'.
APPEND wa_fldcat TO i_fldcat.
CLEAR wa_fldcat.
c_pos = c_pos + 1.
wa_fldcat-col_pos = c_pos.
wa_fldcat-row_pos = r_pos.
wa_fldcat-fieldname = 'MATNR'.
wa_fldcat-seltext_l = 'MATERIAL NO.'.
wa_fldcat-tabname = 'IT_MARA'.
wa_fldcat-no_zero = 'X'.
APPEND wa_fldcat TO i_fldcat.
CLEAR wa_fldcat.
c_pos = c_pos + 1.
wa_fldcat-col_pos = c_pos.
wa_fldcat-row_pos = r_pos.
wa_fldcat-fieldname = 'ERSDA'.
wa_fldcat-seltext_l = 'CREATED ON'.
wa_fldcat-tabname = 'IT_MARA'.
APPEND wa_fldcat TO i_fldcat.
ENDFORM. " create_fieldcatalog
*&---------------------------------------------------------------------*
*& Form create_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_layout .
wa_layout-colwidth_optimize = 'X'.
wa_layout-zebra = 'X'.
ENDFORM. " create_layout
*&---------------------------------------------------------------------*
*& Form create_display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = wa_layout
it_fieldcat = i_fldcat
TABLES
t_outtab = it_mara.
ENDFORM. " create_display