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