Heading alv

Can any one pls tell me that how can i make the heading in a report with time and date to be displayed at the top with heading using alv.

refer this code....
use events top of page or top of list whatever u want.....n put required fields....
REPORT  ZALV1.
******************TABLE DECLARATION***********************************
TABLES : VBAP.                    " tables declaration
*****************TYPE POOLS*******************************************
TYPE-POOLS : SLIS.                " slis type pool
*****************INTERNAL TABLE DECLARATION***************************
DATA : BEGIN OF IT_VBAP OCCURS 0,
" internal table for sales document item
      VBELN LIKE VBAP-VBELN,      " sales document
      POSNR LIKE VBAP-POSNR,      " document item
      ERNAM LIKE VBAP-ERNAM,
      " name of the person who created the object
      ERDAT LIKE VBAP-ERDAT,      " date on which the record was created
      MATNR LIKE VBAP-MATNR.      " material number
DATA : END OF IT_VBAP.
DATA : BEGIN OF IT_MARA OCCURS 0, " general material data
       MATNR LIKE MARA-MATNR,     " material number
       ERNAM LIKE MARA-ERNAM,
       " name of the person who created the object
       MATKL LIKE MARA-MATKL,     " material group
       MEINS LIKE MARA-MEINS,     " base unit of measure
       PSTAT LIKE MARA-PSTAT.     " maintainence status
DATA : END OF IT_MARA.
******************VARIABLE
DECLARATION**********************************
DATA : REPID LIKE SY-REPID.       " program name
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
" field catalog table for vbap
       WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA : IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,
" field catalog table for mara
       WA_FIELDCAT1 TYPE SLIS_FIELDCAT_ALV.
DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: GT_XEVENTS TYPE SLIS_T_EVENT.
DATA: GT_YEVENTS TYPE SLIS_T_EVENT.            " events table
DATA : XS_EVENT  TYPE SLIS_ALV_EVENT.          " events type
DATA : GT_PRINT TYPE SLIS_PRINT_ALV.           " print table
*******************MULTIPLE SELECT INPUT
PARAMETERS**********************
SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.
" multiple selection for sales document
******************INITIALIZATION**************************************
INITIALIZATION.
  REPID = SY-REPID.
*******************START OF
SELECTION************************************
START-OF-SELECTION.
  PERFORM POP_VBAP.
  " populating the table with document item data
  PERFORM POP_MARA.
  " populating the table with general material data
  PERFORM FIELD_CAT.
  " mapping the fields for the field catalog
  PERFORM EVENTS.                      " using the events
  PERFORM BLOCK_LIST.
  " displaying the data in blocked list
*&      Form  field_cat
      text
-->  p1        text
<--  p2        text
FORM FIELD_CAT .
  WA_FIELDCAT-FIELDNAME = 'VBELN'.
  WA_FIELDCAT-TABNAME = 'IT_VBAP'.
  WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.
  WA_FIELDCAT-COL_POS = 1.
  WA_FIELDCAT-OUTPUTLEN = 10.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'POSNR'.
  WA_FIELDCAT-TABNAME = 'IT_VBAP'.
  WA_FIELDCAT-SELTEXT_L = 'DOC ITEM'.
  WA_FIELDCAT-COL_POS = 2.
  WA_FIELDCAT-OUTPUTLEN = 6.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ERNAM'.
  WA_FIELDCAT-TABNAME = 'IT_VBAP'.
  WA_FIELDCAT-SELTEXT_L = 'NAME'.
  WA_FIELDCAT-COL_POS = 3.
  WA_FIELDCAT-OUTPUTLEN = 12.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'ERDAT'.
  WA_FIELDCAT-TABNAME = 'IT_VBAP'.
  WA_FIELDCAT-SELTEXT_L = 'DATE'.
  WA_FIELDCAT-COL_POS = 4.
  WA_FIELDCAT-OUTPUTLEN = 8.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME = 'MATNR'.
  WA_FIELDCAT-TABNAME = 'IT_VBAP'.
  WA_FIELDCAT-SELTEXT_L = 'MAT NO'.
  WA_FIELDCAT-COL_POS = 5.
  WA_FIELDCAT-OUTPUTLEN = 18.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT1-FIELDNAME = 'MATNR'.
  WA_FIELDCAT1-TABNAME = 'IT_MARA'.
  WA_FIELDCAT1-SELTEXT_L = 'MAT NO'.
  WA_FIELDCAT1-COL_POS = 1.
  WA_FIELDCAT1-OUTPUTLEN = 18.
  APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
  CLEAR WA_FIELDCAT1.
  WA_FIELDCAT1-FIELDNAME = 'ERNAM'.
  WA_FIELDCAT1-TABNAME = 'IT_MARA'.
  WA_FIELDCAT1-SELTEXT_L = 'NAME'.
  WA_FIELDCAT1-COL_POS = 2.
  WA_FIELDCAT1-OUTPUTLEN = 12.
  APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
  CLEAR WA_FIELDCAT1.
  WA_FIELDCAT1-FIELDNAME = 'MATKL'.
  WA_FIELDCAT1-TABNAME = 'IT_MARA'.
  WA_FIELDCAT1-SELTEXT_L = 'MAT DESC'.
  WA_FIELDCAT1-COL_POS = 3.
  WA_FIELDCAT1-OUTPUTLEN = 9.
  APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
  CLEAR WA_FIELDCAT1.
  WA_FIELDCAT1-FIELDNAME = 'MEINS'.
  WA_FIELDCAT1-TABNAME = 'IT_MARA'.
  WA_FIELDCAT1-SELTEXT_L = 'UNITS'.
  WA_FIELDCAT1-COL_POS = 4.
  WA_FIELDCAT1-OUTPUTLEN = 3.
  APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
  CLEAR WA_FIELDCAT1.
  WA_FIELDCAT1-FIELDNAME = 'PSTAT'.
  WA_FIELDCAT1-TABNAME = 'IT_MARA'.
  WA_FIELDCAT1-SELTEXT_L = 'STATUS'.
  WA_FIELDCAT1-COL_POS = 5.
  WA_FIELDCAT1-OUTPUTLEN = 15.
  APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
  CLEAR WA_FIELDCAT1.
ENDFORM.                    " field_cat
*&      Form  events
      text
-->  p1        text
<--  p2        text
FORM EVENTS .
  CLEAR XS_EVENT.
  XS_EVENT-NAME = SLIS_EV_END_OF_PAGE.
  XS_EVENT-FORM = 'XEND_OF_PAGE'.
  APPEND XS_EVENT TO GT_XEVENTS.
  CLEAR XS_EVENT.
  XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
  XS_EVENT-FORM = 'XTOP_OF_PAGE'.
  APPEND XS_EVENT TO GT_XEVENTS.
  CLEAR XS_EVENT.
  XS_EVENT-NAME = SLIS_EV_TOP_OF_LIST.
  XS_EVENT-FORM = 'XTOP_OF_LIST'.
  APPEND XS_EVENT TO GT_XEVENTS.
  CLEAR XS_EVENT.
  XS_EVENT-NAME = SLIS_EV_END_OF_LIST.
  XS_EVENT-FORM = 'XEND_OF_LIST'.
  APPEND XS_EVENT TO GT_XEVENTS.
  CLEAR XS_EVENT.
  CLEAR XS_EVENT.
  XS_EVENT-NAME = SLIS_EV_END_OF_PAGE.
  XS_EVENT-FORM = 'YEND_OF_PAGE'.
  APPEND XS_EVENT TO GT_YEVENTS.
  CLEAR XS_EVENT.
  XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
  XS_EVENT-FORM = 'YTOP_OF_PAGE'.
  APPEND XS_EVENT TO GT_YEVENTS.
  CLEAR XS_EVENT.
  XS_EVENT-NAME = SLIS_EV_TOP_OF_LIST.
  XS_EVENT-FORM = 'YTOP_OF_LIST'.
  APPEND XS_EVENT TO GT_YEVENTS.
  CLEAR XS_EVENT.
  XS_EVENT-NAME = SLIS_EV_END_OF_LIST.
  XS_EVENT-FORM = 'YEND_OF_LIST'.
  APPEND XS_EVENT TO GT_YEVENTS.
ENDFORM.                    " events
*&      Form  XTOP_OF_PAGE
      text
FORM XTOP_OF_PAGE.
BREAK-POINT.
  WRITE: / 'X_TOP_OF_PAGE'.
ENDFORM.                    "XTOP_OF_PAGE
      FORM XTOP_OF_LIST                                             *
FORM XTOP_OF_LIST.
BREAK-POINT.
  WRITE: / 'X_TOP_OF_LIST'.
ENDFORM.                    "XTOP_OF_LIST
      FORM XEND_OF_PAGE                                             *
FORM XEND_OF_PAGE.
BREAK-POINT.
  WRITE: / 'X_END_OF_PAGE'.
ENDFORM.                    "XEND_OF_PAGE
      FORM XEND_OF_LIST                                             *
FORM XEND_OF_LIST.
BREAK-POINT.
  WRITE: / 'X_END_OF_LIST'.
ENDFORM.                    "XEND_OF_LIST
FORM YTOP_OF_PAGE.
BREAK-POINT.
  WRITE: / 'Y_TOP_OF_PAGE'.
ENDFORM.                    "YTOP_OF_PAGE
      FORM YTOP_OF_LIST                                             *
FORM YTOP_OF_LIST.
BREAK-POINT.
  WRITE: / 'Y_TOP_OF_LIST'.
ENDFORM.                    "YTOP_OF_LIST
      FORM YEND_OF_PAGE                                             *
FORM YEND_OF_PAGE.
BREAK-POINT.
  WRITE: / 'Y_END_OF_PAGE'.
ENDFORM.                    "YEND_OF_PAGE
      FORM YEND_OF_LIST                                             *
FORM YEND_OF_LIST.
BREAK-POINT.
  WRITE: / 'Y_END_OF_LIST'.
ENDFORM.                    "YEND_OF_LIST
*&      Form  POP_VBAP
      text
-->  p1        text
<--  p2        text
FORM POP_VBAP .
  SELECT VBELN
           POSNR
           ERNAM
           ERDAT
           MATNR
           FROM VBAP
           INTO CORRESPONDING FIELDS OF TABLE IT_VBAP
           WHERE VBELN IN S_VBELN.
ENDFORM.                    " POP_VBAP
*&      Form  POP_MARA
      text
-->  p1        text
<--  p2        text
FORM POP_MARA .
  LOOP AT IT_VBAP.
    SELECT SINGLE MATNR
                  ERNAM
                  MATKL
                  MEINS
                  PSTAT
                  FROM MARA
                  INTO CORRESPONDING FIELDS OF IT_MARA
                  WHERE MATNR = IT_VBAP-MATNR.
    APPEND IT_MARA.
  ENDLOOP.
ENDFORM.                    " POP_MARA
*&      Form  BLOCK_LIST
      text
-->  p1        text
<--  p2        text
FORM BLOCK_LIST .
  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
    EXPORTING
      I_CALLBACK_PROGRAM       = REPID
      I_CALLBACK_PF_STATUS_SET = ' '
      I_CALLBACK_USER_COMMAND  = 'user_command'.
  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
        IS_LAYOUT                        = WA_LAYOUT
        IT_FIELDCAT                      = IT_FIELDCAT
        I_TABNAME                        = 'IT_VBAP'
        IT_EVENTS                        = GT_XEVENTS
  IT_SORT                          =
  I_TEXT                           = ' '
      TABLES
        T_OUTTAB                         = IT_VBAP
EXCEPTIONS
  PROGRAM_ERROR                    = 1
  MAXIMUM_OF_APPENDS_REACHED       = 2
  OTHERS                           = 3
  IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
    EXPORTING
      IS_LAYOUT                        = WA_LAYOUT
      IT_FIELDCAT                      = IT_FIELDCAT1
      I_TABNAME                        = 'IT_MARA'
      IT_EVENTS                        = GT_YEVENTS
    IT_SORT                          =
    I_TEXT                           = ' '
    TABLES
      T_OUTTAB                         = IT_MARA
  EXCEPTIONS
    PROGRAM_ERROR                    = 1
    MAXIMUM_OF_APPENDS_REACHED       = 2
    OTHERS                           = 3
  IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
   EXPORTING
  I_INTERFACE_CHECK             = ' '
     IS_PRINT                      = GT_PRINT
  I_SCREEN_START_COLUMN         = 0
  I_SCREEN_START_LINE           = 0
  I_SCREEN_END_COLUMN           = 0
  I_SCREEN_END_LINE             = 0
IMPORTING
  E_EXIT_CAUSED_BY_CALLER       =
  ES_EXIT_CAUSED_BY_USER        =
EXCEPTIONS
  PROGRAM_ERROR                 = 1
  OTHERS                        = 2
  IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    " BLOCK_LIST
Regards
Vasu

Similar Messages

  • Regarding header alv

    Hi all,
    Below i m giving my ALV program actually my requirement is i have to get "program name","date" ,"time" , and "pageno".
    in the header of the report.
    so i tried but i m not getting can anyonehelp me or change my code as per my requirement.
    <code>
    *ztest_alv_raj.
    *& Report  ZSAMPLEALV3                                                 *
    REPORT  ZSAMPLEALV3
            MESSAGE-ID Z00.
    TABLE DECLARATIONS
    TABLES : EKKO.        "Purchasing Document Header
    CONSTANTS DECLARATIONS
    CONSTANTS : C_EBELN(5) VALUE 'EBELN'.
    DATA DECLARATIONS
    DATA : V_FLAG,        "For Select Status
           V_DATA(50).    "To Store Data
    TYPE DECLARATIONS FOR ALV                                            *
    TYPE-POOLS : SLIS.
    *Type Declarations for Field Catalog for Basic List
    DATA : I_FLDCAT_HEAD  TYPE SLIS_T_FIELDCAT_ALV,
           WA_FLDCAT_HEAD TYPE SLIS_FIELDCAT_ALV.
    *Type Declarations for Field Catalog for Secondary List
    DATA : I_FLDCAT_ITEM  TYPE SLIS_T_FIELDCAT_ALV,
           WA_FLDCAT_ITEM TYPE SLIS_FIELDCAT_ALV.
    *Type Declarations for Displaying Images on Basic Grid
    DATA : I_COMMENT  TYPE SLIS_T_LISTHEADER,
           WA_COMMENT TYPE SLIS_LISTHEADER.
    *Type Declarations for Displaying Images on Secondary Grid
    DATA : I_COMMENT_SEC  TYPE SLIS_T_LISTHEADER,
           WA_COMMENT_SEC TYPE SLIS_LISTHEADER.
    *Type Declarations for ALV Events for Basic Grid
    DATA : I_EVENTS TYPE SLIS_T_EVENT,
           WA_EVENT LIKE LINE OF I_EVENTS.
    *Type Declarations for ALV Events for Secondary Grid
    DATA : I_EVENTS_SEC TYPE SLIS_T_EVENT,
           WA_EVENT_SEC LIKE LINE OF I_EVENTS.
    *Type Declarations for Layout Design
    DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
    *Type Declarations for Linking the fields
    DATA : WA_KEYINFO TYPE SLIS_KEYINFO_ALV.
    Type declarations for coloring field
    DATA : wa_color type LVC_S_SCOL.
    DATA: IT_COLOR TYPE TABLE OF LVC_S_SCOL.
    INTERNAL TABLE DECLARATIONS
    *--Internal Table for Basic List
    DATA : BEGIN OF IT_FINAL_BAS OCCURS 0,
             EBELN LIKE EKKO-EBELN,        "Purchasing Document Number
             BUKRS LIKE EKKO-BUKRS,        "Company Code
             AEDAT LIKE EKKO-AEDAT,        "Date on which the record was created
             EKORG LIKE EKKO-EKORG,        "Purchasing Organization
             EKGRP LIKE EKKO-EKGRP,        "Purchasing group
             COLOR(3) ,                     "For applying color
           END OF IT_FINAL_BAS.
    *--Internal Table for Secondary List
    DATA : BEGIN OF IT_FINAL_SEC OCCURS 0,
             EBELN LIKE EKPO-EBELN,        "Purchasing Document Number
             MATNR LIKE EKPO-MATNR,        "Material Number
             TXZ01 LIKE EKPO-TXZ01,        "Material Desc
             WERKS LIKE EKPO-WERKS,        "Plant
             LGORT LIKE EKPO-LGORT,        "Location
             MATKL LIKE EKPO-MATKL,        "Material Group
             MENGE LIKE EKPO-MENGE,        "Purchase order quantity
             MEINS LIKE EKPO-MEINS,        "Order unit
             NETPR LIKE EKPO-NETPR,        "Net price in purchasing document (in document currency)
             NETWR LIKE EKPO-NETWR,        "Net order value in PO currency
             DUMMY LIKE ICON-ID,           "For placing Icon
             COLOR(3) ,                     "For applying color
           END OF IT_FINAL_SEC.
    *--Internal Table for Secondary List with selected records
    DATA : BEGIN OF I_ITEM_DISPLAY OCCURS 0,
             EBELN LIKE EKPO-EBELN,        "Purchasing Document Number
             MATNR LIKE EKPO-MATNR,        "Material Number
             TXZ01 LIKE EKPO-TXZ01,        "Material Desc
             WERKS LIKE EKPO-WERKS,        "Plant
             LGORT LIKE EKPO-LGORT,        "Location
             MATKL LIKE EKPO-MATKL,        "Material Group
             MENGE LIKE EKPO-MENGE,        "Purchase order quantity
             MEINS LIKE EKPO-MEINS,        "Order unit
             NETPR LIKE EKPO-NETPR,        "Net price in purchasing document (in document currency)
             NETWR LIKE EKPO-NETWR,        "Net order value in PO currency
             DUMMY LIKE ICON-ID,           "For placing Icon
             COLOR(3) ,                     "For applying color
           END OF I_ITEM_DISPLAY.
    SELECTION SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-H01.
    SELECT-OPTIONS: S_EBELN FOR EKKO-EBELN.
    SELECTION-SCREEN END OF BLOCK B1.
    Event : INITIALIZATION
    INITIALIZATION.
      MOVE 'Developed by'(001) TO V_DATA.
    Event : AT SELECTION SCREEN
    AT SELECTION-SCREEN.
      PERFORM VALIDATE_EBELN.
    Event : START-OF-SELECTION
    START-OF-SELECTION.
    *--Getting the Data
      PERFORM GET_DATA.
    *--Generating the Field catalog for basic and secondary grid
      PERFORM GET_FLDCAT.
    *--Generating the Layout for basic and secondary grid
      PERFORM GET_LAYOUT.
    *--Generating the key infor to link Basic grid to Secondary grid
      PERFORM GET_KEYINFO.
    *--Generating the Events for Basic and Secondary Grid
      PERFORM GET_EVENTS.
    Event : END-OF-SELECTION
    END-OF-SELECTION.
      IF V_FLAG EQ 'X'.
    *--Generating Basic List
        PERFORM DISP_BASIC_LIST.
      ELSE.
        MESSAGE I010 WITH 'No Data Found To Display'(002).
      ENDIF.
         SUB-ROUTINES
    *&      Form  VALIDATE_EBELN
          Validating the PO No
    FORM VALIDATE_EBELN .
      SELECT EBELN
      UP TO 1 ROWS
      INTO (EKKO-EBELN)
      FROM EKKO
      WHERE EBELN IN S_EBELN.
      ENDSELECT.
      IF SY-SUBRC NE 0.
        MESSAGE I010 WITH 'Invalid PO No'(003) S_EBELN-LOW 'To'(004) S_EBELN-HIGH.
      ENDIF.
    ENDFORM.                    " VALIDATE_EBELN
    *&      Form  GET_DATA
          Getting Basic List and Secondary List Data
    FORM GET_DATA .
    *--Getting Basic List Data
      SELECT EBELN                  "PO No
             BUKRS                  "Company Code
             AEDAT                  "Creation Date
             EKORG                  "Purch Org
             EKGRP                  "Purch Group
       INTO TABLE IT_FINAL_BAS
       FROM EKKO
       WHERE EBELN IN S_EBELN.
    *--Getting Secondary List Data
      IF SY-SUBRC EQ 0.
        SELECT EBELN                "PO No
               MATNR                "Material No
               TXZ01                "Material Desc
               WERKS                "Plant
               LGORT                "Location
               MATKL                "Material Group
               MENGE                "PO Qty
               MEINS                "Unit
               NETPR                "Net Price
               NETWR                "Net Value
          INTO TABLE IT_FINAL_SEC
          FROM EKPO
          WHERE EBELN IN S_EBELN.
      ENDIF.
      IF SY-SUBRC EQ 0.
        V_FLAG = 'X'.
      ELSE.
        V_FLAG = SPACE.
      ENDIF.
    ENDFORM.                    " GET_DATA
    *&      Form  GET_FLDCAT
          Generating the Field Catalog
    FORM GET_FLDCAT .
    *--Generating the Field Catalog for Basic List
      WA_FLDCAT_HEAD-FIELDNAME = 'EBELN'(005).
      WA_FLDCAT_HEAD-COL_POS = '1'.
      WA_FLDCAT_HEAD-JUST = 'C'.
      WA_FLDCAT_HEAD-OUTPUTLEN = '12'.
      WA_FLDCAT_HEAD-SELTEXT_M  = 'PO Number'(006).
      WA_FLDCAT_HEAD-DDICTXT = 'M'.
      WA_FLDCAT_HEAD-REF_TABNAME = ' '.
      WA_FLDCAT_HEAD-HOTSPOT = 'X'.
      APPEND WA_FLDCAT_HEAD TO I_FLDCAT_HEAD.
      CLEAR WA_FLDCAT_HEAD .
      WA_FLDCAT_HEAD-FIELDNAME = 'BUKRS'(007).
      WA_FLDCAT_HEAD-COL_POS = '2'.
      WA_FLDCAT_HEAD-OUTPUTLEN = '12'.
      WA_FLDCAT_HEAD-SELTEXT_M = 'Company Code'(008).
      WA_FLDCAT_HEAD-DDICTXT = 'M'.
      APPEND WA_FLDCAT_HEAD TO I_FLDCAT_HEAD.
      WA_FLDCAT_HEAD-FIELDNAME = 'AEDAT'(009).
      WA_FLDCAT_HEAD-COL_POS = '3'.
      WA_FLDCAT_HEAD-OUTPUTLEN = '10'.
      WA_FLDCAT_HEAD-SELTEXT_M = 'PO Date'(010).
      WA_FLDCAT_HEAD-DDICTXT = 'M'.
      APPEND WA_FLDCAT_HEAD TO I_FLDCAT_HEAD.
      WA_FLDCAT_HEAD-FIELDNAME = 'EKORG'(011).
      WA_FLDCAT_HEAD-COL_POS = '4'.
      WA_FLDCAT_HEAD-OUTPUTLEN = '6'.
      WA_FLDCAT_HEAD-SELTEXT_M = 'PO Org'(012).
      WA_FLDCAT_HEAD-DDICTXT = 'M'.
      APPEND WA_FLDCAT_HEAD TO I_FLDCAT_HEAD.
      WA_FLDCAT_HEAD-FIELDNAME = 'EKGRP'(013).
      WA_FLDCAT_HEAD-COL_POS = '5'.
      WA_FLDCAT_HEAD-OUTPUTLEN = '8'.
      WA_FLDCAT_HEAD-SELTEXT_M = 'PO Group'(014).
      WA_FLDCAT_HEAD-DDICTXT = 'M'.
      WA_FLDCAT_HEAD-DO_SUM = 'X'.
      APPEND WA_FLDCAT_HEAD TO I_FLDCAT_HEAD.
    *--Generating the Field Catalog for secondary List
      WA_FLDCAT_ITEM-FIELDNAME = 'EBELN'(005).
      WA_FLDCAT_ITEM-COL_POS = '1'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '12'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'PO Number'(006).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
    WA_FLDCAT_ITEM-REF_TABNAME = ' '.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'MATNR'(015).
      WA_FLDCAT_ITEM-COL_POS = '2'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '18'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Item Number'(016).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
    WA_FLDCAT_ITEM-REF_TABNAME = ' '.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'TXZ01'(017).
      WA_FLDCAT_ITEM-COL_POS = '3'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '40'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Item Desc'(018).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'WERKS'(019).
      WA_FLDCAT_ITEM-COL_POS = '4'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '6'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Plant'(020).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'LGORT'(021).
      WA_FLDCAT_ITEM-COL_POS = '5'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '9'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Location'(022).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'MATKL'(023).
      WA_FLDCAT_ITEM-COL_POS = '6'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '10'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Mat Group'(024).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'MENGE'(025).
      WA_FLDCAT_ITEM-COL_POS = '7'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '17'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'PO Qty'(026).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'MEINS'(027).
      WA_FLDCAT_ITEM-COL_POS = '8'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '3'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Unit'(028).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'NETPR'(029).
      WA_FLDCAT_ITEM-COL_POS = '9'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '14'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Net Price'(037).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'NETWR'(030).
      WA_FLDCAT_ITEM-COL_POS = '10'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '16'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Net Value'(031).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'DUMMY'(038).
      WA_FLDCAT_ITEM-COL_POS = '11'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '3'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Status'(039).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      WA_FLDCAT_ITEM-ICON = 'X'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
    ENDFORM.                    " GET_FLDCAT
    *&      Form  DISP_BASIC_LIST
          Generating the Basic List
    FORM DISP_BASIC_LIST .
    **--Applying the color to record in Basic List
        SORT IT_FINAL_BAS BY BUKRS.
         LOOP AT IT_FINAL_BAS.
            IF IT_FINAL_BAS-BUKRS LE '1000'.
              IT_FINAL_BAS-COLOR = 'C21'.
            ELSEIF IT_FINAL_BAS-BUKRS GT '1000' AND IT_FINAL_BAS-BUKRS LE '2000'.
              IT_FINAL_BAS-COLOR = 'C41'.
            ELSEIF IT_FINAL_BAS-BUKRS GT '2000' AND IT_FINAL_BAS-BUKRS LE '3000'.
              IT_FINAL_BAS-COLOR = 'C71'.
            ELSEIF IT_FINAL_BAS-BUKRS GT '3000'.
              IT_FINAL_BAS-COLOR = 'C51'.
            ELSE.
              IT_FINAL_BAS-COLOR = 'C61'.
            ENDIF.
              MODIFY IT_FINAL_BAS INDEX SY-TABIX.
           ENDLOOP.
    *--Generating the Grid output
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
        I_INTERFACE_CHECK                 = ' '
        I_BYPASSING_BUFFER                = ' '
        I_BUFFER_ACTIVE                   = ' '
          I_CALLBACK_PROGRAM                = 'ZTEST_ALV_RAJ'
        I_CALLBACK_PF_STATUS_SET          = ' '
        I_CALLBACK_USER_COMMAND           = ' '
        I_CALLBACK_TOP_OF_PAGE            = ' '
        I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
        I_CALLBACK_HTML_END_OF_LIST       = ' '
        I_STRUCTURE_NAME                  =
          I_BACKGROUND_ID                   = 'PLAIN_BACKGROUND'
        I_GRID_TITLE                      =
        I_GRID_SETTINGS                   =
          IS_LAYOUT                         = WA_LAYOUT
          IT_FIELDCAT                       = I_FLDCAT_HEAD
        IT_EXCLUDING                      =
        IT_SPECIAL_GROUPS                 =
        IT_SORT                           =
        IT_FILTER                         =
        IS_SEL_HIDE                       =
        I_DEFAULT                         = 'X'
        I_SAVE                            = ' '
        IS_VARIANT                        =
          IT_EVENTS                         = I_EVENTS
        IT_EVENT_EXIT                     =
        IS_PRINT                          =
        IS_REPREP_ID                      =
        I_SCREEN_START_COLUMN             = 0
        I_SCREEN_START_LINE               = 0
        I_SCREEN_END_COLUMN               = 0
        I_SCREEN_END_LINE                 = 0
        IT_ALV_GRAPHICS                   =
        IT_HYPERLINK                      =
        IT_ADD_FIELDCAT                   =
        IT_EXCEPT_QINFO                   =
        I_HTML_HEIGHT_TOP                 =
        I_HTML_HEIGHT_END                 =
      IMPORTING
        E_EXIT_CAUSED_BY_CALLER           =
        ES_EXIT_CAUSED_BY_USER            =
        TABLES
          T_OUTTAB                          = IT_FINAL_BAS
       EXCEPTIONS
         PROGRAM_ERROR                     = 1
         OTHERS                            = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " DISP_BASIC_LIST
    *&      Form  GET_EVENTS
          Getting the ALV Events
    FORM GET_EVENTS .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = I_EVENTS
       EXCEPTIONS
         LIST_TYPE_WRONG       = 1
         OTHERS                = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *--Calling the User Defined sub-routines for ALV Events
      IF NOT I_EVENTS[] IS INITIAL.
        READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
        WA_EVENT-FORM = 'GENERATE_USERCOMMAND_HEADER'.
        MODIFY I_EVENTS FROM WA_EVENT INDEX SY-TABIX.
        READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
        WA_EVENT-FORM = 'FRM_TOP_OF_PAGE'.
        MODIFY I_EVENTS FROM WA_EVENT INDEX SY-TABIX.
        READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'END_OF_LIST'.
        WA_EVENT-FORM = 'GENERATE_USERCOMMAND_FOOTER'.
        MODIFY I_EVENTS FROM WA_EVENT INDEX SY-TABIX.
        READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
        WA_EVENT-FORM = 'GENERATE_USERCOMMAND3'.
        MODIFY I_EVENTS FROM WA_EVENT INDEX SY-TABIX.
      ENDIF.
    ENDFORM.                    " GET_EVENTS
    *&      Form  GENERATE_USERCOMMAND_HEADER
          Displaying Header-Text and Logo on Grid
    FORM GENERATE_USERCOMMAND_HEADER.
      CLEAR I_COMMENT[].
      WA_COMMENT-TYP = 'H'.
      WA_COMMENT-INFO = 'General Purchase Order Info'(032).
      APPEND WA_COMMENT TO I_COMMENT.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY = I_COMMENT
          I_LOGO             = 'ENJOYSAP_LOGO'.
        I_END_OF_LIST_GRID       = 'X'.
    ENDFORM.                    " GENERATE_USERCOMMAND
    FORM FRM_TOP_OF_PAGE.
      write :/ text-005 intensified on.
      write :/ text-006 , sy-sysid,14 sy-mandt.
      write :/ text-007 , sy-uname.
      write :/ text-008 , sy-datum.
      write :/ text-009 , sy-uzeit.
      skip.
    ENDFORM.
    *&      Form  GENERATE_USERCOMMAND_FOOTER
          Displaying Footer-Text
    FORM GENERATE_USERCOMMAND_FOOTER .
      CLEAR I_COMMENT[].
      WA_COMMENT-TYP = 'S'.
      WA_COMMENT-KEY = V_DATA.
      WA_COMMENT-INFO = 'Rajesh'(033).
      APPEND WA_COMMENT TO I_COMMENT.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = I_COMMENT
         I_LOGO                   = ''
          I_END_OF_LIST_GRID       = 'X'.
    ENDFORM.                    " GENERATE_USERCOMMAND_FOOTER
    *&      Form  GENERATE_USERCOMMAND3
          Getting the F-Code and Calling Secondary List
    -->  P_UCOMM        LIKE SY-UCOMM
    -->  P_SELFIELD     TYPE SLIS_SELFIELD
    FORM GENERATE_USERCOMMAND3 USING P_UCOMM LIKE SY-UCOMM
                                     P_SELFIELD TYPE SLIS_SELFIELD.
       CASE P_UCOMM.
        WHEN '&IC1'.   "DOUBLE CLICK Func-Code
          READ TABLE IT_FINAL_BAS INDEX P_SELFIELD-TABINDEX.
          REFRESH I_ITEM_DISPLAY.
    *--Applying the color to record in Secondary List
          LOOP AT IT_FINAL_SEC WHERE EBELN = IT_FINAL_BAS-EBELN.
            IF IT_FINAL_SEC-NETPR EQ 0.
              IT_FINAL_SEC-DUMMY = '@0A@'.
              IT_FINAL_SEC-COLOR = 'C61'.
            ELSEIF IT_FINAL_SEC-NETPR GT 0 AND IT_FINAL_SEC-NETPR LE 200.
              IT_FINAL_SEC-DUMMY = '@09@'.
              IT_FINAL_SEC-COLOR = 'C41'.
            ELSEIF IT_FINAL_SEC-NETPR GT 200 AND IT_FINAL_SEC-NETPR LE 1000.
              IT_FINAL_SEC-DUMMY = '@08@'.
              IT_FINAL_SEC-COLOR = 'C71'.
            ELSEIF IT_FINAL_SEC-NETPR GT 1000.
              IT_FINAL_SEC-DUMMY = '@6P@'.
              IT_FINAL_SEC-COLOR = 'C51'.
            ENDIF.
              MODIFY IT_FINAL_SEC INDEX SY-TABIX.
            MOVE-CORRESPONDING IT_FINAL_SEC TO I_ITEM_DISPLAY.
            APPEND I_ITEM_DISPLAY.
            CLEAR I_ITEM_DISPLAY.
          ENDLOOP.
    *--Getting the ALV Events of Secondary List
          PERFORM GET_EVENTS_SEC.
    *--Generating the ALV Secondary Grid output
          CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
            I_INTERFACE_CHECK              = ' '
            I_BYPASSING_BUFFER             =
            I_BUFFER_ACTIVE                = ' '
              I_CALLBACK_PROGRAM             = 'ZTEST_ALV_RAJ'
            I_CALLBACK_PF_STATUS_SET       = ' '
            I_CALLBACK_USER_COMMAND        = ' '
            I_STRUCTURE_NAME               =
              I_BACKGROUND_ID                = 'PLAIN_BACKGROUND'
              IS_LAYOUT                      = WA_LAYOUT
              IT_FIELDCAT                    = I_FLDCAT_ITEM
            IT_EXCLUDING                   =
            IT_SPECIAL_GROUPS              =
            IT_SORT                        =
            IT_FILTER                      =
            IS_SEL_HIDE                    =
            I_DEFAULT                      = 'X'
            I_SAVE                         = ' '
            IS_VARIANT                     =
              IT_EVENTS                      = I_EVENTS_SEC
            IT_EVENT_EXIT                  =
            IS_PRINT                       =
            IS_REPREP_ID                   =
            I_SCREEN_START_COLUMN          = 0
            I_SCREEN_START_LINE            = 0
            I_SCREEN_END_COLUMN            = 0
            I_SCREEN_END_LINE              = 0
          IMPORTING
            E_EXIT_CAUSED_BY_CALLER        =
            ES_EXIT_CAUSED_BY_USER         =
            TABLES
              T_OUTTAB                       = I_ITEM_DISPLAY
            EXCEPTIONS
              PROGRAM_ERROR                  = 1
              OTHERS                         = 2
          IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          ENDIF.
      ENDCASE.
    ENDFORM.                    " GENERATE_USERCOMMAND3
    *&      Form  GET_LAYOUT
          Generating the Layout
    FORM GET_LAYOUT .
      WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.           "OPTIMIZING FIELD WIDTH
      WA_LAYOUT-ZEBRA = 'X'.                       "PUTTING ZEBRA COLORS
      WA_LAYOUT-INFO_FIELDNAME = 'COLOR'(034).     "APPLYING COLORS TO ROWS
    ENDFORM.                    " GET_LAYOUT
    *&      Form  GET_KEYINFO
          Getting Key info
    FORM GET_KEYINFO .
    *--Linking the Basic List to Secondary List
      WA_KEYINFO-HEADER01 = C_EBELN.
      WA_KEYINFO-ITEM01 = C_EBELN.
    ENDFORM.                    " GET_KEYINFO
    *&      Form  GET_EVENTS_SEC
          Getting Secondary List Events
    FORM GET_EVENTS_SEC .
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
      EXPORTING
        I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = I_EVENTS_SEC
       EXCEPTIONS
         LIST_TYPE_WRONG       = 1
         OTHERS                = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *--Calling user-defined sub-routines for Secondary List
      IF NOT I_EVENTS_SEC[] IS INITIAL.
        READ TABLE I_EVENTS_SEC INTO WA_EVENT_SEC WITH KEY NAME = 'TOP_OF_PAGE'.
        WA_EVENT_SEC-FORM = 'GENERATE_USERCOMMAND_H_SEC'.
        MODIFY I_EVENTS_SEC FROM WA_EVENT_SEC INDEX SY-TABIX.
        READ TABLE I_EVENTS_SEC INTO WA_EVENT_SEC WITH KEY NAME = 'END_OF_LIST'.
        WA_EVENT_SEC-FORM = 'GENERATE_USERCOMMAND_F_SEC'.
        MODIFY I_EVENTS_SEC FROM WA_EVENT_SEC INDEX SY-TABIX.
      ENDIF.
    ENDFORM.                    " GET_EVENTS_SEC
    *&      Form  GENERATE_USERCOMMAND_H_SEC
       Displaying Header-Text and Logo on Grid For Secondary List
    FORM GENERATE_USERCOMMAND_H_SEC.
      CLEAR I_COMMENT_SEC[].
      WA_COMMENT_SEC-TYP = 'H'.
      WA_COMMENT_SEC-INFO = 'Purchase Order Info'(035).
      APPEND WA_COMMENT_SEC TO I_COMMENT_SEC.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY = I_COMMENT_SEC
          I_LOGO             = 'ENJOYSAP_LOGO'.
        I_END_OF_LIST_GRID       = 'X'.
    ENDFORM.                    " GENERATE_USERCOMMAND_H_SEC
    *&      Form  GENERATE_USERCOMMAND_F_SEC
          Displaying Footer-Text for Secondary List
    FORM GENERATE_USERCOMMAND_F_SEC.
      CLEAR I_COMMENT_SEC[].
      WA_COMMENT_SEC-TYP = 'S'.
      WA_COMMENT_SEC-KEY = V_DATA.
      WA_COMMENT_SEC-INFO = 'rajesh'(036).
      APPEND WA_COMMENT_SEC TO I_COMMENT_SEC.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = I_COMMENT_SEC
         I_LOGO                   = ''
          I_END_OF_LIST_GRID       = 'X'.
    ENDFORM.                    " GENERATE_USERCOMMAND_F_SEC
    </code>
    frnds the bolded code i need to get in the header. hlp me how to do that.
    Thanks,
    satish

    Hi,
    Please find below code..
    *Global Constants
    CONSTANTS:c_top_of_page(15) TYPE c VALUE 'SUB_TOP_OF_PAGE', "#EC NOTEXT
              c_chk(1)          TYPE c VALUE 'X',         "check
              c_save(1)         TYPE c VALUE 'A',         "save
              c_final(15)       TYPE c VALUE 't_sd_pa_dtl',
              c_header          TYPE char1  VALUE 'H',    "Header in ALV
              c_item            TYPE char1  VALUE 'S'.    "Item in ALV
    *&  Internal tables Declaration
    DATA:
        For ALV events
          t_events TYPE slis_t_event,
        For ALV top of page
          t_alv_top_of_page TYPE slis_t_listheader,
        For Field catalog
          t_catlog TYPE slis_t_fieldcat_alv.
    *&      Form  sub_create_events
          For defining ALV Events
    FORM sub_create_events .
    Local variable for event
      DATA: w_event TYPE slis_alv_event. "Events
    Events for the ALV
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 1   "2
        IMPORTING
          et_events   = t_events.
    Sort by Name
      SORT t_events BY name.
      CLEAR w_event.
      READ TABLE t_events INTO w_event WITH KEY name = slis_ev_top_of_page
                                                       BINARY SEARCH.
      IF sy-subrc = 0.
        MOVE c_top_of_page TO w_event-form.
        MODIFY t_events FROM w_event TRANSPORTING form WHERE
         name = slis_ev_top_of_page.
      ENDIF.
      CLEAR : w_event.
    ENDFORM.                    " sub_create_events
    *&      Form  SUB_CREATE_COMMENTRY_WRITE
          text
    FORM sub_bulid_header .
      DATA: l_system TYPE char10 .          " System id
      DATA: l_r_line TYPE slis_listheader,  " Hold list header
            l_date TYPE char10,             " Date
            l_time TYPE char10,             " Time
            l_title(120) TYPE c.            " Title
    Title  Display
      l_r_line-typ = c_header.               " header
      l_title = sy-title.
      l_r_line-info = l_title.
      APPEND l_r_line TO t_alv_top_of_page.
      CLEAR l_r_line.
    Run date Display
      l_r_line-typ  = c_item.                " Item
      WRITE: sy-datum  TO l_date MM/DD/YYYY.
      l_r_line-key = 'Run Date :'(021).
      l_r_line-info = l_date.
      APPEND l_r_line TO t_alv_top_of_page.
      CLEAR: l_r_line,
             l_date.
    Run time Display
      l_r_line-typ  = c_item.                " Item
      WRITE: sy-uzeit  TO l_time USING EDIT MASK '__:__:__'.
      l_r_line-key  = 'Run Time :'(022).
      l_r_line-info =  l_time.
      APPEND l_r_line TO t_alv_top_of_page.
      CLEAR: l_r_line,
             l_time.
    User Display
      l_r_line-typ  = c_item.                " Item
      l_r_line-key = 'User :'(023).
      l_r_line-info = sy-uname.
      APPEND l_r_line TO t_alv_top_of_page.
      CLEAR: l_r_line,
             l_date.
      CONCATENATE  sy-sysid '-' sy-mandt INTO l_system .
    System ID Display
      l_r_line-typ  = c_item.                " Item
      l_r_line-key = 'System :'(024) .
      l_r_line-info = l_system.
      APPEND l_r_line TO t_alv_top_of_page.
      CLEAR: l_r_line.
    ENDFORM.                    " sub_bulid_header
          FORM sub_top_of_page
          For defining Top Of Page
    FORM sub_top_of_page.                                       "#EC CALLED
    This funcation module will diplay the top of the page
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = t_alv_top_of_page.
      REFRESH:t_alv_top_of_page.
    ENDFORM.                    "sub_a_top_of_page
    Please Reward if my answer is helpful
    Thanks,
    Murali

  • Header Alv list/Grid

    Hi Guys,
    I need to display data in a ALV list and grid in the following format.
    GI----
    Ā Ā Ā  Delivery-
    Ā Ā  DocumentĀ Ā  Year PostDate Item Plnt Stlc CoCdĀ Ā Ā  Document ItemĀ 
    Could anyone please tell me how do i get the Header Part (GI and Delivery that spans the below columns). GI will be header for the Document Year PostDate Item..etc.....and Delivery should be the header for document and Item columns in alv.
    Please give me an idea......
    San

    hi San,
      You can write the GI----------------Delivery part in top of page
    chk this
    REPORT ztest.
    TABLES : mara.
    TYPE-POOLS: slis.
    DATA : w_repid LIKE sy-repid.
    w_repid = sy-repid.
    DATA : BEGIN OF it_mara OCCURS 0,
           matnr LIKE mara-matnr,
           END OF it_mara.
    *layout
    DATA: wa_layout           TYPE slis_layout_alv.
    *field catalog
    DATA: it_fieldcat_wrt_off TYPE slis_t_fieldcat_alv,
          wa_fieldcat_wrt_off TYPE slis_fieldcat_alv.
    START-OF-SELECTION.
      SELECT matnr FROM mara INTO CORRESPONDING FIELDS OF TABLE it_mara.
    END-OF-SELECTION.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
         i_program_name               = w_repid
       i_internal_tabname           = 'IT_MARA'
    *     i_structure_name             = 'IT_MARA'
    *   I_CLIENT_NEVER_DISPLAY       = 'X'
       i_inclname                   = w_repid
    *   I_BYPASSING_BUFFER           =
    *   I_BUFFER_ACTIVE              =
        CHANGING
          ct_fieldcat                  = it_fieldcat_wrt_off[]
       EXCEPTIONS
         inconsistent_interface       = 1
         program_error                = 2
         OTHERS                       = 3
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program     = w_repid
          i_callback_top_of_page = 'TOP-OF-PAGE'
          is_layout              = wa_layout
          it_fieldcat            = it_fieldcat_wrt_off
        TABLES
          t_outtab               = it_mara
        EXCEPTIONS
          program_error          = 1
          OTHERS                 = 2.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Form  TOP-OF-PAGE                                                 *
    * ALV Report Header                                                 *
    FORM top-of-page.
    *ALV Header declarations
      DATA: t_header TYPE slis_t_listheader,
            wa_header TYPE slis_listheader,
            t_line LIKE wa_header-info,
            ld_lines TYPE i,
            ld_linesc(10) TYPE c.
    * Title
      wa_header-typ  = 'H'.
      wa_header-info = ' REPORT'.
      APPEND wa_header TO t_header.
      CLEAR wa_header.
    * Date
    *  wa_header-typ  = 'S'.
    *  wa_header-key = 'Date: '.
    *  CONCATENATE  sy-datum+6(2) '.'
    *               sy-datum+4(2) '.'
    *               sy-datum(4) INTO wa_header-info.   "todays date
    *  APPEND wa_header TO t_header.
    *  CLEAR: wa_header.
      wa_header-typ  = 'S'.
      wa_header-key = '--'.
      CONCATENATE  '-----------GI--------------------------------------'
                   'delivery---------------------------------'
                   INTO wa_header-info.
      APPEND wa_header TO t_header.
      CLEAR: wa_header.
    * Total No. of Records Selected
    *  describe table it_ekko lines ld_lines.
    *  ld_linesc = ld_lines.
    *  concatenate 'Total No. of Records Selected: ' ld_linesc
    *                    into t_line separated by space.
    *  wa_header-typ  = 'A'.
    *  wa_header-info = t_line.
    *  append wa_header to t_header.
    *  clear: wa_header, t_line.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = t_header.
    *            i_logo             = 'Z_LOGO'.
    ENDFORM.                    "top-of-page

  • Colour for the List heading ALV

    Hi,
    I want to know as to how we can change the colour for the heading when we are using the report display with REUSE_ALV_LIST_DISPLAY.
    The default colour is blue, how to change it to the other colour??
    Thanks,
    Sirisha Matta.

    http://www.sap-img.com/abap/line-color-in-alv-example.htm
    Regards,
    Amit

  • FIELD VALUE IN ALV HEADER

    Hi friends,
    I make one header alv ok I want and take one variable count in my program so I want to display its value in ALV HEADER
    Total Target Qty:
    Total EMP. EfficiencyĀ 
    Total Machine Effi.Ā 
    I take may header like this and pass thre text here.ok Now I want to display value of this three.
    Total Trget Qty: 2.23 like that.
    CLEAR st_line.
    Ā  st_line-typ = 'S'.
    Ā  CONCATENATE 'Total Target Qty: 'Ā  countĀ Ā Ā Ā  ' ' INTO st_line-info.
    Ā  APPEND st_line TO t_list_top_of_page.
    So I took like this in header count is my variable in which I take value.
    So how can we pass the value in ALV Header please tell me.
    its urgent so.
    Thnaks in Advance.
    Prashant.

    HI DHWANI,
    *& Report  ZPP_RE_EMP_DETAILS
    *& This Report is used to check the Employee Performance And Used Machine Quantity
    *& Rqueirement By Santhosh
    *& Developed By Prashant On Date 01.02.2008
    *&  Created By: Prashant Brahmbhatt
    *&  Creation Date: 20080201
    *&  Module: PP (Production & Plannig)
    *&  Changed By         Changed Date        Reason
    REPORT  zpp_re_emp_details.
    TABLES:zpplan.
    TYPE-POOLS:slis.
    DATA:BEGIN OF itab OCCURS 0,
         zdate LIKE zpplan-zdate,
         werks LIKE zpplan-werks,
         mname LIKE zpplan-mname,
         shftin LIKE zpplan-shftin,
         iserh LIKE zpplan-iserh,
         quaty LIKE zpplan-quaty,
         plan_qty LIKE zpplan-plan_qty,
         act_prod LIKE zpplan-act_prod,
         temp TYPE c,
         tar_qty(10) TYPE c,
         ach_qty(10) TYPE c,
         mch_eff(10) TYPE c,
        a(10) TYPE c,
         END OF itab.
    DATA:BEGIN OF temp OCCURS 0,
         zdate LIKE zpplan-zdate,
         werks LIKE zpplan-werks,
         mname LIKE zpplan-mname,
         shftin LIKE zpplan-shftin,
         iserh LIKE zpplan-iserh,
         quaty LIKE zpplan-quaty,
         plan_qty LIKE zpplan-plan_qty,
         act_prod LIKE zpplan-act_prod,
         temp TYPE c,
         tar_qty(10) TYPE c,
         ach_qty(10) TYPE c,
         mch_eff(10) TYPE c,
        a(10) TYPE c,
         END OF temp.
    DATA:BEGIN OF itab_t OCCURS 0,
         zdate LIKE zpplan-zdate,
         werks LIKE zpplan-werks,
         mname LIKE zpplan-mname,
         shftin LIKE zpplan-shftin,
         iserh LIKE zpplan-iserh,
         quaty LIKE zpplan-quaty,
         plan_qty LIKE zpplan-plan_qty,
         act_prod LIKE zpplan-act_prod,
         temp TYPE c,
         tar_qty(10) TYPE c,
         ach_qty(10) TYPE c,
         mch_eff(10) TYPE c,
        a(10) TYPE c,
         END OF itab_t.
    DATA:BEGIN OF itab1 OCCURS 0,
         zdate LIKE zpplan-zdate,
         werks LIKE zpplan-werks,
         mname LIKE zpplan-mname,
         shftin LIKE zpplan-shftin,
         act_prod LIKE zpplan-act_prod,
         quaty LIKE zpplan-quaty,
         planned LIKE zpplan-planned,
         iserh LIKE zpplan-iserh,
         temp TYPE c,
         tar_qty TYPE p DECIMALS 2,
         ach_qty TYPE p DECIMALS 2,
         mch_eff TYPE p DECIMALS 2,
         END OF itab1.
    DATA: wa LIKE  itab1.
    DATA:BEGIN OF itab2 OCCURS 0,
         zdate LIKE zpplan-zdate,
         werks LIKE zpplan-werks,
         mname LIKE zpplan-mname,
         shftin LIKE zpplan-shftin,
         act_prod LIKE zpplan-act_prod,
         quaty LIKE zpplan-quaty,
         planned LIKE zpplan-planned,
         iserh LIKE zpplan-iserh,
         temp TYPE c,
         tar_qty(10) TYPE p DECIMALS 2,
         ach_qty(10) TYPE p DECIMALS 2,
         mch_eff(10) TYPE p DECIMALS 2,
         count(10) TYPE c,
         END OF itab2.
    DATA: a(10) TYPE c,
          b(10) TYPE c,
          count(10) TYPE c,
          count1(10) TYPE c.
         c(2) TYPE p DECIMALS 2.
    DATA:t_fcat TYPE slis_t_fieldcat_alv,
         t_events TYPE slis_t_event,
         t_list_top_of_page TYPE slis_t_listheader,
         t_list_end_of_page TYPE slis_t_listheader.
    CONSTANTS:c_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
    CONSTANTS:c_formname_end_of_page TYPE slis_formname VALUE 'END_OF_PAGE'.
    DATA: st_line TYPE slis_listheader.
                  SELECTION-SCREEN
    SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    *PARAMETERS:shftin LIKE zpplan-shftin.
    SELECT-OPTIONS:date FOR zpplan-zdate,
                   shftin FOR zpplan-shftin,
                   werks FOR zpplan-werks.
    SELECTION-SCREEN:END OF BLOCK blk1.
                   ALV CALL
    INITIALIZATION.
      PERFORM build_fieldcatalog USING t_fcat .
      PERFORM event_call.
      PERFORM head_built USING t_events.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM display_alv.
    *&      Form  build_fieldcatalog
          text
         -->P_T_FCAT  text
    FORM build_fieldcatalog  USING temp_fcat TYPE slis_t_fieldcat_alv.
      DATA:w_fcat TYPE slis_fieldcat_alv.
      w_fcat-tabname = 'ITAB2'.
      w_fcat-fieldname = 'MNAME'.
      w_fcat-seltext_m = 'Machine Name'.
      APPEND w_fcat TO temp_fcat.
      CLEAR w_fcat.
      w_fcat-tabname = 'ITAB2'.
      w_fcat-fieldname = 'SHFTIN'.
      w_fcat-seltext_m = 'Emp No'.
      APPEND w_fcat TO temp_fcat.
      CLEAR w_fcat.
      w_fcat-tabname = 'ITAB2'.
      w_fcat-fieldname = 'ZDATE'.
      w_fcat-seltext_m = 'Pos Date'.
      APPEND w_fcat TO temp_fcat.
      CLEAR w_fcat.
    w_fcat-tabname = 'ITAB2'.
    w_fcat-fieldname = 'QUATY'.
    w_fcat-seltext_m = 'Quantity'.
    APPEND w_fcat TO temp_fcat.
    CLEAR w_fcat.
      w_fcat-tabname = 'ITAB2'.
      w_fcat-fieldname = 'ACT_PROD'.
      w_fcat-seltext_m = 'Actual Quantity'.
      APPEND w_fcat TO temp_fcat.
      CLEAR w_fcat.
      w_fcat-tabname = 'ITAB2'.
      w_fcat-fieldname = 'ISERH'.
      w_fcat-seltext_m = 'Down Time'.
      APPEND w_fcat TO temp_fcat.
      CLEAR w_fcat.
      w_fcat-tabname = 'ITAB2'.
      w_fcat-fieldname = 'TAR_QTY'.
      w_fcat-seltext_m = 'Target Qty.'.
      APPEND w_fcat TO temp_fcat.
      CLEAR w_fcat.
      w_fcat-tabname = 'ITAB2'.
      w_fcat-fieldname = 'ACH_QTY'.
      w_fcat-seltext_m = 'EMP Effec.'.
      APPEND w_fcat TO temp_fcat.
      CLEAR w_fcat.
      w_fcat-tabname = 'ITAB2'.
      w_fcat-fieldname = 'MCH_EFF'.
      w_fcat-seltext_m = 'Machine Effec.'.
      APPEND w_fcat TO temp_fcat.
      CLEAR w_fcat.
    w_fcat-tabname = 'ITAB2'.
    w_fcat-fieldname = 'COUNT'.
    w_fcat-seltext_m = 'Machine Effec.'.
    APPEND w_fcat TO temp_fcat.
    CLEAR w_fcat.
    ENDFORM.                    " build_fieldcatalog
    *&      Form  event_call
          text
    -->  p1        text
    <--  p2        text
    FORM event_call .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         i_list_type           = 0
       IMPORTING
         et_events             = t_events
      EXCEPTIONS
        LIST_TYPE_WRONG       = 1
        OTHERS                = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " event_call
    *&      Form  data_retrieval
          text
    -->  p1        text
    <--  p2        text
    FORM data_retrieval .
      IF shftin <> ''.
        SELECT zdate werks mname shftin  INTO CORRESPONDING FIELDS OF TABLE
         temp FROM zpplan
         WHERE shftin IN shftin
         AND zdate IN date
         AND werks IN werks.
      ELSE.
        SELECT zdate werks mname INTO CORRESPONDING FIELDS OF TABLE
           temp FROM zpplan
           WHERE  zdate IN date
           AND werks IN werks.
      ENDIF.
      SORT temp BY mname zdate shftin.
      DELETE ADJACENT DUPLICATES FROM temp.
      SORT temp BY mname shftin zdate.
      DELETE ADJACENT DUPLICATES FROM temp.
      APPEND temp.
      LOOP AT temp.
        SELECT zdate werks mname shftin act_prod quaty iserh   FROM zpplan INTO CORRESPONDING FIELDS OF TABLE itab_t
        WHERE mname = temp-mname
        AND zdate = temp-zdate
        AND werks = temp-werks.
        LOOP AT itab_t.
          MOVE-CORRESPONDING itab_t TO itab.
          APPEND itab.
        ENDLOOP.
      ENDLOOP.
      *******************************************8
    SELECT zdate werks mname shftin act_prod quaty iserh   FROM zpplan INTO CORRESPONDING FIELDS OF TABLE itab
         FOR ALL ENTRIES IN temp
         WHERE zdate = temp-zdate AND
               werks = temp-werks
              AND mname = temp-mname.
    SELECT zdate werks mname shftin act_prod quaty iserh   FROM zpplan INTO CORRESPONDING FIELDS OF TABLE itab
       WHERE zdate IN date AND
             werks IN werks AND
    shftin = shftin.
      SORT itab BY mname zdate.
    DELETE ADJACENT DUPLICATES FROM itab.
      LOOP AT itab.
        MOVE-CORRESPONDING itab TO itab1.
        COLLECT itab1.
      ENDLOOP.
      LOOP AT itab1.
        itab1-tar_qty = itab1-tar_qty + ( itab1-quaty / 3 ).
        IF  ( itab1-tar_qty NE 0 ).
          itab1-ach_qty = ( itab1-ach_qty +  itab1-act_prod / itab1-tar_qty ) * 100.
        ELSE.
          itab1-ach_qty = 0 * 100.
        ENDIF.
        itab1-mch_eff = ( ( 8 - itab1-iserh ) / 8 ) * 100.
        MODIFY itab1 TRANSPORTING tar_qty ach_qty mch_eff.
      ENDLOOP.
      LOOP AT itab1.
        READ TABLE itab1 INDEX 1 INTO wa.
        IF itab1-mname = wa-mname.
          itab1-zdate = wa-zdate.
          itab2-shftin = itab1-shftin.
          itab2-mname = itab1-mname.
          itab2-zdate = itab1-zdate.
               itab2-quaty = itab2-quaty + itab1-quaty.     
               itab2-act_prod = itab2-act_prod + itab1-act_prod.
               itab2-iserh = itab2-iserh + itab1-iserh.
               itab2-tar_qty = itab2-tar_qty + itab1-tar_qty.
               itab2-ach_qty = itab2-ach_qty + itab1-ach_qty.
          itab2-mch_eff = itab2-mch_eff + itab1-mch_eff.
        ELSE.
               APPEND itab2.
               CLEAR itab2.
               MOVE-CORRESPONDING itab1 TO wa.
          itab2-shftin = itab1-shftin.
          itab2-mname = itab1-mname.
          itab2-zdate = itab1-zdate.
          itab2-quaty = itab2-quaty + itab1-quaty.     
          itab2-act_prod = itab2-act_prod + itab1-act_prod.
               itab2-iserh = itab2-iserh + itab1-iserh.
               itab2-tar_qty = itab2-tar_qty + itab1-tar_qty.
               itab2-ach_qty = itab2-ach_qty + itab1-ach_qty.
               itab2-mch_eff = itab2-mch_eff + itab1-mch_eff.
        ENDIF.
      ENDLOOP.
      APPEND itab2.
      LOOP AT itab2.
        IF  ( itab2-tar_qty NE 0 ).
          itab2-ach_qty = ( itab2-ach_qty +  itab2-act_prod / itab2-tar_qty(10) ) * 100.
        ELSE.
          itab2-ach_qty = 0 * 100.
        ENDIF.
        itab2-mch_eff = ( ( 8 - itab2-iserh ) / 8 ) * 100.
        MODIFY itab2 TRANSPORTING tar_qty ach_qty mch_eff.
      ENDLOOP.
    APPEND itab2.
      LOOP AT itab2.
       count = sy-tfill.
        a = a + itab2-tar_qty.
        b = b + itab2-ach_qty.
      ENDLOOP.
      CLEAR itab2.
      itab2-tar_qty = a.
      itab2-ach_qty = b.
      APPEND itab2.
      CLEAR itab2.
      count = a / sy-tfill.
      count1 = b / sy-tfill.
      itab2-tar_qty = count.
      itab2-ach_qty = count1.
    itab2-tar_qty = count.
      APPEND itab2.
    ENDFORM.                    " data_retrieval
    *&      Form  head_built
          text
         -->P_T_EVE  text
    FORM head_built  USING    p_t_eve TYPE slis_t_event.
    count = a / sy-tfill.
      DATA: ls_event TYPE slis_alv_event.
      REFRESH t_list_top_of_page.
      READ TABLE p_t_eve WITH KEY name = slis_ev_top_of_page INTO ls_event.
      IF sy-subrc = 0.
        MOVE c_formname_top_of_page TO ls_event-form.
        MODIFY p_t_eve FROM ls_event   INDEX sy-tabix.
      ENDIF.
       CLEAR st_line.
        st_line-typ = 'S'.
        st_line-key = 'Total Target Qty: '.
        st_line-info = count.
        APPEND st_line TO t_list_top_of_page.
    CLEAR st_line.
    st_line-typ = 'S'.
    st_line-info = count.
    CONCATENATE 'Avg Target Qty.'  count  ' ' INTO st_line-info.
    APPEND st_line TO t_list_top_of_page.
      CLEAR st_line.
        st_line-typ = 'S'.
        st_line-key = 'Avg.EMP Efficiency: '.
        st_line-info = count1.
        APPEND st_line TO t_list_top_of_page.
      CLEAR st_line.
        st_line-typ = 'S'.
        st_line-key = 'Avg. Machine Efficincy: '.
       st_line-info = count.
        APPEND st_line TO t_list_top_of_page.
    REFRESH t_list_end_of_page.
    READ TABLE p_t_eve WITH KEY name =  slis_ev_end_of_list INTO ls_event.
    IF sy-subrc = 0.
       MOVE c_formname_end_of_page TO ls_event-form.
       MODIFY p_t_eve FROM ls_event INDEX sy-tabix.
    ENDIF.
    CLEAR st_line.
    st_line-typ = 'S'.
    CONCATENATE 'END OF PAGE' ' ' INTO st_line-info.
    APPEND st_line TO t_list_end_of_page.
    ENDFORM.                    " head_built
    *&      Form  top-of-page
          text
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = t_list_top_of_page
        I_LOGO                   =
        I_END_OF_LIST_GRID       =
        I_ALV_FORM               =
    ENDFORM.                    "top-of-page
    *&      Form  display_alv
          text
    -->  p1        text
    <--  p2        text
    FORM display_alv .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = 'ZPP_RE_EMP_DETAILS'
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
      I_CALLBACK_TOP_OF_PAGE            = ' '
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
       i_background_id                   = 'ALV_BACKGROUND'
       i_grid_title                      = 'EMP Information'
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
         it_fieldcat                       = t_fcat
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
         it_events                         = t_events
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = itab2
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " display_alv

  • FM for getting select-options for use in ALV header

    Hi All,
    Our customer wants the choosen selection options in the report header (ALV). I'm looking for a FM that gets all select-options and puts them inĀ  (end-user) readable form.
    Anyone experience with this? Or has created such functionality before?
    Any help would be appriciated,
    Kind regards from a cloude Holland,
    Bert Hokojoku

    Use the fm: PRINT_SELECTIONS
    you can also use this:
    Ā Ā Ā  CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
    Ā Ā Ā Ā Ā  EXPORTING
    Ā Ā Ā Ā Ā Ā Ā  CURR_REPORTĀ Ā Ā Ā  = sy-repid
    Ā Ā Ā Ā Ā  TABLES
    Ā Ā Ā Ā Ā Ā Ā  SELECTION_TABLE = IT_VARI_TAB
    Ā Ā Ā Ā Ā  EXCEPTIONS
    Ā Ā Ā Ā Ā Ā Ā  NOT_FOUNDĀ Ā Ā Ā Ā Ā  = 1
    Ā Ā Ā Ā Ā Ā Ā  NO_REPORTĀ Ā Ā Ā Ā Ā  = 2
    Ā Ā Ā Ā Ā Ā Ā  OTHERSĀ Ā Ā Ā Ā Ā Ā Ā Ā  = 3.
    Regards,
    ravi
    Message was edited by:
    Ā Ā Ā Ā Ā Ā Ā  Ravi Kanth Talagana

  • Display header along with  ALV

    Hi,
    i need to display a report using ALV in the following manner. im using reuse_alv_listdisplay and the display is fine . however, i need to add a header to the list and i need to display total for the currency fields. how can i do that. your help would be appreciated.
    Thanks,
    kranthi.
    ________some company header----
    alv report----
    display total for currency fields------
    i appreciate all of you for your quick response.
    i need to call a function module which uses couple of 'write' statements to create the header. is it possible to use that in this context.
    Thanks,
    Kranthi.
    Message was edited by: kranthi kumar

    *& Report  ZVENU_ALV                                                   *
    Program: ZZ_ALV_REPORT_STUB
    Author :
    Date   :
    Purpose: Report using ALV function
    Notes:
    1) Logos & wallpapers can be found in table BDS_CONN05
       with class = PICTURES
    2) Transaction OAER can be used to create PICTURES.
       Run transaction OAER with class name = PICTURES, Class type = OT,
       and Object key with whatever name you want to create.  In the
       next screen, right clicking on screen and import
                                 Revisions
    Name    :
    Date    :
    Comments:
    report zz_alv_report_stub
           no standard page heading
           line-size 200
           line-count 65
           message-id zz.
    Tables
    tables:
      ekpo,
      trdir.
    Global Types
    type-pools: slis.
    Global Internal Tables
    data:
      i_fieldcat_alv  type slis_t_fieldcat_alv,
      i_events        type slis_t_event,
      i_event_exit    type slis_t_event_exit,
      i_list_comments type slis_t_listheader,
      i_excluding     type slis_t_extab.
    Display data
    data: begin of i_data occurs 0,
            name    like trdir-name,
            clas    like trdir-clas,
            subc    like trdir-subc,
            cnam    like trdir-cnam,
            cdat    like trdir-cdat,
            myfield(1) type c,
          end of i_data.
    Global Variables
    data:
      w_variant          like disvariant,
      wx_variant         like disvariant,
      w_variant_save(1)  type c,
      w_exit(1)          type c,
      w_repid            like sy-repid,
      w_user_specific(1) type c,
      w_callback_ucomm   type slis_formname,
      w_print            type slis_print_alv,
      w_layout           type slis_layout_alv,
      w_html_top_of_page type  slis_formname,
      w_fieldcat_alv     like line of i_fieldcat_alv,
      w_excluding        like line of i_excluding,
      w_events           like line of i_events,
      w_event_exit       like line of i_event_exit,
      w_list_comments    like line of i_list_comments.
    Global Constants
    *constants:
    Selection Screen
    selection-screen begin of block blk_criteria with frame title text-f01.
    select-options:
      s_name for trdir-name.
    selection-screen end of block blk_criteria.
    selection-screen begin of block blk_params with frame title text-f02.
    parameters:
      p_vari like disvariant-variant.
    selection-screen skip 1.
    parameters:
      p_grid radiobutton group rb01 default 'X',
      p_html as checkbox.
    selection-screen skip 1.
    parameters:
      p_list radiobutton group rb01.
    selection-screen end of block blk_params.
    Initialization
    initialization.
      perform init_variant.
      perform variant_default using p_vari.
      clear: s_name[].
      s_name-sign   = 'I'.
      s_name-option = 'CP'.
      s_name-low    = 'Z*'.
      append s_name.
    At Selection Screen PBO
    at selection-screen output.
    At Selection Screen Value Request
    at selection-screen on value-request for p_vari.
      perform variant_f4 using p_vari.
    At Selection Screen
    at selection-screen.
      perform variant_fill.
    Start of Selection
    start-of-selection.
      perform get_data.
    end-of-selection.
      perform fieldcat_build.
      perform event_build.
      perform event_exit_build.
      perform exclude_build.
      perform print_build.
      perform layout_build.
      perform display_data.
    Top of Page
    top-of-page.
    Top of Page During Line Sel
    top-of-page during line-selection.
    At User Command
    at user-command.
    At Line Selection
    at line-selection.
    Macros
      define skip_1.
        write: /001 sy-vline,
                    at sy-linsz sy-vline.
      end-of-definition.
                                    Forms
    *&      Form  variant_f4
    form variant_f4 using p_variant.
      call function 'LVC_VARIANT_F4'
           exporting
                is_variant    = w_variant
                i_save        = w_variant_save
           importing
                e_exit        = w_exit
                es_variant    = wx_variant
           exceptions
                not_found     = 1
                program_error = 2
                others        = 3.
      if sy-subrc <> 0.
        message i000(zz) with text-g01.
      endif.
      if w_exit is initial.
        w_variant-variant = wx_variant-variant.
        p_variant         = wx_variant-variant.
      endif.
    endform.
    *&      Form  init_variant
    form init_variant.
      clear: w_variant.
      w_repid              = sy-repid.
      w_variant-report     = w_repid.
      w_variant-username   = sy-uname.
      w_variant_save       = 'A'. "All types
    endform.
    *&      Form  variant_default
    form variant_default using p_variant.
      wx_variant = w_variant.
      if not p_variant is initial.
        wx_variant-variant = p_variant.
      endif.
      call function 'LVC_VARIANT_DEFAULT_GET'
           exporting
                i_save        = w_variant_save
           changing
                cs_variant    = wx_variant
           exceptions
                wrong_input   = 1
                not_found     = 2
                program_error = 3
                others        = 4.
      case sy-subrc.
        when 0.
          p_variant = wx_variant-variant.
        when 2.
          clear: p_variant.
      endcase.
    endform.
    *&      Form  variant_fill
    form variant_fill.
      clear: w_variant.
      if p_vari is initial.
        w_variant-variant = 'STANDARD'.
        w_variant-report  = w_repid.
      else.
        w_variant-variant = p_vari.
        w_variant-report  = w_repid.
        call function 'LVC_VARIANT_EXISTENCE_CHECK'
             exporting
                  i_save     = w_variant_save
             changing
                  cs_variant = w_variant
             exceptions
                  others     = 01.
        if sy-subrc ne 0.
          message i000(zz) with text-g02.
        endif.
      endif.
    endform.
    *&      Form  fieldcat_build
    form fieldcat_build.
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
           exporting
                i_program_name     = w_repid
              i_structure_name   = 'TRDIR'
                i_internal_tabname = 'I_DATA'
                i_inclname         = w_repid
           changing
                ct_fieldcat        = i_fieldcat_alv.
    Modify displayed fields
      loop at i_fieldcat_alv into w_fieldcat_alv.
        case w_fieldcat_alv-fieldname.
          when 'NAME'.
            w_fieldcat_alv-hotspot   = 'X'.
          when 'MYFIELD'.
            w_fieldcat_alv-checkbox  = 'X'.
            w_fieldcat_alv-seltext_s = 'MyChkBox'.
          when others.
        endcase.
        modify i_fieldcat_alv from w_fieldcat_alv.
      endloop.
    endform.
    *&      Form  display_data
    form display_data.
      w_callback_ucomm   = 'CALLBACK_UCOMM'.
      case 'X'.
        when p_grid.
          if p_html = 'X'.
            w_html_top_of_page = 'HTML_TOP_OF_PAGE'.
          endif.
          call function 'REUSE_ALV_GRID_DISPLAY'
               exporting
                  i_background_id             = 'SIWB_WALLPAPER'
                    i_background_id             = 'SIWB_WALLPAPER'
                    i_callback_program          = w_repid
                    i_callback_html_top_of_page = w_html_top_of_page
                  i_structure_name            = 'TRDIR'
                    i_default                   = 'X'
                    i_save                      = 'A'
                    is_variant                  = w_variant
                    is_layout                   = w_layout
                    i_callback_user_command     = w_callback_ucomm
                    it_fieldcat                 = i_fieldcat_alv
                    it_events                   = i_events
                    it_event_exit               = i_event_exit
                    it_excluding                = i_excluding
                    is_print                    = w_print
                  i_screen_start_column       = 1
                  i_screen_start_line         = 1
                  i_screen_end_column         = 70
                  i_screen_end_line           = 30
               tables
                    t_outtab                    = i_data.
        when p_list.
          call function 'REUSE_ALV_LIST_DISPLAY'
               exporting
                   i_background_id         = 'ALV_BACKGROUND'
                    i_callback_program      = w_repid
                    i_default               = 'X'
                    i_save                  = 'A'
                    is_variant              = w_variant
                    is_layout               = w_layout
                    i_callback_user_command = w_callback_ucomm
                    it_fieldcat             = i_fieldcat_alv
                    it_events               = i_events
                    it_event_exit           = i_event_exit
                    is_print                = w_print
               tables
                    t_outtab                = i_data.
      endcase.
    endform.
          FORM user_command                                             *
    form callback_ucomm  using r_ucomm like sy-ucomm
                               rs_selfield type slis_selfield.
      message i000(zz) with r_ucomm.
      case r_ucomm.
        when '&IC1'.
          set parameter id 'RID' field rs_selfield-value.
          call transaction 'SE38'.
        when others.
      endcase.
    endform.
    *&      Form  get_data
    form get_data.
      select * up to 15 rows from trdir
             into corresponding fields of table i_data
             where name in s_name.
    endform.
          FORM ALV_TOP_OF_PAGE                                          *
    form alv_top_of_page.
      clear: i_list_comments[].
      w_list_comments-typ  = 'H'. "H=Header, S=Selection, A=Action
      w_list_comments-key  = ''.
      w_list_comments-info = 'Info 1'.
      append w_list_comments to i_list_comments.
      w_list_comments-typ  = 'A'. " H = Header, S = Selection, A = Action
      w_list_comments-key  = ''.
      w_list_comments-info = 'Begin of list'.
      append w_list_comments to i_list_comments.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                i_logo             = 'ENJOYSAP_LOGO'
                it_list_commentary = i_list_comments.
    endform.
    *&      Form  event_build
    form event_build.
      call function 'REUSE_ALV_EVENTS_GET'
           exporting
                i_list_type = 0
           importing
                et_events   = i_events.
      read table i_events
           with key name = slis_ev_top_of_page
           into w_events.
      if sy-subrc = 0.
        move 'ALV_TOP_OF_PAGE' to w_events-form.
        modify i_events from w_events index sy-tabix.
      endif.
      read table i_events
           with key name = slis_ev_end_of_list
           into w_events.
      if sy-subrc = 0.
        move 'ALV_END_OF_LIST' to w_events-form.
        modify i_events from w_events index sy-tabix.
      endif.
      read table i_events
           with key name = slis_ev_end_of_page
           into w_events.
      if sy-subrc = 0.
        move 'ALV_END_OF_PAGE' to w_events-form.
        modify i_events from w_events index sy-tabix.
      endif.
    endform.
          FORM alv_end_of_list                                          *
    form alv_end_of_list.
      clear: i_list_comments[].
      w_list_comments-typ = 'A'. "H = Header, S = Selection, A = Action
      w_list_comments-key = ''.
      w_list_comments-info = 'End of list'.
      append w_list_comments to i_list_comments.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = i_list_comments
                i_logo             = 'ZMYOBJECTKEY'
                i_end_of_list_grid = 'X'.
    endform.
          FORM alv_end_of_page                                          *
    form alv_end_of_page.
    endform.
    *&      Form  print_build
    form print_build.
      w_print-no_print_listinfos = 'X'.
    endform.
    *&      Form  layout_build
    form layout_build.
      w_layout-zebra                = 'X'.
      w_layout-no_vline             = 'X'.
      w_layout-colwidth_optimize    = 'X'.
      w_layout-detail_popup         = 'X'.
      w_layout-detail_initial_lines = 'X'.
      w_layout-detail_titlebar      = 'Detail Title Bar'.
    endform.
    *&      Form  event_exit_build
    form event_exit_build.
      clear: i_event_exit[].
    Pick
      w_event_exit-ucomm  = '&ETA'.
      w_event_exit-before = ' '.
      w_event_exit-after  = 'X'.
      append w_event_exit to i_event_exit.
    endform.
          FORM HTML_TOP_OF_PAGE                                         *
    form html_top_of_page using r_top type ref to cl_dd_document.
      data:
        text     type sdydo_text_element,
        s_table  type ref to cl_dd_table_element,
        col_key  type ref to cl_dd_area,
        col_info type ref to cl_dd_area,
        a_logo   type ref to cl_dd_area.
    Split TOP-Document
      call method r_top->vertical_split
                exporting split_area  = r_top
                          split_width = '30%'
                importing right_area  = a_logo.
    Fill TOP-Document
      call method r_top->add_text
                exporting text  = 'Example of a Heading'
                sap_style       = 'HEADING'.
      call method r_top->new_line.
      call method r_top->new_line.
      call method r_top->add_table
                exporting no_of_columns = 2
                          with_heading  = ' '
                          border        = '1'
                importing table         = s_table.
      call method s_table->add_column importing column = col_key.
      call method s_table->add_column importing column = col_info.
      text = 'A key value marked'.
      call method col_key->add_text
                exporting text         = text
                          sap_emphasis = 'Strong'.
      call method col_info->add_gap exporting width = 6.
      text = '600' .
      call method col_info->add_text
                exporting text      = text
                          sap_style = 'Key'.
      call method col_info->add_gap  exporting width = 3.
      text = 'Block brick units'.
      call method col_info->add_text exporting text  = text.
      call method s_table->new_row.
      text = 'Storage Bin'.
      call method col_key->add_text
                exporting text         = text
                          sap_emphasis = 'Strong'.
      call method col_info->add_gap exporting width = 7.
      text = 'C-A-004'.
      call method col_info->add_text exporting text = text.
      call method s_table->new_row.
      text = 'Warehouse number' .
      call method col_key->add_text
                exporting text         = text
                          sap_emphasis = 'Strong'.
      call method col_info->add_gap  exporting width = 6.
      text = '200' .
      call method col_info->add_text
                exporting text      = text
                          sap_style = 'Success'.
      call method col_info->add_gap  exporting width = 3.
      text = 'marked success'.
      call method col_info->add_text exporting text = text.
      call method s_table->new_row.
      call method r_top->new_line.
      text = 'This last line is a comment in italics.'.
      call method r_top->add_text
                exporting text         = text
                          sap_emphasis = 'EMPHASIS'.
      call method r_top->new_line.
      call method a_logo->add_picture
              exporting picture_id = 'ZZTESTBMP'.
                exporting picture_id = 'ENJOYSAP_LOGO'.
    endform.
    *&      Form  exclude_build
    form exclude_build.
      w_excluding = '&GRAPH'. "Graphic
      append w_excluding to i_excluding.
    endform.                    " exclude_build

  • Split ALV Column heading into two

    Hello All,
    I have a ALV Column Header - ALV LIST - SAP 46C.
    MaterialĀ Ā  |Ā  Info Type |Ā  Quantity |Ā  Price etc..
    Due to space contraints and other reason client needs to split the Info type column into two.
    MaterialĀ Ā  |Ā  InfoĀ  |Ā  Quantity |Ā  Price etc..
    Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā  | TypeĀ Ā  |
    The data records should not have any additional blank lines.
    How to achieve this?
    Thanks,

    You have to assign X to layout property no_colhead.
    Then write your heading using write statements.
    Here is the exact example you are looking for [Create Multiple Lines Header In ALV List Report|http://www.freesaptutorial.com/create-multiple-lines-header-in-alv-list-report/]

  • Getting only one coloum in alv grid

    hi ,
         i m facing a very strange problem. in my report i m getting exect data in my final table but when i m going to show it, it is showing only first coloum. well problem is coming in field catalog merge, it is not appending the whole coloum heading except first one. i did right coding but failed to get the result.
    plz if anybody faced the same problem suggest me the solution.
    it's really urgent.
    REPORT zfir_fix_ar NO STANDARD PAGE HEADING LINE-SIZE 255 LINE-COUNT 72.
          Tables                                                        *
    TABLES : t001,anla,anlb,anlc,bsis,t095t.
    TYPE-POOL                                                           *
    TYPE-POOLS: slis.
    Internal Table Declaratin                                           *
    DATA: BEGIN OF i_anla OCCURS 0,
           bukrs TYPE anla-bukrs,
           anln1 TYPE anla-anln1,
           aktiv TYPE anla-aktiv,
           txt50 TYPE anla-txt50,
           txa50 TYPE anla-txa50,
           zugdt TYPE anla-zugdt,
           abgdt TYPE anla-abgdt,
           ktogr TYPE anla-ktogr,
           sernr TYPE anla-sernr,
           invnr TYPE anla-invnr,
           menge TYPE anla-menge,
           meins TYPE anla-meins,
           lifnr TYPE anla-lifnr,
           liefe TYPE anla-liefe,
           afabg TYPE anlb-afabg,
          END OF i_anla.
    DATA:BEGIN OF i_anlc OCCURS 0,
          bukrs TYPE anlc-bukrs,
          anln1 TYPE anlc-anln1,
          kansw TYPE anlc-kansw,
          knafa TYPE anlc-knafa,
          nafap TYPE anlc-nafap,
          answl TYPE anlc-answl,
         END OF i_anlc.
    DATA:BEGIN OF i_anlz OCCURS 0,
          bukrs TYPE anlz-bukrs,
          anln1 TYPE anlz-anln1,
          raumn TYPE anlz-raumn,
         END OF i_anlz.
    DATA: BEGIN OF i_bsis OCCURS 0.
            INCLUDE STRUCTURE bsis.
    DATA: END OF i_bsis.
    DATA: BEGIN OF i_final OCCURS 0,
            srno TYPE i,                       " Serial no
            anln1 TYPE anla-anln1,             " asset code no
            txt50 TYPE anla-txt50,             " Brief Description of Assets
            txa50 TYPE anla-txa50,             " Further Description
            ktogr TYPE anla-ktogr,             " Asset Class No.
            ktgrtx TYPE t095t-ktgrtx,          " Asset Class Name
            sernr TYPE anla-sernr,             " Serial Number
            invnr TYPE anla-invnr,             " Assets Identification No
            menge TYPE anla-menge,             " Qty
            meins TYPE anla-meins,             " UOM
            raumn TYPE anlz-raumn,             " Location
            lifnr TYPE anla-lifnr,             " Vendor
            liefe TYPE anla-liefe,             " Capitalisation Date
            aktiv TYPE anla-aktiv,             " Date put to use
            g_kansw TYPE anlc-kansw,           " Opening Gross Block
            b_kansw TYPE anlc-kansw,           " Additions during the period
            b_answl TYPE anlc-answl," Deductions/ Adjustmentsduring d period
            g_total TYPE bsis-dmbtr,           " Closing Gross Block
            d_open TYPE anlb-afabg,            " Dep on opening block
            d_sold TYPE anlb-afabg,         " Dep on assets sold/written off
            d_add  TYPE anlb-afabg,     " dep on additions during the period
            afabg TYPE anlb-afabg,             " Total dep for the period
            cd_sold TYPE bsis-dmbtr,              " *** Dep on assets sold
            cd_asst TYPE bsis-dmbtr,       " *** Dep on assets written off
            cd_dep   TYPE bsis-dmbtr,     " Total *** dep on deductions
            ccd_dep  TYPE bsis-dmbtr,             " Closing Acc Dep
            a       TYPE bsis-dmbtr,              " WDV of assets sold
            b       TYPE bsis-dmbtr,              " Selling Price
            c       TYPE bsis-dmbtr,              " Profit / (Loss) on sale
            d       TYPE bsis-dmbtr,              " Loss on write off
            e       TYPE bsis-dmbtr,              " Opening WDV
            f       TYPE bsis-dmbtr,              " Closing WDV
          END OF i_final.
    DATA : text(30).
    DATA : b_date TYPE sy-datum.
    Global variables
    DATA: g_repid LIKE sy-repid,
    g_events TYPE slis_t_event,
    g_list_top_of_page TYPE slis_t_listheader,
    g_exit_caused_by_caller,
    g_exit_caused_by_user TYPE slis_exit_by_user,
    g_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
    g_save TYPE c.
    Declaration for Constants
    CONSTANTS : c_x TYPE c VALUE 'X', " Flag
    c_c TYPE c VALUE 'C', " Flag
    c_l TYPE c VALUE 'L', " Flag
    c_a TYPE c VALUE 'A', " Line Type
    c_h TYPE c VALUE 'H', " Dr/Cr
    c_s TYPE c VALUE 'S'. " Line Type
    * Internal table to hold field catgory data
    DATA: i_fldcat TYPE slis_t_fieldcat_alv. " Table - field catgory
    Internal table to hold Sort/Subtotals criteria data
    DATA: i_sort TYPE slis_t_sortinfo_alv. " Table - sort/Subtotals
    Structure
    DATA: x_layout TYPE slis_layout_alv, " Structure-layout
    x_fldcat LIKE LINE OF i_fldcat, " Structure-field catagory
    x_sort LIKE LINE OF i_sort. " Structure-Sort/Subtotals
    s e l e c t i o n    s c r e e n
    SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-010.
    SELECT-OPTIONS : s_bukrs FOR t001-bukrs  OBLIGATORY NO INTERVALS
    NO-EXTENSION.
    SELECT-OPTIONS : s_anlkl FOR anla-anlkl.
    SELECT-OPTIONS : s_anln FOR anla-anln1.
    SELECT-OPTIONS : s_date FOR sy-datum OBLIGATORY.
    SELECTION-SCREEN : END OF BLOCK b1.
    Initialization
    INITIALIZATION.
      g_repid = sy-repid.
      PERFORM layout_init USING x_layout.
      PERFORM eventtab_build USING g_events[].
      START OF SELECTION                                                 *
    START-OF-SELECTION.
      PERFORM calc_date.
      PERFORM get_data.
      PERFORM move_data.
    *PERFORM display_data.
    End of selection
    END-OF-SELECTION.
    Build layout report layout.
      PERFORM populate_layout_stucture.
    Perform build_field_catalog and Sort Table
      PERFORM build_field_catalog.
    PERFORM BUILD_SORT_TOTALS.
    List Header for Top-Of-Page
      PERFORM comment_build USING g_list_top_of_page[].
    Call list viewer function module
      PERFORM call_list_viewer .
    ****************Form - Routines************************************
    Form : layout_init
    Description : Form to Build layout for list display
    FORM layout_init USING rs_layout TYPE slis_layout_alv.
      rs_layout-detail_popup = c_x.
    ENDFORM.                    "layout_init
    Form : Eventtab_build
    Description : Registration of events to happen during list display
    FORM eventtab_build USING rt_events TYPE slis_t_event.
    Registration of events to happen during list display
      DATA: ls_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = rt_events.
      READ TABLE rt_events WITH KEY name = slis_ev_top_of_page
      INTO ls_event.
      IF sy-subrc = 0.
        MOVE g_top_of_page TO ls_event-form.
        APPEND ls_event TO rt_events.
      ENDIF.
    ENDFORM. "eventtab_build
    Form : top_of_page
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = g_list_top_of_page.
    ENDFORM.                    "top_of_page
    *&      Form  GET_Data
          text
    -->  p1        text
    <--  p2        text
    FORM get_data .
    SELECT abukrs aanln1 aaktiv atxt50 atxa50 azugdt aabgdt aktogr
    asernr ainvnr amenge ameins alifnr aliefe b~afabg
    INTO TABLE i_anla
    FROM anla AS a INNER JOIN anlb AS b
    ON aanln1 EQ banln1 AND
        abukrs EQ bbukrs
    WHERE a~anln1 IN s_anln
    AND a~anlkl IN s_anlkl
    AND a~bukrs IN s_bukrs
    AND b~afabe = '01'.
      SELECT bukrs anln1 kansw knafa nafap answl INTO TABLE i_anlc
      FROM anlc
      FOR ALL ENTRIES IN i_anla
      WHERE anln1 = i_anla-anln1
        AND bukrs = i_anla-bukrs.
      SELECT bukrs anln1 raumn FROM anlz INTO TABLE i_anlz
      FOR ALL ENTRIES IN i_anla
      WHERE anln1 = i_anla-anln1
        AND bukrs = i_anla-bukrs.
    ENDFORM.                    " GET_Data
    *&      Form  Move_data
          text
    -->  p1        text
    <--  p2        text
    FORM move_data .
      LOOP AT i_anla.
        MOVE i_anla-anln1 TO i_final-anln1.
        MOVE i_anla-txt50 TO i_final-txt50.
        MOVE i_anla-txa50 TO i_final-txa50.
        MOVE i_anla-ktogr TO i_final-ktogr.
        MOVE i_anla-sernr TO i_final-sernr.
        MOVE i_anla-invnr TO i_final-invnr.
        MOVE i_anla-menge TO i_final-menge.
        MOVE i_anla-meins TO i_final-meins.
        MOVE i_anla-afabg TO i_final-afabg.
        MOVE i_anla-lifnr TO i_final-lifnr.
        MOVE i_anla-liefe TO i_final-liefe.
        MOVE i_anla-aktiv TO i_final-aktiv.
        SELECT SINGLE * FROM t095t WHERE spras = 'E'
                                     AND ktogr = i_anla-ktogr.
        MOVE t095t-ktgrtx TO i_final-ktgrtx.
        READ TABLE i_anlc WITH KEY anln1 = i_anla-anln1
                                   bukrs = i_anla-bukrs.
        IF sy-subrc EQ 0.
          IF i_anla-zugdt LT s_date-low.
            MOVE  i_anlc-kansw TO i_final-g_kansw.
          ELSEIF i_anla-abgdt BETWEEN s_date-low AND s_date-high.
            MOVE  i_anlc-kansw TO i_final-b_answl.
            MOVE i_anlc-nafap TO i_final-d_add.
          ELSEIF i_anla-aktiv BETWEEN s_date-low AND s_date-high.
            MOVE i_anlc-kansw TO i_final-b_kansw.
            MOVE i_anlc-nafap TO i_final-d_sold.
          ELSE.
            MOVE i_anlc-nafap TO i_final-d_open.
          ENDIF.
          i_final-cd_sold = i_final-d_open + i_final-d_sold.
          i_final-cd_asst = i_final-d_open + i_final-d_sold.
          i_final-cd_dep  = i_final-cd_sold + i_final-cd_asst.
          i_final-ccd_dep = i_final-afabg + i_final-d_open - i_final-cd_dep.
          i_final-a = i_final-b_answl - i_final-cd_sold.
          i_final-d = i_final-b_answl - i_final-cd_asst.
          i_final-e = i_final-g_kansw - i_final-d_open.
          i_final-f = i_final-g_kansw - i_final-ccd_dep.
          i_final-afabg   =  i_final-d_sold  + i_final-d_open  +
    i_final-d_add.
          i_final-g_total =  i_final-g_kansw + i_final-b_answl +
    i_final-b_kansw.
        ENDIF.
        READ TABLE i_anlz WITH KEY anln1 = i_anla-anln1
                                   bukrs = i_anla-bukrs.
        IF sy-subrc EQ 0.
          MOVE i_anlz-raumn TO i_final-raumn.
        ENDIF.
        APPEND i_final.
        CLEAR i_final.
      ENDLOOP.
    ENDFORM.                    " Move_data
    Form : populate_layout_stucture
    Description : Populating the layout structure
    FORM populate_layout_stucture.
      CLEAR x_layout .
    Layout properties
      x_layout-zebra = c_x.
      x_layout-detail_popup = c_x.
      x_layout-detail_initial_lines = c_x.
      x_layout-colwidth_optimize = c_x.
    ENDFORM. " populate_layout_stucture
    Form : build_field_catalog
    Description : Building the field catalog data
    FORM build_field_catalog.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
      EXPORTING
         i_program_name               = g_repid
         i_internal_tabname           = 'I_FINAL'
         i_inclname                   = g_repid
        CHANGING
          ct_fieldcat                  = i_fldcat.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *DATA: SY-
    Getting the Header text for the coloums
      LOOP AT i_fldcat INTO x_fldcat WHERE fieldname = 'SRNO' OR
       fieldname = 'ANLN1' OR
      fieldname = 'TXT50' OR
      fieldname = 'TXA50' OR
      fieldname = 'KTOGR' OR
      fieldname = 'KTGRTX' OR
      fieldname = 'SERNR' OR
      fieldname = 'INVNR' OR
       fieldname = 'MENGE' OR
        fieldname = 'MEINS' OR
         fieldname = 'RAUMN' OR
         fieldname = 'LIFNR' OR
          fieldname = 'LIEFE' OR
           fieldname = 'AKTIV' OR
            fieldname = 'AFABG' OR
             fieldname = 'G_KANSW' OR
              fieldname = 'B_KANSW' OR
               fieldname = 'B_ANSWL' OR
               fieldname = 'G_TOTAL' OR
               fieldname = 'D_OPEN' OR
               fieldname = 'D_SOLD' OR
               fieldname = 'D_ADD' OR
               fieldname = 'AFABG' OR
               fieldname = 'CD_SOLD' OR
               fieldname = 'CD_ASST' OR
               fieldname = 'CD_DEP' OR
               fieldname = 'CCD_DEP' OR
               fieldname = 'A' OR
               fieldname = 'B' OR
               fieldname = 'C' OR
               fieldname = 'D' OR
               fieldname = 'E' OR
               fieldname = 'F'.
        IF x_fldcat-fieldname = 'SRNO'.
          x_fldcat-seltext_l = 'Sr. No'.
          x_fldcat-outputlen = 6.
          x_fldcat-just      = 'C'.
          x_fldcat-key       = 'X'.
          x_fldcat-inttype = c_c.
        ENDIF.
        IF x_fldcat-fieldname = 'ANLN1'.
          x_fldcat-outputlen = 17.
          x_fldcat-seltext_l = 'SAP Asset Code'.
          x_fldcat-just      = 'L'.
          x_fldcat-key       = 'X'.
          x_fldcat-inttype = c_c.
          x_fldcat-seltext_m = 'SAP Asset Code'.
          x_fldcat-seltext_s = 'SAP Asset Code'.
          x_fldcat-reptext_ddic = 'SAP Asset Code'.
        ENDIF.
        IF x_fldcat-fieldname = 'TXT50'.
          x_fldcat-outputlen = 50.
          x_fldcat-seltext_l = 'Brief Description of Assets'.
          x_fldcat-just      = 'L'.
          x_fldcat-key       = 'X'.
        ENDIF.
        IF x_fldcat-fieldname = 'TXA50'.
          x_fldcat-outputlen = 60.
          x_fldcat-seltext_l = 'Further Description'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'KTOGR'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = 'Acct determinat'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'KTGRTX'.
          x_fldcat-outputlen = 30.
          x_fldcat-seltext_l = 'Acct determinat Text'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'SERNR'.
          x_fldcat-outputlen = 20.
          x_fldcat-seltext_l = 'Serial number'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'INVNR'.
          x_fldcat-outputlen = 25.
          x_fldcat-seltext_l = 'Assets identification No'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'MENGE'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = 'Qty'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'MEINS'.
          x_fldcat-outputlen = 10.
          x_fldcat-seltext_l = 'UOM'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'RAUMN'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = 'Location'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'LIFNR'.
          x_fldcat-outputlen = 20.
          x_fldcat-seltext_l = 'Vendor'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'LIEFE'.
          x_fldcat-outputlen = 30.
          x_fldcat-seltext_l = 'Supplier Name'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'AKTIV'.
          x_fldcat-outputlen = 20.
          x_fldcat-seltext_l = 'Capitalisation Date'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'AFABG'.
          x_fldcat-outputlen = 18.
          x_fldcat-seltext_l = 'Date put to use'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'G_KANSW'.
          x_fldcat-outputlen = 18.
          x_fldcat-seltext_l = 'Opening Gross Block'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'B_KANSW'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = 'Addition'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'B_ANSWL'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = 'Deduction / Adj'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'G_TOTAL'.
          x_fldcat-outputlen = 20.
          x_fldcat-seltext_l = 'Closing Gross Block'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'D_OPEN'.
          x_fldcat-outputlen = 20.
          x_fldcat-seltext_l = 'Dep on opening block'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'D_SOLD'.
          x_fldcat-outputlen = 20.
          x_fldcat-seltext_l = 'Dep on assets sold/ written off'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'D_ADD'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = 'Addition During Year'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'AFABG'.
          x_fldcat-outputlen = 20.
          x_fldcat-seltext_l = 'Total dep for the period'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'CD_SOLD'.
          x_fldcat-outputlen = 20.
          x_fldcat-seltext_l = '*** Dep on assets sold'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'CD_ASST'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = '*** Dep on assets written off'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'CD_DEP'.
          x_fldcat-outputlen = 20.
          x_fldcat-seltext_l = 'Total *** dep on deductions'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'CCD_DEP'.
          x_fldcat-outputlen = 20.
          x_fldcat-seltext_l = 'Closing Acc Dep'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'A'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = 'WDV of assets sold'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'B'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = 'Selling Price'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'C'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = 'Profit / (Loss) on sale'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'D'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = 'Loss on Write off'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'E'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = 'Closing WDV'.
          x_fldcat-just      = 'L'.
        ENDIF.
        IF x_fldcat-fieldname = 'F'.
          x_fldcat-outputlen = 15.
          x_fldcat-seltext_l = 'Opening WDV'.
          x_fldcat-just      = 'L'.
        ENDIF.
        MODIFY i_fldcat FROM x_fldcat INDEX sy-tabix.
      ENDLOOP.
    ENDFORM. " build_field_catalog
    Form : comment_build
    Description : This form is used to display the Report Header(ALV)
    FORM comment_build USING lt_top_of_page TYPE
    slis_t_listheader.
      DATA: l_line TYPE slis_listheader,
      l_heading1 LIKE rs38m-repti.
      CLEAR l_line.
      l_heading1 =
      'Asset Register Report'.
      g_repid = sy-repid.
      l_line-typ = c_h.
      MOVE l_heading1 TO l_line-info.
      APPEND l_line TO lt_top_of_page.
    ENDFORM.                    "comment_build
    *&      Form  calc_date
          text
    -->  p1        text
    <--  p2        text
    FORM calc_date .
      b_date = s_date-low - 1.
    ENDFORM.                    " calc_date
    Form : call_list_viewer
    Description : This form is used to display the grid through ALV
    FORM call_list_viewer.
    *PERFORM header_prn.
      LOOP AT i_final.
        MOVE sy-tabix TO i_final-srno.
        MODIFY i_final TRANSPORTING srno.
      ENDLOOP.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = g_repid
          is_layout               = x_layout
          it_fieldcat             = i_fldcat[]
          it_sort                 = i_sort[]
          i_default               = c_x
          i_save                  = g_save
          it_events               = g_events[]
        IMPORTING
          e_exit_caused_by_caller = g_exit_caused_by_caller
          es_exit_caused_by_user  = g_exit_caused_by_user
        TABLES
          t_outtab                = i_final
        EXCEPTIONS
          program_error           = 1
          OTHERS                  = 2.
      IF sy-subrc <> 0.
        WRITE: / 'Problem in calling the ALV report'(042).
      ENDIF.
    ENDFORM. " call_list_viewer
    thanks in advance,
    marks will b sure*
    regards
    vijay dwivedi

    Change ur table declaration as shown below, replace the word <b>TYPE</b> with <b>LIKE</b>
    DATA: BEGIN OF i_final OCCURS 0,
    srno TYPE i, " Serial no
    anln1 LIKE anla-anln1, " asset code no
    txt50 LIKE anla-txt50, " Brief Description of Assets
    txa50 LIKE anla-txa50, " Further Description
    ktogr LIKE anla-ktogr, " Asset Class No.
    ktgrtx LIKE t095t-ktgrtx, " Asset Class Name
    sernr LIKE anla-sernr, " Serial Number
    invnr LIKE anla-invnr, " Assets Identification No
    menge LIKE anla-menge, " Qty
    meins LIKE anla-meins, " UOM
    raumn LIKE anlz-raumn, " Location
    lifnr LIKE anla-lifnr, " Vendor
    liefe LIKE anla-liefe, " Capitalisation Date
    aktiv LIKE anla-aktiv, " Date put to use
    g_kansw LIKE anlc-kansw, " Opening Gross Block
    b_kansw LIKE anlc-kansw, " Additions during the period
    b_answl LIKE anlc-answl," Deductions/ Adjustmentsduring d period
    g_total LIKE bsis-dmbtr, " Closing Gross Block
    d_open LIKE anlb-afabg, " Dep on opening block
    d_sold LIKE anlb-afabg, " Dep on assets sold/written off
    d_add LIKE anlb-afabg, " dep on additions during the period
    afabg LIKE anlb-afabg, " Total dep for the period
    cd_sold LIKE bsis-dmbtr, " *** Dep on assets sold
    cd_asst LIKE bsis-dmbtr, " *** Dep on assets written off
    cd_dep LIKE bsis-dmbtr, " Total *** dep on deductions
    ccd_dep LIKE bsis-dmbtr, " Closing Acc Dep
    a LIKE bsis-dmbtr, " WDV of assets sold
    b LIKE bsis-dmbtr, " Selling Price
    c LIKE bsis-dmbtr, " Profit / (Loss) on sale
    d LIKE bsis-dmbtr, " Loss on write off
    e LIKE bsis-dmbtr, " Opening WDV
    f LIKE bsis-dmbtr, " Closing WDV
    END OF i_final.

  • Title not getting exported to excel when i use ALV oops.

    Hi Friends,
    Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā  I have split the container and used cl_dd_document to display my Title data in TOP of page ( Container 1 ) and displayed my table data in the second container. I'm getting the output perfectly but when i try to export to the excel sheet, only table data ( i.e data in Container 2 ) is getting downloaded. i'm not able to bring the title ( Container 1 ) details in the excel while exporting . pls help. .
    Note : I also want the title details to be displayed when i click on the print button.
    I dont get this problem when i use REUSE_ALV_COMMENTARY_WRITE but in my senario i cant even use this FM as it doesn't supports more than 60 characters.

    Since you have two different container for Header & ALV data, the buttons on ALV grid ONLY will only consider the data within itself.
    To be able to download header and data both, you need to add additional buttons to either PF-status or ALV and write a code to do that.
    Regards,
    Naimesh Patel

  • Alv report please help

    Hi,
    Ā Ā Ā Ā  Please help me in this.
    1) Create the selection screen with the following fields on it.
    Ā Ā Ā Ā Ā S_REQUESTOR for ZSWAPHISTORY- REQUESTOR
    Ā Ā Ā Ā Ā S_APPROVER for ZSWAPHISTORY- APPROVER providing range
    Ā Ā Ā Ā Ā S_to_customer for ZSWAPHISTORY- to_customer providing range
    Ā Ā Ā Ā Ā S_from_customer for ZSWAPHISTORY- from_customer providing range
    Ā Ā Ā Ā Ā S_MRPCĀ Ā Ā Ā Ā for MARC-DISPO providing range
    Ā Ā Ā Ā Ā S_MATNRĀ Ā Ā Ā Ā for MARA-MATNR providing range
    Ā Ā Ā Ā Ā S_APPR_DATE for ZSWAPHISTORY- APPR_DATE Default to yesterdays date
    Ā Ā Ā Ā Ā S_QUANĀ Ā Ā Ā Ā for ZSWAPHISTORY-quan
    2) Validate the fields entered in the selection screen.
    3) Check the user authorizations for this report.
    4) Select the entries from the table ZSWAPHISTORY into an internal table based on the input from the selection screen and the value of the field ZSWAPHISTORY -STATUS is APPROVED.
    5) Then select the MRP Controller ID (DISPO) from the Table MARC for all entries in the internal table where MARC-MATNR equals to the internal table -material number.
    6) Move the field value of MRP Controller ID (DISPO) into the final internal table for the corresponding entries.
    7) Declare the Filed Catalogue with the fields that are to be displayed in the ALV
    Please help to create this , iam new to this area.
    Thanks
    Ali

    Hi
    See the sample code of ALV and do accordingly
    Since you are using a Z table it is not clear to create
    report ZRGRIRNA no standard page heading
           line-count 65
           line-size 255
           message-id mm.
                       GR IR Detail Report                               *
    Description          : The output has to be displayed
                           in the ALV Grid format with the Selection     *
                           screen appearing on the output. In The Output *
                           Subtotals for Vendor, Plant, Period, Material,*
                           Valuation Class, Purchase Order,Cost Center,  *
                           Cost Element and Receipt Date are displayed   *
                           after sorting the data by same fields.        *
    Declaration for Tables
    tables: t001,      " Company Codes
            t001w,     " Plants/Branches
            lfa1,      " Vendor Master
            ska1,      " GL Account Master
            mara,      " Material Master
            mbew,      " Material Valuation
            ekko,      " PO Header Data
            cska,      " Cost Elements
            csks,      " Cost Centers
            bsis,      " GL Accounts: Open Items Data
            bkpf.      " Accounting Doc: Header Data
    Type-pools
    Type pools for ALV display
    type-pools : slis.
    Global variables
    data: g_repid       like sy-repid,
          g_exit        type c,
          g_events      type slis_t_event,
          g_list_top_of_page type slis_t_listheader,
          g_exit_caused_by_caller,
          g_exit_caused_by_user type slis_exit_by_user,
          g_top_of_page  type slis_formname value 'TOP_OF_PAGE',
          g_variant like disvariant,
          g_save.
    Declaration for Constants
    constants : c_x  type c  value 'X',         " Flag
                c_c  type c  value 'C',         " Flag
                c_l  type c  value 'L',         " Flag
                c_a  type c  value 'A',         " Line Type
                c_h  type c  value 'H',         " Dr/Cr
                c_s  type c  value 'S',         " Line Type
                c_mkpf(4) type c value 'MKPF'.  " Table
    Declaration of Internal Tables
    Internal Table for BSIS Table data
    data: begin of i_bsis occurs 0,
            bukrs like bsis-bukrs,          " Company Code
            hkont like bsis-hkont,          " GR IR Account
            gjahr like bsis-gjahr,          " Fiscal Year
            belnr like bsis-belnr,          " Acc Document
            buzei like bsis-buzei,          " Item No
            budat like bsis-budat,          " Receipt Date(Posting)
            monat like bsis-monat,          " Period
          end of i_bsis.
    Internal Table for BSEG Table data
    data: begin of i_bseg occurs 0,
            bukrs like bsis-bukrs,          " Company Code
            belnr like bsis-belnr,          " Acc Document
            buzei like bsis-buzei,          " Item No
            gjahr like bsis-gjahr,          " Fiscal Year
            shkzg like bseg-shkzg,          " Dr/Cr Indicator
            lifnr like bseg-lifnr,          " Vendor Code
            matnr like bseg-matnr,          " Material No
            ebeln like bseg-ebeln,          " Purchase Order
            ebelp like bseg-ebelp,          " PO Item
            werks like bseg-werks,          " Plant
            menge like bseg-menge,          " PO Quantity
            meins like bseg-meins,          " UOM
            dmbtr like bseg-dmbtr,          " Amount in Local Currency
            wrbtr like bseg-wrbtr,          " Amount in Trans.Currency
          end of i_bseg.
    Internal Table for BKPF Table data
    data: begin of i_bkpf occurs 0,
            bukrs like bkpf-bukrs,          " Company Code
            belnr like bkpf-belnr,          " Acc Document
            gjahr like bkpf-gjahr,          " Fiscal Year
            waers like bkpf-waers,          " Trans. Currency
            awkey like bkpf-awkey,          " Object Key
            awtyp like bkpf-awtyp,          " Reference Procedure
          end of i_bkpf.
    Internal Table for MSEG Table data
    data: begin of i_mseg occurs 0,
            mblnr like mseg-mblnr,          " Material Document
            mjahr like mseg-mjahr,          " Fiscal Year
            bwart like mseg-bwart,          " Movement Type
            matnr like mseg-matnr,          " Material No
            menge like mseg-menge,          " PO Quantity
            meins like mseg-meins,          " UOM
          end of i_mseg.
    Internal Table for MBEW Table data
    data: begin of i_mbew occurs 0,
            matnr like mbew-matnr,          " Material No
            werks like mbew-bwkey,          " Plant
            bklas like mbew-bklas,          " Valuation Class
          end of i_mbew.
    Internal Table for EKPO Table data
    data: begin of i_ekpo occurs 0,
            ebeln like ekpo-ebeln,          " Purchase Order
            ebelp like ekpo-ebelp,          " PO Item
            matnr like ekpo-matnr,          " Material No
            txz01 like ekpo-txz01,          " Material Text
          end of i_ekpo.
    Internal Table for EKKN Table data
    data: begin of i_ekkn occurs 0,
            ebeln like ekkn-ebeln,          " Purchase Order
            ebelp like ekkn-ebelp,          " PO Item
            kostl like ekkn-kostl,          " Cost Center
            sakto like ekkn-sakto,          " Cost Element
          end of i_ekkn.
    Internal Table for LFA1 Table data
    data: begin of i_lfa1 occurs 0,
            lifnr like lfa1-lifnr,          " Vendor
            name1 like lfa1-name1,          " Name
          end of i_lfa1.
    Declaration of Output Internal Table
    data: begin of i_final occurs 0,
            lifnr like lfa1-lifnr,     " Vendor
            werks like bseg-werks,     " Plant
            monat like bsis-monat,     " Period
            matnr like mara-matnr,     " Material Number
            bklas like mbew-bklas,     " Val Class
            ebeln like bseg-ebeln,     " PO
            kostl like ekkn-kostl,     " Cost Center
            sakto like ekkn-sakto,     " Cost Element
            budat like bsis-budat,     " Rec. Date
            name1 like lfa1-name1,     " Vendor Name
            belnr like bsis-belnr,     " FI Document
            bwart like mseg-bwart,     " Movement Type
            txz01 like ekpo-txz01,     " Material Text
            menge like bseg-menge,     " Quantity
            meins like bseg-meins,     " UOM
            dmbtr like bseg-dmbtr,     " Local Amount
            wrbtr like bseg-wrbtr,     " Tran.Amount
            waers like bkpf-waers,     " Tran.Currency
            status type c,             " Material Status
          end of i_final.
    Internal table to hold field catgory data
    data:  i_fldcat  type slis_t_fieldcat_alv.   " Table - field catgory
    Internal table to hold Sort/Subtotals criteria data
    data:  i_sort  type slis_t_sortinfo_alv.     " Table - sort/Subtotals
    Structure
    data:  x_layout   type slis_layout_alv,      " Structure-layout
           x_fldcat   like line of i_fldcat,     " Structure-field catagory
           x_sort     like line of i_sort.       " Structure-Sort/Subtotals
           Selection screen
    selection-screen : begin of block b1 with frame title text-000.
    parameters:
       p_bukrs like t001-bukrs obligatory,          " Company Code
       p_grira like ska1-saknr default '0241101000' obligatory. " Account
    select-options:
       s_budat for bkpf-budat,        " Posting Date
       s_werks for t001w-werks,       " Plant
       s_lifnr for lfa1-lifnr,        " Vendor
       s_matnr for mara-matnr,        " Material Number
       s_kostl for csks-kostl,        " Cost Center
       s_kstar for cska-kstar,        " Cost Element
       s_ebeln for ekko-ebeln,        " Purchase Order
       s_monat for bsis-monat.        " Period
    selection-screen skip.
    parameters:
       p_incmt as checkbox default 'X',
       p_incnm as checkbox default 'X'.
    selection-screen end of block b1.
    Initialization
    initialization.
      g_repid = sy-repid.
      perform layout_init using x_layout.
      perform eventtab_build using g_events[].
      g_variant-report = g_repid.
      g_save           = 'A'.
    At selection screen
    at selection-screen.
    Validation of Selection Screen Fields
      perform validate_screen.
    Start of selection
    start-of-selection.
    Read Data from Database Tables
      perform read_data.
    End of selection
    end-of-selection.
    Build layout report layout.
      perform populate_layout_stucture.
    Perform build_field_catalog and Sort Table
      perform build_field_catalog.
      perform build_sort_totals.
    List Header for Top-Of-Page
      perform comment_build using g_list_top_of_page[].
    Call list viewer function module
      perform call_list_viewer .
    ****************Form - Routines**************************************
          Form        : layout_init
          Description : Form to Build layout for list display
    form layout_init using rs_layout type slis_layout_alv.
      rs_layout-detail_popup      = c_x.
    endform.
    Form         : Eventtab_build
    Description  : Registration of events to happen during list display
    form eventtab_build using rt_events type slis_t_event.
    Registration of events to happen during list display
      data: ls_event type slis_alv_event.
      call function 'REUSE_ALV_EVENTS_GET'
           exporting
                i_list_type = 0
           importing
                et_events   = rt_events.
      read table rt_events with key name = slis_ev_top_of_page
                               into ls_event.
      if sy-subrc = 0.
        move g_top_of_page to ls_event-form.
        append ls_event to rt_events.
      endif.
    endform.                                   "eventtab_build
          Form : top_of_page
    form top_of_page.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
             I_LOGO             = 'ENJOYSAP_LOGO'
                it_list_commentary = g_list_top_of_page.
    endform.
          Form validate_screen
    Validation of Selection Screen fields
    form validate_screen.
    Validation of Company Code
      clear t001.
      if not p_bukrs is initial.
        select single bukrs
          into t001-bukrs
          from t001
          where bukrs eq p_bukrs.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Company Code'(012).
        endif.
      endif.
    Validation of GL Account (GR/IR)
      clear ska1.
      if not p_grira is initial.
        select saknr
          into ska1-saknr
          from ska1
          up to 1 rows
          where saknr eq p_grira.
        endselect.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid GR/IR Account'(013).
        endif.
      endif.
    Validation of Vendor Code
      clear lfa1.
      if not s_lifnr[] is initial.
        select single lifnr
          into lfa1-lifnr
          from lfa1
          where lifnr in s_lifnr.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Vendor'(001).
        endif.
      endif.
    Validation of Plant Code
      clear t001w.
      if not s_werks[] is initial.
        select single werks
          into t001w-werks
          from t001w
          where werks in s_werks.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Plant'(014).
        endif.
      endif.
    Validation of Material Code
      clear mara.
      if not s_matnr[] is initial.
        select single matnr
          into mara-matnr
          from mara
          where matnr in s_matnr.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Material'(015).
        endif.
      endif.
    Validation of Purchase Order
      clear ekko.
      if not s_ebeln[] is initial.
        select single ebeln
          into ekko-ebeln
          from ekko
          where ebeln in s_ebeln.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Purchase Order'(016).
        endif.
      endif.
    Validation of Cost Center
      clear csks.
      if not s_kostl[] is initial.
        select kostl
          into csks-kostl
          from csks
          up to 1 rows
          where kostl in s_kostl.
        endselect.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Cost Center'(017).
        endif.
      endif.
    Validation of Cost Element
      clear cska.
      if not s_kstar[] is initial.
        select kstar
          into cska-kstar
          from cska
          up to 1 rows
          where kstar in s_kstar.
        endselect.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Cost Element'(018).
        endif.
      endif.
    endform.                          "validate_screen
    *&      Form  read_data
    Read the Data from the database Tables
    form read_data.
    Get the Accounting Documents for the GR/IR Account Entered on
    Selection Screen
      clear i_bsis.
      refresh i_bsis.
      select bukrs           " Company Code
             hkont           " GR IR Account
             gjahr           " Fiscal Year
             belnr           " Acc Document
             buzei           " Item No
             budat           " Receipt Date(Posting)
             monat           " Period
       into table i_bsis
       from  bsis
       where  bukrs = p_bukrs
         and  hkont = p_grira
         and  budat in s_budat
         and  monat in s_monat .
      if sy-subrc <> 0.
        message i899 with 'No data found'(043).
        g_exit = c_x.
        stop.
      endif.
      sort i_bsis by bukrs hkont gjahr belnr buzei.
    Get the Vendor,PO,Material,Qty details from BSEG Table
      if not i_bsis[] is initial.
        clear i_bseg.
        refresh i_bseg.
        select bukrs           " Company Code
               belnr           " Acc Document
               buzei           " Item No
               gjahr           " Fiscal Year
               shkzg           " Dr/Cr Indicator
               lifnr           " Vendor Code
               matnr           " Material No
               ebeln           " Purchase Order
               ebelp           " PO Item
               werks           " Plant
               menge           " PO Quantity
               meins           " UOM
               dmbtr           " Amount in Local Currency
               wrbtr           " Amount in Trans.Currency
        into table i_bseg
        from   bseg
        for all entries in i_bsis
        where  bukrs = p_bukrs
        and    belnr = i_bsis-belnr
        and    gjahr = i_bsis-gjahr
        and    buzei = i_bsis-buzei
        and    lifnr in s_lifnr
        and    werks in s_werks
        and    matnr in s_matnr
        and    ebeln in s_ebeln.
        sort i_bseg by bukrs belnr buzei gjahr.
    Select the Trans.Currency from BKPF Table
        clear i_bkpf.
        refresh i_bkpf.
        select bukrs           " Company Code
               belnr           " Acc Document
               gjahr           " Fiscal Year
               waers           " Trans. Currency
               awkey           " Object Key
               awtyp           " Reference Procedure
        into table i_bkpf
        from   bkpf
        for all entries in i_bsis
        where  bukrs = p_bukrs
        and    belnr = i_bsis-belnr
        and    gjahr = i_bsis-gjahr.
      endif.
      sort i_bkpf by bukrs belnr gjahr.
    Get the Quantity and UOM of Material from MSEG Table
      if not i_bkpf[] is initial.
        clear i_mseg.
        refresh i_mseg.
        select mblnr           " Material Document
               mjahr           " Fiscal Year
               bwart           " Movement Type
               matnr           " Material No
               menge           " PO Quantity
               meins           " UOM
          into table i_mseg
          from   mseg
          for all entries in i_bkpf
          where  mblnr = i_bkpf-awkey(10).
      endif.
      sort i_mseg by mblnr mjahr.
    Get the Material And Description from EKPO Table
      if not i_bseg[] is initial.
        clear i_ekpo.
        refresh i_ekpo.
        select ebeln           " Purchase Order
               ebelp           " PO Item
               matnr           " Material No
               txz01           " Material Text
        into table i_ekpo
        from   ekpo
        for all entries in i_bseg
        where  ebeln = i_bseg-ebeln
        and    ebelp = i_bseg-ebelp.
        sort i_ekpo by ebeln ebelp.
    Get the Valuation Class from MBEW Table
        clear i_mbew.
        refresh i_mbew.
        select matnr           " Material No
               bwkey           " Plant
               bklas           " Valuation Class
        into table i_mbew
        from   mbew
        for all entries in i_bseg
        where  matnr = i_bseg-matnr
        and    bwkey = i_bseg-werks.
        sort i_mbew by matnr werks.
    Get the Cost Center and Cost Element of the PO from EKKN Table
        clear i_ekkn.
        refresh i_ekkn.
        select ebeln           " Purchase Order
               ebelp           " PO Item
               kostl           " Cost Center
               sakto           " Cost Element
        into table i_ekkn
        from   ekkn
        for all entries in i_bseg
        where  ebeln = i_bseg-ebeln
        and    ebelp = i_bseg-ebelp
        and    kostl in s_kostl
        and    sakto in s_kstar.
        sort i_ekkn by ebeln ebelp.
    Get the Vendor Name
        clear i_lfa1.
        refresh i_lfa1.
        select lifnr            " Vendor
               name1            " Name
        into table i_lfa1
        from   lfa1
        for all entries in i_bseg
        where  lifnr = i_bseg-lifnr.
      endif.
      sort i_lfa1 by lifnr.
    Move the data to Final Output Internal Table
      loop at i_bsis.
        i_final-belnr = i_bsis-belnr.     " FI Document
        i_final-monat = i_bsis-monat.     " Period
        i_final-budat = i_bsis-budat.     " Rec. Date
    Read the Transaction Currency from BKPF Internal Table
        read table i_bkpf with key bukrs = i_bsis-bukrs
                                   belnr = i_bsis-belnr
                                   gjahr = i_bsis-gjahr
                                   binary search.
        if sy-subrc = 0.
          i_final-waers = i_bkpf-waers.     " Tran.Currency
    Read the Movement Type for all Material Related
    Documents from MSEG Internal Table
          if i_bkpf-awtyp = c_mkpf.
            read table i_mseg with key mblnr = i_bkpf-awkey(10)
                                       mjahr = i_bkpf-awkey+10(4).
            if sy-subrc = 0.
              i_final-bwart = i_mseg-bwart.     " Movement Type
            endif.
          endif.
        endif.
    Read Vendor, Plant, PO Document, Local And Trans.Amounts
    from BSEG Internal Table
        read table i_bseg with key bukrs = i_bsis-bukrs
                                   belnr = i_bsis-belnr
                                   gjahr = i_bsis-gjahr
                                   buzei = i_bsis-buzei
                                   binary search.
        if sy-subrc = 0.
          i_final-lifnr = i_bseg-lifnr.     " Vendor
          i_final-werks = i_bseg-werks.     " Plant
          i_final-ebeln = i_bseg-ebeln.     " PO
          i_final-dmbtr = i_bseg-dmbtr.     " Local Amount
          i_final-wrbtr = i_bseg-wrbtr.     " Tran.Amount
          i_final-menge = i_bseg-menge.     " Quantity
          i_final-meins = i_bseg-meins.     " UOM
    For Credit Indicator(SHKZG = H) amounts should be (-)ve
          if i_bseg-shkzg = c_h.
            i_final-dmbtr = i_final-dmbtr * -1.
            i_final-wrbtr = i_final-wrbtr * -1.
            i_final-menge = i_final-menge * -1.
          endif.
    Read the Material and its Description from EKPO Internal Table
          read table i_ekpo with key ebeln = i_bseg-ebeln
                                     ebelp = i_bseg-ebelp
                                     matnr = i_bseg-matnr
                                     binary search.
          if sy-subrc = 0.
            i_final-matnr = i_ekpo-matnr.     " Material Number
            i_final-txz01 = i_ekpo-txz01.     " Material Text
    Populate the Material Status depending on the Input Checkbox
    On Selection Screen
            if not i_ekpo-matnr is initial.
              i_final-status = c_x.
            endif.
          endif.
    Read the PO related Cost Element and Cost Centers
    from EKKN Internal Table
          read table i_ekkn with key ebeln = i_bseg-ebeln
                                     ebelp = i_bseg-ebelp
                                     binary search.
          if sy-subrc = 0.
            i_final-kostl = i_ekkn-kostl.     " Cost Center
            i_final-sakto = i_ekkn-sakto.     " Cost Element
          endif.
    Read the Valuation Class from MBEW Internal Table
          read table i_mbew with key matnr = i_bseg-matnr
                                     werks = i_bseg-werks
                                     binary search.
          if sy-subrc = 0.
            i_final-bklas = i_mbew-bklas.     " Val Class
          endif.
    Read the Vendor Name from LFA1 Internal Table
          read table i_lfa1 with key lifnr = i_bseg-lifnr
                                     binary search.
          if sy-subrc = 0.
            i_final-name1 = i_lfa1-name1.     " Vendor Name
          endif.
        endif.
        append i_final.
        clear i_final.
      endloop.
      sort i_final by lifnr werks monat matnr.
    Depending on the check Box Selected display the data
      if p_incmt = c_x and p_incnm ne c_x.
        delete i_final where matnr eq space.
      elseif p_incnm = c_x and p_incmt ne c_x.
        delete i_final where matnr ne space.
      endif.
    endform.           "Read Data
         Form        : populate_layout_stucture
         Description : Populating the layout structure
    form populate_layout_stucture.
      clear x_layout .
    Layout properties
      x_layout-zebra                = c_x.
      x_layout-detail_popup         = c_x.
      x_layout-detail_initial_lines = c_x.
      x_layout-colwidth_optimize    = c_x.
    endform.                    " populate_layout_stucture
         Form        : build_field_catalog
         Description : Building the field catalog data
    form build_field_catalog.
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
           exporting
                i_program_name         = g_repid
                i_internal_tabname     = 'I_FINAL'
                i_inclname             = g_repid
           changing
                ct_fieldcat            = i_fldcat
           exceptions
                inconsistent_interface = 1
                program_error          = 2
                others                 = 3.
      if sy-subrc <> 0.
        message id sy-msgid type sy-msgty number sy-msgno
              with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      endif.
    Getting the Header text for the coloums
      loop at i_fldcat into x_fldcat where fieldname = 'LIFNR' or
                                           fieldname = 'NAME1' or
                                           fieldname = 'WERKS' or
                                           fieldname = 'MONAT' or
                                           fieldname = 'MATNR' or
                                           fieldname = 'BKLAS' or
                                           fieldname = 'EBELN' or
                                           fieldname = 'KOSTL' or
                                           fieldname = 'SAKTO' or
                                           fieldname = 'BUDAT' or
                                           fieldname = 'BELNR' or
                                           fieldname = 'BWART' or
                                           fieldname = 'TXZ01' or
                                           fieldname = 'MENGE' or
                                           fieldname = 'MEINS' or
                                           fieldname = 'DMBTR' or
                                           fieldname = 'WRBTR' or
                                           fieldname = 'WAERS' or
                                           fieldname = 'STATUS'.
        if x_fldcat-fieldname = 'LIFNR'.
          x_fldcat-seltext_l   = 'Vendor'(003).
          x_fldcat-seltext_m   = 'Vendor'(003).
          x_fldcat-seltext_s   = 'Vendor'(003).
          x_fldcat-reptext_ddic = 'Vendor'(003).
          x_fldcat-inttype   = c_c.
        endif.
        if x_fldcat-fieldname = 'NAME1'.
          x_fldcat-seltext_l   = 'Vendor Name'(002).
          x_fldcat-seltext_m   = 'Vendor Name'(002).
          x_fldcat-seltext_s   = 'Vendor Name'(002).
          x_fldcat-reptext_ddic = 'Vendor Name'(002).
          x_fldcat-inttype   = c_c.
        endif.
        if x_fldcat-fieldname = 'WERKS'.
          x_fldcat-seltext_l   = 'Plant'(010).
          x_fldcat-seltext_m   = 'Plant'(010).
          x_fldcat-seltext_s   = 'Plant'(010).
          x_fldcat-reptext_ddic   = 'Plant'(010).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'MONAT'.
          x_fldcat-seltext_l   = 'Period'(011).
          x_fldcat-seltext_m   = 'Period'(011).
          x_fldcat-seltext_s   = 'Period'(011).
          x_fldcat-reptext_ddic   = 'Period'(011).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'MATNR'.
          x_fldcat-seltext_l   = 'Material'(004).
          x_fldcat-seltext_m   = 'Material'(004).
          x_fldcat-seltext_s   = 'Material'(004).
          x_fldcat-reptext_ddic   = 'Material'(004).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BKLAS'.
          x_fldcat-seltext_l   = 'Valuation Class'(009).
          x_fldcat-seltext_m   = 'Valuation Class'(009).
          x_fldcat-seltext_s   = 'Valuation Class'(009).
          x_fldcat-reptext_ddic   = 'Valuation Class'(009).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'EBELN'.
          x_fldcat-seltext_l   = 'Purchase Order'(005).
          x_fldcat-seltext_m   = 'Purchase Order'(005).
          x_fldcat-seltext_s   = 'Purchase Order'(005).
          x_fldcat-reptext_ddic   = 'Purchase Order'(005).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'KOSTL'.
          x_fldcat-seltext_l   = 'Cost Center'(006).
          x_fldcat-seltext_m   = 'Cost Center'(006).
          x_fldcat-seltext_s   = 'Cost Center'(006).
          x_fldcat-reptext_ddic   = 'Cost Center'(006).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'SAKTO'.
          x_fldcat-seltext_l   = 'Cost Element'(007).
          x_fldcat-seltext_m   = 'Cost Element'(007).
          x_fldcat-seltext_s   = 'Cost Element'(007).
          x_fldcat-reptext_ddic   = 'Cost Element'(007).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BUDAT'.
          x_fldcat-seltext_l   = 'Receipt Date'(008).
          x_fldcat-seltext_m   = 'Receipt Date'(008).
          x_fldcat-seltext_s   = 'Receipt Date'(008).
          x_fldcat-reptext_ddic   = 'Receipt Date'(008).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BELNR'.
          x_fldcat-seltext_l   = 'Acc.Document'(100).
          x_fldcat-seltext_m   = 'Acc.Document'(100).
          x_fldcat-seltext_s   = 'Acc.Document'(100).
          x_fldcat-reptext_ddic   = 'Acc.Document'(100).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BWART'.
          x_fldcat-seltext_l   = 'Movement Type'(101).
          x_fldcat-seltext_m   = 'Movement Type'(101).
          x_fldcat-seltext_s   = 'Movement Type'(101).
          x_fldcat-reptext_ddic   = 'Movement Type'(101).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'TXZ01'.
          x_fldcat-seltext_l   = 'Material Text'(102).
          x_fldcat-seltext_m   = 'Material Text'(102).
          x_fldcat-seltext_s   = 'Material Text'(102).
          x_fldcat-reptext_ddic   = 'Material Text'(102).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'MENGE'.
          x_fldcat-seltext_l   = 'Quantity'(103).
          x_fldcat-seltext_m   = 'Quantity'(103).
          x_fldcat-seltext_s   = 'Quantity'(103).
          x_fldcat-reptext_ddic   = 'Quantity'(103).
          x_fldcat-ddictxt   = c_l.
          x_fldcat-do_sum    = c_x.
        endif.
        if x_fldcat-fieldname = 'MEINS'.
          x_fldcat-seltext_l   = 'UOM'(104).
          x_fldcat-seltext_m   = 'UOM'(104).
          x_fldcat-seltext_s   = 'UOM'(104).
          x_fldcat-reptext_ddic   = 'UOM'(104).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'DMBTR'.
          x_fldcat-seltext_l   = 'Amount in Local Curr'(105).
          x_fldcat-seltext_m   = 'Amount in Local Curr'(105).
          x_fldcat-seltext_s   = 'Amount in Local Curr'(105).
          x_fldcat-reptext_ddic   = 'Amount in Local Curr'(105).
          x_fldcat-ddictxt   = c_l.
          x_fldcat-do_sum    = c_x.
        endif.
        if x_fldcat-fieldname = 'WRBTR'.
          x_fldcat-seltext_l   = 'Amount in Trans.Curr'(106).
          x_fldcat-seltext_m   = 'Amount in Trans.Curr'(106).
          x_fldcat-seltext_s   = 'Amount in Trans.Curr'(106).
          x_fldcat-reptext_ddic   = 'Amount in Trans.Curr'(106).
          x_fldcat-ddictxt   = c_l.
          x_fldcat-do_sum    = c_x.
        endif.
        if x_fldcat-fieldname = 'WAERS'.
          x_fldcat-seltext_l   = 'Trans.Currency'(107).
          x_fldcat-seltext_m   = 'Trans.Currency'(107).
          x_fldcat-seltext_s   = 'Trans.Currency'(107).
          x_fldcat-reptext_ddic   = 'Trans.Currency'(107).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'STATUS'.
          x_fldcat-seltext_l   = 'Material Status'(019).
          x_fldcat-seltext_m   = 'Material Status'(019).
          x_fldcat-seltext_s   = 'Material Status'(019).
          x_fldcat-reptext_ddic   = 'Material Status'(019).
          x_fldcat-ddictxt   = c_l.
        endif.
        modify i_fldcat from x_fldcat index sy-tabix.
      endloop.
    endform.                    " build_field_catalog
         Form        : build_sort_totals
         Description : Building the Criteria for Sort/Subtotals
    form build_sort_totals.
      x_sort-fieldname = 'LIFNR'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  1.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'WERKS'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  2.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'MONAT'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  3.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'MATNR'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  4.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'BKLAS'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  5.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'EBELN'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  6.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'KOSTL'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  7.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'SAKTO'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  8.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'BUDAT'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  9.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
    endform.                    " build_sort_totals
      Form        : comment_build
      Description : This form is used to display the Report Header(ALV)
    form comment_build using lt_top_of_page type
                                            slis_t_listheader.
      data: l_line type slis_listheader,
            l_heading1 like rs38m-repti,
            l_date(10), l_time(8).
      clear l_line.
      l_heading1 = 'GR/IR DETAIL REPORT'(021).
      g_repid = sy-repid.
      write sy-uzeit to l_time.
      write sy-datum to l_date.
      l_line-typ = c_h.
      move l_heading1 to l_line-info.
      append l_line to lt_top_of_page.
      clear l_line.
      l_line-typ  = c_s.
      concatenate 'System:'(023) sy-sysid
                  'Date:'(024) l_date
                  ' Time:'(025)
                  l_time into l_line-info.
      append l_line to lt_top_of_page.
      concatenate 'Report:'(026) g_repid
                  ' User:'(027) sy-uname into
                  l_line-info.
      append l_line to lt_top_of_page.
      l_line-typ = c_a.
      move 'SELECTION CRITERIA:'(028) to l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Company Code : '(029)
                  p_bukrs into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' GR/IR Account: '(030)
                  p_grira into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Posting Date : '(032) s_budat-low
                  ' To: '(031) s_budat-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Plant : '(033) s_werks-low
                  ' To: '(031) s_werks-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Vendor: '(034) s_lifnr-low
                  ' To: '(031) s_lifnr-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Material: '(035) s_matnr-low
                  ' To: '(031) s_matnr-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Cost Center : '(036) s_kostl-low
                  ' To: '(031) s_kostl-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Cost Element: '(037) s_kstar-low
                  ' To: '(031) s_kstar-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Purchase Order: '(038) s_ebeln-low
                  ' To: '(031) s_ebeln-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Period : '(039) s_monat-low
                  ' To: '(031) s_monat-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Include Material Items: '(040)
                  p_incmt into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Include Non-Material Items: '(041)
                  p_incnm into l_line-info.
      append l_line to lt_top_of_page.
    endform.
         Form        : call_list_viewer
         Description : This form is used to display the grid through ALV
    form call_list_viewer.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = g_repid
                is_layout               = x_layout
                it_fieldcat             = i_fldcat[]
                i_default               = c_x
                it_sort                 = i_sort[]
                i_save                  = g_save
                is_variant              = g_variant
                it_events               = g_events[]
           importing
                e_exit_caused_by_caller = g_exit_caused_by_caller
                es_exit_caused_by_user  = g_exit_caused_by_user
           tables
                t_outtab                = i_final
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
        write: / 'Problem in calling the ALV report'(042).
      endif.
    endform.                    " call_list_viewer
    Regards
    Anji

  • Prob with Drill down ALV's Layout

    Hi Friends,
    I have developed a report with class based ALV grid.
    First screen 100 - has an ALV for header details.
    Ā  CALL METHOD G_GRID_100->SET_TABLE_FOR_FIRST_DISPLAY
    Ā Ā Ā  EXPORTING
    Ā Ā Ā Ā Ā  IS_VARIANTĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā  = GS_DISVARIANT
    Ā Ā Ā Ā Ā  IS_LAYOUTĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā  = GS_LAYOUT
    Ā Ā Ā Ā Ā  IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
    Ā Ā Ā Ā Ā  I_SAVEĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā  = 'A'
    Ā Ā Ā  CHANGING
    Ā Ā Ā Ā Ā  IT_OUTTABĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā  = GT_DATA
    Ā Ā Ā Ā Ā  IT_FIELDCATALOGĀ Ā Ā Ā Ā  = GT_FIELDCAT100.
    on double click of any record in primary ALV, another screen 200 is called with line item details of that header in screen 100.
    Ā Ā Ā  CALL METHOD G_GRID_200->SET_TABLE_FOR_FIRST_DISPLAY
    Ā Ā Ā Ā Ā  EXPORTING
    Ā Ā Ā Ā Ā Ā Ā  IS_VARIANTĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā  = GS_DISVARIANT1
    Ā Ā Ā Ā Ā Ā Ā  IS_LAYOUTĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā  = GS_LAYOUT1
    Ā Ā Ā Ā Ā Ā Ā  IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
    Ā Ā Ā Ā Ā Ā Ā  I_SAVEĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā  = 'A'
    Ā Ā Ā Ā Ā  CHANGING
    Ā Ā Ā Ā Ā Ā Ā  IT_FIELDCATALOGĀ Ā Ā Ā Ā  = GT_FIELDCAT200
    Ā Ā Ā Ā Ā Ā Ā  IT_OUTTABĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā  = GT_LINEITEM.
    Problem: what ever layout is set in header alv is being copied in lineitem alv.
    I want to have independent layouts for primary and secondary ALVs.
    How to do that.
    Any help on this is highly appreciated.
    Regards,
    Simha

    it is working for me. here is one working example. some where you are doing a mistake cross check it once.
    REPORT  ztest_alv_oo.
    DATA: it_carr TYPE TABLE OF scarr,
          it_flight TYPE TABLE OF sflight.
    DATA: grid1 TYPE REF TO cl_gui_alv_grid,
          grid2 TYPE REF TO cl_gui_alv_grid,
          con1 TYPE REF TO cl_gui_custom_container,
          con2 TYPE REF TO cl_gui_custom_container.
    DATA: layout1 TYPE lvc_s_layo,
          layout2 TYPE  lvc_s_layo.
    *       CLASS cl_defintion
    CLASS cl_one DEFINITION.
      PUBLIC SECTION.
        METHODS:
            double_click         FOR EVENT double_click
                                 OF cl_gui_alv_grid
                                 IMPORTING e_row
                                           e_column
                                           es_row_no.
    ENDCLASS.                    "cl_defintion
    *       CLASS cl_implemenatation
    CLASS cl_one IMPLEMENTATION.
      METHOD double_click.
        DATA: wa_carr TYPE scarr.
        READ TABLE it_carr INTO wa_carr INDEX e_row-index.
        IF sy-subrc EQ 0.
          SELECT * FROM sflight
          INTO TABLE it_flight
          WHERE carrid EQ wa_carr-carrid.
          CALL SCREEN 200.
        ENDIF.
      ENDMETHOD.                    "double_click
    ENDCLASS.                    "cl_implemenatation
    START-OF-SELECTION.
      DATA: obj TYPE REF TO cl_one.
      SELECT * FROM scarr
      INTO TABLE it_carr.
      CALL SCREEN 100.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'CARR'.
      IF con1 IS INITIAL.
        CREATE OBJECT con1
          EXPORTING
            container_name = 'CAR'.
        CREATE OBJECT grid1
          EXPORTING
            i_parent = con1.
        layout1-grid_title = 'Carrid data'.
        layout1-smalltitle = 'X'.
        layout1-sel_mode   = 'A'.
        layout1-cwidth_opt = 'X'.
        layout1-zebra      = 'X'.
        grid1->set_table_for_first_display(
          EXPORTING
            i_structure_name              = 'SCARR'
            is_layout                     = layout1
          CHANGING
            it_outtab                     = it_carr
          EXCEPTIONS
            invalid_parameter_combination = 1
            program_error                 = 2
            too_many_lines                = 3
        IF sy-subrc NE  0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
        CREATE OBJECT obj.
        SET HANDLER obj->double_click FOR grid1.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      CASE sy-ucomm.
        WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Module  STATUS_0200  OUTPUT
    *       text
    MODULE status_0200 OUTPUT.
      SET PF-STATUS 'FLIGHT'.
      IF con2 IS INITIAL.
        CREATE OBJECT con2
          EXPORTING
            container_name = 'FLIGHT'.
        CREATE OBJECT grid2
          EXPORTING
            i_parent = con2.
        layout2-grid_title = 'Flights data'.
        layout2-smalltitle = 'X'.
        layout2-sel_mode   = 'A'.
        layout2-cwidth_opt = 'X'.
        layout2-zebra      = 'X'.
        grid2->set_table_for_first_display(
          EXPORTING
            i_structure_name              = 'SFLIGHT'
            is_layout                     = layout2
          CHANGING
            it_outtab                     = it_flight
          EXCEPTIONS
            invalid_parameter_combination = 1
            program_error                 = 2
            too_many_lines                = 3
        IF sy-subrc NE  0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
      ELSE.
        CALL METHOD grid2->refresh_table_display.
      ENDIF.
    ENDMODULE.                 " STATUS_0200  OUTPUT
    *&      Module  USER_COMMAND_0200  INPUT
    *       text
    MODULE user_command_0200 INPUT.
      CASE sy-ucomm.
        WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0200  INPUT
    Container names are CAR, FLIGHT(for 100, 200 respectively)

  • Issue in setting layout variant in ALV tables

    Hi,
    I have 2 ALVā€™s displaying in a view, 1ā€™st is a header data & 2ā€™nd Item data.
    Based on the row selection in the Header ALV, the data is determined and displayed in the 2ā€™nd ALV i.e., the Item data.
    Now the 2ā€™nd ALV (Item data) can contain 20 columns so based on certain requirement I want to save a layout variant with only 10 Columns for display in the 2ā€™nd ALV.
    But the issue what is happening is once I change my row selection in the 1ā€™st ALV (Header data) the layout in the second ALV is refreshing back to the 20 fields EVEN though the name of the variant layout still displays the one I saved earlier.
    I have searched the SCN for this issue and found http://scn.sap.com/thread/1986147, but it does NOT work.
    Could anyone please suggest a solution.
    Thanks & Regards,
    Divaker

    Hi Katrice,
    Ā Ā Ā Ā Ā  Thank you for the reply and the links, I will go through them, but please find below the code that I presently have in place, could you please advise if there is anything missing or wrong in here.
    Thanks & Regards,
    Divaker
    Ā  lo_cmp_usage =Ā Ā  wd_this->wd_cpuse_pwq_alv( ).
    Ā  IF lo_cmp_usage->has_active_component( ) IS INITIAL.
    Ā Ā Ā  lo_cmp_usage->create_component( ).
    Ā  ENDIF.
    Ā  lo_interfacecontroller =Ā Ā  wd_this->wd_cpifc_pwq_alv( ).
    * enable column adjustment
    Ā  lv_value = lo_interfacecontroller->get_model( ).
    *-- Get the API reference
    Ā  lo_api_interfacecontrollerĀ  = lo_interfacecontroller->wd_get_api( ).
    Ā  CALL METHOD lo_api_interfacecontroller->get_personalization_manager
    Ā Ā Ā  RECEIVING
    Ā Ā Ā Ā Ā  pers_manager = lo_pers.
    Ā  IF lo_pers IS NOT INITIAL.
    Ā Ā Ā  CALL METHOD lo_pers->get_variants
    Ā Ā Ā Ā Ā  RECEIVING
    Ā Ā Ā Ā Ā Ā Ā  variants = lt_var.
    Ā  ENDIF.
    Ā  IF lt_var IS NOT INITIAL.
    Ā Ā Ā  READ TABLE lt_var INTO ls_var INDEX 1.
    Ā Ā Ā  IF sy-subrc = 0.
    Ā Ā Ā Ā Ā  ls_config_key-config_idĀ Ā  = ls_var-config_id.
    Ā Ā Ā Ā Ā  ls_config_key-config_type = ls_var-config_type.
    Ā Ā Ā Ā Ā  ls_config_key-config_varĀ  = ls_var-config_var.
    Ā Ā Ā  ENDIF.
    Ā Ā Ā  TRY.
    Ā Ā Ā Ā Ā Ā Ā  CALL METHOD lo_pers->set_default_variant
    Ā Ā Ā Ā Ā Ā Ā Ā Ā  EXPORTING
    Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā  config_key = ls_config_key
    Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā  setĀ Ā Ā Ā Ā Ā Ā  = abap_true.
    Ā Ā Ā Ā Ā  CATCH cx_wd_personalization .
    Ā Ā Ā  ENDTRY.
    Ā Ā Ā  CALL METHOD lo_pers->load_config_by_key
    Ā Ā Ā Ā Ā  EXPORTING
    Ā Ā Ā Ā Ā Ā Ā  config_keyĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā  = ls_config_key
    Ā Ā Ā Ā Ā Ā Ā  fetch_default_variant = abap_true.
    Ā  ENDIF.

  • Fieldcat in ALV OOPS

    Hi All,
    Can any one let me know how to build fieldcat for ALV using OOPS.
    thanks.
    Khan

    Hi
    see the sample program for the Reuse_ALV_FIELD_CATALOG_MERGE and do accordingly
    report ZRGRIRNA no standard page heading
           line-count 65
           line-size 255
           message-id mm.
                       GR IR Detail Report                               *
    Description          : The output has to be displayed
                           in the ALV Grid format with the Selection     *
                           screen appearing on the output. In The Output *
                           Subtotals for Vendor, Plant, Period, Material,*
                           Valuation Class, Purchase Order,Cost Center,  *
                           Cost Element and Receipt Date are displayed   *
                           after sorting the data by same fields.        *
    Declaration for Tables
    tables: t001,      " Company Codes
            t001w,     " Plants/Branches
            lfa1,      " Vendor Master
            ska1,      " GL Account Master
            mara,      " Material Master
            mbew,      " Material Valuation
            ekko,      " PO Header Data
            cska,      " Cost Elements
            csks,      " Cost Centers
            bsis,      " GL Accounts: Open Items Data
            bkpf.      " Accounting Doc: Header Data
    Type-pools
    Type pools for ALV display
    type-pools : slis.
    Global variables
    data: g_repid       like sy-repid,
          g_exit        type c,
          g_events      type slis_t_event,
          g_list_top_of_page type slis_t_listheader,
          g_exit_caused_by_caller,
          g_exit_caused_by_user type slis_exit_by_user,
          g_top_of_page  type slis_formname value 'TOP_OF_PAGE',
          g_variant like disvariant,
          g_save.
    Declaration for Constants
    constants : c_x  type c  value 'X',         " Flag
                c_c  type c  value 'C',         " Flag
                c_l  type c  value 'L',         " Flag
                c_a  type c  value 'A',         " Line Type
                c_h  type c  value 'H',         " Dr/Cr
                c_s  type c  value 'S',         " Line Type
                c_mkpf(4) type c value 'MKPF'.  " Table
    Declaration of Internal Tables
    Internal Table for BSIS Table data
    data: begin of i_bsis occurs 0,
            bukrs like bsis-bukrs,          " Company Code
            hkont like bsis-hkont,          " GR IR Account
            gjahr like bsis-gjahr,          " Fiscal Year
            belnr like bsis-belnr,          " Acc Document
            buzei like bsis-buzei,          " Item No
            budat like bsis-budat,          " Receipt Date(Posting)
            monat like bsis-monat,          " Period
          end of i_bsis.
    Internal Table for BSEG Table data
    data: begin of i_bseg occurs 0,
            bukrs like bsis-bukrs,          " Company Code
            belnr like bsis-belnr,          " Acc Document
            buzei like bsis-buzei,          " Item No
            gjahr like bsis-gjahr,          " Fiscal Year
            shkzg like bseg-shkzg,          " Dr/Cr Indicator
            lifnr like bseg-lifnr,          " Vendor Code
            matnr like bseg-matnr,          " Material No
            ebeln like bseg-ebeln,          " Purchase Order
            ebelp like bseg-ebelp,          " PO Item
            werks like bseg-werks,          " Plant
            menge like bseg-menge,          " PO Quantity
            meins like bseg-meins,          " UOM
            dmbtr like bseg-dmbtr,          " Amount in Local Currency
            wrbtr like bseg-wrbtr,          " Amount in Trans.Currency
          end of i_bseg.
    Internal Table for BKPF Table data
    data: begin of i_bkpf occurs 0,
            bukrs like bkpf-bukrs,          " Company Code
            belnr like bkpf-belnr,          " Acc Document
            gjahr like bkpf-gjahr,          " Fiscal Year
            waers like bkpf-waers,          " Trans. Currency
            awkey like bkpf-awkey,          " Object Key
            awtyp like bkpf-awtyp,          " Reference Procedure
          end of i_bkpf.
    Internal Table for MSEG Table data
    data: begin of i_mseg occurs 0,
            mblnr like mseg-mblnr,          " Material Document
            mjahr like mseg-mjahr,          " Fiscal Year
            bwart like mseg-bwart,          " Movement Type
            matnr like mseg-matnr,          " Material No
            menge like mseg-menge,          " PO Quantity
            meins like mseg-meins,          " UOM
          end of i_mseg.
    Internal Table for MBEW Table data
    data: begin of i_mbew occurs 0,
            matnr like mbew-matnr,          " Material No
            werks like mbew-bwkey,          " Plant
            bklas like mbew-bklas,          " Valuation Class
          end of i_mbew.
    Internal Table for EKPO Table data
    data: begin of i_ekpo occurs 0,
            ebeln like ekpo-ebeln,          " Purchase Order
            ebelp like ekpo-ebelp,          " PO Item
            matnr like ekpo-matnr,          " Material No
            txz01 like ekpo-txz01,          " Material Text
          end of i_ekpo.
    Internal Table for EKKN Table data
    data: begin of i_ekkn occurs 0,
            ebeln like ekkn-ebeln,          " Purchase Order
            ebelp like ekkn-ebelp,          " PO Item
            kostl like ekkn-kostl,          " Cost Center
            sakto like ekkn-sakto,          " Cost Element
          end of i_ekkn.
    Internal Table for LFA1 Table data
    data: begin of i_lfa1 occurs 0,
            lifnr like lfa1-lifnr,          " Vendor
            name1 like lfa1-name1,          " Name
          end of i_lfa1.
    Declaration of Output Internal Table
    data: begin of i_final occurs 0,
            lifnr like lfa1-lifnr,     " Vendor
            werks like bseg-werks,     " Plant
            monat like bsis-monat,     " Period
            matnr like mara-matnr,     " Material Number
            bklas like mbew-bklas,     " Val Class
            ebeln like bseg-ebeln,     " PO
            kostl like ekkn-kostl,     " Cost Center
            sakto like ekkn-sakto,     " Cost Element
            budat like bsis-budat,     " Rec. Date
            name1 like lfa1-name1,     " Vendor Name
            belnr like bsis-belnr,     " FI Document
            bwart like mseg-bwart,     " Movement Type
            txz01 like ekpo-txz01,     " Material Text
            menge like bseg-menge,     " Quantity
            meins like bseg-meins,     " UOM
            dmbtr like bseg-dmbtr,     " Local Amount
            wrbtr like bseg-wrbtr,     " Tran.Amount
            waers like bkpf-waers,     " Tran.Currency
            status type c,             " Material Status
          end of i_final.
    Internal table to hold field catgory data
    data:  i_fldcat  type slis_t_fieldcat_alv.   " Table - field catgory
    Internal table to hold Sort/Subtotals criteria data
    data:  i_sort  type slis_t_sortinfo_alv.     " Table - sort/Subtotals
    Structure
    data:  x_layout   type slis_layout_alv,      " Structure-layout
           x_fldcat   like line of i_fldcat,     " Structure-field catagory
           x_sort     like line of i_sort.       " Structure-Sort/Subtotals
           Selection screen
    selection-screen : begin of block b1 with frame title text-000.
    parameters:
       p_bukrs like t001-bukrs obligatory,          " Company Code
       p_grira like ska1-saknr default '0241101000' obligatory. " Account
    select-options:
       s_budat for bkpf-budat,        " Posting Date
       s_werks for t001w-werks,       " Plant
       s_lifnr for lfa1-lifnr,        " Vendor
       s_matnr for mara-matnr,        " Material Number
       s_kostl for csks-kostl,        " Cost Center
       s_kstar for cska-kstar,        " Cost Element
       s_ebeln for ekko-ebeln,        " Purchase Order
       s_monat for bsis-monat.        " Period
    selection-screen skip.
    parameters:
       p_incmt as checkbox default 'X',
       p_incnm as checkbox default 'X'.
    selection-screen end of block b1.
    Initialization
    initialization.
      g_repid = sy-repid.
      perform layout_init using x_layout.
      perform eventtab_build using g_events[].
      g_variant-report = g_repid.
      g_save           = 'A'.
    At selection screen
    at selection-screen.
    Validation of Selection Screen Fields
      perform validate_screen.
    Start of selection
    start-of-selection.
    Read Data from Database Tables
      perform read_data.
    End of selection
    end-of-selection.
    Build layout report layout.
      perform populate_layout_stucture.
    Perform build_field_catalog and Sort Table
      perform build_field_catalog.
      perform build_sort_totals.
    List Header for Top-Of-Page
      perform comment_build using g_list_top_of_page[].
    Call list viewer function module
      perform call_list_viewer .
    ****************Form - Routines**************************************
          Form        : layout_init
          Description : Form to Build layout for list display
    form layout_init using rs_layout type slis_layout_alv.
      rs_layout-detail_popup      = c_x.
    endform.
    Form         : Eventtab_build
    Description  : Registration of events to happen during list display
    form eventtab_build using rt_events type slis_t_event.
    Registration of events to happen during list display
      data: ls_event type slis_alv_event.
      call function 'REUSE_ALV_EVENTS_GET'
           exporting
                i_list_type = 0
           importing
                et_events   = rt_events.
      read table rt_events with key name = slis_ev_top_of_page
                               into ls_event.
      if sy-subrc = 0.
        move g_top_of_page to ls_event-form.
        append ls_event to rt_events.
      endif.
    endform.                                   "eventtab_build
          Form : top_of_page
    form top_of_page.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
             I_LOGO             = 'ENJOYSAP_LOGO'
                it_list_commentary = g_list_top_of_page.
    endform.
          Form validate_screen
    Validation of Selection Screen fields
    form validate_screen.
    Validation of Company Code
      clear t001.
      if not p_bukrs is initial.
        select single bukrs
          into t001-bukrs
          from t001
          where bukrs eq p_bukrs.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Company Code'(012).
        endif.
      endif.
    Validation of GL Account (GR/IR)
      clear ska1.
      if not p_grira is initial.
        select saknr
          into ska1-saknr
          from ska1
          up to 1 rows
          where saknr eq p_grira.
        endselect.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid GR/IR Account'(013).
        endif.
      endif.
    Validation of Vendor Code
      clear lfa1.
      if not s_lifnr[] is initial.
        select single lifnr
          into lfa1-lifnr
          from lfa1
          where lifnr in s_lifnr.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Vendor'(001).
        endif.
      endif.
    Validation of Plant Code
      clear t001w.
      if not s_werks[] is initial.
        select single werks
          into t001w-werks
          from t001w
          where werks in s_werks.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Plant'(014).
        endif.
      endif.
    Validation of Material Code
      clear mara.
      if not s_matnr[] is initial.
        select single matnr
          into mara-matnr
          from mara
          where matnr in s_matnr.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Material'(015).
        endif.
      endif.
    Validation of Purchase Order
      clear ekko.
      if not s_ebeln[] is initial.
        select single ebeln
          into ekko-ebeln
          from ekko
          where ebeln in s_ebeln.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Purchase Order'(016).
        endif.
      endif.
    Validation of Cost Center
      clear csks.
      if not s_kostl[] is initial.
        select kostl
          into csks-kostl
          from csks
          up to 1 rows
          where kostl in s_kostl.
        endselect.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Cost Center'(017).
        endif.
      endif.
    Validation of Cost Element
      clear cska.
      if not s_kstar[] is initial.
        select kstar
          into cska-kstar
          from cska
          up to 1 rows
          where kstar in s_kstar.
        endselect.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Cost Element'(018).
        endif.
      endif.
    endform.                          "validate_screen
    *&      Form  read_data
    Read the Data from the database Tables
    form read_data.
    Get the Accounting Documents for the GR/IR Account Entered on
    Selection Screen
      clear i_bsis.
      refresh i_bsis.
      select bukrs           " Company Code
             hkont           " GR IR Account
             gjahr           " Fiscal Year
             belnr           " Acc Document
             buzei           " Item No
             budat           " Receipt Date(Posting)
             monat           " Period
       into table i_bsis
       from  bsis
       where  bukrs = p_bukrs
         and  hkont = p_grira
         and  budat in s_budat
         and  monat in s_monat .
      if sy-subrc <> 0.
        message i899 with 'No data found'(043).
        g_exit = c_x.
        stop.
      endif.
      sort i_bsis by bukrs hkont gjahr belnr buzei.
    Get the Vendor,PO,Material,Qty details from BSEG Table
      if not i_bsis[] is initial.
        clear i_bseg.
        refresh i_bseg.
        select bukrs           " Company Code
               belnr           " Acc Document
               buzei           " Item No
               gjahr           " Fiscal Year
               shkzg           " Dr/Cr Indicator
               lifnr           " Vendor Code
               matnr           " Material No
               ebeln           " Purchase Order
               ebelp           " PO Item
               werks           " Plant
               menge           " PO Quantity
               meins           " UOM
               dmbtr           " Amount in Local Currency
               wrbtr           " Amount in Trans.Currency
        into table i_bseg
        from   bseg
        for all entries in i_bsis
        where  bukrs = p_bukrs
        and    belnr = i_bsis-belnr
        and    gjahr = i_bsis-gjahr
        and    buzei = i_bsis-buzei
        and    lifnr in s_lifnr
        and    werks in s_werks
        and    matnr in s_matnr
        and    ebeln in s_ebeln.
        sort i_bseg by bukrs belnr buzei gjahr.
    Select the Trans.Currency from BKPF Table
        clear i_bkpf.
        refresh i_bkpf.
        select bukrs           " Company Code
               belnr           " Acc Document
               gjahr           " Fiscal Year
               waers           " Trans. Currency
               awkey           " Object Key
               awtyp           " Reference Procedure
        into table i_bkpf
        from   bkpf
        for all entries in i_bsis
        where  bukrs = p_bukrs
        and    belnr = i_bsis-belnr
        and    gjahr = i_bsis-gjahr.
      endif.
      sort i_bkpf by bukrs belnr gjahr.
    Get the Quantity and UOM of Material from MSEG Table
      if not i_bkpf[] is initial.
        clear i_mseg.
        refresh i_mseg.
        select mblnr           " Material Document
               mjahr           " Fiscal Year
               bwart           " Movement Type
               matnr           " Material No
               menge           " PO Quantity
               meins           " UOM
          into table i_mseg
          from   mseg
          for all entries in i_bkpf
          where  mblnr = i_bkpf-awkey(10).
      endif.
      sort i_mseg by mblnr mjahr.
    Get the Material And Description from EKPO Table
      if not i_bseg[] is initial.
        clear i_ekpo.
        refresh i_ekpo.
        select ebeln           " Purchase Order
               ebelp           " PO Item
               matnr           " Material No
               txz01           " Material Text
        into table i_ekpo
        from   ekpo
        for all entries in i_bseg
        where  ebeln = i_bseg-ebeln
        and    ebelp = i_bseg-ebelp.
        sort i_ekpo by ebeln ebelp.
    Get the Valuation Class from MBEW Table
        clear i_mbew.
        refresh i_mbew.
        select matnr           " Material No
               bwkey           " Plant
               bklas           " Valuation Class
        into table i_mbew
        from   mbew
        for all entries in i_bseg
        where  matnr = i_bseg-matnr
        and    bwkey = i_bseg-werks.
        sort i_mbew by matnr werks.
    Get the Cost Center and Cost Element of the PO from EKKN Table
        clear i_ekkn.
        refresh i_ekkn.
        select ebeln           " Purchase Order
               ebelp           " PO Item
               kostl           " Cost Center
               sakto           " Cost Element
        into table i_ekkn
        from   ekkn
        for all entries in i_bseg
        where  ebeln = i_bseg-ebeln
        and    ebelp = i_bseg-ebelp
        and    kostl in s_kostl
        and    sakto in s_kstar.
        sort i_ekkn by ebeln ebelp.
    Get the Vendor Name
        clear i_lfa1.
        refresh i_lfa1.
        select lifnr            " Vendor
               name1            " Name
        into table i_lfa1
        from   lfa1
        for all entries in i_bseg
        where  lifnr = i_bseg-lifnr.
      endif.
      sort i_lfa1 by lifnr.
    Move the data to Final Output Internal Table
      loop at i_bsis.
        i_final-belnr = i_bsis-belnr.     " FI Document
        i_final-monat = i_bsis-monat.     " Period
        i_final-budat = i_bsis-budat.     " Rec. Date
    Read the Transaction Currency from BKPF Internal Table
        read table i_bkpf with key bukrs = i_bsis-bukrs
                                   belnr = i_bsis-belnr
                                   gjahr = i_bsis-gjahr
                                   binary search.
        if sy-subrc = 0.
          i_final-waers = i_bkpf-waers.     " Tran.Currency
    Read the Movement Type for all Material Related
    Documents from MSEG Internal Table
          if i_bkpf-awtyp = c_mkpf.
            read table i_mseg with key mblnr = i_bkpf-awkey(10)
                                       mjahr = i_bkpf-awkey+10(4).
            if sy-subrc = 0.
              i_final-bwart = i_mseg-bwart.     " Movement Type
            endif.
          endif.
        endif.
    Read Vendor, Plant, PO Document, Local And Trans.Amounts
    from BSEG Internal Table
        read table i_bseg with key bukrs = i_bsis-bukrs
                                   belnr = i_bsis-belnr
                                   gjahr = i_bsis-gjahr
                                   buzei = i_bsis-buzei
                                   binary search.
        if sy-subrc = 0.
          i_final-lifnr = i_bseg-lifnr.     " Vendor
          i_final-werks = i_bseg-werks.     " Plant
          i_final-ebeln = i_bseg-ebeln.     " PO
          i_final-dmbtr = i_bseg-dmbtr.     " Local Amount
          i_final-wrbtr = i_bseg-wrbtr.     " Tran.Amount
          i_final-menge = i_bseg-menge.     " Quantity
          i_final-meins = i_bseg-meins.     " UOM
    For Credit Indicator(SHKZG = H) amounts should be (-)ve
          if i_bseg-shkzg = c_h.
            i_final-dmbtr = i_final-dmbtr * -1.
            i_final-wrbtr = i_final-wrbtr * -1.
            i_final-menge = i_final-menge * -1.
          endif.
    Read the Material and its Description from EKPO Internal Table
          read table i_ekpo with key ebeln = i_bseg-ebeln
                                     ebelp = i_bseg-ebelp
                                     matnr = i_bseg-matnr
                                     binary search.
          if sy-subrc = 0.
            i_final-matnr = i_ekpo-matnr.     " Material Number
            i_final-txz01 = i_ekpo-txz01.     " Material Text
    Populate the Material Status depending on the Input Checkbox
    On Selection Screen
            if not i_ekpo-matnr is initial.
              i_final-status = c_x.
            endif.
          endif.
    Read the PO related Cost Element and Cost Centers
    from EKKN Internal Table
          read table i_ekkn with key ebeln = i_bseg-ebeln
                                     ebelp = i_bseg-ebelp
                                     binary search.
          if sy-subrc = 0.
            i_final-kostl = i_ekkn-kostl.     " Cost Center
            i_final-sakto = i_ekkn-sakto.     " Cost Element
          endif.
    Read the Valuation Class from MBEW Internal Table
          read table i_mbew with key matnr = i_bseg-matnr
                                     werks = i_bseg-werks
                                     binary search.
          if sy-subrc = 0.
            i_final-bklas = i_mbew-bklas.     " Val Class
          endif.
    Read the Vendor Name from LFA1 Internal Table
          read table i_lfa1 with key lifnr = i_bseg-lifnr
                                     binary search.
          if sy-subrc = 0.
            i_final-name1 = i_lfa1-name1.     " Vendor Name
          endif.
        endif.
        append i_final.
        clear i_final.
      endloop.
      sort i_final by lifnr werks monat matnr.
    Depending on the check Box Selected display the data
      if p_incmt = c_x and p_incnm ne c_x.
        delete i_final where matnr eq space.
      elseif p_incnm = c_x and p_incmt ne c_x.
        delete i_final where matnr ne space.
      endif.
    endform.           "Read Data
         Form        : populate_layout_stucture
         Description : Populating the layout structure
    form populate_layout_stucture.
      clear x_layout .
    Layout properties
      x_layout-zebra                = c_x.
      x_layout-detail_popup         = c_x.
      x_layout-detail_initial_lines = c_x.
      x_layout-colwidth_optimize    = c_x.
    endform.                    " populate_layout_stucture
         Form        : build_field_catalog
         Description : Building the field catalog data
    form build_field_catalog.
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
           exporting
                i_program_name         = g_repid
                i_internal_tabname     = 'I_FINAL'
                i_inclname             = g_repid
           changing
                ct_fieldcat            = i_fldcat
           exceptions
                inconsistent_interface = 1
                program_error          = 2
                others                 = 3.
      if sy-subrc <> 0.
        message id sy-msgid type sy-msgty number sy-msgno
              with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      endif.
    Getting the Header text for the coloums
      loop at i_fldcat into x_fldcat where fieldname = 'LIFNR' or
                                           fieldname = 'NAME1' or
                                           fieldname = 'WERKS' or
                                           fieldname = 'MONAT' or
                                           fieldname = 'MATNR' or
                                           fieldname = 'BKLAS' or
                                           fieldname = 'EBELN' or
                                           fieldname = 'KOSTL' or
                                           fieldname = 'SAKTO' or
                                           fieldname = 'BUDAT' or
                                           fieldname = 'BELNR' or
                                           fieldname = 'BWART' or
                                           fieldname = 'TXZ01' or
                                           fieldname = 'MENGE' or
                                           fieldname = 'MEINS' or
                                           fieldname = 'DMBTR' or
                                           fieldname = 'WRBTR' or
                                           fieldname = 'WAERS' or
                                           fieldname = 'STATUS'.
        if x_fldcat-fieldname = 'LIFNR'.
          x_fldcat-seltext_l   = 'Vendor'(003).
          x_fldcat-seltext_m   = 'Vendor'(003).
          x_fldcat-seltext_s   = 'Vendor'(003).
          x_fldcat-reptext_ddic = 'Vendor'(003).
          x_fldcat-inttype   = c_c.
        endif.
        if x_fldcat-fieldname = 'NAME1'.
          x_fldcat-seltext_l   = 'Vendor Name'(002).
          x_fldcat-seltext_m   = 'Vendor Name'(002).
          x_fldcat-seltext_s   = 'Vendor Name'(002).
          x_fldcat-reptext_ddic = 'Vendor Name'(002).
          x_fldcat-inttype   = c_c.
        endif.
        if x_fldcat-fieldname = 'WERKS'.
          x_fldcat-seltext_l   = 'Plant'(010).
          x_fldcat-seltext_m   = 'Plant'(010).
          x_fldcat-seltext_s   = 'Plant'(010).
          x_fldcat-reptext_ddic   = 'Plant'(010).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'MONAT'.
          x_fldcat-seltext_l   = 'Period'(011).
          x_fldcat-seltext_m   = 'Period'(011).
          x_fldcat-seltext_s   = 'Period'(011).
          x_fldcat-reptext_ddic   = 'Period'(011).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'MATNR'.
          x_fldcat-seltext_l   = 'Material'(004).
          x_fldcat-seltext_m   = 'Material'(004).
          x_fldcat-seltext_s   = 'Material'(004).
          x_fldcat-reptext_ddic   = 'Material'(004).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BKLAS'.
          x_fldcat-seltext_l   = 'Valuation Class'(009).
          x_fldcat-seltext_m   = 'Valuation Class'(009).
          x_fldcat-seltext_s   = 'Valuation Class'(009).
          x_fldcat-reptext_ddic   = 'Valuation Class'(009).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'EBELN'.
          x_fldcat-seltext_l   = 'Purchase Order'(005).
          x_fldcat-seltext_m   = 'Purchase Order'(005).
          x_fldcat-seltext_s   = 'Purchase Order'(005).
          x_fldcat-reptext_ddic   = 'Purchase Order'(005).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'KOSTL'.
          x_fldcat-seltext_l   = 'Cost Center'(006).
          x_fldcat-seltext_m   = 'Cost Center'(006).
          x_fldcat-seltext_s   = 'Cost Center'(006).
          x_fldcat-reptext_ddic   = 'Cost Center'(006).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'SAKTO'.
          x_fldcat-seltext_l   = 'Cost Element'(007).
          x_fldcat-seltext_m   = 'Cost Element'(007).
          x_fldcat-seltext_s   = 'Cost Element'(007).
          x_fldcat-reptext_ddic   = 'Cost Element'(007).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BUDAT'.
          x_fldcat-seltext_l   = 'Receipt Date'(008).
          x_fldcat-seltext_m   = 'Receipt Date'(008).
          x_fldcat-seltext_s   = 'Receipt Date'(008).
          x_fldcat-reptext_ddic   = 'Receipt Date'(008).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BELNR'.
          x_fldcat-seltext_l   = 'Acc.Document'(100).
          x_fldcat-seltext_m   = 'Acc.Document'(100).
          x_fldcat-seltext_s   = 'Acc.Document'(100).
          x_fldcat-reptext_ddic   = 'Acc.Document'(100).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BWART'.
          x_fldcat-seltext_l   = 'Movement Type'(101).
          x_fldcat-seltext_m   = 'Movement Type'(101).
          x_fldcat-seltext_s   = 'Movement Type'(101).
          x_fldcat-reptext_ddic   = 'Movement Type'(101).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'TXZ01'.
          x_fldcat-seltext_l   = 'Material Text'(102).
          x_fldcat-seltext_m   = 'Material Text'(102).
          x_fldcat-seltext_s   = 'Material Text'(102).
          x_fldcat-reptext_ddic   = 'Material Text'(102).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'MENGE'.
          x_fldcat-seltext_l   = 'Quantity'(103).
          x_fldcat-seltext_m   = 'Quantity'(103).
          x_fldcat-seltext_s   = 'Quantity'(103).
          x_fldcat-reptext_ddic   = 'Quantity'(103).
          x_fldcat-ddictxt   = c_l.
          x_fldcat-do_sum    = c_x.
        endif.
        if x_fldcat-fieldname = 'MEINS'.
          x_fldcat-seltext_l   = 'UOM'(104).
          x_fldcat-seltext_m   = 'UOM'(104).
          x_fldcat-seltext_s   = 'UOM'(104).
          x_fldcat-reptext_ddic   = 'UOM'(104).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'DMBTR'.
          x_fldcat-seltext_l   = 'Amount in Local Curr'(105).
          x_fldcat-seltext_m   = 'Amount in Local Curr'(105).
          x_fldcat-seltext_s   = 'Amount in Local Curr'(105).
          x_fldcat-reptext_ddic   = 'Amount in Local Curr'(105).
          x_fldcat-ddictxt   = c_l.
          x_fldcat-do_sum    = c_x.
        endif.
        if x_fldcat-fieldname = 'WRBTR'.
          x_fldcat-seltext_l   = 'Amount in Trans.Curr'(106).
          x_fldcat-seltext_m   = 'Amount in Trans.Curr'(106).
          x_fldcat-seltext_s   = 'Amount in Trans.Curr'(106).
          x_fldcat-reptext_ddic   = 'Amount in Trans.Curr'(106).
          x_fldcat-ddictxt   = c_l.
          x_fldcat-do_sum    = c_x.
        endif.
        if x_fldcat-fieldname = 'WAERS'.
          x_fldcat-seltext_l   = 'Trans.Currency'(107).
          x_fldcat-seltext_m   = 'Trans.Currency'(107).
          x_fldcat-seltext_s   = 'Trans.Currency'(107).
          x_fldcat-reptext_ddic   = 'Trans.Currency'(107).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'STATUS'.
          x_fldcat-seltext_l   = 'Material Status'(019).
          x_fldcat-seltext_m   = 'Material Status'(019).
          x_fldcat-seltext_s   = 'Material Status'(019).
          x_fldcat-reptext_ddic   = 'Material Status'(019).
          x_fldcat-ddictxt   = c_l.
        endif.
        modify i_fldcat from x_fldcat index sy-tabix.
      endloop.
    endform.                    " build_field_catalog
         Form        : build_sort_totals
         Description : Building the Criteria for Sort/Subtotals
    form build_sort_totals.
      x_sort-fieldname = 'LIFNR'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  1.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'WERKS'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  2.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'MONAT'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  3.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'MATNR'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  4.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'BKLAS'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  5.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'EBELN'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  6.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'KOSTL'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  7.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'SAKTO'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  8.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'BUDAT'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  9.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
    endform.                    " build_sort_totals
      Form        : comment_build
      Description : This form is used to display the Report Header(ALV)
    form comment_build using lt_top_of_page type
                                            slis_t_listheader.
      data: l_line type slis_listheader,
            l_heading1 like rs38m-repti,
            l_date(10), l_time(8).
      clear l_line.
      l_heading1 = 'GR/IR DETAIL REPORT'(021).
      g_repid = sy-repid.
      write sy-uzeit to l_time.
      write sy-datum to l_date.
      l_line-typ = c_h.
      move l_heading1 to l_line-info.
      append l_line to lt_top_of_page.
      clear l_line.
      l_line-typ  = c_s.
      concatenate 'System:'(023) sy-sysid
                  'Date:'(024) l_date
                  ' Time:'(025)
                  l_time into l_line-info.
      append l_line to lt_top_of_page.
      concatenate 'Report:'(026) g_repid
                  ' User:'(027) sy-uname into
                  l_line-info.
      append l_line to lt_top_of_page.
      l_line-typ = c_a.
      move 'SELECTION CRITERIA:'(028) to l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Company Code : '(029)
                  p_bukrs into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' GR/IR Account: '(030)
                  p_grira into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Posting Date : '(032) s_budat-low
                  ' To: '(031) s_budat-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Plant : '(033) s_werks-low
                  ' To: '(031) s_werks-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Vendor: '(034) s_lifnr-low
                  ' To: '(031) s_lifnr-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Material: '(035) s_matnr-low
                  ' To: '(031) s_matnr-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Cost Center : '(036) s_kostl-low
                  ' To: '(031) s_kostl-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Cost Element: '(037) s_kstar-low
                  ' To: '(031) s_kstar-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Purchase Order: '(038) s_ebeln-low
                  ' To: '(031) s_ebeln-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Period : '(039) s_monat-low
                  ' To: '(031) s_monat-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Include Material Items: '(040)
                  p_incmt into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Include Non-Material Items: '(041)
                  p_incnm into l_line-info.
      append l_line to lt_top_of_page.
    endform.
         Form        : call_list_viewer
         Description : This form is used to display the grid through ALV
    form call_list_viewer.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = g_repid
                is_layout               = x_layout
                it_fieldcat             = i_fldcat[]
                i_default               = c_x
                it_sort                 = i_sort[]
                i_save                  = g_save
                is_variant              = g_variant
                it_events               = g_events[]
           importing
                e_exit_caused_by_caller = g_exit_caused_by_caller
                es_exit_caused_by_user  = g_exit_caused_by_user
           tables
                t_outtab                = i_final
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
        write: / 'Problem in calling the ALV report'(042).
      endif.
    endform.                    " call_list_viewer
    Regards
    anji

  • Hi ragarding ALV Reports

    Hi.....
    how we maintain list headings in case of alv interactive reporting.
    please provide some logic hints if possible.

    Hi
    See the sample report..Reward points for the same as per SDN rules and regulations
    report ZRGRIRNA no standard page heading
           line-count 65
           line-size 255
           message-id mm.
                       GR IR Detail Report                               *
    Description          : The output has to be displayed
                           in the ALV Grid format with the Selection     *
                           screen appearing on the output. In The Output *
                           Subtotals for Vendor, Plant, Period, Material,*
                           Valuation Class, Purchase Order,Cost Center,  *
                           Cost Element and Receipt Date are displayed   *
                           after sorting the data by same fields.        *
    Declaration for Tables
    tables: t001,      " Company Codes
            t001w,     " Plants/Branches
            lfa1,      " Vendor Master
            ska1,      " GL Account Master
            mara,      " Material Master
            mbew,      " Material Valuation
            ekko,      " PO Header Data
            cska,      " Cost Elements
            csks,      " Cost Centers
            bsis,      " GL Accounts: Open Items Data
            bkpf.      " Accounting Doc: Header Data
    Type-pools
    Type pools for ALV display
    type-pools : slis.
    Global variables
    data: g_repid       like sy-repid,
          g_exit        type c,
          g_events      type slis_t_event,
          g_list_top_of_page type slis_t_listheader,
          g_exit_caused_by_caller,
          g_exit_caused_by_user type slis_exit_by_user,
          g_top_of_page  type slis_formname value 'TOP_OF_PAGE',
          g_variant like disvariant,
          g_save.
    Declaration for Constants
    constants : c_x  type c  value 'X',         " Flag
                c_c  type c  value 'C',         " Flag
                c_l  type c  value 'L',         " Flag
                c_a  type c  value 'A',         " Line Type
                c_h  type c  value 'H',         " Dr/Cr
                c_s  type c  value 'S',         " Line Type
                c_mkpf(4) type c value 'MKPF'.  " Table
    Declaration of Internal Tables
    Internal Table for BSIS Table data
    data: begin of i_bsis occurs 0,
            bukrs like bsis-bukrs,          " Company Code
            hkont like bsis-hkont,          " GR IR Account
            gjahr like bsis-gjahr,          " Fiscal Year
            belnr like bsis-belnr,          " Acc Document
            buzei like bsis-buzei,          " Item No
            budat like bsis-budat,          " Receipt Date(Posting)
            monat like bsis-monat,          " Period
          end of i_bsis.
    Internal Table for BSEG Table data
    data: begin of i_bseg occurs 0,
            bukrs like bsis-bukrs,          " Company Code
            belnr like bsis-belnr,          " Acc Document
            buzei like bsis-buzei,          " Item No
            gjahr like bsis-gjahr,          " Fiscal Year
            shkzg like bseg-shkzg,          " Dr/Cr Indicator
            lifnr like bseg-lifnr,          " Vendor Code
            matnr like bseg-matnr,          " Material No
            ebeln like bseg-ebeln,          " Purchase Order
            ebelp like bseg-ebelp,          " PO Item
            werks like bseg-werks,          " Plant
            menge like bseg-menge,          " PO Quantity
            meins like bseg-meins,          " UOM
            dmbtr like bseg-dmbtr,          " Amount in Local Currency
            wrbtr like bseg-wrbtr,          " Amount in Trans.Currency
          end of i_bseg.
    Internal Table for BKPF Table data
    data: begin of i_bkpf occurs 0,
            bukrs like bkpf-bukrs,          " Company Code
            belnr like bkpf-belnr,          " Acc Document
            gjahr like bkpf-gjahr,          " Fiscal Year
            waers like bkpf-waers,          " Trans. Currency
            awkey like bkpf-awkey,          " Object Key
            awtyp like bkpf-awtyp,          " Reference Procedure
          end of i_bkpf.
    Internal Table for MSEG Table data
    data: begin of i_mseg occurs 0,
            mblnr like mseg-mblnr,          " Material Document
            mjahr like mseg-mjahr,          " Fiscal Year
            bwart like mseg-bwart,          " Movement Type
            matnr like mseg-matnr,          " Material No
            menge like mseg-menge,          " PO Quantity
            meins like mseg-meins,          " UOM
          end of i_mseg.
    Internal Table for MBEW Table data
    data: begin of i_mbew occurs 0,
            matnr like mbew-matnr,          " Material No
            werks like mbew-bwkey,          " Plant
            bklas like mbew-bklas,          " Valuation Class
          end of i_mbew.
    Internal Table for EKPO Table data
    data: begin of i_ekpo occurs 0,
            ebeln like ekpo-ebeln,          " Purchase Order
            ebelp like ekpo-ebelp,          " PO Item
            matnr like ekpo-matnr,          " Material No
            txz01 like ekpo-txz01,          " Material Text
          end of i_ekpo.
    Internal Table for EKKN Table data
    data: begin of i_ekkn occurs 0,
            ebeln like ekkn-ebeln,          " Purchase Order
            ebelp like ekkn-ebelp,          " PO Item
            kostl like ekkn-kostl,          " Cost Center
            sakto like ekkn-sakto,          " Cost Element
          end of i_ekkn.
    Internal Table for LFA1 Table data
    data: begin of i_lfa1 occurs 0,
            lifnr like lfa1-lifnr,          " Vendor
            name1 like lfa1-name1,          " Name
          end of i_lfa1.
    Declaration of Output Internal Table
    data: begin of i_final occurs 0,
            lifnr like lfa1-lifnr,     " Vendor
            werks like bseg-werks,     " Plant
            monat like bsis-monat,     " Period
            matnr like mara-matnr,     " Material Number
            bklas like mbew-bklas,     " Val Class
            ebeln like bseg-ebeln,     " PO
            kostl like ekkn-kostl,     " Cost Center
            sakto like ekkn-sakto,     " Cost Element
            budat like bsis-budat,     " Rec. Date
            name1 like lfa1-name1,     " Vendor Name
            belnr like bsis-belnr,     " FI Document
            bwart like mseg-bwart,     " Movement Type
            txz01 like ekpo-txz01,     " Material Text
            menge like bseg-menge,     " Quantity
            meins like bseg-meins,     " UOM
            dmbtr like bseg-dmbtr,     " Local Amount
            wrbtr like bseg-wrbtr,     " Tran.Amount
            waers like bkpf-waers,     " Tran.Currency
            status type c,             " Material Status
          end of i_final.
    Internal table to hold field catgory data
    data:  i_fldcat  type slis_t_fieldcat_alv.   " Table - field catgory
    Internal table to hold Sort/Subtotals criteria data
    data:  i_sort  type slis_t_sortinfo_alv.     " Table - sort/Subtotals
    Structure
    data:  x_layout   type slis_layout_alv,      " Structure-layout
           x_fldcat   like line of i_fldcat,     " Structure-field catagory
           x_sort     like line of i_sort.       " Structure-Sort/Subtotals
           Selection screen
    selection-screen : begin of block b1 with frame title text-000.
    parameters:
       p_bukrs like t001-bukrs obligatory,          " Company Code
       p_grira like ska1-saknr default '0241101000' obligatory. " Account
    select-options:
       s_budat for bkpf-budat,        " Posting Date
       s_werks for t001w-werks,       " Plant
       s_lifnr for lfa1-lifnr,        " Vendor
       s_matnr for mara-matnr,        " Material Number
       s_kostl for csks-kostl,        " Cost Center
       s_kstar for cska-kstar,        " Cost Element
       s_ebeln for ekko-ebeln,        " Purchase Order
       s_monat for bsis-monat.        " Period
    selection-screen skip.
    parameters:
       p_incmt as checkbox default 'X',
       p_incnm as checkbox default 'X'.
    selection-screen end of block b1.
    Initialization
    initialization.
      g_repid = sy-repid.
      perform layout_init using x_layout.
      perform eventtab_build using g_events[].
      g_variant-report = g_repid.
      g_save           = 'A'.
    At selection screen
    at selection-screen.
    Validation of Selection Screen Fields
      perform validate_screen.
    Start of selection
    start-of-selection.
    Read Data from Database Tables
      perform read_data.
    End of selection
    end-of-selection.
    Build layout report layout.
      perform populate_layout_stucture.
    Perform build_field_catalog and Sort Table
      perform build_field_catalog.
      perform build_sort_totals.
    List Header for Top-Of-Page
      perform comment_build using g_list_top_of_page[].
    Call list viewer function module
      perform call_list_viewer .
    ****************Form - Routines**************************************
          Form        : layout_init
          Description : Form to Build layout for list display
    form layout_init using rs_layout type slis_layout_alv.
      rs_layout-detail_popup      = c_x.
    endform.
    Form         : Eventtab_build
    Description  : Registration of events to happen during list display
    form eventtab_build using rt_events type slis_t_event.
    Registration of events to happen during list display
      data: ls_event type slis_alv_event.
      call function 'REUSE_ALV_EVENTS_GET'
           exporting
                i_list_type = 0
           importing
                et_events   = rt_events.
      read table rt_events with key name = slis_ev_top_of_page
                               into ls_event.
      if sy-subrc = 0.
        move g_top_of_page to ls_event-form.
        append ls_event to rt_events.
      endif.
    endform.                                   "eventtab_build
          Form : top_of_page
    form top_of_page.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
             I_LOGO             = 'ENJOYSAP_LOGO'
                it_list_commentary = g_list_top_of_page.
    endform.
          Form validate_screen
    Validation of Selection Screen fields
    form validate_screen.
    Validation of Company Code
      clear t001.
      if not p_bukrs is initial.
        select single bukrs
          into t001-bukrs
          from t001
          where bukrs eq p_bukrs.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Company Code'(012).
        endif.
      endif.
    Validation of GL Account (GR/IR)
      clear ska1.
      if not p_grira is initial.
        select saknr
          into ska1-saknr
          from ska1
          up to 1 rows
          where saknr eq p_grira.
        endselect.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid GR/IR Account'(013).
        endif.
      endif.
    Validation of Vendor Code
      clear lfa1.
      if not s_lifnr[] is initial.
        select single lifnr
          into lfa1-lifnr
          from lfa1
          where lifnr in s_lifnr.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Vendor'(001).
        endif.
      endif.
    Validation of Plant Code
      clear t001w.
      if not s_werks[] is initial.
        select single werks
          into t001w-werks
          from t001w
          where werks in s_werks.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Plant'(014).
        endif.
      endif.
    Validation of Material Code
      clear mara.
      if not s_matnr[] is initial.
        select single matnr
          into mara-matnr
          from mara
          where matnr in s_matnr.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Material'(015).
        endif.
      endif.
    Validation of Purchase Order
      clear ekko.
      if not s_ebeln[] is initial.
        select single ebeln
          into ekko-ebeln
          from ekko
          where ebeln in s_ebeln.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Purchase Order'(016).
        endif.
      endif.
    Validation of Cost Center
      clear csks.
      if not s_kostl[] is initial.
        select kostl
          into csks-kostl
          from csks
          up to 1 rows
          where kostl in s_kostl.
        endselect.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Cost Center'(017).
        endif.
      endif.
    Validation of Cost Element
      clear cska.
      if not s_kstar[] is initial.
        select kstar
          into cska-kstar
          from cska
          up to 1 rows
          where kstar in s_kstar.
        endselect.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Cost Element'(018).
        endif.
      endif.
    endform.                          "validate_screen
    *&      Form  read_data
    Read the Data from the database Tables
    form read_data.
    Get the Accounting Documents for the GR/IR Account Entered on
    Selection Screen
      clear i_bsis.
      refresh i_bsis.
      select bukrs           " Company Code
             hkont           " GR IR Account
             gjahr           " Fiscal Year
             belnr           " Acc Document
             buzei           " Item No
             budat           " Receipt Date(Posting)
             monat           " Period
       into table i_bsis
       from  bsis
       where  bukrs = p_bukrs
         and  hkont = p_grira
         and  budat in s_budat
         and  monat in s_monat .
      if sy-subrc <> 0.
        message i899 with 'No data found'(043).
        g_exit = c_x.
        stop.
      endif.
      sort i_bsis by bukrs hkont gjahr belnr buzei.
    Get the Vendor,PO,Material,Qty details from BSEG Table
      if not i_bsis[] is initial.
        clear i_bseg.
        refresh i_bseg.
        select bukrs           " Company Code
               belnr           " Acc Document
               buzei           " Item No
               gjahr           " Fiscal Year
               shkzg           " Dr/Cr Indicator
               lifnr           " Vendor Code
               matnr           " Material No
               ebeln           " Purchase Order
               ebelp           " PO Item
               werks           " Plant
               menge           " PO Quantity
               meins           " UOM
               dmbtr           " Amount in Local Currency
               wrbtr           " Amount in Trans.Currency
        into table i_bseg
        from   bseg
        for all entries in i_bsis
        where  bukrs = p_bukrs
        and    belnr = i_bsis-belnr
        and    gjahr = i_bsis-gjahr
        and    buzei = i_bsis-buzei
        and    lifnr in s_lifnr
        and    werks in s_werks
        and    matnr in s_matnr
        and    ebeln in s_ebeln.
        sort i_bseg by bukrs belnr buzei gjahr.
    Select the Trans.Currency from BKPF Table
        clear i_bkpf.
        refresh i_bkpf.
        select bukrs           " Company Code
               belnr           " Acc Document
               gjahr           " Fiscal Year
               waers           " Trans. Currency
               awkey           " Object Key
               awtyp           " Reference Procedure
        into table i_bkpf
        from   bkpf
        for all entries in i_bsis
        where  bukrs = p_bukrs
        and    belnr = i_bsis-belnr
        and    gjahr = i_bsis-gjahr.
      endif.
      sort i_bkpf by bukrs belnr gjahr.
    Get the Quantity and UOM of Material from MSEG Table
      if not i_bkpf[] is initial.
        clear i_mseg.
        refresh i_mseg.
        select mblnr           " Material Document
               mjahr           " Fiscal Year
               bwart           " Movement Type
               matnr           " Material No
               menge           " PO Quantity
               meins           " UOM
          into table i_mseg
          from   mseg
          for all entries in i_bkpf
          where  mblnr = i_bkpf-awkey(10).
      endif.
      sort i_mseg by mblnr mjahr.
    Get the Material And Description from EKPO Table
      if not i_bseg[] is initial.
        clear i_ekpo.
        refresh i_ekpo.
        select ebeln           " Purchase Order
               ebelp           " PO Item
               matnr           " Material No
               txz01           " Material Text
        into table i_ekpo
        from   ekpo
        for all entries in i_bseg
        where  ebeln = i_bseg-ebeln
        and    ebelp = i_bseg-ebelp.
        sort i_ekpo by ebeln ebelp.
    Get the Valuation Class from MBEW Table
        clear i_mbew.
        refresh i_mbew.
        select matnr           " Material No
               bwkey           " Plant
               bklas           " Valuation Class
        into table i_mbew
        from   mbew
        for all entries in i_bseg
        where  matnr = i_bseg-matnr
        and    bwkey = i_bseg-werks.
        sort i_mbew by matnr werks.
    Get the Cost Center and Cost Element of the PO from EKKN Table
        clear i_ekkn.
        refresh i_ekkn.
        select ebeln           " Purchase Order
               ebelp           " PO Item
               kostl           " Cost Center
               sakto           " Cost Element
        into table i_ekkn
        from   ekkn
        for all entries in i_bseg
        where  ebeln = i_bseg-ebeln
        and    ebelp = i_bseg-ebelp
        and    kostl in s_kostl
        and    sakto in s_kstar.
        sort i_ekkn by ebeln ebelp.
    Get the Vendor Name
        clear i_lfa1.
        refresh i_lfa1.
        select lifnr            " Vendor
               name1            " Name
        into table i_lfa1
        from   lfa1
        for all entries in i_bseg
        where  lifnr = i_bseg-lifnr.
      endif.
      sort i_lfa1 by lifnr.
    Move the data to Final Output Internal Table
      loop at i_bsis.
        i_final-belnr = i_bsis-belnr.     " FI Document
        i_final-monat = i_bsis-monat.     " Period
        i_final-budat = i_bsis-budat.     " Rec. Date
    Read the Transaction Currency from BKPF Internal Table
        read table i_bkpf with key bukrs = i_bsis-bukrs
                                   belnr = i_bsis-belnr
                                   gjahr = i_bsis-gjahr
                                   binary search.
        if sy-subrc = 0.
          i_final-waers = i_bkpf-waers.     " Tran.Currency
    Read the Movement Type for all Material Related
    Documents from MSEG Internal Table
          if i_bkpf-awtyp = c_mkpf.
            read table i_mseg with key mblnr = i_bkpf-awkey(10)
                                       mjahr = i_bkpf-awkey+10(4).
            if sy-subrc = 0.
              i_final-bwart = i_mseg-bwart.     " Movement Type
            endif.
          endif.
        endif.
    Read Vendor, Plant, PO Document, Local And Trans.Amounts
    from BSEG Internal Table
        read table i_bseg with key bukrs = i_bsis-bukrs
                                   belnr = i_bsis-belnr
                                   gjahr = i_bsis-gjahr
                                   buzei = i_bsis-buzei
                                   binary search.
        if sy-subrc = 0.
          i_final-lifnr = i_bseg-lifnr.     " Vendor
          i_final-werks = i_bseg-werks.     " Plant
          i_final-ebeln = i_bseg-ebeln.     " PO
          i_final-dmbtr = i_bseg-dmbtr.     " Local Amount
          i_final-wrbtr = i_bseg-wrbtr.     " Tran.Amount
          i_final-menge = i_bseg-menge.     " Quantity
          i_final-meins = i_bseg-meins.     " UOM
    For Credit Indicator(SHKZG = H) amounts should be (-)ve
          if i_bseg-shkzg = c_h.
            i_final-dmbtr = i_final-dmbtr * -1.
            i_final-wrbtr = i_final-wrbtr * -1.
            i_final-menge = i_final-menge * -1.
          endif.
    Read the Material and its Description from EKPO Internal Table
          read table i_ekpo with key ebeln = i_bseg-ebeln
                                     ebelp = i_bseg-ebelp
                                     matnr = i_bseg-matnr
                                     binary search.
          if sy-subrc = 0.
            i_final-matnr = i_ekpo-matnr.     " Material Number
            i_final-txz01 = i_ekpo-txz01.     " Material Text
    Populate the Material Status depending on the Input Checkbox
    On Selection Screen
            if not i_ekpo-matnr is initial.
              i_final-status = c_x.
            endif.
          endif.
    Read the PO related Cost Element and Cost Centers
    from EKKN Internal Table
          read table i_ekkn with key ebeln = i_bseg-ebeln
                                     ebelp = i_bseg-ebelp
                                     binary search.
          if sy-subrc = 0.
            i_final-kostl = i_ekkn-kostl.     " Cost Center
            i_final-sakto = i_ekkn-sakto.     " Cost Element
          endif.
    Read the Valuation Class from MBEW Internal Table
          read table i_mbew with key matnr = i_bseg-matnr
                                     werks = i_bseg-werks
                                     binary search.
          if sy-subrc = 0.
            i_final-bklas = i_mbew-bklas.     " Val Class
          endif.
    Read the Vendor Name from LFA1 Internal Table
          read table i_lfa1 with key lifnr = i_bseg-lifnr
                                     binary search.
          if sy-subrc = 0.
            i_final-name1 = i_lfa1-name1.     " Vendor Name
          endif.
        endif.
        append i_final.
        clear i_final.
      endloop.
      sort i_final by lifnr werks monat matnr.
    Depending on the check Box Selected display the data
      if p_incmt = c_x and p_incnm ne c_x.
        delete i_final where matnr eq space.
      elseif p_incnm = c_x and p_incmt ne c_x.
        delete i_final where matnr ne space.
      endif.
    endform.           "Read Data
         Form        : populate_layout_stucture
         Description : Populating the layout structure
    form populate_layout_stucture.
      clear x_layout .
    Layout properties
      x_layout-zebra                = c_x.
      x_layout-detail_popup         = c_x.
      x_layout-detail_initial_lines = c_x.
      x_layout-colwidth_optimize    = c_x.
    endform.                    " populate_layout_stucture
         Form        : build_field_catalog
         Description : Building the field catalog data
    form build_field_catalog.
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
           exporting
                i_program_name         = g_repid
                i_internal_tabname     = 'I_FINAL'
                i_inclname             = g_repid
           changing
                ct_fieldcat            = i_fldcat
           exceptions
                inconsistent_interface = 1
                program_error          = 2
                others                 = 3.
      if sy-subrc <> 0.
        message id sy-msgid type sy-msgty number sy-msgno
              with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      endif.
    Getting the Header text for the coloums
      loop at i_fldcat into x_fldcat where fieldname = 'LIFNR' or
                                           fieldname = 'NAME1' or
                                           fieldname = 'WERKS' or
                                           fieldname = 'MONAT' or
                                           fieldname = 'MATNR' or
                                           fieldname = 'BKLAS' or
                                           fieldname = 'EBELN' or
                                           fieldname = 'KOSTL' or
                                           fieldname = 'SAKTO' or
                                           fieldname = 'BUDAT' or
                                           fieldname = 'BELNR' or
                                           fieldname = 'BWART' or
                                           fieldname = 'TXZ01' or
                                           fieldname = 'MENGE' or
                                           fieldname = 'MEINS' or
                                           fieldname = 'DMBTR' or
                                           fieldname = 'WRBTR' or
                                           fieldname = 'WAERS' or
                                           fieldname = 'STATUS'.
        if x_fldcat-fieldname = 'LIFNR'.
          x_fldcat-seltext_l   = 'Vendor'(003).
          x_fldcat-seltext_m   = 'Vendor'(003).
          x_fldcat-seltext_s   = 'Vendor'(003).
          x_fldcat-reptext_ddic = 'Vendor'(003).
          x_fldcat-inttype   = c_c.
        endif.
        if x_fldcat-fieldname = 'NAME1'.
          x_fldcat-seltext_l   = 'Vendor Name'(002).
          x_fldcat-seltext_m   = 'Vendor Name'(002).
          x_fldcat-seltext_s   = 'Vendor Name'(002).
          x_fldcat-reptext_ddic = 'Vendor Name'(002).
          x_fldcat-inttype   = c_c.
        endif.
        if x_fldcat-fieldname = 'WERKS'.
          x_fldcat-seltext_l   = 'Plant'(010).
          x_fldcat-seltext_m   = 'Plant'(010).
          x_fldcat-seltext_s   = 'Plant'(010).
          x_fldcat-reptext_ddic   = 'Plant'(010).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'MONAT'.
          x_fldcat-seltext_l   = 'Period'(011).
          x_fldcat-seltext_m   = 'Period'(011).
          x_fldcat-seltext_s   = 'Period'(011).
          x_fldcat-reptext_ddic   = 'Period'(011).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'MATNR'.
          x_fldcat-seltext_l   = 'Material'(004).
          x_fldcat-seltext_m   = 'Material'(004).
          x_fldcat-seltext_s   = 'Material'(004).
          x_fldcat-reptext_ddic   = 'Material'(004).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BKLAS'.
          x_fldcat-seltext_l   = 'Valuation Class'(009).
          x_fldcat-seltext_m   = 'Valuation Class'(009).
          x_fldcat-seltext_s   = 'Valuation Class'(009).
          x_fldcat-reptext_ddic   = 'Valuation Class'(009).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'EBELN'.
          x_fldcat-seltext_l   = 'Purchase Order'(005).
          x_fldcat-seltext_m   = 'Purchase Order'(005).
          x_fldcat-seltext_s   = 'Purchase Order'(005).
          x_fldcat-reptext_ddic   = 'Purchase Order'(005).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'KOSTL'.
          x_fldcat-seltext_l   = 'Cost Center'(006).
          x_fldcat-seltext_m   = 'Cost Center'(006).
          x_fldcat-seltext_s   = 'Cost Center'(006).
          x_fldcat-reptext_ddic   = 'Cost Center'(006).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'SAKTO'.
          x_fldcat-seltext_l   = 'Cost Element'(007).
          x_fldcat-seltext_m   = 'Cost Element'(007).
          x_fldcat-seltext_s   = 'Cost Element'(007).
          x_fldcat-reptext_ddic   = 'Cost Element'(007).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BUDAT'.
          x_fldcat-seltext_l   = 'Receipt Date'(008).
          x_fldcat-seltext_m   = 'Receipt Date'(008).
          x_fldcat-seltext_s   = 'Receipt Date'(008).
          x_fldcat-reptext_ddic   = 'Receipt Date'(008).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BELNR'.
          x_fldcat-seltext_l   = 'Acc.Document'(100).
          x_fldcat-seltext_m   = 'Acc.Document'(100).
          x_fldcat-seltext_s   = 'Acc.Document'(100).
          x_fldcat-reptext_ddic   = 'Acc.Document'(100).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BWART'.
          x_fldcat-seltext_l   = 'Movement Type'(101).
          x_fldcat-seltext_m   = 'Movement Type'(101).
          x_fldcat-seltext_s   = 'Movement Type'(101).
          x_fldcat-reptext_ddic   = 'Movement Type'(101).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'TXZ01'.
          x_fldcat-seltext_l   = 'Material Text'(102).
          x_fldcat-seltext_m   = 'Material Text'(102).
          x_fldcat-seltext_s   = 'Material Text'(102).
          x_fldcat-reptext_ddic   = 'Material Text'(102).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'MENGE'.
          x_fldcat-seltext_l   = 'Quantity'(103).
          x_fldcat-seltext_m   = 'Quantity'(103).
          x_fldcat-seltext_s   = 'Quantity'(103).
          x_fldcat-reptext_ddic   = 'Quantity'(103).
          x_fldcat-ddictxt   = c_l.
          x_fldcat-do_sum    = c_x.
        endif.
        if x_fldcat-fieldname = 'MEINS'.
          x_fldcat-seltext_l   = 'UOM'(104).
          x_fldcat-seltext_m   = 'UOM'(104).
          x_fldcat-seltext_s   = 'UOM'(104).
          x_fldcat-reptext_ddic   = 'UOM'(104).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'DMBTR'.
          x_fldcat-seltext_l   = 'Amount in Local Curr'(105).
          x_fldcat-seltext_m   = 'Amount in Local Curr'(105).
          x_fldcat-seltext_s   = 'Amount in Local Curr'(105).
          x_fldcat-reptext_ddic   = 'Amount in Local Curr'(105).
          x_fldcat-ddictxt   = c_l.
          x_fldcat-do_sum    = c_x.
        endif.
        if x_fldcat-fieldname = 'WRBTR'.
          x_fldcat-seltext_l   = 'Amount in Trans.Curr'(106).
          x_fldcat-seltext_m   = 'Amount in Trans.Curr'(106).
          x_fldcat-seltext_s   = 'Amount in Trans.Curr'(106).
          x_fldcat-reptext_ddic   = 'Amount in Trans.Curr'(106).
          x_fldcat-ddictxt   = c_l.
          x_fldcat-do_sum    = c_x.
        endif.
        if x_fldcat-fieldname = 'WAERS'.
          x_fldcat-seltext_l   = 'Trans.Currency'(107).
          x_fldcat-seltext_m   = 'Trans.Currency'(107).
          x_fldcat-seltext_s   = 'Trans.Currency'(107).
          x_fldcat-reptext_ddic   = 'Trans.Currency'(107).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'STATUS'.
          x_fldcat-seltext_l   = 'Material Status'(019).
          x_fldcat-seltext_m   = 'Material Status'(019).
          x_fldcat-seltext_s   = 'Material Status'(019).
          x_fldcat-reptext_ddic   = 'Material Status'(019).
          x_fldcat-ddictxt   = c_l.
        endif.
        modify i_fldcat from x_fldcat index sy-tabix.
      endloop.
    endform.                    " build_field_catalog
         Form        : build_sort_totals
         Description : Building the Criteria for Sort/Subtotals
    form build_sort_totals.
      x_sort-fieldname = 'LIFNR'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  1.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'WERKS'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  2.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'MONAT'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  3.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'MATNR'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  4.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'BKLAS'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  5.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'EBELN'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  6.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'KOSTL'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  7.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'SAKTO'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  8.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'BUDAT'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  9.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
    endform.                    " build_sort_totals
      Form        : comment_build
      Description : This form is used to display the Report Header(ALV)
    form comment_build using lt_top_of_page type
                                            slis_t_listheader.
      data: l_line type slis_listheader,
            l_heading1 like rs38m-repti,
            l_date(10), l_time(8).
      clear l_line.
      l_heading1 = 'GR/IR DETAIL REPORT'(021).
      g_repid = sy-repid.
      write sy-uzeit to l_time.
      write sy-datum to l_date.
      l_line-typ = c_h.
      move l_heading1 to l_line-info.
      append l_line to lt_top_of_page.
      clear l_line.
      l_line-typ  = c_s.
      concatenate 'System:'(023) sy-sysid
                  'Date:'(024) l_date
                  ' Time:'(025)
                  l_time into l_line-info.
      append l_line to lt_top_of_page.
      concatenate 'Report:'(026) g_repid
                  ' User:'(027) sy-uname into
                  l_line-info.
      append l_line to lt_top_of_page.
      l_line-typ = c_a.
      move 'SELECTION CRITERIA:'(028) to l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Company Code : '(029)
                  p_bukrs into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' GR/IR Account: '(030)
                  p_grira into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Posting Date : '(032) s_budat-low
                  ' To: '(031) s_budat-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Plant : '(033) s_werks-low
                  ' To: '(031) s_werks-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Vendor: '(034) s_lifnr-low
                  ' To: '(031) s_lifnr-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Material: '(035) s_matnr-low
                  ' To: '(031) s_matnr-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Cost Center : '(036) s_kostl-low
                  ' To: '(031) s_kostl-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Cost Element: '(037) s_kstar-low
                  ' To: '(031) s_kstar-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Purchase Order: '(038) s_ebeln-low
                  ' To: '(031) s_ebeln-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Period : '(039) s_monat-low
                  ' To: '(031) s_monat-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Include Material Items: '(040)
                  p_incmt into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Include Non-Material Items: '(041)
                  p_incnm into l_line-info.
      append l_line to lt_top_of_page.
    endform.
         Form        : call_list_viewer
         Description : This form is used to display the grid through ALV
    form call_list_viewer.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = g_repid
                is_layout               = x_layout
                it_fieldcat             = i_fldcat[]
                i_default               = c_x
                it_sort                 = i_sort[]
                i_save                  = g_save
                is_variant              = g_variant
                it_events               = g_events[]
           importing
                e_exit_caused_by_caller = g_exit_caused_by_caller
                es_exit_caused_by_user  = g_exit_caused_by_user
           tables
                t_outtab                = i_final
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
        write: / 'Problem in calling the ALV report'(042).
      endif.
    endform.                    " call_list_viewer
    <b>Reward points for useful Answers</b>
    Regards
    Anji

Maybe you are looking for

  • How to fix itunes error 1611 while restoring ios 4.3.2 , and when i restore to 4.2.1 the can be ok.plz help me

    how to fix itunes error 1611 while restoring ios 4.3.2 , and when i restore to 4.2.1 the can be ok.plz help me

  • PDF file to server (AL11)

    Hi gurus, Does anybody knows how can I manage (create and delete) files in server (AL11) in PDF format?? I've already made a pdf file with my report output (ALV) in order to send it by email. That works fine; but I'll need save this information in a

  • Problems configuring HPLJ P2015

    Hi, We recently bought a HPLJ 2015p to replace our old (and becoming very unreliable) pair of HP Laserjet 2001 Printers. The specs say the 2015 is compatible with the Mac, and I ran the install from the supplied CD OK, but I cannot get the new printe

  • Turning off monitor detection?

    Is there a way to turn of monitor auto-detection. I am using a kvm and have the a monitor hooked up as primary desktop on external dvi connector. Using iMac display as secondary monitor. Every time I use kvm to switch to another monitor the resolutio

  • Accessing bean properties in a jsp

    Hi, I am trying to access a bean in my jsp page like this, <c:out value="${clientSession.customerName}"/> I validate and then set the bean in my action class, I am using struts 1.1, package com.neo.five.ereports; import org.apache.struts.action.Actio