FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

Hi,
I want to add Header in my ALV report and i used the function module 'REUSE_ALV_COMMENTARY_WRITE' but its not displaying the header in the Output. I used the Coding as:
data :lt_top_of_page type slis_t_listheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    IT_LIST_COMMENTARY       = lt_top_of_page
   I_LOGO                   = 'Test ALV Header'
  I_END_OF_LIST_GRID       =
  I_ALV_FORM               =
Any Suggestions would be really helpful.
Manoj

HI Manoj
check below code
FORM TOP_OF_PAGE.
  DATA: T_HEADER TYPE SLIS_T_LISTHEADER,
WA_HEADER TYPE SLIS_LISTHEADER,
T_LINE LIKE WA_HEADER-INFO,
LD_LINES(10) TYPE C.
*LD_LINESC(10) TYPE C.
REFRESH T_HEADER.
*Title.
WA_HEADER-TYP = 'H'.
WA_HEADER-KEY = ''.
WA_HEADER-INFO = V_REPID.
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.
  DESCRIBE TABLE ITAB LINES LD_LINES.
LD_LINESC = LD_LINES.
CONCATENATE 'Total No. of Records Selected: ' LD_LINES
     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                   =
  I_END_OF_LIST_GRID       =
  I_ALV_FORM               =
ENDFORM.
here I have made a form for top of page and then passed this form name into grid display  as below.
I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
in your case your table IT_LIST_COMMENTARY  is empty, so you need to fill it like I have filled in my form.
I hope this will work for you.
Thanks
Lalit Gupta

Similar Messages

  • How to use this function call function 'REUSE_ALV_COMMENTARY_WRITE' in alv

    hi all
    thanks in advance
    how to use this function in alv programming
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    why use and what purpose use this function plz tell me details
    plz guide me
    thanks

    Hi
    see this exmaple code where i had inserted a LOGO by useing this FM
    *& Report  ZTEST_ALV_LOGO
    REPORT  ztest_alv_logo.
    TYPE-POOLS : slis.
    *ALV Formatting tables /structures
    DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
    DATA: gt_events   TYPE slis_t_event.
    DATA: gs_layout   TYPE slis_layout_alv.
    DATA: gt_page     TYPE slis_t_listheader.
    DATA: gs_page     TYPE slis_listheader.
    DATA: v_repid     LIKE sy-repid.
    *ALV Formatting work area
    DATA: w_fieldcat TYPE slis_fieldcat_alv.
    DATA: w_events   TYPE slis_alv_event.
    DATA: gt_bsid TYPE TABLE OF bsid WITH HEADER LINE.
    INITIALIZATION.
      PERFORM build_events.
      PERFORM build_page_header.
    START-OF-SELECTION.
    *perform build_comment.     "top_of_page - in initialization at present
      SELECT * FROM bsid INTO TABLE gt_bsid UP TO 10 ROWS.
    *perform populate_for_fm using '1' '3' 'BUKRS' '8' 'GT_BSID' 'Whee'.
    *USING = Row, Column, Field name, display length, table name, heading
    *OR
      PERFORM build_fieldcat.
      gs_layout-zebra = 'X'.
    *top of page event does not work without I_callback_program
      v_repid = sy-repid.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program                = v_repid
          i_structure_name                  = 'BSID'
       i_background_id                   = 'ALV_BACKGROUND'
          i_grid_title                      = 'This is the grid title'
      I_GRID_SETTINGS                   =
          is_layout                         = gs_layout
          it_fieldcat                       = gt_fieldcat[]
          it_events                         = gt_events[]
        TABLES
          t_outtab                          = gt_bsid.
    Form..............:  populate_for_fm
    Description.......:  Populates fields for function module used in ALV
    FORM populate_for_fm USING p_row
                               p_col
                               p_fieldname
                               p_len
                               p_table
                               p_desc.
      w_fieldcat-row_pos      = p_row.          "Row Position
      w_fieldcat-col_pos      = p_col.          "Column Position
      w_fieldcat-fieldname    = p_fieldname.    "Field name
      w_fieldcat-outputlen    = p_len.          "Column Lenth
      w_fieldcat-tabname      = p_table.        "Table name
      w_fieldcat-reptext_ddic = p_desc.         "Field Description
      w_fieldcat-input        = '1'.
      APPEND w_fieldcat TO gt_fieldcat.
      CLEAR w_fieldcat.
    ENDFORM.                    " populate_for_fm
    *&      Form  build_events
    FORM build_events.
      DATA: ls_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = gt_events.
      READ TABLE gt_events
                 WITH KEY name =  slis_ev_user_command
                 INTO ls_event.
      IF sy-subrc = 0.
        MOVE slis_ev_user_command TO ls_event-form.
        APPEND ls_event TO gt_events.
      ENDIF.
      READ TABLE gt_events
                 WITH KEY name =  slis_ev_top_of_page
                 INTO ls_event.
      IF sy-subrc = 0.
        MOVE slis_ev_top_of_page TO ls_event-form.
        APPEND ls_event TO gt_events.
      ENDIF.
    ENDFORM.                    " build_events
    *&      Form  USER_COMMAND
    When user command is called it uses 2 parameters. The itab
    passed to the ALV is in whatever order it currently is on screen.
    Therefore, you can read table itab index rs_selfield-tabindex to get
    all data from the table. You can also check r_ucomm and code
    accordingly.
    FORM user_command USING  r_ucomm     LIKE sy-ucomm
                             rs_selfield TYPE slis_selfield.
      READ TABLE gt_bsid INDEX rs_selfield-tabindex.
    error checking etc.
      SET PARAMETER ID 'KUN' FIELD gt_bsid-kunnr.
      CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
    ENDFORM.                    "user_command
    *&      Form  top_of_page
    Your own company logo can go here if it has been saved (OAOR)
    If the logo is larger than the size of the headings in gt_page,
    the window will not show full logo and will have a scroll bar. Thus,
    it is a good idea to have a standard ALV header if you are going to
    use logos in your top of page.
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = gt_page
          i_logo             = 'ENJOYSAP_LOGO'.
    ENDFORM.                    "top_of_page
    *&      Form  build_fieldcat
    *Many and varied fields are available here. Have a look at documentation
    *for FM REUSE_ALV_LIST_DISPLAY and REUSE_ALV_FIELDCATALOG_MERGE
    FORM build_fieldcat.
      w_fieldcat-fieldname  = 'BUDAT'.
      w_fieldcat-seltext_m  = 'Dte pst'.
      w_fieldcat-ddictxt(1) = 'M'.
      w_fieldcat-edit = 'x'.
    Can change the position of fields if you do not want them in order
    of the DDIC or itab
    w_fieldcat-row_pos = '1'.
    w_fieldcat-col_pos = '10'.
      APPEND w_fieldcat TO gt_fieldcat.
      CLEAR w_fieldcat.
    ENDFORM.                    " build_fieldcat
    *&      Form  build_page_header
          gt_page is used in top of page (ALV subroutine - NOT event)
          *H = Header, S = Selection, A = Action
    FORM build_page_header.
    For Headers, Key is not printed and is irrelevant. Will not cause
    a syntax error, but is not used.
      gs_page-typ  = 'H'.
      gs_page-info = 'Header 1'.
      APPEND gs_page TO gt_page.
      gs_page-typ  = 'H'.
      gs_page-info = 'Header 2'.
      APPEND gs_page TO gt_page.
    For Selections, the Key is printed (bold). It can be anything up to 20
    bytes. It gets printed in order of code here, not by key value.
      gs_page-typ  = 'S'.
      gs_page-key  = 'And the winner is:'.
      gs_page-info = 'Selection 1'.
      APPEND gs_page TO gt_page.
      gs_page-typ  = 'S'.
      gs_page-key  = 'Runner up:'.
      gs_page-info = 'Selection 2'.
      APPEND gs_page TO gt_page.
    For Action, Key is also irrelevant.
      gs_page-typ  = 'A'.
      gs_page-info = 'Action goes here'.
      APPEND gs_page TO gt_page.
    ENDFORM.                    " build_page_header

  • Pls tell  me abut this function REUSE_ALV_COMMENTARY_WRITE

    hi all,
                   pls tell  me abut this function REUSE_ALV_COMMENTARY_WRITE.
          what is exactly does it.
    regards
    vikas saini.

    hi,
    it is used to display header and footer in ALV...
    TYPE-POOLS : slis.
    TABLES : mara,
             makt,
             marc.
    DATA : BEGIN OF itab OCCURS 0,
            matnr LIKE mara-matnr,
            maktx LIKE makt-maktx,
            werks LIKE marc-werks,
           END OF itab.
    DATA : t_fcat TYPE slis_t_fieldcat_alv,
           t_eve TYPE slis_t_event,
           st_line TYPE slis_listheader,
           t_list_top_page TYPE slis_t_listheader,
           t_list_end_page TYPE slis_t_listheader.
    DATA : t_mat LIKE mara-matnr.
    SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS : mat FOR mara-matnr.
    SELECTION-SCREEN : END OF BLOCK blk1.
    INITIALIZATION.
      PERFORM build_cat USING t_fcat.
      PERFORM build_eve.
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM build_header USING t_list_top_page[].
      PERFORM build_footer USING t_list_end_page[].
      PERFORM dis_data.
    *&      Form  buils_cat
    *       text
    *      -->TEMP_FCAT  text
    FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.
      DATA : wa_fcat TYPE slis_fieldcat_alv.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'MATNR'.
      wa_fcat-seltext_m = 'Material'.
      APPEND wa_fcat TO temp_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'MAKTX'.
      wa_fcat-seltext_m = 'Material Description'.
      APPEND wa_fcat TO temp_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'WERKS'.
      wa_fcat-seltext_m = 'Plant'.
    *  wa_fcat-row_pos = 2.
      APPEND wa_fcat TO temp_fcat.
      CLEAR wa_fcat.
    ENDFORM.                    "build_cat
    *&      Form  build_eve
    *       text
    FORM build_eve.
      DATA : wa_eve TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         i_list_type           = 0
       IMPORTING
         et_events             = t_eve
    * 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.
      READ TABLE t_eve INTO wa_eve WITH KEY name = 'END_OF_LIST'.
      IF sy-subrc = 0.
        wa_eve-form = 'END_OF_PAGE'.
        MODIFY t_eve FROM wa_eve INDEX sy-tabix.
      ENDIF.
    ENDFORM.                    "build_eve
    *&      Form  get_data
    *       text
    FORM get_data.
      SELECT mara~matnr makt~maktx marc~werks INTO CORRESPONDING FIELDS OF TABLE itab
      FROM mara INNER JOIN makt ON
      mara~matnr = makt~matnr
      INNER JOIN marc ON
      mara~matnr = marc~matnr
      WHERE mara~matnr IN mat.
    ENDFORM.                    "get_data
    *&      Form  dis_data
    *       text
    FORM dis_data.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         i_callback_program                = 'ZALV_PRDS'
         i_callback_top_of_page            = 'TOP_OF_PAGE'
         it_fieldcat                       = t_fcat
         i_save                            = 'A'
         it_events                         = t_eve
       TABLES
          t_outtab                          = itab
    * 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.                    "dis_data
    *&      Form  build_header
    *       text
    *      -->TEMP_LIST          text
    *      -->TTYPE              text
    *      -->SLIS_T_LISTHEADER  text
    FORM build_header USING temp_list TYPE slis_t_listheader.
      CLEAR st_line.
      st_line-typ = 'H'.
      st_line-info = 'Material Info'.
      APPEND st_line TO temp_list.
    CLEAR st_line.
      st_line-typ = 'S'.
      st_line-info = 'Material Info'.
      APPEND st_line TO temp_list.
    CLEAR st_line.
      st_line-typ = 'A'.
      st_line-info = 'Material Info'.
      APPEND st_line TO temp_list.
    ENDFORM.                    "build_header
    *&      Form  build_footer
    *       text
    *      -->TEMP_LIST  text
    FORM build_footer USING temp_list TYPE slis_t_listheader.
      CLEAR st_line.
      st_line-typ = 'H'.
      st_line-info = 'Dhwani Shah'.
      APPEND st_line TO temp_list.
    ENDFORM.                    "build_header
    *&      Form  top_Of_page
    *       text
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = t_list_top_page.
    ENDFORM.                    "top_Of_page
    *&      Form  end_of_page
    *       text
    FORM end_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = t_list_end_page.
    ENDFORM.                    "end_of_page
    <REMOVED BY MODERATOR>
    Edited by: Alvaro Tejada Galindo on Feb 25, 2008 5:44 PM

  • REUSE_ALV_COMMENTARY_WRITE not writing the the the hearder Lines in ECC 6.0

    Hi Experts,
    I am using 'REUSE_ALV_COMMENTARY_WRITE' to write top of paGe in ALV display.
    But it only display blank space in the header.
    Any  suggestions?
    here is the code:
    FORM top_of_page.                                           "#EC CALLED
      CLEAR : wa_commentary,
              it_commentary,
              it_commentary[].
      MOVE sy-datum TO lv_date.
      WRITE lv_date USING EDIT MASK '__.__.____' TO lv_date1.
      CONCATENATE text-006 text-010 lv_date1 INTO lv_header_info SEPARATED BY space.
      MOVE co_h            TO wa_commentary-typ.
      MOVE lv_header_info  TO wa_commentary-info.
      APPEND wa_commentary TO it_commentary.
      SHIFT so_matnr-high LEFT DELETING LEADING '0'.
      SHIFT so_matnr-low  LEFT DELETING LEADING '0'.
      IF so_matnr-high NE space.
        CONCATENATE text-011 text-010 so_matnr-low text-016 so_matnr-high INTO lv_header_info SEPARATED BY space.
      ELSE.
        CONCATENATE text-011 text-010 so_matnr-low INTO lv_header_info SEPARATED BY space.
      ENDIF.
      MOVE co_s            TO wa_commentary-typ.
      MOVE lv_header_info  TO wa_commentary-info.
      APPEND wa_commentary TO it_commentary.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = it_commentary.
    ENDFORM. "top_of_page
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            i_callback_program     = lv_repid
            it_fieldcat            = it_fieldcat
            i_callback_top_of_page = 'TOP_OF_PAGE'
          TABLES
            t_outtab               = it_sapnodiff
          EXCEPTIONS
            program_error          = 1
            OTHERS                 = 2.
    Regards
    Saroj

    Hi,
    This should work. Please try
    Thanks!
    Sandeep
    TYPE-POOLS: SLIS.
    DATA      : TBL_FCAT TYPE SLIS_FIELDCAT_ALV OCCURS 0 WITH HEADER LINE,
                TBL_SORTFIELDS TYPE SLIS_T_SORTINFO_ALV,
                G_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA: FLD_CAT TYPE SLIS_FIELDCAT_ALV.
    DATA: T_EVENTS TYPE SLIS_T_EVENT.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                I_CALLBACK_PROGRAM     = SY-REPID
                I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
                IS_LAYOUT              = G_LAYOUT
                IT_FIELDCAT            = TBL_FCAT[]
           TABLES
                T_OUTTAB               = TABLE_REPORT
           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 BUILD_EVENT .
      DATA: WA_EVENTS LIKE LINE OF T_EVENTS.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           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.
      ELSE.
        READ TABLE T_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                                                      INTO WA_EVENTS.
        IF SY-SUBRC = 0.
          WA_EVENTS-FORM = 'TOP_OF_PAGE'.
          MODIFY T_EVENTS FROM WA_EVENTS INDEX SY-TABIX TRANSPORTING FORM.
        ENDIF.
      ENDIF.
    ENDFORM.                    " build_event
    FORM TOP_OF_PAGE.
      DATA: IT_COMMENTARY TYPE SLIS_T_LISTHEADER,
            WA_IT_COMMENTARY TYPE SLIS_T_LISTHEADER WITH HEADER LINE.
      DATA : L_BDATE(10) TYPE C,
      L_EDATE(10) TYPE C.
      WA_IT_COMMENTARY-INFO = SY-TITLE.
      WA_IT_COMMENTARY-TYP = 'H'.
      APPEND WA_IT_COMMENTARY TO IT_COMMENTARY.
      CLEAR: L_BDATE, EDATE.
      WRITE SY-DATUM TO L_BDATE MM/DD/YYYY.
      WRITE SY-UZEIT TO L_EDATE USING EDIT MASK '__:__:__'.
      CONDENSE L_EDATE.
      CONCATENATE 'System Date/System time'(026) L_BDATE '/' L_EDATE INTO
      WA_IT_COMMENTARY-INFO SEPARATED BY SPACE.
      WA_IT_COMMENTARY-TYP = 'S'.
      APPEND WA_IT_COMMENTARY TO IT_COMMENTARY.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
                IT_LIST_COMMENTARY = IT_COMMENTARY.
    Edited by: sandeep reddy on Jun 4, 2010 1:06 AM

  • Example of  a Simple ALV Report using Function Modules (not OO)

    Hi,
    I am new to ABAP. Where can I get a proper Example of  a Simple ALV Report using Function Modules?  I searched the forum but did not find a proper solution. Kindly help.
    Smruthi.
    Edited by: Smruthi Acharya on Jan 29, 2009 7:13 PM

    Hi,
    Use this demo code:-
    REPORT  z_alv01 MESSAGE-ID zmsg.
    *          TABLES
    TABLES : ekpo.
    *          TYPE POOLS
    TYPE-POOLS : slis.
    *          TYPE DECLARATION
    TYPES : BEGIN OF t_ekpo,
              ebeln TYPE ekpo-ebeln,
              ebelp TYPE ekpo-ebelp,
              matnr TYPE ekpo-matnr,
              werks TYPE ekpo-werks,
              menge TYPE ekpo-menge,
            END OF t_ekpo.
    *          PARAMETERS
    PARAMETERS : s_var TYPE disvariant-variant.
    *          DATA DECLARATION
    *VARIABLES
    DATA : check(1),
           rep_id TYPE sy-repid.
    *INTERNAL TABLE TYPE OF ZEKPO
    DATA : it_ekpo TYPE STANDARD TABLE OF t_ekpo WITH HEADER LINE.
    *FIELD CATALOG
    DATA : it_field TYPE slis_t_fieldcat_alv,
           wa_field TYPE slis_fieldcat_alv.
    *SORTING
    DATA : it_sort TYPE slis_t_sortinfo_alv,
           wa_sort TYPE slis_sortinfo_alv.
    *FOR TOP OF THE PAGE
    DATA : it_top TYPE slis_t_listheader,
           wa_top TYPE slis_listheader.
    *FOR END OF THE PAGE
    DATA : it_end TYPE slis_t_listheader,
           wa_end TYPE slis_listheader.
    *TO CAPTURE EVENTS AND HANDLE
    DATA : it_event TYPE slis_t_event,
           wa_event TYPE slis_alv_event.
    *FOR GRID TITLE
    DATA : wa_title TYPE lvc_title.
    *FOR LAYOUT
    DATA : wa_layout TYPE slis_layout_alv.
    *FOR EXCLUDING STANDARD BUTTON FROM ALV TOOLBAR
    DATA : it_exclude TYPE slis_t_extab,
           wa_exclude TYPE slis_extab.
    *FOR VARIANT
    DATA : wa_variant TYPE disvariant.
    *          INITIALIZATION
    INITIALIZATION.
      check = 'X'.
      rep_id = sy-repid.
      wa_variant-report = sy-repid.
    *GET DEFUALT ON THE SELECTION SCREEN FOR DEFAULT DISPLAY
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
        EXPORTING
          i_save        = 'A'
        CHANGING
          cs_variant    = wa_variant
        EXCEPTIONS
          wrong_input   = 1
          not_found     = 2
          program_error = 3
          OTHERS        = 4.
      IF sy-subrc = 0.               " IF DEFAULT VARIANT FOUND
        s_var = wa_variant-variant.  " PASS THE DEFAULT VARIANT TO THE SELECTION SCREEN FIELD
      ENDIF.
    *          AT-SELECTION SCREEN ON VALUE REQUEST
    *          TO GET THE F4 HELP FOR VARIANT
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_var.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
        EXPORTING
          is_variant                = wa_variant
    *   I_TABNAME_HEADER          =
    *   I_TABNAME_ITEM            =
    *   IT_DEFAULT_FIELDCAT       =
         i_save                    = 'A'
    *   I_DISPLAY_VIA_GRID        = ' '
       IMPORTING
    *   E_EXIT                    =
         es_variant                = wa_variant
       EXCEPTIONS
         not_found                 = 1
         program_error             = 2
         OTHERS                    = 3.
      IF sy-subrc = 0.
        s_var = wa_variant-variant. " PASS THE SELECTED VARIANT TO THE SELECTION SCREEN FIELD
      ENDIF.
    *          AT-SELECTION SCREEN
    *          TO CHECK THE EXISTENCE FOR VARIANT
    AT SELECTION-SCREEN.
      wa_variant-variant = s_var.
      CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
        EXPORTING
          i_save        = 'A'
        CHANGING
          cs_variant    = wa_variant
        EXCEPTIONS
          wrong_input   = 1
          not_found     = 2
          program_error = 3
          OTHERS        = 4.
      IF sy-subrc <> 0.
        MESSAGE w001.
      ENDIF.
    *          START OF SELECTION
    START-OF-SELECTION.
      SELECT ebeln
             ebelp
             matnr
             werks
             menge
             FROM ekpo
             INTO TABLE it_ekpo.
    *          FIELD CATALOG
      wa_field-fieldname = 'EBELN'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 10.
      wa_field-seltext_l = 'PO #'.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
      wa_field-fieldname = 'EBELP'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 10.
      wa_field-seltext_l = 'Line Item'.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
      wa_field-fieldname = 'MATNR'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 15.
      wa_field-seltext_l = 'Material'.
    *  wa_field-input = check.
    *  wa_field-edit = check.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
      wa_field-fieldname = 'WERKS'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 6.
      wa_field-seltext_l = 'Plant'.
    *  wa_field-input = check.
    *  wa_field-edit = check.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
      wa_field-fieldname = 'MENGE'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 10.
      wa_field-seltext_l = 'Qty.'.
    *  wa_field-input = check.
    *  wa_field-edit = check.
      wa_field-do_sum = check.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
    *          SORT W.R.T. PURCHASE ORDER NUMBER
      wa_sort-spos = 1.
      wa_sort-fieldname = 'EBELN'.
      wa_sort-tabname = 'IT_EKPO'.
      wa_sort-up = check.
      wa_sort-subtot = check.
      APPEND wa_sort TO it_sort.
      CLEAR wa_sort.
    *          FOR GRID TITLE
      wa_title = 'Hello'.
    *          FOR LAYOUT
      wa_layout-zebra = check.
    *          FOR EXCLUDING STANDARD BUTTONS FROM ALV TOOLBAR
      wa_exclude-fcode = '&OUP'.
      APPEND wa_exclude TO it_exclude.
      CLEAR wa_exclude.
      wa_exclude-fcode = '&ODN'.
      APPEND wa_exclude TO it_exclude.
      CLEAR wa_exclude.
      wa_exclude-fcode = '&OAD'.
      APPEND wa_exclude TO it_exclude.
      CLEAR wa_exclude.
    *  wa_exclude-fcode = '&AVE'.
    *  APPEND wa_exclude TO it_exclude.
    *  CLEAR wa_exclude.
      wa_exclude-fcode = '&INFO'.
      APPEND wa_exclude TO it_exclude.
      CLEAR wa_exclude.
    *          POPULATE ALL EVENTS INTO INTERNAL TABLE
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = it_event
        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.
      READ TABLE it_event INTO wa_event WITH KEY name = 'END_OF_LIST'.
      wa_event-form = 'END'.
      MODIFY it_event FROM wa_event INDEX sy-tabix.
      CLEAR wa_event.
    *          DISPLAY RECORDS IN ALV GRID
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
    *   I_INTERFACE_CHECK                 = ' '
    *   I_BYPASSING_BUFFER                = ' '
    *   I_BUFFER_ACTIVE                   = ' '
       i_callback_program                = rep_id
    *   i_callback_pf_status_set          = 'PF'
       i_callback_user_command           = 'COMMAND'
       i_callback_top_of_page            = 'TOP'
    *   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *   I_CALLBACK_HTML_END_OF_LIST       = ' '
    *   I_STRUCTURE_NAME                  =
    *   I_BACKGROUND_ID                   = ' '
       i_grid_title                      = wa_title
    *   I_GRID_SETTINGS                   =
       is_layout                         = wa_layout
       it_fieldcat                       = it_field
       it_excluding                      = it_exclude
    *   IT_SPECIAL_GROUPS                 =
       it_sort                           = it_sort
    *   IT_FILTER                         =
    *   IS_SEL_HIDE                       =
    *   I_DEFAULT                         = 'X'
       i_save                            = 'A'
       is_variant                        = wa_variant
       it_events                         = it_event
    *   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                          = it_ekpo
    EXCEPTIONS
       program_error                     = 1
       OTHERS                            = 2.
      IF sy-subrc <> 0.
      ENDIF.
    *&      Form  top
    *       TO WRITE THE HEADER
    FORM top.
      REFRESH it_top.
      wa_top-typ = 'S'.
      wa_top-key = text-001.
      wa_top-info = rep_id.
      APPEND wa_top TO it_top.
      CLEAR wa_top.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_top
    *   I_LOGO                   =
    *   I_END_OF_LIST_GRID       =
    *   I_ALV_FORM               =
    ENDFORM.                    "top
    *&      Form  end
    *       TO WRITE THE FOOTER
    FORM end.
      REFRESH it_end.
      wa_end-typ = 'S'.
      wa_end-key = text-001.
      wa_end-info = rep_id.
      APPEND wa_end TO it_end.
      CLEAR wa_end.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_end
    *   I_LOGO                   =
    *   I_END_OF_LIST_GRID       =
    *   I_ALV_FORM               =
    ENDFORM.                    "end
    *&      Form  pf
    *       FOR PF-STATUS WITH USER DEFINED BUTTONS
    *      -->RT_EXTAB   text
    FORM pf USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZTG_PF_ALV'.
    ENDFORM.                    "pf
    *&      Form  command
    *       TO HANDLE USER ACTIONS AGAINST PF-STATUS
    *      -->UCOMM      text
    *      -->SELFIELD   text
    FORM command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield.
      DATA : ok_code TYPE sy-ucomm.
      ok_code = ucomm.
      CASE ok_code.
        WHEN 'T_DOWN'.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = 'HELLO'
              txt1  = 'USER COMMAND'
              txt2  = 'TOTAL DOWN'.
        WHEN 'DOWN'.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = 'HELLO'
              txt1  = 'USER COMMAND'
              txt2  = 'DOWN'.
        WHEN 'UP'.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = 'HELLO'
              txt1  = 'USER COMMAND'
              txt2  = 'UP'.
        WHEN 'T_UP'.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = 'HELLO'
              txt1  = 'USER COMMAND'
              txt2  = 'TOTAL UP'.
      ENDCASE.
    ENDFORM.                    "command
    Hope this helps you.
    Thanks & Regards,
    Tarun Gambhir

  • Trying to add header using REUSE_ALV_COMMENTARY_WRITE', it is showing blank

    Hi,
    I am trying to add header to my ALV grid report using the FM REUSE_ALV_COMMENTARY_WRITE'
    It is displaying a blank window.
    My code is
    *& Report  YGTSPRODUCT
    *& Author : Krishna Chaitanya Nandimandalam
    *& Desc :   Display Products by Product Characteristics
    REPORT  YGTSPRODUCT.
    *& Structure declarations
    type-pools : slis.
    TYPES  : BEGIN OF TY_CTSNUMC,
             GUID_CTSNUMC TYPE /SAPSLL/CTSNUMC-GUID_CTSNUMC, "Primary Key as GUID in "RAW" Format
             GUID_MOBJ    TYPE /SAPSLL/CTSNUMC-GUID_MOBJ,    "Primary Key as GUID in "RAW" Format
             STCTS        TYPE /SAPSLL/CTSNUMC-STCTS,        "Numbering Scheme for Customs Tariff System
             CCNGN        TYPE /SAPSLL/CTSNUMC-CCNGN,        "Number (Generic/Structured)
             CRTSP        TYPE /SAPSLL/PRGEN-CRTSP,         "UTC Time Stamp When Object Was Added
             CHTSP        TYPE /SAPSLL/PRGEN-CHTSP,          "UTC Time Stamp When Object Was Changed
           END OF TY_CTSNUMC.
    TEST --CREATING ANOTHER STUCTURE TO GET THE COMMON FIELD FOR GUID_PR
    TYPES : BEGIN OF TY_PRCTSC,
            GUID_PRCTSC  TYPE /SAPSLL/PRCTSC-GUID_PRCTSC,   "Primary Key as GUID in "RAW" Format
            GUID_PR      TYPE /SAPSLL/PRCTSC-GUID_PR,  "Primary Key as GUID in "RAW" Format
            STCTS        TYPE /SAPSLL/PRCTSC-STCTS,   "Numbering Scheme for Customs Tariff System
            GUID_CTSNUMC TYPE /SAPSLL/PRCTSC-GUID_CTSNUMC, "Primary Key as GUID in "RAW" Format
            END OF TY_PRCTSC.
    TYPES : BEGIN OF TY_PRGEN,
          GUID_PRGEN TYPE  /SAPSLL/PRGEN-GUID_PRGEN, "Primary Key as GUID in "RAW" Format
          GUID_PR    TYPE  /SAPSLL/PR-GUID_PR,       "Primary Key as GUID in "RAW" Format
          ATTR20A    TYPE  /SAPSLL/PRGEN-ATTR20A,    "Substance ID
          ATTR05A    TYPE  /SAPSLL/PRGEN-ATTR05A,    "Materail Type
          ATTR10A    TYPE  /SAPSLL/PRGEN-ATTR10A,    "Materail Group
          ATTR05B    TYPE  /SAPSLL/PRGEN-ATTR05B,    "Sub-Family
           END OF TY_PRGEN.
    TYPES : BEGIN OF TY_PNTPR,
           GUID_PR TYPE /SAPSLL/PR-GUID_PR,
           PRVSY TYPE /SAPSLL/PNTPR-PRVSY,   "R3 MATERIAL NUMBER
           GRVSY TYPE /SAPSLL/PNTPR-GRVSY,   "LOGICAL SYSTEM GROUP
           END OF TY_PNTPR.
    *TYPES : D_PSUI TYPE /SAPSLL/PRODUCT_SELECT_UI_S-QUAL_STA.  "PRODUCT STATUS
    *TYPES : BEGIN OF D_CORSTA,
           GUID_MOBJ TYPE /SAPSLL/CORSTA-GUID_MOBJ,
           QUAL_STA TYPE /SAPSLL/CORSTA-QUAL_STA,
           CHTSP TYPE /SAPSLL/CORSTA-CHTSP,
           END OF D_CORSTA.
    >PRODUCT STAUS
    *DATA  : BEGIN OF T_CORSTA OCCURS 0,
           GUID_MOBJ TYPE /SAPSLL/CORSTA-GUID_MOBJ,
           QUAL_STA TYPE /SAPSLL/CORSTA-QUAL_STA,
           END OF T_CORSTA.
    TYPES : BEGIN OF TY_PR,
            GUID_PR TYPE /SAPSLL/PR-GUID_PR,  "Primary Key as GUID in "RAW" Format
            CRTSP   TYPE /SAPSLL/PR-CRTSP, "PRODUCT CREATED ON
            CHTSP   TYPE /SAPSLL/PR-CHTSP, "PRODUCT CHANGED ON
            END OF TY_PR.
    TYPES : BEGIN OF TY_PRT,
           GUID_PR TYPE /SAPSLL/PRT-GUID_PR, "Primary Key as GUID in "RAW" Format
           PRTXT   TYPE /SAPSLL/PRT-PRTXT,    "Materail description
            END OF TY_PRT.
    TYPES : BEGIN OF TY_FINAL,
    *T_PRCTSC
             GUID_PRCTSC  TYPE /SAPSLL/PRCTSC-GUID_PRCTSC,   "Primary Key as GUID in "RAW" Format
             GUID_PR      TYPE /SAPSLL/PRCTSC-GUID_PR,  "Primary Key as GUID in "RAW" Format
             STCTS        TYPE /SAPSLL/PRCTSC-STCTS,   "Numbering Scheme for Customs Tariff System
             GUID_CTSNUMC TYPE /SAPSLL/PRCTSC-GUID_CTSNUMC, "Primary Key as GUID in "RAW" Format
    *T_CTSNUMC
            GUID_CTSNUMC TYPE /SAPSLL/CTSNUMC-GUID_CTSNUMC, "Primary Key as GUID in "RAW" Format
             GUID_MOBJ    TYPE /SAPSLL/CTSNUMC-GUID_MOBJ,    "Primary Key as GUID in "RAW" Format
            STCTS        TYPE /SAPSLL/CTSNUMC-STCTS,        "Numbering Scheme for Customs Tariff System
             CCNGN        TYPE /SAPSLL/CTSNUMC-CCNGN,        "Number (Generic/Structured)
            CRTSP        TYPE /SAPSLL/PRGEN-CRTSP,         "UTC Time Stamp When Object Was Added
            CHTSP        TYPE /SAPSLL/PRGEN-CHTSP,          "UTC Time Stamp When Object Was Changed
    *T_PRGEN
             GUID_PRGEN TYPE  /SAPSLL/PRGEN-GUID_PRGEN, "Primary Key as GUID in "RAW" Format
            GUID_PR    TYPE  /SAPSLL/PR-GUID_PR,       "Primary Key as GUID in "RAW" Format
             ATTR20A    TYPE  /SAPSLL/PRGEN-ATTR20A,    "Substance ID
             ATTR05A    TYPE  /SAPSLL/PRGEN-ATTR05A,    "Materail Type
             ATTR10A    TYPE  /SAPSLL/PRGEN-ATTR10A,    "Materail Group
             ATTR05B    TYPE  /SAPSLL/PRGEN-ATTR05B,    "Sub-Family
    *T_PNTPR
            GUID_PR    TYPE /SAPSLL/PR-GUID_PR,  "Primary Key as GUID in "RAW" Format
             PRVSY      TYPE /SAPSLL/PNTPR-PRVSY,   "R3 MATERIAL NUMBER
             GRVSY      TYPE /SAPSLL/PNTPR-GRVSY,   "LOGICAL SYSTEM GROUP
    T_PR
           GUID_PR TYPE /SAPSLL/PR-GUID_PR,  "Primary Key as GUID in "RAW" Format
            CRTSP   TYPE /SAPSLL/PR-CRTSP, "PRODUCT CREATED ON
            CHTSP   TYPE /SAPSLL/PR-CHTSP, "PRODUCT CHANGED ON
    *T_PRT
            GUID_PR TYPE /SAPSLL/PRT-GUID_PR, "Primary Key as GUID in "RAW" Format
             PRTXT   TYPE /SAPSLL/PRT-PRTXT,    "Materail description
            END OF TY_FINAL.
    *& INTERNAL TABLE AND WORK AREA DECLARATIONS
    DATA :
          T_CTSNUMC TYPE STANDARD TABLE OF TY_CTSNUMC INITIAL SIZE 0,
          T_PRCTSC   TYPE STANDARD TABLE OF TY_PRCTSC INITIAL SIZE 0, "TEST INCLUDED NEW STRUCTURE TO GET GUID_PR
          T_PRGEN TYPE STANDARD TABLE OF TY_PRGEN INITIAL SIZE 0,
          T_PNTPR TYPE STANDARD TABLE OF TY_PNTPR INITIAL SIZE 0,
          T_PR TYPE STANDARD TABLE OF TY_PR INITIAL SIZE 0,
          T_PRT TYPE STANDARD TABLE OF TY_PRT INITIAL SIZE 0,
         T_CORSTA TYPE STANDARD TABLE OF D_CORSTA INITIAL SIZE 0,
          T_FINAL TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 0.
    DATA :
           WA_CTSNUMC TYPE TY_CTSNUMC,
           WA_PRCTSC   TYPE TY_PRCTSC,   "TEST INCLUDED NEW STRUCTURE TO GET GUID_PR
           WA_PRGEN   TYPE TY_PRGEN,
           WA_PNTPR  TYPE TY_PNTPR,
           WA_PR TYPE TY_PR,
           WA_PRT TYPE TY_PRT,
          WA_CORSTA TYPE D_CORSTA,
           WA_FINAL TYPE TY_FINAL.
    *& ALV DATA DECLARATIONS
    DATA : lt_fieldcat TYPE slis_t_fieldcat_alv,
           lw_fieldcat LIKE LINE OF lt_fieldcat,
           lt_fieldcat1 TYPE slis_t_fieldcat_alv,
           lw_fieldcat1 LIKE LINE OF lt_fieldcat,
           lt_listheader TYPE slis_t_listheader,
           lw_listheader LIKE LINE OF lt_listheader,       lt_events TYPE slis_t_event,
           lw_events LIKE LINE OF lt_events.
    *& DATA DECLARATIONS FOR SELECTION SCREEN
    DATA : G_STCTS   TYPE /SAPSLL/CTSNUMC-STCTS, "NUMBER SCHEME
           G_ATTR20A TYPE /SAPSLL/PRGEN-ATTR20A, "SUBSTANCE ID
           G_PRVSY   TYPE /SAPSLL/PNTPR-PRVSY,   "R3 MATERIAL NUMBER
           G_GRVSY   TYPE /SAPSLL/PNTPR-GRVSY,   "LOGICAL SYS GROUP
         G_QSTA    TYPE /SAPSLL/PRODUCT_SELECT_UI_S-QUAL_STA, "PRODUCT STATUS
           G_CORSTA  TYPE /SAPSLL/CORSTA-QUAL_STA,  "PRODUCT STATUS
           G_CRTSP   TYPE /SAPSLL/PR-CRTSP,      "PRODUCT CREATED ON
           G_CHSTP   TYPE /SAPSLL/PR-CHTSP.      "PRODUCT CHANGED ON
    *& SELECTION-SCREEN DECLARATIONS
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS : S_STCTS FOR G_STCTS OBLIGATORY,      "NUMBER SCHEME
                     S_AT20A FOR G_ATTR20A,    "SUBSTANCE ID
                     S_PRVSY FOR G_PRVSY,      "R3 MATERIAL NUMBER
                     S_GRVSY FOR G_GRVSY,      "LOGICAL SYS GROUP
                    S_QSTA FOR G_QSTA,        "PRODUCT STATUS
                     S_CORSTA FOR G_CORSTA,    "PRODUCT STATUS
                     S_CRTSP FOR G_CRTSP,      "PRODUCT CREATED ON
                     S_CHSTP FOR G_CHSTP.      "PRODUCT CHANGED ON
    SELECTION-SCREEN END OF BLOCK B1.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME. " TITLE. " TEXT-002.
    PARAMETERS : BOTH  RADIOBUTTON GROUP RG1,
                 EXICLASS RADIOBUTTON GROUP RG1.
    SELECTION-SCREEN END OF BLOCK B2.
    *& INITIALIZATION
    INITIALIZATION .
      CLEAR : WA_CTSNUMC,
              WA_PRCTSC,
              WA_PRGEN,
              WA_PNTPR,
              WA_PR,
              WA_PRT,
              WA_FINAL.
      REFRESH : T_CTSNUMC,
                T_PRCTSC,
                T_PRGEN,
                T_PNTPR,
                T_PR,
                T_PRT,
                T_FINAL.
    *&      START OF SELECTION
    START-OF-SELECTION.
      LW_EVENTS-NAME = 'TOP_OF_PAGE' .
      LW_EVENTS-FORM = 'SUB' .
      APPEND LW_EVENTS TO LT_EVENTS .  PERFORM LIST_HEADER.
    IF BOTH EQ 'X'.
      PERFORM VALIDATE_NSCHEME.
      PERFORM GET_DATA.
      PERFORM BUILD_FIELDCAT.
      PERFORM LIST_HEADER.
    PERFORM f_events CHANGING lt_events.
      PERFORM DISP_ALV_DATA.
    ENDIF.
    *&      Form  VALIDATE_NSCHEME
    *&            VALIDATE NUMBER SCHEME
    FORM VALIDATE_NSCHEME .
      DATA : L_STCTS TYPE /SAPSLL/CTSNUMC-STCTS.
      SELECT SINGLE STCTS FROM /SAPSLL/CTSNUMC INTO L_STCTS
            WHERE STCTS IN S_STCTS .
      IF SY-SUBRC <> 0.
        MESSAGE 'Invalid Numbering Scheme for Customs Tariff System'
               TYPE 'E'.
      ENDIF .
    ENDFORM.                    " VALIDATE_NSCHEME
    *&      Form  GET_DATA
         GET DATA INTO FINAL TABLE
    FORM GET_DATA .
      SELECT GUID_CTSNUMC "Primary Key as GUID in "RAW" Format
             GUID_MOBJ    "Primary Key of Main Object
             STCTS        "Numbering Scheme for Customs Tariff System
             CCNGN        "Number (Generic/Structured)
             CRTSP        "UTC Time Stamp When Object Was Added
             CHTSP        "UTC Time Stamp When Object Was Changed
             FROM /SAPSLL/CTSNUMC
             INTO TABLE T_CTSNUMC
             WHERE STCTS IN S_STCTS.
    *DELETE ADJACENT DUPLICATES FROM T_CTSNUMC COMPARING GUID_CTSNUMC.
      IF T_CTSNUMC IS NOT INITIAL.
    GET GUID_PR FOR THE CORRESPONDING GUID_CTSNUMC
        SELECT GUID_PRCTSC  "Primary Key as GUID in "RAW" Format
               GUID_PR      "Primary Key as GUID in "RAW" Format
               STCTS        "Numbering Scheme for Customs Tariff System
               GUID_CTSNUMC "Primary Key as GUID in "RAW" Format
               FROM /SAPSLL/PRCTSC
               INTO TABLE T_PRCTSC
               for all entries in t_ctsnumc
               WHERE GUID_CTSNUMC EQ T_CTSNUMC-GUID_CTSNUMC.
    IF T_PRCTSC IS NOT INITIAL.
    GET FIELDS FROM PRGEN BASED ON THE GUID_PR
        SELECT GUID_PRGEN "Primary Key as GUID in "RAW" Format
               GUID_PR    "Primary Key as GUID in "RAW" Format
               ATTR20A    "SUBSTANCE ID
               ATTR05A    "Materail Type
               ATTR10A    "Materail Group
               ATTR05B    "Sub-Family
               FROM /SAPSLL/PRGEN
               INTO TABLE T_PRGEN
               FOR ALL ENTRIES IN T_PRCTSC
               WHERE GUID_PR EQ T_PRCTSC-GUID_PR.
    DELETE ADJACENT DUPLICATES FROM T_PRGEN COMPARING GUID_PR.
    GET FIELDS FROM PNTPR BASED ON THE GUID_PR
        SELECT GUID_PR    "Primary Key as GUID in "RAW" Format
               PRVSY      "R3 MATERIAL NUMBER
               GRVSY      "LOGICAL SYSTEM GROUP
               FROM /SAPSLL/PNTPR
               INTO TABLE T_PNTPR
               FOR ALL ENTRIES IN T_PRCTSC
               WHERE GUID_PR EQ T_PRCTSC-GUID_PR.
    *DELETE ADJACENT DUPLICATES FROM T_PRGEN COMPARING GUID_PR.
    GET CORSTA-QUAL_STA FOR STATUS CATEGORY BESED ON THE T_CTSNUMC-GUID_MOBJ
    *SELECT GUID_MOBJ
          QUAL_STA
          FROM /SAPSLL/CORSTA
          INTO TABLE T_CORSTA
          FOR ALL ENTRIES IN T_CTSNUMC
          WHERE GUID_MOBJ EQ T_CTSNUMC-GUID_MOBJ.
    MISSING FIELD >>>>>>>PRODUCT STATUS
    GET CRSTP CHSTP FROM PR BASED ON GUID_PR
        SELECT GUID_PR   "Primary Key as GUID in "RAW" Format
               CRTSP     "PRODUCT CREATED ON
               CHTSP     "PRODUCT CHANGED ON
               FROM /SAPSLL/PR
               INTO TABLE T_PR
               FOR ALL ENTRIES IN T_PRCTSC
               WHERE GUID_PR EQ T_PRCTSC-GUID_PR.
    *DELETE ADJACENT DUPLICATES FROM T_PR COMPARING GUID_PR.
    GET PRTXT FROM PRT BASED ON GUID_PR
        SELECT GUID_PR "Primary Key as GUID in "RAW" Format
               PRTXT   "MATERIAL DESCRIPTION
               FROM /SAPSLL/PRT
               INTO TABLE T_PRT
               FOR ALL ENTRIES IN T_PRCTSC
               WHERE GUID_PR EQ T_PRCTSC-GUID_PR.
    *DELETE ADJACENT DUPLICATES FROM T_PRT COMPARING GUID_PR.
       ENDIF.
      ENDIF.
    FILLING DATA INTO T_FINAL
    REFRESH T_FINAL.
        LOOP AT T_PRCTSC INTO WA_PRCTSC.
          WA_FINAL-GUID_PRCTSC  = WA_PRCTSC-GUID_PRCTSC.
          WA_FINAL-GUID_PR      = WA_PRCTSC-GUID_PR.
          WA_FINAL-STCTS        = WA_PRCTSC-STCTS.
          WA_FINAL-GUID_CTSNUMC = WA_PRCTSC-GUID_CTSNUMC.
    READ TABLE T_CTSNUMC INTO WA_CTSNUMC WITH KEY GUID_CTSNUMC = WA_PRCTSC-GUID_CTSNUMC.
    IF SY-SUBRC = 0.
       WA_FINAL-GUID_CTSNUMC = WA_CTSNUMC-GUID_CTSNUMC.
         WA_FINAL-GUID_MOBJ    = WA_CTSNUMC-GUID_MOBJ.
       WA_FINAL-STCTS        = WA_CTSNUMC-STCTS.
         WA_FINAL-CCNGN        = WA_CTSNUMC-CCNGN.
       WA_FINAL-CRTSP        = WA_CTSNUMC-CRTSP.
       WA_FINAL-CHTSP        = WA_CTSNUMC-CHTSP.
    ENDIF.
        READ TABLE T_PRGEN INTO WA_PRGEN WITH KEY GUID_PR = WA_PRCTSC-GUID_PR.
        IF SY-SUBRC = 0.
          WA_FINAL-GUID_PRGEN = WA_PRGEN-GUID_PRGEN.
          WA_FINAL-GUID_PR    = WA_PRGEN-GUID_PR.
          WA_FINAL-ATTR20A    = WA_PRGEN-ATTR20A.
          WA_FINAL-ATTR05A    = WA_PRGEN-ATTR05A.
          WA_FINAL-ATTR10A    = WA_PRGEN-ATTR10A.
          WA_FINAL-ATTR05B    = WA_PRGEN-ATTR05B.
        ENDIF.
        READ TABLE T_PNTPR INTO WA_PNTPR WITH KEY GUID_PR = WA_PRCTSC-GUID_PR.
        IF SY-SUBRC = 0.
         WA_FINAL-GUID_PR    = WA_PNTPR-GUID_PR.
          WA_FINAL-PRVSY      = WA_PNTPR-PRVSY.
          WA_FINAL-GRVSY      = WA_PNTPR-GRVSY.
        ENDIF.
        READ TABLE T_PR INTO WA_PR WITH KEY GUID_PR = WA_PRCTSC-GUID_PR.
        IF SY-SUBRC = 0.
         WA_FINAL-GUID_PR = WA_PR-GUID_PR.
          WA_FINAL-CRTSP   = WA_PR-CRTSP.
          WA_FINAL-CHTSP   = WA_PR-CHTSP.
        ENDIF.
        READ TABLE T_PRT INTO WA_PRT WITH KEY GUID_PR = WA_PRCTSC-GUID_PR.
        IF SY-SUBRC = 0.
         WA_FINAL-GUID_PR = WA_PRT-GUID_PR.
          WA_FINAL-PRTXT   = WA_PRT-PRTXT.
        ENDIF.
        APPEND WA_FINAL TO T_FINAL.
       DELETE ADJACENT DUPLICATES FROM T_FINAL COMPARING ATTR20A.
        CLEAR WA_FINAL.
      ENDLOOP.
    ENDFORM.                    " GET_D
    *&      Form  BUILD_FIELDCAT
          text
    -->  p1        text
    <--  p2        text
    FORM BUILD_FIELDCAT .
    REFRESH LT_FIELDCAT.
      lw_fieldcat-col_pos = 1.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'ATTR20A'.
      lw_fieldcat-seltext_m = 'SUBSTANCE ID'.
      lw_fieldcat-outputlen = '15'.
      lw_fieldcat-FIX_COLUMN = 'X'.
    lw_fieldcat-KEY = 'X'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 2.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'PRVSY'.
      lw_fieldcat-seltext_m = 'R3 MAT NBR'.
      lw_fieldcat-outputlen = '14'.
      lw_fieldcat-FIX_COLUMN = 'X'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 3.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'PRTXT'.
      lw_fieldcat-seltext_m = 'MAT DESCRIPTION'.
      lw_fieldcat-outputlen = '19'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 4.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'GRVSY'.
      lw_fieldcat-seltext_m = 'LOGICAL SYS GRP'.
      lw_fieldcat-outputlen = '21'.
      APPEND lw_fieldcat TO lt_fieldcat.
    lw_fieldcat-col_pos = 5.
    lw_fieldcat-tabname = 'T_FINAL'.
    lw_fieldcat-fieldname = 'QUAL_STA'.
    lw_fieldcat-seltext_m = 'PRODUCT STATUS'.
      lw_fieldcat-outputlen = 'x'.
    APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 6.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'CRTSP'.
      lw_fieldcat-seltext_m = 'PRODUCT CREATED ON'.
      lw_fieldcat-outputlen = '21'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 7.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'CHTSP'.
      lw_fieldcat-seltext_m = 'PRODUCT CHANGED ON'.
      lw_fieldcat-outputlen = '21'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 8.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'ATTR05A'.
      lw_fieldcat-seltext_m = 'MATERIAL TYPE'.
      lw_fieldcat-outputlen = '18'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 9.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'ATTR10A'.
      lw_fieldcat-seltext_m = 'MATERIAL GRP'.
      lw_fieldcat-outputlen = '18'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 10.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'ATTR05B'.
      lw_fieldcat-seltext_m = 'SUB-FAMILY'.
      lw_fieldcat-outputlen = '18'.
      APPEND lw_fieldcat TO lt_fieldcat.
    lw_fieldcat-col_pos = 11.
    lw_fieldcat-tabname = 'T_FINAL'.
    lw_fieldcat-fieldname = 'CCNGN'.
    lw_fieldcat-seltext_m = 'SUBID CLASSIFICATION'.
    APPEND lw_fieldcat TO lt_fieldcat.
    lw_fieldcat-col_pos = 12.
    lw_fieldcat-tabname = 'T_FINAL'.
    lw_fieldcat-fieldname = 'CCNGN'.
    lw_fieldcat-seltext_m = 'SUBID CLASSIFICATION'.
    APPEND lw_fieldcat TO lt_fieldcat.
    lw_fieldcat-col_pos = 13.
    lw_fieldcat-tabname = 'T_FINAL'.
    lw_fieldcat-fieldname = 'CCNGN'.
    lw_fieldcat-seltext_m = 'SUBID CLASSIFICATION'.
    APPEND lw_fieldcat TO lt_fieldcat.
    CLEAR LW_FIELDCAT.
    ENDFORM.                    " BUILD_FIELDCAT
    *&      Form  LIST_HEADER
          text
    -->  p1        text
    <--  p2        text
    FORM LIST_HEADER .
    DATA :  LT_LISTHEADER TYPE slis_t_listheader,
            LW_LISTHEADER LIKE LINE OF lt_listheader.
      LW_LISTHEADER-TYP = 'H'.
      LW_LISTHEADER-INFO = 'DISPLAY PRODUCTS BY PRODUCT CHARACTERISTIC'.
      APPEND LW_LISTHEADER TO LT_LISTHEADER.
      LW_LISTHEADER-TYP = 'S' .
      LW_LISTHEADER-KEY = 'TIME' .
      LW_LISTHEADER-INFO = SY-UZEIT .
      APPEND LW_LISTHEADER TO LT_LISTHEADER.
      LW_LISTHEADER-TYP = 'S' .
      LW_LISTHEADER-KEY = 'DATE' .
      LW_LISTHEADER-INFO = SY-DATUM .
      APPEND LW_LISTHEADER TO LT_LISTHEADER.
      LW_LISTHEADER-TYP = 'S' .
      LW_LISTHEADER-KEY = 'CLIENT' .
      LW_LISTHEADER-INFO = SY-MANDT .
      APPEND LW_LISTHEADER TO LT_LISTHEADER.
    ENDFORM.                    " LIST_HEADER
    *&      Form  DISP_ALV_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM DISP_ALV_DATA .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_BUFFER_ACTIVE                   = ' '
        I_CALLBACK_PROGRAM                = 'I_REPID'
      I_CALLBACK_TOP_OF_PAGE            = 'TOP-OF-PAGE1'
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      = 'GTS Substance- Product Classification Report'.
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
        IT_FIELDCAT                       = LT_FIELDCAT
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
        IT_EVENTS                         = LT_EVENTS
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = T_FINAL
    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_ALV_DATA
    FORM SUB.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
        IT_LIST_COMMENTARY       = LT_LISTHEADER.
      I_LOGO                   =*
      I_END_OF_LIST_GRID       =*
      I_ALV_FORM               =*
    ENDFORM.
    Any suggestions and help will be appreciated!
    Regards,
    Kittu

    Hi Ram,
    When I had put a Break point on the FM Reuse_alv_grid_display
    The parameter IT_EVENTS is not getting populated and it is not calling the FORM SUB.
    But LT_EVENTS is holding the data 'TOP_OF_PAGE' and the form name as SUB.
    FORM DISP_ALV_DATA .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_BUFFER_ACTIVE                   = ' '
        I_CALLBACK_PROGRAM                = 'I_REPID'
      I_CALLBACK_TOP_OF_PAGE            = 'TOP-OF-PAGE1'
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      = 'GTS Substance- Product Classification Report'.
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
        IT_FIELDCAT                       = LT_FIELDCAT
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
        IT_EVENTS                         = LT_EVENTS
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = T_FINAL
    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_ALV_DATA
    FORM SUB.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
        IT_LIST_COMMENTARY       = LT_LISTHEADER.
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
    ENDFORM.
    Any suggestions will be apprectiated.
    Regards,
    Kittu

  • How do I insert a logo in ALV using Function Modules?

    hai !
           i want to display the logo on the grid .
        can any one suggest me which function i should use?
        any  help will be appreciated.

    Hi,
    Look at the sample code to display LOGO.
      call function 'REUSE_ALV_GRID_DISPLAY'
         exporting
           i_callback_program      = i_repid
           i_callback_user_command = 'USER_COMMAND_PERNR'
           it_fieldcat             = header
           is_layout               = gt_layout
           i_callback_top_of_page  = 'TOP-OF-PAGE1'
           i_grid_title            = xyz
           it_sort                 = gt_sort[]
           i_default               = 'X'
           i_save                  = 'U'
           is_variant              = gt_variant
           it_events               = gt_events
          tables
           t_outtab                = t_output.
      clear t_output.
    Form TOP-OF-PAGE1
    form top-of-page1.
      data: header type slis_t_listheader,
      wa type slis_listheader. "infield like wa-info, nline type n.
    TITLE AREA
      wa-typ = 'S'.
      wa-info = text-h04.
      append wa to header.
      wa-typ = 'S'.
      write sy-datum to wa-info mm/dd/yyyy.
      concatenate text-h03 wa-info into wa-info separated by space.
      append wa to header.
      wa-typ = 'S'.
      concatenate text-h02 sy-uname into wa-info separated by space.
      append wa to header.
      wa-typ = 'S'.
      concatenate text-h01 sy-repid into wa-info separated by space.
      append wa to header.
    ********" LOGO
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = header
                i_logo             = 'ENJOYSAP_LOGO'.
    *********" LOGO
    endform.
    Here in TOP-OF-PAGE form it will show you the Prog name,Date, User Name.
    Just you need to give the text in it.
    You can refer the below link also.
    http://www.sapdevelopment.co.uk/reporting/alv/alvgrid.htm
    Thanks.
    If this helps you reward with points.
    Message was edited by: KDeepak

  • Partner function update using CRM_PARTNER_MAINTAIN_SINGLE_OW

    Hi Experts,
    Can some one pls help me with some working code/sample to update a partner function value in CRM Order. I tried the below code but it doesnt seems to be working.
    Appreciate your help on this.
        call function 'CRM_ORDER_READ'
          exporting
            it_header_guid       = lt_guid
            iv_mode              = 'C'
          importing
            et_orderadm_h        = it_orderadm_h
          et_sales             = it_sales
          et_orderadm_i        = it_orderadm_i
          et_orgman            = it_orgman
          et_shipping          = it_shipping
          et_partner           = it_partner
          exceptions
            document_not_found   = 1
            error_occurred       = 2
            document_locked      = 3
            no_change_authority  = 4
            no_display_authority = 5
            no_change_allowed    = 6
            others               = 7.
        if sy-subrc <> 0.
    Implement suitable error handling here
        endif.
          clear wa_orderadm_h.
          read table it_orderadm_h into wa_orderadm_h index 1.
         lv_ref_guid = it_orderadm_h-guid.
          call function 'CRM_PARTNER_GET_CONTROL_INF_OW'
            exporting
              iv_ref_guid          = wa_orderadm_h-guid
              iv_ref_kind          = 'A'
            importing
              es_partner_control   = ls_partner_control
            exceptions
              determination_failed = 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.
          move-corresponding ls_partner_control to es_partner_control.
    Common fields for both create and change *****
          import lv_qplant to lv_werks2 from memory id 'QUOTA_PLANT'.
          select single partner_no
            from crmm_locmap
            into w_partner
           where ext_locno = lv_werks2. "wa_quota_so_items_return-werks2.
    Partner_com parameter
          ls_partner_com-ref_guid = wa_orderadm_h-guid.
          ls_partner_com-ref_kind = 'A'.
          ls_partner_com-partner_no = w_partner.
          ls_partner_com-display_type = 'BP'.
          ls_partner_com-no_type = 'BP'.
    Find whether create or change is required
          read table gt_partner into wa_partner with key partner_fct = '00000035' ref_kind ='A'.
          if sy-subrc eq 0.
            ls_partner_com-kind_of_entry = 'C'.
            ls_partner_com-partner_fct = '00000035'.
            ls_ip_fields-fieldname = 'DISPLAY_TYPE'.
            append ls_ip_fields to lt_ip_fields.
            ls_ip_fields-fieldname = 'KIND_OF_ENTRY'.
            append ls_ip_fields to lt_ip_fields.
            ls_ip_fields-fieldname = 'NO_TYPE'.
            append ls_ip_fields to lt_ip_fields.
            ls_ip_fields-fieldname = 'PARTNER_FCT'.
            append ls_ip_fields to lt_ip_fields.
            ls_ip_fields-fieldname = 'PARTNER_NO'.
            append ls_ip_fields to lt_ip_fields.
            call function 'CRM_PARTNER_MAINTAIN_SINGLE_OW'
              exporting
                iv_ref_guid           = wa_orderadm_h-guid
                iv_ref_kind           = 'A'
                is_partner_com        = ls_partner_com
                iv_populate_mode      = 'X'
                iv_check_partner_only = ' '
                is_partner_control    = es_partner_control
                iv_external_call      = 'X'
              changing
                ct_input_field_names  = lt_ip_fields
              exceptions
                error_occurred        = 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.

    Reply to an old post but still can be helpful to someone in need
    *& Report  ZUPDATE_TRANSACTION_PF
    REPORT  zupdate_transaction_pf.
    *======================================================================*
    *  Variable declaration for ALV                                        *
    *======================================================================*
    TYPE-POOLS: slis.     " Type pool required for ALV
    TYPES: BEGIN OF gs_output,
              extid             TYPE ib_extid,
              prodid            TYPE comt_product_id,
              msg_type          TYPE bapi_mtype,
              message           TYPE bapi_msg,
              layout            TYPE slis_t_specialcol_alv,
           END OF gs_output.
    DATA: gt_output             TYPE TABLE OF gs_output,
          gs_output             TYPE gs_output,
          gt_fieldcat           TYPE slis_t_fieldcat_alv,
          gt_color_green        TYPE slis_t_specialcol_alv,
          gt_color_red          TYPE slis_t_specialcol_alv,
          gt_color_yellow       TYPE slis_t_specialcol_alv,
          gt_layout             TYPE slis_layout_alv,
          lt_header_guid        TYPE crmt_object_guid_tab,
          ls_header_guid        TYPE crmt_object_guid,
          lt_partner            TYPE crmt_partner_external_wrkt,
          ls_partner            TYPE crmt_partner_external_wrk,
          lt_guid               TYPE crmt_object_guid_tab,
          lt_guid_single        TYPE crmt_object_guid_tab,
          lt_req_obj            TYPE crmt_object_name_tab,
          ls_req_obj            TYPE crmt_object_name,
          lt_partner_update     TYPE crmt_partner_comt,
          lt_partner_com        TYPE crmt_partner_comt,
          ls_partner_com        TYPE crmt_partner_com,
          lt_input_fields       TYPE crmt_input_field_names_tab,
          ls_input_fields       TYPE crmt_input_field_names,
          lv_partner_fct        TYPE crmt_partner_fct,
          lv_partner_no         TYPE bu_partner,
          lv_trans_no           TYPE crmt_object_id_db,
          lt_return             TYPE STANDARD TABLE OF ddshretval,
          ls_return             LIKE LINE OF lt_return,
          lv_guid               TYPE crmt_object_guid.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE block1.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT (36) forpf.
    PARAMETERS: p_pf TYPE comt_partner_fct OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT (36) frombp.
    PARAMETERS: p_frombp TYPE but000-partner  OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT (36) tobp.
    PARAMETERS: p_tobp TYPE but000-partner OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT (36) fortrans.
    SELECT-OPTIONS: p_trans FOR lv_trans_no MATCHCODE OBJECT crm_order_object_id.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE block2.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT (36) fortest.
    PARAMETERS: p_test AS CHECKBOX.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK b2.
    INITIALIZATION.
      fortrans = 'Transaction Number'.
      forpf = 'Partner Function'.
      frombp = 'From Business Partner'.
      tobp = 'To Business Partner'.
      fortest = 'Test Run, Check Only'.
    *======================================================================*
    *  AT SELECTION-SCREEN                                                 *
    *======================================================================*
    AT SELECTION-SCREEN.
      FIELD-SYMBOLS:
        <sscrfields> TYPE sscrfields.
      DATA:
      lv_answer   TYPE char1,
      lt_options  TYPE TABLE OF rfc_db_opt,
      lt_fields   TYPE TABLE OF rfc_db_fld,
      lt_func_det TYPE TABLE OF tab512.
      CHECK sy-ucomm EQ 'ONLI'.
    AT SELECTION-SCREEN ON p_trans.
      CHECK sy-ucomm EQ 'ONLI' OR sy-ucomm EQ 'SJOB'.
      IF p_trans IS INITIAL.
        MESSAGE e398(00) WITH 'Please enter the transaction numbers'.
      ENDIF.
    AT SELECTION-SCREEN ON p_pf.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pf.
      CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
        EXPORTING
          tabname           = 'CRMC_PARTNER_FT'
          fieldname         = 'PARTNER_FCT'
        TABLES
          return_tab        = lt_return[]
        EXCEPTIONS
          field_not_found   = 1
          no_help_for_field = 2
          inconsistent_help = 3
          no_values_found   = 4
          OTHERS            = 5.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      IF lt_return[] IS NOT INITIAL.
        READ TABLE lt_return[] INTO ls_return INDEX 1.
        p_pf = ls_return-fieldval.
      ENDIF.
      CHECK sy-ucomm EQ 'ONLI' OR sy-ucomm EQ 'SJOB'.
      IF p_pf IS INITIAL.
        MESSAGE e398(00) WITH 'Please enter the partner function'.
      ENDIF.
    AT SELECTION-SCREEN ON p_frombp.
      CHECK sy-ucomm EQ 'ONLI' OR sy-ucomm EQ 'SJOB'.
      IF p_frombp IS INITIAL.
        MESSAGE e398(00) WITH 'Please enter the business partner id to be changed'.
      ENDIF.
    AT SELECTION-SCREEN ON p_tobp.
      CHECK sy-ucomm EQ 'ONLI' OR sy-ucomm EQ 'SJOB'.
      IF p_tobp IS INITIAL.
        MESSAGE e398(00) WITH 'Please enter the new business partner id'.
      ENDIF.
    *======================================================================*
    *  START-OF-SELECTION                                                  *
    *======================================================================*
    START-OF-SELECTION.
      PERFORM init_alv_col_color.
      PERFORM update_transactions.
    END-OF-SELECTION.
      PERFORM create_report.
    *&      Form  create_fieldcat
    *       text
    FORM create_fieldcat.
      PERFORM add_fld USING: 'EXTID'     'Order ID'        '20' 1,
                             'PRODID'    'Product ID'         '20' 2,
                             'MSG_TYPE'  'MSG Type'            '8'  9,
                             'MESSAGE'   'Message Description' '100' 10.
    ENDFORM.                    "CREATE_FIELDCAT
    *&      Form  add_fld
    *       text
    *      -->P_FIELDNAME  text
    *      -->P_SELTEXT_M  text
    *      -->P_OUTPUTLEN  text
    *      -->P_COL_POS    text
    FORM add_fld USING p_fieldname
                       p_seltext_m
                       p_outputlen
                       p_col_pos.
      DATA: ls_fieldcat TYPE slis_fieldcat_alv.
      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname     = p_fieldname.
      ls_fieldcat-ref_fieldname = p_fieldname.
      ls_fieldcat-seltext_m     = p_seltext_m.
      ls_fieldcat-outputlen     = p_outputlen.
      ls_fieldcat-col_pos       = p_col_pos.
      APPEND ls_fieldcat TO gt_fieldcat.
    ENDFORM.                    "add_fld
    *&      Form  create_report
    *       text
    FORM create_report.
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING
          text = 'Creating output ...'.
    * Get the field headers into an internal table
      PERFORM create_fieldcat.
      gt_layout-coltab_fieldname = 'LAYOUT'.
      gt_layout-colwidth_optimize = 'X'.
      gt_layout-zebra = ' '.
    * Call ABAP/4 Grid Viewer
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_top_of_page = 'TOP-OF-PAGE'
          i_callback_program     = sy-repid
          it_fieldcat            = gt_fieldcat[]
          is_layout              = gt_layout
        TABLES
          t_outtab               = gt_output  " it_sort = gt_sort
        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.                    " create_report
    *&      Form  init_alv_col_color
    *       text
    FORM init_alv_col_color.
    * Red ALV column
      PERFORM add_field_color USING gt_color_red 'MSG_TYPE' '6' '1' '1'.
      PERFORM add_field_color USING gt_color_red 'MESSAGE' '6' '1' '1'.
    * Green ALV column
      PERFORM add_field_color USING gt_color_green 'MSG_TYPE' '5' '1' '1'.
      PERFORM add_field_color USING gt_color_green 'MESSAGE' '5' '1' '1'.
    * Yellow ALV column
      PERFORM add_field_color USING gt_color_yellow 'MSG_TYPE' '3' '1' '1'.
      PERFORM add_field_color USING gt_color_yellow 'MESSAGE' '3' '1' '1'.
    ENDFORM.                    "init_alv_col_color
    *&      Form  add_field_color
    *       text
    *      -->PT_COLOR   text
    *      -->FIELDNAME  text
    *      -->COL        text
    *      -->INT        text
    *      -->INV        text
    FORM add_field_color USING pt_color TYPE slis_t_specialcol_alv
                               fieldname col int inv.
      DATA: ls_color TYPE slis_specialcol_alv.
      ls_color-fieldname = fieldname.
      ls_color-color-col = col.
      ls_color-color-int = int.
      ls_color-color-inv = inv.
      APPEND ls_color TO pt_color.
    ENDFORM.                    "add_field_color
    * 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 = 'Data Migration'.
      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.
    * Time
      wa_header-typ  = 'S'.
      wa_header-key  = 'Time: '.
      CONCATENATE  sy-uzeit(2) ':'
                   sy-uzeit+2(2) ':'
                   sy-uzeit+4(2) INTO wa_header-info.   "time
      APPEND wa_header TO t_header.
      CLEAR: wa_header.
    * File Path
      wa_header-typ  = 'S'.
      wa_header-key  = 'File Path: '.
      wa_header-info = ''.
      APPEND wa_header TO t_header.
      CLEAR: wa_header.
    * Test Mode
      wa_header-typ  = 'S'.
      wa_header-key  = 'Test Mode: '.
      IF p_test = 'X'.
        wa_header-info = 'Yes'.
      ENDIF.
      APPEND wa_header TO t_header.
      CLEAR: wa_header.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = t_header.
    ENDFORM.                    "top-of-page
    *&      Form  UPDATE_TRANSACTIONS
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM update_transactions .
      SELECT guid INTO TABLE lt_header_guid FROM crmd_orderadm_h WHERE object_id IN p_trans.
      IF sy-subrc EQ 0.
        LOOP AT lt_header_guid INTO ls_header_guid.
          CLEAR: lt_guid, lt_req_obj, lt_partner, lt_input_fields.
          ls_req_obj = 'PARTNER'.
          APPEND ls_req_obj TO lt_req_obj.
          APPEND ls_header_guid TO lt_guid.
          CALL FUNCTION 'CRM_ORDER_READ'
            EXPORTING
              it_header_guid       = lt_guid
              it_requested_objects = lt_req_obj
            IMPORTING
              et_partner           = lt_partner
            EXCEPTIONS
              document_not_found   = 1
              error_occurred       = 2
              document_locked      = 3
              no_change_authority  = 4
              no_display_authority = 5
              no_change_allowed    = 6
              OTHERS               = 7.
          lv_partner_fct = p_pf.
          lv_partner_no = p_frombp.
          SHIFT p_frombp LEFT DELETING LEADING '0'.
          READ TABLE lt_partner INTO ls_partner WITH KEY partner_fct = p_pf partner_no = p_frombp.
          IF sy-subrc EQ 0.
            LOOP AT lt_partner INTO ls_partner WHERE partner_fct = p_pf AND partner_no = p_frombp.
              lv_partner_no = p_tobp.
              CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                EXPORTING
                  input  = lv_partner_no
                IMPORTING
                  output = lv_partner_no.
              REFRESH lt_input_fields.
              CLEAR   ls_partner_com.
              ls_partner_com-ref_guid     = ls_partner-ref_guid.
              ls_partner_com-ref_kind     = ls_partner-ref_kind.
              ls_partner_com-ref_partner_handle = ls_partner-ref_partner_handle.
              ls_partner_com-kind_of_entry = 'C'.
              ls_partner_com-partner_fct  = ls_partner-partner_fct.
              ls_partner_com-partner_no   = lv_partner_no.
              ls_partner_com-display_type = 'BP'.
              ls_partner_com-no_type      = 'BP'.
              ls_partner_com-ref_partner_no = ls_partner-ref_partner_no.
              ls_partner_com-ref_partner_fct = ls_partner-ref_partner_fct.
              ls_partner_com-ref_no_type     

  • Example/help for CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' editable

    hello experts,
    are there any example using function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'  with editable columns.
    Or, have somebody an idea to resolve my problem.
    I can edit the fields in the alv-grid, but I don't see the changes in the internal table using 'LVC_TRANSFER_FROM_SLIS' function.
    thanks and regards.
    K. WErner

    hi,
    here is the code for editable Hieararchical ALV
    TYPE-POOLS : slis.
    TABLES : mseg.
    DATA : BEGIN OF itab_head OCCURS 0,
            mat LIKE mseg-matnr,
    *        matnr LIKE mseg-matnr,
            werks LIKE mseg-werks,
           END OF itab_head.
    DATA : BEGIN OF itab_item OCCURS 0,
    *        mat LIKE mseg-matnr,
            matnr LIKE mseg-matnr,
            werks LIKE mseg-werks,
            mblnr LIKE mseg-mblnr,
            menge LIKE mseg-menge,
           END OF itab_item.
    DATA : t_fcat TYPE slis_t_fieldcat_alv,
           key_info TYPE slis_keyinfo_alv,
           t_eve TYPE slis_t_event,
           gt_subtot TYPE slis_t_sortinfo_alv,
           subtot LIKE LINE OF gt_subtot,
           t_listhead TYPE slis_t_listheader,
           st_line TYPE slis_listheader.
    DATA : lin_no TYPE i.
    DATA : t_mtdoc LIKE mseg-mblnr.
    SELECT-OPTIONS : mat FOR mseg-matnr.
    INITIALIZATION.
      PERFORM build_cat USING t_fcat.
      PERFORM build_eve.
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM dis_data.
    *&      Form  build_cat
    *       text
    *      -->TEMP_FCAT  text
    FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.
      DATA : wa_fcat TYPE slis_fieldcat_alv.
      wa_fcat-tabname = 'ITAB_HEAD'.
      wa_fcat-fieldname = 'MAT'.
      wa_fcat-seltext_m = 'Material'.
      APPEND wa_fcat TO temp_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_HEAD'.
      wa_fcat-fieldname = 'WERKS'.
      wa_fcat-seltext_m = 'Plant'.
      wa_fcat-edit = 'X'.
      wa_fcat-input = 'X'.
      APPEND wa_fcat TO temp_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITEM'.
      wa_fcat-fieldname = 'MBLNR'.
      wa_fcat-seltext_m = 'Material Doc.'.
      APPEND wa_fcat TO temp_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITEM'.
      wa_fcat-fieldname = 'MENGE'.
      wa_fcat-seltext_m = 'Quantity'.
      wa_fcat-edit = 'X'.
      wa_fcat-input = 'X'.
      wa_fcat-do_sum = 'Y'.
      APPEND wa_fcat TO temp_fcat.
      CLEAR wa_fcat.
      subtot-spos = 1.
      subtot-fieldname = 'MAT'.
      subtot-tabname = 'ITAB_HEAD'.
      subtot-up = 'X'.
      subtot-group = 'X'.
      subtot-subtot = 'X'.
      subtot-expa = 'X'.
      APPEND subtot TO gt_subtot.
    ENDFORM.                    "build_cat
    *&      Form  build_eve
    *       text
    FORM build_eve.
      DATA : wa_eve TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         i_list_type           = 0
       IMPORTING
         et_events             = t_eve
    *   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.
      READ TABLE t_eve INTO wa_eve WITH KEY name = 'TOP_OF_PAGE'.
      IF sy-subrc = 0.
        wa_eve-form = 'TOP_OF_PAGE'.
        MODIFY t_eve FROM wa_eve INDEX sy-tabix.
      ENDIF.
    ENDFORM.                    "build_eve
    *&      Form  get_data
    *       text
    FORM get_data.
      SELECT matnr werks mblnr menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE itab_item
      WHERE matnr IN mat.
    ENDFORM.                    "get_data
    *&      Form  dis_data
    *       text
    FORM dis_data.
      key_info-header01 = 'MAT'.
      key_info-item01 = 'MATNR'.
      key_info-header02 = 'WERKS'.
      key_info-item02 = 'WERKS'.
      REFRESH itab_head.
      LOOP AT itab_item.
        ON CHANGE OF itab_item-matnr OR itab_item-werks.
          MOVE-CORRESPONDING itab_item TO itab_head.
          itab_head-mat = itab_item-matnr.
          APPEND itab_head.
        ENDON.
      ENDLOOP.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
          i_callback_program             = 'ZALV_PRDS'
          it_fieldcat                    = t_fcat
          it_sort                        = gt_subtot
          it_events                      = t_eve[]
          i_tabname_header               = 'ITAB_HEAD'
          i_tabname_item                 = 'ITAB_ITEM'
          is_keyinfo                     = key_info
        TABLES
          t_outtab_header                = itab_head
          t_outtab_item                  = itab_item
    * 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.                    "dis_data
    *&      Form  top_of_page
    *       text
    FORM top_of_page.
      CLEAR st_line.
      st_line-typ = 'H'.
      st_line-info = 'Dhwani Shah'.
      APPEND st_line TO t_listhead.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = t_listhead
    *   I_LOGO                   =
    *   I_END_OF_LIST_GRID       =
    *   I_ALV_FORM               =
    ENDFORM.                    "top_of_page
    reward if usefull.....

  • Function module to pricing procedure calculation

    hi,
    I want to know whether any function modules available to get as I see in  Invoice ->
    select item level conditions.
    Where i can see the basic price ,discount, etc as defined in the corresponding pricing procedure.
    i have tried with
    RV_INVOICE_PRICE_PBO
    PRICING_SUBSCREEN_SET_DATA
    here i get only the records which have condition type,
    similarly for P.O. we have
    ME_SWP_SIC_GET_PRICING_INFO
    regards,
    Prabhu
    Points assured.

    REPORT  zmm_pvr.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     TYPE-POOLS                                          *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    TYPE-POOLS slis.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                       TABLES                                            *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    TABLES: mara,                         " General Material Data
            marc,                         " Plant Data for Material
            ekko,                         " Purchasing Document Header
            ekpo,                         " Purchasing Document Item
            lfa1,                         " Vendor Master (General Section)
            konv,                         " Conditions (Transaction Data)
            mbew,                         " Material Valuation
            makt.                         " Material Descriptions
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    DATA DECLARATION                                     *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    DATA: BEGIN OF i_mat OCCURS 1,
            matnr LIKE mara-matnr,
            mtart LIKE mara-mtart,
            werks LIKE marc-werks,
            abcin LIKE marc-abcin,
          END OF i_mat.
    DATA: BEGIN OF itab OCCURS 1,
            ebeln LIKE ekko-ebeln,
            bedat LIKE ekko-bedat,
            lifnr LIKE ekko-lifnr,
            waers LIKE ekko-waers,
            bukrs LIKE ekko-bukrs,
            ekorg LIKE ekko-ekorg,
            name1 LIKE lfa1-name1,
            werks LIKE ekpo-werks,
            menge LIKE ekpo-menge,
            meins LIKE ekpo-meins,
            netpr LIKE ekpo-netpr,
            netwr LIKE ekpo-netwr,
            menge1(16),
            netpr1(16),
            menge2  TYPE string,
            netpr2 TYPE string,
            lrate TYPE p DECIMALS 2,
            stax LIKE ekpo-netwr,
            exbed LIKE ekpo-netwr,
            dcost LIKE konv-kwert,
            nomvl LIKE ekpo-netwr,
            nomrt LIKE ekpo-netwr,
            zplp1 LIKE mbew-zplp1,
            verpr LIKE mbew-verpr,
            bgval LIKE ekpo-netwr,
            varnc LIKE ekpo-netwr,
            maktx LIKE makt-maktx,
            knumv LIKE ekko-knumv,
            ebelp LIKE ekpo-ebelp,
            matnr LIKE ekpo-matnr,
            matkl LIKE ekpo-matkl,
            mtart LIKE ekpo-mtart,
            bprme LIKE ekpo-bprme,
            txz01 LIKE ekpo-txz01,
            mwskz LIKE ekpo-mwskz,
            prdat LIKE ekpo-prdat,
          END OF itab.
    DATA: wtab LIKE itab.
    DATA: v_steuc TYPE marc-steuc.
    DATA: v_brsch TYPE lfa1-brsch.
    DATA: wa_komk TYPE komk.
    DATA: wa_komp TYPE komp.
    DATA: it_komv TYPE TABLE OF komv.
    DATA: wa_komv TYPE komv.
    DATA : wa_fieldcat TYPE  slis_fieldcat_alv,
           gt_fieldcat TYPE  slis_t_fieldcat_alv,
           wa_layout   TYPE  slis_layout_alv,
           lt_sort     TYPE  slis_t_sortinfo_alv,
           i LIKE sy-tabix.
    DATA: gt_events     TYPE slis_t_event.
    DATA: gd_prntparams TYPE slis_print_alv.
    DATA: it_color TYPE   slis_t_specialcol_alv.
    DATA: wa_color TYPE   slis_specialcol_alv.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          Begin Of Selection Screen                      *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    SELECTION-SCREEN BEGIN OF BLOCK pas WITH FRAME TITLE text-001.
    SELECT-OPTIONS s_matnr FOR  ekpo-matnr.
    SELECT-OPTIONS s_werks FOR  ekpo-werks.
    SELECT-OPTIONS s_bedat FOR  ekko-bedat.
    PARAMETERS     p_abcin LIKE marc-abcin OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK pas.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                           INITIALIZATION                                *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    INITIALIZATION.
      IF sy-datum+4(2) GE 4.
        s_bedat-low+6(2) = 01.
        s_bedat-low+4(2) = 04.
        s_bedat-low(4) = sy-datum(4).
      ENDIF.
      IF sy-datum+4(2) LT 4.
        s_bedat-low+6(2) = 01.
        s_bedat-low+4(2) = 04.
        s_bedat-low(4) = sy-datum(4) - 1.
      ENDIF.
      s_bedat-high   = sy-datum.
      APPEND s_bedat.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        AT Selection Screen Output                       *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    AT SELECTION-SCREEN.
    Check for Material Type
      SELECT amatnr amtart bwerks babcin INTO CORRESPONDING FIELDS OF TABLE i_mat
      FROM mara AS a INNER JOIN marc AS b
           ON amatnr = bmatnr
      WHERE a~matnr IN s_matnr
        AND ( amtart = 'IRAM' OR amtart = 'IPAM' OR amtart = 'PRAM' OR amtart = 'PPAM' )
        AND b~werks IN s_werks
        AND b~abcin = p_abcin.
      SORT i_mat BY matnr werks.
      CHECK NOT i_mat[] IS INITIAL.
      READ TABLE i_mat INDEX 1.
      IF sy-subrc <> 0.
        MESSAGE e006(zmm).
        LEAVE LIST-PROCESSING.
      ENDIF.
    Check for Date
      IF ( s_bedat-low IS INITIAL AND s_bedat-high IS INITIAL ).
        s_bedat-sign   = 'I'.
        s_bedat-option = 'BT'.
        IF sy-datum+4(2) GE 4.
          s_bedat-low+6(2) = 01.
          s_bedat-low+4(2) = 04.
          s_bedat-low(4) = sy-datum(4).
        ENDIF.
        IF sy-datum+4(2) LT 4.
          s_bedat-low+6(2) = 01.
          s_bedat-low+4(2) = 04.
          s_bedat-low(4) = sy-datum(4) - 1.
        ENDIF.
        s_bedat-high   = sy-datum.
      ELSEIF ( s_bedat-low IS NOT INITIAL AND s_bedat-high IS INITIAL ).
        s_bedat-low6(2) = s_bedat-low6(2).
        s_bedat-low4(2) = s_bedat-low4(2).
        s_bedat-low(4)   = s_bedat-low(4).
      ELSEIF ( s_bedat-low IS NOT INITIAL AND s_bedat-high IS NOT INITIAL ).
        s_bedat-sign   = 'I'.
        s_bedat-option = 'BT'.
        s_bedat-low6(2) = s_bedat-low6(2).
        s_bedat-low4(2) = s_bedat-low4(2).
        s_bedat-low(4)   = s_bedat-low(4).
        s_bedat-high6(2) = s_bedat-high6(2).
        s_bedat-high4(2) = s_bedat-high4(2).
        s_bedat-high(4)   = s_bedat-high(4).
      ENDIF.
      APPEND s_bedat.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            START OF SELECTION                           *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    START-OF-SELECTION.
    *----- Get all PO for given selection criteria.
    LOOP AT i_mat.
      SELECT
        aebeln abedat alifnr aknumv awaers abukrs a~ekorg
        bebelp bmatnr bmatkl bnetpr bbprme btxz01 bwerks bmenge bmeins bnetwr bmtart bmwskz b~prdat
      FROM ( ekko AS a INNER JOIN ekpo AS b ON  amandt = bmandt AND aebeln = bebeln )
      INTO CORRESPONDING FIELDS OF TABLE itab
      FOR ALL ENTRIES IN i_mat
      WHERE a~bedat IN s_bedat
       AND  a~loekz = ''
       AND  b~matnr = i_mat-matnr
       AND  b~werks = i_mat-werks
       AND  b~loekz = ''
       AND  b~pstyp = '0'
       AND  b~bstyp = 'F'
       AND  b~knttp = ''.
    ENDLOOP.            " END OF i_mat
      CHECK NOT itab[] IS INITIAL.
      SORT itab BY ebeln ebelp.
    *----- Calculating The DCOST -- Delivery Cost
      DATA: BEGIN OF i_konv OCCURS 0,
             knumv LIKE konv-knumv,
             kposn LIKE konv-kposn,
             stunr LIKE konv-stunr,
             zaehk LIKE konv-zaehk,
             kschl LIKE konv-kschl,
             kbetr LIKE konv-kbetr,
             kwert LIKE konv-kwert,
           END OF i_konv.
      SELECT knumv kposn stunr zaehk kschl kbetr kwert
      FROM konv
      INTO CORRESPONDING FIELDS OF TABLE i_konv
      FOR ALL ENTRIES IN itab
      WHERE knumv = itab-knumv
       AND kposn = itab-ebelp
        AND ( kschl   = 'ZFC3' OR kschl   = 'ZQIQ'
           OR kschl   = 'ZQIV' OR kschl   = 'ZFA3'
           OR kschl   = 'ZFB3' OR kschl   = 'ZPF2'
           OR kschl   = 'ZPQ2' OR kschl   = 'ZPV2'
           OR kschl   = 'ZOCP' OR kschl   = 'ZOCQ'
           OR kschl   = 'ZOCV' OR kschl   = 'ZMT1'
           OR kschl   = 'ZIN2' OR kschl   = 'ZIQ2'
           OR kschl   = 'ZIV2' OR kschl   = 'ZBK1'
           OR kschl   = 'ZBKQ' OR kschl   = 'ZBKV' ).
      SORT i_konv BY knumv kposn stunr zaehk kschl .
      DELETE ADJACENT DUPLICATES FROM i_konv.
      DELETE i_konv WHERE kbetr = 0.
      DATA: BEGIN OF i_knumv OCCURS 0,
              knumv LIKE konv-knumv,
              kwert LIKE konv-kwert,
            END OF i_knumv.
      LOOP AT i_konv.
        MOVE i_konv-knumv TO i_knumv-knumv.
        MOVE i_konv-kwert TO i_knumv-kwert.
        COLLECT i_knumv.
      ENDLOOP.
      CLEAR i_konv.
      CLEAR i_knumv.
      LOOP AT itab INTO wtab.
        READ TABLE i_knumv WITH KEY knumv = wtab-knumv.
        IF sy-subrc = 0.
          wtab-dcost = i_knumv-kwert.
          MODIFY itab FROM wtab.
        ENDIF.
      ENDLOOP.
      CLEAR i_knumv.
      CLEAR itab.
    *----- Get the vendor name.
      LOOP AT itab.
        SELECT SINGLE name1 FROM lfa1 INTO itab-name1
                                        WHERE lifnr = itab-lifnr.
        MODIFY itab INDEX sy-tabix TRANSPORTING name1.
      ENDLOOP.
    *----- Calculate Excise Duty, Educat. cess, Sec edu. cess, sales tax
      CLEAR: wa_komk, wa_komp.
    Selecting The Value Of STEUC (Controlling Code)
      CLEAR itab.
      LOOP AT itab.
        SELECT SINGLE steuc
          FROM marc
          INTO v_steuc
         WHERE matnr = itab-matnr
           AND werks = itab-werks.
    Selecting The Value Of BRSCH (Industry key)
        SELECT SINGLE brsch
          FROM lfa1
          INTO v_brsch
         WHERE lifnr = itab-lifnr.
    Filling KOMK (Header Structure)
        wa_komk-kappl     = 'TX'.
        wa_komk-kalsm     = 'TAXINN'.
        wa_komk-lifnr     = itab-lifnr.
        wa_komk-waerk     = itab-waers.
        wa_komk-aland     = 'IN'.
        wa_komk-hwaer     = 'INR'.
        wa_komk-bukrs     = itab-bukrs.
        wa_komk-brsch     = v_brsch.
        wa_komk-prsdt     = itab-bedat.
        wa_komk-ekorg     = itab-ekorg.
        wa_komk-mwskz     = itab-mwskz.
    Filling KOMP (Details Structure)
        wa_komp-kposn     = itab-ebelp.
        wa_komp-matnr     = itab-matnr.
        wa_komp-werks     = itab-werks.
        wa_komp-matkl     = itab-matkl.
        wa_komp-meins     = itab-meins.
        wa_komp-vrkme     = itab-bprme.
        wa_komp-netwr     = itab-netwr.
        wa_komp-wrbtr     = itab-netwr.
        wa_komp-mwskz     = itab-mwskz.
        wa_komp-netpr     = itab-netpr.
        wa_komp-mtart     = itab-mtart.
        wa_komp-kursk_dat = itab-prdat.
        wa_komp-steuc     = v_steuc.
        wa_komp-mgame     = itab-menge.
        wa_komp-mglme     = itab-menge.
        FREE it_komv.
    Calling The Pricing Function To Get GR EXCISE, GR ECES, GR VAT/CST
        CALL FUNCTION 'PRICING'
          EXPORTING
            calculation_type = 'B'
            comm_head_i      = wa_komk
            comm_item_i      = wa_komp
          TABLES
            tkomv            = it_komv.
    Calculating The Excise --excise duty
        DATA: l_kbetr        TYPE komv-kbetr.
        DATA: l_gr_excise    TYPE ekpo-brtwr.
        DATA: l_basic_gr_val TYPE ekpo-netpr.
        l_basic_gr_val = itab-netwr.
        CLEAR: l_kbetr, l_gr_excise.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'JMOP'
                                        OR kschl = 'JAOP'
                                        OR kschl = 'JMIP'
                                        OR kschl = 'JAOQ'.
          l_kbetr     = ( wa_komv-kbetr / 10 ).
          l_gr_excise = ( l_kbetr * l_basic_gr_val ) / 100.
        ENDLOOP.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'JAIP'
                                        OR kschl = 'JAIQ'
                                        OR kschl = 'JMIQ'
                                        OR kschl = 'JMOQ'.
          l_gr_excise = ( wa_komv-kbetr * l_basic_gr_val ).
        ENDLOOP.
    Calculating The ECES -- Educational Cess
        DATA l_gr_eces      TYPE ekpo-netpr.
        CLEAR: l_kbetr, l_gr_eces.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'ZECE'
                                        OR kschl = 'ZECN'.
          l_kbetr     = ( wa_komv-kbetr / 10 ).
          l_gr_eces   = ( l_kbetr * l_gr_excise ) / 100.
        ENDLOOP.
    Calculating The SECES -- Sec. Educational Cess
        DATA l_gr_secs      TYPE ekpo-netpr.
        CLEAR: l_kbetr, l_gr_secs.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'JSEP'
                                        OR kschl = 'JSEI'.
          l_kbetr     = ( wa_komv-kbetr / 10 ).
          l_gr_secs   = ( l_kbetr * l_gr_excise ) / 100.
        ENDLOOP.
    Calculating The VAT/CST --Sales Tax
        DATA l_gr_vatcst    TYPE ekpo-netpr.
        CLEAR: l_kbetr, l_gr_vatcst.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'JVRN'
                                        OR kschl = 'JVRD'
                                        OR kschl = 'JVCS'
                                        OR kschl = 'JVCD'
                                        OR kschl = 'JVCN'
                                        OR kschl = 'JIPS'
                                        OR kschl = 'JIPC'
                                        OR kschl = 'JIPL'.
          l_kbetr     = ( wa_komv-kbetr / 10 ).
          l_gr_vatcst = ( ( l_basic_gr_val + l_gr_excise + l_gr_eces + l_gr_secs ) * l_kbetr ) / 100.
        ENDLOOP.
    Calculating The NOMVL & NOMVR -- NOM Value (Setoff / Inventory ) & NOM Rate
        DATA: l_netpr TYPE ekpo-netpr,
              l_menge TYPE ekpo-menge,
              l_dcost TYPE ekpo-netwr,
              l_nomvl TYPE ekpo-netwr,
              l_nomrt TYPE ekpo-netwr.
        l_netpr = itab-netpr.
        l_menge = itab-menge.
        l_dcost = itab-dcost.
        CLEAR: l_nomvl, l_nomrt.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'JMOP'                        "------setoff
                                        OR kschl = 'ZECE'
                                        OR kschl = 'JSEP'.
          l_nomvl = ( l_netpr * l_menge ) + l_gr_vatcst + l_dcost - ( l_gr_excise + l_gr_eces + l_gr_secs ).
          l_nomrt =  l_nomvl / l_menge.
        ENDLOOP.
        LOOP AT it_komv INTO wa_komv WHERE kschl = 'JMIP'                        "-------inventory
                                        OR kschl = 'ZECN'
                                        OR kschl = 'JSEI'.
          l_nomvl = ( l_netpr * l_menge ) + l_gr_vatcst + l_dcost.
          l_nomrt =  l_nomvl / l_menge.
        ENDLOOP.
        itab-exbed = l_gr_excise + l_gr_eces + l_gr_secs.
        itab-stax  = l_gr_vatcst.
        itab-nomvl = l_nomvl.
        itab-nomrt = l_nomrt.
        MODIFY itab .
        CLEAR itab.
      ENDLOOP.           " end of itab
      LOOP AT itab WHERE exbed = 0.
        itab-nomvl = ( itab-netpr * itab-menge ) + itab-stax + itab-dcost.
        itab-nomrt = itab-nomvl / itab-menge.
        MODIFY itab INDEX sy-tabix TRANSPORTING nomvl nomrt.
      ENDLOOP.
    *----- Calculating The Budget Rate, Moving Average Price, Landed Rate & Material Description
      DATA: verp(15).
      DATA: matdes(40).
      LOOP AT itab.
        SELECT SINGLE zplp1 FROM mbew INTO itab-zplp1
                                        WHERE matnr = itab-matnr AND bwkey = itab-werks.
        SELECT SINGLE verpr FROM mbew INTO itab-verpr
                                        WHERE matnr = itab-matnr AND bwkey = itab-werks.
        itab-lrate = itab-netwr / itab-menge.
        SELECT SINGLE maktx FROM makt INTO itab-maktx
                                        WHERE matnr = itab-matnr AND spras = 'EN'.
        MODIFY itab INDEX sy-tabix TRANSPORTING zplp1 verpr lrate maktx.
        verp = itab-verpr.
        matdes = itab-maktx.
      ENDLOOP.
    *----- Calculating The Budget Value & Variance
      LOOP AT itab.
        itab-bgval = itab-zplp1 * itab-menge.
        itab-varnc = itab-bgval - itab-nomvl.
        MODIFY itab INDEX sy-tabix TRANSPORTING bgval varnc.
      ENDLOOP.
    *------ Calculating Total of Quantity
      DATA: BEGIN OF i_quan OCCURS 1,
               quant LIKE ekpo-menge,
               unit LIKE ekpo-meins,
               nomvl LIKE ekpo-netwr,
               curr LIKE ekko-waers,
               varnc LIKE ekpo-netwr,
               bgval LIKE ekpo-netwr,
             END OF i_quan.
      LOOP AT itab.
        MOVE itab-menge TO i_quan-quant.
        MOVE itab-meins TO i_quan-unit.
        MOVE itab-nomvl TO i_quan-nomvl.
        MOVE itab-waers TO i_quan-curr.
        MOVE itab-varnc TO i_quan-varnc.
        MOVE itab-bgval TO i_quan-bgval.
        COLLECT i_quan.
      ENDLOOP.
      CLEAR itab.
      CLEAR i_quan.
      DATA: qty(15).
      DATA: unt(3).
      DATA: wtd TYPE p DECIMALS 2.
      DATA: wtd2(15).
      DATA: cur(3).
      DATA: var(15).
      DATA: nomvl(15).
      DATA: bgval(15).
      DATA: bgv TYPE p DECIMALS 2.
      DATA: bgv2(15).
      LOOP AT i_quan.
        qty = i_quan-quant.
        unt = i_quan-unit.
        cur = i_quan-curr.
        var = i_quan-varnc.
        bgval = i_quan-bgval.
        nomvl = i_quan-nomvl.
        wtd = nomvl / qty.
        bgv = bgval / qty.
      ENDLOOP.
      CLEAR i_quan.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          DATA DISPLAY                                   *
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      wa_fieldcat-fieldname  = 'EBELN'.
      wa_fieldcat-seltext_l  = 'Purchase Order'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 1.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'BEDAT'.
      wa_fieldcat-seltext_l  = 'PO Date'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 2.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'NAME1'.
      wa_fieldcat-seltext_l  = 'Vendor Name'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 3.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'WERKS'.
      wa_fieldcat-seltext_l  = 'Plant'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 4.
      APPEND wa_fieldcat TO gt_fieldcat.
    wa_fieldcat-fieldname  = 'MENGE2'.
      wa_fieldcat-fieldname  = 'MENGE'.
      wa_fieldcat-seltext_l  = 'Quantity'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 5.
      wa_fieldcat-do_sum     = 'X'.
      APPEND wa_fieldcat TO gt_fieldcat.
    wa_fieldcat-fieldname  = 'NETPR2'.
      wa_fieldcat-fieldname  = 'NETPR'.
      wa_fieldcat-seltext_l  = 'Basic Rate'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 6.
      wa_fieldcat-do_sum     = ' '.
      APPEND wa_fieldcat TO gt_fieldcat.
    wa_fieldcat-fieldname  = 'EXBED'.
    wa_fieldcat-seltext_l  = 'Excise'.
    wa_fieldcat-tabname    = 'ITAB'.
    wa_fieldcat-row_pos    = 1.
    wa_fieldcat-col_pos    = 7.
    APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'STAX'.
      wa_fieldcat-seltext_l  = 'Sale Tax'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 7.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'DCOST'.
      wa_fieldcat-seltext_l  = 'Delivery Cost'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 8.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'NETWR'.
      wa_fieldcat-seltext_l  = 'Landed Value'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 9.
      wa_fieldcat-do_sum     = 'X'.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'LRATE'.
      wa_fieldcat-seltext_l  = 'Landed Rate'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 10.
      wa_fieldcat-do_sum     = ' '.
      APPEND wa_fieldcat TO gt_fieldcat.
    wa_fieldcat-fieldname  = 'NOMVL'.
    wa_fieldcat-seltext_l  = 'NOM Value'.
    wa_fieldcat-tabname    = 'ITAB'.
    wa_fieldcat-row_pos    = 1.
    wa_fieldcat-col_pos    = 12.
    wa_fieldcat-do_sum     = 'X'.
    APPEND wa_fieldcat TO gt_fieldcat.
    wa_fieldcat-fieldname  = 'NOMRT'.
    wa_fieldcat-seltext_l  = 'NOM Rate'.
    wa_fieldcat-tabname    = 'ITAB'.
    wa_fieldcat-row_pos    = 1.
    wa_fieldcat-col_pos    = 13.
    wa_fieldcat-do_sum     = ' '.
    APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'BGVAL'.
      wa_fieldcat-seltext_l  = 'Budget Value'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 11.
      wa_fieldcat-do_sum     = 'X'.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'ZPLP1'.
      wa_fieldcat-seltext_l  = 'Budget Rate'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 12.
      wa_fieldcat-do_sum     = ' '.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_fieldcat-fieldname  = 'VARNC'.
      wa_fieldcat-seltext_l  = 'Variance'.
      wa_fieldcat-tabname    = 'ITAB'.
      wa_fieldcat-row_pos    = 1.
      wa_fieldcat-col_pos    = 13.
      wa_fieldcat-do_sum     = 'X'.
      APPEND wa_fieldcat TO gt_fieldcat.
      wa_layout-colwidth_optimize = 'X'.
      wa_layout-zebra = ' '.
      DATA: ls_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = gt_events[].
      READ TABLE gt_events WITH KEY name =  slis_ev_end_of_page
                               INTO ls_event.
      IF sy-subrc = 0.
        MOVE 'END_OF_PAGE' TO ls_event-form.
        APPEND ls_event TO gt_events.
      ENDIF.
      READ TABLE gt_events WITH KEY name =  slis_ev_end_of_list
                             INTO ls_event.
      IF sy-subrc = 0.
        MOVE 'END_OF_LIST' TO ls_event-form.
        APPEND ls_event TO gt_events.
      ENDIF.
      gd_prntparams-reserve_lines = '7'.   "Lines reserved for footer
      gd_prntparams-no_coverpage = 'X'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
                i_callback_program        = sy-repid
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
           i_callback_top_of_page            = 'TOP-OF-PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      i_callback_html_end_of_list           = 'END_OF_LIST_HTML'
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
                is_layout                 = wa_layout
                it_fieldcat               = gt_fieldcat
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
             i_default                    = 'X'
             i_save                       = 'X'
      IS_VARIANT                        =
       it_events                         = gt_events
      IT_EVENT_EXIT                     =
      is_print                          = gd_prntparams
      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                          = itab
       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
          text
    -->  p1        text
    <--  p2        text
    FORM top-of-page .
    ALV Header Declarations
      DATA: t_header TYPE slis_t_listheader,
            wa_header  TYPE slis_listheader,
           wa_header1 TYPE slis_listheader,
           wa_header2 TYPE slis_listheader,
           wa_header3 TYPE slis_listheader,
            wa_header4 TYPE slis_listheader.
    Title
      wa_header-typ = 'H'.
      wa_header-info = 'Purchase Variance Report'.
      APPEND wa_header TO t_header.
      CLEAR wa_header.
    Material
    SHIFT p_matnr LEFT DELETING LEADING '0'.
    wa_header1-typ = 'S'.
    wa_header1-info = ' '.
    CONCATENATE 'Material : ' p_matnr matdes INTO wa_header1-info SEPARATED BY space.
    APPEND wa_header1 TO t_header.
    CLEAR wa_header1.
    Plant
    IF ( s_werks-low IS NOT INITIAL AND s_werks-high IS NOT INITIAL ).
       wa_header2-typ = 'S'.
       wa_header2-info = ' '.
       CONCATENATE 'Plant : ' s_werks-low 'to' s_werks-high INTO wa_header2-info SEPARATED BY space.
       APPEND wa_header2 TO t_header.
       CLEAR wa_header2.
    ELSEIF ( s_werks-low IS NOT INITIAL AND s_werks-high IS INITIAL ).
       wa_header2-typ = 'S'.
       wa_header2-info = ' '.
       CONCATENATE 'Plant : ' s_werks-low INTO wa_header2-info SEPARATED BY space.
       APPEND wa_header2 TO t_header.
       CLEAR wa_header2.
    ELSEIF ( s_werks-low IS INITIAL AND s_werks-high IS INITIAL ).
       EXIT.
    ENDIF.
    Period
      IF ( s_bedat-low IS NOT INITIAL AND s_bedat-high IS INITIAL ).
        wa_header4-typ = 'S'.
        wa_header4-info = ' '.
        CONCATENATE 'Period : '
                    s_bedat-low+6(2) '.'
                    s_bedat-low+4(2) '.'
                    s_bedat-low(4) INTO wa_header4-info SEPARATED BY space.
        APPEND wa_header4 TO t_header.
        CLEAR wa_header4.
      ELSE.
    IF ( s_bedat-low IS INITIAL AND s_bedat-high IS INITIAL ).
        wa_header4-typ = 'S'.
        wa_header4-info = ' '.
        CONCATENATE 'Period : '
                    s_bedat-low+6(2) '.'
                    s_bedat-low+4(2) '.'
                    s_bedat-low(4)
                    'to'
                    s_bedat-high+6(2) '.'
                    s_bedat-high+4(2) '.'
                    s_bedat-high(4) INTO wa_header4-info SEPARATED BY space.
        APPEND wa_header4 TO t_header.
        CLEAR wa_header4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = t_header.
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
    ENDFORM.                    " top-of-page
    *&      Form  end_of_list_html
          output at the end of the list - not in printed output       *
    FORM end_of_list_html USING end TYPE REF TO cl_dd_document.
      DATA: ls_text TYPE sdydo_text_element,
            l_grid     TYPE REF TO cl_gui_alv_grid,
            f(14) TYPE c VALUE 'SET_ROW_HEIGHT'.
      DATA: qty1 TYPE sdydo_text_element.
      DATA: unt1 TYPE sdydo_text_element.
      DATA: wtd1 TYPE sdydo_text_element.
      DATA: cur1 TYPE sdydo_text_element.
      DATA: var1 TYPE sdydo_text_element.
      DATA: verp1 TYPE sdydo_text_element.
      DATA: bgv1 TYPE sdydo_text_element.
      qty1 = qty.
      unt1 = unt.
      wtd1 = wtd.
      cur1 = cur.
      var1 = var.
      verp1 = verp.
      bgv1 = bgv.
      ls_text = 'SUMMARY'.
      CALL METHOD end->add_text
        EXPORTING
          text         = ls_text
          sap_emphasis = 'strong'.
    Total Qty Bought (start new line)
      CALL METHOD end->new_line.
      CALL METHOD end->add_text
        EXPORTING
          text = 'Total Qty Bought : '.
      CALL METHOD end->add_text
        EXPORTING
          text = qty1.
      CALL METHOD end->add_text
        EXPORTING
          text = unt1.
    Wtd. Avg. Purchase Rate
      CALL METHOD end->new_line.
      CALL METHOD end->add_text
        EXPORTING
          text = 'Wtd. Avg. Purchase Rate : '.
      CALL METHOD end->add_text
        EXPORTING
          text = cur1.
      CALL METHOD end->add_text
        EXPORTING
          text = wtd1.
    Wtd. Avg. Budget Rate
      CALL METHOD end->new_line.
      CALL METHOD end->add_text
        EXPORTING
          text = 'Wtd. Avg. Budget Rate : '.
      CALL METHOD end->add_text
        EXPORTING
          text = cur1.
      CALL METHOD end->add_text
        EXPORTING
          text = bgv1.
    Gain / Loss
      CALL METHOD end->new_line.
      CALL METHOD end->add_text
        EXPORTING
          text = 'Gain / Loss : '.
      CALL METHOD end->add_text
        EXPORTING
          text = cur1.
      CALL METHOD end->add_text
        EXPORTING
          text = var1.
    MAP ( Moving Average Price )
      CALL METHOD end->new_line.
      CALL METHOD end->add_text
        EXPORTING
          text = 'Mov Avg Price : '.
      CALL METHOD end->add_text
        EXPORTING
          text = cur1.
      CALL METHOD end->add_text
        EXPORTING
          text = verp1.
    ENDFORM. "end_of_list_html.
    *&      Form  END_OF_PAGE
    FORM end_of_page.
      DATA: listwidth TYPE i,
            ld_pagepos(10) TYPE c,
            ld_page(10)    TYPE c.
      wtd2 = wtd.
      bgv2 = bgv.
      CONDENSE qty.
      CONDENSE unt.
      CONDENSE wtd2.
      CONDENSE bgv2.
      CONDENSE var.
      CONDENSE verp.
      SKIP.
      WRITE:/ 'SUMMARY:'.
    write:/ sy-uline(7).
      WRITE:/ 'Total Qty Bought        : ', qty, unt.
      WRITE:/ 'Wtd. Avg. Purchase Rate : ', wtd2, cur.
      WRITE:/ 'Wtd. Avg. Budget Rate   : ', bgv2, cur.
      WRITE:/ 'Gain / Loss             : ', var, cur.
      WRITE:/ 'Mov Avg Price           : ', verp, cur.
    ENDFORM.                    "END_OF_PAGE
    *&      Form  END_OF_LIST
    FORM end_of_list.
      DATA: listwidth TYPE i,
            ld_pagepos(10) TYPE c,
            ld_page(10)    TYPE c.
      wtd2 = wtd.
      bgv2 = bgv.
      CONDENSE qty.
      CONDENSE unt.
      CONDENSE wtd2.
      CONDENSE bgv2.
      CONDENSE var.
      CONDENSE verp.
      SKIP.
      WRITE:/ 'SUMMARY:'.
    write:/ sy-uline(7).
      WRITE:/ 'Total Qty Bought        : ', qty, unt.
      WRITE:/ 'Wtd. Avg. Purchase Rate : ', wtd2, cur.
      WRITE:/ 'Wtd. Avg. Budget Rate   : ', bgv2, cur.
      WRITE:/ 'Gain / Loss             : ', var, cur.
      WRITE:/ 'Mov Avg Price           : ', verp, cur.

  • ALV code in function module

    Hi
    I have created a report and it gets displayed in ALV. My requirement was to put the whole code in a function module, including the ALV functionality...I have put the same..the problem is that I am not able to see the TOP-OF-PAGE..
    I am putting a sample code of what exactly I did in the function module..let me know what needs to be done..
    FUNCTION ZAZTEST.
    ""Local Interface:
    *"  IMPORTING
    *"     REFERENCE(GV_REPID) TYPE  SY-REPID
    *"  TABLES
    *"      S_KUNNR STRUCTURE  JITO_KUNNR_RANGE
    perform sub_get_customers tables s_kunnr
                              changing gt_kna1.
    perform sub_prepare_fieldcatalog using :
    'KUNNR'       'Customer No'       '10'          'GT_KNA1'    space         space changing   gt_fieldcat,
        'NAME1'         'Name'       '35'           'GT_KNA1'    space         space changing   gt_fieldcat,
        'LAND1'         'Country'       '4'           'GT_KNA1'    space         space changing  gt_fieldcat,
        'ORT01'         'City'       '35'           'GT_KNA1'    space         space changing  gt_fieldcat.
    perform sub_build_alv_events changing gt_events.
    perform sub_comment_build tables s_kunnr changing gt_list_top_of_page.
    PERFORM sub_display using gv_repid gt_fieldcat   gt_events    gt_kna1.
    ENDFUNCTION.
    form sub_get_customers tables p_kunnr structure JITO_KUNNR_RANGE
    changing p_it_kna1 type tt_kna1.
    select kunnr name1 land1 ort01
    from kna1
    into table p_it_kna1
    where kunnr in p_kunnr.
    if sy-subrc eq 0.
      sort p_it_kna1 by kunnr.
    endif.
    endform.
          Prepare Field Catalog
         -->lv_F  fieldname
         -->lv_D  column Description
         -->lv_L  Output length
         -->lv_T  Tablename
         --lv_A  Reference table name
         --lv_B  Reference Field Name
    FORM sub_prepare_fieldcatalog using value(lv_f)
                                        value(lv_d)
                                      value(lv_t)
                                        value(lv_l)
                                        value(lv_a)
                                         value(lv_b)
                                         changing pt_fieldcat TYPE  slis_t_fieldcat_alv.
    DATA:  gs_fieldcat TYPE slis_fieldcat_alv.
      gs_fieldcat-fieldname = lv_f.
      gs_fieldcat-seltext_m = lv_d.
       gs_fieldcat-tabname   = lv_t.
      gs_fieldcat-outputlen = lv_l.
      gs_fieldcat-ref_tabname    = lv_a.
      gs_fieldcat-ref_fieldname = lv_b.
      APPEND gs_fieldcat TO Pt_fieldcat.
      CLEAR gs_fieldcat.
    ENDFORM.                    "sub_prepare_fieldcatalog
    *&      Form  sub_build_alv_events
    FORM sub_build_alv_events CHANGING PT_EVENTS TYPE slis_t_event.
      DATA: ls_index TYPE sy-tabix,
      GS_EVENTS TYPE  slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = Pt_events[]
        EXCEPTIONS
          list_type_wrong = 0
          OTHERS          = 0.
      READ TABLE Pt_events
            INTO gs_events
            WITH KEY name = slis_ev_top_of_page
      IF sy-subrc = 0.
        ls_index = sy-tabix.
        gs_events-form    = c_ev_top_of_page.
        MODIFY Pt_events FROM gs_events INDEX ls_index.
      ENDIF.
      CLEAR gs_events.
    ENDFORM.                    " sub_build_alv_events
    *&      Form  sub_comment_build
          text: print select options in the output
    FORM sub_comment_build tables p_kunnr structure JITO_KUNNR_RANGE
    changing gt_top_of_page type slis_t_listheader.
      DATA: ls_line TYPE slis_listheader,
            lv_Low(10) type c,
            lv_high(10) type c.
      lv_low = p_kunnr-low.
      lv_high = p_kunnr-high.
      CLEAR: ls_line.
      ls_line-typ  = 'H'.
      ls_line-info = 'Customer Details'.
      APPEND ls_line TO gt_top_of_page.
      IF NOT lv_low IS INITIAL AND NOT lv_high IS INITIAL.
        CLEAR: ls_line.
        ls_line-typ  = 'S'.
        ls_line-key  = 'Customer No'.   "TEXT DESCRIPTION
        CONCATENATE lv_low 'to' lv_high INTO ls_line-info
        SEPARATED BY space.
        APPEND ls_line TO gt_top_of_page.
    elseif  lv_low is initial and lv_high is initial.
        CLEAR: ls_line.
        ls_line-typ  = 'S'.
        ls_line-key  = 'Customer No'.
        ls_line-info = 'ALL Values'.
        APPEND ls_line TO gt_top_of_page.
      ELSEIF lv_high IS INITIAL.
        CLEAR: ls_line.
        ls_line-typ  = 'S'.
        ls_line-key  = 'Customer No'.
        ls_line-info = lv_low.
        APPEND ls_line TO gt_top_of_page.
      ENDIF.
    endform.
    form SUB_EVENT_TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = gt_list_top_of_page.
    ENDFORM.                    "sub_comment_build
    **&      Form  sub_display
        ALV Grid Display
    Form sub_display using pv_repid type sy-repid
            pt_fieldcat TYPE slis_t_fieldcat_alv
              pt_events type slis_t_event
             pt_kna1 type TT_kna1.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = pv_repid
          it_fieldcat        = Pt_fieldcat
          it_events          = Pt_events[]
        TABLES
          t_outtab           = Pt_kna1
        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.                                      "sub_display

    Hello shakir,
    You can refer to the code below:
    TYPE-POOLS : slis.
    * internal table declaration
    Data:i_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv,
          top_header TYPE slis_t_listheader.  "Table to store The Values of Top-Of-Page Parameter for ALV  
    * work area declaration
    Data: wa_top_header TYPE slis_listheader,
            wa_fieldcat   TYPE slis_fieldcat_alv.
    * CONSTANTS
    CONSTANTS: c_h    TYPE slis_listheader VALUE 'H',
                         c_s    TYPE slis_listheader VALUE 'S'.
    ********* calling a subroutine to display the fields ********************
        PERFORM zalv_display.
    ********* function module to display the report in Grid format ***********
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            i_callback_program     = sy-repid
            i_callback_top_of_page = 'TOP_OF_PAGE'
            it_fieldcat            = i_fieldcat
          TABLES
            t_outtab               = i_final
          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  zalv_display
    *       Subroutine To display the fields in grid format
    FORM zalv_display .
      PERFORM zalv_grid_disp USING '1'  'CHARG'      'I_FINAL'    'Shotton coil id'.
      PERFORM zalv_grid_disp USING '2'  'MATNR'      'I_FINAL'    'Material number'.
      PERFORM zalv_grid_disp USING '3'  'BESTQ'      'I_FINAL'    'Stock Status'.
      PERFORM zalv_grid_disp USING '4'  'AUFNR'      'I_FINAL'    'PROCESS ORDER NUMBER'.
      PERFORM zalv_grid_disp USING '5'  'KDAUF'      'I_FINAL'    'SALES ORDER NUM'.
      PERFORM zalv_grid_disp USING '6'  'GESME'      'I_FINAL'    'Coil Weight'.
      PERFORM zalv_grid_disp USING '7'  'WDATU'      'I_FINAL'    'Date of coil receipt'.
      PERFORM zalv_grid_disp USING '8'  'LGTYP'      'I_FINAL'    'Storage Type'.
      PERFORM zalv_grid_disp USING '9'  'LGPLA'      'I_FINAL'    'Storage Bin'.
      PERFORM zalv_grid_disp USING '10' 'COIL_STAT'  'I_FINAL'    'COIL STATUS'.
      PERFORM zalv_grid_disp USING '11' 'MAKTX'      'I_FINAL'    'MATERIAL DESP'.
    ENDFORM.                    " zalv_display
    *&      Form  zalv_grid_disp
    *       text
    *      -->P_0691   column position
    *      -->P_0692   field name
    *      -->P_0693   table name
    *      -->P_0694   field text
    FORM zalv_grid_disp  USING    value(col_pos)     TYPE n
                                  value(field_name)  TYPE c
                                  value(tab_name)    TYPE c
                                  value(sel_text)    TYPE c.
      wa_fieldcat-col_pos = col_pos.
      wa_fieldcat-fieldname = field_name.
      wa_fieldcat-tabname = tab_name.
      wa_fieldcat-seltext_l = sel_text.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
    ENDFORM.                    " zalv_grid_disp
    *&      Form  top_of_page
    *       module to display Header Information
    FORM top_of_page.
    ************************     HEADER     ********************************
      wa_top_header-typ = c_h.
      CONCATENATE 'CONCESSION'
                  'COIL'
                  'REPORT'
                  INTO wa_top_header-info
                  SEPARATED BY space.
      APPEND wa_top_header TO top_header.
      CLEAR wa_top_header.
      wa_top_header-typ  = c_s.
      wa_top_header-key  = 'Date:'.
      WRITE sy-datum TO wa_top_header-info.
      APPEND wa_top_header TO top_header.
      CLEAR wa_top_header.
      wa_top_header-typ  = c_s.
      wa_top_header-key  = 'User Name:'.
      WRITE sy-uname TO wa_top_header-info.
      APPEND wa_top_header TO top_header.
      CLEAR wa_top_header.
    *  wa_top_header-typ  = c_s.
    *  wa_top_header-key  = 'No.Of Records :'.
    *  WRITE sy-dbcnt TO wa_top_header-info.
    *  APPEND wa_top_header TO top_header.
    *  CLEAR wa_top_header.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = top_header.
    ENDFORM.                    "top_of_page

  • How to edit ALV report using function modules

    I have a ALV report , i want to edit the report
    using function modules.
    how can i do that...
    Edited by: ms kumar on Mar 6, 2008 3:24 PM

    hi i had used this report with the check box,
    using the fm of alvs.....
    *& Report  ZZZ00
    REPORT  ZPR_02.
    TYPE-POOLS: SLIS.
    TABLES:pa0002,pa0008.
    data:begin of it_pa0002 occurs 0,
         checkbox,
         pernr like pa0002-pernr,
         begda like pa0002-begda,
         endda like pa0002-endda,
         vorna like pa0002-vorna,
         nachn like pa0002-nachn,
         end of it_pa0002.
    data:begin of it_pa00021 occurs 0,
         pernr like pa0002-pernr,
         begda like pa0002-begda,
         endda like pa0002-endda,
         vorna like pa0002-vorna,
         nachn like pa0002-nachn,
         expand TYPE xfeld value 'X',
         end of it_pa00021.
    data:begin of it_pa0008 occurs 0,
         pernr like pa0008-pernr,
         begda like pa0008-begda,
         endda like pa0008-endda,
         ANSAL like pa0008-ANSAL,
         LGA01 like pa0008-LGA01,
         BET01 LIKE PA0008-BET01,
         end of it_pa0008.
    DATA: IT_FIELD_CAT TYPE SLIS_T_FIELDCAT_ALV,
          IT_FIELD_CAT1 TYPE SLIS_T_FIELDCAT_ALV,
          IT_LAYOUT1 TYPE SLIS_LAYOUT_ALV,
          WA_FIELD_CAT TYPE SLIS_FIELDCAT_ALV,
          WA_FIELD_CAT1 TYPE SLIS_FIELDCAT_ALV,
          IT_LAYOUT TYPE SLIS_LAYOUT_ALV,
          IT_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENTS TYPE SLIS_ALV_EVENT,
          IT_HEADER TYPE SLIS_T_LISTHEADER,
          WA_HEADER TYPE SLIS_LISTHEADER,
          wa_keyinfo TYPE slis_keyinfo_alv.
    CONSTANTS:c VALUE 'X'.
    SELECT-OPTIONS: S_pernr FOR pa0002-pernr.
    START-OF-SELECTION.
      SET PF-STATUS 'DATA' .
      PERFORM GET_DATA.
      PERFORM BUILD_FIELD_CAT.
      PERFORM GET_EVENTS.
      PERFORM DISPLAY_DATA.
    *&      Form  get_data
          text
    FORM GET_DATA .
      SELECT pernr
             begda
             endda
             vorna
             nachn
             FROM pa0002
             INTO CORRESPONDING FIELDS OF TABLE IT_pa0002
             WHERE pernr IN S_pernr.
    ENDFORM.                    " get_data
    *&      Form  build_field_cat
          text
    FORM BUILD_FIELD_CAT .
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'CHECKBOX'.
      wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'Check Box'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'PERNR'.
        wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'Personnel no'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'BEGDA'.
      wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'Start date'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'ENDDA'.
      wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'End date'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'VORNA'.
      wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'First name'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'NACHN'.
        wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'Last name'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'PERNR'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'Personnel no'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'BEGDA'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'Start date'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'ENDDA'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'End date'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'VORNA'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'First name'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'NACHN'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'Last name'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'PERNR'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'personnelno'.
        APPEND wa_field_cat1 TO it_field_cat1.
       CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'BEGDA'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'begindate'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'ENDDA'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'enddate'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'ANSAL'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'annualsalary'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'LGA01'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'wagetype'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'BET01'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'Amount'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
    ENDFORM.                    " build_field_cat
    *&      Form  display_data
          text
    FORM DISPLAY_DATA .
    it_layout-box_fieldname = 'CHECKBOX'.
    it_layout-EDIT = 'X'.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM             = SY-REPID
          I_CALLBACK_PF_STATUS_SET       = 'PF_STATUS'
          I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
          IT_FIELDCAT                    = IT_FIELD_CAT
          IS_LAYOUT                      = IT_LAYOUT
          IT_EVENTS                      = IT_EVENTS
        TABLES
          T_OUTTAB           = IT_pa0002.
    ENDFORM.                    " display_data
    *&      Form  get_events
          text
    FORM GET_EVENTS .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       IMPORTING
         ET_EVENTS             = IT_EVENTS .
      READ TABLE IT_EVENTS INTO WA_EVENTS
                           WITH KEY NAME = SLIS_EV_TOP_OF_PAGE.
      IF SY-SUBRC = 0.
        WA_EVENTS-FORM = 'TOP_OF_PAGE'.
        MODIFY IT_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
      ENDIF.
    ENDFORM.                    " get_events
    *&      Form  top_of_page
          text
    FORM TOP_OF_PAGE.
      WA_HEADER-TYP = 'H'.
      WA_HEADER-INFO = 'EMPLOYEE DATA'.
      APPEND WA_HEADER TO IT_HEADER.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_HEADER
    ENDFORM. "top_of_page
    *&      Form  GUI_SET
    FORM GUI_SET USING RT_EXTAB TYPE SLIS_T_EXTAB .
      SET PF-STATUS 'DATA' .
    ENDFORM.                    "GUI_SET
    *&      Form  USER_COMMAND
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                            R_SELFIELD TYPE SLIS_SELFIELD.
    DATA:V_PERNR LIKE PA0002-PERNR.
      CASE R_UCOMM.
        WHEN 'DET'.
    DATA: V_FLAG.
      clear : v_flag.
    LOOP AT IT_PA0002.
         if it_PA0002-checkbox =  'X'.
                   v_flag = 'X'.
              v_pernr = IT_PA0002-PERNR.
    SELECT  PERNR
            BEGDA
            ENDDA
            VORNA
            NACHN
            FROM PA0002
            INTO CORRESPONDING FIELDS OF TABLE IT_PA00021
            WHERE PERNR = V_PERNR.
    SORT IT_PA00021 BY PERNR.
    DELETE ADJACENT DUPLICATES FROM IT_PA00021 COMPARING PERNR.
    READ TABLE IT_PA00021 INDEX 1.
    SELECT PERNR
           BEGDA
           ENDDA
           ANSAL
           LGA01
           BET01
           FROM PA0008
           INTO TABLE IT_PA0008
           FOR ALL ENTRIES IN IT_PA00021
           WHERE PERNR = IT_PA00021-PERNR.
              if not it_PA0008[] Is initial.
              SORT IT_PA0008 BY PERNR.
             delete adjacent duplicates from  it_PA0008 comparing pernr.
              READ TABLE IT_PA0008 INDEX 1.
              endif.
            endif.
         enddo.
      it_layout1-group_change_edit = c.
      it_layout1-colwidth_optimize = c.
      it_layout1-zebra             = c.
      it_layout1-detail_popup      = c.
      it_layout1-get_selinfos      = c.
      it_layout-expand_fieldname  = 'EXPAND'.
      wa_keyinfo-header01 = 'PERNR'.
      wa_keyinfo-item01 = 'PERNR'.
    IF NOT V_FLAG IS INITIAL.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
      EXPORTING
       I_CALLBACK_PROGRAM             = SY-REPID
        IS_LAYOUT                      = IT_LAYOUT1
       IT_FIELDCAT                    =  IT_FIELD_CAT1
        I_TABNAME_HEADER               = 'PA0002'
        I_TABNAME_ITEM                 = 'PA0008'
        IS_KEYINFO                     = wa_keyinfo
        TABLES
        T_OUTTAB_HEADER                = IT_PA00021
        T_OUTTAB_ITEM                  = IT_PA0008.
    ENDIF.
    CLEAR: IT_PA00021,IT_PA0002,IT_PA0008.
    ENDLOOP.
    WHEN 'BACK'.
    EXIT.
    ENDCASE.
    ENDFORM.                    "USER_COMMAND
    reward points if useful,
    venkat.

  • HOW TO USE OWN LOGO IN 'REUSE_ALV_COMMENTARY_WRITE'

    HELLO THERE ,
    CAN ANYBODY TELL ME HOW TO USE OWN LOGO IN 'REUSE_ALV_COMMENTARY_WRITE' ?
    I HAVE TRIED THROUGH THE TRANSCATION 'OAOR' AND 'OAER' , BUT I'M UNABLE TO DO IT. SO CAN ANYBODY PLZ TELL ME ANY OTHER WAY?
    REGARDS.

    Hello NEON BLUE,
    First step first upload u r log in the sap system using the below steps.
    1.  Goto the transaction OAER
    2.  Enter the class name as 'PICTURES'
    3.  Enter the class type as 'OT'
    4.  Enter the object key as the name of the logo you wish to give
    5.  Execute
    6.  Then in the new screen select Standard doc. types in bottom window
         Click on the Screen icon 
         Now, it will ask for the file path where you have to upload the logo
    7.  Now you can use this logo in REUSE_ALV_COMMENTARY_WRITE
    call the FM
        CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
          EXPORTING
            IT_LIST_COMMENTARY       = Y_I_LISTHEADER[]
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =

  • ALV GRID Display function module giving Run time error

    Hello Experts,
    I have ALV report, In which I am using ALV grid dispaly FM to display the report.
    But when my out table which I am passing to FM is empty that time ALV grid display shows blank ALV report. but when out table is not empty that time  I am getting the Run time error, which shows message "Field symbol has not yet been assigned".
    Can any one please help me out in this.
    Thanks

    TYPES: BEGIN OF type_out,
            col00    TYPE   ytlet-rzzyyproduct,
            col01    TYPE   ytlet-kslvt,
            col02    TYPE   ytlet-kslvt,
            col03    TYPE   ytlet-kslvt,
            col04    TYPE   ytlet-kslvt,
            col05    TYPE   ytlet-kslvt,
            col06    TYPE   ytlet-kslvt,
            col07    TYPE   ytlet-kslvt,
            col08    TYPE   ytlet-kslvt,
            col09    TYPE   ytlet-kslvt,
            col10    TYPE   ytlet-kslvt,
            col11    TYPE   ytlet-kslvt,
            col12    TYPE   ytlet-kslvt,
            col13    TYPE   ytlet-kslvt,
            col14    TYPE   ytlet-kslvt,
            col15    TYPE   ytlet-kslvt,
            col16    TYPE   ytlet-kslvt,
            col17    TYPE   ytlet-kslvt,
            col18    TYPE   ytlet-kslvt,
            col19    TYPE   ytlet-kslvt,
            col20    TYPE   ytlet-kslvt,
            col21    TYPE   ytlet-kslvt,
            col22    TYPE   ytlet-kslvt,
            col23    TYPE   ytlet-kslvt,
            col24    TYPE   ytlet-kslvt,
            col25    TYPE   ytlet-kslvt,
            col26    TYPE   ytlet-kslvt,
            col27    TYPE   ytlet-kslvt,
            col28    TYPE   ytlet-kslvt,
            col29    TYPE   ytlet-kslvt,
            col30    TYPE   ytlet-kslvt,
            col31    TYPE   ytlet-kslvt,
            col32    TYPE   ytlet-kslvt,
            col33    TYPE   ytlet-kslvt,
            col34    TYPE   ytlet-kslvt,
            col35    TYPE   ytlet-kslvt,
            col36    TYPE   ytlet-kslvt,
            col37    TYPE   ytlet-kslvt,
            col38    TYPE   ytlet-kslvt,
            col39    TYPE   ytlet-kslvt,
            col40    TYPE   ytlet-kslvt,
            col41    TYPE   ytlet-kslvt,
            col42    TYPE   ytlet-kslvt,
            col43    TYPE   ytlet-kslvt,
            col44    TYPE   ytlet-kslvt,
          END OF type_out.
    DATA: t_fieldcat   TYPE slis_t_fieldcat_alv,   "Field catelog table
          w_fieldcat   TYPE slis_fieldcat_alv,     "Field catelog Work area
          w_layout     TYPE slis_layout_alv,       "Layout structure
          w_event      TYPE slis_alv_event,        "Event structure
          t_event      TYPE slis_t_event,          "Event structure
          t_sort       TYPE STANDARD TABLE OF slis_sortinfo_alv,
          t_callback_main_user_command  TYPE  slis_formname,
          v_selfield TYPE slis_selfield.
    FIELD-SYMBOLS: <ksl>.
    FORM DISPLAY_REPORT .
    *Prepare Field Catlog
      PERFORM  creat_field_catlog.
    *Set layout
      PERFORM  set_layout.
    *Get Event
      PERFORM get_event.
    *Display Report
      PERFORM display_alv_report.
    ENDFORM.                    " DISPLAY_REPORT
    FORM creat_field_catlog .
      PERFORM add_fields_catlog USING:
           '01'    'RZZYYPRODUCT'     'IT_OUT'    'MPMs' ' ',
           '02'    'KSLVT'     'IT_OUT'    'License Fee' ' ',
           '03'    'KSLVT'     'IT_OUT'    'Ad Sales' ' ',
           '04'    'KSLVT'     'IT_OUT'    'Promo Fees' ' ',
           '05'    'KSLVT'     'IT_OUT'    'Total Ad Sales/Promo' ' ',
           '06'    'KSLVT'     'IT_OUT'    'Other' ' ',
           '07'    'KSLVT'     'IT_OUT'    'Total' ' ',
           '08'    'KSLVT'     'IT_OUT'    'Dom Station' ' ',
           '09'    'KSLVT'     'IT_OUT'    'Basic Cable/Free VOD' ' ',
           '10'    'KSLVT'     'IT_OUT'    'License Fee' ' ',
           '11'    'KSLVT'     'IT_OUT'    'Ad Sales (incl Internet)' ' ',
           '12'    'KSLVT'     'IT_OUT'    'Promo Fees' ' ',
           '13'    'KSLVT'     'IT_OUT'    'Ad Sales & Promo Fees' ' ',
           '14'    'KSLVT'     'IT_OUT'    'Foreign' ' ',
           '15'    'KSLVT'     'IT_OUT'    'Pay TV' ' ',
           '16'    'KSLVT'     'IT_OUT'    'Other' ' ',
           '17'    'KSLVT'     'IT_OUT'    'Total' ' ',
           '18'    'KSLVT'     'IT_OUT'    'Home Entertainment' ' ',
           '19'    'KSLVT'     'IT_OUT'    'SPTI' ' ',
           '20'    'KSLVT'     'IT_OUT'    'All Other Divisions' ' ',
           '21'    'KSLVT'     'IT_OUT'    'Total' ' ',
           '22'    'KSLVT'     'IT_OUT'    'Total Revenue' ' ',
           '23'    'KSLVT'     'IT_OUT'  'PV Net Down & Producers Share' '',
           '24'    'KSLVT'     'IT_OUT'    'Total Net Revenue' ' ',
           '25'    'KSLVT'     'IT_OUT'    'Development Expense' ' ',
           '26'    'KSLVT'     'IT_OUT'    'SOP Deficits' ' ',
           '27'    'KSLVT'     'IT_OUT'    'Amortization' ' ',
           '28'    'KSLVT'     'IT_OUT'    'Other COS ' ' ',
           '29'    'KSLVT'     'IT_OUT'    'Total COS' ' ',
           '30'    'KSLVT'     'IT_OUT'    'Profit Before Releasing' ' ',
           '31'    'KSLVT'     'IT_OUT'    'Gross Profit %' ' ',
           '32'    'KSLVT'     'IT_OUT'    'SPT' ' ',
           '33'    'KSLVT'     'IT_OUT'    'Home Entertainment' ' ',
           '34'    'KSLVT'     'IT_OUT'    'SPTI' ' ',
           '35'    'KSLVT'     'IT_OUT'    'All Other Divisions' ' ',
           '36'    'KSLVT'     'IT_OUT'    'Other' ' ',
           '37'    'KSLVT'     'IT_OUT'    'Total' ' ',
           '38'    'KSLVT'     'IT_OUT'    'Gross Profit' ' ',
           '39'    'KSLVT'     'IT_OUT'    'SPT' ' ',
           '40'    'KSLVT'     'IT_OUT'    'Home Entertainment' ' ',
           '41'    'KSLVT'     'IT_OUT'    'SPTI' ' ',
           '42'    'KSLVT'     'IT_OUT'    'All Other Divisions' ' ',
           '43'    'KSLVT'     'IT_OUT'    'Other' ' ',
           '44'    'KSLVT'     'IT_OUT'    'Total' ' ',
           '45'    'KSLVT'     'IT_OUT'    'Net Margin' ' '.
    ENDFORM.                    " CREAT_FIELD_CATLOG
    *&      Form  ADD_FIELDS_CATLOG
          Filling of field Catlog
    FORM add_fields_catlog  USING    p_colpos
                                     p_fildname
                                     p_tabname
                                     p_fildtext
                                     p_ndisplay.
      w_fieldcat-row_pos       = '1'.
      w_fieldcat-col_pos       = p_colpos.
      w_fieldcat-fieldname     = p_fildname.
      w_fieldcat-tabname       = p_tabname.
      w_fieldcat-reptext_ddic  = p_fildtext.
      w_fieldcat-no_out        = p_ndisplay.
      APPEND w_fieldcat TO t_fieldcat.
      CLEAR: w_fieldcat.
    ENDFORM.                    " ADD_FIELDS_CATLOG
    *&      Form  SET_LAYOUT
          Set Layout
    FORM set_layout .
      w_layout-colwidth_optimize = 'X'.
    ENDFORM.                    " SET_LAYOUT
    *&      Form  GET_EVENT
          text
    FORM get_event .
      w_event-name = 'TOP-OF-PAGE'.
      w_event-form = 'F_TOP-OF_PAGE'.
      APPEND w_event TO t_event.
    ENDFORM.                    " GET_EVENT
    *&      Form  TOP-OF-PAGE
          Top of Page
    FORM top-of-page.
      DATA : t_list_commentry   TYPE slis_t_listheader,
               w_header           TYPE slis_listheader,
               lv_text(90)        TYPE c,
               l_text(90)         TYPE c,
               lv_rundate(10)     TYPE c,
               lv_runtime(10)     TYPE c.
      CONSTANTS: c_space(2) TYPE c VALUE '  ',
                 c_space2(6) TYPE c VALUE '      '.
      w_header-typ  = 'S'.
      w_header-key  = 'Program:'.
      w_header-info = sy-repid.
      APPEND w_header TO t_list_commentry.
      WRITE: sy-datum TO lv_rundate MM/DD/YYYY.
      WRITE: sy-uzeit TO lv_runtime USING EDIT MASK '__:__:__'.
    CLEAR w_header.
    w_header-typ  = 'S'.
    w_header-key  = text-021.
    w_header-info = lv_rundate.
    APPEND w_header TO t_list_commentry.
      CLEAR: w_header.
      w_header-typ  = 'S'.
      w_header-key  = 'User Id'.
      w_header-info = sy-uname.
      APPEND w_header TO t_list_commentry.
      CLEAR: w_header.
      w_header-typ  = 'S'.
      w_header-key  = 'Run Date'.
      w_header-info = lv_rundate.
      APPEND w_header TO t_list_commentry.
      CLEAR: w_header.
      w_header-typ  = 'S'.
      w_header-key  = 'Run Time'.
      w_header-info = lv_runtime.
      APPEND w_header TO t_list_commentry.
      CLEAR: w_header.
      w_header-typ  = 'H'.
      w_header-key  = 'order'.
      w_header-info = 'MCR Report'.
      APPEND w_header TO t_list_commentry.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = t_list_commentry.
    ENDFORM.                    "TOP-OF-PAGE
    FORM display_alv_report .
      CONSTANTS : gc_save TYPE c VALUE 'A'. "Save Layout
    t_callback_main_user_command  = c_user_command.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = sy-repid
      I_CALLBACK_PF_STATUS_SET          = ' '
        i_callback_user_command           = t_callback_main_user_command
         i_callback_top_of_page            = 'TOP-OF-PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
         is_layout                         = w_layout
         it_fieldcat                       = t_fieldcat
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
         i_save                            = gc_save
      IS_VARIANT                        =
      IT_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                          = it_out
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
       ENDIF.

  • ALV Display by function modules

    Hi,
    I have data in internal table itab, Which having seven columns
    I want to display all these data in gridlayout by using function modules.
    Can you please guide me the logic how to do.
    An also I want to display the headings for each column, then I have to display all data in internal table.

    HI,
    Work on this....
    TABLES:pernr.
    TYPE-POOLS : slis.
    INFOTYPES:
               0001,
               0002,
               0008.
    DATA : i_alv TYPE slis_fieldcat_alv OCCURS 0,
           wa TYPE slis_fieldcat_alv.
    DATA : i_sort                TYPE slis_t_sortinfo_alv,
           wa_sort               TYPE slis_sortinfo_alv,
           i_header              TYPE slis_t_listheader,
           wa_header             TYPE slis_listheader,
           i_event               TYPE slis_t_event,
           wa_event              TYPE slis_alv_event,
           v_top_of_page         TYPE slis_formname VALUE 'TOP_OF_PAGE'.
    DATA:v_line TYPE i.
    DATA:BEGIN OF tab OCCURS 0,
         pernr LIKE p0001-pernr,    " Personalnumber
         ename LIKE p0001-ename,
         gbdat LIKE p0002-gbdat,
         ansal LIKE p0008-ansal,
    END OF tab.
    START-OF-SELECTION.
    GET pernr .
      rp-provide-from-last p0001 space pn-begda  pn-endda.
      rp-provide-from-last p0002 space pn-begda  pn-endda.
      rp-provide-from-last p0008 space pn-begda  pn-endda.
      MOVE-CORRESPONDING p0001 TO tab.
      MOVE-CORRESPONDING p0002 TO tab.
      MOVE-CORRESPONDING p0008 TO tab.
      APPEND tab.
    END-OF-SELECTION.
      DESCRIBE TABLE tab LINES v_line.
    Check for output internal table
      IF v_line = 0.
        MESSAGE  'NO RECORDS FOUND' TYPE 'I'.
      ELSE.
        PERFORM zf_commentbuild.
        PERFORM zf_event.
        PERFORM zf_display.
      ENDIF.
    *&      Form  zf_display
          text
    FORM zf_display.
      CLEAR wa.
      wa-fieldname = 'PERNR'.
      wa-tabname       = 'TAB'.
      wa-ref_fieldname = 'PERNR'.
      wa-ref_tabname = 'PERNR'.
      APPEND wa TO i_alv.
      CLEAR wa.
      wa-fieldname     = 'ENAME'.
      wa-tabname       = 'TAB'.
      wa-ref_fieldname = 'ENAME'.
      wa-ref_tabname = 'P0001'.
      wa-seltext_m = 'NAME OF EMPLOYEE'.
      APPEND wa TO i_alv.
      CLEAR wa.
      wa-fieldname     = 'GBDAT'.
      wa-tabname       = 'TAB'.
      wa-ref_fieldname = 'GBDAT'.
      wa-ref_tabname = 'P0002'.
      wa-seltext_m = 'BIRTH DATE OF EMPLOYEE'.
      APPEND wa TO i_alv.
      CLEAR wa.
      wa-fieldname     = 'ANSAL'.
      wa-tabname       = 'TAB'.
      wa-ref_fieldname = 'ANSAL'.
      wa-ref_tabname = 'P0009'.
      wa-seltext_m = 'ANNUAL SALARY OF EMPLOYEE'.
      APPEND wa TO i_alv.
      CLEAR wa.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = 'ZHRTEMPLATE'
          i_structure_name   = 'TAB'
         i_background_id    = 'ALV_BACKGROUND'
          it_fieldcat        = i_alv
          it_sort            = i_sort
          i_save             = 'X'
          it_events          = i_event
        TABLES
          t_outtab           = tab
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      IF sy-subrc <> 0.
        MESSAGE 'Error in ALV FM Parameters' TYPE 'I'.
      ENDIF.
    ENDFORM.                    "zf_display
    *&      Form  zf_commentbuild
          text
    -->  p1        text
    <--  p2        text
    FORM zf_commentbuild .
      wa_header-typ  = 'H'.
      wa_header-info = 'SAMPLE REPORT'.
      APPEND wa_header TO i_header.
      CLEAR wa_header.
    ENDFORM.                       " zf_commentbuild
    *&      Form  zf_event
          text
    -->  p1        text
    <--  p2        text
    FORM zf_event .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = i_event
        EXCEPTIONS
          list_type_wrong = 1
          OTHERS          = 2.
      READ TABLE i_event WITH KEY name = slis_ev_top_of_page INTO wa_event.
      IF sy-subrc EQ 0.
        MOVE v_top_of_page TO wa_event-form.
        APPEND wa_event TO i_event.
      ENDIF.
    ENDFORM.                    "zf_event
    *&      Form  top_of_page
          text
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          i_logo             = 'INBEV_LOGO'
          it_list_commentary = i_header.
    ENDFORM.                    "top_of_page
    Reward me if useflu...or any doubts,let me know
    sankar

Maybe you are looking for

  • C6380 LCD doesn't Pop up

    Does anyone know what's wrong with my C6380? The LCD display doesn't pop up when the printer starts. It just lay down all the times. Even I reset the printer with (press: Print Photos + Red Eye Removal), same thing happended. Does anyone has an idea?

  • Do I need a new router or an extender

    I have a new HP laptop and am using a Netgear N   WnR 2000 v2 wireless router that is about 2 years old. Everything is fine except in one bedroom. Most of the time i get 2 to 4 bars which is fine. However there are times mostly at night when the sign

  • .DS_Store files undo delete command in Terminal

    I was copying large quantities of files to a poorly formatted LaCie 3T external drive and kept coming up with interruptions in copying because the Finder kept "seeing" the creation of .DS_Store files. I researched and found a command for Terminal whi

  • Last bundle on system

    Hi, on FSCM91, tools 8.52, How to know what is the last bundle applied ? Thank you.

  • Why won't my iPhone 4 on iOS5 sync updated apps from the iTunes store?

    Why won't my iPhone 4 on iOS5 sync updated apps from the iTunes store?