Classical Reports in SAP ABAP

Classical reports are simple reports in SAP ABAP, these are normal reports with only one output screen with out any user interaction.We will just out put dat with in the loop to develop a classical report.

Classical reports can be developped using some events, refer list of events available in SAP ABAP classical reports

.
REPORT  ZCLASSICAL_REPORT
        NO STANDARD PAGE HEADING
        LINE-SIZE 120
        LINE-COUNT 10(1).

*----------------------------------------------------------------------*
*       TYPES DECLARATIONS
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
*       TABLES DECLARATIONS
*----------------------------------------------------------------------*
TABLES: MARA,   "Material Master
        T001W.  "Plant Master

*----------------------------------------------------------------------*
*       DATA DECLARATIONS
*----------------------------------------------------------------------*
DATA: V_LINE TYPE I.

*----------------------------------------------------------------------*
*       CONSTANTS DECLARATIONS
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
*       INTERNAL TABLE DECLARATIONS
*----------------------------------------------------------------------*
DATA: BEGIN OF IT_MARD OCCURS 1,
        MATNR LIKE MARA-MATNR,
        MAKTX LIKE MAKT-MAKTX,
        WERKS LIKE MARD-WERKS,
        LGORT LIKE MARD-LGORT,
        LABST LIKE MARD-LABST,
      END OF IT_MARD.

*----------------------------------------------------------------------*
*       SELECTION SCREEN DESIGN
*----------------------------------------------------------------------*
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-H01.
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR,
                S_WERKS FOR T001W-WERKS.
PARAMETERS: P1 TYPE I.
SELECTION-SCREEN: END OF BLOCK B1.

*----------------------------------------------------------------------*
*       INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
  S_MATNR-LOW = '100-100'.  S_MATNR-HIGH = '100-500'.
  S_MATNR-SIGN = 'I'. S_MATNR-OPTION = 'BT'.
  APPEND S_MATNR.


  S_WERKS-LOW = '0001'.  S_WERKS-HIGH = '3800'.
  S_WERKS-SIGN = 'I'. S_WERKS-OPTION = 'BT'.
  APPEND S_WERKS.

*----------------------------------------------------------------------*
*       AT SELECTION SCREEN OUTPUT
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF SCREEN-NAME = 'S_WERKS-LOW'.
      SCREEN-REQUIRED = 1.
*      SCREEN-INPUT = 0.
*      SCREEN-INVISIBLE = 1.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

*----------------------------------------------------------------------*
*       AT SELECTION SCREEN
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.

*----------------------------------------------------------------------*
*       AT SELECTION SCREEN
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON S_WERKS.
  IF NOT S_WERKS[] IS initial.
    PERFORM VALIDATE_PLANT.
  ENDIF.

*----------------------------------------------------------------------*
*       AT SELECTION SCREEN ON VALUE REQUEST
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_WERKS-LOW.
  MESSAGE I000(Z00) WITH 'On Value Request'.

*----------------------------------------------------------------------*
*       AT SELECTION SCREEN ON HELP REQUEST
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON HELP-REQUEST FOR P1.
  MESSAGE I000(Z00) WITH 'On Help Request'.


*----------------------------------------------------------------------*
*       START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM GET_DATA.


*----------------------------------------------------------------------*
*       END-OF-SELECTION
*----------------------------------------------------------------------*
END-OF-SELECTION.
  PERFORM SHOW_LIST.

*----------------------------------------------------------------------*
*       TOP-OF-PAGE
*----------------------------------------------------------------------*
TOP-OF-PAGE.
  PERFORM BUILD_PAGE_HEADER.


*----------------------------------------------------------------------*
*       END-OF-PAGE
*----------------------------------------------------------------------*
END-OF-PAGE.
  PERFORM BUILD_PAGE_FOOTER.


*&---------------------------------------------------------------------*
*&      Form  VALIDATE_PLANT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM VALIDATE_PLANT .
  SELECT WERKS
    FROM T001W
    INTO T001W-WERKS
    UP TO 1 ROWS
    WHERE WERKS IN S_WERKS.

  ENDSELECT.

  IF SY-SUBRC <> 0.
    MESSAGE E000(Z00) WITH 'Invalid Range of Plants' S_WERKS-LOW 'And'
S_WERKS-HIGH.
  ENDIF.

ENDFORM.                    " VALIDATE_PLANT
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_DATA .
  SELECT A~MATNR
         B~MAKTX
         C~WERKS
         C~LGORT
         C~LABST
    INTO TABLE IT_MARD
    FROM MARA AS A
    INNER JOIN MAKT AS B
    ON B~MATNR = A~MATNR
    INNER JOIN MARD AS C
    ON C~MATNR = A~MATNR
    WHERE A~MATNR IN S_MATNR
    AND   C~WERKS IN S_WERKS
    AND     SPRAS = SY-LANGU.

ENDFORM.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Form  BUILD_PAGE_HEADER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM BUILD_PAGE_HEADER .
  FORMAT INTENSIFIED ON COLOR COL_HEADING.
  ULINE AT (105).
  WRITE:/ SY-VLINE,
          'Material No',
       20 SY-VLINE,
          'Material Desc',
       62 SY-VLINE,
          'Plant',
       72 SY-VLINE,
          'Str.Loc',
       81 SY-VLINE,
          'Qty',
      105 SY-VLINE.
  ULINE AT (105).
  FORMAT RESET.
ENDFORM.                    " BUILD_PAGE_HEADER
*&---------------------------------------------------------------------*
*&      Form  SHOW_LIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SHOW_LIST .
  LOOP AT IT_MARD.
    WRITE:/ SY-VLINE,
            IT_MARD-MATNR,
         20 SY-VLINE,
            IT_MARD-MAKTX,
         62 SY-VLINE,
           IT_MARD-WERKS,
         72 SY-VLINE,
            IT_MARD-LGORT,
         81 SY-VLINE,
            IT_MARD-LABST,
        105 SY-VLINE.
  ENDLOOP.
  ULINE AT (105).

*--footer for last page conditionally
  V_LINE = ( SY-LINCT - SY-LINNO ) - 1.
  SKIP V_LINE.

ENDFORM.                    " SHOW_LIST
*&---------------------------------------------------------------------*
*&      Form  BUILD_PAGE_FOOTER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM BUILD_PAGE_FOOTER .
  WRITE:/90 'Page :', SY-PAGNO.
ENDFORM.                    " BUILD_PAGE_FOOTER 

Popular posts from this blog

ALV with field catalog merge

SAP ABAP real-time Interview Questions with answers

Using GUI Upload in SAP ABAP