banner ads

Classical Report of Single Table

Classical Report of Single Table

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 the 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. Since 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.

REPORT  zabap_gui.

*Declaring the line type of database table
TABLES: mara.

*------Declaring the local types for Internal table & Work area--------*
        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-------------------------------------*
  v_repid = sy-repid.
  v_date  = sy-datum.
  v_user  = sy-uname.

*-Declaring the selection screen & select option for input-------------*
  SELECT-OPTIONS   s_matnr FOR mara-matnr OBLIGATORY.

*-----Event start of selection-----------------------------------------*

*---Event end of selection---------------------------------------------*

*---Event top of 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'.

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'.

      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.
        WRITE: /15 '~~End of Material Display~~'.


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.

ENDFORM.                    " top_page

Below is the output:


No comments