ALV - NO_ZERO

Hi All,
I need to generate an ALV report, but the lines should be listed sometimes with zeros (when the value is zero) and sometimes with blanks. I have another column to check if it should list blank or zero.
Follow an example:
" "     this line it should list 'Value' field with the BLANKS
0,00     this line it should list 'Value' field with the ZEROS
Thanks in advance,
Janete

We use Crystal Reports since a couple of years now with satisfaction. Only one question:
We want to show all projects with hours (also zero) but we can see only the projects where hours are been booked.
It makes sense but we must manually check the projects where hours have been booked but perhaps must be booked (sorry for my bad grammatical English)
Is there a code/formula where we can also see the projects where the hours supposed to be u201C0u201D (zero).
Kind regards,
Ivonne

Similar Messages

  • Oops alv no_zero and 'word wrap' in fieldcatalog

    Hi All,
    I have 2 queations
    1)  Can I have word wrap option in alv, ie any option to display the same cell information in multiple lines and
    2) I am trying to use no_zero of fieldcatalog as shown in below code
        wa_billets_fcat-fieldname = 'ACTUAL_QTY'.
        wa_billets_fcat-inttype  = 'C'.
        wa_billets_fcat-outputlen = '13'.
        wa_billets_fcat-coltext   = 'Actual Qty'.
        wa_billets_fcat-seltext   = 'Actual Qty'.
        wa_billets_fcat-edit      = 'X'.
        wa_billets-no_zero         = 'X'.
        APPEND wa_billets_fcat TO billet_fcat.
        CLEAR wa_billets_fcat.
    but it is giving the error as bellow
    Field "WA_BILLETS-NO_ZERO" is unknow. it is neither is one of the specified tables nor defined by a 'DATA" statement.
    Please help me
    Thanks in advance.

    hi check this....
    wa_billets_fcat-fieldname = 'ACTUAL_QTY'.
    wa_billets_fcat-reptext_ddic = 'Actual quantity'.
    wa_billets_fcat-no_zero = 'X'.
    APPEND wa_billets_fcat TO billet_fcat.
    CLEAR wa_billets_fcat.
    hope this will help for the word wrap..
    http://www.sap-img.com/fu037.htm
    regards,
    venkat
    Edited by: venkat  appikonda on May 10, 2008 4:46 PM

  • How to suppress zeroes in table control?

    friends,
        by default, i am getting the initial values (zeros 0.00 for qty. fields) for the fields that am displaying in table control...how to suppress the zeroes (fields for which no values are there) in table control? any option like we have in alv (no_zeros) avbl? thanks all

    u are getting 0.00  bcos these are the field properties , so u have to create a new field for ur requirement.
    check the field attributes in SE51,
    DICT = DEC Format.
    Program = No Check for leading ZEROS.
    Regards
    Prabhu
    Message was edited by:
            Prabhu Peram

  • No_zero attribute in ALV

    Is there a way to set the no_zero attribute just for a particular row?
    The requirement is just to display blank when the value of the field is zero but just for the first two rows.  How can I do this?  Thanks.

    Hi Giscard Rous ,
    <b>1</b>.
    NO_ZERO attribute is there.If u set that for Column,that is applicable for Entire COLUMN not for ROW.
    <b>2</b>.
    Better to set W_FIELDCATALOG-NO_ZERO = 'X' for all Columns while Fieldcatalog table is being built.So that If entire has ZERO values ,It does not display ZERO's.
    <b>3</b>.
    If u r using REUSE_ALV_FIELDCATALOG_MERGE to build Fieldcatalog table ,Modify that table by setting
    W_FIELDCATALOG-NO_ZERO = 'X' .
    I think that u can solve like that
    <b>Thanks,
    Venkat.O</b>

  • 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 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

  • Field catalog for internal table in ALV

    In my program the internal table consists many fields from various tables and structure doesn't belong to a single data table.
    In order to get output in ALV grid following FM has been used
    REUSE_ALV_GRID_DISPLAY
    for field catalog the fields are defined specifically.
      l_fieldcat-fieldname  = 'VBELN'.
      l_fieldcat-outputlen  = 10.
      l_fieldcat-seltext_l  = 'Billing doc'.
      l_fieldcat-no_zero = 'X'.
      l_fieldcat-hotspot = 'X'.
      append l_fieldcat to p_fieldtab.
    ..............and so on for all the fields.
    Just wanted to know is there any other method to display all the fields of this internal table automatically so each field is not specified specifically.
    anya

    Hi
    Try this instead:
    *& Form  create_fieldcatalog
    * Create a field catalogue from any internal table
    *      -->PT_TABLE     Internal table
    *      -->PT_FIELDCAT  Field Catalogue
    FORM  create_fieldcatalog
           USING     pt_table     TYPE ANY TABLE
           CHANGING  pt_fieldcat  TYPE lvc_t_fcat.
      DATA:
        lr_tabdescr TYPE REF TO cl_abap_structdescr
      , lr_data     TYPE REF TO data
      , lt_dfies    TYPE ddfields
      , ls_dfies    TYPE dfies
      , ls_fieldcat TYPE lvc_s_fcat
      CLEAR pt_fieldcat.
      CREATE DATA lr_data LIKE LINE OF pt_table.
      lr_tabdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ).
      lt_dfies = cl_salv_data_descr=>read_structdescr( lr_tabdescr ).
      LOOP AT lt_dfies
      INTO    ls_dfies.
        CLEAR ls_fieldcat.
        MOVE-CORRESPONDING ls_dfies TO ls_fieldcat.
        APPEND ls_fieldcat TO pt_fieldcat.
      ENDLOOP.
    ENDFORM.                    "create_fieldcatalog

  • Problem in ALV Tree

    Hello Friends,
    I am using ALV Tree to display a report.
    In this report for a particular input.2 nodes are cerated.
    On clicking on the 2nd node the details for the same are shown .
    However on clicking the 1st node , the system automatically logs off closing all the SAP sessions and even the SAP Logon pad.
    Suppose i am on executing the program on development server,even the sessions of test server are closed.
    Can anyone please help me in this.....
    its a bit urgent.
    i am attaching my code for reference.
    REPORT  ZPRPROUTOPERATIONS1                     .
    tables : mapl,t001w,zroutpromast.
    TYPE-POOLS: slis,kkblo.
    include <icon>.
    data : it_zrouteledtl like zrouteledtl occurs 0 with header line.
    data : it_zeledtl type zeledtl occurs 0 with header line.
    data : conv_sec(5) type c value '0.036'.
    types : begin of it_output2,
           Srno like zrouteledtl-srno,
           srno1 type p decimals 8,
           subgid like zrouteledtl-subgid,
           subopn like zrouteledtl-subopn,
           movetype type zeledtl-movetype,
           DESC type zeledtl-description,
           Add_desc like zrouteledtl-DESCRIPTION,
           Freq type p decimals 2,
           div_freq type p decimals 2,
           men type p decimals 2,
           offline(3),
           CT type p decimals 2,
           CW type p decimals 2,
           Ideal_ct type p decimals 2,
           ideal_cw type p decimals 2,
           A_trg type p decimals 2,
           b_Trg type p decimals 2,
           g_Trg type p decimals 2,
           p_Trg type p decimals 2,
           m_Trg type p decimals 2,
           t_Trg type p decimals 2,
           i_Trg type p decimals 2,
           Autocycle type p decimals 2,
           online_time type p decimals 2,
           offline_time type p decimals 2,
           online_p_time type p decimals 2,
           offline_p_time type p decimals 2,
           end of it_output2.
    *types : begin of it_output3,
          Srno like zrouteledtl-srno,
          mop_gid like zroutdetails-MOP_GID,
          MOp_opn like zroutdetails-MOP_OPN,
          sub_gid like zpromast-subgid,
          subopn like zpromast-subopn,
          DESC like zpromast-description,
          Add_desc like zroutdetails-ADD_INFO,
          Freq type p decimals 2,
          batch type p decimals 2,
          mix type p decimals 2,
          offline(3),
          CT type p decimals 2,
          CW type p decimals 2,
          Ideal_ct type p decimals 2,
          ideal_cw type p decimals 2,
          A_trg type p decimals 2,
          b_Trg type p decimals 2,
          g_Trg type p decimals 2,
          p_Trg type p decimals 2,
          m_Trg type p decimals 2,
          t_Trg type p decimals 2,
          i_Trg type p decimals 2,
          Autocycle type p decimals 2,
          online_time type p decimals 2,
          offline_time type p decimals 2,
          online_p_time type p decimals 2,
          offline_p_time type p decimals 2,
          end of it_output3.
    data : it_output type it_output2 occurs 0 with header line,
           it_output1 type it_output2 occurs 0 with header line,
           it_emptytab type standard table of it_output2 INITIAL SIZE 0.
    data : a_trg type f,b_trg type f,g_trg type f,p_trg type f,m_trg type f,t_trg type f,i_trg type f,
           autocycle type f,online_p_time type f,offline_p_time type f.
    data : ch1 type c,ch2.
    DATA: ok_code like sy-ucomm,           "OK-Code
          save_ok like sy-ucomm.
    data : ct_fieldcat type KKBLO_T_FIELDCAT.
    *ALV data declarations
    DATA: fieldcatalog  TYPE lvc_t_fcat WITH HEADER LINE.
    DATA: gd_fieldcat   TYPE lvc_t_fcat,
          gd_tab_group  TYPE slis_t_sp_group_alv,
          gd_layout     TYPE slis_layout_alv.
    *ALVtree data declarations
    CLASS cl_gui_column_tree DEFINITION LOAD.
    CLASS cl_gui_cfw DEFINITION LOAD.
    DATA: gd_tree             TYPE REF TO cl_gui_alv_tree,
          gd_hierarchy_header TYPE treev_hhdr,
          gd_report_title     TYPE slis_t_listheader,
          gd_logo             TYPE sdydo_value,
          gd_variant          TYPE disvariant.
    *Create container for alv-tree
    DATA: gd_tree_container_name(30) TYPE c,
          gd_custom_container        TYPE REF TO cl_gui_custom_container.
    *data mr_toolbar type ref to cl_gui_toolbar.  "Add to top include
    selection-screen begin of block start with frame title text-001.
    select-options: p_gid for zroutpromast-mop_gid obligatory no-extension no intervals,
                    p_opn for zroutpromast-mop_opn obligatory no-extension no intervals,
                    p_werks for t001w-werks obligatory no-extension no intervals.
    selection-screen end of block start.
    *selection-screen begin of block detail with frame title text-002.
    *parameter : radio1 radiobutton group dept default 'X',
               radio2 radiobutton group dept.
    *selection-screen end of block detail.
    include ZTEST_TOOLBAR_EVENT_RECEIVER.
    start-of-selection.
    ALVtree setup data
      PERFORM data_retrieval.
      PERFORM build_fieldcatalog.
      PERFORM build_layout.
      PERFORM build_hierarchy_header CHANGING gd_hierarchy_header.
      PERFORM build_report_title USING gd_report_title gd_logo.
      PERFORM build_variant.
    Display ALVtree report
      call screen 100.
    *&      Form  data_retrieval
          text
    -->  p1        text
    <--  p2        text
    FORM data_retrieval .
      select * from zrouteledtl into table it_zrouteledtl where mop_gid in p_gid and
                                                                  mop_opn in p_opn
                                                                  and werks in p_werks.
      if sy-subrc ne 0.
      message i001(0) with 'No Records Found'.
      leave program.
      endif.
      select * from zeledtl into table it_zeledtl for all entries in it_zrouteledtl
                                                          where subgid = it_zrouteledtl-subgid
                                                          and subopn = it_zrouteledtl-subopn
                                                          and werks = it_zrouteledtl-werks.
      loop at it_zeledtl.
        it_output1-srno = it_zeledtl-srno.
        it_output1-srno1 = it_zeledtl-srno.
        it_output1-subgid = it_zeledtl-subgid.
        it_output1-subopn = it_zeledtl-subopn.
        it_output1-movetype = it_zeledtl-movetype.
        it_output1-desc = it_zeledtl-DESCRIPTION.
        it_output1-freq = it_zeledtl-frequency.
        it_output1-div_freq = it_zeledtl-div_freq.
        it_output1-men = it_zeledtl-men.
        it_output1-offline = it_zeledtl-offline1.
        it_output1-ct = it_zeledtl-cy_time * conv_sec.
        it_output1-cw = it_zeledtl-wc_time * conv_sec.
        it_output1-ideal_ct = it_zeledtl-cy_trg_time * conv_sec.
        it_output1-ideal_cw = it_zeledtl-wc_trg_time * conv_sec.
        if it_zeledtl-men = 0.
        it_output-autocycle = it_zeledtl-cy_time * conv_sec.
        endif.
        if it_zeledtl-men ne 0 and it_zeledtl-offline1 eq 'NO'
              and ( it_zeledtl-movetype eq 'A' or it_zeledtl-movetype eq 'C' ).
        case it_zeledtl-movetype.
              when 'A'.
                if it_zeledtl-SIM_AUTO = 'TRUE'.
                  ch2 = 0.
                else.
                  ch2 = 1.
                endif.
                it_output-online_p_time = ( it_zeledtl-autocycle * ch2 * conv_sec ) * it_zeledtl-frequency / it_zeledtl-div_freq.
              when 'C'.
                if it_zeledtl-sim5 = 'TRUE'.
                  ch1 = 0.
                else.
                  ch1 = 1.
                endif.
                it_output-online_p_time =  ( it_zeledtl-index5 * it_zeledtl-par_freq5 * ch1
    it_zeledtl-frequency * 10 ) / it_zeledtl-div_freq  .
            endcase.
          elseif it_zeledtl-men ne 0 and it_zeledtl-offline1 eq 'YES'
                  and ( it_zeledtl-movetype eq 'A' or it_zeledtl-movetype eq 'C' ).
            case it_zeledtl-movetype.
              when 'A'.
                if it_zeledtl-SIM_AUTO = 'TRUE'.
                  ch2 = 0.
                else.
                  ch2 = 1.
                endif.
                it_output1-offline_p_time = ( it_zeledtl-autocycle * ch2 * conv_sec ) * it_zeledtl-frequency / it_zeledtl-div_freq.
              when 'C'.
                if it_zeledtl-sim5 = 'TRUE'.
                  ch1 = 0.
                else.
                  ch1 = 1.
                endif.
                it_output-offline_p_time =  ( it_zeledtl-index5 * it_zeledtl-par_freq5 * ch1
    it_zeledtl-frequency * 10 ) / it_zeledtl-div_freq  .
            endcase.
          endif.
          it_output1-a_trg = it_zeledtl-TARGET_A * conv_sec.
          it_output1-b_trg = it_zeledtl-target_B * conv_sec.
          it_output1-g_trg = it_zeledtl-TARGET_G * conv_sec.
          it_output1-p_trg = it_zeledtl-TARGET_P * conv_sec.
          it_output1-M_trg = it_zeledtl-TARGET_M * conv_sec.
          it_output1-t_trg = it_zeledtl-TARGET_T * conv_sec.
          it_output1-i_trg = it_zeledtl-TARGET_I * conv_sec.
        append it_output1.
      endloop.
      sort it_output1 ascending by subgid subopn srno1.
      clear ch1.
      loop at it_zrouteledtl.
        move-corresponding it_zrouteledtl to it_output.
        select single description from zpromast into it_output-desc
                                      where subgid = it_zrouteledtl-subgid and
                                      subopn = it_zrouteledtl-subopn and
                                      werks in p_werks.
        it_output-add_desc = it_zrouteledtl-description.
        it_output-freq = it_zrouteledtl-frequency.
        it_output-div_freq = it_zrouteledtl-div_freq.
        it_output-men = it_zrouteledtl-men.
        it_output-ct = it_zrouteledtl-cy_time * conv_sec.
        it_output-cw = it_zrouteledtl-wc_time * conv_sec.
        it_output-ideal_ct = it_zrouteledtl-cy_trg_time * conv_sec.
        it_output-ideal_cw = it_zrouteledtl-wc_trg_time * conv_sec.
        if it_zrouteledtl-offline1 = '1'.
          it_output-offline = 'No'.
        else.
          it_output-offline = 'Yes'.
        endif.
        append it_output.
      endloop.
      loop at it_output.
        if it_output-offline = 'Yes'.
        ch1 = 0.
        else.
        ch1 = 1.
        endif.
        loop at it_output1 where subgid = it_output-subgid and
                                 subopn = it_output-subopn.
          a_trg = A_trg + it_output1-A_trg.
          b_Trg = b_Trg + it_output1-b_Trg.
          g_Trg = g_Trg + it_output1-g_Trg.
          p_Trg = p_Trg + it_output1-p_Trg.
          m_Trg = m_Trg + it_output1-m_Trg.
          t_Trg = t_Trg + it_output1-t_Trg.
          i_Trg = i_Trg + it_output1-i_Trg.
          autocycle = autocycle + it_output1-Autocycle.
          online_p_time = online_p_time + it_output1-online_p_time.
          offline_p_time = offline_p_time + it_output1-offline_p_time.
        endloop.
          it_output-autocycle = ( autocycle * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-a_trg = ( a_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-b_trg = ( b_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-g_trg = ( g_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-p_trg = ( p_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-m_trg = ( m_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-t_trg = ( t_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-i_trg = ( i_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-online_time = ( it_output-ct - it_output-autocycle ) * ch1.
          it_output-offline_time = ( it_output-ct - it_output-cw ) + it_output-autocycle.
          it_output-online_p_time = ( online_p_time * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-offline_p_time = ( offline_p_time * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          clear : a_trg,b_trg,g_trg,p_trg,m_trg,t_trg,i_trg,online_p_time,offline_p_time,ch1,ch2,it_zeledtl,
                  autocycle,online_p_time,offline_p_time,zroutpromast.
        modify it_output.
      endloop.
    ENDFORM.                    " data_retrieval
    *&      Form  build_fieldcatalog
          text
    -->  p1        text
    <--  p2        text
    FORM build_fieldcatalog .
    Please not there are a number of differences between the structure of
    ALVtree fieldcatalogs and ALVgrid fieldcatalogs.
    For example the field seltext_m is replace by scrtext_m in ALVtree.
      DATA: COL_POS TYPE I VALUE 0.
      fieldcatalog-fieldname   = 'SRNO'.
      fieldcatalog-SCRTEXT_L   = 'Sr No.'.
      fieldcatalog-SCRTEXT_m   = 'Sr No.'.
      fieldcatalog-SCRTEXT_s   = 'Sr No.'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'SUBGID'.           "Field name in itab
      fieldcatalog-SCRTEXT_L   = 'Sub Opn GID'.  "Column text
      fieldcatalog-SCRTEXT_m   = 'Sub Opn GID'.  "Column text
      fieldcatalog-SCRTEXT_s   = 'Sub Opn GID'.  "Column text
      fieldcatalog-col_pos     = COL_POS.     "Column position
      fieldcatalog-outputlen   = 15.                "Column width
      fieldcatalog-emphasize   = 'X'.               "Emphasize  (X or SPACE)
      fieldcatalog-key         = 'X'.               "Key Field? (X or SPACE)
    fieldcatalog-do_sum      = 'X'.              "Sum Column?
    fieldcatalog-no_zero     = 'X'.              "Don't display if zero
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'SUBOPN'.
      fieldcatalog-SCRTEXT_L   = 'Sub Opn'.
      fieldcatalog-SCRTEXT_m   = 'Sub Opn'.
      fieldcatalog-SCRTEXT_s   = 'Sub Opn'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-emphasize   = 'X'.               "Emphasize  (X or SPACE)
      fieldcatalog-key         = 'X'.               "Key Field? (X or SPACE)
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'MOVETYPE'.
      fieldcatalog-SCRTEXT_L   = 'Movetype'.
      fieldcatalog-SCRTEXT_m   = 'Movetype'.
      fieldcatalog-SCRTEXT_s   = 'Movetype'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'DESC'.
      fieldcatalog-SCRTEXT_L   = 'Description'.
      fieldcatalog-SCRTEXT_m   = 'Description'.
      fieldcatalog-SCRTEXT_s   = 'Description'.
      fieldcatalog-outputlen   = 600.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'ADD_DESC'.
      fieldcatalog-SCRTEXT_L   = 'Add. Description'.
      fieldcatalog-SCRTEXT_m   = 'Add. Description'.
      fieldcatalog-SCRTEXT_s   = 'Add. Description'.
      fieldcatalog-outputlen   = 100.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'FREQ'.
      fieldcatalog-SCRTEXT_L   = 'Frequency'.
      fieldcatalog-SCRTEXT_m   = 'Frequency'.
      fieldcatalog-SCRTEXT_s   = 'Frequency'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'DIV_FREQ'.
      fieldcatalog-SCRTEXT_L   = 'Div Freq'.
      fieldcatalog-SCRTEXT_m   = 'Div Freq'.
      fieldcatalog-SCRTEXT_s   = 'Div Freq'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'MEN'.
      fieldcatalog-SCRTEXT_L   = 'Men'.
      fieldcatalog-SCRTEXT_m   = 'Men'.
      fieldcatalog-SCRTEXT_s   = 'Men'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
    COL_POS = COL_POS + 1.
    fieldcatalog-fieldname   = 'BATCH'.
    fieldcatalog-SCRTEXT_L   = 'Batch/Div Freq'.
    fieldcatalog-SCRTEXT_m   = 'Batch/Div Freq'.
    fieldcatalog-SCRTEXT_s   = 'Batch/Div Freq'.
    fieldcatalog-outputlen   = 15.
    fieldcatalog-col_pos     = COL_POS.
    APPEND fieldcatalog TO gd_fieldcat.
    CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'OFFLINE'.
      fieldcatalog-SCRTEXT_L   = 'Offline'.
      fieldcatalog-SCRTEXT_m   = 'Offline'.
      fieldcatalog-SCRTEXT_s   = 'Offline'.
      fieldcatalog-outputlen   = 6.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'CT'.
      fieldcatalog-SCRTEXT_L   = 'Cycle Time'.
      fieldcatalog-SCRTEXT_m   = 'Cycle Time'.
      fieldcatalog-SCRTEXT_s   = 'Cycle Time'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'CW'.
      fieldcatalog-SCRTEXT_L   = 'Work Content'.
      fieldcatalog-SCRTEXT_m   = 'Work Content'.
      fieldcatalog-SCRTEXT_s   = 'Work Content'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'IDEAL_CT'.
      fieldcatalog-SCRTEXT_L   = 'Ideal CT'.
      fieldcatalog-SCRTEXT_m   = 'Ideal CT'.
      fieldcatalog-SCRTEXT_s   = 'Ideal CT'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'IDEAL_CW'.
      fieldcatalog-SCRTEXT_L   = 'Ideal CW'.
      fieldcatalog-SCRTEXT_m   = 'Ideal CW'.
      fieldcatalog-SCRTEXT_s   = 'Ideal CW'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'A_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target A'.
      fieldcatalog-SCRTEXT_m   = 'Target A'.
      fieldcatalog-SCRTEXT_s   = 'Target A'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'B_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target B'.
      fieldcatalog-SCRTEXT_m   = 'Target B'.
      fieldcatalog-SCRTEXT_s   = 'Target B'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'G_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target G'.
      fieldcatalog-SCRTEXT_m   = 'Target G'.
      fieldcatalog-SCRTEXT_s   = 'Target G'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'P_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target P'.
      fieldcatalog-SCRTEXT_m   = 'Target P'.
      fieldcatalog-SCRTEXT_s   = 'Target P'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'M_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target M'.
      fieldcatalog-SCRTEXT_m   = 'Target M'.
      fieldcatalog-SCRTEXT_s   = 'Target M'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'T_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target T'.
      fieldcatalog-SCRTEXT_m   = 'Target T'.
      fieldcatalog-SCRTEXT_s   = 'Target T'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'I_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target I'.
      fieldcatalog-SCRTEXT_m   = 'Target I'.
      fieldcatalog-SCRTEXT_s   = 'Target I'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'AUTOCYCLE'.
      fieldcatalog-SCRTEXT_L   = 'AutoCycle'.
      fieldcatalog-SCRTEXT_m   = 'AutoCycle'.
      fieldcatalog-SCRTEXT_s   = 'AutoCycle'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'ONLINE_TIME'.
      fieldcatalog-SCRTEXT_L   = 'Online Time'.
      fieldcatalog-SCRTEXT_m   = 'Online Time'.
      fieldcatalog-SCRTEXT_s   = 'Online Time'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'OFFLINE_TIME'.
      fieldcatalog-SCRTEXT_L   = 'Offline Time'.
      fieldcatalog-SCRTEXT_m   = 'Offline Time'.
      fieldcatalog-SCRTEXT_s   = 'Offline Time'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'ONLINE_P_TIME'.
      fieldcatalog-SCRTEXT_L   = 'Online Process Time'.
      fieldcatalog-SCRTEXT_m   = 'Online Process Time'.
      fieldcatalog-SCRTEXT_s   = 'Online Process Time'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'OFFLINE_P_TIME'.
      fieldcatalog-SCRTEXT_L   = 'Offline Process Time'.
      fieldcatalog-SCRTEXT_m   = 'Offline Process Time'.
      fieldcatalog-SCRTEXT_s   = 'Offline Process Time'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
    ENDFORM.                    " build_fieldcatalog
    *&      Form  build_layout
          text
    -->  p1        text
    <--  p2        text
    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  build_hierarchy_header
          text
         <--P_GD_HIERARCHY_HEADER  text
    FORM build_hierarchy_header CHANGING
                                        p_hierarchy_header TYPE treev_hhdr.
      p_hierarchy_header-heading = 'Drill Down For Detail'(022).
      p_hierarchy_header-tooltip = 'This is the Hierarchy Header !'(014).
      p_hierarchy_header-width = 30.
      p_hierarchy_header-width_pix = ''.
    ENDFORM.                    " build_hierarchy_header
    *&      Form  build_report_title
          text
         -->P_GD_REPORT_TITLE  text
         -->P_GD_LOGO  text
    FORM build_report_title  using
                     pt_report_title  TYPE slis_t_listheader
                     pa_logo TYPE sdydo_value.
      DATA: ls_line TYPE slis_listheader,
            ld_date(10) TYPE c,
            string1 type string,string2 type string.
    List Heading Line(TYPE H)
    concatenate 'Material: ' p_matnr-low into string1 separated by space.
      CLEAR ls_line.
      ls_line-typ  = 'H'.
      ls_line-key  = 'MOST Operation'.
      concatenate p_gid-low p_opn-low into string2 separated by space.
      ls_line-info = string2.
      APPEND ls_line TO pt_report_title.
      ls_line-typ  = 'S'.
      ls_line-key  = 'Text'.
      select single DESCRIPTION from zroutpromast into string1 where mop_gid = p_gid-low
                                                               and mop_opn = p_opn-low
                                                               and werks = p_werks-low.
      ls_line-info = string1.
      APPEND ls_line TO pt_report_title.
    ls_line-typ  = 'S'.
    ls_line-key  = 'Routing Counter:'.
    ls_line-info = counter.
    APPEND ls_line TO pt_report_title.
    Status Line(TYPE S)
      ld_date(2) = sy-datum+6(2).
      ld_date+2(1) = '/'.
      ld_date3(2) = sy-datum4(2).
      ld_date+5(1) = '/'.
      ld_date+6(4) = sy-datum(4).
      ls_line-typ  = 'S'.
      ls_line-key  = 'Date'.
      ls_line-info = ld_date.
      APPEND ls_line TO pt_report_title.
    Action Line(TYPE A)
    CLEAR ls_line.
    ls_line-typ  = 'A'.
    CONCATENATE 'Report: ' sy-repid INTO ls_line-info  SEPARATED BY space.
    APPEND ls_line TO pt_report_title.
    ENDFORM.                    " build_report_title
    *&      Form  build_variant
          text
    -->  p1        text
    <--  p2        text
    FORM build_variant .
      gd_variant-report = sy-repid.
    ENDFORM.                    " build_variant
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'STATUS1'.
      SET TITLEBAR 'ZTITLE'.
      IF gd_tree IS INITIAL.
    Create ALVtree (must be performed within screen PBO module)
        PERFORM create_alvtree_container.
        PERFORM create_object_in_container.
        PERFORM create_empty_alvtree_control.
        perform change_toolbar.
        PERFORM create_alvtree_hierarchy.
      ENDIF.
      CALL METHOD cl_gui_cfw=>flush.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
      case sy-ucomm.
        when 'EXIT' or 'BACK' or 'CANC'.
          call method gd_tree->free.
          leave program.
        when others.
          call method cl_gui_cfw=>dispatch.
      endcase.
      clear ok_code.
      call method cl_gui_cfw=>flush.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  create_alvtree_container
          text
    -->  p1        text
    <--  p2        text
    FORM create_alvtree_container .
      gd_tree_container_name = 'SCREEN_CONTAINER'.
      create object gd_custom_container
          exporting
                container_name = gd_tree_container_name
          exceptions
                cntl_error                  = 1
                cntl_system_error           = 2
                create_error                = 3
                lifetime_error              = 4
                lifetime_dynpro_dynpro_link = 5.
      if sy-subrc <> 0.
        message x208(00) with 'ERROR'.
      endif.
    ENDFORM.                    " create_alvtree_container
    *&      Form  create_object_in_container
          text
    -->  p1        text
    <--  p2        text
    FORM create_object_in_container .
      create object gd_tree
          exporting
              parent              = gd_custom_container
              node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
              item_selection      = 'X'
              no_html_header      = ''
              no_toolbar          = ''
          exceptions
              cntl_error                   = 1
              cntl_system_error            = 2
              create_error                 = 3
              lifetime_error               = 4
              illegal_node_selection_mode  = 5
              failed                       = 6
              illegal_column_name          = 7.
      if sy-subrc <> 0.
        message x208(00) with 'ERROR'.
      endif.
    ENDFORM.                    " create_object_in_container
    *&      Form  create_empty_alvtree_control
          text
    -->  p1        text
    <--  p2        text
    FORM create_empty_alvtree_control .
      CLEAR: it_emptytab.
      REFRESH: it_emptytab.
      CALL METHOD gd_tree->set_table_for_first_display
         EXPORTING
                   is_hierarchy_header  = gd_hierarchy_header
                   it_list_commentary   = gd_report_title
                  i_logo               = gd_logo
                  i_background_id      = 'ALV_BACKGROUND'
                   i_save               = 'A'
                   is_variant            = gd_variant
         CHANGING
                   it_outtab            =  it_emptytab      "Must be empty
                   it_fieldcatalog      =  gd_fieldcat.
    ENDFORM.                    " create_empty_alvtree_control
    *&      Form  create_alvtree_hierarchy
          text
    -->  p1        text
    <--  p2        text
    FORM create_alvtree_hierarchy .
      data: ls_sflight type sflight,
              lt_sflight type sflight occurs 0.
      data: ld_mop_gid_key type lvc_nkey,
            ld_mop_opn_key type lvc_nkey.
      loop at it_output.
        perform add_ekko_node using      it_output
                                changing ld_mop_gid_key.
        loop at it_output1 where subgid eq it_output-subgid
                                 and subopn eq it_output-subopn.
          perform add_ekpo_line using      it_output1
                                           ld_mop_gid_key
                                  changing ld_mop_opn_key.
        endloop.
      endloop.
    calculate totals
      call method gd_tree->update_calculations.
    this method must be called to send the data to the frontend
      call method gd_tree->frontend_update.
    ENDFORM.                    " create_alvtree_hierarchy
    *&      Form  add_ekko_node
          text
         -->P_IT_OUTPUT  text
         -->P_2478   text
         <--P_LD_MOP_GID_KEY  text
    FORM add_ekko_node  USING  ps_output like it_output
                               VALUE(p_relate_key)
                        CHANGING p_node_key.
      data: ld_node_text type lvc_value,
             ls_sflight type sflight.
      data : text128(128).
    Set item-layout
      concatenate ps_output-subgid ps_output-subopn into text128 separated by space.
      data: lt_item_layout type lvc_t_layi,
            ls_item_layout type lvc_s_layi.
      ls_item_layout-t_image   = '@3P@'.
      ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.
      ls_item_layout-style     = cl_gui_column_tree=>style_default.
      ld_node_text             = text128.
      append ls_item_layout to lt_item_layout.
    Add node
      call method gd_tree->add_node
        exporting
              i_relat_node_key = p_relate_key
              i_relationship   = cl_gui_column_tree=>relat_last_child
              i_node_text      = ld_node_text
              is_outtab_line   = ps_output
              it_item_layout   = lt_item_layout
           importing
              e_new_node_key = p_node_key.
    ENDFORM.                    " add_ekko_node
    *&      Form  add_ekpo_line
          text
         -->P_IT_OUTPUT1  text
         -->P_LD_MOP_GID_KEY  text
         <--P_LD_MOP_OPN_KEY  text
    FORM add_ekpo_line  USING    Ps_OUTPUT1 like it_output1
                                 value(p_relate_key)
                        CHANGING p_node_key.
    data: ld_node_text type lvc_value,
          ls_sflight type sflight.
    data : text128(128).
    concatenate ps_output1-srno ps_output1-movetype into text128 separated by space.
    Set item-layout
      data: lt_item_layout type lvc_t_layi,
            ls_item_layout type lvc_s_layi.
      ls_item_layout-t_image   = '@3P@'.
      ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.
      ls_item_layout-style     = cl_gui_column_tree=>style_default.
      ld_node_text             = text128.
      append ls_item_layout to lt_item_layout.
    Add node
      call method gd_tree->add_node
        exporting
              i_relat_node_key = p_relate_key
              i_relationship   = cl_gui_column_tree=>relat_last_child
              i_node_text      = ld_node_text
              is_outtab_line   = ps_output1
              it_item_layout   = lt_item_layout
           importing
              e_new_node_key = p_node_key.
    ENDFORM.                    " add_ekpo_line
    *&      Form  change_toolbar
          text
    -->  p1        text
    <--  p2        text
    FORM change_toolbar .
    get toolbar control
      call method gd_tree->get_toolbar_object
              importing
                  er_toolbar = mr_toolbar.
      check not mr_toolbar is initial.
    add seperator to toolbar
      call method mr_toolbar->add_button
              exporting
                  fcode     = ''
                  icon      = ''
                  butn_type = cntb_btype_sep
                  text      = ''
                  quickinfo = 'This is a Seperator'.         "#EC NOTEXT
    add Standard Button to toolbar (for Delete Subtree)
      call method mr_toolbar->add_button
              exporting
                  fcode     = 'EXPORT'           "Function code of button
                  icon      = '@49@'             "Icon ID (see )
                  butn_type = cntb_btype_button  "Button type
                  text      = ''                 "Button text
                  quickinfo = 'Download To Excel'.  "Quick info text
    add Dropdown Button to toolbar (for Insert Line)
    call method mr_toolbar->add_button
             exporting
                 fcode     = 'INSERT_LC'         "Function code of button
                 icon      = '@17@'              "Icon ID (see )
                 butn_type = cntb_btype_dropdown "Button type
                 text      = ''                  "Button text
                 quickinfo = 'Insert Line'.      "Quick info text
    set event-handler for toolbar-control
      data: toolbar_event_receiver type ref to lcl_toolbar_event_receiver.
      create object toolbar_event_receiver.
      set handler toolbar_event_receiver->on_function_selected
                                                          for mr_toolbar.
      set handler toolbar_event_receiver->on_toolbar_dropdown
                                                          for mr_toolbar.
    ENDFORM.                    " change_toolbar
    Edited by: Darshan Shah on Jan 2, 2008 1:31 PM

    Gui patch was not available on my pc

  • ** Filtering is not working correctly in ALV (REUSE_ALV_GRID_DISPLAY)

    Hi Friends,
    We have one Z report that output is displayed in ALV. We are using the standard FM 'REUSE_ALV_GRID_DISPLAY. 
    We have requirement to remove leading zeros for the field like Material Number (MATNR), Equipment Number (EQUNR) etc. We did the changes by applying the field catalog properties as below.
    lw_fieldcat-lzero = space.
    lw_fieldcat-no_zero = 'X'.
    After this, the MATNR and EQUNR is displayed correctly in the ALV. (Leading zeros are suppressed). But, when we do filter for these fields, in the filter window it displays all the values with leading zeros.
    1. We don't understand why it is showing in the Filter widow with all leading zeros. All it shows all the records instead of unique items.
    Later on, we removed the above fieldcat coding. Then, we have called the CONVERSION_EXIT routines (in the domain) for the fields to remove leading zeros.
    Now, the MATNR and EQUNR is displayed correctly (without leading zeros) in ALV. When we do filter, it is also doing filtering correctly. But, when we do filter which have EQUNR having long values (after zero suppression), it is not working correctly. i.e no items are displayed in the ALV.
    Not only for this items. If we filter character columns which have long text, it is not filtering correctly.
    2. It is not able to understand why the filtering is not working for long items. But in the standard report, the filtering is working correctly.
    We are using SAP ECC 6.0.
    Friends, can you clarify the about doubts. It is surprising for me.
    Kind regards,
    Jegathees P.
    Our customer is asked to remove the leading zeros for the numeric field

    Hi Clemens Li
    I agreed on your point. When we define the Internal table the type for element EQUNR & QUMNR , we are referring the SAP data element for EQUNR, QMNUM field.
    Our doubt is even though we refer the standard data element, in the ALV display, it shows with leading zeros and also it creates problems in the filtering and in the filter window all values instead of unique nos.
    Hi Abhii
    I have given below the fieldcat coding.
    Friends, can you kindly clarify the above said problems. Since we use SAP ECC 6.0 any notes or patches apply is required. ( this is the basic functionality in ALV, that is my doubt).
        wls_fieldcat-col_pos   = wpv_pos.
        wls_fieldcat-fieldname = wpv_champ.
        wls_fieldcat-tabname   = wlc_tabname.
      wls_fieldcat-seltext_s = wls_fieldcat-seltext_m
        wls_fieldcat-seltext_l = wpv_libelle.
        wls_fieldcat-ddictxt   = 'L'.
        wls_fieldcat-no_out    = wv_no_out.
        APPEND wls_fieldcat TO gt_fieldcat.
    Kind regards,
    Jegathees P.

  • 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

  • Issue in ALV List display

    Issue in ALV List display  
    Posted: Apr 5, 2008 10:25 AM     Edit      E-mail this message      Reply 
    Hi Friends,
    Can any one help me out in the logic to display the output in the ALV list.
    i want to get the out put as
    based on the field4 i have to display fieds5, field6 and field 7 values as mentioned below.
    field1 field2 field3 field4 field5 field6 field7
    0L 123 456 2008  001 123.00 456.00
    -    -     -       -     002  213.00 789.00
    -      -       -     003 0.00     0.00
    -      -       -     004 0.00     0.00
    -      -        -    005 0.00     0.00
    -       -       -     006 0.00     0.00
                                   336.00  1245.00
    Thanks,
    Vijay

    for display you have to define fieldcatlaog and use Fm RESUE_ALV_GRID_DISPLAY,
    Go through this program
    *& Report  Z_OPEN_CLOSE                                                *
    REPORT  Z_OPEN_CLOSE MESSAGE-ID YW2 LINE-SIZE 231 LINE-COUNT 45
    NO STANDARD PAGE HEADING.
    Type Declaration *
    TYPE-POOLS SLIS.
    Tables *
    TABLES: MKPF, " Material Document: Header Data
            MSEG, " Material Document: Item Data
            MARA,
            MARD,
            S031,
            EKKO,
            EKPO,
            LIKP,
            MAKT,
            J_1IWRKCUS,
            T001W,
            WB2_V_MKPF_MSEG2,
            MMIM_REP_PRINT,
            YW2_STKMOVEMENTS,
            YPLNT,
            MARDH.
    Internal Tables *
    DATA: I_WERKS LIKE J_1IWRKCUS OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF I_YPLNT OCCURS 0,
             PPLNT LIKE YPLNT-PPLNT,
             WPLNT LIKE YPLNT-WPLNT,
          END OF I_YPLNT.
    DATA: BEGIN OF I_MKPF OCCURS 0,
            MBLNR LIKE MKPF-MBLNR,
            MJAHR LIKE MKPF-MJAHR,
            BUDAT LIKE MKPF-BUDAT,
            VGART LIKE MKPF-VGART,
            BWART LIKE MSEG-BWART,
            MATNR LIKE MSEG-MATNR,
            WERKS LIKE MSEG-WERKS,
            LGORT LIKE MSEG-LGORT,
            MENGE LIKE MSEG-MENGE,
            MEINS LIKE MSEG-MEINS,
            KUNNR LIKE MSEG-KUNNR,
            ZEILE LIKE MSEG-ZEILE,
            XAUTO LIKE MSEG-XAUTO,
            SHKZG LIKE MSEG-SHKZG,
            MATNR1 LIKE MSEG-MATNR,
          END OF I_MKPF.
    DATA: BEGIN OF I_MARDH OCCURS 0,
           WERKS LIKE MARDH-WERKS,
           MEINS LIKE MARA-MEINS,
           MATNR LIKE MARDH-MATNR,
           LGORT LIKE MARDH-LGORT,
           LABST LIKE MARDH-LABST,
           LFGJA LIKE MARDH-LFGJA, "Added -MB
           LFMON LIKE MARDH-LFMON, "Added -MB
           PERIO(6),
           INSME LIKE MARDH-LABST,
           EINME LIKE MARDH-LABST,
           SPEME LIKE MARDH-LABST,
           RETME LIKE MARDH-LABST,
           O_STK LIKE MARDH-LABST, " Opening Stock
           C_STK LIKE MARDH-LABST, " Closing Stock
          END OF I_MARDH.
    DATA: BEGIN OF I_MARD OCCURS 0,
           WERKS LIKE MARD-WERKS,
           MATNR LIKE MARD-MATNR,
           LGORT LIKE MARD-LGORT,
           LABST LIKE MARD-LABST,
           INSME LIKE MARD-LABST,
           MEINS LIKE MARA-MEINS,
           EINME LIKE MARD-LABST,
           SPEME LIKE MARD-LABST,
           RETME LIKE MARD-LABST,
          END OF I_MARD.
    DATA: I_MARD1 LIKE I_MARD OCCURS 0 WITH HEADER LINE.
    DATA: I_MARDH1 LIKE I_MARDH OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF I_MKPF1 OCCURS 0,
            MBLNR LIKE MKPF-MBLNR,
            WERKS LIKE MSEG-WERKS,
            MATNR LIKE MSEG-MATNR,
            BUDAT LIKE MKPF-BUDAT,
            BWART LIKE MSEG-BWART,
            MJAHR LIKE MKPF-MJAHR,
            VGART LIKE MKPF-VGART,
            LGORT LIKE MSEG-LGORT,
            MENGE LIKE MSEG-MENGE,
            MEINS LIKE MSEG-MEINS,
            XAUTO LIKE MSEG-XAUTO,
            SHKZG LIKE MSEG-SHKZG,
          END OF I_MKPF1.
    DATA: BEGIN OF I_MKPF2 OCCURS 0,
           WERKS LIKE MSEG-WERKS,
           MATNR LIKE MSEG-MATNR,
           BUDAT LIKE MKPF-BUDAT,
           BWART LIKE MSEG-BWART,
           MJAHR LIKE MKPF-MJAHR,
           VGART LIKE MKPF-VGART,
           LGORT LIKE MSEG-LGORT,
           MENGE LIKE MSEG-MENGE,
           MEINS LIKE MSEG-MEINS,
           XAUTO LIKE MSEG-XAUTO,
         END OF I_MKPF2.
    DATA: BEGIN OF I_FINAL5 OCCURS 0,
           WERKS LIKE MSEG-WERKS, " Plant
           MATNR LIKE MSEG-MATNR, " Material
           LGORT LIKE MSEG-LGORT, " Storage Location
           BUDAT LIKE MKPF-BUDAT, " Posting Date
           MTART LIKE MARA-MTART, " Material Type
           SPMON LIKE S031-SPMON, " Month
           MAKTX LIKE MAKT-MAKTX, " Description
    meins(3), " UOM
            MEINS LIKE MSEG-MEINS,
            O_STK LIKE MARDH-LABST, " opening stock
            TRECEP LIKE MARDH-LABST, " total receipts
            PRODU LIKE MARDH-LABST, " Net Receipts - Production
            RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
            SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
            TDISP LIKE MARDH-LABST, " total dispatches
            CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
            OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
            TLOSS LIKE MARDH-LABST, " Total Loss
            TRLOSS LIKE MARDH-LABST, " Transit Loss
            WHLOSS LIKE MARDH-LABST, " Warehouse Loss
            C_STK LIKE MARDH-LABST, " Closing Stock
            TRFSTK LIKE MARDH-LABST, "Transfer stock
            MENGE LIKE MSEG-MENGE,
            OTHADJ LIKE MARDH-LABST,
          END OF I_FINAL5.
    DATA: BEGIN OF I_FINAL OCCURS 0,
            WERKS LIKE MSEG-WERKS, " Plant
            MATNR LIKE MSEG-MATNR, " Material
            BUDAT LIKE MKPF-BUDAT, " Posting Date
            MTART LIKE MARA-MTART, " Material Type
            SPMON LIKE S031-SPMON, " Month
            MAKTX LIKE MAKT-MAKTX, " Description
    meins(3), " UOM
            MEINS LIKE MSEG-MEINS,
            O_STK LIKE MARDH-LABST, " opening stock
            TRECEP LIKE MARDH-LABST, " total receipts
            PRODU LIKE MARDH-LABST, " Net Receipts - Production
            RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
            SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
            TDISP LIKE MARDH-LABST, " total dispatches
            CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
            OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
            TRFSTK LIKE MARDH-LABST, "Material Transfer stock
            TRLOSS LIKE MARDH-LABST, " Transit Loss
            WHLOSS LIKE MARDH-LABST, " Warehouse Loss
            TLOSS LIKE MARDH-LABST, " Total Loss
            C_STK LIKE MARDH-LABST, " Closing Stock
            OTHADJ LIKE MARDH-LABST,
           END OF I_FINAL.
    DATA: I_FINAL1 LIKE I_FINAL OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF I_FINAL_TEMP OCCURS 0,
            WERKS LIKE MSEG-WERKS, " Plant
            MATNR LIKE MSEG-MATNR, " Material
            MTART LIKE MARA-MTART, " Material Type
            MAKTX LIKE MAKT-MAKTX, " Description
            MEINS LIKE MSEG-MEINS,
            O_STK LIKE MARDH-LABST, " opening stock
            TRECEP LIKE MARDH-LABST, " total receipts
            PRODU LIKE MARDH-LABST, " Net Receipts - Production
            RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
            SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
            TDISP LIKE MARDH-LABST, " total dispatches
            CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
            OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
            TRFSTK LIKE MARDH-LABST, "Material Transfer stock
            TRLOSS LIKE MARDH-LABST, " Transit Loss
            WHLOSS LIKE MARDH-LABST, " Warehouse Loss
            TLOSS LIKE MARDH-LABST, " Total Loss
            C_STK LIKE MARDH-LABST, " Closing Stock
            OTHADJ LIKE MARDH-LABST,
          END OF I_FINAL_TEMP.
    For Materials
    DATA: BEGIN OF I_MARA OCCURS 0,
           MATNR TYPE MARA-MATNR,
           MTART TYPE MARA-MTART,
           MEINS LIKE MARA-MEINS,
           LABST TYPE MARD-LABST,
           MAKTX LIKE MAKT-MAKTX,
          END OF I_MARA.
    DATA: BEGIN OF I_STKMVMNTS OCCURS 0,
           BWART LIKE MSEG-BWART,
           SHKZG LIKE MSEG-SHKZG,
           VZBEW LIKE YW2_STKMOVEMENTS-VZBEW,
          END OF I_STKMVMNTS.
    DATA: BEGIN OF I_FINALT OCCURS 0,
           WERKS LIKE MSEG-WERKS, " Plant
           MATNR LIKE MSEG-MATNR, " Material
           BUDAT LIKE MKPF-BUDAT, " Posting Date
           MTART LIKE MARA-MTART, " Material Type
           SPMON LIKE S031-SPMON, " Month
           MAKTX LIKE MAKT-MAKTX, " Description
    meins(3), " UOM
           MEINS LIKE MSEG-MEINS,
           O_STK LIKE MARDH-LABST, " opening stock
           TRECEP LIKE MARDH-LABST, " total receipts
           PRODU LIKE MARDH-LABST, " Net Receipts - Production
           RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
           SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
           TDISP LIKE MARDH-LABST, " total dispatches
           CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
           OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
           TRFSTK LIKE MARDH-LABST, "Material Transfer stock
           TRLOSS LIKE MARDH-LABST, " Transit Loss
           WHLOSS LIKE MARDH-LABST, " Warehouse Loss
           TLOSS LIKE MARDH-LABST, " Total Loss
           C_STK LIKE MARDH-LABST, " Closing Stock
           OTHADJ LIKE MARDH-LABST,
           MONTH(8) ,
          END OF I_FINALT.
    DATA: IMKPFT LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
    DATA: IMKPFT1 LIKE I_MKPF1 OCCURS 0 WITH HEADER LINE.
    DATA: IMARDT LIKE I_MARD OCCURS 0 WITH HEADER LINE.
    DATA: IMARDHT LIKE I_MARDH OCCURS 0 WITH HEADER LINE.
    DATA: T_FINAL LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
    DATA: IMKPFT2 LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
    FCAT is used for the field catalog
    DATA: FCAT TYPE TABLE OF SLIS_FIELDCAT_ALV WITH NON-UNIQUE DEFAULT KEY
                      WITH HEADER LINE INITIAL SIZE 0,
    for excluding the ICONs from the application toolbar
          FEXC TYPE TABLE OF SLIS_EXTAB WITH NON-UNIQUE DEFAULT KEY
                     WITH HEADER LINE INITIAL SIZE 0,
    FS_LAYO is used for Grid Layout
          FS_LAYO TYPE SLIS_LAYOUT_ALV,
    FEVENTS to handle the events TOP OF PAGE & USER_COMMAND
          FEVENTS TYPE TABLE OF SLIS_ALV_EVENT WITH NON-UNIQUE DEFAULT KEY
                     WITH HEADER LINE INITIAL SIZE 0,
    FHEADER is used for List header
          FHEADER TYPE TABLE OF SLIS_LISTHEADER WITH NON-UNIQUE DEFAULT KEY
                     WITH HEADER LINE INITIAL SIZE 0,
    sort is used for sorting
          FSORT TYPE TABLE OF SLIS_SORTINFO_ALV WITH NON-UNIQUE DEFAULT KEY
                     WITH HEADER LINE INITIAL SIZE 0,
          FCAT1 TYPE TABLE OF SLIS_FIELDCAT_ALV WITH NON-UNIQUE DEFAULT KEY
                    WITH HEADER LINE INITIAL SIZE 0,
          FS_LAYO1 TYPE SLIS_LAYOUT_ALV,
          GT_LIST_TOP_OF_PAGE1 TYPE SLIS_T_LISTHEADER,
          FEVENTS1 TYPE TABLE OF SLIS_ALV_EVENT WITH NON-UNIQUE DEFAULT KEY
                 WITH HEADER LINE INITIAL SIZE 0,
           FHEADER1 TYPE TABLE OF SLIS_LISTHEADER WITH NON-UNIQUE DEFAULT  
                  KEY WITH HEADER LINE INITIAL SIZE 0,
           G_STATU_071 TYPE SLIS_FORMNAME VALUE 'Z_PFSTATUS',
           ALV_VARIANT1 LIKE DISVARIANT.
    Variable Declaration *
    TYPES: TRFF_TYPE_DEC_6_5(6) TYPE P DECIMALS 5.
    DATA: FYEAR(4),
          MON(2),
          FYEAR1(4),
          MON1(2),
          OBAL LIKE MARD-LABST,
          CBAL LIKE MARD-LABST,
          INDEX TYPE I,
          COUNT,
          COUNT1 TYPE I,
          O_STK TYPE P DECIMALS 3,
          C_STK TYPE P DECIMALS 3,
          V_MJAHR LIKE MKPF-MJAHR,
          MONTHS TYPE TRFF_TYPE_DEC_6_5,
          MONTH TYPE I.
    Global variables for handling ALV functionality
    DATA: ALV_KEYINFO TYPE SLIS_KEYINFO_ALV,
          ALV_VARIANT LIKE DISVARIANT,
          ALV_LAYOUT TYPE SLIS_LAYOUT_ALV,
          ALV_REPID LIKE SY-REPID,
          ALV_PRINT TYPE SLIS_PRINT_ALV,
          ALV_DETAIL_FUNC(30),
          ALV_DEFAULT_VARIANT LIKE DISVARIANT-VARIANT,
          ALV_COLOURIZE_FIELDS LIKE MMIM_REP_PRINT-COLOR.
    RANGES: R_BUDAT FOR MKPF-BUDAT.
    *Added by Prabhu for year on 26.4.05.
    DATA: IDATE LIKE R_BUDAT OCCURS 0 WITH HEADER LINE.
    Selection Screen Elements *
    SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
      SELECT-OPTIONS: S_WERKS FOR MARD-WERKS OBLIGATORY NO INTERVALS.
      PARAMETER: P_SPMON LIKE S031-SPMON NO-DISPLAY .
      SELECT-OPTIONS: S_MATNR FOR MARA-MATNR OBLIGATORY,
                      S_LGORT FOR MSEG-LGORT NO-EXTENSION NO INTERVALS,
                      S_MBLNR FOR MKPF-MBLNR,
                      S_BUDAT FOR MKPF-BUDAT OBLIGATORY .
    SELECTION-SCREEN END OF BLOCK BLK.
    SELECTION-SCREEN BEGIN OF BLOCK BLK3 WITH FRAME TITLE TEXT-004.
          PARAMETER : MTART LIKE MARA-MTART DEFAULT 'FERT' NO-DISPLAY.
    SELECTION-SCREEN END OF BLOCK BLK3.
    SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-003.
    SELECTION-SCREEN END OF BLOCK BLK2.
    ADDED BY PRABHU FOR DAY-WISE REPORT.
    SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-007.
      PARAMETERS: D1 RADIOBUTTON GROUP P1 DEFAULT 'X',
                  M1 RADIOBUTTON GROUP P1,
                  Y1 RADIOBUTTON GROUP P1.
    SELECTION-SCREEN END OF BLOCK B3.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-006.
    PARAMETERS: ALV_DEF LIKE DISVARIANT-VARIANT.
    SELECTION-SCREEN END OF BLOCK B2.
    DATA: S_BUDAT1 LIKE S_BUDAT OCCURS 0 WITH HEADER LINE."prabhu
    Initialization *
    INITIALIZATION.
      PERFORM ALV_INIT.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR ALV_DEF.
      PERFORM ALV_F4.
    At Selection Screen
    *AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_spmon.
    PERFORM monat_f4.
    At Selection Screen *
    AT SELECTION-SCREEN.
    checking for the layout
      PERFORM ALV_CHECK.
    authorisation check for the Plant
    PERFORM auth_check.
    Validation for the Plant
      PERFORM VALIDITY_CHECK.
      IF MTART NE 'FERT'.
        MESSAGE E041 WITH 'Material Type must be FERT Only...'.
      ENDIF.
      IF D1 = 'X'." On 26.4.05.
        P_SPMON0(4) = S_BUDAT-LOW0(4).
        P_SPMON4(2) = S_BUDAT-LOW4(2).
      ELSE.
        P_SPMON0(4) = S_BUDAT-LOW0(4).
        P_SPMON4(2) = S_BUDAT-LOW4(2).
      ENDIF.
      LOOP AT S_BUDAT.
        IF S_BUDAT-HIGH IS INITIAL.
          S_BUDAT-HIGH = S_BUDAT-LOW.
          MODIFY S_BUDAT.
        ENDIF.
      ENDLOOP.
      IDATE-LOW = S_BUDAT-LOW.
      IDATE-HIGH = S_BUDAT-HIGH.
      CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
        EXPORTING
           I_DATE_FROM = IDATE-LOW
           I_DATE_TO = IDATE-HIGH
       IMPORTING
    E_DAYS =
          E_MONTHS = MONTH
    E_YEARS =
      DATA: I(3) TYPE C.
      I = S_BUDAT-LOW+4(2).
      CLEAR: R_BUDAT.
      REFRESH: R_BUDAT.
    *added by Prabhu for Only for Oneday.on 18.5.5
      IF MONTH EQ '0'.
        MONTH = MONTH + 1.
      ENDIF.
    *added by Prabhu for Only for Oneday.on 18.5.5
      DO MONTH TIMES.
        R_BUDAT-LOW = S_BUDAT-LOW.
        APPEND R_BUDAT.
      ENDDO.
      I = 0.
      LOOP AT R_BUDAT.
        R_BUDAT-LOW4(2) = S_BUDAT-LOW4(2) + I.
        I = I + 1.
        R_BUDAT-LOW+6(2) = '01'.
        MODIFY R_BUDAT.
      ENDLOOP.
      LOOP AT R_BUDAT.
        CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
           EXPORTING
             DAY_IN = R_BUDAT-LOW
           IMPORTING
             LAST_DAY_OF_MONTH = R_BUDAT-HIGH
          EXCEPTIONS
            DAY_IN_NO_DATE = 1
            OTHERS = 2
        MODIFY R_BUDAT.
      ENDLOOP.
      LOOP AT R_BUDAT.
        IF R_BUDAT-LOW4(2) = S_BUDAT-LOW4(2).
          R_BUDAT-LOW = S_BUDAT-LOW.
          MODIFY R_BUDAT.
        ENDIF.
        IF R_BUDAT-HIGH4(2) = S_BUDAT-HIGH4(2).
          R_BUDAT-HIGH = S_BUDAT-HIGH.
          MODIFY R_BUDAT.
        ENDIF.
    For Summary on 26.4.05.
        IF Y1 = 'X'.
          CLEAR R_BUDAT.
          REFRESH R_BUDAT.
          R_BUDAT-LOW = S_BUDAT-LOW.
          R_BUDAT-HIGH = S_BUDAT-HIGH.
          APPEND R_BUDAT.
          CLEAR R_BUDAT.
        ENDIF.
      ENDLOOP.
    At Selection Screen *
    AT SELECTION-SCREEN OUTPUT.
    Start of Selection *
    START-OF-SELECTION.
      V_MJAHR = P_SPMON+0(4).
    Get plant distinction warehouse/production
      PERFORM GET_PLANT_DISTINCTION.
    Collect the data from various tables
      PERFORM GETDATA_FG_STOCK.
    here the number of rows in the output table is found
      PERFORM OUTPUT_TABLE_CHECK.
    here the top of the page code is written, that is to be displayed
    in the output
      PERFORM Z_TOP_OF_PAGE.
    here ALV layout properties are set
      PERFORM Z_LAYOUT_SETTINGS.
    ALV EVENTS for TOP OF PAGE and for USER COMMAND
      PERFORM Z_ALV_EVENTS.
    The field catalog is defined for the Primary List is defined in
    the subroutine CREATE_FIELD_CATALOG include program ZPRRDOCR_FCAT
      PERFORM Z_CREATE_FIELD_CATALOG.
    This is for displaying the output
      PERFORM Z_REUSE_ALV_GRID_DISPLAY.
    *& Form getdata_fg_stock
    Getting data from standard tables
    FORM GETDATA_FG_STOCK.
    For getting the Start date & end date of the month
    PERFORM get_month_dates.
    Getting the Opening Stock from MARDH table
      IF MON EQ '01'.
        MON1 = MON.
        FYEAR1 = FYEAR.
        MON = '12'.
        FYEAR = FYEAR - 1.
      ELSE.
        MON1 = MON.
        FYEAR1 = FYEAR.
        MON = MON - 1.
        FYEAR = FYEAR.
      ENDIF.
      PERFORM GET_RECORDS_FROM_DB.
    *added for Month Summary on 26.4.05.
      LOOP AT R_BUDAT.
        S_BUDAT-LOW = R_BUDAT-LOW.
        S_BUDAT-HIGH = R_BUDAT-HIGH.
    *for Month
        P_SPMON0(4) = S_BUDAT-LOW0(4).
        P_SPMON4(2) = S_BUDAT-LOW4(2).
    *for summary.
        IF Y1 = 'X'.
          LOOP AT S_BUDAT.
            S_BUDAT1-SIGN = 'I'.
            S_BUDAT1-OPTION = 'NB'.
            S_BUDAT1-LOW = S_BUDAT-LOW.
            S_BUDAT1-HIGH = S_BUDAT-HIGH.
            APPEND S_BUDAT1.
            CLEAR S_BUDAT1.
          ENDLOOP.
        ENDIF.
        IMKPFT[] = I_MKPF[].
        IMKPFT2[] = I_MKPF[].
        IMARDT[] = I_MARD[].
        IMARDHT[] = I_MARDH[].
        PERFORM MONTH_WISE.
        PERFORM PROCESS_MOVEMENTS.
        PERFORM CALCULATE_OPENING_STOCK.
        PERFORM UPDATE_NON_TRANSACTION_ITMS.
        PERFORM DELETE_EMPTY_RECORDS.
        CLEAR: IMARDHT,IMARDT,IMKPFT1,IMKPFT,I_FINAL,I_FINAL5.
        REFRESH: IMARDHT,IMARDT,IMKPFT1,I_FINAL,I_FINAL5,IMKPFT.
      ENDLOOP.
      CLEAR: R_BUDAT.
      REFRESH: R_BUDAT.
    *end of changes for month.
    ENDFORM. " getdata_fg_stock
    FORM MONAT_F4 *
    F4-Hilfe für Monat *
    FORM MONAT_F4.
      DATA: BEGIN OF MF_DYNPFIELDS OCCURS 1.
              INCLUDE STRUCTURE DYNPREAD.
      DATA: END OF MF_DYNPFIELDS.
      DATA: MF_RETURNCODE LIKE SY-SUBRC,
             MF_MONAT LIKE ISELLIST-MONTH,
             MF_HLP_REPID LIKE SY-REPID.
      FIELD-SYMBOLS: .
    Wert von Dynpro lesen
      GET CURSOR FIELD MF_DYNPFIELDS-FIELDNAME.
      APPEND MF_DYNPFIELDS.
      MF_HLP_REPID = SY-REPID.
      DO 2 TIMES.
        CALL FUNCTION 'DYNP_VALUES_READ'
          EXPORTING
            DYNAME               = MF_HLP_REPID
            DYNUMB               = SY-DYNNR
          TABLES
            DYNPFIELDS           = MF_DYNPFIELDS
          EXCEPTIONS
            INVALID_ABAPWORKAREA = 01
            INVALID_DYNPROFIELD  = 02
            INVALID_DYNPRONAME   = 03
            INVALID_DYNPRONUMMER = 04
            INVALID_REQUEST      = 05
            NO_FIELDDESCRIPTION  = 06
            UNDEFIND_ERROR       = 07.
        IF SY-SUBRC = 3.
    Aktuelles Dynpro ist Wertemengenbild
          MF_HLP_REPID = 'SAPLALDB'.
        ELSE.
          READ TABLE MF_DYNPFIELDS INDEX 1.
    Unterstriche durch Blanks ersetzen
          TRANSLATE MF_DYNPFIELDS-FIELDVALUE USING '_ '.
          EXIT.
        ENDIF.
      ENDDO.
      IF SY-SUBRC = 0.
    Konvertierung ins interne Format
        CALL FUNCTION 'CONVERSION_EXIT_PERI_INPUT'
          EXPORTING
            INPUT         = MF_DYNPFIELDS-FIELDVALUE
          IMPORTING
            OUTPUT        = MF_MONAT
          EXCEPTIONS
            ERROR_MESSAGE = 1.
        IF MF_MONAT IS INITIAL.
    Monat ist initial => Vorschlagswert aus akt. Datum ableiten
          MF_MONAT = SY-DATLO(6).
        ENDIF.
        CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
          EXPORTING
            ACTUAL_MONTH               = MF_MONAT
          IMPORTING
            SELECTED_MONTH             = MF_MONAT
            RETURN_CODE                = MF_RETURNCODE
          EXCEPTIONS
            FACTORY_CALENDAR_NOT_FOUND = 01
            HOLIDAY_CALENDAR_NOT_FOUND = 02
            MONTH_NOT_FOUND            = 03.
        IF SY-SUBRC = 0 AND MF_RETURNCODE = 0.
    ASSIGN (MF_DYNPFIELDS-FIELDNAME) TO <MF_FELD>. " ==>> note 148804
    <MF_FELD> = MF_MONAT.
          CALL FUNCTION 'CONVERSION_EXIT_PERI_OUTPUT'
            EXPORTING
              INPUT  = MF_MONAT
            IMPORTING
              OUTPUT = MF_DYNPFIELDS-FIELDVALUE.
          COLLECT MF_DYNPFIELDS.
          CALL FUNCTION 'DYNP_VALUES_UPDATE'
            EXPORTING
              DYNAME               = MF_HLP_REPID
              DYNUMB               = SY-DYNNR
            TABLES
              DYNPFIELDS           = MF_DYNPFIELDS
            EXCEPTIONS
              INVALID_ABAPWORKAREA = 01
              INVALID_DYNPROFIELD  = 02
              INVALID_DYNPRONAME   = 03
              INVALID_DYNPRONUMMER = 04
              INVALID_REQUEST      = 05
              NO_FIELDDESCRIPTION  = 06
              UNDEFIND_ERROR       = 07. "<<== note 148804
        ENDIF.
      ENDIF.
    ENDFORM.                                                    "MONAT_F4
    *& Form get_month_dates
    Calculating the Month Start & End Date
    FORM GET_MONTH_DATES.
      IF M1 = 'X'.
        FYEAR = P_SPMON+0(4).
        MON = P_SPMON+4(2).
        CONCATENATE FYEAR MON '01' INTO R_BUDAT-LOW.
        R_BUDAT-SIGN = 'I'.
        R_BUDAT-OPTION = 'BT'.
        CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
          EXPORTING
            I_DATE = R_BUDAT-LOW
          IMPORTING
            E_DATE = R_BUDAT-HIGH.
        APPEND R_BUDAT.
        CLEAR S_BUDAT.
        REFRESH S_BUDAT.
        S_BUDAT-SIGN = 'I'.
        S_BUDAT-OPTION = 'BT'.
        S_BUDAT-LOW = R_BUDAT-LOW.
        S_BUDAT-HIGH = R_BUDAT-HIGH.
        APPEND S_BUDAT.
      ELSE.
        FYEAR = P_SPMON+0(4).
        MON = P_SPMON+4(2).
        CONCATENATE FYEAR MON '01' INTO R_BUDAT-LOW.
        R_BUDAT-SIGN = 'I'.
        R_BUDAT-OPTION = 'BT'.
        CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
          EXPORTING
            I_DATE = R_BUDAT-LOW
          IMPORTING
            E_DATE = R_BUDAT-HIGH.
        APPEND R_BUDAT.
      ENDIF.
    ENDFORM. " get_month_dates
    *& Form output_table_Check
    checking for records for output
    FORM OUTPUT_TABLE_CHECK .
      DESCRIBE TABLE I_FINALT LINES INDEX.
      IF INDEX EQ 0.
        MESSAGE I041 WITH TEXT-005.
        LEAVE LIST-PROCESSING.
      ENDIF.
    ENDFORM. "OUTPUT_TABLE_CHECK
    *& Form Z_TOP_OF_PAGE
    for setting the details in the top of page *
    has no formal paramters *
    FORM Z_TOP_OF_PAGE.
      DATA: V_MON(2),
      V_YR(40),
      V_FIN(18),
      V_FIN1(48),
      LOW(10),
      HIGH(10).
      V_MON = P_SPMON+4(2).
      V_YR = P_SPMON+0(4).
      FHEADER-TYP = 'H'.
      FHEADER-INFO = 'Stock Register Report (FG Stock)'.
      APPEND FHEADER.
      CLEAR FHEADER.
    *if m1 = 'X'.
    CONCATENATE 'Month = ' v_mon '.' v_yr INTO v_fin.
    fheader-typ = 'H'.
    fheader-info = v_fin.
    APPEND fheader.
    CLEAR fheader.
    *endif."prabhu on 18.5.5
      IF D1 = 'X'.
        CLEAR S_BUDAT.
        LOOP AT S_BUDAT.
          CONCATENATE S_BUDAT-LOW6(2) '/' S_BUDAT-LOW4(2) '/'
          S_BUDAT-LOW+0(4) INTO LOW.
          CONCATENATE S_BUDAT-HIGH6(2) '/' S_BUDAT-HIGH4(2) '/'
          S_BUDAT-HIGH+0(4) INTO HIGH.
          CONCATENATE 'Date = ' LOW ' - ' HIGH INTO V_FIN1.
          FHEADER-TYP = 'H'.
          FHEADER-INFO = V_FIN1.
          APPEND FHEADER.
          CLEAR FHEADER.
        ENDLOOP.
      ENDIF.
    ENDFORM. " Z_TOP_OF_PAGE
    *& Form Z_LAYOUT_SETTINGS
    this is done for setting the properties for the layout of the *
    grid *
    has no formal paramters *
    FORM Z_LAYOUT_SETTINGS.
      FS_LAYO-ZEBRA = 'X'. " Output in Zebra pattern
      FS_LAYO-DETAIL_POPUP = 'X'. " A popup window appears to give
      FS_LAYO-DETAIL_TITLEBAR = TEXT-022.
      FS_LAYO-COLWIDTH_OPTIMIZE = 'X'.
    ENDFORM. " Z_LAYOUT_SETTINGS
    *& Form Z_ALV_EVENTS
    This is used for handling the events TOP OF PAGE and the USER *
    COMMAND event *
    has no formal paramters *
    FORM Z_ALV_EVENTS.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          I_LIST_TYPE = 0
        IMPORTING
          ET_EVENTS   = FEVENTS[].
      READ TABLE FEVENTS WITH KEY NAME = 'TOP_OF_PAGE'.
      IF SY-SUBRC = 0.
        FEVENTS-FORM = 'Z_TOPOFPAGE'.
        MODIFY FEVENTS INDEX SY-TABIX.
        CLEAR FEVENTS.
      ENDIF.
      READ TABLE FEVENTS WITH KEY NAME = 'USER_COMMAND'.
      IF SY-SUBRC = 0.
        FEVENTS-FORM = 'Z_USER_COMMAND'.
        MODIFY FEVENTS INDEX SY-TABIX.
        CLEAR FEVENTS.
      ENDIF.
    ENDFORM. "Z_ALV_EVENTS
    *& Form Z_CREATE_FIELD_CATALOG
    here the field catalog is created for the primary list *
    no formal parameters *
    FORM Z_CREATE_FIELD_CATALOG.
    for the Plant
      FCAT-FIELDNAME = 'WERKS'.
      FCAT-KEY = 'X'.
      FCAT-OUTPUTLEN = '000005'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Plant'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'C'.
      FCAT-DATATYPE = 'CHAR'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Material Type
      FCAT-FIELDNAME = 'MTART'.
      FCAT-KEY = 'X'.
      FCAT-OUTPUTLEN = '000006'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'MatTyp'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'C'.
      FCAT-DATATYPE = 'CHAR'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Material No.
      FCAT-FIELDNAME = 'MATNR'.
      FCAT-KEY = 'X'.
    fcat-hotspot = 'X'.
      FCAT-OUTPUTLEN = '000018'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Material'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'C'.
      FCAT-DATATYPE = 'CHAR'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Material Description
      FCAT-FIELDNAME = 'MAKTX'.
      FCAT-KEY = ''.
      FCAT-OUTPUTLEN = '000040'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Description'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'C'.
      FCAT-DATATYPE = 'CHAR'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Unit of Measure
      FCAT-FIELDNAME = 'MEINS'.
      FCAT-KEY = ''.
      FCAT-OUTPUTLEN = '03'.
      FCAT-JUST = 'C'.
      FCAT-SELTEXT_M = 'UOM'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'C'.
      FCAT-DATATYPE = 'UNIT'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Plant
      FCAT-FIELDNAME = 'MONTH'.
      FCAT-KEY = 'X'.
      FCAT-OUTPUTLEN = '08'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'MONTH'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'C'.
      FCAT-DATATYPE = 'CHAR'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Opening Stock
      FCAT-FIELDNAME = 'C_STK'.
      FCAT-HOTSPOT = ' '.
      FCAT-OUTPUTLEN = '000016'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Opening Stock'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'Q'.
      FCAT-DATATYPE = 'QUAN'.
    fcat-do_sum = 'X'.
      FCAT-JUST = 'R'.
      FCAT-NO_ZERO = 'X'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Total Receipts
      FCAT-FIELDNAME = 'TRECEP'.
      FCAT-HOTSPOT = ' '.
      FCAT-OUTPUTLEN = '000016'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Total Receipts'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'Q'.
      FCAT-DATATYPE = 'QUAN'.
      FCAT-DO_SUM = 'X'.
      FCAT-JUST = 'R'.
      FCAT-NO_ZERO = 'X'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Production
      FCAT-FIELDNAME = 'PRODU'.
      FCAT-HOTSPOT = ' '.
      FCAT-OUTPUTLEN = '000016'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Production'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'Q'.
      FCAT-DATATYPE = 'QUAN'.
      FCAT-DO_SUM = 'X'.
      FCAT-JUST = 'R'.
      FCAT-NO_ZERO = 'X'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Other Plant Receipts
      FCAT-FIELDNAME = 'RECEP'.
      FCAT-HOTSPOT = ' '.
      FCAT-OUTPUTLEN = '000016'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Othr Plnt Recpts'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'Q'.
      FCAT-DATATYPE = 'QUAN'.
      FCAT-DO_SUM = 'X'.
      FCAT-JUST = 'R'.
      FCAT-NO_ZERO = 'X'.
      APPEND FCAT.
      CLEAR FCAT.
    Sales Return
      FCAT-FIELDNAME = 'SAL_RET'.
      FCAT-HOTSPOT = ' '.
      FCAT-OUTPUTLEN = '000016'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Sales Return'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'Q'.
      FCAT-DATATYPE = 'QUAN'.
      FCAT-DO_SUM = 'X'.
      FCAT-JUST = 'R'.
      FCAT-NO_ZERO = 'X'.
      APPEND FCAT.
      CLEAR FCAT.
    Total Dispatches
      FCAT-FIELDNAME = 'TDISP'.
      FCAT-HOTSPOT = ' '.
      FCAT-OUTPUTLEN = '000016'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Total Dispatches'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'Q'.
      FCAT-DATATYPE = 'QUAN'.
      FCAT-DO_SUM = 'X'.
      FCAT-JUST = 'R'.
      FCAT-NO_ZERO = 'X'.
      APPEND FCAT.

  • Issue in ALV Report

    Hi,
    I have a issue in ALV Report for displaying one field's data into output.
    I am getting data into all other fields in ALV Report except for this field.
    This field & related fields are declared as below: in final internal table.
    sta_no     TYPE z3status,
    status(10) TYPE c,
    Here z3status is of type Char(1).
    In Report
    I have put a condition :
    IF i_tab-sta_no EQ 1.
       i_tab-status = 'Created'.
    ELSE.
       i_tab-status = 'Closed'.
    ENDIF.
    and to field catalog also i am passing right information as for every other field in ALV Report.
    Till the point use of REUSE_ALV_LIST_DISPLAY F.M also final internal table is having status field filled.
    But in output nothing gets displayed for Status field.
    Can anybody tell me what can be the issue!
    Thanks in advance.
    Thanks,
    Deep.

    Hi,
    I have no problem in data fetching into final internal table.
    Everything is coming well to REUSE_ALV_DISPLAY F.M.
    But still Status field data is not getting displayed.
    I have posted some code for reference:
            LOOP AT t_z3manboxid INTO wa_z3manboxid.
              wa_result-manifest_no     = wa_z3manboxid-zmanno.
              wa_result-item_no         = wa_z3manboxid-item_no.
              IF l_item_no NE wa_z3manboxid-item_no.
                wa_result-piece_quantity  = wa_z3manboxid-vemng.
                wa_result-unit            = wa_z3manboxid-vemeh.
                wa_result-manifester      = wa_z3manboxid-usnam.
                wa_result-manifest_sta_no = wa_z3manboxid-z3status.
                IF wa_result-manifest_sta_no EQ 1.
                  wa_result-manifest_status = c_created.
                ELSEIF wa_result-manifest_sta_no EQ 2.
                  wa_result-manifest_status = c_in_transit.
                ELSEIF wa_result-manifest_sta_no EQ 3.
                  wa_result-manifest_status = c_arrived.
                ELSEIF wa_result-manifest_sta_no EQ 4.
                  wa_result-manifest_status = c_closed.
                ENDIF.
              ENDIF.
              l_item_no  = wa_z3manboxid-item_no.
              APPEND wa_result TO t_result.
              CLEAR: wa_result, wa_z3manboxid.
            ENDLOOP.
    Building field catalog following code is added:
    For status call is as below:
      PERFORM f_build_fieldcat  USING c_tab
                                      c_manifest_status
                                      c_space
                                      c_space
                                      c_mannf_status
                                      c_space1
                                      15.
    FORM f_build_fieldcat USING p_tabname p_fldname
                                p_rtabname p_rfldname
                                p_fldhdg p_check
                                p_length.
      CLEAR t_fieldcat_ln1.
      ADD 1 TO g_col_pos.
      t_fieldcat_ln1-tabname       = p_tabname.
      t_fieldcat_ln1-fieldname     = p_fldname.
      t_fieldcat_ln1-ref_tabname   = p_rtabname.
      t_fieldcat_ln1-ref_fieldname = p_rfldname.
      t_fieldcat_ln1-ddictxt       = c_l.
      t_fieldcat_ln1-seltext_l     = p_fldhdg.
      t_fieldcat_ln1-no_zero       = space.
      t_fieldcat_ln1-do_sum        = space.
      t_fieldcat_ln1-col_pos       = g_col_pos.
      t_fieldcat_ln1-no_out        = space.
      t_fieldcat_ln1-just          = c_c.
      t_fieldcat_ln1-qfieldname    = space.
      t_fieldcat_ln1-checkbox      = p_check.
      t_fieldcat_ln1-input         = p_check.
      t_fieldcat_ln1-reptext_ddic  = p_fldhdg.
      IF p_fldname EQ c_manno.
        t_fieldcat_ln1-key     = c_x.
        t_fieldcat_ln1-hotspot = c_x.
      ELSE.
        t_fieldcat_ln1-key     = space.
        t_fieldcat_ln1-hotspot = p_check.
      ENDIF.
      t_fieldcat_ln1-outputlen      = p_length.
      t_fieldcat_ln1-intlen         = p_length.
      t_fieldcat_ln1-ddic_outputlen = p_length.
      APPEND t_fieldcat_ln1 TO t_fieldcat1.
    ENDFORM.                    " f_build_fieldcat
    FORM f_build_sortcat USING p_fldname.
      CLEAR t_sortcat_ln1.
      ADD 1 TO g_col_pos.
      t_sortcat_ln1-spos      = g_col_pos.
      t_sortcat_ln1-fieldname = p_fldname.
      t_sortcat_ln1-up        = c_x.
      t_sortcat_ln1-down      = space.
      t_sortcat_ln1-subtot    = c_x.
      APPEND t_sortcat_ln1 TO t_sortcat1.
    ENDFORM.                    " f_build_sortcat
    FORM f_build_layout.
      t_layout1-zebra           = c_x.
      t_layout1-no_vline        = c_space1.
      t_layout1-reprep          = c_x.
      t_layout1-detail_popup    = c_x.
      t_layout1-window_titlebar = text-005.
      t_layout1-no_scrolling    = c_space1.
      t_layout1-detail_titlebar = text-005.
      t_layout1-numc_sum        = c_x.
      t_layout1-get_selinfos    = c_x.
      t_layout1-min_linesize    = 132.
    ENDFORM.                    " f_build_layout
      DATA: l_pgm TYPE syrepid,
            l_exit(1) TYPE c.
      CLEAR: l_pgm,
             l_exit.
      l_pgm = sy-repid.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
           EXPORTING
                i_callback_program      = l_pgm
                i_callback_user_command = c_user_command
                is_layout               = t_layout1
                it_fieldcat             = t_fieldcat1
                i_save                  = c_a
                it_events               = t_eventcat1
           IMPORTING
                e_exit_caused_by_caller = l_exit
           TABLES
                t_outtab                = t_result
           EXCEPTIONS
                program_error           = 1
                OTHERS                  = 2.
      IF sy-subrc NE 0.
        l_exit = l_exit.
      ENDIF.
    To ALV F.M t_result table is updated with correct data.
    But it is not getting displayed.
    What can be the reason!
    Can anybody give the solution!
    Thanks for your replies.
    Thanks,
    Deep.

  • 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

  • Selection using check box in std ALV grid!

    Hi all,
    I have written a custom report to show the O/p in ALV grid.
    This is my code:
    TABLES :zpo_loi.
    TYPE-POOLS : slis.
    TYPE-POOLS: icon.
    TABLES : sscrfields.
    DATA : ls_composer TYPE ssfcompop,
               ls_control TYPE ssfctrlop.
    DATA : wa_return TYPE TABLE OF bapiret2  ,
            wa_address TYPE bapiaddr3.
    DATA : wa_crmd_orderadm_h TYPE zpo_loi,
           it_po TYPE TABLE OF crmd_orderadm_h,
           wa_po TYPE bbp_pds_header.
    DATA : it_tab TYPE TABLE OF zpo_loi.
    DATA :  it_data TYPE TABLE OF crmd_orderadm_h,
            wa_data TYPE bbp_pds_header,
            et_data TYPE bbps_sf_po_output.
    DATA : w_formname TYPE tdsfname ,
           w_sfname TYPE rs38l_fnam.
    DATA :it_po_no TYPE TABLE OF select_be_obj_id,
          wa_it_po_no  LIKE LINE OF it_po_no.
    DATA :r_itab TYPE ddshretval OCCURS 0.
    DATA : it_output LIKE TABLE OF zloi,
           wa_output TYPE zloi.
    DATA : w_answer TYPE c.
    DATA : g_repid LIKE sy-repid,
          g_title TYPE lvc_title,
          g_set_pf_stat TYPE slis_formname VALUE 'SET_PF_STATUS',
          g_user_command TYPE slis_formname VALUE 'USER_COMMAND',
          g_layout TYPE slis_layout_alv,
          g_print_alv TYPE slis_print_alv,
          g_variant LIKE disvariant,
          c_char_a(1) VALUE 'A',
          c_char_x(1) VALUE 'X',
          itab_alv_sort TYPE slis_t_sortinfo_alv,
          itab_alv_fcat TYPE slis_t_fieldcat_alv.
    *       Internal tables          Begin with IT_                       *
    DATA : it_fcat TYPE slis_t_fieldcat_alv,                           "---ALV
           it_disp TYPE TABLE OF zloi.
    *       Work Area for Internal tables      Begin with WA_             *
    DATA : wa_fcat TYPE slis_fieldcat_alv ,              "---ALV
           wa_layout           TYPE lvc_s_layo,               "---ALV
           wa_it_disp LIKE LINE OF it_disp.
    DATA : it_sf_po TYPE TABLE OF crmd_orderadm_h,
           wa_sf_po TYPE bbp_pds_header.
    *SELECTION-SCREEN:
    *  BEGIN OF SCREEN 500 AS WINDOW TITLE title,
    *  END OF SCREEN 500.
    *DATA : functxt TYPE smp_dyntxt.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS sel_po FOR zpo_loi-zobject_id.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
    PARAMETERS : pr_loi RADIOBUTTON GROUP grp1 USER-COMMAND ucom,
                 pr_fondo RADIOBUTTON GROUP grp1.
    SELECTION-SCREEN END OF BLOCK b2.
    *       At selection-screen output                                    *
    AT SELECTION-SCREEN OUTPUT.
      IF pr_fondo = 'X'.
        REFRESH sel_po.
        LOOP AT SCREEN.
          IF screen-name = text-003 OR screen-name = text-004.
            screen-input = '0'.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ELSEIF pr_loi = 'X'.
        LOOP AT SCREEN.
          IF screen-name = text-003 OR screen-name = text-004.
            screen-input = '1'.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ENDIF.
    *       At selection-screen on radiobutton                            *
    AT SELECTION-SCREEN ON RADIOBUTTON GROUP grp1.
      IF pr_fondo  = 'X'.
        REFRESH sel_po.
        LOOP AT SCREEN.
          IF screen-name = text-003 OR screen-name = text-004.
            screen-input = '0'.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ELSEIF pr_loi = 'X'.
        LOOP AT SCREEN.
          IF screen-name = text-003 OR screen-name = text-004.
            screen-input = '1'.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR sel_po-low.
      PERFORM populate_table.
      PERFORM f4_help.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR sel_po-high.
      PERFORM populate_table.
      PERFORM f4_help.
    *       At selection-screen                                           *
    AT SELECTION-SCREEN.
    *---CHECKING THE INPUT >>>
      IF sy-ucomm = 'ONLI'.
        PERFORM f002-check_input.
        PERFORM f001-check.
      ENDIF.
    *&      Form  POPULATE_TABLE
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM populate_table .
      SELECT zobject_id
               description
      FROM zpo_loi
      INTO CORRESPONDING FIELDS OF TABLE it_tab.
      SORT it_tab BY zobject_id ASCENDING.
    ENDFORM.                    " POPULATE_TABLE
    *&      Form  F4_HELP
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM f4_help .
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          ddic_structure = ' '
          retfield       = 'ZOBJECT_ID'
          dynpprog       = sy-repid
          dynpnr         = sy-dynnr
          dynprofield    = 'A'
          value_org      = 'S'
        TABLES
          value_tab      = it_tab
          return_tab     = r_itab.
    ENDFORM.                                                    " F4_HELP
    *&      Form  F001-CHECK
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM f001-check .
      IF pr_fondo = 'X'.
        PERFORM display_expiring_fondos.
      ELSEIF pr_loi = 'X'.
        PERFORM fetch_po_det.
        PERFORM build_fcat.
        PERFORM alv_display.
      ENDIF.
    ENDFORM.                    " F001-CHECK
    *&      Form  F002-CHECK_INPUT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM f002-check_input .
      IF pr_loi = 'X'.
        REFRESH it_po.
        IF sel_po-low IS NOT INITIAL.
          SELECT object_id
          FROM crmd_orderadm_h
          INTO CORRESPONDING FIELDS OF TABLE it_po
          WHERE object_type = 'BUS2201'
          AND object_id = sel_po-low.
          IF sy-subrc NE 0.
            IF sel_po-high IS NOT INITIAL.
              SELECT object_id
              FROM crmd_orderadm_h
              INTO CORRESPONDING FIELDS OF TABLE it_po
              WHERE object_type = 'BUS2201'
              AND  object_id = sel_po-high.
              IF sy-subrc NE 0.
                MESSAGE e009(zsrm).
              ENDIF.
            ENDIF.
            MESSAGE e007(zsrm).
          ENDIF.
        ELSE.
          MESSAGE e010(zsrm).
        ENDIF.
        IF sel_po-high IS NOT INITIAL.
          SELECT object_id
          FROM crmd_orderadm_h
          INTO CORRESPONDING FIELDS OF TABLE it_po
          WHERE object_type = 'BUS2201'
          AND  object_id = sel_po-high.
          IF sy-subrc NE 0.
            MESSAGE e008(zsrm).
          ENDIF.
        ENDIF.
      ENDIF.
    ENDFORM.                    " F002-CHECK_INPUT
    *&      Form  FETCH_PO_DET
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM fetch_po_det .
      REFRESH it_po.
      it_po_no[] = sel_po[].
      DATA : w_count TYPE i,
             w_lines TYPE c,
             wa_header TYPE bbp_pds_po_header_d.
      REFRESH : it_po,it_output.
      IF sel_po-high IS NOT INITIAL.
        SELECT object_id
               description
               posting_date
               created_by
        FROM crmd_orderadm_h
        INTO CORRESPONDING FIELDS OF TABLE it_po
        WHERE object_type = 'BUS2201'
        AND object_id BETWEEN sel_po-low AND sel_po-high.
      ELSE.
        SELECT object_id
               description
               posting_date
               created_by
        FROM crmd_orderadm_h
        INTO CORRESPONDING FIELDS OF TABLE it_po
        WHERE object_type = 'BUS2201'
        AND object_id = sel_po-low.
      ENDIF.
      w_lines = sy-dbcnt.
      w_count = 1.
      DO.
        IF w_count LE w_lines.
          READ TABLE it_po INTO wa_po INDEX w_count.
          MOVE wa_po-object_id TO wa_output-zzpono.
          MOVE wa_po-description TO wa_output-zzpodesc.
          MOVE wa_po-posting_date TO wa_output-zzpodate.
          MOVE wa_po-created_by TO wa_output-zzpocreator.
          CALL FUNCTION 'BBP_PD_PO_GETDETAIL'
            EXPORTING
              i_object_id = wa_output-zzpono
            IMPORTING
              e_header    = wa_header.
          CALL FUNCTION 'BAPI_USER_GET_DETAIL'
            EXPORTING
              username = wa_output-zzpocreator
            IMPORTING
              address  = wa_address
            TABLES
              return   = wa_return.
          CLEAR wa_output-zzpocreator.
          CONCATENATE wa_address-firstname '   '  wa_address-lastname INTO wa_output-zzpocreator .
          MOVE wa_header-total_value TO wa_output-zzpoval.
          MOVE wa_header-currency TO wa_output-zzpocur.
          APPEND wa_output TO it_output.
          w_count = w_count + 1.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.
    ENDFORM.                    " FETCH_PO_DET
    *&      Form  BUILD_FCAT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM build_fcat .
      g_repid = sy-repid.
      g_title = 'Print LOI details'.
      g_print_alv-no_print_listinfos = 'X'.
      g_variant-report = sy-repid.
      g_variant-variant = sy-title.
      CLEAR g_layout.
      g_layout-f2code = ' '.
      wa_layout-zebra       = 'X'.
      g_layout-flexible_key = 'X'.
      g_layout-colwidth_optimize = 'X'.
      g_layout-detail_initial_lines = 'X'.
      g_layout-box_fieldname = 'ZZCHECK'.
      REFRESH it_fcat.
    *Po no
      CLEAR wa_fcat.
      wa_fcat-fieldname = 'ZZPONO' .
      wa_fcat-tabname = 'IT_DISP'.
      wa_fcat-seltext_m  = 'Purchase Order'.
    *wa_fcat-seltext_s = 'Purchase Order.
      wa_fcat-icon = 'X'.
      wa_fcat-col_pos = '2'.
      wa_fcat-outputlen = 10.
      APPEND wa_fcat TO it_fcat.
    *Description
      CLEAR wa_fcat.
      wa_fcat-fieldname = 'ZZPODESC' .
      wa_fcat-tabname = 'IT_DISP'.
    *wa_fcat-seltext_l = 'Description'.
      wa_fcat-seltext_m = 'Description'.
    *wa_fcat-seltext_s = 'Description'.
      wa_fcat-col_pos = '3'.
      wa_fcat-outputlen = 10.
      APPEND wa_fcat TO it_fcat.
    *Posting date
      CLEAR wa_fcat.
      wa_fcat-fieldname = 'ZZPODATE' .
      wa_fcat-tabname = 'IT_DISP'.
      wa_fcat-seltext_l = 'Posting Date'.
      wa_fcat-seltext_m = 'Posting Date'.
    *wa_fcat-seltext_s = 'Posting Date'.
      wa_fcat-col_pos = '4'.
      wa_fcat-outputlen = 8.
      APPEND wa_fcat TO it_fcat.
    *value
      CLEAR wa_fcat.
      wa_fcat-fieldname = 'ZZPOVAL' .
      wa_fcat-tabname = 'IT_DISP'.
    *wa_fcat-seltext_l = 'PO value'.
      wa_fcat-seltext_m = 'PO value'.
    *wa_fcat-seltext_s = 'PO value'.
      wa_fcat-col_pos = '5'.
      wa_fcat-outputlen = 15.
      wa_fcat-no_zero = 'X'.
      APPEND wa_fcat TO it_fcat.
    *Currency
      CLEAR wa_fcat.
      wa_fcat-fieldname = 'ZZPOCUR' .
      wa_fcat-tabname = 'IT_DISP'.
    *wa_fcat-seltext_l = 'PO Currency'.
      wa_fcat-seltext_m = 'PO Currency'.
    *wa_fcat-seltext_s = 'PO Currency'.
      wa_fcat-col_pos = '6'.
      wa_fcat-outputlen = 5.
      APPEND wa_fcat TO it_fcat.
    *Creator
      CLEAR wa_fcat.
      wa_fcat-fieldname = 'ZZPOCREATOR' .
      wa_fcat-tabname = 'IT_DISP'.
    *wa_fcat-seltext_l = 'Buyer'.
      wa_fcat-seltext_m = 'Buyer'.
    *wa_fcat-seltext_s = 'Buyer'.
      wa_fcat-col_pos = '7'.
      wa_fcat-outputlen = 12.
      APPEND wa_fcat TO it_fcat.
    ENDFORM.                    " BUILD_FCAT
    *&      Form  ALV_DISPLAY
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM alv_display .
      SORT it_output BY zzpono.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program       = g_repid
          i_callback_pf_status_set = g_set_pf_stat
          i_callback_user_command  = g_user_command
          i_grid_title             = g_title
          is_layout                = g_layout
          it_fieldcat              = it_fcat[]
          is_variant               = g_variant
          is_print                 = g_print_alv
        TABLES
          t_outtab                 = it_output[]
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
      IF sy-subrc <> 0.
      ENDIF.
    ENDFORM.                    " ALV_DISPLAY
    *&      Form  user_command
    *       text
    *      -->R_UCOMM      text
    *      -->RS_SELFIELD  text
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.                             "#EC CALLED
      DATA: gd_repid LIKE sy-repid, "Exists
      ref_grid TYPE REF TO cl_gui_alv_grid.
      IF ref_grid IS INITIAL.
        CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
          IMPORTING
            e_grid = ref_grid.
      ENDIF.
      IF NOT ref_grid IS INITIAL.
        CALL METHOD ref_grid->check_changed_data .
      ENDIF.
      rs_selfield-refresh = 'X'.
      CASE r_ucomm.
        WHEN 'PRINTLOI'.
          PERFORM call_sf.
        WHEN 'BACK'.
          CALL SELECTION-SCREEN 1000.
        WHEN 'CANCEL'.
          CALL SELECTION-SCREEN 1000.
        WHEN 'EXIT'.
          CALL SELECTION-SCREEN 1000.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  set_pf_status
    *       text
    *      -->RT_EXTAB   text
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZALV' EXCLUDING rt_extab.
      SET TITLEBAR 'ZALV'.
    ENDFORM.                    "set_pf_status
    *&      Form  CALL_SF
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM call_sf .
      REFRESH it_sf_po.
      LOOP AT it_output INTO wa_output WHERE zzcheck = 'X'.
        wa_sf_po-object_id = wa_output-zzpono.
        APPEND wa_sf_po TO it_sf_po.
      ENDLOOP.
      w_formname = 'ZSR_EBP_DOCU_LETTEROFINTENT1'.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname           = w_formname
        IMPORTING
          fm_name            = w_sfname
        EXCEPTIONS
          no_form            = 1
          no_function_module = 2
          OTHERS             = 3.
      IF sy-subrc <> 0.
      ENDIF.
      ls_composer-tdnewid = 'X'.
      ls_control-no_dialog = 'X'.
      LOOP AT it_sf_po INTO wa_sf_po.
        CALL FUNCTION w_sfname
          EXPORTING
            control_parameters = ls_control
            output_options     = ls_composer
            wa_object          = wa_sf_po
          EXCEPTIONS
            formatting_error   = 1
            internal_error     = 2
            send_error         = 3
            user_canceled      = 4
            OTHERS             = 5.
        IF sy-subrc <> 0.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " CALL_SF
    *&      Form  DISPLAY_EXPIRING_FONDOS
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM display_expiring_fondos .
      SET PF-STATUS 'ZLOI'.
      SET TITLEBAR 'ZLOI'.
      TYPES : BEGIN OF ty_output1,
                guid TYPE bbp_guid,
                object_id TYPE crmt_object_id_db,
                description TYPE crmt_process_description,
                posting_date TYPE crmt_posting_date,
                zzfondo_dat TYPE zfondo_dat,
                created_by TYPE crmt_created_by,
               END OF ty_output1.
      DATA : it_output1 TYPE TABLE OF ty_output1,
             wa_output1 TYPE ty_output1,
              w_lines,
              w_count,
              it_fondo TYPE TABLE OF zsr_fondo,
              it_temp_fondo TYPE TABLE OF zsr_fondo,
              wa_temp_fondo TYPE zsr_fondo,
              wa_fondo TYPE zsr_fondo,
              w_diff TYPE p,
              wa_header1  TYPE bbp_pds_po_header_d.
      CONSTANTS : c_otype(8) VALUE 'BUS2201'.
      REFRESH : it_output1,it_temp_fondo,it_fondo.
      SELECT b~zzfondo_dat
             a~guid
             a~object_id
             a~description
             a~posting_date
             a~created_by
      INTO CORRESPONDING FIELDS OF TABLE it_output1
      FROM bbp_pdhsc AS b
      LEFT OUTER JOIN crmd_orderadm_h AS a ON b~guid = a~guid
      AND a~object_type = c_otype.
      LOOP AT it_output1 INTO wa_output1.
        CALL FUNCTION '/SDF/CMO_DATETIME_DIFFERENCE'
          EXPORTING
            date1            = sy-datum
            date2            = wa_output1-zzfondo_dat
          IMPORTING
            datediff         = w_diff
          EXCEPTIONS
            invalid_datetime = 1
            OTHERS           = 2.
        IF sy-subrc <> 0.
        ENDIF.
        IF w_diff <= '7'.
          wa_temp_fondo-zzpono = wa_output1-object_id.
          APPEND wa_temp_fondo TO it_temp_fondo.
        ENDIF.
      ENDLOOP.
    *select the final entries for PO whose FONDO is expiring
      DESCRIBE TABLE it_temp_fondo LINES w_lines.
      w_count = 1.
      DO.
        IF w_count LE w_lines.
          READ TABLE it_temp_fondo INTO wa_temp_fondo INDEX w_count.
          IF sy-subrc = 0.
            CALL FUNCTION 'BBP_PD_PO_GETDETAIL'
              EXPORTING
                i_object_id = wa_temp_fondo-zzpono
              IMPORTING
                e_header    = wa_header1.
            wa_fondo-zzpono = wa_temp_fondo-zzpono.
            wa_fondo-zzpodesc = wa_header1-description.
            wa_fondo-zzpodate =  wa_header1-posting_date.
            wa_fondo-zzexpdate = wa_header1-zzfondo_dat.
            wa_fondo-zzpoval = wa_header1-total_value.
            wa_fondo-zzpocur = wa_header1-currency.
            wa_fondo-zzpocreator = wa_header1-created_by.
            CLEAR : wa_address.
            REFRESH wa_return.
            CALL FUNCTION 'BAPI_USER_GET_DETAIL'
              EXPORTING
                username = wa_header1-created_by
              IMPORTING
                address  = wa_address
              TABLES
                return   = wa_return.
            CLEAR wa_fondo-zzpocreator.
            CONCATENATE wa_address-firstname '   '  wa_address-lastname INTO wa_fondo-zzpocreator .
            w_count = w_count + 1.
            APPEND wa_fondo TO it_fondo.
          ENDIF.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_structure_name = 'ZSR_FONDO'
          i_grid_title     = 'EXPIRING FONDOS'
        TABLES
          t_outtab         = it_fondo[]
        EXCEPTIONS
          program_error    = 1
          OTHERS           = 2.
      IF sy-subrc <> 0.
      ENDIF.
    ENDFORM.                    " DISPLAY_EXPIRING_FONDOS
    Now in my ALV grid o/p i can see the check box but if i select one row and then try to select another the first one gets deselected.
    Can anybody tell me what is missing?

    Hi,
    Try like changing  this
    insted of
    g_layout-f2code = ' '.
    use this
    g_layout-f2code = 'DISP'. " Sets fcode for when double
    and
    g_layout-f2code = '&ETA'. " it will display POPUP screen
    Best Regards
    Ranga
    Edited by: Ranga Swamy on Nov 1, 2008 11:07 PM
    Edited by: Ranga Swamy on Nov 1, 2008 11:17 PM

Maybe you are looking for

  • Report Generation libraries

    Hi Everyone I have a problem with the report generation tooolkit. I found the error and it was reported to NI. Here is the link:  http://digital.ni.com/public.nsf/allkb/1A12BE048F6D7B15862577A00064C4D0 It says:  Installation Instructions Close LabVIE

  • Day wise in MD61

    HI,        I ahve a requirement for every month 10 pieces, but i ahve saved this scenario. How to change by day wise? Can u give me some idea. Regards, NSR.

  • Libraries

    Hi we are developing a system that involves using libraries of objects (maybe better to say classes), each one implements a common interface. A client program has to be able to request a particular object (via a name parameter). The question is what

  • Seimens HMI Integration with SAP MII

    Dear MII Experts, We are trying to integrate shop floor systems with SAP MII for discrete manufacturing industry. I came across the client has 70+ machines in the plant .the vendor is "DMG" Seimens HMI is installed on each machine . What are the poss

  • The button to select the songs i would like from home share isnt there

    at first the home sharing device wasnt even showing up. now that it is, it doesnt give me the option to import the songs.