Tuesday, 1 July 2014

Real-time delivery report in SAP ABAP (All models in classical reports)

Real-time delivery report in SAP ABAP

Real-time example of displaying delivery details for a range of sales orders in SAP ABAP.
REPORT  ZPROJECT_RANGE NO STANDARD PAGE HEADING LINE-COUNT 37(3).

TABLES : VBAK,VBAP,VBFA,LIKP,LIPS.

TYPES: BEGIN OF TY_VBAK,
        VBELN TYPE VBAK-VBELN,
        VKORG TYPE VBAK-VKORG,
        VTWEG TYPE VBAK-VTWEG,
        SPART TYPE VBAK-SPART,
      END OF TY_VBAK.
TYPES: BEGIN OF TY_VBAP,
        VBELN TYPE VBAP-VBELN,
        POSNR TYPE VBAP-POSNR,
        MATNR TYPE VBAP-MATNR,
        ZMENG TYPE VBAP-ZMENG,
        NETPR TYPE VBAP-NETPR,
      END OF TY_VBAP.
TYPES: BEGIN OF TY_LIKP,
        VBELN TYPE LIKP-VBELN,
      END OF TY_LIKP.
TYPES: BEGIN OF TY_LIPS,
        VBELN TYPE LIPS-VBELN,
        POSNR TYPE LIPS-POSNR,
        LFIMG TYPE LIPS-LFIMG,
        NETPR TYPE LIPS-NETPR,
      END OF TY_LIPS.
TYPES: BEGIN OF TY_VBFA,
        VBELV TYPE VBFA-VBELV,
        POSNV TYPE VBFA-POSNV,
        VBELN TYPE VBFA-VBELN,
        POSNN TYPE VBFA-POSNN,
        VBTYP_N TYPE VBFA-VBTYP_N,
      END OF TY_VBFA.
TYPES: BEGIN OF TY_FINAL,
        VBELN TYPE VBAP-VBELN,
        POSNR TYPE VBAP-POSNR,
        MATNR TYPE VBAP-MATNR,
        ZMENG TYPE VBAP-ZMENG,
        NETPR TYPE VBAP-NETPR,
        VBELN1 TYPE LIPS-VBELN,
        POSNR1 TYPE LIPS-POSNR,
        LFIMG TYPE LIPS-LFIMG,
        NETPR1 TYPE LIPS-NETPR,
      END OF TY_FINAL.

DATA : I_VBAK TYPE TABLE OF TY_VBAK,WA_VBAK TYPE TY_VBAK.
DATA : I_VBAP TYPE TABLE OF TY_VBAP,WA_VBAP TYPE TY_VBAP.
DATA : I_LIKP TYPE TABLE OF TY_LIKP,WA_LIKP TYPE TY_LIKP.
DATA : I_LIPS TYPE TABLE OF TY_LIPS,WA_LIPS TYPE TY_LIPS.
DATA : I_VBFA TYPE TABLE OF TY_VBFA,WA_VBFA TYPE TY_VBFA.
DATA : I_FINAL TYPE TABLE OF TY_FINAL,WA_FINAL TYPE TY_FINAL.

DATA : V_TITLE TYPE STRING.
DATA : V_FNAME TYPE STRING.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_VBELN FOR VBAK-VBELN NO-EXTENSION.
SELECT-OPTIONS : S_VKORG FOR VBAK-VKORG NO INTERVALS NO-EXTENSION.
SELECT-OPTIONS : S_VTWEG FOR VBAK-VTWEG NO INTERVALS NO-EXTENSION.
SELECT-OPTIONS : S_SPART FOR VBAK-SPART NO INTERVALS NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN SKIP.

PARAMETERS : P_FILE TYPE RLGRAP-FILENAME.
PARAMETERS : DOWNLOAD AS CHECKBOX.

INITIALIZATION.
  V_TITLE = 'SALES DOCUMENT:ITEM DATA AND DELIVERY DETAILS'.

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

AT SELECTION-SCREEN ON HELP-REQUEST FOR P_FILE.
  PERFORM GET_HELP_FOR_FILE_PATH.

AT SELECTION-SCREEN.
  PERFORM VALIDATE_SALESDOCUMENT.
  PERFORM VALIDATE_SALESORGANIZATION.
  PERFORM VALIDATE_DISTRIBUTIONCHANNEL.
  PERFORM VALIDATE_DIVISION.

START-OF-SELECTION.
  PERFORM GET_DATA.
  PERFORM DISPLAY_DATA.
  PERFORM DOWNLOAD_DATA.

END-OF-SELECTION.

TOP-OF-PAGE.
  PERFORM DISPLAY_HEADING.

END-OF-PAGE.
  PERFORM DISPLAY_FOOTER.


FORM GET_FILE_PATH .
  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
      PROGRAM_NAME  = SYST-REPID
      DYNPRO_NUMBER = SYST-DYNNR
      FIELD_NAME    = P_FILE
    CHANGING
      FILE_NAME     = P_FILE.
ENDFORM.                    " GET_FILE_PATH

FORM GET_HELP_FOR_FILE_PATH .
  MESSAGE 'PLEASE SELECT FILE PATH' TYPE 'I'.
ENDFORM.                    " GET_HELP_FOR_FILE_PATH

FORM VALIDATE_SALESDOCUMENT .
  SELECT SINGLE VBELN FROM VBAK INTO WA_VBAK WHERE VBELN IN S_VBELN.
  IF SY-SUBRC <> 0.
    MESSAGE 'INVALID SALES DOCUMENT NO' TYPE 'I'.
  ENDIF.
ENDFORM.                    " VALIDATE_SALESDOCUMENT

FORM VALIDATE_SALESORGANIZATION .
  SELECT VKORG FROM VBAK INTO WA_VBAK UP TO 1 ROWS WHERE VKORG IN S_VKORG.
  ENDSELECT.
  IF SY-SUBRC <> 0.
    MESSAGE 'INVALID SALES ORGANIZATION' TYPE 'I'.
  ENDIF.
ENDFORM.                    " VALIDATE_SALESORGANIZATION

FORM VALIDATE_DISTRIBUTIONCHANNEL.
  SELECT VTWEG FROM VBAK INTO WA_VBAK UP TO 1 ROWS WHERE VTWEG IN S_VTWEG.
  ENDSELECT.
  IF SY-SUBRC <> 0.
    MESSAGE 'INVALID DISTRIBUTION CHANNEL' TYPE 'I'.
  ENDIF.
ENDFORM.                    " VALIDATE_DISTRIBUTIONCHANNEL

FORM VALIDATE_DIVISION .
  SELECT SPART FROM VBAK INTO WA_VBAK UP TO 1 ROWS WHERE SPART IN S_SPART.
  ENDSELECT.
  IF SY-SUBRC <> 0.
    MESSAGE 'INVALID DIVISION' TYPE 'I'.
  ENDIF.
ENDFORM.                    " VALIDATE_DIVISION

FORM GET_DATA .

  SELECT VBELN VKORG VTWEG SPART FROM VBAK INTO TABLE I_VBAK WHERE VBELN IN S_VBELN AND VKORG IN S_VKORG
                                                               AND VTWEG IN S_VTWEG AND SPART IN S_SPART.
  IF I_VBAK IS NOT INITIAL.

    SELECT VBELN POSNR MATNR ZMENG NETPR FROM VBAP INTO TABLE I_VBAP FOR ALL ENTRIES IN I_VBAK
                                                                    WHERE VBELN = I_VBAK-VBELN.

    SELECT VBELV POSNV VBELN POSNN VBTYP_N FROM VBFA INTO TABLE I_VBFA FOR ALL ENTRIES IN I_VBAP
                                                    WHERE VBELV = I_VBAP-VBELN AND VBTYP_N = 'J'.

    SELECT VBELN FROM LIKP INTO TABLE I_LIKP FOR ALL ENTRIES IN I_VBFA WHERE VBELN = I_VBFA-VBELN.


    SELECT VBELN POSNR LFIMG NETPR FROM LIPS INTO TABLE I_LIPS FOR ALL ENTRIES IN I_LIKP
                                                              WHERE VBELN = I_LIKP-VBELN.
    SORT I_VBAP.
    SORT I_LIPS.

    LOOP AT I_VBFA INTO WA_VBFA.
      READ TABLE I_LIPS INTO WA_LIPS WITH KEY VBELN = WA_VBFA-VBELN POSNR = WA_VBFA-POSNN BINARY SEARCH.
      READ TABLE I_VBAP INTO WA_VBAP WITH KEY VBELN = WA_VBFA-VBELV POSNR = WA_VBFA-POSNV BINARY SEARCH.
      WA_FINAL-VBELN = WA_VBAP-VBELN.
      WA_FINAL-POSNR = WA_VBAP-POSNR.
      WA_FINAL-MATNR = WA_VBAP-MATNR.
      WA_FINAL-ZMENG = WA_VBAP-ZMENG.
      WA_FINAL-NETPR = WA_VBAP-NETPR.
      WA_FINAL-VBELN1 = WA_LIPS-VBELN.
      WA_FINAL-POSNR1 = WA_LIPS-POSNR.
      WA_FINAL-LFIMG = WA_LIPS-LFIMG.
      WA_FINAL-NETPR1 = WA_LIPS-NETPR.
      APPEND WA_FINAL TO I_FINAL.
      CLEAR WA_FINAL.
    ENDLOOP.
  ENDIF.

ENDFORM.                    " GET_DATA

FORM DISPLAY_DATA .
  LOOP AT I_FINAL INTO WA_FINAL.
    WRITE : / WA_FINAL-VBELN,WA_FINAL-POSNR,WA_FINAL-MATNR,WA_FINAL-ZMENG,WA_FINAL-NETPR,
              WA_FINAL-VBELN1,WA_FINAL-POSNR1,WA_FINAL-LFIMG,WA_FINAL-NETPR.
  ENDLOOP.
ENDFORM.                    " DISPLAY_DATA

FORM DOWNLOAD_DATA .
  IF DOWNLOAD = 'X'.
    V_FNAME = P_FILE.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        FILENAME              = V_FNAME
        FILETYPE              = 'ASC'
        WRITE_FIELD_SEPARATOR = 'X'
      TABLES
        DATA_TAB              = I_FINAL.
    IF SY-SUBRC = 0.
      MESSAGE 'DATA SUCCESSFULLY DOWNLOADED' TYPE 'I'.
    ENDIF.
  ENDIF.
ENDFORM.                    " DOWNLOAD_DATA

FORM DISPLAY_HEADING .
  WRITE: SY-ULINE.
  WRITE :/45 V_TITLE.
  WRITE: SY-ULINE.
ENDFORM.                    " DISPLAY_HEADING

FORM DISPLAY_FOOTER .
  WRITE: SY-ULINE.
  WRITE :/45 'INTEL GROUP OF COMPANIES'.
  WRITE: SY-ULINE.
ENDFORM.                    " DISPLAY_FOOTER


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

Interactive Report -1

Example for Interactive Report :

*&---------------------------------------------------------------------*
*& Report  ZINT_REPORT                                                 *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*
REPORT  ZINT_REPORT
        NO STANDARD PAGE HEADING
        LINE-SIZE 120
        LINE-COUNT 20(2).

DATA: IT_VBRK LIKE VBRK OCCURS 1 WITH HEADER LINE,
      IT_VBRP LIKE VBRP OCCURS 1 WITH HEADER LINE.

DATA: V_LINE TYPE I,
      V_VBELN LIKE VBRK-VBELN.

SELECT-OPTIONS: S_VBELN FOR IT_VBRK-VBELN.


START-OF-SELECTION.
  PERFORM GET_DATA.


END-OF-SELECTION.
  IF NOT IT_VBRK[] IS INITIAL.
    PERFORM SHOW_BLIST.
  ELSE.
    MESSAGE I000(Z00) WITH 'No Data found to display'.
  ENDIF.

TOP-OF-PAGE.
  PERFORM BUILD_PAGE_HEADER.

END-OF-PAGE.
  PERFORM BUILD_PAGE_FOOTER.

TOP-OF-PAGE DURING LINE-SELECTION.
  IF SY-LSIND = 1.
    PERFORM SEC_PAGE_HEADER.
*  ELSEIF SY-LSIND = 2.
*    WRITE:/ 'PAGE HEADER FOR 2ND SECONDARY LIST'.
*  ELSE.
*    WRITE:/ 'PAGE HEADER FOR SECONDARY LIST'.
  ENDIF.

AT LINE-SELECTION.
  IF SY-LSIND = 1.
    PERFORM SHOW_SLIST.
  ENDIF.

AT PF5.
  MESSAGE I000(Z00) WITH 'You clicked on F5 key'.


*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_DATA .

*--Billing doc header data
  SELECT *
    FROM VBRK
    INTO TABLE IT_VBRK
    WHERE VBELN IN S_VBELN.

  IF SY-SUBRC = 0.
*--Billing doc Item data
    SELECT *
      FROM VBRP
      INTO TABLE IT_VBRP
      WHERE VBELN IN S_VBELN.
  ENDIF.

ENDFORM.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Form  BUILD_PAGE_HEADER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM BUILD_PAGE_HEADER .
  ULINE AT (50).
  FORMAT INTENSIFIED ON COLOR COL_HEADING.
  WRITE:/ SY-VLINE,
          'Biiling Doc',
       16  SY-VLINE,
           'Billing Date',
       30  SY-VLINE,
           'Billing Type',
       50  SY-VLINE.
  ULINE AT /(50).

ENDFORM.                    " BUILD_PAGE_HEADER
*&---------------------------------------------------------------------*
*&      Form  BUILD_PAGE_FOOTER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM BUILD_PAGE_FOOTER .
  ULINE AT (50).
  WRITE:/30 'Page :', SY-PAGNO.
ENDFORM.                    " BUILD_PAGE_FOOTER
*&---------------------------------------------------------------------*
*&      Form  SHOW_BLIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SHOW_BLIST .
  LOOP AT IT_VBRK.
    WRITE:/ SY-VLINE,
            IT_VBRK-VBELN COLOR COL_KEY HOTSPOT ON,
         16  SY-VLINE,
             IT_VBRK-FKDAT,
         30  SY-VLINE,
             IT_VBRK-FKART,
         50  SY-VLINE.
      HIDE IT_VBRK-VBELN.
  ENDLOOP.
  V_LINE = ( SY-LINCT - SY-LINNO ) - 1.
ENDFORM.                    " SHOW_BLIST
*&---------------------------------------------------------------------*
*&      Form  SHOW_SLIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SHOW_SLIST .

*   CONDENSE SY-LISEL+1(10).
*   V_VBELN = SY-LISEL+1(10).
*
*CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
*  EXPORTING
*    INPUT         = V_VBELN
*  IMPORTING
*    OUTPUT        = V_VBELN.

*  LOOP AT IT_VBRP WHERE VBELN = V_VBELN.
  LOOP AT IT_VBRP WHERE VBELN = IT_VBRK-VBELN.
    WRITE:/ SY-VLINE,
            IT_VBRP-POSNR,
          11 SY-VLINE,
            IT_VBRP-MATNR,
         30 SY-VLINE,
            IT_VBRP-ARKTX,
         73 SY-VLINE,
            IT_VBRP-FKIMG,
        95 SY-VLINE,
            IT_VBRP-NETWR,
       120 SY-VLINE.
  ENDLOOP.

ENDFORM.                    " SHOW_SLIST
*&---------------------------------------------------------------------*
*&      Form  SEC_PAGE_HEADER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SEC_PAGE_HEADER .
  ULINE AT (120).
  FORMAT INTENSIFIED ON COLOR COL_HEADING.
  WRITE:/ SY-VLINE,
          'Item No',
        11 SY-VLINE,
          'Material',
       30 SY-VLINE,
          'Material Desc',
       73 SY-VLINE,
          'Qty',
      95 SY-VLINE,
          'Amount',
     120 SY-VLINE.
  ULINE AT (120).
  FORMAT RESET.
ENDFORM.                    " SEC_PAGE_HEADER

Classical report with events in SAP ABAP

Developing classical report with classical report events in SAP ABAP.
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

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 

No comments:

Post a Comment