Thursday, 3 July 2014

Develop a ALV report to display material details with all fields from MARA table for a material range input(Select-Options input).

+ -
Requirement: Develop a ALV report to display material details with all fields from MARA table for a material range input(Select-Options input).
In this requirement we have to display all fields from MARA (Material master table) in ALV format. We use REUSE_ALV_GRID_DISPLAY Function module to display ALV report.

Steps to create ALV Report with Structure .

Step1: Declare Internal table for MARA table.
Step2: Print Select-Options.
Step3: Get data from database using select statements.
Step4: Call Function Module REUSE_ALV_GRID_DISPLAY and pass structure name, program name and itab name.
TABLES : MARA. "DECLARE TABLE FOR SELECT-OPTIONS
DATA : IT_MARA TYPE TABLE OF MARA. "DECLARE INTERNAL TABLE FOR MARA
DATA : WA_MARA TYPE MARA.
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR. "PRINT SELECT-OPTIONS FOR MATNR
START-OF-SELECTION.
SELECT * FROM MARA INTO TABLE IT_MARA
                   WHERE MATNR IN S_MATNR .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' "CALL FUNCTION MODULE TO DISPLAY ALV GRID
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID "SY-REPID IS A SYSTEM VARIABLE WHICH STORES CURRENT PROGRAM NAME
I_STRUCTURE_NAME = 'MARA'
TABLES
T_OUTTAB = IT_MARA. "PASS INTERNAL TABLE TO DISPLAY ALV FORMAT
The above report after modularization
The below one is full report after using modularization techniques.
*&---------------------------------------------------------------------*
*& Report  ZALV_STR
*&
*&---------------------------------------------------------------------*

REPORT  ZALV_STR.
TABLES: MARA.
DATA : IT_MARA TYPE TABLE OF MARA .


SELECT-OPTIONS : S_MATNR FOR MARA-MATNR.

START-OF-SELECTION .
  PERFORM GET_MARA_DATA . "Double click to create below form

END-OF-SELECTION .
  PERFORM DISP_MARA_ALV . "Double click to create below form

*&---------------------------------------------------------------------*
*&      Form  GET_MARA_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_MARA_DATA .
  SELECT * FROM MARA
      INTO TABLE IT_MARA 
      WHERE MATNR IN S_MATNR
       .
ENDFORM.                    " GET__MARA_DATA
*&---------------------------------------------------------------------*
*&      Form  DISP_MARA_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DISP_MARA_ALV .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM = SY-REPID
      I_STRUCTURE_NAME   = 'MARA'
    TABLES
      T_OUTTAB           = IT_MARA.

ENDFORM.                    " DISP_MARA_ALV

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 

Friday, 27 June 2014

Creating Class Interface in SAP Classes

Creating Class Interface in SAP Classes

+ -
As per SAP Standard documentation all the standard interfaces in SAP starts with IF_ and all the custom interfaces starts with ZIF_ , in the below example we will be learning how to create a use interfaces in SAP.
All the custom classes is SAP starts with ZCL_ and all the custom interfaces will start with ZIF_, based on the provided name (at the time of creation), SAP will automatically determine and creates (interface or class).
Go to SE24, provide name as ZIF_SAPN_MATERIAL_EXAMPL, create.
Creating interfaces in SAP Classes
Provide description, save, save it in a local object.
Creating interfaces in SAP Classes
Go to methods tab, add method name as GET_MATERIAL_DETAILS-INSTANCE, click on parameters button and add below parameters.
Creating interfaces in SAP Classes
Save, Go back to methods and add one more method GET_MATERIAL_DESCRIPTIONS.
Creating interfaces in SAP Classes
Click on parameters and provide parameters as below.
Creating interfaces in SAP Classes
Save and activate.
We have created an interface with two methods (which dosen`t have implementation).
No Go to SE24 and create a class ZCL_SAPN_CLASS_EX
Creating interfaces in SAP Classes
Provide description, save it in a local object.
Creating interfaces in SAP Classes
Go to interfaces tab and add interface name asCreating interfaces in SAP ClassesZIF_SAPN_MATERIAL_EXAMPLE, enter
Creating interfaces in SAP Classes
Now go to methods tab, you can see all the methods in the interface are automatically copied.
Creating interfaces in SAP Classes
Save, double click on each method and create your own implementation.
Double click on ZIF_SAPN_MATERIAL_EXAMPLE~GET_MATERIAL_DETAILS, and add below code.
    SELECT SINGLE * FROM MARA
      INTO EX_MARA
      WHERE MATNR = IM_MATNR.
Double click on ZIF_SAPN_MATERIAL_EXAMPLE~GET_MATERIAL_DESCRIPTIONS, add below code
    SELECT * FROM MAKT INTO EX_MAKT
      WHERE MATNR = IM_MATNR
       AND SPRAS = 'E'. "English description only
    ENDSELECT.
Save and activate the class.

Using class in program

Create a SE38 program and follow the steps below. The interface method will be clalled by using INTERFACENAME~METHODNAME.
REPORT ZSAPN_CLASS_INTERFACE.
DATA : LO_CLASS TYPE REF TO ZCL_SAPN_CLASS_EX. "declare class

DATA : WA_MARA TYPE MARA. "mara decleration
DATA : WA_MAKT TYPE MAKT. "makt decleration

PARAMETERS P_MATNR TYPE MARA-MATNR.

CREATE OBJECT LO_CLASS. "create object for the class

START-OF-SELECTION.
  CALL METHOD LO_CLASS->ZIF_SAPN_MATERIAL_EXAMPLE~GET_MATERIAL_DETAILS
    EXPORTING
      IM_MATNR = P_MATNR
    IMPORTING
      EX_MARA  = WA_MARA.
  CALL METHOD LO_CLASS->ZIF_SAPN_MATERIAL_EXAMPLE~GET_MATERIAL_DESCRIPTIONS
    EXPORTING
      IM_MATNR = P_MATNR
    IMPORTING
      EX_MAKT  = WA_MAKT.
  WRITE :/ 'Material Details - ' COLOR 5, WA_MARA-MATNR, WA_MARA-MTART, WA_MARA-MBRSH, WA_MARA-MATKL.
  WRITE :/ 'Material Descriptions - 'COLOR 6, WA_MAKT-MATNR, WA_MAKT-MAKTX, WA_MAKT-SPRAS.

Wednesday, 25 June 2014

Select with Joins in SAP ABAP

Select with Joins in SAP ABAP

+ -
SELECT WITH JOINS statement is used to read data simultaneously from multiple database tables .
As per performance standards, SELECT WITH JOINS for more than 3 tables is not advisable, as it puts heavy load on database
Syntax :

 SELECT T1~FIELD1
        T1~FIELD2
        T2~FIELD1
        T2~FIELD2
        INTO TABLE <ITAB>
 FROM T1 INNER JOIN T2 ON ( T1~FIELD1 = T2~FIELD )
 WHERE T1~FIELD = <SOME VALUE> .

** Here T1 and T2 are database tables, FIELD1 and FIELD2 are fields in respective tables

Example of using SELECT JOINS in SAP ABAP

**DATA DECLERATIONS
TYPES: BEGIN OF T_MARA,
  MATNR LIKE MARA-MATNR,  "FIELD1 FROM MARA TABLE
  MTART TYPE MARA-MTART,  "FIELD2 FROM MARA TABLE
  MAKTX TYPE MAKT-MAKTX,  "FIELD1 FROM MAKT TABLE
  SPRAS TYPE MAKT-SPRAS,  "FIELD2 FROM MAKT TABLE
END OF T_MARA.

DATA: IT_MARA TYPE  TABLE OF T_MARA .
DATA : WA_MARA TYPE T_MARA.
SELECT MARA~MATNR
       MARA~MTART
       MAKT~MAKTX
       MAKT~SPRAS
  INTO  TABLE IT_MARA
  FROM MARA INNER JOIN MAKT ON ( MARA~MATNR = MAKT~MATNR )
  UP TO 50 ROWS.


LOOP AT IT_MARA INTO WA_MARA.
  WRITE : / WA_MARA-MATNR, WA_MARA-MTART, WA_MARA-MAKTX, WA_MARA-SPRAS .
ENDLOOP.

Creating Domain and Data Element

Creating Domain and Data Element

+ -

Creating a Domain in SAP

Go to SE11 T-code, select domain radio button, provide a name (ZSAPN_DOMAIN) and create.
Create domain in SAP
Provide short description, no of characters and save (Ctrl S ).
 Domain in SAP
Select local object ( non transportable object ).
How to create domain in SAP
Activate.
 Create dataelement
Domain is created.

Creating data element in SAP

Go to SE11, select data type radio button, provide a name (ZSAPN_DATAELEMENT) and create.
 Create dataelement
A popup will open, select data element radio button
Creating dataelement
Enter short description and domain name (ZSAPN_DOMAIN) and select field label tab.
dataelement in SAP
Select field label tab and maintain field labels.
SAP dataelement

Creating Table in SAP

Creating Table in SAP

+ -
A table can be created in two ways one is top to bottom approach and another one is bottom to top approach.
1.Top to Bottom : In this approach, first table fields are defined and later domain and data element are defined.
2.Bottom to Top : In this approach, first domain and data element are defined and later table will be created .
In this example we are going to learn creating a SAP transparent table using top to bottom approach ( I suggest simplest way ).
Go to SE11 T-code, provide table name to be created ZSTUDENT_TABLE and create.
Creating a table in SAP
Provide short description, delivery class (A), Display Maintenance Allowed and select fields tab.
Creating a table in SAP
Select Fields tab, add a field STUDENT_NO, data element as ZSTUDENT_NO and check Key and Initial Value check boxes.
A table must contain at least one key field, without a key field we can not create a table.
Creating a table in SAP
Double click on data element ZSTUDENT_NO (Not yet created), a pop up will open click yes and one more information message will come press enter.
Now a pop up will come asking to create date element, click yes.
Creating a table in SAP
Provide short description, domain and label
Creating a table in SAP
Creating a table in SAP
Save, double click on domain name ZSTUDENT_NO, click on yes.
Provide short description, data type, no. characters, save and activate.
Creating a table in SAP
Similarly create remaining fields with data elements and domains as below
Creating a table in SAP
Once all fields are created click on technical settings button.
Creating a table in SAP
Provide data class and size category, save and activate.
Creating a table in SAP
You will get a warning message just click on No, table is created.
Now add entries to table.
Add entries to SAP custom table
Adding entries to SAP custom table

Tuesday, 24 June 2014

What is SAP and why SAP ?

What is SAP and why SAP ?

+ -
SAP Software is a ERP( Enterprise Resource Planing) solution, through which large and medium scale companies can manage their business.SAP Software is produced by a German based company SAP.
SAP Company: SAP Company founded in 1972 in Germany by five former employes of IBM and they released standard versions called R1 and R2 in early days, and they released 3-tier architecture R3 in 1990`s which was very successful.
In 2000 SAP released ECC (Enterprise Core Component), latest version in market is ECC 6.0 and they are adding additions to this in the form of enhancement packs.
Why SAP?
Through SAP software a company can plan their business in different aspects like Supply Chain Solutions, Material Management, Sales and Distribution, Finance controlling, Human Resource planing, etc.
The total SAP Software is built using ABAP Programing Language, which is a standard programing language developed by SAP it self, we call ABAP as 4th Generation Programing Language (ABAP/4) 
Some of Modules in SAP are :
  • SAP FI module: FI stands for Financial Accounting.
  • SAP CO module: CO stands for Controlling.
  • SAP CRM module: CRM stands for Customer Relationship Management.
  • SAP CS module: CS stands for Customer Service.
  • SAP EC module: EC stands for Enterprise Controlling.
  • SAP EHS module: EHS stands for Environment, Health and Safety.
  • SAP FM module: FM stands for Fleet Management.
  • SAP FSCM module: FSCM stands for Financial Supply Chain Management.
  • SAP HR module: HR stands for Human Resources.
  • SAP IM module: IM stands for Investment Management.
  • SAP MM module: MM stands for Materials Management .
  • SAP PLM module: PLM stands for Product Life Cycle Management.
  • SAP PM module: PM stands for Plant Maintenance.
  • SAP PP module: PP stands for Production Planning.
  • SAP Product Costing: Product Costing deals with Plan Costing Actual Costing of Finish products.
  • SAP PS module: PS stands for Project Systems.
  • SAP QM module: QM stands for Quality Management.
  • SAP RE module: RE stands for Real Estate.
  • SAP SD module: SD stands for Sales and Distribution.
  • SAP SM module: SM stands for Service Management.
  • SAP TR module: TR stands for Treasury.
  • SAP WM module: WM stands for Warehouse Management.
  • SAP LO module: LO stands for Logistics General.
  • SAP ABAP module: ABAP stands for Advanced Business Application Programming.
  • SAP Basis module: Basis also known as Basis Admin is typically the administration of SAP.
  • SAP BI module: BI stands for Business Intelligence.
  • SAP BPC module: BPC stands for Business Planning and Consolidation.
  • SAP BODI module: BODI stands for Business Objects Data Integrator.
  • SAP EP module: EP stands for Enterprise Portal.
  • SAP GRC module: GRC stands for Group Risk Compliance.
  • SAP MDM module: MDM stands for Master Data Management.
  • SAP Netweaver module: Netweaver provides technical foundation for SAP applications.
  • SAP Security module: Security ensures security of enterprise operations.
  • SAP Solution Manager module: Solution Manager facilitates technical support for distributed systems.
  • SAP XI module: SAP Exchange Infrastructure (SAP XI) enables you to implement cross-system processes on services.
  • SAP PI module: SAP Process Integration (SAP PI) is enterprise application integration (EAI)software.