Classical Report with top of page and end of page in SAP ABAP
Real-time classical report with top of page and end of page in SAP ABAP
*&---------------------------------------------------------------------*
*& Report ZCLASSICAL_REPORT *
*& *
REPORT ZCLASSICAL_REPORT
NO STANDARD PAGE HEADING
LINE-SIZE 120
LINE-COUNT 10(1).
TABLES: MARA, "Material Master
T001W. "Plant Master
DATA: V_LINE TYPE I.
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: 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.
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.
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 ON S_WERKS.
IF NOT S_WERKS[] IS initial.
PERFORM VALIDATE_PLANT.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_WERKS-LOW.
MESSAGE I000(Z00) WITH 'On Value Request'.
AT SELECTION-SCREEN ON HELP-REQUEST FOR P1.
MESSAGE I000(Z00) WITH 'On Help Request'.
START-OF-SELECTION.
PERFORM GET_DATA.
END-OF-SELECTION.
PERFORM SHOW_LIST.
*----------------------------------------------------------------------*
* TOP-OF-PAGE
*----------------------------------------------------------------------*
TOP-OF-PAGE.
PERFORM BUILD_PAGE_HEADER.
END-OF-PAGE.
PERFORM BUILD_PAGE_FOOTER.
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 .
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 .
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 .
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 .
WRITE:/90 'Page :', SY-PAGNO.
ENDFORM. " BUILD_PAGE_FOOTER