ALV Declaration

Dear gurus,
I need ur help in declaration of WORKAREA in alv.
am trying but its throwing error(slis_t_fieldcat_alv is unknown
and its either one of the specified tables not defined by the data)
am writng the program below..
(type-pools slis .
tables : kna1.
types : gitab type table of zguru.
data : itab type gitab.
data : wa type itab .
data : head like slis_t_fieldcat_alv.
select
     kunnr
     land1
     name1
           from kna1 into table itab up to 100 rows.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    I_PROGRAM_NAME               = sy-repid
    I_INTERNAL_TABNAME           = ITAB
    I_STRUCTURE_NAME             =
    I_CLIENT_NEVER_DISPLAY       = 'X'
    I_INCLNAME                   = sy-redid
    I_BYPASSING_BUFFER           =
    I_BUFFER_ACTIVE              =
   CHANGING
     CT_FIELDCAT                  = head
  EXCEPTIONS
    INCONSISTENT_INTERFACE       = 1
    PROGRAM_ERROR                = 2
    OTHERS                       = 3
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
  I_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            = ' '
  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                         =
  IT_FIELDCAT                       = head
  IT_EXCLUDING                      =
  IT_SPECIAL_GROUPS                 =
  IT_SORT                           =
  IT_FILTER                         =
  IS_SEL_HIDE                       =
  I_DEFAULT                         = 'X'
  I_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
  IT_ALV_GRAPHICS                   =
  IT_HYPERLINK                      =
  IT_ADD_FIELDCAT                   =
  IT_EXCEPT_QINFO                   =
  I_HTML_HEIGHT_TOP                 =
  I_HTML_HEIGHT_END                 =
IMPORTING
  E_EXIT_CAUSED_BY_CALLER           =
  ES_EXIT_CAUSED_BY_USER            =
TABLES
   T_OUTTAB                          = 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.)

Hi,
Use this code.....
type-pools slis .
tables : kna1.
types : gitab type table of zguru.
data : itab type gitab.
data : wa type itab .
data : head type slis_t_fieldcat_alv.
select
kunnr
land1
name1
from kna1 into table itab up to 100 rows.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    I_PROGRAM_NAME         = sy-repid
    I_INTERNAL_TABNAME     = ITAB
    I_CLIENT_NEVER_DISPLAY = 'X'
    I_INCLNAME             = sy-redid
    I_BYPASSING_BUFFER     = CHANGING
    CT_FIELDCAT            = head
  EXCEPTIONS
    INCONSISTENT_INTERFACE = 1
    PROGRAM_ERROR          = 2
    OTHERS                 = 3.
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    I_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      = ' '
    I_CALLBACK_HTML_TOP_OF_PAGE = ' '
    I_CALLBACK_HTML_END_OF_LIST = ' '
    I_BACKGROUND_ID             = ' '
    IT_FIELDCAT                 = head
    I_DEFAULT                   = 'X'
    I_SAVE                      = ' '
    I_SCREEN_START_COLUMN       = 0
    I_SCREEN_START_LINE         = 0
    I_SCREEN_END_COLUMN         = 0
    I_SCREEN_END_LINE           = 0
  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.
Hope it will helps

Similar Messages

  • Field in Alv Top-of-page

    How to pass field in Alv Top-of-page
    Edited by: Deepak  Mathrani on Aug 12, 2008 12:40 PM
    <THREAD LOCKED. Please read the [Rules of Engagement|https://wiki.sdn.sap.com/wiki/display/HOME/RulesofEngagement] to discover why>
    Edited by: Mike Pokraka on Aug 12, 2008 2:58 PM

    Hi
    sample program
    *& Report  ZNNR_ALVSAMPLE
    REPORT  znnr_alvsample NO STANDARD PAGE HEADING.
    TABLES:     ekko.
    TYPE-POOLS: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
          gd_tab_group TYPE slis_t_sp_group_alv,
          gd_layout    TYPE slis_layout_alv,
          gd_repid     LIKE sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM build_fieldcatalog.
      PERFORM build_layout.
      PERFORM display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
          Build Fieldcatalog for ALV Report
    FORM build_fieldcatalog.
    There are a number of ways to create a fieldcat.
    For the purpose of this example i will build the fieldcatalog manualy
    by populating the internal table fields individually and then
    appending the rows. This method can be the most time consuming but can
    also allow you  more control of the final product.
    Beware though, you need to ensure that all fields required are
    populated. When using some of functionality available via ALV, such as
    total. You may need to provide more information than if you were
    simply displaying the result
                  I.e. Field type may be required in-order for
                       the 'TOTAL' function to work.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    fieldcatalog-do_sum      = 'X'.
    fieldcatalog-no_zero     = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-do_sum      = 'X'.        "Display column total
      fieldcatalog-datatype     = 'CURR'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      fieldcatalog-EDIT = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    FORM build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    gd_layout-totals_only        = 'X'.
    gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
                                            "click(press f2)
    gd_layout-zebra             = 'X'.
    gd_layout-group_change_edit = 'X'.
    gd_layout-header_text       = 'helllllo'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'(001)  "see FORM
               i_callback_user_command = 'USER_COMMAND'
               i_grid_title           = outtext
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
               it_special_groups       = gd_tabgroup
               IT_EVENTS                = GT_XEVENTS
                i_save                  = 'X'
               is_variant              = z_template
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
      from ekpo
      into table it_ekko.
    endform.                    " DATA_RETRIEVAL
    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 = 'EKKO Table Report'.
      append wa_header to t_header.
      clear wa_header.
    Date
      wa_header-typ  = 'S'.
      wa_header-key = 'Date: '.
      CONCATENATE  sy-datum+6(2) '.'
                   sy-datum+4(2) '.'
                   sy-datum(4) INTO wa_header-info.   "todays date
      append wa_header to t_header.
      clear: wa_header.
    Total No. of Records Selected
      describe table it_ekko lines ld_lines.
      ld_linesc = ld_lines.
      concatenate 'Total No. of Records Selected: ' ld_linesc
                        into t_line separated by space.
      wa_header-typ  = 'A'.
      wa_header-info = t_line.
      append wa_header to t_header.
      clear: wa_header, t_line.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = t_header.
               i_logo             = 'Z_LOGO'.
    endform.

  • Field Editing in ALV Report

    hello everyone,
    I have created an alv report using MARA table. but i am unable to edit any field and save the changes back to the table in the database.
    I

    Hi Ravi,
    Check out the below demo program for editable ALV .
    REPORT  ZDEMO_ALVGRID_EDIT                 .
    TABLES:     ekko.
    TYPE-POOLS: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
      field_style  TYPE lvc_t_styl, "FOR DISABLE
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.
    DATA: it_fieldcat TYPE lvc_t_fcat,     "slis_t_fieldcat_alv WITH HEADER LINE,
          wa_fieldcat TYPE lvc_s_fcat,
          gd_tab_group TYPE slis_t_sp_group_alv,
          gd_layout    TYPE lvc_s_layo,     "slis_layout_alv,
          gd_repid     LIKE sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM set_specific_field_attributes.
      PERFORM build_fieldcatalog.
      PERFORM build_layout.
      PERFORM display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
    *       Build Fieldcatalog for ALV Report
    FORM build_fieldcatalog.
      wa_fieldcat-fieldname   = 'EBELN'.
      wa_fieldcat-scrtext_m   = 'Purchase Order'.
      wa_fieldcat-col_pos     = 0.
      wa_fieldcat-outputlen   = 10.
      wa_fieldcat-emphasize   = 'X'.
      wa_fieldcat-key         = 'X'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'EBELP'.
      wa_fieldcat-scrtext_m   = 'PO Item'.
      wa_fieldcat-col_pos     = 1.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'STATU'.
      wa_fieldcat-scrtext_m   = 'Status'.
      wa_fieldcat-col_pos     = 2.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'AEDAT'.
      wa_fieldcat-scrtext_m   = 'Item change date'.
      wa_fieldcat-col_pos     = 3.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'MATNR'.
      wa_fieldcat-scrtext_m   = 'Material Number'.
      wa_fieldcat-col_pos     = 4.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'MENGE'.
      wa_fieldcat-scrtext_m   = 'PO quantity'.
      wa_fieldcat-col_pos     = 5.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'MEINS'.
      wa_fieldcat-scrtext_m   = 'Order Unit'.
      wa_fieldcat-col_pos     = 6.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'NETPR'.
      wa_fieldcat-scrtext_m   = 'Net Price'.
      wa_fieldcat-edit        = 'X'. "sets whole column to be editable
      wa_fieldcat-col_pos     = 7.
      wa_fieldcat-outputlen   = 15.
      wa_fieldcat-datatype     = 'CURR'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'PEINH'.
      wa_fieldcat-scrtext_m   = 'Price Unit'.
      wa_fieldcat-col_pos     = 8.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
    *       Build layout for ALV grid report
    FORM build_layout.
    * Set layout field for field attributes(i.e. input/output)
      gd_layout-stylefname = 'FIELD_STYLE'.
      gd_layout-zebra             = 'X'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
    *       Display report using ALV grid
    FORM display_alv_report.
      gd_repid = sy-repid.
    *  call function 'REUSE_ALV_GRID_DISPLAY'
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
           EXPORTING
                i_callback_program      = gd_repid
    *            i_callback_user_command = 'USER_COMMAND'
                is_layout_lvc               = gd_layout
                it_fieldcat_lvc             = it_fieldcat
                i_save                  = 'X'
           TABLES
                t_outtab                = it_ekko
           EXCEPTIONS
                program_error           = 1
                OTHERS                  = 2.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
    *       Retrieve data form EKPO table and populate itab it_ekko
    FORM data_retrieval.
      SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
       UP TO 10 ROWS
        FROM ekpo
        INTO  CORRESPONDING FIELDS OF TABLE it_ekko.
    ENDFORM.                    " DATA_RETRIEVAL
    *&      Form  set_specific_field_attributes
    *       populate FIELD_STYLE table with specific field attributes
    form set_specific_field_attributes .
      DATA ls_stylerow TYPE lvc_s_styl .
      DATA lt_styletab TYPE lvc_t_styl .
    * Populate style variable (FIELD_STYLE) with style properties
    * The NETPR field/column has been set to editable in the fieldcatalog...
    * The following code sets it to be disabled(display only) if 'NETPR'
    * is gt than 10.
      LOOP AT it_ekko INTO wa_ekko.
        IF wa_ekko-netpr GT 10.
          ls_stylerow-fieldname = 'NETPR' .
          ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
                                                 "set field to disabled
          APPEND ls_stylerow  TO wa_ekko-field_style.
          MODIFY it_ekko FROM wa_ekko.
        ENDIF.
      ENDLOOP.
    endform.                    " set_specific_field_attributes

  • Field width in ALV report

    Hi,
    How to increase the field width of a field in ALV report.
    I mean, in a ALV report, the field description of a field is not showing correctly. IF i try to extend the field width by the mouse/coursor, it displays the correct description.
    IS there any way where for displaying the  field description correctly?
    Thanks,
    Kumar

    Hi,
    Go through the sample code,
    *& Report ZDEMO_ALVLIST *
    *& Example of a simple ALV List Report *
    *& The basic requirement for this demo is to display a number of *
    *& fields from the EKKO table. *
    REPORT zdemo_alvlist .
    TABLES: ekko.
    type-pools: slis. "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
    ebeln TYPE ekpo-ebeln,
    ebelp TYPE ekpo-ebelp,
    statu TYPE ekpo-statu,
    aedat TYPE ekpo-aedat,
    matnr TYPE ekpo-matnr,
    menge TYPE ekpo-menge,
    meins TYPE ekpo-meins,
    netpr TYPE ekpo-netpr,
    peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
    wa_ekko TYPE t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
    gd_tab_group type slis_t_sp_group_alv,
    gd_layout type slis_layout_alv,
    gd_repid like sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform display_alv_report.
    *& Form BUILD_FIELDCATALOG
    Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
    There are a number of ways to create a fieldcat.
    For the purpose of this example i will build the fieldcatalog manualy
    by populating the internal table fields individually and then
    appending the rows. This method can be the most time consuming but can
    also allow you more control of the final product.
    Beware though, you need to ensure that all fields required are
    populated. When using some of functionality available via ALV, such as
    total. You may need to provide more information than if you were
    simply displaying the result
    I.e. Field type may be required in-order for
    the 'TOTAL' function to work.
    fieldcatalog-fieldname = 'EBELN'.
    fieldcatalog-seltext_m = 'Purchase Order'.
    fieldcatalog-col_pos = 0.
    fieldcatalog-outputlen = 10.
    fieldcatalog-emphasize = 'X'.
    fieldcatalog-key = 'X'.
    fieldcatalog-do_sum = 'X'.
    fieldcatalog-no_zero = 'X'.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'EBELP'.
    fieldcatalog-seltext_m = 'PO Item'.
    fieldcatalog-col_pos = 1.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'STATU'.
    fieldcatalog-seltext_m = 'Status'.
    fieldcatalog-col_pos = 2.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'AEDAT'.
    fieldcatalog-seltext_m = 'Item change date'.
    fieldcatalog-col_pos = 3.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'MATNR'.
    fieldcatalog-seltext_m = 'Material Number'.
    fieldcatalog-col_pos = 4.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'MENGE'.
    fieldcatalog-seltext_m = 'PO quantity'.
    fieldcatalog-col_pos = 5.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'MEINS'.
    fieldcatalog-seltext_m = 'Order Unit'.
    fieldcatalog-col_pos = 6.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'NETPR'.
    fieldcatalog-seltext_m = 'Net Price'.
    fieldcatalog-col_pos = 7.
    fieldcatalog-outputlen = 15.
    fieldcatalog-datatype = 'CURR'.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'PEINH'.
    fieldcatalog-seltext_m = 'Price Unit'.
    fieldcatalog-col_pos = 8.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    endform. " BUILD_FIELDCATALOG
    *& Form BUILD_LAYOUT
    Build layout for ALV grid report
    form build_layout.
    gd_layout-no_input = 'X'.
    gd_layout-colwidth_optimize = 'X'.
    gd_layout-totals_text = 'Totals'(201).
    gd_layout-totals_only = 'X'.
    gd_layout-f2code = 'DISP'. "Sets fcode for when double
    "click(press f2)
    gd_layout-zebra = 'X'.
    gd_layout-group_change_edit = 'X'.
    gd_layout-header_text = 'helllllo'.
    endform. " BUILD_LAYOUT
    *& Form DISPLAY_ALV_REPORT
    Display report using ALV grid
    form display_alv_report.
    gd_repid = sy-repid.
    call function 'REUSE_ALV_LIST_DISPLAY'
    exporting
    i_callback_program = gd_repid
    i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
    i_callback_user_command = 'USER_COMMAND'
    i_grid_title = outtext
    is_layout = gd_layout
    it_fieldcat = fieldcatalog[]
    it_special_groups = gd_tabgroup
    IT_EVENTS = GT_XEVENTS
    i_save = 'X'
    is_variant = z_template
    tables
    t_outtab = it_ekko
    exceptions
    program_error = 1
    others = 2.
    if sy-subrc 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    endform. " DISPLAY_ALV_REPORT
    *& Form DATA_RETRIEVAL
    Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
    from ekpo
    into table it_ekko.
    endform. " DATA_RETRIEVAL
    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 = 'EKKO Table Report'.
    append wa_header to t_header.
    clear wa_header.
    Date
    wa_header-typ = 'S'.
    wa_header-key = 'Date: '.
    CONCATENATE sy-datum+6(2) '.'
    sy-datum+4(2) '.'
    sy-datum(4) INTO wa_header-info. "todays date
    append wa_header to t_header.
    clear: wa_header.
    Total No. of Records Selected
    describe table it_ekko lines ld_lines.
    ld_linesc = ld_lines.
    concatenate 'Total No. of Records Selected: ' ld_linesc
    into t_line separated by space.
    wa_header-typ = 'A'.
    wa_header-info = t_line.
    append wa_header to t_header.
    clear: wa_header, t_line.
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = t_header.
    i_logo = 'Z_LOGO'.
    endform.
    Regards,
    Raj.

  • Summation of a field in ALV report

    Hi,
    I hv created an ALV Report. But i m not getting the summation sign in the Application Toolbar. What can be the problem? I am trying to find out the sum of the the field NETWR in table VBAK.
    Thanks,
    Mohit.

    See the ALV function module used  by  you and  me  ... the  below  program gives the summation  icon  in the  alv bar .
    *& Report  ZDEMO_ALVGRID                                               *
    *& Example of a simple ALV Grid Report                                 *
    REPORT  zdemo_alvgrid                 .
    TABLES:     ekko.
    type-pools: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
    *       Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
    * There are a number of ways to create a fieldcat.
    * For the purpose of this example i will build the fieldcatalog manualy
    * by populating the internal table fields individually and then
    * appending the rows. This method can be the most time consuming but can
    * also allow you  more control of the final product.
    * Beware though, you need to ensure that all fields required are
    * populated. When using some of functionality available via ALV, such as
    * total. You may need to provide more information than if you were
    * simply displaying the result
    *               I.e. Field type may be required in-order for
    *                    the 'TOTAL' function to work.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    *  fieldcatalog-do_sum      = 'X'.
    *  fieldcatalog-no_zero     = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-do_sum      = 'X'.        "Display column total
      fieldcatalog-datatype     = 'CURR'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
    *       Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    *  gd_layout-totals_only        = 'X'.
    *  gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
    *                                         "click(press f2)
    *  gd_layout-zebra             = 'X'.
    *  gd_layout-group_change_edit = 'X'.
    *  gd_layout-header_text       = 'helllllo'.
    endform.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
    *       Display report using ALV grid
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
    *            i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
    *            i_callback_user_command = 'USER_COMMAND'
    *            i_grid_title           = outtext
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
    *            it_special_groups       = gd_tabgroup
    *            IT_EVENTS                = GT_XEVENTS
                i_save                  = 'X'
    *            is_variant              = z_template
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
    *       Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
      from ekpo
      into table it_ekko.
    endform.                    " DATA_RETRIEVAL
    reward  points if it is usefull
    Girish

  • Help needed for editable alv grid program

    hi,
    Can you please tell me how to set a ‘update’ button in application toolbar of alv griv without suppressing it and how to write the code for that update button so that if I change my editable column data and press the update button my updated data should be stored in my database table.
    the code what i wrote is:
    TABLES: vbak,vbap.
    TYPE-POOLS: slis. "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_final,
    vbeln LIKE vbak-vbeln,
    erdat LIKE vbak-erdat,
    matnr LIKE vbap-matnr,
    posnr LIKE vbap-posnr,
    END OF t_final.
    DATA: i_final TYPE STANDARD TABLE OF t_final INITIAL SIZE 0,
    wa_final TYPE t_final.
    *ALV data declarations
    DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
    gd_tab_group TYPE slis_t_sp_group_alv,
    gd_layout TYPE slis_layout_alv,
    gd_repid LIKE sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
    PERFORM data_retrieval.
    PERFORM build_fieldcatalog.
    PERFORM build_layout.
    PERFORM display_alv_report.
    *& Form BUILD_FIELDCATALOG
    •     Build Fieldcatalog for ALV Report
    FORM build_fieldcatalog.
    fieldcatalog-fieldname = 'VBELN'.
    fieldcatalog-seltext_m = 'sales order'.
    fieldcatalog-col_pos = 0.
    APPEND fieldcatalog TO fieldcatalog.
    CLEAR fieldcatalog.
    fieldcatalog-fieldname = 'ERDAT'.
    fieldcatalog-seltext_m = 'date'.
    fieldcatalog-col_pos = 1.
    APPEND fieldcatalog TO fieldcatalog.
    CLEAR fieldcatalog.
    fieldcatalog-fieldname = 'MATNR'.
    fieldcatalog-seltext_m = 'material no.'.
    fieldcatalog-col_pos = 2.
    fieldcatalog-edit = 'X'.
    APPEND fieldcatalog TO fieldcatalog.
    CLEAR fieldcatalog.
    fieldcatalog-fieldname = 'POSNR'.
    fieldcatalog-seltext_m = 'line item no.'.
    fieldcatalog-col_pos = 3.
    APPEND fieldcatalog TO fieldcatalog.
    CLEAR fieldcatalog.
    ENDFORM. " BUILD_FIELDCATALOG
    *& Form BUILD_LAYOUT
    •     Build layout for ALV grid report
    FORM build_layout.
    gd_layout-no_input = 'X'.
    gd_layout-colwidth_optimize = 'X'.
    gd_layout-totals_text = 'Totals'(201).
    •     gd_layout-totals_only = 'X'.
    •     gd_layout-f2code = 'DISP'. "Sets fcode for when double
    •     "click(press f2)
    •     gd_layout-zebra = 'X'.
    •     gd_layout-group_change_edit = 'X'.
    •     gd_layout-header_text = 'helllllo'.
    ENDFORM. " BUILD_LAYOUT
    *& Form DISPLAY_ALV_REPORT
    •     Display report using ALV grid
    FORM display_alv_report.
    gd_repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = gd_repid
    •     i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
    i_callback_user_command = 'USER_COMMAND'
    i_grid_title = outtext
    is_layout = gd_layout
    it_fieldcat = fieldcatalog[]
    •     it_special_groups = gd_tabgroup
    •     IT_EVENTS = GT_XEVENTS
    i_save = 'X'
    •     is_variant = z_template
    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.
    ENDFORM. " DISPLAY_ALV_REPORT
    *& Form DATA_RETRIEVAL
    •     Retrieve data form EKPO table and populate itab it_ekko
    FORM data_retrieval.
    SELECT avbeln aerdat bmatnr bposnr FROM vbak AS a
    INNER JOIN vbap AS b ON avbeln = bvbeln
    INTO TABLE i_final WHERE avbeln = bvbeln.
    •     ENDFORM. " DATA_RETRIEVAL
    thanks in advance.

    hi sudhir,
    thanks for ur reply.
    after seeing the code u send to me i made changes to my program.but still when i click on update button,nothing is happening.can u please suggest me an idea.
    TABLES: vbak,vbap.
    TYPE-POOLS: slis.                                 "ALV Declarations
    TYPES: BEGIN OF t_final,
         vbeln LIKE vbak-vbeln,
         erdat LIKE vbak-erdat,
         matnr LIKE vbap-matnr,
         posnr LIKE vbap-posnr,
         END OF t_final.
    DATA: i_final TYPE STANDARD TABLE OF t_final WITH HEADER LINE,
          wa_final TYPE t_final.
    *DATA:i_final LIKE vbap OCCURS 0.
    *DATA:wa_final LIKE vbap.
    *ALV data declarations
    DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
          gd_tab_group TYPE slis_t_sp_group_alv,
          gd_layout    TYPE slis_layout_alv,
          gd_repid LIKE sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM build_fieldcatalog.
      PERFORM build_layout.
      PERFORM display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
          Build Fieldcatalog for ALV Report
    FORM build_fieldcatalog.
      fieldcatalog-fieldname   = 'VBELN'.
      fieldcatalog-seltext_m   = 'sales order'.
      fieldcatalog-col_pos     = 0.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'ERDAT'.
      fieldcatalog-seltext_m   = 'date'.
      fieldcatalog-col_pos     = 1.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'material no.'.
      fieldcatalog-col_pos     = 2.
      fieldcatalog-edit        = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'POSNR'.
      fieldcatalog-seltext_m   = 'line item no.'.
      fieldcatalog-col_pos     = 3.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    FORM build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    gd_layout-totals_only        = 'X'.
    gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
                                            "click(press f2)
    gd_layout-zebra             = 'X'.
    gd_layout-group_change_edit = 'X'.
    gd_layout-header_text       = 'helllllo'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    FORM display_alv_report.
      gd_repid = sy-repid.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                i_callback_program      = gd_repid
               i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
                i_callback_user_command = 'USER_COMMAND'
                i_callback_pf_status_set = 'GUI_STAT'
               i_grid_title           = outtext
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
               it_special_groups       = gd_tabgroup
               it_events                = it_events
                i_save                  = 'X'
               is_variant              = z_template
           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.
    ENDFORM.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    FORM data_retrieval.
      SELECT avbeln aerdat bmatnr bposnr FROM vbak AS a
      INNER JOIN vbap AS b ON avbeln = bvbeln
      INTO TABLE i_final WHERE avbeln = bvbeln.
    ENDFORM.                    " DATA_RETRIEVAL
          FORM GUI_STAT                                                 *
    -->  RT_EXTAB                                                      *
    FORM gui_stat USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'UPDATE' EXCLUDING rt_extab.
    ENDFORM.
          FORM USER_COMMAND                                             *
    -->  U_COMM                                                        *
    -->  RS_SELFIELD                                                   *
    FORM user_command USING u_comm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
      DATA:selfield TYPE slis_selfield.
      CASE u_comm.
        WHEN 'UPDATE'.
          LOOP AT i_final ."into wa_final.
            i_final-matnr = vbap-matnr.
            update (vbap) from table i_final.
            IF sy-subrc = 0.
              MESSAGE s000(0) WITH 'records updated successfully'.
            ENDIF.
          ENDLOOP.
      ENDCASE.
    ENDFORM.

  • Subtotals in ALV

    Hi
    SAP Guru s
    I am facing a dump when i pass the Gt_sort in reuse alv display FM
    I am tryingto display the subtotals on the kunnr for dollars and count  via ALV
    following is the code
    ur advice is highly appreciated
    thanks
    report orders .
                       DICTIONARY TABLES
    tables: vbak,            "Sales Document: Header Data
            vbpa,            "Sales Document: Partner
            vbuk,  "Sales Document: Header Status and Administrative Data
            adrc.
    ALV Declarations                                                     *
    type-pools: slis, kkblo.
    data: g_repid      like  sy-repid,
          gs_layout    type  slis_layout_alv,
          gt_fieldcat  type  slis_t_fieldcat_alv,
          fieldcat_in  like  line of  gt_fieldcat,
          cos_pos      type  i,
          gt_events           type slis_t_event,
          gt_sort             type slis_t_sortinfo_alv,
          months like komp-anz_monate.
    data: g_anzlines  type  i.
    data : t_list_top_of_page type slis_t_listheader.
    data : t_list_end_of_list type slis_t_listheader.
    data : t_events type slis_t_event.
                      DATA
    data: gv_netwr like vbak-netwr,
          gv_netwr0 like vbak-netwr,
          zvbeln like vbak-vbeln,
          gv_count(6) type n,
          gv_count0(6) type n,
          erdat1 like vbak-erdat,
          temp like vbak-erdat,
          temp1(10),
          erdat2 like vbak-erdat,
          vkorg like vbak-vkorg,
          erdat(25),
          hyphen(3) value '---',
          p_name1 like adrc-name1,
          zlines type i,
          g_tabix like sy-tabix,
          month_nme(10),
          zline type i,
          gv_tot like vbak-netwr,
          gv_kcount type i,
          gv_ktot like vbak-netwr,
          l_tabix like sy-tabix.
                      INTERNAL TABLES
    data: begin of zvbak occurs 0,
           vbeln like vbak-vbeln,                "order no
           erdat like vbak-erdat,
           vgbel like vbak-vgbel,                "reference doc num
           netwr like vbak-netwr,                " amount
          end of zvbak.
    data: zvbak0 like zvbak occurs 0 with header line.
    data: begin of zvbpa occurs 0,
            name1 like adrc-name1,
            month(2),
            vbeln like vbpa-vbeln,
            parvw like vbpa-parvw,        " partner function
            kunnr like vbpa-kunnr,
            adrnr like vbpa-adrnr,
            netwr like vbak-netwr,
            erdat like vbak-erdat,
         end of zvbpa.
    data: zvbpa0 like zvbpa occurs 0 with header line.
    data: alv_dat like zvbpa occurs 0 with header line,
          alv_data0 like zvbpa occurs 0 with header line.
    data: begin of alv0  occurs 0,
          kunnr like vbak-kunnr,
          name1 like adrc-name1,
          count type i,
          dollars like vbak-netwr ,
          kcount type i,
          kdollars like vbak-netwr,
          month_nme(10),
          erdat like vbak-erdat,
          netwr like vbak-netwr,
          vbeln like vbpa-vbeln,
          end of alv0.
    data: begin of zvbuk occurs 0,
           vbeln like vbak-vbeln,
           netwr like vbak-netwr,
           erdat like vbak-erdat,
    end of zvbuk.
    data: begin of ztab_period occurs 0,
            sindex like  scscp_period_str-sindex,
            datuv  like scscp_period_str-datuv,
            datub like scscp_period_str-datub,
            id like scscp_period_str-id,
            name(10) type c,
          end of ztab_period.
    data: begin of ztab_perio0 occurs 0,
            sindex like  scscp_period_str-sindex,
            datuv  like scscp_period_str-datuv,
            id like scscp_period_str-id,
            name(10) type c,
          end of ztab_perio0.
                      SELECTION SCREEN
    selection-screen begin of block b with frame title text-001 .
    select-options:  s_erdat for vbak-erdat obligatory,
                     s_vkorg for vbak-vkorg obligatory.
    selection-screen end of block b.
    *INITIALIZATION.
    initialization.
      g_repid = sy-repid.
    *START-OF-SELECTION.
    start-of-selection.
      data:t_index like sy-tabix.
      perform select_orders tables alv_data0.
      loop at alv_data0.
        t_index = sy-tabix.
        move alv_data0-erdat+4(2) to alv_data0-month.
        modify alv_data0 index t_index transporting month.
        clear alv_data0.
      endloop.
      sort alv_data0 by name1 month.
      loop at alv_data0.
        if alv_data0-name1 = space.
          delete alv_data0.
        endif.
        move alv_data0-kunnr to alv0-kunnr.
        at new name1.
          move: alv_data0-name1 to alv0-name1.
        endat.
        gv_netwr = alv_data0-netwr + gv_netwr.
        gv_count = gv_count + 1.
        at end of month.
          call function 'MONTH_TO_MONTHNAME'
               exporting
                    monthnum  = alv_data0-month
               importing
                    monthname = month_nme.
          move month_nme to alv0-month_nme.
          move gv_count to alv0-count.
          move gv_netwr to alv0-dollars.
          append alv0.
          clear: alv0, gv_netwr, gv_count.
        endat.
      endloop.
    **END-OF-SELECTION.
    end-of-selection.
      loop at alv0 .
        gv_tot = gv_tot + alv0-dollars.
      endloop.
      describe table alv0 lines g_anzlines.
      if g_anzlines gt 0.
        perform display_list.
      endif.
    *&      Form  select_orders
          text
    -->  p1        text
    <--  p2        text
    form select_orders tables alv_dat structure zvbpa.
      data: gv_index like sy-tabix,
           ztab like ztab_period,
           erdath like vbak-erdat,
           erdat_h like vbak-erdat.
      erdat1 = s_erdat-low(8).
      erdath = s_erdat-high(8).
      concatenate erdat1 hyphen erdat_h erdath into erdat.
      vkorg = s_vkorg+3(4).
    *calculate the no of orders and dollars month wise from the selection
    *date
      call function 'CSCP_PARA1_GET_PERIODS'
           exporting
                i_datuv    = s_erdat-low
                i_datub    = s_erdat-high
                i_timeunit = 'D'
           tables
                et_dates   = ztab_period.
      clear ztab_period.
      clear gv_index.
      describe table ztab_period lines zlines.
      loop at ztab_period.
        move-corresponding ztab_period to ztab_perio0.
        append ztab_perio0.
        clear ztab_perio0.
      endloop.
      sort ztab_perio0 by datuv.
      loop at ztab_perio0.
        if zlines = 2 and ztab_perio0-sindex = 1.
          delete ztab_perio0.
          clear ztab_perio0.
          exit.
        endif.
      endloop.
    *always delete first and last records in the internal table
      loop at ztab_perio0.
        if  ( ztab_perio0-sindex = 1 ) .
          delete ztab_perio0.
        endif.
      endloop.
    *Assign Month name and calculate no of orders
      clear gv_index.
      clear: ztab, ztab_perio0.
      describe table ztab_perio0 lines zline.
      loop at ztab_perio0 into ztab.
        gv_index = sy-tabix.
        if ( ( ztab-datuv+4(2) = '01' ) or
             ( ztab-datuv+4(2) = '02' ) or
             ( ztab-datuv+4(2) = '03' ) or
             ( ztab-datuv+4(2) = '04' ) or
             ( ztab-datuv+4(2) = '05' ) or
             ( ztab-datuv+4(2) = '06' ) or
             ( ztab-datuv+4(2) = '07' ) or
             ( ztab-datuv+4(2) = '08' ) or
             ( ztab-datuv+4(2) = '09' ) or
             ( ztab-datuv+4(2) = '10' ) or
             ( ztab-datuv+4(2) = '11' ) or
             ( ztab-datuv+4(2) = '12' ) ).
          erdat1 = ztab-datuv.
          perform cal_no_of_orders tables    alv_dat
                                  using     erdat1
                                  changing  gv_count0 gv_netwr0.
          clear : erdat1 , ztab.
        endif.
        clear ztab.
      endloop.
    endform.                    " select_orders
    *&      Form  DISPLAY_LIST
          text
    -->  p1        text
    <--  p2        text
    form display_list.
      g_repid = sy-repid.
    sort alv0 by kunnr.
    loop at alv0.
       gv_ktot = gv_ktot + alv0-dollars.
       gv_kcount = gv_kcount + alv0-count.
       at end of kunnr.
         move gv_ktot to alv0-kdollars.
         move gv_kcount to alv0-kcount.
         append alv0.
         clear: alv0, gv_kcount, gv_ktot.
       endat.
    endloop.
      perform fillevents.
      perform comment_build using  t_list_top_of_page.
      perform create_layout.
      perform create_fieldcat.
      call function 'REUSE_ALV_GRID_DISPLAY'
       exporting
        I_INTERFACE_CHECK                 = ' '
        I_BYPASSING_BUFFER                =
        I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = g_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       = ' '
        I_STRUCTURE_NAME                  =
        I_BACKGROUND_ID                   = ' '
        I_GRID_TITLE                      =
        I_GRID_SETTINGS                   = gs_settings
         is_layout                         = gs_layout
         it_fieldcat                       = gt_fieldcat
        IT_EXCLUDING                      =
        IT_SPECIAL_GROUPS                 =
         it_sort                           = gt_sort[]     ===========================>[ a dump is created here 
        IT_FILTER                         =
        IS_SEL_HIDE                       =
        I_DEFAULT                         = 'X'
         i_save                            = 'A'
        IS_VARIANT                        =
         it_events                         = t_events
        IT_EVENT_EXIT                     =
        IS_PRINT                          =
        IS_REPREP_ID                      =
        I_SCREEN_START_COLUMN             = 0
        I_SCREEN_START_LINE               = 0
        I_SCREEN_END_COLUMN               = 0
        I_SCREEN_END_LINE                 = 0
        IT_ALV_GRAPHICS                   =
        IT_ADD_FIELDCAT                   =
        IT_HYPERLINK                      =
        I_HTML_HEIGHT_TOP                 =
        I_HTML_HEIGHT_END                 =
        IT_EXCEPT_QINFO                   =
      IMPORTING
        E_EXIT_CAUSED_BY_CALLER           =
        ES_EXIT_CAUSED_BY_USER            =
        tables
          t_outtab                          = alv0
      EXCEPTIONS
        PROGRAM_ERROR                     = 1
        OTHERS                            = 2
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.                    " DISPLAY_LIST
    *&      Form  comment_build
          text
         -->P_t_list_top_of_page  text
    form comment_build using     t_list_top_of_page type slis_t_listheader.
      data : ls_line type slis_listheader.
      data : ldate(10),hdate(10).
      data : lv_dat(20).
      clear lv_dat.
      refresh :  t_list_top_of_page.
      clear ls_line.
      ls_line-info = sy-repid.
      ls_line-typ  = 'H'.
      ls_line-info = 'ORDERS AND DOLLARS REPORT'.
      append ls_line to  t_list_top_of_page.
      write sy-datum to ldate using edit mask '__.__.____' .
      clear ls_line.
      ls_line-typ  = 'A'.
      concatenate 'Run Date :' ldate
                    into ls_line-info separated by space.
      append ls_line to  t_list_top_of_page.
      clear ls_line.
      ls_line-typ  = 'A'.
      ls_line-info = 'User ID   :'.
      ls_line-info+12 = sy-uname.
      append ls_line to  t_list_top_of_page.
    clear ls_line.
    ls_line-typ = 'A'.
    ls_line-info = 'No OF ORDERS   :'.
    ls_line-info+17 = gv_count.
    append ls_line to  t_list_top_of_page.
      clear ls_line.
      ls_line-typ = 'A'.
      ls_line-info = 'TOTAL dOLLAR AMOUNT   :'.
      ls_line-info+25 = gv_tot.
      append ls_line to  t_list_top_of_page.
      clear ls_line.
      concatenate s_erdat3(8) '----' s_erdat11(8) into lv_dat.
      ls_line-typ = 'A'.
      ls_line-info = 'Date Range for Documents   :'.
      ls_line-info+25 = lv_dat.
      append ls_line to  t_list_top_of_page.
      clear ls_line.
      ls_line-typ = 'A'.
      ls_line-info = 'Sales Organization   :'.
      ls_line-info+25 = vkorg.
      append ls_line to  t_list_top_of_page.
    endform.                    " comment_build
    *&      Form  fillevents
          text
    -->  p1        text
    <--  p2        text
    form fillevents.
      data l_events type line of slis_t_event.
      clear l_events.
      l_events-name = 'TOP_OF_PAGE'.
      l_events-form = 'TOP_OF_PAGE'.
      append l_events to t_events.
    *perform top-of-page1.
    endform.                    " fillevents
    *&      Form  create_fieldcat
          text
    -->  p1        text
    <--  p2        text
    form create_fieldcat.
      perform fill_fieldcat using:
                       'NAME1'     'ALV0' 'NAME'         '1' '',
                       'MONTH_NME' 'ALV0' 'EDIMONTH'     '2' '',
                       'DOLLARS'   'ALV0' 'DOLLARS'      '3' '',
                       'COUNT'     'ALV0' 'COUNT'        '4' ''.
    endform.                    " create_fieldcat
    *&      Form  create_layout
          text
    -->  p1        text
    <--  p2        text
    form create_layout.
      gs_layout-colwidth_optimize = 'X'.
      gs_layout-zebra             = 'X'.
      gs_layout-no_totalline      = 'X'.
    endform.                    " create_layout
    *&      Form  fill_fieldcat
          text
         -->P_0564   text
         -->P_0565   text
         -->P_0566   text
         -->P_0567   text
         -->P_0568   text
    form fill_fieldcat using    p_fname
                       p_tabname
                       p_seltext
                       p_colpos
                       p_do_sum.
      clear fieldcat_in.
      fieldcat_in-fieldname  =  p_fname.
      fieldcat_in-tabname    =  p_tabname.
      fieldcat_in-seltext_m  =  p_seltext.
      fieldcat_in-col_pos    =  p_colpos.
      fieldcat_in-do_sum     = p_do_sum.
      append fieldcat_in to gt_fieldcat.
      clear fieldcat_in.
      fieldcat_in-fieldname     = 'DOLLARS'.
      fieldcat_in-tabname       = 'ALV0'.
      fieldcat_in-no_out        = ' '.
      fieldcat_in-do_sum        = 'X'.   "SUM UPON DISPLAY
      append fieldcat_in to gt_fieldcat.
    clear fieldcat_in.
      fieldcat_in-fieldname     = 'COUNT'.
      fieldcat_in-tabname       = 'ALV0'.
      fieldcat_in-no_out        = ' '.
      fieldcat_in-do_sum        = 'X'.   "SUM UPON DISPLAY
      append fieldcat_in to gt_fieldcat.
    data sorting and subtotal
      data: gs_sort type slis_sortinfo_alv.
      clear gs_sort.
      gs_sort-tabname = 'ALV0'.
      gs_sort-fieldname = 'KUNNR'.
      gs_sort-spos      = 1.
      gs_sort-up        = 'X'.
      gs_sort-subtot    = 'X'.
      append gs_sort to gt_sort.
      gs_sort-tabname = 'ALV0'.
      gs_sort-fieldname = 'DOLLARS'.
      gs_sort-spos      = 3.
      gs_sort-up        = 'X'.
      gs_sort-subtot    = 'X'.
      append gs_sort to gt_sort.
      gs_sort-tabname = 'ALV0'.
      gs_sort-fieldname = 'COUNT'.
      gs_sort-spos      = 4.
      gs_sort-up        = 'X'.
      gs_sort-subtot    = 'X'.
      append gs_sort to gt_sort.
    Gs_layout-cell_merge = 'X'.
    endform.                    " fill_fieldcat
    *&      Form TOP_OF_PAGE
    form top_of_page.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                i_logo             = 'ENJOYSAP_LOGO'
                it_list_commentary = t_list_top_of_page.
    endform.
    *&      Form  cal_no_of_orders
          text
         -->P_ALV_dat  text
         -->P_ERDAT1  text
         <--P_KUNNR  text
         <--P_GV_COUNT  text
         <--P_GV_NETWR  text
         <--P_GV_NAME1  text
    form cal_no_of_orders tables alv_tab structure zvbpa
                          using    p_erdat1
                          changing p_gv_count
                                   p_gv_netwr.
      clear: alv_tab, p_gv_count, p_gv_netwr, g_tabix, zvbak, zvbpa.
      refresh: zvbak, zvbpa.
      data: g_tabix  like sy-tabix,
              gv_index like sy-tabix.
      data: av_tab like zvbpa occurs 0 with header line.
    *Select Orders Processed
      select  vbeln erdat netwr vgbel from vbak
            into corresponding fields of table zvbak where
            erdat = p_erdat1  and
            vkorg in s_vkorg and
            auart = 'ZEDI'   and
            (  ( bsark = 'DFUA' ) or
              ( bsark = 'DFUE' ) or
              ( bsark = 'DFUI' )  ).
      if sy-subrc = 0.
        clear sy-subrc .
        sort zvbak by vbeln.
        select vbeln parvw kunnr adrnr from vbpa
                into corresponding fields of table zvbpa
                for all entries  in zvbak
                where vbeln = zvbak-vbeln
                and  parvw = 'AG'.
        if sy-subrc = 0.
          clear zvbpa.
          loop at zvbpa.
            g_tabix = sy-tabix.
            read table zvbak with key vbeln = zvbpa-vbeln binary search.
            if sy-subrc eq 0.
              move :zvbak-netwr to zvbpa-netwr,
                    zvbak-erdat to zvbpa-erdat.
              modify zvbpa index g_tabix.
            endif.
            select single name1 into (p_name1 )
                                from adrc
                                where addrnumber = zvbpa-adrnr.
            if sy-subrc = 0.
              move p_name1 to zvbpa-name1.
              modify zvbpa index g_tabix.
            endif.
          endloop.
        endif.
      endif.
    move Processed Orders to ALV display table
      clear zvbpa.
      loop at zvbpa.
        move-corresponding zvbpa to alv_tab.
        append alv_tab.
        clear alv_tab.
      endloop.
    endform.                    "  cal_no_of_orders<i></i>
    Message was edited by:
            sap learner

    this is the short dump
    What happened?                                                                               
    The current application program detected a situation which really                
    should not occur. Therefore, a termination with a short dump was                 
    triggered on purpose by the key word MESSAGE (type X).                                                                               
    What can you do?                                                                               
    0060   *"       CHANGING                                                        
    0070   *"             VALUE(CT_SORT) TYPE  LVC_T_SORT                           
    0080   *"                                                                       
    0090   -
    &#61664;                                                                         
    0100     FIELD-SYMBOLS: <LS_FIELDCAT> TYPE LVC_S_FCAT.                          
    000110     DATA: LS_SORT     TYPE LVC_S_SORT.                                
    000120     DATA: LFLG_MODIFY(1) TYPE C.                                      
    000130     DATA: LFLG_EXPA_DEFAULT_SET(1) TYPE C.                            
    000140     DATA: L_COUNT LIKE SY-TABIX.                                      
    000150                                                                       
    000160     SORT IT_FIELDCAT BY FIELDNAME.                                    
    000170     SORT CT_SORT STABLE BY SPOS ASCENDING.                            
    000180     LOOP AT CT_SORT INTO LS_SORT.                                     
    000190       LS_SORT-SPOS = SY-TABIX.                                        
    000200       MODIFY CT_SORT FROM LS_SORT.                                    
    000210     ENDLOOP.                                                          
    000220                                                                       
    000230     SORT CT_SORT BY SPOS DESCENDING.                                  
    000240                                                                       
    000250   * Default settings for subtotals                                    
    000260     READ TABLE CT_SORT WITH KEY COMP = 'X' TRANSPORTING NO FIELDS.    
    000270     IF SY-SUBRC NE 0.                                                 
    000280       LFLG_MODIFY = 'X'.                                              
    000290     ENDIF.                                                            
    000300                                                                       
    000310     LOOP AT CT_SORT INTO LS_SORT.                                     
    000320                                                                       
    000330       READ TABLE IT_FIELDCAT ASSIGNING <LS_FIELDCAT>                  
    000340            WITH KEY FIELDNAME = LS_SORT-FIELDNAME BINARY SEARCH.      
    000350       IF SY-SUBRC NE 0.                                               
      >         MESSAGE X000(0K).                                             
    000370       ENDIF.                                                          
    000380                                                                       
    000390       LS_SORT-SELTEXT = <LS_FIELDCAT>-SELTEXT.                        
    000400                                                                       
    000410   *     Zwischensummenstufen ermitteln                                
    000420       IF NOT LS_SORT-SUBTOT IS INITIAL.                               
    000430         L_COUNT = L_COUNT + 1.                                        
    000440       ENDIF.                                                          
    000450                                                                       
    000460       IF L_COUNT = 1 AND LFLG_EXPA_DEFAULT_SET = 'X'.                 
    000470         LS_SORT-EXPA = 'X'.                                           
    000480       ENDIF.                                                          
    000490   *     Default setzten (s.o.)                                        
    000500       IF LFLG_MODIFY = 'X'.                                           
    000510         LS_SORT-COMP = 'X'.                                           
    000520       ENDIF.                                                          
    000530                                                                       
    000540       MODIFY CT_SORT FROM LS_SORT.                                    
    000550     ENDLOOP.

  • Regarding Alv Grid Totals_text is not Printing

    Hi All,
    I am presently working in Alv Grid dispaly.
    I need to dispaly Totals_Text = 'Totals'. But this text is not displaying in my output dispaly.i am copying my code here.
    Code:
    REPORT  ZFTRSERV NO STANDARD PAGE HEADING
                     MESSAGE-ID YV
                     LINE-SIZE 255.
    TABLES: BSIS,           "Accounting: Secondary Index for G/L Accounts
            BSAS,           "Accounting: Secondary Index for G/L Accounts (Cleared Items)
            BSID,           "Accounting: Secondary Index for Customers
            BKPF,           "Accounting Document Header
            ITCPP.          "SAPscript output parameters
    TYPE-POOLS: SLIS.       "ALV Declarations
    $$********************************************************************
    $$    GLOBAL TYPES
    $$    NAMING CONVENTION: "Y_NAME"
    $$********************************************************************
    *eject
    $$********************************************************************
    $$    GLOBAL INTERNAL TABLES (WITH INCLUDE STRUCTURE)
    $$    NAMING CONVENTION: "I_NAME"
    $$********************************************************************
    $$********************************************************************
    $$    GLOBAL INTERNAL TABLES (CUSTOM STRUCTURE)
    $$    NAMING CONVENTION: "T_NAME"
    $$********************************************************************
    *eject
    $$********************************************************************
    $$    GLOBAL FIELD-SYMBOLS
    $$    NAMING CONVENTION: "<FS_NAME>"
    $$********************************************************************
    FIELD-SYMBOLS: <FS_BSIS>  TYPE Y_BSIS.
    $$********************************************************************
    $$    MACROS DECLARATION
    $$    NAMING CONVENTION: M_NAME
    $$********************************************************************
    $$********************************************************************
    $$    PARAMETERS & SELECT-OPTIONS
    $$    NAMING CONVENTION: "P_NAME" & "S_NAME"
    $$********************************************************************
    SELECTION-SCREEN BEGIN OF BLOCK SS01 WITH FRAME TITLE TEXT-B01.
    GENERAL SELECTIONS
    SELECT-OPTIONS:   S_BUKRS FOR BSIS-BUKRS OBLIGATORY,
                      S_HKONT FOR BSIS-HKONT OBLIGATORY,
                      S_BLART FOR BSIS-BLART,
                      S_BELNR FOR BSIS-BELNR.
    SELECTION-SCREEN END OF BLOCK SS01.
    SELECTION-SCREEN BEGIN OF BLOCK SS02 WITH FRAME TITLE TEXT-B02.
      OPEN ITEMS:
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS P_OPIT LIKE ITEMSET-XOPSEL RADIOBUTTON GROUP RAD1 DEFAULT 'X'.
    SELECTION-SCREEN COMMENT 3(20) TEXT-003 FOR FIELD P_OPIT.
    SELECTION-SCREEN END OF LINE.
    PARAMETERS P_STIDA LIKE RFPDO-ALLGSTID DEFAULT SY-DATLO.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN: COMMENT (12) BLANK1,
                      COMMENT (20) TEXT-006 FOR FIELD P_OSST.
    PARAMETERS:  P_OSST  AS CHECKBOX DEFAULT SPACE.
    SELECTION-SCREEN: COMMENT (12) BLANK2,
                      COMMENT (20) TEXT-007 FOR FIELD P_OUTD.
    PARAMETERS:P_OUTD LIKE ITCPP-TDDEST.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK SS03.
    *eject
    $$********************************************************************
    $$    INITIALIZATION
    $$********************************************************************
    INITIALIZATION.
      CLEAR: E_BSID,
             E_BSIS,
             E_BSAS,
             E_BKPF,
             E_TOTAL,
             E_SUMSHET_OPEN,
             E_SUMSHET_CLEAR,
             E_SUMSHET_TOTAL,
             E_CATLOG,
             E_ALV_LAYOUT.
      FREE:  T_BSID,
             T_BSIS,
             T_BSAS,
             T_BKPF,
             T_TOTAL,
             T_SUMSHET_OPEN,
             T_SUMSHET_CLEAR,
             T_SUMSHET_TOTAL.
    *eject
    $$********************************************************************
    $$    AT SELECTION-SCREEN
    $$********************************************************************
    AT SELECTION-SCREEN .
    *eject
    $$********************************************************************
    $$    START-OF-SELECTION
    $$********************************************************************
    START-OF-SELECTION.
    To Get data from tables
      PERFORM F_OUT_DATA_RETRIEVEL.
    *eject
    $$********************************************************************
    $$    END-OF-SELECTION
    $$********************************************************************
    END-OF-SELECTION.
    To Display ALV Grid Layout
      PERFORM F_ALV_DATA_RETRIVAL.
    *eject
    *&      Form  f_out_data_retrievel
        data retrival for Open,Clear and All items
    FORM F_OUT_DATA_RETRIEVEL.
      IF P_OPIT EQ C_X.
    *‘open items’ is selected data will be retrieved from BSIS table.
        PERFORM F_OPEN_ITEMS.
    TO GET DATA FOR SUMMARY SHEET OPEN ITEMS.
        PERFORM F_GET_OPEN_SUMSHET.
      ENDIF.
    ENDFORM.                    " f_out_data_retrievel
    *&      Form  F_OPEN_ITEMS
       getting data for Open items from BSIS Table
    FORM F_OPEN_ITEMS .
      SELECT BUKRS
             HKONT
             AUGDT
             AUGBL
             ZUONR
             GJAHR
             BELNR
             BUZEI
             BUDAT
             BLDAT
             BLART
             BSCHL
             MWSKZ
             DMBTR
             SGTXT
        FROM BSIS
        INTO  CORRESPONDING FIELDS OF TABLE T_BSIS
       WHERE BUKRS IN S_BUKRS
         AND HKONT IN S_HKONT
         AND BLART IN S_BLART
         AND BELNR IN S_BELNR
         AND AUGDT NE P_STIDA .
      IF SY-SUBRC NE C_0.
        MESSAGE S999 WITH text-030.
      ENDIF.
      PERFORM F_GET_DATA_BSIS.
    ENDFORM.                    " F_OPEN_ITEMS
    To get the Entry date and Reference Key2
      PERFORM F_GET_DATA_BSIS.
    *&      Form  F_GET_DATA_BSAS
          GETTING DATA FROM BSAS TABLE
    FORM F_GET_DATA_BSAS .
      DATA: W_TABIX TYPE SY-TABIX.
      UNASSIGN <FS_BSAS>.
    GETTING DATA FROM BKPF AND BSID TABLES
      LOOP AT T_BSAS ASSIGNING <FS_BSAS>.
        CLEAR: E_BKPF,
               E_BSID,
               W_TABIX.
        MOVE SY-TABIX TO W_TABIX.
        SELECT SINGLE BUKRS
                      BELNR
                      GJAHR
                      CPUDT
                      BUDAT
          FROM BKPF
          INTO CORRESPONDING FIELDS OF E_BKPF
         WHERE BUKRS EQ E_BSAS-BUKRS
           AND BLART EQ E_BSAS-BLART
           AND BELNR EQ E_BSAS-BELNR
           AND BUDAT EQ E_BSAS-BUDAT.
        IF SY-SUBRC EQ C_0.
          MOVE E_BKPF-CPUDT TO <FS_BSAS>-CPUDT.
          MODIFY T_BSAS INDEX W_TABIX FROM <FS_BSAS>
                 TRANSPORTING CPUDT.
        ENDIF.
        SELECT SINGLE BUKRS
                      KUNNR
                      UMSKS
                      UMSKZ
                      AUGDT
                      AUGBL
                      ZUONR
                      GJAHR
                      BELNR
                      BUZEI
                      XREF2
          FROM  BSID
          INTO CORRESPONDING FIELDS OF E_BSID
         WHERE BUKRS EQ E_BSAS-BUKRS
           AND BELNR EQ E_BSAS-BELNR
           AND BLART EQ E_BSAS-BLART
           AND BUDAT EQ E_BSAS-BUDAT.
        IF SY-SUBRC EQ C_0.
          MOVE E_BSID-XREF2 TO <FS_BSAS>-XREF2.
          FREE T_BSID.
          MODIFY T_BSAS INDEX W_TABIX FROM <FS_BSAS>
                 TRANSPORTING XREF2.
        ENDIF.
        <FS_BSAS>-IDATE = SY-DATUM.
        <FS_BSAS>-IEDAT = <FS_BSAS>-CPUDT - <FS_BSAS>-ZUONR.
        <FS_BSAS>-PTIME = SY-DATUM - <FS_BSAS>-CPUDT.
        MODIFY T_BSAS INDEX W_TABIX FROM <FS_BSAS>
               TRANSPORTING IEDAT
                            PTIME
                            IDATE.
      ENDLOOP.
      SORT T_BSAS BY HKONT XREF2 CPUDT.
    ENDFORM.                    " F_GET_DATA_BSAS
    *&      Form  F_GET_DATA_BSIS
        GETTING DATA FROM BSIS TABLE
    FORM F_GET_DATA_BSIS .
      DATA: W_TABIX  TYPE SY-TABIX,
            W_SGTXT  LIKE BSIS-SGTXT,
            W_SGTXT1 LIKE BSIS-SGTXT,
            W_SORTL LIKE KNA1-SORTL.
      CLEAR: E_BKPF,
             E_BSID,
             W_TABIX,
             W_SGTXT,
             W_SGTXT1,
             W_SORTL.
    GETTING DATA FROM BKPF AND BSID TABLES
      LOOP AT T_BSIS INTO E_BSIS.
        MOVE SY-TABIX TO W_TABIX.
        SELECT SINGLE BUKRS
                      BELNR
                      GJAHR
                      CPUDT
                      BUDAT
          FROM BKPF
          INTO CORRESPONDING FIELDS OF E_BKPF
         WHERE BUKRS EQ E_BSIS-BUKRS
           AND BLART EQ E_BSIS-BLART
           AND BELNR EQ E_BSIS-BELNR
           AND BUDAT EQ E_BSIS-BUDAT.
        IF SY-SUBRC EQ C_0.
          MOVE E_BKPF-CPUDT TO E_BSIS-CPUDT.
          FREE T_BKPF.
          MODIFY T_BSIS INDEX W_TABIX FROM E_BSIS
                 TRANSPORTING CPUDT.
        ENDIF.
        SELECT SINGLE BUKRS
                      KUNNR
                      UMSKS
                      UMSKZ
                      AUGDT
                      AUGBL
                      ZUONR
                      GJAHR
                      BELNR
                      BUZEI
                      XREF2
          FROM BSID
          INTO CORRESPONDING FIELDS OF E_BSID
         WHERE BUKRS EQ E_BSIS-BUKRS
           AND BLART EQ E_BSIS-BLART
           AND BELNR EQ E_BSIS-BELNR
           AND BUDAT EQ E_BSIS-BUDAT.
        IF sy-subrc EQ C_0.
         DUMMY CHECK
        ENDIF.
        SELECT SINGLE  KUNNR
          FROM BSID
          INTO CORRESPONDING FIELDS OF E_BSID
         WHERE BUKRS EQ E_BSIS-BUKRS
           AND BLART EQ E_BSIS-BLART
           AND BELNR EQ E_BSIS-BELNR
           AND BUDAT EQ E_BSIS-BUDAT.
        IF sy-subrc EQ C_0.
         DUMMY CHECK
        ENDIF.
        SELECT SINGLE SORTL
          FROM KNA1
          INTO W_SORTL
         WHERE KUNNR EQ E_BSID-KUNNR.
        IF SY-SUBRC EQ C_0.
          MOVE W_SORTL TO E_BSIS-XREF2.
          MODIFY T_BSIS INDEX W_TABIX FROM E_BSIS
                 TRANSPORTING XREF2.
        ENDIF.
        W_SGTXT = E_BSIS-SGTXT.
        SPLIT W_SGTXT AT C_SLASH INTO W_SGTXT W_SGTXT1.
        MOVE: W_SGTXT TO E_BSIS-SGTXT,
              SY-DATUM TO E_BSIS-IDATE.
        DATA : W_ZOUNR LIKE BSAS-ZUONR,
               W_DATE TYPE D,
               W_Z(10) TYPE C.
        CLEAR:  W_ZOUNR,
                W_DATE,
                W_Z.
        MOVE E_BSIS-ZUONR TO W_ZOUNR.
        MOVE : W_ZOUNR4(4) TO W_Z0(4),
               W_ZOUNR2(2) TO W_Z4(2),
               W_ZOUNR0(2) TO W_Z6(2).
        MOVE W_Z TO W_DATE.
        E_BSIS-IEDAT = E_BSIS-CPUDT - W_DATE.
        CONCATENATE W_ZOUNR+0(2)  C_DOT
                    W_ZOUNR+2(2)  C_DOT
                    W_ZOUNR+4(4)  INTO E_BSIS-ZUONR.
        E_BSIS-PTIME = SY-DATUM - E_BSIS-CPUDT.
        MODIFY T_BSIS INDEX W_TABIX FROM E_BSIS
               TRANSPORTING IEDAT
                            PTIME
                            IDATE
                            SGTXT
                            ZUONR.                              "30TH
      ENDLOOP.
      SORT T_BSIS BY HKONT XREF2 CPUDT.
    ENDFORM.                    " F_GET_DATA_BSIS
    *&      Form  f_build_fld_catlog1
          BUILDING FIELD CATALOG FOR OPEN ITEMS DATA
    FORM F_FLD_CATLOG_OPEN_ITEMS.
      ORM f_fld_catlog_open_items.
      REFRESH i_catlog1.
      CLEAR w_col_pos.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING C_HKONT
                                          C_BSIS
                                          w_col_pos
                                          text-010
                                          SPACE
                                          SPACE.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING C_XREF2
                                          C_BSIS
                                          w_col_pos
                                          text-011
                                          SPACE
                                          SPACE.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING C_BELNR
                                          C_BSIS
                                          w_col_pos
                                          text-012
                                          SPACE
                                          SPACE.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING C_BLART
                                          C_BSIS
                                          w_col_pos
                                          text-013
                                          SPACE
                                          SPACE.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING c_BLDAT
                                          C_BSIS
                                          W_col_pos
                                          text-014
                                          SPACE
                                          SPACE.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING c_BUDAT
                                          C_BSIS
                                          w_col_pos
                                          text-015
                                          SPACE
                                          SPACE.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING c_CPUDT
                                          C_BSIS
                                          w_col_pos
                                          text-016
                                          SPACE
                                          SPACE.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING c_ZUONR
                                          C_BSIS
                                          w_col_pos
                                          text-017
                                          SPACE
                                          SPACE.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING c_BSCHL
                                          C_BSIS
                                          w_col_pos
                                          text-018
                                          SPACE
                                          SPACE.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING C_DMBTR
                                          C_BSIS
                                          w_col_pos
                                          text-019
                                          C_X           "dispaly Sum Total
                                          '40'.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING c_MWSKZ
                                          C_BSIS
                                          w_col_pos
                                          text-020
                                          SPACE
                                          SPACE.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING c_SGTXT
                                          C_BSIS
                                          w_col_pos
                                          text-021
                                          SPACE
                                          SPACE.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING c_IEDAT
                                          C_BSIS
                                          w_col_pos
                                          text-022
                                          SPACE
                                          SPACE.
      w_col_pos = w_col_pos + c_1.
      PERFORM f_first_field_catalog USING C_PTIME
                                          C_BSIS
                                          w_col_pos
                                          text-023
                                          SPACE
                                          SPACE.
      CLEAR: W_COL_POS,
             I_ALV_EVENTS.
    ENDFORM.                    " f_fld_catlog_open_items
    *&      Form  f_first_report_dispaly
         ROUTINE FOR OPEN ITEMS  GRID LAYOUT DISPLAY
    FORM F_DISPALY_OPEN_ITEMS.
      CLEAR W_REPNAME.
      W_REPNAME = SY-REPID.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         I_CALLBACK_PROGRAM                = W_REPNAME
       I_CALLBACK_PF_STATUS_SET          = C_FSTAT
       I_CALLBACK_USER_COMMAND           = C_FUCOM
         I_CALLBACK_TOP_OF_PAGE            = C_FTOPI
      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                         = E_ALV_LAYOUT
         IT_FIELDCAT                       = I_CATLOG1[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
         I_DEFAULT                         = C_A
      I_SAVE                            = ' '
      IS_VARIANT                        =
         IT_EVENTS                         = I_ALV_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                          = T_BSIS
       EXCEPTIONS
         PROGRAM_ERROR                     = 1
         OTHERS                            = 2  .
      IF SY-SUBRC NE 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " f_dispaly_open_items
    *&      Form  f_first_field_catalog
          BUILDING FIELD CATALOG FOR SECONDERY LIST
         -->us_fieldname  field name
         -->us_ref field  ref field
         -->us_ref tab    ref table
         -->us_text       text
         -->us_sum        sum
    FORM F_FIRST_FIELD_CATALOG  USING    US_FIELDNAME TYPE ANY
                                         US_REF_TAB   TYPE ANY
                                         US_COL_POS   TYPE ANY
                                         US_COLTEXT   TYPE ANY
                                         US_DO_SUM    TYPE ANY
                                         us_out       type any.
      CLEAR E_CATLOG.
      MOVE : US_FIELDNAME TO E_CATLOG-FIELDNAME,
             US_REF_TAB   TO E_CATLOG-TABNAME,
             US_COL_POS   TO E_CATLOG-COL_POS,
             US_COLTEXT   TO E_CATLOG-SELTEXT_L,
             US_DO_SUM    TO E_CATLOG-DO_SUM,
             US_out       to E_CATLOG-outputlen.
      APPEND E_CATLOG TO I_CATLOG1.
      CLEAR E_CATLOG.
      APPEND E_CATLOG TO I_CATLOG1.
      CLEAR E_CATLOG.
    ENDFORM.                    " f_first_field_catalog
    *&      Form  F_ALV_DATA_RETRIVAL
          ALV DATA VALIDATION
    FORM F_ALV_DATA_RETRIVAL .
      IF  P_OPIT EQ C_X
      AND P_OSST EQ C_SPACE .
    building field catlog for ‘open items’  list
        PERFORM f_fld_catlog_open_items.
    first list display ‘open items’ list
        PERFORM f_dispaly_open_items.
    Building Alv Layout
        PERFORM f_alv_layout_open_items.
      ENDIF.
    Code to display only summary sheet P_OSST check box
      IF  P_OPIT EQ C_X
      AND P_OSST EQ C_X.
    building field catlog for ‘open items’ Summary sheet
        PERFORM F_FLD_CATLOG_SUMSHET_OPEN.
    first list display ‘open items’ Summary sheet
        PERFORM F_DISPALY_SUMSHEET_OPEN.
      ENDIF.
    ENDFORM.                    " F_ALV_DATA_RETRIVAL
    *&      Form  F_GET_OPEN_SUMSHET
         GET SUMMARY SHEET OPEN ITEM DATA
    FORM F_GET_OPEN_SUMSHET .
      SORT T_BSIS BY SGTXT.
      UNASSIGN <FS_BSIS>.
      LOOP AT T_BSIS ASSIGNING <FS_BSIS>.
        MOVE SY-TABIX TO W_TABIX.
        IF W_TABIX EQ C_1.
          MOVE : <FS_BSIS>-SGTXT TO W_SGTXT,
                 <FS_BSIS>-PTIME TO W_PTIME,
                 <FS_BSIS>-DMBTR TO W_DMBTR,
                 <FS_BSIS>-IEDAT TO W_IEDAT.
          W_COUNT = W_COUNT + C_1.
          CONTINUE.
        ELSE.
          IF <FS_BSIS>-SGTXT EQ W_SGTXT.
            W_PTIME = W_PTIME + <FS_BSIS>-PTIME.
            W_DMBTR = W_DMBTR + <FS_BSIS>-DMBTR.
            W_COUNT = W_COUNT + C_1.
            W_IEDAT = W_IEDAT + <FS_BSIS>-IEDAT.
            CONTINUE .
          ELSE.
            W_ATIME = W_PTIME / W_COUNT.
            W_IEDAT = W_IEDAT / W_COUNT.
            MOVE : W_SGTXT TO E_SUMSHET_OPEN-SGTXT,
                   W_COUNT TO E_SUMSHET_OPEN-COUNT,
                   W_ATIME TO E_SUMSHET_OPEN-ATIME,
                   W_DMBTR TO E_SUMSHET_OPEN-DMBTR,
                   W_IEDAT TO E_SUMSHET_OPEN-IEDAT.
            APPEND E_SUMSHET_OPEN TO T_SUMSHET_OPEN.
            CLEAR: W_SGTXT,
                   W_PTIME,
                   W_DMBTR,
                   W_COUNT,
                   W_IEDAT.
            MOVE :  <FS_BSIS>-SGTXT TO W_SGTXT,
                    <FS_BSIS>-PTIME TO W_PTIME,
                    <FS_BSIS>-DMBTR TO W_DMBTR,
                    <FS_BSIS>-IEDAT TO W_IEDAT.
            W_COUNT = W_COUNT + C_1.
            CONTINUE.
          ENDIF.
        ENDIF.
      ENDLOOP.
      W_ATIME = W_PTIME / W_COUNT.
      W_IEDAT = W_IEDAT / W_COUNT.
      MOVE : W_SGTXT TO E_SUMSHET_OPEN-SGTXT,
             W_COUNT TO E_SUMSHET_OPEN-COUNT,
             W_ATIME TO E_SUMSHET_OPEN-ATIME,
             W_DMBTR TO E_SUMSHET_OPEN-DMBTR,
             W_IEDAT TO E_SUMSHET_OPEN-IEDAT.
      APPEND E_SUMSHET_OPEN TO T_SUMSHET_OPEN.
      CLEAR  E_SUMSHET_OPEN.
    ENDFORM.                    " F_GET_OPEN_SUMSHET
    *&      Form  F_TOP_OF_PAGE
          ITEMS TOP OF PAGE DATA
    FORM F_TOP_OF_PAGE .
      DATA: T_HEADER  TYPE SLIS_T_LISTHEADER,
            W_HEADER TYPE SLIS_LISTHEADER,
            T_LINE    LIKE W_HEADER-INFO.
      CLEAR W_HEADER.
    *TITLE
      MOVE C_H TO W_HEADER-TYP.
      MOVE C_TEXT TO W_HEADER-INFO.
      APPEND W_HEADER TO T_HEADER.
      CLEAR W_HEADER.
      MOVE C_S TO W_HEADER-TYP.
      MOVE C_TEXT2 TO W_HEADER-KEY.
      CONCATENATE  SY-DATUM+6(2) C_SLASH
                   SY-DATUM+4(2) C_SLASH
                   SY-DATUM(4) INTO W_HEADER-INFO.
      APPEND W_HEADER TO T_HEADER.
      CLEAR: W_HEADER.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY = T_HEADER.
    ENDFORM.                    " F_TOP_OF_PAGE
    FORM F_DISPALY_SUMSHEET_OPEN .
      CLEAR w_repname.
      w_repname = sy-repid.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         I_CALLBACK_PROGRAM                = w_repname
       I_CALLBACK_PF_STATUS_SET          = C_FSTAT
      I_CALLBACK_USER_COMMAND           = ' '
       I_CALLBACK_TOP_OF_PAGE            =  C_FTOPS
      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                         = e_alv_layout
         IT_FIELDCAT                       = i_catlog1[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
         I_DEFAULT                         = C_A
      I_SAVE                            = ' '
      IS_VARIANT                        =
         IT_EVENTS                         = i_alv_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                          = T_SUMSHET_OPEN
       EXCEPTIONS
         PROGRAM_ERROR                     = 1
         OTHERS                            = 2
      IF SY-SUBRC NE 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      FREE T_SUMSHET_OPEN.
    ENDFORM.                    " F_DISPALY_SUMSHEET_OPEN
    *&      Form  F_TOP_OF_PAGE_SUMSHET
          TOP OF PAGE FOR SUMMARY SHEET
    FORM F_TOP_OF_PAGE_SUMSHET .
      DATA: T_HEADER  TYPE SLIS_T_LISTHEADER,
            W_HEADER TYPE SLIS_LISTHEADER,
            T_LINE    LIKE W_HEADER-INFO.
      CLEAR: W_HEADER,
             T_HEADER,
             T_LINE.
    *TITLE
      MOVE C_H TO W_HEADER-TYP.
      MOVE C_TEXT1 TO W_HEADER-INFO.
      APPEND W_HEADER TO T_HEADER.
      CLEAR W_HEADER.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY = T_HEADER.
    ENDFORM.                    " F_TOP_OF_PAGE_SUMSHET
    *&      Form  F_PF_STATUS
          GET PF STATUS
    FORM F_PF_STATUS USING US_EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS C_STAT EXCLUDING US_EXTAB.
    ENDFORM.                    "F_PF_STATUS
    *&      Form  F_USER_COMMAND
          GET USER COMMAND
    *FORM F_USER_COMMAND USING W_UCOMM LIKE SY-UCOMM
                             US_SELFIELD  TYPE SLIS_SELFIELD.
    FORM F_USER_COMMAND USING US_UCOMM LIKE SY-UCOMM
                                      US_SELFIELD  TYPE SLIS_SELFIELD.
      CONSTANTS:C_NEXT(6)  TYPE C  VALUE '&NEXT'.
      if sy-subrc eq c_0.
        MOVE C_TEXT3 TO US_SELFIELD-TABNAME.
      endif.
      IF   P_OPIT  EQ C_X
      AND  US_UCOMM EQ C_NEXT .
        PERFORM F_FLD_CATLOG_SUMSHET_OPEN.
        PERFORM F_DISPALY_SUMSHEET_OPEN.
      ELSEIF  P_CLIT EQ C_X
      AND     US_UCOMM EQ C_NEXT.
        PERFORM F_FLD_CATLOG_SUMSHET_CLEAR.
        PERFORM F_DISPALY_SUMSHET_CLEAR.
      ELSEIF  P_ALIT EQ C_X
      AND     US_UCOMM EQ C_NEXT.
        PERFORM F_FLD_CATLOG_SUMSHET_TOTAL.
        PERFORM F_DISPALY_SUMSHET_TOTAL.
      ENDIF.
    ENDFORM.                    "F_USER_COMMAND
    *&      Form  f_alv_layout_open_items
          text
    ----

    Hi,
    Please refer to the sample code :
    *&      Form  BUILD_LAYOUT
    *       Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    *  gd_layout-totals_only        = 'X'.
    *  gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
    *                                         "click(press f2)
    *  gd_layout-zebra             = 'X'.
    *  gd_layout-group_change_edit = 'X'.
    *  gd_layout-header_text       = 'helllllo'.
    endform.                    " BUILD_LAYOUT
    Thanks,
    Sriram Ponna.

  • Alv : drill down not working.

    Hi All,
    Could you please tell me whats wrong with this code ? its not drilling down to show 'ebeln' with me22n.  Am I missing something ?
    Please help.
    Hrishi
    code is :-
    REPORT  Z_VENDOR_BACKORDER_REPORT_ALV .
    TABLES:  EKKO, LFA1, MAKT, EKET, EKPO, AFPO, MARC.
    *Data Declaration
    DATA:  BEGIN OF ITAB OCCURS 0 ,
            ebeln       LIKE ekko-ebeln  ,  " PO number
            aedat       LIKE ekko-aedat  ,  " creation date
            ebelp       LIKE ekpo-ebelp  ,  " item no
            lifnr       LIKE ekko-lifnr  ,  " vendor number
            name1       LIKE lfa1-name1  ,  " vendor name
            RESWK       LIKE EKKO-RESWK  ,  " PLANT NO
            MEMORY      LIKE EKKO-MEMORY , " ORDER INCOMPLETE
            matnr       LIKE ekpo-matnr  ,  " material number
            werks       like ekpo-werks  ,  " plant
            txz01       LIKE ekpo-txz01  ,  " material description
            eindt       LIKE eket-eindt  ,  " Promised date
            menge       LIKE eket-menge  ,  " quantity
            wemng       LIKE eket-wemng  ,  " delivered quantity
            netpr       like ekpo-netpr  ,  " value in AUD
            peinh       like ekpo-peinh  ,  " price unit
            banfn       like ekpo-banfn  ,  " PR no
            aufnr       like ebkn-aufnr  ,  " Production order no
            MAABC       LIKE MARC-MAABC  ,  " MATERIAL ABC Indicator
            maktx       like makt-maktx  ,  " material long description
            open_quant  type p decimals 2,  " quantity - delivered
            VALUE       TYPE p decimals 2,  " $ VALUE * OPEN QUANTITY
            end of ITAB.
    data: wa like itab.
    DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
    DATA: TEMP TYPE EKKO-LIFNR.
    data: opt like CTU_PARAMS.
    *DATA:  WA TYPE FINAL.
    all ALV declarations
    type-pools: slis.                                 "ALV Declarations
    DATA:   fieldcatalog        TYPE slis_t_fieldcat_alv with header line,
            G_REPID             TYPE SY-REPID,
            GS_PRINT            TYPE SLIS_PRINT_ALV,
            GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
            GT_EVENTS           TYPE SLIS_T_EVENT,
            GT_SORT             TYPE SLIS_T_SORTINFO_ALV,
            GS_LAYOUT           TYPE SLIS_LAYOUT_ALV,
            COL_POS TYPE I.
    -----------------SELECTION SCREEN----------------------
      selection-screen begin of block b1 with frame title text-001.
      select-options VENDORNO for ekko-lifnr.
      select-options MATERIAL for ekpo-matnr.
      SELECT-OPTIONS PLANT FOR EKKO-RESWK.
      select-options REQDAT for eket-eindt.
      selection-screen end of block b1.
    *................... GET DATA..................
    START-OF-SELECTION.
    PERFORM GATHER_DATA.
    END-OF-SELECTION.
    FORM USER_COMMAND USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    CASE r_ucomm.
    WHEN '&IC1'.
    CASE  rs_selfield-sel_tab_field.
    WHEN 'ITAB-EBELN'.
    CHECK NOT rs_selfield-value IS INITIAL.
    SET PARAMETER ID 'BUS' FIELD rs_selfield-value.
    CALL TRANSACTION 'ME22N' AND SKIP FIRST SCREEN.
    Do something at 'Sales document type' field selection
    when 'ITAB-MATNR'.
    SET PARAMETER ID 'BUS' FIELD rs_selfield-value.
    CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.
    ENDCASE.
    ENDCASE.
    ENDFORM.
    form gather_data.
    SELECT EKKO~EBELN
           EKKO~AEDAT
           EKKO~LIFNR
          EKKO~MEMORY
          EKKO~RESWK
           EKPO~EBELP
           EKPO~MATNR
           ekpo~werks
           ekpo~netpr
           ekpo~peinh
           ekpo~banfn
           ekpo~txz01
          makt~maktx
           EKET~EINDT
           EKET~MENGE
           EKET~WEMNG
           LFA1~NAME1
    INTO corresponding fields of ITAB
    FROM (
    EKKO inner JOIN EKPO
    ON EKKOEBELN = EKPOEBELN
    inner JOIN EKET
    ON EKPOEBELN = EKETEBELN
    AND EKPOEBELP = EKETEBELP
    inner JOIN LFA1
    ON EKKOLIFNR = LFA1LIFNR
    *left outer join makt
    *on ekpomatnr = maktmatnr
    WHERE EKKO~LIFNR IN VENDORNO
    AND EKKO~RESWK IN PLANT
    and EKPO~MATNR IN MATERIAL
    and ekpo~elikz eq ' '
    and ekpo~loekz ne 'L'
    and eket~eindt in REQDAT.
    append itab.
    CLEAR ITAB.
    endselect.
    clear temp.
    sort itab by lifnr.
    loop at itab .
    ITAB-OPEN_QUANT = ITAB-MENGE - ITAB-WEMNG.
    if itab-matnr eq ''.
    select single aufnr from ebkn into itab-aufnr where banfn = itab-banfn.
      select single matnr from afpo into itab-matnr where aufnr = itab-aufnr.
    endif.
    select single maktx from makt into itab-maktx where matnr = itab-matnr.
    select single maabc from MARC INTO ITAB-MAABC WHERE MATNR = ITAB-MATNR.
    ITAB-VALUE = ITAB-NETPR * ITAB-OPEN_QUANT / itab-peinh.
    modify itab.
    endloop.
    SKIP.
      fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'LIFNR'.
      fieldcatalog-seltext_m   = 'vendor no'.
      fieldcatalog-col_pos     = 1.
      fieldcatalog-outputlen   = 15.
       fieldcatalog-inttype = 'C'.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    fieldcatalog-do_sum      = 'X'.
      fieldcatalog-no_zero     = 'X'.
      append fieldcatalog to fieldcatalog.
        clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'po Number'.
      fieldcatalog-col_pos     = 2.
       fieldcatalog-inttype = 'C'.
       fieldcatalog-emphasize = 'C401'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'po date'.
      fieldcatalog-col_pos     = 3.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
    fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'item number'.
      fieldcatalog-col_pos     = 4.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'MATNR'.
       fieldcatalog-no_zero     = 'X'.
      fieldcatalog-seltext_m   = 'material number'.
      fieldcatalog-col_pos     = 5.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'MAABC'.
      fieldcatalog-seltext_m   = 'material type'.
      fieldcatalog-col_pos     = 6.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'TXZ01'.
      fieldcatalog-seltext_m   = 'short text'.
      fieldcatalog-col_pos     = 7.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'MAKTX'.
      fieldcatalog-seltext_m   = 'long text'.
      fieldcatalog-col_pos     = 8.
       fieldcatalog-inttype = 'C'.
       fieldcatalog-outputlen   = 15.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
    fieldcatalog-fieldname   = 'EINDT'.
      fieldcatalog-seltext_m   = 'date promised'.
      fieldcatalog-col_pos     = 9.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'Quantity'.
      fieldcatalog-col_pos     = 10.
       fieldcatalog-inttype = 'C'.
      fieldcatalog-outputlen   = 15.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'WEMNG'.
      fieldcatalog-seltext_m   = 'Delivered'.
      fieldcatalog-col_pos     = 11.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'OPEN_QUANT'.
      fieldcatalog-seltext_m   = 'Open quantity'.
      fieldcatalog-col_pos     = 12.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
    fieldcatalog-fieldname   = 'VALUE'.
      fieldcatalog-seltext_m   = '$ value'.
      fieldcatalog-col_pos     = 13.
       fieldcatalog-inttype = 'C'.
       fieldcatalog-do_sum      = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = g_repid
                 I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
                it_fieldcat             = fieldcatalog[]
                is_layout               = GS_layout
                  IT_SORT                = gt_sort
                  I_DEFAULT = 'X'
                    I_SAVE = 'X'
               is_variant              = z_template
           tables
                t_outtab                = ITAB
                exceptions
                program_error           = 1
                others                  = 2.
    endform.

    hi,
    please run the code below.
    REPORT yfi7g_ing_mic_001 .
    *PROGRAM YFI7G_ING_MIC_001.
    TABLES: vbak .
    TABLES: mara .
    TYPES: BEGIN OF tp_vbak ,
          vbeln TYPE vbak-vbeln,
          erdat TYPE vbak-erdat,
          erzet TYPE vbak-erzet,
          ernam TYPE vbak-ernam,
          vbtyp TYPE vbak-vbtyp,
          trvog TYPE vbak-trvog,
          auart TYPE vbak-auart,
          lifsk TYPE vbak-lifsk,
          faksk TYPE vbak-faksk,
          waerk TYPE vbak-waerk,
          vkorg TYPE vbak-vkorg,
          kunnr TYPE vbak-kunnr,
          vgbel TYPE vbak-vgbel,
          vgtyp TYPE vbak-vgtyp,
    END OF tp_vbak .
    TYPES: BEGIN OF tp_mara ,
            matnr TYPE mara-matnr,
    END OF tp_mara .
    TYPES: BEGIN OF tp_alv1_data.
    INCLUDE TYPE tp_vbak .
    TYPES: END OF tp_alv1_data.
    TYPES: BEGIN OF tp_alv2_data.
    INCLUDE TYPE tp_mara .
    TYPES: END OF tp_alv2_data.
    TYPE-POOLS: slis.
    DATA: gt_vbak TYPE STANDARD TABLE OF tp_vbak WITH HEADER LINE.
    DATA: gt_mara TYPE STANDARD TABLE OF tp_mara WITH HEADER LINE.
    DATA: gs_variant LIKE disvariant.
    DATA: gt_alv1_data TYPE STANDARD TABLE OF tp_alv1_data WITH HEADER LINE.
    DATA: gt_alv2_data TYPE STANDARD TABLE OF tp_alv2_data WITH HEADER LINE.
    SELECTION-SCREEN                                                     *
    BLOCK b0                                                             *
    SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME.
    SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.        "<field not defined?>
    PARAMETERS: p_matnr LIKE mara-matnr.           "<field not defined?>
    SELECTION-SCREEN END OF BLOCK b0.
    BLOCK bvar                                                           *
    SELECTION-SCREEN BEGIN OF BLOCK bvar WITH FRAME.
    PARAMETERS: p_vari  LIKE disvariant-variant.
    SELECTION-SCREEN END OF BLOCK bvar.
    BLOCK bbox                                                           *
    SELECTION-SCREEN BEGIN OF BLOCK bbox WITH FRAME.
    PARAMETERS: p_box_up  RADIOBUTTON GROUP b1,
                p_box_do  RADIOBUTTON GROUP b1 DEFAULT 'X',
                p_box_no  RADIOBUTTON GROUP b1.
    SELECTION-SCREEN END OF BLOCK bbox.
          AT SELECTION-SCREEN ON P_VARI                                 *
    AT SELECTION-SCREEN ON p_vari.
      PERFORM alv_variant_existence USING    p_vari
                                    CHANGING gs_variant.
          AT SELECTION-SCREEN ON VALUE REQUEST FOR P_VARI               *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
      PERFORM alv_variant_f4 CHANGING p_vari
                                      gs_variant.
    INITIALIZATION                                                       *
    INITIALIZATION.
    START-OF-SELECTION                                                   *
    START-OF-SELECTION.
      PERFORM authority_check.
      PERFORM get_control_data.
      PERFORM get_transaction_data.
      PERFORM process_transaction_data.
    END-OF-SELECTION                                                     *
    END-OF-SELECTION.
      PERFORM output_data.
    F   O   R   M   S                                                   *
          FORM AUTHORITY_CHECK                                          *
          Perform authority checks for the report                       *
    FORM authority_check.
    !!! Note: authorisation checks are application-dependent.
    !!! Some common cases are listed below - please select one of them
    !!! or add new authorisation checks.
    !!! If the report is creating batch input session or using LDB
    !!! it may be sufficient to use automatic SAP auth.checks.
    Authorisation for displaying documents in a single company code
    authority-check object 'F_BKPF_BUK'
           id 'BUKRS' field p_bukrs
           id 'ACTVT' field '03'.
    if sy-subrc <> 0.
      message e001(z9) with 'No authorisation to display documents'
                            'in company code' p_bukrs.
    endif.
    Displaying documents from a list of company codes (select-options)
    call function 'Y_BUKRS_AUTHORITY_CHECK'
       EXPORTING
            ACTVT     = '03'
            NOMESSAGE = ' '
       tables
            s_bukrs   = s_bukrs.
    ENDFORM.                              " AUTHORITY_CHECK
          FORM GET_CONTROL_DATA                                         *
          Read configuration etc.                                       *
    FORM get_control_data.
    ENDFORM.                               " GET_CONTROL_DATA
          FORM GET_TRANSACTION_DATA                                     *
          Read documents etc.                                           *
    FORM get_transaction_data.
    !!! Data selection statement below has been generated automatically.
    !!! Please check if it is correct and complete.
    !!! Use table joins or 'SELECT FOR ALL ENTRIES' when selecting data
    !!! from related tables.
      SELECT
                vbeln
                erdat
                erzet
                ernam
       FROM vbak
          INTO CORRESPONDING FIELDS OF TABLE gt_vbak
      CHECK NOT gt_vbak[] IS INITIAL.
      SELECT
                matnr
       FROM mara
          INTO CORRESPONDING FIELDS OF TABLE gt_mara
          FOR ALL ENTRIES IN gt_vbak
          WHERE ernam = gt_vbak-ernam
    ENDFORM.                               " GET_TRANSACTION_DATA
          FORM PROCESS_TRANSACTION_DATA                                 *
    FORM process_transaction_data.
      LOOP AT gt_vbak .
        MOVE-CORRESPONDING gt_vbak TO gt_alv1_data .
        APPEND gt_alv1_data .
      ENDLOOP.
      FREE gt_vbak .
      LOOP AT gt_mara .
        MOVE-CORRESPONDING gt_mara TO gt_alv2_data .
        APPEND gt_alv2_data .
      ENDLOOP.
      FREE gt_mara .
    ENDFORM.                               " PROCESS_TRANSACTION_DATA
          FORM OUTPUT_DATA                                              *
    FORM output_data.
      PERFORM alv_list_display.
    ENDFORM.                               " OUTPUT_DATA
          FORM DISPLAY_RECORD                                           *
          Display object associated with the current ALV line           *
    FORM display_record USING is_selfield TYPE slis_selfield.
      READ TABLE gt_alv1_data INDEX is_selfield-tabindex.
      CHECK sy-subrc = 0.
    !!! SAMPLE IMPLEMENTATION FOR DISPLAYING FI DOCUMENTS:
      SET PARAMETER ID 'BUK' FIELD gt_alv1_data-vbeln.
    set parameter id 'BLN' field gt_alv1_data-belnr.
    set parameter id 'GJR' field gt_alv1_data-gjahr.
      CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
    ENDFORM.                               " DISPLAY_RECORD
          FORM ALV_LIST_DISPLAY                                         *
          Invoke main ALV function to format and show the report        *
    FORM alv_list_display.
      DATA: ls_layout      TYPE slis_layout_alv,
            ls_print       TYPE slis_print_alv,
            ls_keyinfo     TYPE slis_keyinfo_alv,
            lt_fieldcat    TYPE slis_t_fieldcat_alv,
            lt_exctab      TYPE slis_t_extab,
            lt_sorttab     TYPE slis_t_sortinfo_alv,
            lt_events      TYPE slis_t_event.
      PERFORM alv_init_report_events TABLES   lt_events.
      PERFORM alv_init_report_layout TABLES   lt_fieldcat
                                              lt_exctab
                                              lt_sorttab
                                     CHANGING ls_layout
                                              ls_print
                                              ls_keyinfo.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
          i_interface_check        = ' '
          i_callback_program       = sy-cprog
          is_layout                = ls_layout
          it_fieldcat              = lt_fieldcat
          it_excluding             = lt_exctab
        IT_SPECIAL_GROUPS        =
          it_sort                  = lt_sorttab
        IT_FILTER                =
        IS_SEL_HIDE              =
        I_SCREEN_START_COLUMN    = 0
        I_SCREEN_START_LINE      = 0
        I_SCREEN_END_COLUMN      = 0
        I_SCREEN_END_LINE        = 0
        I_DEFAULT                = 'X'
          i_save                   = 'A'
          is_variant               = gs_variant
          it_events                = lt_events
        IT_EVENT_EXIT            =
          i_tabname_header         = 'GT_ALV1_DATA'
          i_tabname_item           = 'GT_ALV2_DATA'
        I_STRUCTURE_NAME_HEADER  =
        I_STRUCTURE_NAME_ITEM    =
          is_keyinfo               =  ls_keyinfo
          is_print                 =  ls_print
        IS_REPREP_ID             =
      IMPORTING
        E_EXIT_CAUSED_BY_CALLER  =
        ES_EXIT_CAUSED_BY_USER   =
        TABLES
          t_outtab_header          = gt_alv1_data
          t_outtab_item            = gt_alv2_data.
      EXCEPTIONS
        PROGRAM_ERROR            = 1
        OTHERS                   = 2
    ENDFORM.                           " ALV_LIST_DISPLAY
          FORM ALV_INIT_REPORT_LAYOUT                                   *
          Set up report layout definition for ALV_LIST_DISPLAY          *
    <-- OT_FIELDCAT list of fields                                     *
    <-- OT_EXCTAB   excluded menu options                              *
    <-- OT_SORTTAB  sorting/grouping definition                        *
    <-- OS_LAYOUT   global report layout settings                      *
    <-- OS_PRINT    global report printout settings                    *
    <-- OS_KEYINFO  itab key fields (required only for hier.lists)     *
    FORM alv_init_report_layout TABLES ot_fieldcat TYPE slis_t_fieldcat_alv
                                       ot_exctab   TYPE slis_t_extab
                                       ot_sorttab  TYPE slis_t_sortinfo_alv
                              CHANGING cs_layout   TYPE slis_layout_alv
                                       cs_print    TYPE slis_print_alv
                                       cs_keyinfo  TYPE slis_keyinfo_alv.
    add menu items to be excluded to ot_exctab.
      REFRESH ot_exctab.
      REFRESH ot_fieldcat.
      REFRESH ot_sorttab.
    !!! List all ALV data fields for display here:
    DD-struct  = data dictionary structure name
    DD-field   = field of data dictionary structure
    itab       = internal table for output data
    itab-field = internal table field name
    key        = set to 'X' if key field
    sum        = set to 'X' for totals
    hid        = set to 'X' if field is initially hidden
    row        = list row number (multi-line list if >1)
    DD-struct    DD-field     itab         itab-field  key sum hid row
      PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:
    'VBAK'       'VBELN'      'GT_ALV1_DATA' 'VBELN'     ' ' ' ' ' ' 1 ,
    'VBAK'       'ERDAT'      'GT_ALV1_DATA' 'ERDAT'     ' ' ' ' ' ' 1 ,
    'VBAK'       'ERZET'      'GT_ALV1_DATA' 'ERZET'     ' ' ' ' ' ' 1 ,
    'VBAK'       'ERNAM'      'GT_ALV1_DATA' 'ERNAM'     ' ' ' ' ' ' 1.
      PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:
    'MARA'       'MATNR'      'GT_ALV2_DATA' 'MATNR'     ' ' ' ' ' ' 1 .
    !!! List all ALV data fields for sorting/grouping here
    itab       = internal table for output data
    itab-field = internal table field name
    up         = sort ascending
    down       = sort descending
    grp        = group by
    comp       = group initially compressed
    pos        = field position in sort sequence
    itab                   field              up down grp comp        pos
      PERFORM alv_build_sorttab TABLES ot_sorttab USING:
    'GT_ALV1_DATA'         'VBELN'             'X' ' ' ' ' ' '           1.
      PERFORM alv_build_sorttab TABLES ot_sorttab USING:
    'GT_ALV2_DATA'         'MATNR'             'X' ' ' ' ' ' '           1.
    !!! key definition - required only for hierarchical display (2 itabs)
      cs_keyinfo-header01 = 'VBELN' .
      cs_keyinfo-item01   = 'MATNR' .
    !!! See the declaration of type SLIS_LAYOUT_ALV and set the fields
    !!! of OS_LAYOUT record to change list-level attributes
    os_layout-no_colhead     = 'X'.         " no headings
      cs_layout-zebra          = 'X'.         " stripped pattern
    os_layout-no_vline       = 'X'.         " columns separated by space
    os_layout-totals_only    = 'X'.         " show only totals
    os_layout-totals_text    = 'Total'.     " totals line label
    os_layout-subtotals_text = 'Subtotal'.  " subtotals line label
    os_layout-subtotals_text = 'Subtotal'.  " subtotals line label
    os_layout-key_hotspot    = 'X'.         " keys as hotspot
    os_layout-expand_all     = 'X'.         " Expand all positions
    os_layout...
      cs_print-no_print_selinfos = 'X'.       " Skip selection statistics
      cs_print-no_print_listinfos = 'X'.      " Skip list statistics
    os_print-...
    ENDFORM.                               " INIT_REPORT_LAYOUT
          FORM ALV_BUILD_FIELDCAT                                       *
          Format a single line for ALV_INIT_REPORT_LAYOUT               *
    FORM alv_build_fieldcat TABLES ot_fieldcat
                            USING  iv_ref_tabname   "ref to a table/field
                                   iv_ref_fieldname
                                   iv_tabname     "actual table/field name
                                   iv_fieldname
                                   iv_key
                                   iv_do_sum
                                   iv_no_out
                                   iv_row_pos.
    status variables for auto-numbering of field column position
    (column number reset when a new table or row begins)
      STATICS: sv_last_tabname TYPE slis_tabname,
               sv_last_row_pos TYPE i,
               sv_current_col  TYPE i.
      IF sv_last_tabname <> iv_tabname OR sv_last_row_pos <> iv_row_pos.
        sv_current_col = 1.
      ELSE.
        ADD 1 TO sv_current_col.
      ENDIF.
      sv_last_tabname = iv_tabname.
      sv_last_row_pos = iv_row_pos.
      DATA: ls_fieldcat    TYPE slis_fieldcat_alv.
      DATA: lv_fieldname   TYPE slis_fieldname.
      lv_fieldname = iv_fieldname.
    !!! List all the special formatting requirements in cases below
    case lv_fieldname.
      when 'WRBTR'.                      "<-- link with currency required
        ls_fieldcat-cfieldname = 'WAERS'.
        ls_fieldcat-ctabname   = iv_tabname.
      when 'HKONT'.                     "<-- change default column header
        ls_fieldcat-seltext_s  = 'GL Acc.'.
        ls_fieldcat-ddictxt    = 'S'.          " (S)hort (M)iddle (L)ong
      when 'SOME_NUMBER'                 "<-- change number formatting
        ls_fieldcat-nosign     = 'X'.
        ls_fieldcat-nozero     = 'X'.
        ls_fieldcat-just       = 'L'.         " (L)eft (R)ight (C)enter
    endcase.
      ls_fieldcat-ref_tabname   = iv_ref_tabname.
      ls_fieldcat-ref_fieldname = iv_ref_fieldname.
      ls_fieldcat-tabname       = iv_tabname.
      ls_fieldcat-fieldname     = iv_fieldname.
      ls_fieldcat-key           = iv_key.
      ls_fieldcat-do_sum        = iv_do_sum.
      ls_fieldcat-no_out        = iv_no_out.
      ls_fieldcat-row_pos       = iv_row_pos.
      ls_fieldcat-col_pos       = sv_current_col.
      APPEND ls_fieldcat TO ot_fieldcat.
    ENDFORM.                          " ALV_BUILD_FIELDCAT
          FORM ALV_BUILD_SORTTAB                                        *
          Set up sorting information for ALV_INIT_REPORT_LAYOUT         *
    FORM alv_build_sorttab TABLES ot_sorttab TYPE slis_t_sortinfo_alv
                           USING  iv_tabname   TYPE slis_fieldname
                                  iv_fieldname TYPE slis_fieldname
                                  iv_up        TYPE c
                                  iv_down      TYPE c
                                  iv_subtot    TYPE c
                                  iv_comp      TYPE c
                                  iv_spos      TYPE n.
      ot_sorttab-spos      = iv_spos.
      ot_sorttab-fieldname = iv_fieldname.
      ot_sorttab-tabname   = iv_tabname.
      ot_sorttab-up        = iv_up.
      ot_sorttab-down      = iv_down.
      ot_sorttab-subtot    = iv_subtot.
      ot_sorttab-comp      = iv_comp.
      APPEND ot_sorttab.
    ENDFORM.                            " ALV_BUILD_SORTTAB
          FORM ALV_INIT_REPORT_EVENTS                                   *
          Set up program events for ALV_LIST_DISPLAY                    *
    <-- OT_EVENTS   list of events and associated report subroutines   *
    FORM alv_init_report_events TABLES ot_events TYPE slis_t_event.
      CLEAR   ot_events.
      REFRESH ot_events.
      ot_events-name = slis_ev_user_command.
      ot_events-form = 'USER_COMMAND'.
      APPEND ot_events.
      ot_events-name = slis_ev_pf_status_set.
      ot_events-form = ''.                         "'PF_STATUS_SET'.
      APPEND ot_events.
      ot_events-name = slis_ev_top_of_list.
      ot_events-form = 'TOP_OF_LIST'.
      APPEND ot_events.
      ot_events-name = slis_ev_end_of_list.
      ot_events-form = 'END_OF_LIST'.
      APPEND ot_events.
      ot_events-name = slis_ev_top_of_page.
      ot_events-form = 'TOP_OF_PAGE'.
      APPEND ot_events.
      ot_events-name = slis_ev_end_of_page.
      ot_events-form = 'END_OF_PAGE'.
      APPEND ot_events.
      ot_events-name = slis_ev_foreign_top_of_page.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_foreign_end_of_page.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_top_of_coverpage.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_end_of_coverpage.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_before_line_output.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_after_line_output.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_caller_exit_at_start.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_list_modify.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_subtotal_text.
      ot_events-form = ''.
      APPEND ot_events.
    ENDFORM.                            " ALV_INIT_REPORT_EVENTS
          FORM USER_COMMAND                                             *
          Subroutine attached as callback form to ABAP List Viewer      *
      --> UCOMM    - user command code passed from ALV                  *
      --> SELFIELD - information record describing current line/field   *
    FORM user_command USING value(iv_ucomm) LIKE sy-ucomm
                            is_selfield     TYPE slis_selfield.
      CASE iv_ucomm.
        WHEN '&IC1'.                                  "ALV record selection
          PERFORM display_record USING is_selfield.
      when ...
      ENDCASE.
    ENDFORM.                               " USER_COMMAND
          FORM PF_STATUS_SET                                            *
          Subroutine attached as callback form to ABAP List Viewer,     *
          allows setting alternative menu.  If necessary:               *
          1. Copy 'STANDARD' menu from SAPLKKBL and modify as required, *
          2. Activate callback                                          *
    FORM pf_status_set USING it_exctab TYPE slis_t_extab.
    set pf-status 'STANDARD' excluding it_exctab.
    ENDFORM.                               " PF_STATUS_SET
          FORM TOP_OF_LIST                                              *
          Subroutine attached as callback form to ABAP List Viewer,     *
          executed once at the start of list output.                    *
    FORM top_of_list.
      DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.
      DATA: lv_report LIKE sy-repid.
      lv_report = sy-repid.             "do not pass sy-repid to function!
      IF p_box_up = 'X'. "display select options at report start
        CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
          EXPORTING
            curr_report     = lv_report
          TABLES
            selection_table = lt_seltab.
    remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'
    before display, if necessary
        CALL FUNCTION 'RS_LIST_SELECTION_TABLE'
           EXPORTING
                report        = lv_report
                seltext       = 'X'
            dyn_range     =
                newpage       = ' '
            screennr      = 1000
           TABLES
                sel_tab       = lt_seltab
           EXCEPTIONS
                sel_tab_empty = 1.
      ENDIF. "p_box_up = 'X'
    ENDFORM.                               " TOP_OF_LIST
          FORM END_OF_LIST                                              *
          Subroutine attached as callback form to ABAP List Viewer      *
          executed once at the end of list output.                      *
    FORM end_of_list.
      DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.
      DATA: lv_report LIKE sy-repid.
      lv_report = sy-repid.             "do not pass sy-repid to function!
      IF p_box_do = 'X'. "display select options at report end
        CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
          EXPORTING
            curr_report     = lv_report
          TABLES
            selection_table = lt_seltab.
    remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'
    before display, if necessary
        CALL FUNCTION 'RS_LIST_SELECTION_TABLE'
           EXPORTING
                report        = lv_report
                seltext       = 'X'
            dyn_range     =
                newpage       = ' '
            screennr      = 1000
           TABLES
                sel_tab       = lt_seltab
           EXCEPTIONS
                sel_tab_empty = 1.
      ENDIF. "p_box_do = 'X'
    ENDFORM.                               " END_OF_LIST
          FORM TOP_OF_PAGE                                              *
          Subroutine attached as callback form to ABAP List Viewer      *
    FORM top_of_page.
    standard Ingram Micro report page heading
      DATA: lv_coco_pos TYPE i,          "CurPos of 'Company confidential'
            lv_title_pos TYPE i,           "CurPos of report title
            lv_title(70) TYPE c,           "Truncated report title
            lv_page_pos TYPE i,            "CurPos of page number
            lv_date_pos TYPE i,            "CurPos of date and time
            lv_page_no(10) TYPE c,
            lv_date(25) TYPE c,
            lv_time(20) TYPE c,
            lv_page(10) TYPE c.
    We may need to truncate title if the line size is < 81.
      IF sy-linsz < 81.
        lv_title = sy-title+0(50).
      ELSE.
        lv_title = sy-title.
      ENDIF.
    Decide on positioning of text depending on width of page
      lv_title_pos = ( sy-linsz / 2 ) - ( STRLEN( lv_title ) / 2 ).
      lv_coco_pos = sy-linsz - 20.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.
      WRITE: / 'Ingram Micro',
               AT lv_title_pos lv_title,
               AT lv_coco_pos 'Company Confidential'.
    Setup data correctly in the correct format for the display fields.
      lv_page = sy-pagno.
      SHIFT lv_page LEFT DELETING LEADING ' '.
      CONCATENATE sy-datum6(2) sy-datum4(2) sy-datum+0(4)
                   INTO lv_date SEPARATED BY '.'.
      CONCATENATE sy-uzeit0(2) ':' sy-uzeit2(2) INTO lv_time.
      CONCATENATE lv_date lv_time INTO lv_date SEPARATED BY ' '.
      CONCATENATE 'Page' lv_page INTO lv_page_no SEPARATED BY ' '.
    Decide on positioning of text depending on width of page.
      lv_page_pos = sy-linsz - ( STRLEN( lv_page_no ) ).
      WRITE: / lv_date,
               AT lv_page_pos lv_page_no.
      ULINE.
    ENDFORM.                               " TOP_OF_PAGE
          FORM END_OF_PAGE                                              *
          Subroutine attached as callback form to ABAP List Viewer      *
    FORM end_of_page.
    ENDFORM.                               " END_OF_PAGE
          Form  ALV_VARIANT_EXISTENCE
          Reads ALV variant definition
    FORM alv_variant_existence  USING    iv_variant LIKE disvariant-variant
                                CHANGING os_variant LIKE disvariant.
      CHECK NOT iv_variant IS INITIAL.
      os_variant-report  = sy-repid.
      os_variant-variant = iv_variant.
      IF iv_variant CP '/*'.    "user-specific variants begin with slash
        os_variant-username = sy-uname.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
        EXPORTING
          i_save        = 'A'
        CHANGING
          cs_variant    = os_variant
        EXCEPTIONS
          wrong_input   = 1
          not_found     = 2
          program_error = 3
          OTHERS        = 4.
      IF sy-subrc <> 0.
        MESSAGE e001(z9) WITH 'Please select a valid display variant.'.
      ENDIF.
    ENDFORM.                               " ALV_VARIANT_EXISTENCE
          FORM ALV_VARIANT_F4                                           *
          Display list of layout variants on report selection screen    *
    FORM alv_variant_f4  CHANGING cv_varname  LIKE disvariant-variant
                                  cs_variant  LIKE disvariant.
      DATA: lv_exit(1) TYPE c.
      cs_variant-report = sy-repid.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
           EXPORTING
                is_variant          = cs_variant
                i_save              = 'A'
              it_default_fieldcat =
           IMPORTING
                e_exit              = lv_exit
                es_variant          = cs_variant
           EXCEPTIONS
                not_found = 2.
      IF sy-subrc = 2.
        MESSAGE ID sy-msgid TYPE 'S'      NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ELSE.
        IF lv_exit = space.
          cv_varname = cs_variant-variant.
        ENDIF.
      ENDIF.
    hope this will help.
    see form  user_command.
    regards,
    Ruchika

  • How to enable excel downloading in ALV grid report.

    Hi all,
    How to enable excal downing in ALV grid report?
    Thanks in Advance.
    Siva Sankar.

    hi
    check the following code
    Example of a Simple ALV Grid Report
    REPORT  ZTUFI091                                .
    *& Report  ZDEMO_ALVGRID                                               *
    *& Example of a simple ALV Grid Report                                 *
    *& The basic requirement for this demo is to display a number of       *
    *& fields from the EKKO table.                                         *
    *REPORT  zdemo_alvgrid                 .
    TABLES:     ekko.
    type-pools: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid,
          gt_events     type slis_t_event,
          gd_prntparams type slis_print_alv.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform build_events.
    perform build_print_params.
    perform display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
          Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
    There are a number of ways to create a fieldcat.
    For the purpose of this example i will build the fieldcatalog manualy
    by populating the internal table fields individually and then
    appending the rows. This method can be the most time consuming but can
    also allow you  more control of the final product.
    Beware though, you need to ensure that all fields required are
    populated. When using some of functionality available via ALV, such as
    total. You may need to provide more information than if you were
    simply displaying the result
                  I.e. Field type may be required in-order for
                       the 'TOTAL' function to work.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    fieldcatalog-do_sum      = 'X'.
    fieldcatalog-no_zero     = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-datatype     = 'CURR'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    gd_layout-totals_only        = 'X'.
    gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
                                            "click(press f2)
    gd_layout-zebra             = 'X'.
    gd_layout-group_change_edit = 'X'.
    gd_layout-header_text       = 'helllllo'.
    endform.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
                i_callback_user_command = 'USER_COMMAND'
               i_grid_title           = outtext
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
               it_special_groups       = gd_tabgroup
                it_events               = gt_events
                is_print                = gd_prntparams
                i_save                  = 'X'
               is_variant              = z_template
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
      from ekpo
      into table it_ekko.
    endform.                    " DATA_RETRIEVAL
    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 = 'EKKO Table Report'.
      append wa_header to t_header.
      clear wa_header.
    Date
      wa_header-typ  = 'S'.
      wa_header-key = 'Date: '.
      CONCATENATE  sy-datum+6(2) '.'
                   sy-datum+4(2) '.'
                   sy-datum(4) INTO wa_header-info.   "todays date
      append wa_header to t_header.
      clear: wa_header.
    Total No. of Records Selected
      describe table it_ekko lines ld_lines.
      ld_linesc = ld_lines.
      concatenate 'Total No. of Records Selected: ' ld_linesc
                        into t_line separated by space.
      wa_header-typ  = 'A'.
      wa_header-info = t_line.
      append wa_header to t_header.
      clear: wa_header, t_line.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = t_header.
               i_logo             = 'Z_LOGO'.
    endform.
          FORM USER_COMMAND                                          *
          --> R_UCOMM                                                *
          --> RS_SELFIELD                                            *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
    Check function code
      CASE r_ucomm.
        WHEN '&IC1'.
      Check field clicked on within ALVgrid report
        IF rs_selfield-fieldname = 'EBELN'.
        Read data table, using index of row user clicked on
          READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
        Set parameter ID for transaction screen field
          SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
        Sxecute transaction ME23N, and skip initial data entry screen
          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDCASE.
    ENDFORM.
    *&      Form  BUILD_EVENTS
          Build events table
    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_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.
    endform.                    " BUILD_EVENTS
    *&      Form  BUILD_PRINT_PARAMS
          Setup print parameters
    form build_print_params.
      gd_prntparams-reserve_lines = '3'.   "Lines reserved for footer
      gd_prntparams-no_coverpage = 'X'.
    endform.                    " BUILD_PRINT_PARAMS
    *&      Form  END_OF_PAGE
    form END_OF_PAGE.
      data: listwidth type i,
            ld_pagepos(10) type c,
            ld_page(10)    type c.
      write: sy-uline(50).
      skip.
      write:/40 'Page:', sy-pagno .
    endform.
    *&      Form  END_OF_LIST
    form END_OF_LIST.
      data: listwidth type i,
            ld_pagepos(10) type c,
            ld_page(10)    type c.
      skip.
      write:/40 'Page:', sy-pagno .
    endform.
    hope it will help you
    regards
    sreelatha gullapalli

  • Plz corrct this alv code

    hi all,
    plz correct this revert back whan i executing every time it will show internal table itab is no long enough.
    plz rectify the errirs and send back it.
    ABLES:     zfm_kfz.
    type-pools: slis.                                 "ALV Declarations
    *Data Declaration
    *TYPES: BEGIN OF t_ekko,
    ebeln TYPE ekpo-ebeln,
    ebelp TYPE ekpo-ebelp,
    statu TYPE ekpo-statu,
    aedat TYPE ekpo-aedat,
    matnr TYPE ekpo-matnr,
    menge TYPE ekpo-menge,
    meins TYPE ekpo-meins,
    netpr TYPE ekpo-netpr,
    peinh TYPE ekpo-peinh,
    END OF t_ekko.
    *DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
         wa_ekko TYPE t_ekko.
    DATA : BEGIN OF ITAB OCCURS 0,
           KFZNR LIKE ZFM_KFZ-KFZNR,
           GERAET LIKE ZFM_KFZ-KFZNR,
           KOSTENTRAEGER(10) TYPE C,
           BEZEICHNUNG(10) TYPE C,
           TUVDATUMMMYYYY(6) TYPE C,
           ASUDATUMMMYYYY(6) TYPE C,
           KMSTAND(6) TYPE C,
           HISTO(1) TYPE C,
           REIFEN(1) TYPE C,
           USERNAME(12) TYPE C,
           END OF ITAB.
    DATA: BEGIN OF ITAB1 OCCURS 0.
            INCLUDE STRUCTURE ITAB.
    DATA: END OF ITAB1.
    DATA: BEGIN OF ITAB_FIELDCAT OCCURS 0.
            INCLUDE STRUCTURE ITAB.
    DATA: END OF ITAB_FIELDCAT.
    DATA: T_KFZ LIKE TABLE OF ZFM_KFZ.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid,
          gt_events     type slis_t_event,
          gd_prntparams type slis_print_alv.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform build_events.
    perform build_print_params.
    perform display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
          Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
    There are a number of ways to create a fieldcat.
    For the purpose of this example i will build the fieldcatalog manualy
    by populating the internal table fields individually and then
    appending the rows. This method can be the most time consuming but can
    also allow you  more control of the final product.
    Beware though, you need to ensure that all fields required are
    populated. When using some of functionality available via ALV, such as
    total. You may need to provide more information than if you were
    simply displaying the result
                  I.e. Field type may be required in-order for
                       the 'TOTAL' function to work.
      fieldcatalog-fieldname   = 'kfznr'.
      fieldcatalog-seltext_m   = 'kfznr'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 11.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    fieldcatalog-do_sum      = 'X'.
    fieldcatalog-no_zero     = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'geraet'.
      fieldcatalog-seltext_m   = 'geraet'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'kostentraeger'.
      fieldcatalog-seltext_m   = 'kostentraeger'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'bezeichnung'.
      fieldcatalog-seltext_m   = 'bezeichnung'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'tuvdatummmyyyy'.
      fieldcatalog-seltext_m   = 'tuvdatummmyyyy'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'asudatummmyyyy'.
      fieldcatalog-seltext_m   = 'asudatummmyyyy'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'kmstand'.
      fieldcatalog-seltext_m   = 'kmstand'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'histo'.
      fieldcatalog-seltext_m   = 'histo'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 1.
    fieldcatalog-datatype     = 'CURR'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'reifen'.
      fieldcatalog-seltext_m   = 'reifen'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'username'.
      fieldcatalog-seltext_m   = 'username'.
      fieldcatalog-col_pos     = 9.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    gd_layout-totals_only        = 'X'.
    gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
                                            "click(press f2)
    gd_layout-zebra             = 'X'.
    gd_layout-group_change_edit = 'X'.
    gd_layout-header_text       = 'helllllo'.
    endform.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
                i_callback_user_command = 'USER_COMMAND'
               i_grid_title           = outtext
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
               it_special_groups       = gd_tabgroup
                it_events               = gt_events
                is_print                = gd_prntparams
                i_save                  = 'X'
               is_variant              = z_template
           tables
                t_outtab                = itab1
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    select * from zfm_kfz
      into table itab where kfznr = itab-kfznr.
    endform.                    " DATA_RETRIEVAL
    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 = 'EKKO Table Report'.
      append wa_header to t_header.
      clear wa_header.
    Date
      wa_header-typ  = 'S'.
      wa_header-key = 'Date: '.
      CONCATENATE  sy-datum+6(2) '.'
                   sy-datum+4(2) '.'
                   sy-datum(4) INTO wa_header-info.   "todays date
      append wa_header to t_header.
      clear: wa_header.
    Total No. of Records Selected
      describe table itab lines ld_lines.                 
      ld_linesc = ld_lines.
      concatenate 'Total No. of Records Selected: ' ld_linesc
                        into t_line separated by space.
      wa_header-typ  = 'A'.
      wa_header-info = t_line.
      append wa_header to t_header.
      clear: wa_header, t_line.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = t_header.
               i_logo             = 'Z_LOGO'.
    endform.
          FORM USER_COMMAND                                          *
          --> R_UCOMM                                                *
          --> RS_SELFIELD                                            *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
    Check function code
      CASE r_ucomm.
        WHEN '&IC1'.
      Check field clicked on within ALVgrid report
        IF rs_selfield-fieldname = 'EBELN'.
        Read data table, using index of row user clicked on
          READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
        Set parameter ID for transaction screen field
          SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
        Sxecute transaction ME23N, and skip initial data entry screen
          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDCASE.
    ENDFORM.
    *&      Form  BUILD_EVENTS
          Build events table
    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_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.
    endform.                    " BUILD_EVENTS
    *&      Form  BUILD_PRINT_PARAMS
          Setup print parameters
    form build_print_params.
      gd_prntparams-reserve_lines = '3'.   "Lines reserved for footer
      gd_prntparams-no_coverpage = 'X'.
    endform.                    " BUILD_PRINT_PARAMS
    *&      Form  END_OF_PAGE
    form END_OF_PAGE.
      data: listwidth type i,
            ld_pagepos(10) type c,
            ld_page(10)    type c.
      write: sy-uline(50).
      skip.
      write:/40 'Page:', sy-pagno .
    endform.
    *&      Form  END_OF_LIST
    form END_OF_LIST.
      data: listwidth type i,
            ld_pagepos(10) type c,
            ld_page(10)    type c.
      skip.
      write:/40 'Page:', sy-pagno .
    endform.

    Hi,
    Change this..
    DATA : BEGIN OF ITAB ,
    KFZNR LIKE ZFM_KFZ-KFZNR,
    GERAET LIKE ZFM_KFZ-KFZNR,
    KOSTENTRAEGER(10) TYPE C,
    BEZEICHNUNG(10) TYPE C,
    TUVDATUMMMYYYY(6) TYPE C,
    ASUDATUMMMYYYY(6) TYPE C,
    KMSTAND(6) TYPE C,
    HISTO(1) TYPE C,
    REIFEN(1) TYPE C,
    USERNAME(12) TYPE C,
    END OF ITAB.
    DATA: BEGIN OF ITAB1 OCCURS 0.
    INCLUDE STRUCTURE ITAB.
    DATA: END OF ITAB1.
    DATA: ITAB_FIELDCAT type SLIS_T_FIELDCAT_ALV .
    and also use CAPS for field names.
    fieldcatalog-fieldname = '<b>KFZNR</b>'.
    fieldcatalog-seltext_m = 'kfznr'.
    fieldcatalog-col_pos = 0.
    fieldcatalog-outputlen = 11.
    fieldcatalog-emphasize = 'X'.
    fieldcatalog-key = 'X'.
    fieldcatalog-do_sum = 'X'.
    fieldcatalog-no_zero = 'X'.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    Regards
    vijay

  • Alv grid prg

    Dear Experts
      I need to do  summation of netprice when ever the PO Changes for the sample report given below
    REPORT  ZTUFI091                                .
    *& Report  ZDEMO_ALVGRID                                               *
    *& Example of a simple ALV Grid Report                                 *
    *& The basic requirement for this demo is to display a number of       *
    *& fields from the EKKO table.                                         *
    *REPORT  zdemo_alvgrid                 .
    TABLES:     ekko.
    type-pools: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid,
          gt_events     type slis_t_event,
          gd_prntparams type slis_print_alv.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform build_events.
    perform build_print_params.
    perform display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
          Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
    There are a number of ways to create a fieldcat.
    For the purpose of this example i will build the fieldcatalog manualy
    by populating the internal table fields individually and then
    appending the rows. This method can be the most time consuming but can
    also allow you  more control of the final product.
    Beware though, you need to ensure that all fields required are
    populated. When using some of functionality available via ALV, such as
    total. You may need to provide more information than if you were
    simply displaying the result
                  I.e. Field type may be required in-order for
                       the 'TOTAL' function to work.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    fieldcatalog-do_sum      = 'X'.
    fieldcatalog-no_zero     = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-datatype     = 'CURR'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    gd_layout-totals_only        = 'X'.
    gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
                                            "click(press f2)
    gd_layout-zebra             = 'X'.
    gd_layout-group_change_edit = 'X'.
    gd_layout-header_text       = 'helllllo'.
    endform.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
                i_callback_user_command = 'USER_COMMAND'
               i_grid_title           = outtext
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
               it_special_groups       = gd_tabgroup
                it_events               = gt_events
                is_print                = gd_prntparams
                i_save                  = 'X'
               is_variant              = z_template
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
      from ekpo
      into table it_ekko.
    endform.                    " DATA_RETRIEVAL
    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 = 'EKKO Table Report'.
      append wa_header to t_header.
      clear wa_header.
    Date
      wa_header-typ  = 'S'.
      wa_header-key = 'Date: '.
      CONCATENATE  sy-datum+6(2) '.'
                   sy-datum+4(2) '.'
                   sy-datum(4) INTO wa_header-info.   "todays date
      append wa_header to t_header.
      clear: wa_header.
    Total No. of Records Selected
      describe table it_ekko lines ld_lines.
      ld_linesc = ld_lines.
      concatenate 'Total No. of Records Selected: ' ld_linesc
                        into t_line separated by space.
      wa_header-typ  = 'A'.
      wa_header-info = t_line.
      append wa_header to t_header.
      clear: wa_header, t_line.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = t_header.
               i_logo             = 'Z_LOGO'.
    endform.
          FORM USER_COMMAND                                          *
          --> R_UCOMM                                                *
          --> RS_SELFIELD                                            *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
    Check function code
      CASE r_ucomm.
        WHEN '&IC1'.
      Check field clicked on within ALVgrid report
        IF rs_selfield-fieldname = 'EBELN'.
        Read data table, using index of row user clicked on
          READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
        Set parameter ID for transaction screen field
          SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
        Sxecute transaction ME23N, and skip initial data entry screen
          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDCASE.
    ENDFORM.
    *&      Form  BUILD_EVENTS
          Build events table
    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_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.
    endform.                    " BUILD_EVENTS
    *&      Form  BUILD_PRINT_PARAMS
          Setup print parameters
    form build_print_params.
      gd_prntparams-reserve_lines = '3'.   "Lines reserved for footer
      gd_prntparams-no_coverpage = 'X'.
    endform.                    " BUILD_PRINT_PARAMS
    *&      Form  END_OF_PAGE
    form END_OF_PAGE.
      data: listwidth type i,
            ld_pagepos(10) type c,
            ld_page(10)    type c.
      write: sy-uline(50).
      skip.
      write:/40 'Page:', sy-pagno .
    endform.
    *&      Form  END_OF_LIST
    form END_OF_LIST.
      data: listwidth type i,
            ld_pagepos(10) type c,
            ld_page(10)    type c.
      skip.
      write:/40 'Page:', sy-pagno .
    endform.
    pls show me how to accomplish this
    Thanks in advance
    karthik

    Hi,
    Try like the below...
    REPORT ZTUFI091 .
    *& Report ZDEMO_ALVGRID *
    *& Example of a simple ALV Grid Report *
    *& The basic requirement for this demo is to display a number of *
    *& fields from the EKKO table. *
    *REPORT zdemo_alvgrid .
    TABLES: ekko.
    type-pools: slis. "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
    ebeln TYPE ekpo-ebeln,
    ebelp TYPE ekpo-ebelp,
    statu TYPE ekpo-statu,
    aedat TYPE ekpo-aedat,
    matnr TYPE ekpo-matnr,
    menge TYPE ekpo-menge,
    meins TYPE ekpo-meins,
    netpr TYPE ekpo-netpr,
    peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
    wa_ekko TYPE t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
    gd_tab_group type slis_t_sp_group_alv,
    gd_layout type slis_layout_alv,
    gd_repid like sy-repid,
    gt_events type slis_t_event,
    gd_prntparams type slis_print_alv.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform build_events.
    perform build_print_params.
    perform display_alv_report.
    *& Form BUILD_FIELDCATALOG
    Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
    There are a number of ways to create a fieldcat.
    For the purpose of this example i will build the fieldcatalog manualy
    by populating the internal table fields individually and then
    appending the rows. This method can be the most time consuming but can
    also allow you more control of the final product.
    Beware though, you need to ensure that all fields required are
    populated. When using some of functionality available via ALV, such as
    total. You may need to provide more information than if you were
    simply displaying the result
    I.e. Field type may be required in-order for
    the 'TOTAL' function to work.
    fieldcatalog-fieldname = 'EBELN'.
    fieldcatalog-seltext_m = 'Purchase Order'.
    fieldcatalog-col_pos = 0.
    fieldcatalog-outputlen = 10.
    fieldcatalog-emphasize = 'X'.
    fieldcatalog-key = 'X'.
    fieldcatalog-do_sum = 'X'.
    fieldcatalog-no_zero = 'X'.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'EBELP'.
    fieldcatalog-seltext_m = 'PO Item'.
    fieldcatalog-col_pos = 1.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'STATU'.
    fieldcatalog-seltext_m = 'Status'.
    fieldcatalog-col_pos = 2.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'AEDAT'.
    fieldcatalog-seltext_m = 'Item change date'.
    fieldcatalog-col_pos = 3.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'MATNR'.
    fieldcatalog-seltext_m = 'Material Number'.
    fieldcatalog-col_pos = 4.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'MENGE'.
    fieldcatalog-seltext_m = 'PO quantity'.
    fieldcatalog-col_pos = 5.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'MEINS'.
    fieldcatalog-seltext_m = 'Order Unit'.
    fieldcatalog-col_pos = 6.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'NETPR'.
    fieldcatalog-seltext_m = 'Net Price'.
    fieldcatalog-col_pos = 7.
    fieldcatalog-outputlen = 15.
    fieldcatalog-datatype = 'CURR'.
    <b> fieldcatalog-do_sum = 'X'.
    fieldcatalog-no_zero = 'X'.</b>
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'PEINH'.
    fieldcatalog-seltext_m = 'Price Unit'.
    fieldcatalog-col_pos = 8.
    append fieldcatalog to fieldcatalog.
    clear fieldcatalog.
    endform. " BUILD_FIELDCATALOG
    *& Form BUILD_LAYOUT
    Build layout for ALV grid report
    form build_layout.
    gd_layout-no_input = 'X'.
    gd_layout-colwidth_optimize = 'X'.
    gd_layout-totals_text = 'Totals'(201).
    gd_layout-totals_only = 'X'.
    gd_layout-f2code = 'DISP'. "Sets fcode for when double
    "click(press f2)
    gd_layout-zebra = 'X'.
    gd_layout-group_change_edit = 'X'.
    gd_layout-header_text = 'helllllo'.
    endform. " BUILD_LAYOUT
    *& Form DISPLAY_ALV_REPORT
    Display report using ALV grid
    form display_alv_report.
    gd_repid = sy-repid.
    call function 'REUSE_ALV_GRID_DISPLAY'
    exporting
    i_callback_program = gd_repid
    i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
    i_callback_user_command = 'USER_COMMAND'
    i_grid_title = outtext
    is_layout = gd_layout
    it_fieldcat = fieldcatalog[]
    <b>          IT_SORT                        = i_sort</b>
    it_special_groups = gd_tabgroup
    it_events = gt_events
    is_print = gd_prntparams
    i_save = 'X'
    is_variant = z_template
    tables
    t_outtab = it_ekko
    exceptions
    program_error = 1
    others = 2.
    if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    endform. " DISPLAY_ALV_REPORT
    *& Form DATA_RETRIEVAL
    Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
    from ekpo
    into table it_ekko.
    endform. " DATA_RETRIEVAL
    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 = 'EKKO Table Report'.
    append wa_header to t_header.
    clear wa_header.
    Date
    wa_header-typ = 'S'.
    wa_header-key = 'Date: '.
    CONCATENATE sy-datum+6(2) '.'
    sy-datum+4(2) '.'
    sy-datum(4) INTO wa_header-info. "todays date
    append wa_header to t_header.
    clear: wa_header.
    Total No. of Records Selected
    describe table it_ekko lines ld_lines.
    ld_linesc = ld_lines.
    concatenate 'Total No. of Records Selected: ' ld_linesc
    into t_line separated by space.
    wa_header-typ = 'A'.
    wa_header-info = t_line.
    append wa_header to t_header.
    clear: wa_header, t_line.
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = t_header.
    i_logo = 'Z_LOGO'.
    endform.
    FORM USER_COMMAND *
    --> R_UCOMM *
    --> RS_SELFIELD *
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    Check function code
    CASE r_ucomm.
    WHEN '&IC1'.
    Check field clicked on within ALVgrid report
    IF rs_selfield-fieldname = 'EBELN'.
    Read data table, using index of row user clicked on
    READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
    Set parameter ID for transaction screen field
    SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
    Sxecute transaction ME23N, and skip initial data entry screen
    CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
    ENDIF.
    ENDCASE.
    ENDFORM.
    *& Form BUILD_EVENTS
    Build events table
    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_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.
    endform. " BUILD_EVENTS
    *& Form BUILD_PRINT_PARAMS
    Setup print parameters
    form build_print_params.
    gd_prntparams-reserve_lines = '3'. "Lines reserved for footer
    gd_prntparams-no_coverpage = 'X'.
    endform. " BUILD_PRINT_PARAMS
    *& Form END_OF_PAGE
    form END_OF_PAGE.
    data: listwidth type i,
    ld_pagepos(10) type c,
    ld_page(10) type c.
    write: sy-uline(50).
    skip.
    write:/40 'Page:', sy-pagno .
    endform.
    *& Form END_OF_LIST
    form END_OF_LIST.
    data: listwidth type i,
    ld_pagepos(10) type c,
    ld_page(10) type c.
    skip.
    write:/40 'Page:', sy-pagno .
    endform.
    <b>
         clear wa_sort.
         wa_sort-tabname   =  it_ekko
         wa_sort-fieldname = 'EBELN'.
         wa_sort-up        = gc_var_x.
         APPEND wa_sort to i_sort.</b>
    Satya

  • ALV Report

    *& Report  ZALV11                                                      *
    REPORT  zalv11 LINE-SIZE 1023 MESSAGE-ID zz.
    TYPE-POOLS : slis.
    *  T A B L E S    D E C L A R A T I O N S                              *
    TABLES : ce1eg01,
             makt,
             kna1,
             t9zfprct,
             tvkmt.
    *  I N T E R N A L   T A B L E   D E C  L A R A T I O N S              *
    DATA : BEGIN OF itab OCCURS 0,
              paledger TYPE ce1eg01-paledger,   "Currency type for an operating concern
              vrgar    TYPE ce1eg01-vrgar,      "Record Type
              versi    TYPE ce1eg01-versi,      "Plan version (CO-PA)
              perio    TYPE ce1eg01-perio,      "Period/year
              paobjnr  TYPE ce1eg01-paobjnr,    "Profitability Segment no
              pasubnr  TYPE ce1eg01-pasubnr,    "Profitability Segment changes
              belnr    TYPE ce1eg01-belnr,      "Doc no of line item in profit
              posnr    TYPE ce1eg01-posnr,      "Item no in CO-PA line item
              hzdat    TYPE ce1eg01-hzdat,      "Date on which record was created
              usnam    TYPE ce1eg01-usnam,      "Created by
              gjahr    TYPE ce1eg01-gjahr,      "Fiscal year
              perde    TYPE ce1eg01-perde,      "Period
              kunnr    LIKE ce1eg01-kndnr,      "Customer
              artnr    TYPE ce1eg01-artnr,      "Product Number
              frwae    TYPE ce1eg01-frwae,      "Foreign currency key
              kaufn    TYPE ce1eg01-kaufn,      "Sales order number
              kdpos    TYPE ce1eg01-kdpos,      "Item no in Sales order
              bzirk    TYPE ce1eg01-bzirk,      "Sales district
              vkbur    TYPE ce1eg01-vkbur,      "Sales office
              wwsap    TYPE ce1eg01-wwsap,      "Sales Person
              ktgrm    TYPE tvkmt-ktgrm,        "AAG
              land1    TYPE ce1eg01-land1,      "Country Key
              auart    TYPE ce1eg01-auart,      "Sales document type
              kunwe    TYPE ce1eg01-kunwe,      "Ship-to-party
              erlos    TYPE ce1eg01-erlos,                      "Revenue
              absmg    TYPE ce1eg01-absmg,      "Sales qty
              kwfrgr   TYPE ce1eg01-kwfrgr,                     "Freight
              vvdis    TYPE ce1eg01-vvdis,      "Discounts
              zprdgrp  TYPE t9zfprct-zprdgrp,   "Product group
              name1    TYPE kna1-name1,         "Customer Name
              maktx    TYPE makt-maktx,         "Material Description
              vtext    TYPE tvkmt-vtext,        "Description
              name2    TYPE kna1-name1,         "Sales Person Name
           END OF itab.
    DATA : BEGIN OF itab1 OCCURS 0,
              perio    TYPE ce1eg01-perio,      "Period/year5
              kunnr    TYPE ce1eg01-kndnr,      "Customer
              artnr    TYPE ce1eg01-artnr,      "Product Number 21
              kaufn    TYPE ce1eg01-kaufn,      "Sales order number28
              kdpos    TYPE ce1eg01-kdpos,      "Item no in Sales order29
              bzirk    TYPE ce1eg01-bzirk,      "Sales district58
              vkbur    TYPE ce1eg01-vkbur,      "Sales office59
              ktgrm    TYPE tvkmt-ktgrm,                        "AAG 61
              land1    TYPE ce1eg01-land1,      "Country Key 63
              auart    TYPE ce1eg01-auart,      "Sales document type68
              kunwe    TYPE ce1eg01-kunwe,      "Ship-to-party71
              zprdgrp  TYPE t9zfprct-zprdgrp,   "Product group
              paledger TYPE ce1eg01-paledger,   "Currency type for an operating concern
              versi    TYPE ce1eg01-versi,      "Plan version (CO-PA)4
              paobjnr  TYPE ce1eg01-paobjnr,    "Profitability Segment no6
              pasubnr  TYPE ce1eg01-pasubnr,    "Profitability Segment changes7
              belnr    TYPE ce1eg01-belnr,      "Doc no of line item in profit 8
              posnr    TYPE ce1eg01-posnr,      "Item no in CO-PA line item 9
              hzdat    TYPE ce1eg01-hzdat,      "Date on which record was created10
              usnam    TYPE ce1eg01-usnam,      "Created by11
              gjahr    TYPE ce1eg01-gjahr,      "Fiscal year12
              perde    TYPE ce1eg01-perde,                      "Period13
              frwae    TYPE ce1eg01-frwae,      "Foreign currency key23
              wwsap    TYPE ce1eg01-wwsap,      "Sales Person 60
              erlos    TYPE ce1eg01-erlos,                      "Revenue76
              absmg    TYPE ce1eg01-absmg,      "Sales qty85
              kwfrgr   TYPE ce1eg01-kwfrgr,                     "Freight97
              vvdis    TYPE ce1eg01-vvdis,      "Discounts98
              name1    TYPE kna1-name1,         "Customer Name
              maktx    TYPE makt-maktx,         "Material Description
              vtext    TYPE tvkmt-vtext,        "Description
              name2    TYPE kna1-name1,         "Sales Person Name
           END OF itab1.
    DATA : BEGIN OF itab2 OCCURS 0,
              perio    TYPE ce1eg01-perio,      "Period/year
              hzdat    TYPE ce1eg01-hzdat,      "Date on which record was created
              usnam    TYPE ce1eg01-usnam,      "Created by
              gjahr    TYPE ce1eg01-gjahr,      "Fiscal year
              perde    TYPE ce1eg01-perde,      "Period
              kunnr    LIKE ce1eg01-kndnr,      "Customer
              artnr    TYPE ce1eg01-artnr,      "Product Number
              frwae    TYPE ce1eg01-frwae,      "Foreign currency key
              kaufn    TYPE ce1eg01-kaufn,      "Sales order number
              kdpos    TYPE ce1eg01-kdpos,      "Item no in Sales order
              bzirk    TYPE ce1eg01-bzirk,      "Sales district
              vkbur    TYPE ce1eg01-vkbur,      "Sales office
              wwsap    TYPE ce1eg01-wwsap,      "Sales Person
              ktgrm    TYPE tvkmt-ktgrm,        "AAG
              land1    TYPE ce1eg01-land1,      "Country Key
              auart    TYPE ce1eg01-auart,      "Sales document type
              kunwe    TYPE ce1eg01-kunwe,      "Ship-to-party
              erlos    TYPE ce1eg01-erlos,                      "Revenue
              absmg    TYPE ce1eg01-absmg,      "Sales qty
              kwfrgr   TYPE ce1eg01-kwfrgr,                     "Freight
              vvdis    TYPE ce1eg01-vvdis,      "Discounts
              zprdgrp  TYPE t9zfprct-zprdgrp,   "Product group
              name1    TYPE kna1-name1,         "Customer Name
              maktx    TYPE makt-maktx,         "Material Description
              vtext    TYPE tvkmt-vtext,        "Description
              name2    TYPE kna1-name1,         "Sales Person Name
           END OF itab2.
    DATA : BEGIN OF i_kna1 OCCURS 0,
             kunnr LIKE kna1-kunnr,
             name1 LIKE kna1-name1,
           END OF i_kna1.
    DATA : BEGIN OF i_kna2 OCCURS 0,
             kunnr LIKE kna1-kunnr,
             name1 LIKE kna1-name1,
           END OF i_kna2.
    DATA : BEGIN OF i_makt OCCURS 0,
             matnr LIKE makt-matnr,
             maktx LIKE makt-maktx,
           END OF i_makt.
    DATA :  wa_t9zfprct TYPE t9zfprct,
            i_t9zfprct LIKE STANDARD TABLE OF wa_t9zfprct WITH HEADER LINE.
    DATA :  wa_tvkmt TYPE tvkmt,
            i_tvkmt LIKE STANDARD TABLE OF wa_tvkmt WITH HEADER LINE.
    DATA:   wa_itab like itab.
    DATA:   wa_itab2 like itab2.
    * D A T A   D E C L A R A T I O N   F O R   A L V                      *
    TYPE-POOLS: slis. "ALV Declarations
    DATA:  t_fieldcat  TYPE slis_t_fieldcat_alv WITH HEADER LINE,
           tt_fieldcat TYPE slis_t_fieldcat_alv,
           x_fieldcat  TYPE slis_fieldcat_alv.
    DATA : mycat      TYPE slis_t_fieldcat_alv ,
           scat       TYPE slis_fieldcat_alv,
           gt_events  TYPE slis_t_event.
    DATA:  g_repid       LIKE sy-repid,
           gd_layout     TYPE slis_layout_alv,
           gt_sort       TYPE slis_t_sortinfo_alv,
           gd_prntparams TYPE slis_print_alv,
           rs_variant    LIKE disvariant.
    data: p_file TYPE rlgrap-filename value 'TEST3.txt'.
    data: wa_tab2 like tab2.
    * D A T A   D E C L A R A T I O N                                      *
    DATA : t_lineno      LIKE sy-tabix,
           ld_linesc(10) TYPE c.
    DATA : w_erlos TYPE ce1eg01-erlos,
           w_absmg TYPE ce1eg01-absmg,
           w_kwfrgr TYPE ce1eg01-kwfrgr,
           w_vvdis TYPE ce1eg01-vvdis.
    * S E L E C T I O N   S C R E E N                                      *
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: s_curr  FOR ce1eg01-paledger ,
                    s_vrgar FOR ce1eg01-vrgar,
                    s_perio FOR ce1eg01-perio,
                    s_spras FOR makt-spras NO INTERVALS,
                    s_auart FOR ce1eg01-auart,
                    s_kaufn FOR ce1eg01-kaufn.
    PARAMETERS: p_layout TYPE slis_vari.
    SELECTION-SCREEN END OF BLOCK blk1.
    * A T  S E L E C T I O N   S C R E E N                                 *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_layout.
      PERFORM alv_variant_f4 CHANGING p_layout.
    *                    S T A R T   O F    S E L E C T I O N
    START-OF-SELECTION.
      PERFORM data_select.
      DESCRIBE TABLE itab LINES t_lineno.
      IF t_lineno = 0.
        MESSAGE i000 WITH 'NO RECORD FOUND'.
      ELSE.
        PERFORM build_fieldcatalog.
        PERFORM build_layout.
        PERFORM build_events.
        PERFORM build_print_params.
    *    PERFORM calculate.
        PERFORM call_alv.
        PERFORM dataset.
      ENDIF.
    *&      Form  DATA_SELECT
    FORM data_select.
      SELECT paledger vrgar versi perio paobjnr pasubnr belnr posnr hzdat usnam gjahr perde kndnr artnr frwae kaufn kdpos bzirk
             vkbur wwsap ktgrm land1 auart kunwe erlos absmg kwfrgr vvdis
             FROM ce1eg01 INTO TABLE itab
             WHERE paledger IN s_curr
             AND   vrgar IN s_vrgar
             AND   perio IN s_perio
             AND   kaufn IN s_kaufn
             AND   auart IN s_auart.
      IF sy-subrc = 0.
        SELECT matnr maktx FROM makt INTO TABLE i_makt
                              FOR ALL ENTRIES IN itab
                              WHERE matnr = itab-artnr
                              AND   spras IN s_spras.
    *  Reading sales person
        SELECT kunnr name1 FROM kna1 INTO TABLE i_kna1
                             FOR ALL ENTRIES IN itab
                             WHERE kunnr = itab-kunnr.
    *  Reading ship to party
        SELECT kunnr name1 FROM kna1 INTO TABLE i_kna2
                             FOR ALL ENTRIES IN itab
                             WHERE kunnr = itab-wwsap. "kunwe.
        SELECT * FROM t9zfprct INTO TABLE i_t9zfprct
                             FOR ALL ENTRIES IN itab
                             WHERE ktgrm = itab-ktgrm.
        SELECT * FROM tvkmt INTO TABLE i_tvkmt
                             FOR ALL ENTRIES IN itab
                             WHERE ktgrm = itab-ktgrm.
        SORT i_kna1 BY kunnr.
        SORT i_kna2 BY kunnr.
        SORT i_t9zfprct BY ktgrm.
        SORT i_tvkmt BY ktgrm.
        LOOP AT itab.
          MOVE-CORRESPONDING itab TO itab1.
          READ TABLE i_kna1 WITH KEY kunnr = itab-kunnr BINARY SEARCH.
          IF sy-subrc = 0.
            itab1-name1 = i_kna1-name1.
          ENDIF.
          READ TABLE i_kna2 WITH KEY kunnr = itab-wwsap BINARY SEARCH.
          IF sy-subrc = 0.
            itab1-name2 = i_kna2-name1.
          ENDIF.
          READ TABLE i_t9zfprct WITH KEY ktgrm = itab-ktgrm BINARY SEARCH.
          IF sy-subrc = 0.
            itab1-zprdgrp = i_t9zfprct-zprdgrp.
          ENDIF.
          READ TABLE i_tvkmt WITH KEY ktgrm = itab-ktgrm BINARY SEARCH.
          IF sy-subrc = 0.
            itab1-ktgrm = i_tvkmt-ktgrm.
            itab1-vtext = i_tvkmt-vtext.
          ENDIF.
          READ TABLE i_makt WITH KEY matnr = itab-artnr.
          IF sy-subrc = 0.
            itab1-maktx = i_makt-maktx.
          ENDIF.
          APPEND itab1.
          CLEAR itab1.
        ENDLOOP.
        REFRESH itab.
        SORT itab1 BY perio kunnr artnr kaufn kdpos bzirk vkbur ktgrm land1 auart kunwe zprdgrp paledger.
        CLEAR : w_erlos ,w_absmg ,w_kwfrgr ,w_vvdis.
        LOOP AT itab1.
          MOVE-CORRESPONDING itab1 TO itab.
          SHIFT itab-wwsap LEFT DELETING LEADING '0'.
          SHIFT itab-kunnr LEFT DELETING LEADING '0'.
          SHIFT itab-kaufn LEFT DELETING LEADING '0'.
          SHIFT itab-kunwe LEFT DELETING LEADING '0'.
          SHIFT itab-belnr LEFT DELETING LEADING '0'.
          w_erlos  = w_erlos  + itab1-erlos.
          w_absmg  = w_absmg  + itab1-absmg.
          w_kwfrgr = w_kwfrgr + itab1-kwfrgr.
          w_vvdis  = w_vvdis  + itab1-vvdis.
          AT END OF paledger.
            MOVE : w_erlos  TO itab-erlos,
                   w_absmg  TO itab-absmg,
                   w_kwfrgr TO itab-kwfrgr,
                   w_vvdis  TO itab-vvdis.
            APPEND itab.
            CLEAR itab.
            CLEAR : w_erlos ,w_absmg ,w_kwfrgr ,w_vvdis.
          ENDAT.
        ENDLOOP.
      ENDIF.
    clear itab.
    loop at itab.
    move-corresponding itab to itab2.
    append itab2.
    endloop.
    ENDFORM.                    "data_select
    *&      Form  build_fieldcatalog
    *       Fill field catalog and sort catelog with output fields
    FORM build_fieldcatalog.
    *  PERFORM append_fldcat USING 'PALEDGER' 'ITAB' 'Currency type'                    01 .
      PERFORM append_fldcat USING 'ZPRDGRP'  'ITAB' 'Product group'                    01 .
      PERFORM append_fldcat USING 'KUNNR'    'ITAB' 'Customer'                         02 .
      PERFORM append_fldcat USING 'NAME1'    'ITAB' 'Customer Name'                    03 .
      PERFORM append_fldcat USING 'ARTNR'    'ITAB' 'Product Number'                   04 .
      PERFORM append_fldcat USING 'MAKTX'    'ITAB' 'Material Description'             05 .
      PERFORM append_fldcat USING 'KTGRM'    'ITAB' 'AAG'                              06 .
      PERFORM append_fldcat USING 'VTEXT'    'ITAB' 'Description'                      07 .
      PERFORM append_fldcat USING 'WWSAP'    'ITAB' 'Sales Person'                     08 .
      PERFORM append_fldcat USING 'NAME2'    'ITAB' 'Sales Person Name'                09 .
      PERFORM append_fldcat USING 'VKBUR'    'ITAB' 'Sales office'                     10 .
      PERFORM append_fldcat USING 'LAND1'    'ITAB' 'Country Key'                      11 .
      PERFORM append_fldcat USING 'KAUFN'    'ITAB' 'Sales order number'               12 .
      PERFORM append_fldcat USING 'KDPOS'    'ITAB' 'Item no in Sales order'           13 .
      PERFORM append_fldcat USING 'PERIO'    'ITAB' 'Period/year'                      14 .
      PERFORM append_fldcat USING 'HZDAT'    'ITAB' 'Date on which record was created' 15 .
      PERFORM append_fldcat USING 'ABSMG'    'ITAB' 'Sales qty'                        16 .
      PERFORM append_fldcat USING 'ERLOS'    'ITAB' 'Revenue'                          17 .
      PERFORM append_fldcat USING 'VVDIS'    'ITAB' 'Discounts'                        18 .
      PERFORM append_fldcat USING 'KWFRGR'   'ITAB' 'Freight'                          19 .
      PERFORM append_fldcat USING 'FRWAE'    'ITAB' 'Foreign currency key'             20 .
      PERFORM append_fldcat USING 'AUART'    'ITAB' 'Sales document type'              21 .
      PERFORM append_fldcat USING 'KUNWE'    'ITAB' 'Ship-to-party'                    22 .
      PERFORM append_fldcat USING 'BZIRK'    'ITAB' 'Sales district'                   23 .
    *  PERFORM append_fldcat USING 'BELNR'    'ITAB' 'Doc no of line item in profit'    24 .
    *  PERFORM append_fldcat USING 'VERSI'    'ITAB' 'Plan version (CO-PA)'             25 .
    *  PERFORM append_fldcat USING 'PAOBJNR'  'ITAB' 'Profitability Segment no'         26 .
    *  PERFORM append_fldcat USING 'PASUBNR'  'ITAB' 'Profitability Segment changes'    27 .
    *  PERFORM append_fldcat USING 'POSNR'    'ITAB' 'Item no in CO-PA line item'       28 .
      PERFORM append_fldcat USING 'USNAM'    'ITAB' 'Created by'                       29 .
      PERFORM append_fldcat USING 'GJAHR'    'ITAB' 'Fiscal year'                      30 .
      PERFORM append_fldcat USING 'PERDE'    'ITAB' 'Period'                           31 .
    ENDFORM.                    "build_T_FIELDCAT
    *&      Form  build_layout
    FORM build_layout .
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    ENDFORM.                    " build_layout
    *&      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_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.
      READ TABLE gt_events
           WITH KEY name = slis_ev_user_command INTO ls_event.
      IF sy-subrc = 0.
        ls_event-name = 'USER_COMMAND'.
        ls_event-form = 'USER_COMMAND'.
        APPEND ls_event TO gt_events.
      ENDIF.
    ENDFORM.                    " build_events
    *&      Form  BUILD_PRINT_PARAMS
    *       Setup print parameters
    FORM build_print_params.
      gd_prntparams-reserve_lines = '3'.   "Lines reserved for footer
      gd_prntparams-no_coverpage = 'X'.
    ENDFORM.                    " BUILD_PRINT_PARAMS
    *&      Form  call_alv
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM call_alv .
      g_repid = sy-repid.
      rs_variant-variant  = p_layout.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = g_repid
          i_callback_top_of_page  = 'TOP-OF-PAGE'  "see FORM
          i_callback_user_command = 'USER_COMMAND'
          is_layout               = gd_layout
          it_fieldcat             = t_fieldcat[]
          it_events               = gt_events
          is_print                = gd_prntparams
          i_save                  = 'X'
          is_variant              = rs_variant
        TABLES
          t_outtab                = itab2
        EXCEPTIONS
          program_error           = 1
          OTHERS                  = 2.
    ENDFORM.                    " call_alv
    * 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.
    * Title
      wa_header-typ = 'H'.
      wa_header-info = 'PA Sales Book Summary report'.
      APPEND wa_header TO t_header.
      CLEAR wa_header.
    * Date
      wa_header-typ = 'S'.
      wa_header-key = 'Date: '.
      CONCATENATE sy-datum+6(2) '.'
      sy-datum+4(2) '.'
      sy-datum(4) INTO wa_header-info. "todays date
      APPEND wa_header TO t_header.
      CLEAR: wa_header.
    * Total No. of Records Selected
      DESCRIBE TABLE itab LINES t_lineno.
      ld_linesc = t_lineno.
      CONCATENATE 'Total No. of Records Selected: ' ld_linesc
                        INTO t_line SEPARATED BY space.
      wa_header-typ  = 'A'.
      wa_header-info = t_line.
      APPEND wa_header TO t_header.
      CLEAR: wa_header, t_line.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = t_header.
    ENDFORM.                    "top-of-page
    *&      Form  END_OF_PAGE
    FORM end_of_page.
      DATA: listwidth TYPE i,
            ld_pagepos(10) TYPE c,
            ld_page(10)    TYPE c.
      WRITE: sy-uline(50).
      SKIP.
      WRITE:/40 'Page:', sy-pagno .
    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.
      SKIP.
      WRITE:/40 'Page:', sy-pagno .
    ENDFORM.                    "END_OF_LIST
    *&      Form  user_command
    *       text
    *      -->R_UCOMM    text
    *      -->RS_SELFIELDtext
    FORM user_command USING r_ucomm LIKE sy-ucomm
                            rs_selfield TYPE slis_selfield.
      IF r_ucomm = '&IC1'.
        CASE rs_selfield-fieldname.
          WHEN 'KUNNR'.
            SET PARAMETER ID 'KUN' FIELD rs_selfield-value.
            CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
        ENDCASE.
      ENDIF.
    ENDFORM.                    "user_command
    *&      Form  append_fldcat
    *       text
    FORM append_fldcat USING par_fldname par_tabname par_seltext pos.
      t_fieldcat-tabname      = par_tabname.
      t_fieldcat-fieldname    = par_fldname  .
    *  t_fieldcat-seltext_s    = par_seltext.
    *  t_fieldcat-seltext_m    = par_seltext.
      t_fieldcat-seltext_l    = par_seltext.
      t_fieldcat-reptext_ddic = par_seltext.
      t_fieldcat-col_pos      = pos.
    *  t_fieldcat-just         = 'R'.
      t_fieldcat-lzero = ' '.
      APPEND t_fieldcat.
    ENDFORM.                    " append_fldcat
    *&      Form  ALV_VARIANT_F4
    *       text
    *      -->PA_VARI    text
    FORM alv_variant_f4 CHANGING p_layout.
      DATA nof4 TYPE c.
      CLEAR nof4.
      LOOP AT SCREEN.
        IF screen-name = 'P_LAYOUT'.
         IF screen-input = 0.
            nof4 = 'X'.
          ENDIF.
        ENDIF.
      ENDLOOP.
      rs_variant-report   = sy-repid.
      rs_variant-username = sy-uname.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
        EXPORTING
          is_variant = rs_variant
          i_save     = 'A'
        IMPORTING
          es_variant = rs_variant
        EXCEPTIONS
          OTHERS     = 1.
      IF sy-subrc = 0 AND nof4 EQ space.
        p_layout = rs_variant-variant.
      ENDIF.
      ENDFORM.
    *&      Form  dataset
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form dataset .
    OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    *--- Display error messages if any.
    IF sy-subrc NE 0.
    MESSAGE e001(zsd_mes).
    EXIT.
    ELSE.
    *---Data is downloaded to the application server file path
    LOOP AT itab2.
    TRANSFER itab2 TO p_file.
    ENDLOOP.
    ENDIF.
    *--Close the Application server file (Mandatory).
    CLOSE DATASET p_file.
    endform.                    " dataset
    When I execute this code and move back it shows the following error.I want to move the output to p_file in application server.Plz suggest what to do.
    Only character-type data objects are supported at the argument
    position "f" for the statement
      "TRANSFER f TO ...".
    In this case, the operand "f" has the non-character-type "u". The
    current program is flagged as a Unicode program. In the Unicode context,
    type X fields are seen as non-character-type, as are structures that
    contain non-character-type components.

    Some of the fields in TAB2 may not be text. Open the dataset in binary mode and see if that resolves the issue.
    If you must have the file in text mode, then copy the header line to a structure containing just text fields and then transfer to the dataset.

  • Edit cells in alv report

    hi,
    i have used FM like
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
          EXPORTING
            I_CALLBACK_PROGRAM = L_REPID
            I_CALLBACK_USER_COMMAND= 'FRM_USER_COMMAND '
            IT_FIELDCAT        = IT_FIELDCAT
            it_events          = lt_evts
            I_TABNAME_HEADER   = G_TABNAME_HEADER
            I_TABNAME_ITEM     = G_TABNAME_ITEM
            IS_KEYINFO         = GS_KEYINFO
          TABLES
            T_OUTTAB_HEADER    = IT_HEADER
            T_OUTTAB_ITEM      = IT_ITEM
          EXCEPTIONS
            PROGRAM_ERROR      = 1
            OTHERS             = 2.
    form frm_user_command using r_ucomm     like sy-ucomm
                                          rs_selfield type slis_selfield.
                                                                "#EC *
      data: l_event type lvc_fname.               
    case r_ucomm.
        when 'EDIT'.
        perform switch_edit_mode.
    endcase.
    endform.
    FORM switch_edit_mode.
    IF gr_grid_d1001->is_ready_for_input( ) eq 0.
    set edit enabled cells ready for input
        CALL METHOD gr_grid_d1001->set_ready_for_input
                         EXPORTING i_ready_for_input = 1.
      ELSE.
    lock edit enabled cells against input
        CALL METHOD gr_grid_d1001->set_ready_for_input
                        EXPORTING i_ready_for_input = 0.
      ENDIF.
    ENDFORM.                               " SWITCH_EDIT_MODE
    here i have a doubt like in this  gr_grid_d1001 was empty.please give some idea how to make the cells editable?
    i have also passed edit = 'X'. in fieldcatalog

    Hi Priya,
    Check out the sample program:
    REPORT  ZDEMO_ALVGRID_EDIT                 .
    TABLES:     ekko.
    TYPE-POOLS: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
      field_style  TYPE lvc_t_styl, "FOR DISABLE
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.
    DATA: it_fieldcat TYPE lvc_t_fcat,     "slis_t_fieldcat_alv WITH HEADER LINE,
          wa_fieldcat TYPE lvc_s_fcat,
          gd_tab_group TYPE slis_t_sp_group_alv,
          gd_layout    TYPE lvc_s_layo,     "slis_layout_alv,
          gd_repid     LIKE sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM set_specific_field_attributes.
      PERFORM build_fieldcatalog.
      PERFORM build_layout.
      PERFORM display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
    *       Build Fieldcatalog for ALV Report
    FORM build_fieldcatalog.
      wa_fieldcat-fieldname   = 'EBELN'.
      wa_fieldcat-scrtext_m   = 'Purchase Order'.
      wa_fieldcat-col_pos     = 0.
      wa_fieldcat-outputlen   = 10.
      wa_fieldcat-emphasize   = 'X'.
      wa_fieldcat-key         = 'X'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'EBELP'.
      wa_fieldcat-scrtext_m   = 'PO Item'.
      wa_fieldcat-col_pos     = 1.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'STATU'.
      wa_fieldcat-scrtext_m   = 'Status'.
      wa_fieldcat-col_pos     = 2.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'AEDAT'.
      wa_fieldcat-scrtext_m   = 'Item change date'.
      wa_fieldcat-col_pos     = 3.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'MATNR'.
      wa_fieldcat-scrtext_m   = 'Material Number'.
      wa_fieldcat-col_pos     = 4.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'MENGE'.
      wa_fieldcat-scrtext_m   = 'PO quantity'.
      wa_fieldcat-col_pos     = 5.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'MEINS'.
      wa_fieldcat-scrtext_m   = 'Order Unit'.
      wa_fieldcat-col_pos     = 6.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'NETPR'.
      wa_fieldcat-scrtext_m   = 'Net Price'.
      wa_fieldcat-edit        = 'X'. "sets whole column to be editable
      wa_fieldcat-col_pos     = 7.
      wa_fieldcat-outputlen   = 15.
      wa_fieldcat-datatype     = 'CURR'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'PEINH'.
      wa_fieldcat-scrtext_m   = 'Price Unit'.
      wa_fieldcat-col_pos     = 8.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
    *       Build layout for ALV grid report
    FORM build_layout.
    * Set layout field for field attributes(i.e. input/output)
      gd_layout-stylefname = 'FIELD_STYLE'.
      gd_layout-zebra             = 'X'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
    *       Display report using ALV grid
    FORM display_alv_report.
      gd_repid = sy-repid.
    *  call function 'REUSE_ALV_GRID_DISPLAY'
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
           EXPORTING
                i_callback_program      = gd_repid
    *            i_callback_user_command = 'USER_COMMAND'
                is_layout_lvc               = gd_layout
                it_fieldcat_lvc             = it_fieldcat
                i_save                  = 'X'
           TABLES
                t_outtab                = it_ekko
           EXCEPTIONS
                program_error           = 1
                OTHERS                  = 2.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
    *       Retrieve data form EKPO table and populate itab it_ekko
    FORM data_retrieval.
      SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
       UP TO 10 ROWS
        FROM ekpo
        INTO  CORRESPONDING FIELDS OF TABLE it_ekko.
    ENDFORM.                    " DATA_RETRIEVAL
    *&      Form  set_specific_field_attributes
    *       populate FIELD_STYLE table with specific field attributes
    form set_specific_field_attributes .
      DATA ls_stylerow TYPE lvc_s_styl .
      DATA lt_styletab TYPE lvc_t_styl .
    * Populate style variable (FIELD_STYLE) with style properties
    * The NETPR field/column has been set to editable in the fieldcatalog...
    * The following code sets it to be disabled(display only) if 'NETPR'
    * is gt than 10.
      LOOP AT it_ekko INTO wa_ekko.
        IF wa_ekko-netpr GT 10.
          ls_stylerow-fieldname = 'NETPR' .
          ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
                                                 "set field to disabled
          APPEND ls_stylerow  TO wa_ekko-field_style.
          MODIFY it_ekko FROM wa_ekko.
        ENDIF.
      ENDLOOP.
    endform.                    " set_specific_field_attributes
    Thanks,
    Chidanand

  • Field Catolgue in alv grid display

    Hi Abapers,
    I need to display the percentage rows with decimals and other rows without decimal . Is their any option in field catalog to do like this. Or tell me any other alternative to achieve this.
    sno  total     col1      col2      col3
    1      220       100        20       100
    2      320      120         50        150
    tot    540       220        70         250
    per               40.74     1.87  and so on
    or ,
    I have two different internal tables how can i put it in one field catalog to pass it to alv grid display.
    Regards,
    Priya

    Don't   do  total  by your  self  in the Pogram.
    in the   Fieldcatalog  there is an Attribute which will do total  &  Average .
    Enable it so that  from one  internal  table   data   it self it will do  good.
    example program
    Below is an example ABAP program which will populate a simple internal table(it_ekpo) with data and
    display it using the basic ALV grid functionality(including column total). The example details the main
    sections of coding required to implement the ALV grid functionality:
                             Data declaration
                             Data retrieval
                             Build fieldcatalog
                             Build layout setup
    REPORT  zdemo_alvgrid                 .
    TABLES:     ekko.
    type-pools: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
    *       Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
    * There are a number of ways to create a fieldcat.
    * For the purpose of this example i will build the fieldcatalog manualy
    * by populating the internal table fields individually and then
    * appending the rows. This method can be the most time consuming but can
    * also allow you  more control of the final product.
    * Beware though, you need to ensure that all fields required are
    * populated. When using some of functionality available via ALV, such as
    * total. You may need to provide more information than if you were
    * simply displaying the result
    *               I.e. Field type may be required in-order for
    *                    the 'TOTAL' function to work.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    *  fieldcatalog-do_sum      = 'X'.
    *  fieldcatalog-no_zero     = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15. 
      fieldcatalog-do_sum      = 'X'.        "Display column total
      fieldcatalog-datatype     = 'CURR'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
    *       Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    *  gd_layout-totals_only        = 'X'.
    *  gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
    *                                         "click(press f2)
    *  gd_layout-zebra             = 'X'.
    *  gd_layout-group_change_edit = 'X'.
    *  gd_layout-header_text       = 'helllllo'.
    endform.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
    *       Display report using ALV grid
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
    *            i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
    *            i_callback_user_command = 'USER_COMMAND'
    *            i_grid_title           = outtext
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
    *            it_special_groups       = gd_tabgroup
    *            IT_EVENTS                = GT_XEVENTS
                i_save                  = 'X'
    *            is_variant              = z_template
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
    *       Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
      from ekpo
      into table it_ekko.
    endform.                    " DATA_RETRIEVAL
    gowri
    Message was edited by:
            Gowri Krishna

Maybe you are looking for

  • Bug with Access connexions with Windows vista Pro SP2

    I wish to use Thinkvantage Access connexions on my Lenovo G550. I previously used Acces connexions on Thinkpad and i like this tool. I have installed Access connexions but I have troubleshooting beause my computer runs uner Windows vista Pro SP2. Is

  • PDF resolution problem with Pagemaker 7.0

    Putting together the school yearbook, I need to create hi res pdfs for the printing company. Certain pictures appear fine when printed from the pagemaker document, but appear very low res when the page is made into a pdf.  Any help would be appreciat

  • TS2634 Why won't my iPad mini work with bose series 2 dock?

    Doesn't work with pin adaptor and now doesn't work by using work by plugging into the audio in either. How can I use my new iPad with bose series 2?

  • Pacman on cygwin

    In another post I had mentioned that I don't have a linux machine and my knickers are getting in a bunch.... so I installed cygwin at work to mess with. Now, just for kicks I was going to try and compile pacman on cygwin.... I understand that none of

  • TS1362 How do I adjust A/V controls on Quicktime?

    How do I adjust A/V levels on quicktime?  All levels are at zero.  QT will not allow me to reset levels.