The following program is displaying some useful information of material from
table MARA based
on the material number by a select
option in the selection screen.
Here we have created a custom
structure of the internal table named it_mara. This structure
ty_mara contains Material No,
Creation Date, Name, Material Type and Group. Hence output
will have only these fields. We have
declared an work area wa_mara for internal table. Here
he internal table is of standard
table type.
Now under INITIALIZATION event we
have initialized the Program name, date and user name
which are to be displayed at the Top
of page. TOP OF PAGE is another event where we are
declaring the select option s_matnr
in a selection screen for input of material no.
Next we are declaring
the START-OF-SELECTION event under which we mention a
subroutine
get_mara. Subroutine is declared by
the key word perform. Under this perform we select
required fields from MARA into
internal table it_mara based on the where condition. So
after getting proper data from the
MARA table we shall prepare the output in the subroutine
of get_output.
Now on the next event
END-OF-SELECTION we are declaring a subroutine get_output and
inside there we are
looping the internal table it_mara into wa_mara. Hence we fetch the
data from internal table
to the work area and then display it with simple write statement.
ince this is a loop, so
one by one record will be fetched into work area and then it will be
displayed.
Now we want to display
the name of the fields heading at the beginning. To do this we call
control break statement
at first & endat inside the loop. At first statement will be
triggered
at the first time of the
loop. Similarly when the listing will be completed then At Last - endat
statement will be
triggered to display ending of report message.
Next we raise the
event TOP-OF-PAGE which is used to display the top message. On
the
top we can write program name, user
name, date etc.
The following program is displaying some useful information of material from table MARA based
REPORT zabap_gui.
*Declaring the line type of database table
TABLES: mara.
*------Declaring the local types for Internal table & Work area--------*
TYPES: BEGIN OF ty_mara,
matnr TYPE mara-matnr, "Material No.
ersda TYPE mara-ersda, "Creation Data
ernam TYPE mara-ernam, "Created By
mtart TYPE mara-mtart, "Material Type
matkl TYPE mara-matkl, "Material Group
END OF ty_mara.
*-----Declaring the Internal table & work area-------------------------*
DATA: wa_mara TYPE ty_mara,
it_mara TYPE STANDARD TABLE OF ty_mara,
v_repid TYPE sy-repid, "Program name
v_date TYPE sy-datum, "Current date
v_user TYPE sy-uname. "User name
*-------------Event initialization-------------------------------------*
INITIALIZATION.
v_repid = sy-repid.
v_date = sy-datum.
v_user = sy-uname.
*-Declaring the selection screen & select option for input-------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_matnr FOR mara-matnr OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
*-----Event start of selection-----------------------------------------*
START-OF-SELECTION. PERFORM get_mara.
*---Event end of selection---------------------------------------------*
END-OF-SELECTION. PERFORM get_output.
*---Event top of page--------------------------------------------------*
TOP-OF-PAGE. PERFORM top_page.
*&---------------------------------------------------------------------*
*& Form get_mara
*&---------------------------------------------------------------------*
* Select data from MARA table
*----------------------------------------------------------------------*
FORM get_mara .
SELECT matnr ersda ernam mtart matkl
FROM mara INTO TABLE it_mara
WHERE matnr IN s_matnr.
IF sy-subrc <> 0.
MESSAGE 'Material Doesn''t Exist.' TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " get_mara
*&---------------------------------------------------------------------*
*& Form get_output
*&---------------------------------------------------------------------*
* Preparing the classical output with WRITE statement
*----------------------------------------------------------------------*
FORM get_output .
IF it_mara IS NOT INITIAL.
LOOP AT it_mara INTO wa_mara.
"Control break statement – it will display one time at first line
AT FIRST.
WRITE: /3 'Material No.',
25 'Created By',
40 'Group',
55 'Type',
70 'Creation Date'.
ULINE.
SKIP.
ENDAT.
WRITE: / wa_mara-matnr,
25 wa_mara-ernam,
40 wa_mara-matkl,
55 wa_mara-mtart,
70 wa_mara-ersda.
"Control break statement – it will display one time at last line
AT LAST.
ULINE.
WRITE: /15 '~~End of Material Display~~'.
ENDAT.
ENDLOOP.
ENDIF.
ENDFORM. " get_output
*&---------------------------------------------------------------------*
*& Form top_page
*&---------------------------------------------------------------------*
* Top pf page to display top information
*----------------------------------------------------------------------*
FORM top_page .
WRITE: / 'Material Details',
/ 'Date: ', 12 v_date DD/MM/YYYY,
/ 'User: ', 12 v_user,
/ 'Report: ', 12 v_repid.
ULINE.
SKIP.
ENDFORM. " top_page
TABLES: mara.
*------Declaring the local types for Internal table & Work area--------*
TYPES: BEGIN OF ty_mara,
matnr TYPE mara-matnr, "Material No.
ersda TYPE mara-ersda, "Creation Data
ernam TYPE mara-ernam, "Created By
mtart TYPE mara-mtart, "Material Type
matkl TYPE mara-matkl, "Material Group
END OF ty_mara.
*-----Declaring the Internal table & work area-------------------------*
DATA: wa_mara TYPE ty_mara,
it_mara TYPE STANDARD TABLE OF ty_mara,
v_repid TYPE sy-repid, "Program name
v_date TYPE sy-datum, "Current date
v_user TYPE sy-uname. "User name
*-------------Event initialization-------------------------------------*
INITIALIZATION.
v_repid = sy-repid.
v_date = sy-datum.
v_user = sy-uname.
*-Declaring the selection screen & select option for input-------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_matnr FOR mara-matnr OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
*-----Event start of selection-----------------------------------------*
START-OF-SELECTION. PERFORM get_mara.
*---Event end of selection---------------------------------------------*
END-OF-SELECTION. PERFORM get_output.
*---Event top of page--------------------------------------------------*
TOP-OF-PAGE. PERFORM top_page.
*&---------------------------------------------------------------------*
*& Form get_mara
*&---------------------------------------------------------------------*
* Select data from MARA table
*----------------------------------------------------------------------*
FORM get_mara .
SELECT matnr ersda ernam mtart matkl
FROM mara INTO TABLE it_mara
WHERE matnr IN s_matnr.
IF sy-subrc <> 0.
MESSAGE 'Material Doesn''t Exist.' TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " get_mara
*&---------------------------------------------------------------------*
*& Form get_output
*&---------------------------------------------------------------------*
* Preparing the classical output with WRITE statement
*----------------------------------------------------------------------*
FORM get_output .
IF it_mara IS NOT INITIAL.
LOOP AT it_mara INTO wa_mara.
"Control break statement – it will display one time at first line
AT FIRST.
WRITE: /3 'Material No.',
25 'Created By',
40 'Group',
55 'Type',
70 'Creation Date'.
ULINE.
SKIP.
ENDAT.
WRITE: / wa_mara-matnr,
25 wa_mara-ernam,
40 wa_mara-matkl,
55 wa_mara-mtart,
70 wa_mara-ersda.
"Control break statement – it will display one time at last line
AT LAST.
ULINE.
WRITE: /15 '~~End of Material Display~~'.
ENDAT.
ENDLOOP.
ENDIF.
ENDFORM. " get_output
*&---------------------------------------------------------------------*
*& Form top_page
*&---------------------------------------------------------------------*
* Top pf page to display top information
*----------------------------------------------------------------------*
FORM top_page .
WRITE: / 'Material Details',
/ 'Date: ', 12 v_date DD/MM/YYYY,
/ 'User: ', 12 v_user,
/ 'Report: ', 12 v_repid.
ULINE.
SKIP.
ENDFORM. " top_page
Below is the output:
No comments:
Post a Comment