Classical Report Using all events in SAP ABAP

Classical reports with events, validations in SAP ABAP programming.

+ -

Requirement: Develop a Classical Report to display list of materials for a material input range(select-Options) and for a material type (screen input) with validations, search help and value help, the report can be able to download into excel sheet.

Input elements : Select-options for matnr ( material no for MARA table), parameter mtart( Material type from MARA), a check box and a parameter limit for limiting no of results.

Whenever we click on download data, select file to download field will be enabled otherwise this should be disabled.

Input Screen.

real time classical report in SAP ABAP

REPORT  ZSAPN_CLASSICAL_REPORT LINE-COUNT 34(2). "34 lines are for report space and 2 lines are for footer space
TABLES : MARA.
TYPES: BEGIN OF TY_MARA,
        MATNR TYPE MARA-MATNR,
        ERSDA TYPE MARA-ERSDA,
        MTART TYPE MARA-MTART,
        MBRSH TYPE MARA-MBRSH,
        MATKL TYPE MARA-MATKL,
        MEINS TYPE MARA-MEINS,
      END OF TY_MARA.
DATA : IT_MARA TYPE TABLE OF TY_MARA. "material out put internal table
DATA : WA_MARA TYPE TY_MARA. " work area

DATA : LV_MTART TYPE MARA-MTART.
DATA : LV_START_TIME TYPE SY-UZEIT .
DATA : LV_END_TIME TYPE SY-UZEIT .
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. "designs a block just for design double click on TEXT-001 to add text

SELECT-OPTIONS : S_MATNR FOR MARA-MATNR. " Material range input
PARAMETERS : P_MTART TYPE MARA-MTART. "material type input

SELECTION-SCREEN END OF BLOCK B1.
PARAMETERS  P_DLOAD AS CHECKBOX USER-COMMAND UC1.
PARAMETERS  P_FILE TYPE RLGRAP-FILENAME MODIF ID DLD .
PARAMETERS P_LIMIT TYPE I  . "Limit no of rows to display to avoid the burden on database

LOAD-OF-PROGRAM. "loads program into memory
  LV_START_TIME = SY-UZEIT . "see system variables www.sapnuts.com/resourse/system-variable.html

INITIALIZATION. "triggers second
  P_MTART = 'FERT'. "MATERIAL TYPE DEFAULT VALUE
  P_LIMIT = '50'. "Limit rows to 50

AT SELECTION-SCREEN OUTPUT . "For dynamic modifications
  IF P_DLOAD IS INITIAL .
    LOOP AT SCREEN.
      CHECK SCREEN-GROUP1 = 'DLD'.
      SCREEN-INPUT = '0'.
      MODIFY SCREEN.
    ENDLOOP.
  ENDIF.

AT SELECTION-SCREEN ON P_MTART . " Validate single input field at selection-screen is an alternative and good see http://www.sapnuts.com/courses/core-abap/classical-reports/selection-screen-event.html

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_MTART . "This event is not required here will use in the next lesson
  PERFORM MTART_VALUE_HELP.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE .
  PERFORM FILE_VALUE_HELP .

AT SELECTION-SCREEN ON HELP-REQUEST FOR P_MTART . " Provide help request F1 help .
  PERFORM MTART_HELP.


AT SELECTION-SCREEN.
  PERFORM VALIDATE_INPUTS.

START-OF-SELECTION.
  PERFORM GET_MATERIALS .

END-OF-SELECTION.
  LV_END_TIME = SY-UZEIT .
  PERFORM DISPLAY_OUTPUT.
  IF P_DLOAD = 'X'.
    PERFORM DOWNLOAD_DATA.
  ENDIF.


TOP-OF-PAGE.
  WRITE : 'Material Details ' COLOR 2.

END-OF-PAGE.
  WRITE : 'The above materials are active materials available in database' COLOR 3.
  WRITE : 'Start time' .
  WRITE : LV_START_TIME .
  WRITE : 'End time' .
  WRITE : LV_END_TIME .

FORM VALIDATE_INPUTS .
  IF S_MATNR IS INITIAL OR P_MTART IS INITIAL.

    MESSAGE 'Please enter required inputs' TYPE 'E'.

  ELSE.

***Validate material type is valid or not
    SELECT MTART FROM MARA INTO LV_MTART
       UP TO 1 ROWS WHERE MTART = P_MTART .
    ENDSELECT.
    IF LV_MTART IS INITIAL.
      MESSAGE 'Material type is not available in MARA' TYPE 'E'.
    ENDIF.
  ENDIF.
ENDFORM.                    " VALIDATE_INPUTS

FORM GET_MATERIALS .
  SELECT MATNR ERSDA MTART MBRSH MATKL MEINS FROM MARA
     INTO TABLE IT_MARA
    UP TO P_LIMIT ROWS
    WHERE MATNR IN S_MATNR AND MTART = P_MTART .

ENDFORM.                    " GET_MATERIALS

FORM DISPLAY_OUTPUT .
  IF IT_MARA IS NOT INITIAL.
    LOOP AT IT_MARA INTO WA_MARA.

      WRITE :/ WA_MARA-MATNR, WA_MARA-ERSDA, WA_MARA-MTART, WA_MARA-MBRSH, WA_MARA-MATKL, WA_MARA-MEINS .

    ENDLOOP.
  ELSE.
    WRITE : 'No Data Found for your Query'.
  ENDIF.
ENDFORM.                    " DISPLAY_OUTPUT

FORM MTART_HELP .
  MESSAGE 'Enter a Material Type ' TYPE 'I'.
ENDFORM.                    " MTART_HELP

FORM MTART_VALUE_HELP .
  MESSAGE 'Material type input ex: FERT' TYPE 'I'.
ENDFORM.                    " MTART_VSLUE_HELP

FORM DOWNLOAD_DATA .
  DATA : LV_FILE TYPE STRING .
  LV_FILE = P_FILE .
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
*   BIN_FILESIZE                    =
      FILENAME                        = LV_FILE
     FILETYPE                        = 'ASC'
*   APPEND                          = ' '
     WRITE_FIELD_SEPARATOR           = 'X'
*   HEADER                          = '00'
*   TRUNC_TRAILING_BLANKS           = ' '
*   WRITE_LF                        = 'X'
*   COL_SELECT                      = ' '
*   COL_SELECT_MASK                 = ' '
*   DAT_MODE                        = ' '
*   CONFIRM_OVERWRITE               = ' '
*   NO_AUTH_CHECK                   = ' '
*   CODEPAGE                        = ' '
*   IGNORE_CERR                     = ABAP_TRUE
*   REPLACEMENT                     = '#'
*   WRITE_BOM                       = ' '
*   TRUNC_TRAILING_BLANKS_EOL       = 'X'
*   WK1_N_FORMAT                    = ' '
*   WK1_N_SIZE                      = ' '
*   WK1_T_FORMAT                    = ' '
*   WK1_T_SIZE                      = ' '
*   WRITE_LF_AFTER_LAST_LINE        = ABAP_TRUE
*   SHOW_TRANSFER_STATUS            = ABAP_TRUE
* IMPORTING
*   FILELENGTH                      =
    TABLES
      DATA_TAB                        = IT_MARA
*   FIELDNAMES                      =
* EXCEPTIONS
*   FILE_WRITE_ERROR                = 1
*   NO_BATCH                        = 2
*   GUI_REFUSE_FILETRANSFER         = 3
*   INVALID_TYPE                    = 4
*   NO_AUTHORITY                    = 5
*   UNKNOWN_ERROR                   = 6
*   HEADER_NOT_ALLOWED              = 7
*   SEPARATOR_NOT_ALLOWED           = 8
*   FILESIZE_NOT_ALLOWED            = 9
*   HEADER_TOO_LONG                 = 10
*   DP_ERROR_CREATE                 = 11
*   DP_ERROR_SEND                   = 12
*   DP_ERROR_WRITE                  = 13
*   UNKNOWN_DP_ERROR                = 14
*   ACCESS_DENIED                   = 15
*   DP_OUT_OF_MEMORY                = 16
*   DISK_FULL                       = 17
*   DP_TIMEOUT                      = 18
*   FILE_NOT_FOUND                  = 19
*   DATAPROVIDER_EXCEPTION          = 20
*   CONTROL_FLUSH_ERROR             = 21
*   OTHERS                          = 22
            .
  IF SY-SUBRC = 0.
    WRITE :/ 'Data downloaded to'.
    WRITE : P_FILE.
  ENDIF.

ENDFORM.                    " DOWNLOAD_DATA

FORM FILE_VALUE_HELP .

  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      FIELD_NAME = 'P_FILE'
    IMPORTING
      FILE_NAME  = P_FILE.
ENDFORM.                    " FILE_VALUE_HELP

Note:

Please Sign in to ask a question

Was this lesson helpful to you? Yes No 47 People out of 53 think this lesson helpful


Lesson Navigation

←Previous Chapter
Next Chapter →