You are on page 1of 5

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

*& Report ZSR_TEST


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT

zsr_test NO STANDARD PAGE HEADING.

TABLES: mara, marc, mard.


TYPES: BEGIN OF ty_mara,
matnr TYPE mara-matnr,
mtart TYPE mara-mtart,
END OF ty_mara,
BEGIN OF ty_marc,
matnr TYPE marc-matnr,
werks TYPE marc-werks,
xchar TYPE marc-xchar,
END OF ty_marc,
BEGIN OF ty_mard,
matnr TYPE mard-matnr,
werks TYPE mard-werks,
lgort TYPE mard-lgort,
pstat TYPE mard-pstat,
END OF ty_mard,
BEGIN OF ty_out,
matnr TYPE marc-matnr,
werks TYPE marc-werks,
lgort TYPE mard-lgort,
mtart TYPE mara-mtart,
xchar TYPE marc-xchar,
pstat TYPE mard-pstat,
END OF ty_out.
DATA: wa_mara
wa_marc
wa_mard
wa_out
it_mara
it_marc
it_mard
it_out

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

ty_mara,
ty_marc,
ty_mard,
ty_out,
STANDARD
STANDARD
STANDARD
STANDARD

TABLE
TABLE
TABLE
TABLE

OF
OF
OF
OF

ty_mara,
ty_marc,
ty_mard,
ty_out,

v_prog TYPE sy-repid,


v_date TYPE sy-datum,
v_time TYPE sy-uzeit.
CONSTANTS: c_material
c_plant
c_storage
c_type
c_batch
c_maint
c_end
INITIALIZATION.

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

char12
char5
char8
char6
char6
char18
char40

VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE

'MATERIAL NO',
'PLANT',
'STORAGE',
'M TYPE',
'BATCH',
'MAINTENANCE STATUS',
'End of Material Details'.

v_prog = sy-repid.
v_date = sy-datum.
v_time = sy-uzeit.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_matnr FOR mara-matnr.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_mara.
PERFORM get_marc.
PERFORM get_mard.
END-OF-SELECTION.
PERFORM get_output.
PERFORM display.
TOP-OF-PAGE.
PERFORM top_of_page.
*&---------------------------------------------------------------------*
*&
Form GET_MARA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_mara .
IF s_matnr IS NOT INITIAL.
SELECT matnr mtart
FROM mara INTO TABLE it_mara
WHERE matnr IN s_matnr.
IF sy-subrc = 0.
SORT it_mara BY matnr.
ELSE.
MESSAGE 'Material doesn''t exist' TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM.
" GET_MARA
*&---------------------------------------------------------------------*
*&
Form GET_MARC
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_marc .
IF it_mara IS NOT INITIAL.
SELECT matnr werks xchar
FROM marc INTO TABLE it_marc
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr.
IF sy-subrc = 0.
SORT it_marc BY matnr.

ELSE.
MESSAGE 'Plant doesn''t exist' TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM.
" GET_MARC
*&---------------------------------------------------------------------*
*&
Form GET_MARD
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_mard .
IF it_marc IS NOT INITIAL.
SELECT matnr werks lgort pstat
FROM mard INTO TABLE it_mard
FOR ALL ENTRIES IN it_marc
WHERE matnr = it_marc-matnr
AND werks = it_marc-werks.
IF sy-subrc = 0.
SORT it_mard BY matnr.
ELSE.
MESSAGE 'Storage Location doesn''t exist' TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM.
" GET_MARD
*&---------------------------------------------------------------------*
*&
Form GET_OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_output .
IF it_mara IS NOT INITIAL.
LOOP AT it_mara INTO wa_mara.
wa_out-matnr = wa_mara-matnr.
wa_out-mtart = wa_mara-mtart.
LOOP AT it_marc INTO wa_marc
WHERE matnr = wa_mara-matnr.
wa_out-werks = wa_marc-werks.
wa_out-xchar = wa_marc-xchar.
LOOP AT it_mard INTO wa_mard
WHERE matnr = wa_marc-matnr
AND werks = wa_marc-werks.
wa_out-lgort = wa_mard-lgort.
wa_out-pstat = wa_mard-pstat.
APPEND wa_out TO it_out.
CLEAR: wa_out, wa_mara, wa_marc, wa_mard.
ENDLOOP.
ENDLOOP.

ENDLOOP.
ENDIF.
ENDFORM.
" GET_OUTPUT
*&---------------------------------------------------------------------*
*&
Form DISPLAY
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM display .
IF it_out IS NOT INITIAL.
LOOP AT it_out INTO wa_out.
AT FIRST.
WRITE: / c_material,
21 c_plant,
27 c_storage,
37 c_type,
45 c_batch,
54 c_maint.
ULINE.
SKIP.
ENDAT.
WRITE: /
21
27
37
45
54

wa_out-matnr,
wa_out-werks,
wa_out-lgort,
wa_out-mtart,
wa_out-xchar,
wa_out-pstat.

IF wa_out-matnr IS INITIAL.
AT END OF matnr.
SKIP.
ENDAT.
ENDIF.
AT LAST.
ULINE.
WRITE: / c_end.
ENDAT.
ENDLOOP.
ENDIF.
ENDFORM.
" DISPLAY
*&---------------------------------------------------------------------*
*&
Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM top_of_page .
WRITE: / v_prog,
/ v_date DD/MM/YYYY,
/ v_time.

ULINE.
ENDFORM.
Output:
1. Selection Screen -

2. Classical Display -

" TOP_OF_PAGE

You might also like