Writing Subtotal and Grandtotal in ALV Report

Dear All,
I have a requirement that instead of  *  and  **  in Subtotal and Grandtotal, I will require to write text "Subtotal" and "Grandtotal" written. Can you please help me out?
Thanks and regards,
Atanu

HI
http://help.sap.com/saphelp_sm32/helpdata/en/ee/b99d37e188a049e10000009b38f8cf/content.htm
Use "Subtotal_text" in events table.
here GTOTAL is field in itab on which we sortindf data, and use your own field on which field u want to sort...
refresh gt_event.
clear gw_event.
call function 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_event.
Subtotal
read table gt_event with key name = slis_ev_subtotal_text into gw_event.
if sy-subrc = 0.
move 'SUBTOTAL_TEXT' to gw_event-form.
append gw_event to gt_event.
endif.
form subtotal_text using uw_subtot_line type ty_main
uv_subtottxt type slis_subtot_text. "#EC CALLED
if uv_subtottxt-criteria = 'GTOTAL'.
uv_subtottxt-display_text_for_subtotal = 'TOTAL'.
endif.
*FORM build_sort .
refresh gt_sort.
gw_sort-spos = 1.
gw_sort-fieldname = 'GTOTAL'.
gw_sort-tabname = 'GT_MAIN'.
gw_sort-up = 'X'.
gw_sort-subtot = 'X'.
APPEND gw_sort TO gt_sort.
CLEAR gw_sort.

Similar Messages

  • Subtotal and total in alv report

    hi,
    i have an ALV REPORT,displaying the fields such as po item(ekpo-menge).but i am unable to perform total and sub total,it gives me a information message 'total cannot b performed'.
      can any one help me, how to total and subtotal.

    Hi,
    Please go through the following links. I am sure it will help you.
    <a href="http://www.sapfans.com/forums/viewtopic.php?t=20386">http://www.sapfans.com/forums/viewtopic.php?t=20386</a>
    <a href="http://www.sapfans.com/forums/viewtopic.php?t=85191">http://www.sapfans.com/forums/viewtopic.php?t=85191</a>
    <a href="http://www.sapfans.com/forums/viewtopic.php?t=88401">http://www.sapfans.com/forums/viewtopic.php?t=88401</a>
    Please reward helpful answer.
    Regards,
    Amit Mishra

  • Re: Printing currency (INR,ISK) beside subtotal or  grandtotal in alv

    hi to all,
      i developed an alv report i want to display a currency beside subtotalor grandtotal .
      can any one help in this regard
    regards
      raj

    Hi,
    check this sample code..
    REPORT  ZTEST_ALV_REPORT.
    * This program lists orders (VBAK) with sort and sub-total for        *
    * 'sold-to-party' (KUNNR) and 'Sales organization' (VKORG)            *
    TABLES : vbak.
    TYPE-POOLS: slis.                      " ALV Global types
    SELECT-OPTIONS :
      s_vkorg FOR vbak-vkorg,              " Sales organization
      s_kunnr FOR vbak-kunnr,              " Sold-to party
      s_vbeln FOR vbak-vbeln.              " Sales document
    SELECTION-SCREEN :
      SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.
    PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
      DATA:
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv,
        lt_sort     TYPE slis_t_sortinfo_alv,
        ls_sort     TYPE slis_sortinfo_alv,
        ls_layout   TYPE slis_layout_alv.
    DATA:
      BEGIN OF gt_vbak OCCURS 0,
        vkorg LIKE vbak-vkorg,             " Sales organization
        kunnr LIKE vbak-kunnr,             " Sold-to party
        vbeln LIKE vbak-vbeln,             " Sales document
        netwr LIKE vbak-netwr,             " Net Value of the Sales Order
        waerk LIKE vbak-waerk,             " Document currency
      END OF gt_vbak.
    types:
      BEGIN OF t_vbak,
        vkorg LIKE vbak-vkorg,             " Sales organization
        kunnr LIKE vbak-kunnr,             " Sold-to party
        vbeln LIKE vbak-vbeln,             " Sales document
        netwr LIKE vbak-netwr,             " Net Value of the Sales Order
        waerk LIKE vbak-waerk,             " Document currency
      END OF t_vbak.
      DATA: IT_VBAK TYPE T_VBAK OCCURS 0 WITH HEADER LINE.
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
       I_PROGRAM_NAME               = sy-repid
       I_INTERNAL_TABNAME             = 'IT_VBAK'
       I_INCLNAME                   = SY-REPID
      CHANGING
        CT_FIELDCAT                = lt_fieldcat
    EXCEPTIONS
       INCONSISTENT_INTERFACE       = 1
       PROGRAM_ERROR                = 2
       OTHERS                       = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
       I_PROGRAM_NAME               = SY-REPID
       I_INTERNAL_TABNAME           = 'GT_VBAK'
       I_INCLNAME                   = SY-REPID
      CHANGING
        CT_FIELDCAT                  = lt_fieldcat
    EXCEPTIONS
       INCONSISTENT_INTERFACE       = 1
       PROGRAM_ERROR                = 2
       OTHERS                       = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    INITIALIZATION.
      v_1 = 'Maximum of records to read'.
    START-OF-SELECTION.
      PERFORM f_read_data.
      PERFORM f_display_data.
    *      Form  f_read_data
    FORM f_read_data.
      SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_vbak
               FROM vbak
                 UP TO p_max ROWS
              WHERE kunnr IN s_kunnr
                AND vbeln IN s_vbeln
                AND vkorg IN s_vkorg.
    ENDFORM.                               " F_READ_DATA
    *      Form  f_display_data
    FORM f_display_data.
      DEFINE m_fieldcat.
        add 1 to ls_fieldcat-col_pos.
        ls_fieldcat-fieldname   = &1.
        ls_fieldcat-ref_tabname = 'VBAK'.
        ls_fieldcat-do_sum      = &2.
        ls_fieldcat-cfieldname  = &3.
        append ls_fieldcat to lt_fieldcat.
      END-OF-DEFINITION.
      DEFINE m_sort.
        add 1 to ls_sort-spos.
        ls_sort-fieldname = &1.
        ls_sort-up        = 'X'.
        ls_sort-subtot    = &2.
        ls_sort-group     = '*'.
        append ls_sort to lt_sort.
      END-OF-DEFINITION.
      DATA:
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv,
        lt_sort     TYPE slis_t_sortinfo_alv,
        ls_sort     TYPE slis_sortinfo_alv,
        ls_layout   TYPE slis_layout_alv.
      m_fieldcat 'VKORG' ''  ''.
      m_fieldcat 'KUNNR' ''  ''.
      m_fieldcat 'VBELN' ''  ''.
    <b>  m_fieldcat 'NETWR' 'C' 'WAERK'.
      m_fieldcat 'WAERK' ''  ''.</b>
      m_sort 'VKORG' 'X'.                  " Sort by vkorg and subtotal
      m_sort 'KUNNR' 'X'.                  " Sort by kunnr and subtotal
      m_sort 'VBELN' ''.                   " Sort by vbeln
    *  ls_layout-cell_merge = 'X'.
      LS_LAYOUT-WINDOW_TITLEBAR = 'test window'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                is_layout   = ls_layout
                it_fieldcat = lt_fieldcat
                it_sort     = lt_sort
           TABLES
                t_outtab    = gt_vbak.
    ENDFORM.                               " F_DISPLAY_DATA
    Regards
    vijay

  • Subtotals and Totals In ALV Report

    Hi Experts,
    I have a problem in my current scenario,
    I have 3 fields,
    KUNNR, WAERS, DMBTR.
    000001 USD         100.00
    000001 USD         200.00
    000002 USD         100.00
    000002 USD         400.00
    000002 EUR         300.00
    000002 EUR         100.00
    The above mentioned is the data I have in my internal table & in my ALV report as well, Which is fine...!
    Now I need Subtotals for each customer,
    Means for customer 000001 The subtotal is 300 (USD)
    Means for customer 000002 The subtotal is 500 (USD)
    Means for customer 000002 The subtotal is 400 (EUR)
    At the end I need grand totals.
    USD 800
    EUR 400.
    Currently My field catalog is given below.
        FIELDCATALOG-COL_POS     = COL_POS.
        FIELDCATALOG-FIELDNAME   = 'DMBTR'.
        FIELDCATALOG-SELTEXT_M   = TEXT-106.
        FIELDCATALOG-DO_SUM      = 'X'.
        APPEND FIELDCATALOG TO FIELDCATALOG.
        CLEAR  FIELDCATALOG.
    what else I need to do for getting individual subtotals by currency and customers.
    Thanks & regards,
    Dileep .C

    Hi Deelip,
    FOR TOTAL:
    there is a property of fieldcatalog, that is do_sum.
    USE COED LIKE:
    PERFORM fieldcat USING:
    '1' 'KUNNR' 'I_MARD' 'CUSTOMER NO' ,
    '2' 'DMBTR' 'I_MARD' 'CURRENCY' ,
    FORM fieldcat USING value(p_0029)
    value(p_0030)
    value(p_0031)
    value(p_0032)
    wa_fieldcat-col_pos = p_0029.
    wa_fieldcat-fieldname = p_0030.
    wa_fieldcat-tabname = p_0031.
    wa_fieldcat-reptext = p_0032.
    wa_fieldcat-do_sum = 'X'.
    APPEND wa_fieldcat TO i_fieldcat.
    ENDFORM. " FIELDCAT
    in final output you will get the total of currency field.
    FOR SUB TOTAL:
    decleare: i_sort type standard table of slis_sortinfo_alv,
              wa_sort type slis_t_sortinfo_alv.
    wa_sort-spos = '1'.
    wa_sort-fieldname = 'KUNNR'.
    wa_sort-tablename = 'i_final'
    wa_sort-up = 'x'
    wa_sort-subtot = 'X'.
    wa_sort-spos = '2'.
    wa_sort-fieldname = 'WAERS'.
    wa_sort-tablename = 'i_final'
    wa_sort-up = 'x'
    wa_sort-subtot = 'X'.
    append wa_tab to i_sort.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = sy-repid
    it_fieldcat = it_fieldcat
    it_sort = i_sort
    Hope this can solve your pbs.
    Regards,
    Tutun

  • Subtotal calculation display in ALV report

    hi,
    i had made a report n alv which is almost complete but i want to add the feature that when i click on a field when output is displayed den the subtotal of all qty fields should be shown also.
    plz provide me with useful example as i am using the concept of INTERNAL TABLES.
    plzz reply fast as it is important to me and definately rewarded.

    Hi ric,
    check out this code.
    *& Report  ZST_ALV
    REPORT  ZST_ALV.
    type-POOLs: slis.
    --ALV Related Variables--
    DATA: lt_fcat          TYPE slis_t_fieldcat_alv,
          lw_fcat          TYPE slis_fieldcat_alv,
          lv_variant       TYPE disvariant,
          lv_layout        TYPE slis_layout_alv,
          lt_sort          type slis_t_sortinfo_alv,
          lw_sort          type slis_sortinfo_alv.
    types: begin of ty_vbap,
           vbeln type vbap-vbeln,
           posnr type vbap-posnr,
           zmeng type vbap-zmeng,
           end  of ty_vbap.
    data: lt_vbap type table of ty_vbap.
    start-of-selection.
    select vbeln posnr zmeng
           from  vbap
           into  table lt_vbap.
    sort lt_vbap descending.
    clear lw_fcat.
    lw_fcat-fieldname = 'VBELN'.
    lw_fcat-seltext_l = 'Sales document'.
    append lw_fcat to lt_fcat.
    clear lw_fcat.
    lw_fcat-fieldname = 'POSNR'.
    lw_fcat-seltext_l = 'Sales document'.
    append lw_fcat to lt_fcat.
    clear lw_fcat.
    lw_fcat-fieldname = 'ZMENG'.
    lw_fcat-seltext_l = 'Sales document'.
    lw_fcat-do_sum = 'X'.
    append lw_fcat to lt_fcat.
    lw_sort-spos = 1.
    lw_sort-fieldname = 'VBELN'.
    LW_SORT-Up = 'X'.
    append lw_sort to lt_sort.
    clear lw_sort.
    lw_sort-spos = 3.
    lw_sort-fieldname = 'ZMENG'.
    LW_SORT-Up = 'X'.
    lw_sort-subtot = 'X'.
    append lw_sort to lt_sort.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
      I_CALLBACK_PROGRAM                = ' '
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
      I_CALLBACK_TOP_OF_PAGE            = ' '
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
       IT_FIELDCAT                       = lt_fcat[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
       IT_SORT                           = lt_sort[]
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
      IT_EVENTS                         =
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = lt_vbap
    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.
    regards,
    Santosh Thorat

  • Preview and Download in ALV report blank

    Dear All,
    I have a problem. When user preview and download to local save (txt, xls, etc) from report in ALV format, user get blank preview and blank file.
    I use 2 FM.
    1st i use FM REUSE_ALV_LIST_LAYOUT_INFO_GET to get fieldcat because user want to download after customize the layout (example default there are 5 field then user hide 2 field so only 3 field are displayed and downloaded).
    2nd I use FM REUSE_ALV_GRID_DISPLAY to display as ALV format. and user can download via download button default in ALV format.
    so, anyone.. could u help me ??
    Thanks

    Hi,
    ok I generaeted the fieldcatalog for the above and try to execute as this as I described above
    i am giving the code just check it.
    type-pools SLIS.
    data : lv_vbeln type vbak-vbeln.
    select-options : so_vbeln for lv_vbeln.
    initialization.
    so_vbeln-low = '4970'.
    so_vbeln-high = '4975'.
    append so_vbeln.
    data : lt_fcat type SLIS_T_FIELDCAT_ALV,
           ls_fcat like line of lt_fcat.
    types : begin of ty_vbak,
             vbeln type vbak-vbeln,
             erdat type vbak-erdat,
             erzet type vbak-erzet,
             ernam type vbak-ernam,
           end of ty_vbak.
    data : lt_vbak type standard table of ty_vbak,
           ls_vbak type ty_vbak.
    data : ls_variant like DISVARIANT.
    data : ls_layo type  SLIS_LAYOUT_ALV.
    start-of-selection.
    perform getvbak.
    if sy-subrc eq 0.
    perform displayvbak.
    endif.
    FORM GETVBAK .
    select vbeln erdat erzet ernam from vbak
      into table lt_vbak
      where vbeln in so_vbeln.
    ENDFORM.                    " GETVBAK
    FORM DISPLAYVBAK .
    clear ls_fcat.
    ls_fact-fieldname = 'VBELN'.
    ls_fcat-colpos = 1.
    ls_fcat-seltext_m = 'Sales No'.
    ls_fcat-outputlen = 10.
    append ls_fcat to lt_fcat.
    clear ls_fcat.
    ls_fact-fieldname = 'ERDAT'.
    ls_fcat-colpos = '2'.
    ls_fcat-seltext_m = 'Date'.
    ls_fcat-outputlen = 10.
    append ls_fcat to lt_fcat.
    clear ls_fcat.
    ls_fact-fieldname = 'ERZET'.
    ls_fcat-colpos = '3'.
    ls_fcat-seltext_m = 'Time'.
    ls_fcat-outputlen = 10.
    append ls_fcat to lt_fcat.
    clear ls_fcat.
    ls_fact-fieldname = 'ERNAM'.
    ls_fcat-colpos = '4'.
    ls_fcat-seltext_m = 'Created By'.
    ls_fcat-outputlen = 10.
    append ls_fcat to lt_fcat.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
       I_CALLBACK_PROGRAM                = sy-repid
       IS_LAYOUT                         = ls_layo
       IT_FIELDCAT                       = lt_fcat[]
       I_SAVE                            = 'X'
       IS_VARIANT                        = ls_variant
      TABLES
        T_OUTTAB                          = lt_vbak[].
    ENDFORM.                    " DISPLAYVBAK
    Thanks & Regards,
    Raghunadh K

  • How to make subtotal when first displaying ALV report

    Hi friends,
    I develop a report need to subtotalize some column, for example Goods Receipt Qty and DN quantity by Purchase order or PO line item. My parts of ABAP coding are below:
    ******fieldcat coding
    CLEAR fieldcat_in.
    fieldcat_ln-fieldname = 'EBELN'.
    fieldcat_ln-tabname = 'I_OUTPUT'.
    fieldcat_ln-key = 'X'.
    fieldcat_ln-no_out = ' '.
    fieldcat_ln-seltext_l = 'Purchase Order'.
    APPEND fieldcat_ln TO gt_fieldcat.
    CLEAR fieldcat_in.
    fieldcat_ln-fieldname = 'EBELP'.
    fieldcat_ln-key = ''.
    fieldcat_ln-tabname = 'I_OUTPUT'.
    fieldcat_ln-no_out = ' '.
    fieldcat_ln-seltext_l = 'PO item'.
    APPEND fieldcat_ln TO gt_fieldcat.
    CLEAR fieldcat_in.
    fieldcat_ln-fieldname = 'GR_QTY'.
    fieldcat_ln-tabname = 'I_OUTPUT'.
    fieldcat_ln-key = ' '.
    fieldcat_ln-no_out = ' '.
    fieldcat_in-do_sum = 'X'.
    fieldcat_ln-seltext_l = 'GR Quantity'.
    APPEND fieldcat_ln TO gt_fieldcat.
    CLEAR fieldcat_in.
    fieldcat_ln-fieldname = 'DNQTY'.
    fieldcat_ln-tabname = 'I_OUTPUT'.
    fieldcat_ln-key = ' '.
    fieldcat_ln-no_out = ' '.
    fieldcat_ln-seltext_l = 'DN Qty'.
    fieldcat_in-do_sum = 'X'.
    APPEND fieldcat_ln TO gt_fieldcat.
    *****sorting coding
    data spos type i.
    spos = spos + 1.
    CLEAR gs_sort.
    gs_sort-fieldname = 'EBELN'.
    gs_sort-tabname = 'I_OUTPUT'.
    gs_sort-spos = spos.
    gs_sort-up = 'X'.
    gs_sort-subtot = 'X'.
    gs_sort-expa = 'X'.
    APPEND gs_sort TO gt_sort.
    spos = spos + 1.
    CLEAR gs_sort.
    gs_sort-fieldname = 'EBELP'.
    gs_sort-tabname = 'I_OUTPUT'.
    gs_sort-spos = spos.
    gs_sort-up = 'X'.
    gs_sort-subtot = 'X'.
    gs_sort-expa = 'X'.
    APPEND gs_sort TO gt_sort.
    But it does not work. I chekc my report and fuond that the Subtotal button is not existed in application toolbar when first displaying it. I do the subtotal manually and it can subtotalize my desired column. Any have suggestion/solution on this case. Thanks very much in advance.

    hi,
    pls chk this.
    In order to do the sub-total the main total has to be calculated and then the sub-total process can be performed.
    In the main fieldcat mark this field
    wa_line_fieldcat-fieldname = 'VALUE'.
    wa_line_fieldcat-tabname = 'I_OUTPUT'.
    wa_line_fieldcat-reptext = text-021.
    wa_line_fieldcat-do_sum = 'X'.
    APPEND wa_line_fieldcat TO i_fieldcat.
    this will do the main total part.
    Sub-total:
    you will have to create an internal table sort
    CLEAR struct_sort.
    struct_sort-spos = 1.
    struct_sort-fieldname = 'VALUE'.
    struct_sort-up = 'X'.
    struct_sort-subtot = 'X'.
    APPEND struct_sort TO i_sort.
    Now pass these two internal tables to the display
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    IT_SORT = i_sort
    TABLES
    t_outtab = I_OUTPUT
    Hope this solves ur issue.
    Reward if helpful.
    Regards,
    anver

  • Layout change and save for ALV report

    Hi,
    I ahve created R3 report in which report has been displayed using ALV grid, I am able to change the layout as I can see the layout -> change option in settings menu, but save and choose option is disabled.
    Please advise how to enable layoutr save and choose option for ALV grid.
    Thanks,
    Piyush

    Hi,
    According to sap help you need authorization to save Layout
    [ALV -Layout|http://help.sap.com/saphelp_sm32/helpdata/en/82/839d37664e4d45e10000009b38f8cf/content.htm]
    To save layouts for all users, you need the authorization S_ALV_LAYO with activity 23 as of Release 4.6C. You can only go to the layout administration if you have this authorization.
    You must maintain the authorization object S_ALV_LAYO using the user administration.
    If you would like to use or save the Excel view in your layout, you also require the additional authorization S_BDS_DS with activity 01,02,03,06,30; CLASSNAME ALVLAYOUTTEMPLATES and CLASSTYPE OT.
    Furthermore, there are applications that have their own authorization checks installed.
    In some ALV lists, you can only save user-specific layouts. In these cases, the indicator "user-specific" is active , on a grey background and unable to be changed. This is related to the parameter I_SAVE. This controls which options you have to save the layout.
    To be able to define default layouts, the parameter I_DEFAULT must have the value 'X'.
    Notes 409190 and 601803 also provide further information on authorizations.

  • Editing rows and columns in alv reports in webdynpro abap

    how edit row and columns in webdynpro abap ?
    can i add colors to salv repotrs for below and above range of values  how ?
    if possible send source code for it.............

    hi
    check out this link for editing the columns of ALV
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/d0155eb5-b6ce-2b10-3195-d9704982d69b
    check out for this thread as well for coloring ALV
    Coloring of selected table cells: Ideas wanted
    regards,
    amit

  • S.screen and abap oo--alv report

    i see all the example here but there is not s.screen before whyyy???
    there is an example with s.screen

    Hi,
    this is example for S.Screen. in OO alv.
    below is the Code.
    and I am specifying variants on s.screen
    Material ............     100-100   to 100-200
    Plant................      1000    to 2000
    BOM Usage............  1  to 1
    BOM status...........    01  to   01
    BOM category........   D    to     P
    *                           T Y P E S                                 *
    TYPES:
    * Material Data
      BEGIN OF type_mast,
        matnr LIKE mast-matnr,             " Material Number
        werks LIKE mast-werks,             " Plant
        stlan LIKE mast-stlan,             " BOM Usage
        stlnr LIKE mast-stlnr,             " Bill of material
        stlal LIKE mast-stlal,             " Alternative BOM
      END OF type_mast,
    * Material Description Data
      BEGIN OF type_makt,
        matnr LIKE makt-matnr,             " Material Number
        maktx LIKE makt-maktx,             " Material Description
      END OF type_makt,
    * BOM Header Data
      BEGIN OF type_stko,
        stlty LIKE stko-stlty,             " BOM category
        stlnr LIKE stko-stlnr,             " Bill of material
        stlal LIKE stko-stlal,             " Alternative BOM
        datuv LIKE stko-datuv,             " Valid-From Date
        bmeng LIKE stko-bmeng,             " Base Quantity
        stktx LIKE stko-stktx,             " Alternative BOM Text
        stlst LIKE stko-stlst,             " BOM status
      END OF type_stko,
    * BOM Text Data
      BEGIN OF type_stzu,
        stlty LIKE stzu-stlty,             " BOM category
        stlnr LIKE stzu-stlnr,             " Bill of material
        ztext LIKE stzu-ztext,             " BOM text
       END OF type_stzu,
    * BOM Item Data
      BEGIN OF type_stpo,
        stlty LIKE stpo-stlty,             " BOM category
        stlnr LIKE stpo-stlnr,             " Bill of material
        idnrk LIKE stpo-idnrk,             " BOM component
        postp LIKE stpo-postp,             " Item Category(BOM)
        posnr LIKE stpo-posnr,             " BOM Item Number
        menge LIKE stpo-menge,             " Component quantity
       END OF type_stpo,
    * Output Data
       BEGIN OF type_output,
        werks LIKE mast-werks,             " Plant
        matnr LIKE mast-matnr,             " Material Number
        maktx LIKE makt-maktx,             " Material Description
        stlnr LIKE mast-stlnr,             " Bill of material
        stlan LIKE mast-stlan,             " BOM Usage
        stlal LIKE mast-stlal,             " Alternative BOM
        stlty LIKE stko-stlty,             " BOM category
        datuv LIKE stko-datuv,             " Valid-From Date
        bmeng LIKE stko-bmeng,             " Base Quantity
        stktx LIKE stko-stktx,             " Alternative BOM Text
        stlst LIKE stko-stlst,             " BOM status
        idnrk LIKE stpo-idnrk,             " BOM component
        postp LIKE stpo-postp,             " Item Category(BOM)
        posnr LIKE stpo-posnr,             " BOM Item Number
        menge LIKE stpo-menge,             " Component quantity
        ztext LIKE stzu-ztext,             " BOM text
       END OF type_output.
    *                            D A T A                                   *
    DATA:
      w_matnr TYPE mara-matnr,             " Material Number
      w_werks TYPE mast-werks,             " Plant
      w_stlan TYPE mast-stlan,             " BOM Usage
      w_stlst TYPE stko-stlst,             " BOM status
      w_stlty TYPE stko-stlty,             " BOM category
      w_container TYPE REF TO cl_gui_custom_container,
      w_alv_grid  TYPE REF TO cl_gui_alv_grid,
      ok_code     LIKE sy-ucomm.
    *                  I N T E R N A L   T A B L E S                      *
    DATA:
    * Material Data
      i_mast          TYPE STANDARD TABLE OF type_mast,
      wa_mast         TYPE type_mast,
    * Material Description Data
      i_makt          TYPE STANDARD TABLE OF type_makt,
      wa_makt         TYPE type_makt,
    * BOM Header Data
      i_stko          TYPE STANDARD TABLE OF type_stko,
      wa_stko         TYPE type_stko,
    * BOM Text Data
      i_stzu          TYPE STANDARD TABLE OF type_stzu,
      wa_stzu         TYPE type_stzu,
    * BOM Item Data
      i_stpo          TYPE STANDARD TABLE OF type_stpo,
      wa_stpo         TYPE type_stpo,
    * Output table
      i_output        TYPE STANDARD TABLE OF type_output,
      wa_output       TYPE type_output,
    * Field Catalog table
    it_fcat      TYPE lvc_t_fcat,         " Internal table for field catal
    wa_fcat      TYPE lvc_s_fcat.         " Work area for field catalog
    *                 S E L E C T I O N     S C R E E N                   *
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-ss1.
    SELECT-OPTIONS:
      s_matnr FOR w_matnr,           " Material Number
      s_werks FOR w_werks OBLIGATORY," Plant
      s_stlan FOR w_stlan,           " BOM Usage
      s_stlst FOR w_stlst,           " BOM status
      s_stlty FOR w_stlty.           " BOM category
    SELECTION-SCREEN END OF BLOCK b1.
    *               A T   S E L E C T I O N   S C R E E N                  *
    AT SELECTION-SCREEN.
      PERFORM f010_validate_material.
      PERFORM f020_validate_plant.
      PERFORM f030_validate_bom_usage.
      PERFORM f040_validate_bom_status.
      PERFORM f050_validate_bom_category.
    *                S T A R T   O F   S E L E C T I O N                  *
    START-OF-SELECTION .
      PERFORM f210_fetch_bom_link_data.
      PERFORM f220_fetch_material_des_data.
      PERFORM f230_fetch_bom_header_data.
      PERFORM f240_fetch_bom_text.
      PERFORM f250_fetch_bom_item_data.
    *                  E N D   O F   S E L E C T I O N                    *
    END-OF-SELECTION.
      PERFORM f600_populate_data.
      PERFORM f650_field_catlog.
      CALL SCREEN 100.
    *&      Form  f010_validate_material                                  *
    *       --Validate Material                                           *
    FORM f010_validate_material .
    * Validate Material
      IF s_matnr IS NOT INITIAL.
        SELECT matnr
          INTO w_matnr
          FROM mara
         UP TO 1 ROWS
         WHERE matnr IN s_matnr.
        ENDSELECT.
        CHECK sy-subrc NE 0.
        SET CURSOR FIELD 'S_MATNR'.
        MESSAGE e210.                      " Invalid Material
      ENDIF.                               " IF s_matnr IS NOT INITIAL.
    ENDFORM.                               " f010_validate_material
    *&      Form  f020_validate_plant                                     *
    *       - Validate Plant                                              *
    FORM f020_validate_plant .
    * Validate Plant
      SELECT  werks
        INTO w_werks
        FROM t001w
        UP TO 1 ROWS
        WHERE werks IN s_werks.
      ENDSELECT.
      CHECK sy-subrc NE 0.
      SET CURSOR FIELD 'S_WERKS'.
      MESSAGE e220.                        " Invalid Plant
    ENDFORM.                               " f020_validate_plant
    *&      Form  f030_validate_BOM_usage                                 *
    *       -Validate BOM Usage                                           *
    FORM f030_validate_bom_usage .
    * Validate BOM Usage
      IF s_stlan IS NOT INITIAL.
        SELECT stlan
          INTO w_stlan
          FROM t416
          UP TO 1 ROWS
          WHERE stlan IN s_stlan.
        ENDSELECT.
        CHECK sy-subrc NE 0.
        SET CURSOR FIELD 'S_STLAN'.
        MESSAGE e230.                      " Invalid BOM Usage
      ENDIF.                               " IF s_stlan IS NOT INITIAL.
    ENDFORM.                               " f030_validate_BOM_usage
    *&      Form  f040_validate_BOM_status
    *       - Validate BOM Status
    FORM f040_validate_bom_status .
    * Validate BOM Status
      IF s_stlst IS NOT INITIAL.
        SELECT  stlst
          INTO w_stlst
          FROM t415s
          UP TO 1 ROWS
          WHERE stlst IN s_stlst.
        ENDSELECT.
        CHECK sy-subrc NE 0.
        SET CURSOR FIELD 'S_STLST'.
        MESSAGE e240.                      " Invalid BOM Status
      ENDIF.                               " IF s_stlst IS NOT INITIAL
    ENDFORM.                               " f040_validate_BOM_status
    *&      Form  f050_validate_BOM_category                              *
    *       -Validate BOM Category                                        *
    FORM f050_validate_bom_category .
    * Validate BOM Category
      IF s_stlty IS NOT INITIAL.
        SELECT  stlty
          INTO w_stlty
          FROM stko
          UP TO 1 ROWS
          WHERE stlty IN s_stlty.
        ENDSELECT.
        CHECK sy-subrc NE 0.
        SET CURSOR FIELD 'S_STLTY'.
        MESSAGE e250.                      " Invalid BOM Category
      ENDIF.                               " IF s_stlty IS NOT INITIAL.
    ENDFORM.                               " f050_validate_BOM_category
    *&      Form  f210_fetch_bom_link_data                                *
    *       - Fetch Material BOM Link data                                *
    FORM f210_fetch_bom_link_data .
    * Fetch Material BOM Link data
      SELECT matnr                         " Material Number
             werks                         " Plant
             stlan                         " BOM Usage
             stlnr                         " Bill of material
             stlal                         " Alternative BOM
        INTO TABLE i_mast
        FROM mast
       WHERE matnr IN s_matnr
         AND werks IN s_werks.
      IF sy-subrc NE 0.
        MESSAGE s200.                      " No Data Found
      ENDIF.                               " IF sy-subrc NE 0.
      SORT i_mast BY matnr werks.
    ENDFORM.                               " f200_fetch_bom_link_data
    *&      Form  f220_fetch_material_des_data                            *
    *       -Fetch Material Description data                              *
    FORM f220_fetch_material_des_data .
      SELECT matnr
             maktx
        INTO TABLE i_makt
        FROM makt
         FOR ALL ENTRIES IN i_mast
       WHERE matnr EQ i_mast-matnr.
      IF sy-subrc NE 0.
        MESSAGE s200.                      " No Data Found
      ENDIF.                               " IF sy-subrc NE 0.
      SORT i_makt BY matnr.
    ENDFORM.                               " f200_fetch_material_des_data
    *&      Form  f230_fetch_bom_header_data                              *
    *       - Fetch BOM Header data                                       *
    FORM f230_fetch_bom_header_data .
    * Fetch BOM Header data
      SELECT stlty                         " BOM category
             stlnr                         " Bill of material
             stlal                         " Alternative BOM
             datuv                         " Valid-From Date
             bmeng                         " Base Quantity
             stktx                         " Alternative BOM Text
             stlst                         " BOM status
        INTO TABLE i_stko
        FROM stko
        FOR ALL ENTRIES IN i_mast
      WHERE stlnr EQ i_mast-stlnr
      AND   stlty IN s_stlty
      AND   stlst IN s_stlst.
      IF sy-subrc NE 0.
        MESSAGE s200.                      " No Data Found
      ENDIF.                               " IF sy-subrc NE 0.
      SORT i_stko BY stlty stlst.
    ENDFORM.                               " f200_fetch_bom_header_data
    *&      Form  f240_fetch_bom_text                                     *
    *      - Fetch BOM text Data                                          *
    FORM f240_fetch_bom_text .
    *  DATA:
    *    i_stko_temp LIKE TABLE OF wa_stko.
    *  i_stko_temp = i_stko.
    *  SORT i_stko_temp BY stlty stlnr.
    *  DELETE ADJACENT DUPLICATES FROM i_stko_temp
    *    COMPARING stlty stlnr.
    *  SELECT stlty                         " BOM category
    *         stlnr                         " Bill of material
    *         ztext                         " BOM text
    *    INTO TABLE i_stzu
    *    FROM stzu
    *     FOR ALL ENTRIES IN i_stko_temp
    *   WHERE stlty EQ i_stko_temp-stlty
    *     AND stlnr EQ i_stko_temp-stlnr.
    *  DATA:
    *    i_stzu_temp    LIKE TABLE OF wa_stzu.
      SELECT stlty                         " BOM category
             stlnr                         " Bill of material
             ztext                         " BOM text
        INTO TABLE i_stzu
        FROM stzu
         FOR ALL ENTRIES IN i_stko
       WHERE stlty EQ i_stko-stlty
         AND stlnr EQ i_stko-stlnr.
      IF sy-subrc NE 0.
        MESSAGE s200.                      " No Data Found
      ENDIF.                               " IF sy-subrc NE 0.
    ENDFORM.                               " f200_fetch_bom_text
    *&      Form  f250_fetch_bom_item_data                                *
    *       - Fetch BOM Item data                                         *
    FORM f250_fetch_bom_item_data .
    * Fetch BOM Header data
      SELECT stlty                         " BOM category
             stlnr                         " Bill of material
             idnrk                         " BOM component
             postp                         " Item Category(BOM)
             posnr                         " BOM Item Number
             menge                         " Component quantity
        INTO TABLE i_stpo
        FROM stpo
         FOR ALL ENTRIES IN i_stko
       WHERE stlty EQ i_stko-stlty
         AND stlnr EQ i_stko-stlnr.
      IF sy-subrc NE 0.
        MESSAGE s200.                      " No Data Found
      ENDIF.                               " IF sy-subrc NE 0.
    ENDFORM.                               " f200_fetch_bom_item_data
    *&      Form  f600_populate_data                                       *
    *       - Displaying the data                                         *
    FORM f600_populate_data .
    *  SORT i_stko.
    *  SORT i_mast.
    *  DELETE ADJACENT DUPLICATES FROM i_mast.
      LOOP AT i_stpo INTO wa_stpo.
        CLEAR wa_output.
        READ TABLE i_stko INTO wa_stko WITH KEY stlnr = wa_stpo-stlnr
                                                stlty = wa_stpo-stlty
                                                BINARY SEARCH.
    *    CHECK sy-subrc eq 0.
        READ TABLE i_stzu INTO wa_stzu WITH KEY stlnr = wa_stko-stlnr
                                                stlty = wa_stko-stlty
                                                BINARY SEARCH.
    *    CHECK sy-subrc Eq 0.
        READ TABLE i_mast INTO wa_mast WITH KEY stlnr = wa_stko-stlnr
                                                BINARY SEARCH.
    *    CHECK sy-subrc Eq 0.
        READ TABLE i_makt INTO wa_makt WITH KEY matnr = wa_mast-matnr
                                                BINARY SEARCH.
    *    CHECK sy-subrc Eq 0.
        MOVE:
          wa_stpo-idnrk TO wa_output-idnrk,
          wa_stpo-postp TO wa_output-postp,
          wa_stpo-posnr TO wa_output-posnr,
          wa_stpo-menge TO wa_output-menge,
          wa_stko-stlty TO wa_output-stlty,
          wa_stko-datuv TO wa_output-datuv,
          wa_stko-bmeng TO wa_output-bmeng,
          wa_stko-stktx TO wa_output-stktx,
          wa_stko-stlst TO wa_output-stlst,
          wa_stzu-ztext TO wa_output-ztext,
          wa_mast-werks TO wa_output-werks,
          wa_mast-matnr TO wa_output-matnr,
          wa_makt-maktx TO wa_output-maktx,
          wa_mast-stlnr TO wa_output-stlnr,
          wa_mast-stlan TO wa_output-stlan,
          wa_mast-stlal TO wa_output-stlal.
        APPEND wa_output TO i_output.
      ENDLOOP.                             " LOOP AT i_stpo
    ENDFORM.                               " f600_display_data
    *&      Form  f650_field_catlog                                       *
    *       -Fill Field Catalog                                           *
    FORM f650_field_catlog .
      wa_fcat-fieldname = 'WERKS'.
      wa_fcat-ref_table = 'MAST'.
      wa_fcat-ref_field = 'WERKS'.
      wa_fcat-col_pos   = 1.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'MATNR'.
      wa_fcat-ref_table = 'MAST'.
      wa_fcat-ref_field = 'MATNR'.
      wa_fcat-col_pos   = 2.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'MAKTX'.
      wa_fcat-ref_table = 'MAKT'.
      wa_fcat-ref_field = 'MAKTX'.
      wa_fcat-col_pos   = 3.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'STLTY'.
      wa_fcat-ref_table = 'STKO'.
      wa_fcat-ref_field = 'STLTY'.
      wa_fcat-col_pos   = 4.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'STLAN'.
      wa_fcat-ref_table = 'MAST'.
      wa_fcat-ref_field = 'STLAN'.
      wa_fcat-col_pos   = 5.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'STLNR'.
      wa_fcat-ref_table = 'MAST'.
      wa_fcat-ref_field = 'STLNR'.
      wa_fcat-col_pos   = 6.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'STLAL'.
      wa_fcat-ref_table = 'MAST'.
      wa_fcat-ref_field = 'STLAL'.
      wa_fcat-col_pos   = 7.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'STKTX'.
      wa_fcat-ref_table = 'STKO'.
      wa_fcat-ref_field = 'STKTX'.
      wa_fcat-col_pos   = 8.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'DATUV'.
      wa_fcat-ref_table = 'STKO'.
      wa_fcat-ref_field = 'DATUV'.
      wa_fcat-col_pos   = 9.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'BMENG'.
      wa_fcat-ref_table = 'STKO'.
      wa_fcat-ref_field = 'BMENG'.
      wa_fcat-col_pos   = 10.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'STLST'.
      wa_fcat-ref_table = 'STKO'.
      wa_fcat-ref_field = 'STLST'.
      wa_fcat-col_pos   = 11.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'IDNRK'.
      wa_fcat-ref_table = 'STPO'.
      wa_fcat-ref_field = 'IDNRK'.
      wa_fcat-col_pos   = 12.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'POSTP'.
      wa_fcat-ref_table = 'STPO'.
      wa_fcat-ref_field = 'POSTP'.
      wa_fcat-col_pos   = 13.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'POSNR'.
      wa_fcat-ref_table = 'STPO'.
      wa_fcat-ref_field = 'POSNR'.
      wa_fcat-col_pos   = 14.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'MENGE'.
      wa_fcat-ref_table = 'STPO'.
      wa_fcat-ref_field = 'MENGE'.
      wa_fcat-col_pos   = 15.
      APPEND wa_fcat TO it_fcat.
      wa_fcat-fieldname = 'ZTEXT'.
      wa_fcat-ref_table = 'STZU'.
      wa_fcat-ref_field = 'ZTEXT'.
      wa_fcat-col_pos   = 16.
      APPEND wa_fcat TO it_fcat.
    ENDFORM.                               " f650_field_catlog
    *&      Module  STATUS_0100  OUTPUT                                   *
    *       -Calling Function Module                                      *
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'BACK'.
    *  SET TITLEBAR 'xxx'.
      IF w_container IS INITIAL.
    *    IF cl_gui_alv_grid=>offline( ) IS INITIAL.
        CREATE OBJECT w_container
          EXPORTING
    *      PARENT                      =
            container_name              = 'CUSTOM'
    *      STYLE                       =
    *      LIFETIME                    = lifetime_default
    *      REPID                       =
    *      DYNNR                       =
    *      NO_AUTODEF_PROGID_DYNNR     =
        EXCEPTIONS
          cntl_error                  = 1
          cntl_system_error           = 2
          create_error                = 3
          lifetime_error              = 4
          lifetime_dynpro_dynpro_link = 5
          OTHERS                      = 6
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.                               " IF sy-subrc <> 0.
      ENDIF.
      CREATE OBJECT w_alv_grid
        EXPORTING
    *      I_SHELLSTYLE      = 0
    *      I_LIFETIME        =
          i_parent          = w_container
    *      I_APPL_EVENTS     = space
    *      I_PARENTDBG       =
    *      I_APPLOGPARENT    =
    *      I_GRAPHICSPARENT  =
    *      I_NAME            =
        EXCEPTIONS
          error_cntl_create = 1
          error_cntl_init   = 2
          error_cntl_link   = 3
          error_dp_create   = 4
          OTHERS            = 5
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.                             " IF sy-subrc <> 0.
    *  ENDIF.
      CALL METHOD w_alv_grid->set_table_for_first_display
    *   EXPORTING
    *    I_BUFFER_ACTIVE               =
    *    I_BYPASSING_BUFFER            =
    *    I_CONSISTENCY_CHECK           =
    *     i_structure_name              = 'WA_OUTPUT'
    *    IS_VARIANT                    =
    *    I_SAVE                        =
    *    I_DEFAULT                     = 'X'
    *    IS_LAYOUT                     =
    *    IS_PRINT                      =
    *    IT_SPECIAL_GROUPS             =
    *    IT_TOOLBAR_EXCLUDING          =
    *    IT_HYPERLINK                  =
    *    IT_ALV_GRAPHICS               =
    *    IT_EXCEPT_QINFO               =
        CHANGING
          it_outtab                     = i_output
          it_fieldcatalog               = it_fcat
    *    IT_SORT                       =
    *    IT_FILTER                     =
        EXCEPTIONS
          invalid_parameter_combination = 1
          program_error                 = 2
          too_many_lines                = 3
          OTHERS                        = 4
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.                               " IF sy-subrc <> 0.
    ENDMODULE.                             " STATUS_0100 OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT                              *
    *       - Leave Program                                               *
    MODULE user_command_0100 INPUT.
      CASE ok_code.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
      ENDCASE.                             " CASE ok_code
      CLEAR ok_code.
    ENDMODULE.                             " USER_COMMAND_0100  INPUT
    thanks,
    Reward if helpful,
    Brijesh

  • Distinct and sum in alv report

    i have 6 row of 1 matnr
    and i have to display only 1 with the sum of each field
    example:
    300032   3 4 1
    300032   3 3 3
    300032   2 2 2
    i want
    <b>300032   8 9 7</b>
    how?
    thanks.

    Hi
    Use Collect statament to append the record to output table.
    DATA: BEGIN OF ITAB OCCURS 0,
            KEY
            FIELD1 TYPE I,
            FIELD2 TYPE I,
            FIELD3 TYPE I,
          END   OF ITAB.
    ITAB-KEY = '300032'.
    ITAB-FIELD1 = 3.
    ITAB-FIELD2 = 4.
    ITAB-FIELD3 = 1.
    COLLECT ITAB.
    ITAB-KEY = '300032'.
    ITAB-FIELD1 = 2.
    ITAB-FIELD2 = 2.
    ITAB-FIELD3 = 2.
    COLLECT ITAB.
    ITAB-KEY = '300032'.
    ITAB-FIELD1 = 3.
    ITAB-FIELD2 = 3.
    ITAB-FIELD3 = 3.
    COLLECT ITAB.
    Max
    Message was edited by: max bianchi
    Message was edited by: max bianchi

  • How to do subtotal and grand total as per currency in a tree ALV

    Hi Experts,
    I am doing a tree ALV for SD output. I met an urgent problem that is how to do subtotal and grand total on the field (netwr) as per currency (waerk) in the tree ALV. I am using below codes to create the tree ALV.
        l_tree_container_name = 'CCONTAINER1'.
        CREATE OBJECT objCustomContainer
            EXPORTING
                  container_name = l_tree_container_name
            EXCEPTIONS
                  cntl_error                  = 1
                  cntl_system_error      = 2
                  create_error               = 3
                  lifetime_error              = 4
                  lifetime_dynpro_dynpro_link = 5.
    create tree control
        CREATE OBJECT objTree1
          EXPORTING
              parent              = objCustomContainer
              node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
              item_selection      = ' '
              no_html_header      = 'X'
              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.
        DATA l_hierarchy_header TYPE treev_hhdr.
        call method buildHierarchyHeader
          IMPORTING
            p_hierarchy_header = l_hierarchy_header.
    Build fieldcatalog
        call method buildFieldcatalog.
        CALL METHOD objTree1->set_table_for_first_display
            EXPORTING
              is_hierarchy_header = l_hierarchy_header
            CHANGING
              it_fieldcatalog     = l_fieldcatalog
              it_outtab            = lt_order.             
        CALL METHOD objTree1->update_calculations.
        CALL METHOD objTree1->frontend_update.
    filling fieldcatalog,
          LS_FIELDCATALOG-FIELDNAME = 'NETWR'.
          LS_FIELDCATALOG-SCRTEXT_S = 'Net Value'.
          LS_FIELDCATALOG-COL_POS = l_pos.
          LS_FIELDCATALOG-OUTPUTLEN = 15.
          LS_fieldcatalog-do_dum= 'X'.
          LS_FIELDCATALOG-DATATYPE = 'CURR'.
          APPEND LS_FIELDCATALOG TO l_FIELDCATALOG.
          CLEAR LS_FIELDCATALOG.
          l_pos = l_pos + 1.
    I could see the subtotal and grandtotal in tree ALV but they are simply sumed up  regardless different currency.
    Thank you very much for your kindly helps.
    Yu

    hi
    good
    go through this report and work accordingly.
    REPORT ZALV.
    TYPE-POOLS: SLIS.
    DATA: G_REPID LIKE 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,
    GT_FIELDCAT         TYPE SLIS_T_FIELDCAT_ALV,
    FIELDCAT_LN LIKE LINE OF GT_FIELDCAT,
    COL_POS TYPE I.
    DATA: BEGIN OF ITAB,
      FIELD1(5) TYPE C,
      FIELD2(5) TYPE C,
      FIELD3(5) TYPE P DECIMALS 2,
    END OF ITAB.
    DATA: BEGIN OF ITAB1 OCCURS 0.
      INCLUDE STRUCTURE ITAB.
    DATA: END OF ITAB1.
    DATA: BEGIN OF ITAB_FIELDCAT OCCURS 0.
      INCLUDE STRUCTURE ITAB.
    DATA: END OF ITAB_FIELDCAT.
    Print Parameters
    PARAMETERS:
                P_PRINT  AS CHECKBOX DEFAULT ' ', "PRINT IMMEDIATE
                P_NOSINF AS CHECKBOX DEFAULT 'X', "NO SELECTION INFO
                P_NOCOVE AS CHECKBOX DEFAULT ' ', "NO COVER PAGE
                P_NONEWP AS CHECKBOX DEFAULT ' ', "NO NEW PAGE
                P_NOLINF AS CHECKBOX DEFAULT 'X', "NO PRINT LIST INFO
                P_RESERV TYPE I.                  "NO OF FOOTER LINE
    INITIALIZATION.
    G_REPID = SY-REPID.
    PERFORM PRINT_BUILD    USING GS_PRINT.      "Print PARAMETERS
    START-OF-SELECTION.
    TEST DATA
    MOVE 'TEST1' TO ITAB1-FIELD1.
    MOVE 'TEST1' TO ITAB1-FIELD2.
    MOVE '10.00' TO ITAB1-FIELD3.
    APPEND ITAB1.
    MOVE 'TEST2' TO ITAB1-FIELD1.
    MOVE 'TEST2' TO ITAB1-FIELD2.
    MOVE '20.00' TO ITAB1-FIELD3.
    APPEND ITAB1.
    DO 50 TIMES.
      APPEND ITAB1.
    ENDDO.
    END-OF-SELECTION.
    PERFORM BUILD.
    PERFORM EVENTTAB_BUILD CHANGING GT_EVENTS.
    PERFORM COMMENT_BUILD  CHANGING GT_LIST_TOP_OF_PAGE.
    PERFORM CALL_ALV.
    FORM BUILD.
    DATA FIELD CATALOG
    Explain Field Description to ALV
    DATA: FIELDCAT_IN TYPE SLIS_FIELDCAT_ALV.
    CLEAR FIELDCAT_IN.
    FIELDCAT_LN-FIELDNAME = 'FIELD1'.
    FIELDCAT_LN-TABNAME   = 'ITAB1'.
    *FIELDCAT_LN-NO_OUT    = 'X'.  "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT
    FIELDCAT_LN-KEY       = ' '.   "SUBTOTAL KEY
    FIELDCAT_LN-NO_OUT    = ' '.
    FIELDCAT_LN-SELTEXT_L = 'HEAD1'.
    APPEND FIELDCAT_LN TO GT_FIELDCAT.
    CLEAR FIELDCAT_IN.
    FIELDCAT_LN-FIELDNAME = 'FIELD2'.
    FIELDCAT_LN-TABNAME   = 'ITAB1'.
    FIELDCAT_LN-NO_OUT    = 'X'.
    FIELDCAT_LN-SELTEXT_L = 'HEAD2'.
    APPEND FIELDCAT_LN TO GT_FIELDCAT.
    CLEAR FIELDCAT_IN.
    FIELDCAT_LN-FIELDNAME     = 'FIELD3'.
    FIELDCAT_LN-TABNAME       = 'ITAB1'.
    FIELDCAT_LN-REF_FIELDNAME = 'MENGE'. "<- REF FIELD IN THE DICTIONNARY
    FIELDCAT_LN-REF_TABNAME   = 'MSEG'.  "<- REF TABLE IN THE DICTIONNARY
    FIELDCAT_LN-NO_OUT        = ' '.
    FIELDCAT_LN-DO_SUM        = 'X'.   "SUM UPON DISPLAY
    APPEND FIELDCAT_LN TO GT_FIELDCAT.
    DATA SORTING AND SUBTOTAL
    DATA: GS_SORT TYPE SLIS_SORTINFO_ALV.
    CLEAR GS_SORT.
    GS_SORT-FIELDNAME = 'FIELD1'.
    GS_SORT-SPOS      = 1.
    GS_SORT-UP        = 'X'.
    GS_SORT-SUBTOT    = 'X'.
    APPEND GS_SORT TO GT_SORT.
    CLEAR GS_SORT.
    GS_SORT-FIELDNAME = 'FIELD2'.
    GS_SORT-SPOS      = 2.
    GS_SORT-UP        = 'X'.
    *GS_SORT-SUBTOT    = 'X'.
    APPEND GS_SORT TO GT_SORT.
    ENDFORM.
    FORM CALL_ALV.
    ABAP List Viewer
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    I_INTERFACE_CHECK = ' '
    I_BYPASSING_BUFFER =
    I_BUFFER_ACTIVE = ' '
    I_CALLBACK_PROGRAM = G_REPID
    I_CALLBACK_PF_STATUS_SET = ' '
    I_CALLBACK_USER_COMMAND = ' '
    I_STRUCTURE_NAME = 'ITAB1'
    IS_LAYOUT =  GS_LAYOUT
    IT_FIELDCAT = GT_FIELDCAT[]
    IT_EXCLUDING =
    IT_SPECIAL_GROUPS =
      IT_SORT = GT_SORT[]
    IT_FILTER =
    IS_SEL_HIDE =
    I_DEFAULT = 'X'
    I_SAVE = ' '
    IS_VARIANT =
      IT_EVENTS = GT_EVENTS[]
    IT_EVENT_EXIT =
      IS_PRINT = GS_PRINT
    IS_REPREP_ID =
    I_SCREEN_START_COLUMN = 0
    I_SCREEN_START_LINE = 0
    I_SCREEN_END_COLUMN = 0
    I_SCREEN_END_LINE = 0
    IMPORTING
    E_EXIT_CAUSED_BY_CALLER =
    ES_EXIT_CAUSED_BY_USER =
    TABLES
    T_OUTTAB = ITAB1
    EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS = 2.
    ENDFORM.
    HEADER FORM
    FORM EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT.
    CONSTANTS:
    GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
    *GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.
      DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
                I_LIST_TYPE = 0
           IMPORTING
                ET_EVENTS   = LT_EVENTS.
      READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_TOP_OF_PAGE
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
        APPEND LS_EVENT TO LT_EVENTS.
      ENDIF.
    define END_OF_PAGE event
    READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_END_OF_PAGE
                             INTO LS_EVENT.
    IF SY-SUBRC = 0.
      MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.
      APPEND LS_EVENT TO LT_EVENTS.
    ENDIF.
    ENDFORM.
    FORM COMMENT_BUILD CHANGING GT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
      DATA: GS_LINE TYPE SLIS_LISTHEADER.
      CLEAR GS_LINE.
      GS_LINE-TYP  = 'H'.
      GS_LINE-INFO = 'HEADER 1'.
      APPEND GS_LINE TO GT_TOP_OF_PAGE.
      CLEAR GS_LINE.
      GS_LINE-TYP  = 'S'.
      GS_LINE-KEY  = 'STATUS 1'.
      GS_LINE-INFO = 'INFO 1'.
      APPEND GS_LINE TO GT_TOP_OF_PAGE.
      GS_LINE-KEY  = 'STATUS 2'.
      GS_LINE-INFO = 'INFO 2'.
      APPEND GS_LINE TO GT_TOP_OF_PAGE.
    CLEAR GS_LINE.
    GS_LINE-TYP  = 'A'.
    GS_LINE-INFO = 'ACTION'.
    APPEND GS_LINE TO  GT_TOP_OF_PAGE.
    ENDFORM.
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
                IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
      WRITE: SY-DATUM, 'Page No', SY-PAGNO LEFT-JUSTIFIED.
    ENDFORM.
    FORM END_OF_PAGE.
      WRITE at (sy-linsz) sy-pagno CENTERED.
    ENDFORM.
    PRINT SETTINGS
    FORM PRINT_BUILD USING LS_PRINT TYPE SLIS_PRINT_ALV.
      LS_PRINT-PRINT              = P_PRINT.  "PRINT IMMEDIATE
      LS_PRINT-NO_PRINT_SELINFOS  = P_NOSINF. "NO SELECTION INFO
      LS_PRINT-NO_COVERPAGE       = P_NOCOVE. "NO COVER PAGE
      LS_PRINT-NO_NEW_PAGE        = P_NONEWP.
      LS_PRINT-NO_PRINT_LISTINFOS = P_NOLINF. "NO PRINT LIST INFO
      LS_PRINT-RESERVE_LINES      = P_RESERV.
    ENDFORM.
    thanks
    mrutyun^

  • What are events in ALV report and explain how sorting is done  alv report

    events in alv report and sorting in alv report
    Moderator Message: Search before posting.
    Edited by: kishan P on Dec 21, 2011 11:13 AM

    Hi Raja,
    <<content and links removed by moderator>>
    PavanKumar.G
    Edited by: kishan P on Dec 21, 2011 11:12 AM

  • Doubts alv reports

    hi abapers please guide me.
    1. diffrence between list display and grid display?
    2. where we can call top-of-page event?
    3. where we can do sub total and grandtotal in alvs?
    4. how we can call logo in alvs?
    5. how to crete check boxes in alv's?
    thanks in addvance

    1 diffrence between list display and grid display
    Grid contains tabular column and list does not contain Tabular column
    By using grid and you can write Object oriented code .
    if you want to show logo ,then you need to use Grid and list will not support
    how we can call logo in alvs?
    use FM : reuse_alv_commentary_write Function module ,use OAER Transaction to upload logo
    where we can call top-of-page event?
    this one dynamically we call subroutine and pass the routine to FM - Reuse_alv_grid_display.
    Totals - by using field catlog
    Sub totals - In sorting
    how to crete check boxes in alv's
    Use Field catlog.
    See the example program :
    BCALV* or Se38 ->f4 and enter Development class/Package - SLIS
    Simple example -
    REPORT ZFD_TRUCK_EDIT no standard page heading
                              message-id zwave.
    ======================================================================
    Program Name : ZWM_TRUCK_EDIT                                        *
    Description  : This program displays data from ZTRUCK Table and also *
                    displays Location details.                           *
    Author       : Seshu                                                 *
    Date         : 05/22/2007                                            *
    MODIFICATION HISTORY                                                 *
    DATE    | AUTHOR   | CHANGE #   | DESCRIPTION OF MODIFICATION        *
    --|||--
    05/22/07| Seshu    | DEVK922184 | Initial                            *
    type-pools : slis.
    tables : zsdcarton,
             ztruck,
             zwm_trk_loc,
             zwm_trk_text.
    Internal table for ZTRUCK and ZSDCARTON
    data : begin of int_ztruck occurs 0 ,
           vdatu like ztruck-vdatu,
           ZZTRKNO like ztruck-ZZTRKNO,
          zzrun like   ztruck-zzrun,
           ZZPHYTRK like ztruck-ZZPHYTRK,
           zzdestime like ztruck-zzdestime,
           zzrun like ztruck-zzrun,
           ZZSWAVENO like zsdcarton-ZZSWAVENO,
           end of int_ztruck.
    Internal table for ZSDCARTON
    data : begin of i_zsdcarton occurs 0,
           werks like zsdcarton-werks,
           VDATU like zsdcarton-vdatu,
           ZZRUN like zsdcarton-zzrun,
           ZZSWAVENO like zsdcarton-ZZSWAVENO,
           ZZTRKNO like zsdcarton-ZZTRKNO,
           VBELN like zsdcarton-vbeln,
           ZZCARTON like zsdcarton-zzcarton,
           end of i_zsdcarton.
      Final Internal Table
    data : begin of i_final occurs 0,
           sel_recs(1) type c,
           ZZTRKNO like ZWMTRK_ALV-ZZTRKNO,
           ZZPHYTRK like ztruck-ZZPHYTRK,
           ZZSWAVENO like zsdcarton-ZZSWAVENO,
           tord(5) type c,
           tcart(5) type c,
           zzdestime like ztruck-zzdestime,
           ZZPLOC like zwm_trk_text-zztext,
           ZZRLOC like zwm_trk_text-ZZtext,
           zzrun like ztruck-zzrun,
           name like zwm_trk_loc-name,
           end of i_final.
    Work Area for Truck Location table
    data: w_trk_loc like zwm_trk_loc,
          wm_text like zwm_trk_text.
    Variables
    data : v_lines type i,
           v_lines1 type i,
           v_repid like sy-repid.
      ALV Function Module Variables
    DATA: g_repid like sy-repid,
          gs_layout type slis_layout_alv,
          g_exit_caused_by_caller,
          gs_exit_caused_by_user type slis_exit_by_user.
    DATA: gt_fieldcat    type slis_t_fieldcat_alv,
          gs_print       type slis_print_alv,
          gt_events      type slis_t_event,
          gt_list_top_of_page type slis_t_listheader,
          g_status_set   type slis_formname value 'STANDARD_02',
          g_user_command type slis_formname value 'USER_COMMAND',
          g_top_of_page  type slis_formname value 'TOP_OF_PAGE',
          g_top_of_list  type slis_formname value 'TOP_OF_LIST',
          g_end_of_list  type slis_formname value 'END_OF_LIST',
          g_variant LIKE disvariant,
          g_save(1) TYPE c,
          g_tabname_header TYPE slis_tabname,
          g_tabname_item   TYPE slis_tabname,
          g_exit(1) TYPE c,
          gx_variant LIKE disvariant.
    S E L E C T I O N - S C R E E N  *********************
    selection-screen : begin of block blk with frame title text-001.
    parameters : p_werks like ztruck-werks obligatory default '1000'.
    parameters : p_vdatu like zsdcarton-vdatu obligatory ."default sy-datum.
    select-options : s_run for ztruck-ZZRUN,
                     s_wave for ZSDCARTON-ZZSWAVENO ,
                     s_trkno for ZSDCARTON-ZZTRKNO.
    selection-screen : end of block blk.
    Fill the default values
    initialization.
      v_repid = sy-repid.
      PERFORM LAYOUT_INIT USING GS_LAYOUT.
      PERFORM EVENTTAB_BUILD USING GT_EVENTS[].
    S T A R T  -  O F  -  S E L E C T I O N ***************
    start-of-selection.
    Refresh and Clear all Variables and Internal Tables
      perform clear_initial_values.
    Get the data from ZTRUCK,ZSDCARTON,ZWVBAK and ZWVBAP
      perform get_data_tables.
    E N D  -  O F  -  S E L E C T I O N *****************
    end-of-selection.
      if not i_final[] is initial.
    ALV Function Module
        perform print_alv.
      endif.
    *&      Form  clear_initial_values
    FORM clear_initial_values.
      clear : i_zsdcarton,
              int_ztruck,
              v_lines,
              v_lines1.
      refresh : i_zsdcarton,
                int_ztruck.
    ENDFORM.                    " clear_initial_values
    *&      Form  get_data_tables
          Get the data from tables
    FORM get_data_tables.
      select a~vdatu a~ZZTRKNO a~ZZPHYTRK a~zzdestime
             a~zzrun b~ZZSWAVENO
             into table int_ztruck
             from ztruck as a inner join zsdcarton as b
             on a~zztrkno = b~zztrkno
             where a~vdatu = p_vdatu
             and   a~zztrkno in s_trkno
             and   b~ZZSWAVENO in s_wave
             and   b~zzrun in s_run
             and   a~werks = p_werks
             and   b~werks = p_werks
             and   b~vdatu = p_vdatu.
      if sy-subrc ne 0.
        message e004.
      endif.
      break sreddy.
      sort int_ztruck by vdatu zztrkno zzrun   zzswaveno ZZPHYTRK .
      DELETE ADJACENT DUPLICATES FROM int_ztruck
          comparing vdatu zzrun zztrkno zzswaveno ZZPHYTRK.
      loop at int_ztruck.
      Get the data from ZSDCARTON
        clear : i_zsdcarton,
                v_lines,
                v_lines1,
                w_trk_loc,
                wm_text.
        refresh : i_zsdcarton.
        select werks
               vdatu
               zzrun
               ZZSWAVENO
               ZZTRKNO
               vbeln
               ZZCARTON from zsdcarton into table i_zsdcarton
               where werks = p_werks
                 and vdatu = int_ztruck-vdatu
                 and  zzrun = int_ztruck-zzrun
                 and  zztrkno = int_ztruck-zztrkno
                 and  ZZSWAVENO = int_ztruck-ZZSWAVENO.
        if sy-subrc eq 0.
    Total Cartons
          describe table i_zsdcarton lines v_lines.
          i_final-tcart = v_lines.
          DELETE ADJACENT DUPLICATES FROM i_zsdcarton
          comparing werks vdatu zzrun zzswaveno vbeln.
       Total Orders
          describe table i_zsdcarton lines v_lines1.
          i_final-tord = v_lines1.
        endif.
    Get the Parked Location and Returned Location.
        select single * from zwm_trk_loc into w_trk_loc
                        where  ZZPHYTRK = int_ztruck-ZZPHYTRK.
    Get the Location Text from ZWM_TRK_TEXT Table
        if sy-subrc eq 0.
          select single * from zwm_trk_text into wm_text
                          where zzploc = w_trk_loc-zzploc.
          if sy-subrc eq 0.
            i_final-ZZPLOC = wm_text-zztext.
          endif.
          clear wm_text.
          select single * from zwm_trk_text into wm_text
                          where zzploc = w_trk_loc-zzrloc.
          if sy-subrc eq 0.
            i_final-ZZrLOC = wm_text-zztext..
          endif.
          i_final-name   = w_trk_loc-name.
        endif.
        i_final-zztrkno = int_ztruck-zztrkno.
        i_final-ZZPHYTRK = int_ztruck-ZZPHYTRK.
        i_final-ZZSWAVENO = int_ztruck-ZZSWAVENO.
        i_final-zzdestime = int_ztruck-zzdestime.
        i_final-zzrun = int_ztruck-zzrun.
        append i_final.
        clear : i_final,
                int_ztruck.
      endloop.
    ENDFORM.                    " get_data_tables
          FORM LAYOUT_INIT                                              *
    -->  RS_LAYOUT                                                     *
    FORM LAYOUT_INIT USING RS_LAYOUT TYPE SLIS_LAYOUT_ALV.
    **"Build layout for list display
      RS_LAYOUT-DETAIL_POPUP      = 'X'.
    lslayout-f2code            = p_f2code.
    rs_layout-zebra             = 'X'.
    rs_layout-colwidth_optimize = 'X'.
    ENDFORM.
          FORM EVENTTAB_BUILD                                           *
    -->  RT_EVENTS                                                     *
    FORM EVENTTAB_BUILD USING RT_EVENTS TYPE SLIS_T_EVENT.
    *"Registration of events to happen during list display
      DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
                I_LIST_TYPE = 0
           IMPORTING
                ET_EVENTS   = RT_EVENTS.
      READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE G_TOP_OF_PAGE TO LS_EVENT-FORM.
        APPEND LS_EVENT TO RT_EVENTS.
      ENDIF.
    ENDFORM.
    *&      Form  print_alv
          text
    FORM print_alv.
      PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].
      break sreddy.
    Populate field catalog
      PERFORM fieldcat_init  using gt_fieldcat[].
    sort i_final
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
       I_INTERFACE_CHECK                 = ' '
       I_BYPASSING_BUFFER                =
       I_BUFFER_ACTIVE                   = ' '
        I_CALLBACK_PROGRAM                = v_repid
        I_CALLBACK_PF_STATUS_SET          = 'STANDARD_02'
         I_CALLBACK_USER_COMMAND           = g_user_command
       I_CALLBACK_TOP_OF_PAGE            =  g_top_of_page
       I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
       I_CALLBACK_HTML_END_OF_LIST       = ' '
       I_STRUCTURE_NAME                  =
       I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      =
       I_GRID_SETTINGS                   =
        IS_LAYOUT                         = gs_layout
         IT_FIELDCAT                       = gt_fieldcat[]
       IT_EXCLUDING                      =
       IT_SPECIAL_GROUPS                 =
       IT_SORT                           =
       IT_FILTER                         =
       IS_SEL_HIDE                       =
       I_DEFAULT                         = 'X'
        I_SAVE                            = 'A'
        IS_VARIANT                        =
        IT_EVENTS                         = GT_EVENTS[]
       IT_EVENT_EXIT                     =
       IS_PRINT                          =
       IS_REPREP_ID                      =
       I_SCREEN_START_COLUMN             = 0
       I_SCREEN_START_LINE               = 0
       I_SCREEN_END_COLUMN               = 0
       I_SCREEN_END_LINE                 = 0
       IT_ALV_GRAPHICS                   =
       IT_ADD_FIELDCAT                   =
       IT_HYPERLINK                      =
       I_HTML_HEIGHT_TOP                 =
       I_HTML_HEIGHT_END                 =
       IT_EXCEPT_QINFO                   =
    IMPORTING
       E_EXIT_CAUSED_BY_CALLER           =
       ES_EXIT_CAUSED_BY_USER            =
       TABLES
         T_OUTTAB                          = i_final
      EXCEPTIONS
        PROGRAM_ERROR                     = 1
        OTHERS                            = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " print_alv
          FORM COMMENT_BUILD                                            *
    -->  LT_TOP_OF_PAGE                                                *
    FORM COMMENT_BUILD USING LT_TOP_OF_PAGE TYPE
                                            SLIS_T_LISTHEADER.
      DATA: LS_LINE TYPE SLIS_LISTHEADER.
    Variables for Date
      data : lv_year(4) type c,
             lv_mon(2) type c,
             lv_day(2) type c,
             lv_date1(10) type c,
             lv_date2(10) type c,
             lv_time(8) type c,
             lv_hour(2) type c,
             lv_min(2) type c,
             lv_sec(2) type c.
    LIST HEADING LINE: TYPE H
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'H'.
      LS_LINE-INFO = sy-title.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    Plant
    STATUS LINE: TYPE S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = TEXT-c02.
      LS_LINE-INFO = P_WERKS.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
      clear : lv_time,
             lv_hour,
             lv_min,
             lv_sec.
      lv_hour = sy-uzeit+0(2).
      lv_min = sy-uzeit+2(2).
      lv_sec = sy-uzeit+4(2).
      concatenate lv_hour ':' lv_min ':' lv_sec into lv_time.
    Current time
    STATUS LINE: TYPE S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = TEXT-c03.
      LS_LINE-INFO = lv_time.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
      clear : lv_year,
              lv_day,
              lv_mon,
              lv_date1.
      lv_year = p_vdatu+0(4).
      lv_mon = p_vdatu+4(2).
      lv_day = p_vdatu+6(2).
      concatenate lv_mon '/' lv_day '/' lv_year into lv_date1.
    STATUS LINE: TYPE S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = TEXT-c01.
      LS_LINE-INFO = lv_date1.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    STATUS LINE: TYPE S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = ''.
      LS_LINE-INFO = ''.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    STATUS LINE: TYPE S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = ''.
      LS_LINE-INFO = ''.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    STATUS LINE: TYPE S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = ''.
      LS_LINE-INFO = ''.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    STATUS LINE: TYPE S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = ''.
      LS_LINE-INFO = ''.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    STATUS LINE: TYPE S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = ''.
      LS_LINE-INFO = ''.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    ENDFORM.
    Fieldcatlog
    FORM fieldcat_init USING  e01_lt_fieldcat type slis_t_fieldcat_alv.
      DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
      CLEAR gs_layout.
      gs_layout-f2code = ' '.
    g_layout-flexible_key = 'X'.
    g_layout-colwidth_optimize = 'X'.
      gs_layout-detail_initial_lines = 'X'.
      gs_layout-box_fieldname = 'SEL_RECS'.
      gs_layout-box_tabname = 'ITAB_REPORT'.
    Route Number
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'ZZTRKNO'.
      LS_FIELDCAT-ref_fieldname = 'ZZTRKNO'.
      LS_FIELDCAT-ref_tabname = 'ZTRUCK'.
      LS_FIELDCAT-TABNAME    = 'I_FINAL'.
    ls_fieldcat-edit = 'X'.
    LS_FIELDCAT-OUTPUTLEN = 25.
      ls_fieldcat-seltext_L = 'Route Number'.
    ls_fieldcat-seltext_M = 'Route Number'.
    ls_fieldcat-seltext_S = 'Route Number'.
      APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
    Physical Truck
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'ZZPHYTRK'.
    LS_FIELDCAT-ref_fieldname = 'ZZPHYTRK'.
    LS_FIELDCAT-ref_tabname = 'ZTRUCK'.
      LS_FIELDCAT-TABNAME    = 'I_FINAL'.
      ls_fieldcat-edit = 'X'.
      LS_FIELDCAT-OUTPUTLEN = 35.
      ls_fieldcat-seltext_L = 'Physical Truck'.
    ls_fieldcat-seltext_M = 'Physical Truck'.
    ls_fieldcat-seltext_S = 'Physical Truck'.
      APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
    Wave
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'ZZSWAVENO'.
    LS_FIELDCAT-ref_fieldname = 'ZZSWAVENO'.
    LS_FIELDCAT-ref_tabname = 'ZSDCARTON'.
      LS_FIELDCAT-TABNAME    = 'I_FINAL'.
      LS_FIELDCAT-OUTPUTLEN = 10.
      ls_fieldcat-seltext_L = 'Wave'.
    ls_fieldcat-seltext_M = 'Wave'.
    ls_fieldcat-seltext_S = 'Wave'.
      APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
    Total Orders
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'TORD'.
      LS_FIELDCAT-TABNAME    = 'I_FINAL'.
      LS_FIELDCAT-OUTPUTLEN = 15.
      ls_fieldcat-seltext_L = 'Total Orders'.
    ls_fieldcat-seltext_M = 'Total Orders'.
    ls_fieldcat-seltext_S = 'Total Orders'.
      APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
    Cartons Packed
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'TCART'.
      LS_FIELDCAT-TABNAME    = 'I_FINAL'.
      LS_FIELDCAT-OUTPUTLEN = 15.
      ls_fieldcat-seltext_L = 'Cartons Packed'.
    ls_fieldcat-seltext_M = 'Cartons Packed'.
    ls_fieldcat-seltext_S = 'Cartons Packed'.
      APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
    First DI Time
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'ZZDESTIME'.
      LS_FIELDCAT-TABNAME    = 'I_FINAL'.
      LS_FIELDCAT-OUTPUTLEN = 15.
      ls_fieldcat-seltext_L = 'First DI Time'.
    ls_fieldcat-seltext_M = 'First DI Time'.
    ls_fieldcat-seltext_S = 'First DI Time'.
      APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
    Parked Location
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'ZZPLOC'.
      LS_FIELDCAT-TABNAME    = 'I_FINAL'.
      LS_FIELDCAT-OUTPUTLEN = 25.
      ls_fieldcat-seltext_L = 'Parked Location'.
      ls_fieldcat-edit = 'X'.
    ls_fieldcat-seltext_M = 'Parked Location'.
    ls_fieldcat-seltext_S = 'Parked Location'.
      APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
    Returned Location
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'ZZRLOC'.
      LS_FIELDCAT-TABNAME    = 'I_FINAL'.
      LS_FIELDCAT-OUTPUTLEN = 25.
      ls_fieldcat-seltext_L = 'Returned Location'.
      ls_fieldcat-edit = 'X'.
    ls_fieldcat-seltext_M = 'Returned Location'.
    ls_fieldcat-seltext_S = 'Returned Location'.
      APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
    Wave Run
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'ZZRUN'.
      LS_FIELDCAT-TABNAME    = 'I_FINAL'.
      LS_FIELDCAT-OUTPUTLEN = 25.
      LS_FIELDCAT-NO_OUT = 'X'.
      ls_fieldcat-seltext_L = 'Wave Run'.
      APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
    Wave Run
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'NAME'.
      LS_FIELDCAT-TABNAME    = 'I_FINAL'.
      LS_FIELDCAT-OUTPUTLEN = 25.
      ls_fieldcat-seltext_L = 'Name'.
      ls_fieldcat-edit = 'X'.
      APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
    ENDFORM.                    " get_fieldcatlog
          FORM TOP_OF_PAGE                                              *
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
                I_LOGO             = 'FDTRAN1'
                IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
    ENDFORM.
          FORM standard_02                                              *
    -->  EXTAB                                                         *
    FORM standard_02 USING extab TYPE slis_t_extab.
      SET PF-STATUS 'STANDARD1'." EXCLUDING extab.
    ENDFORM. "STANDARD_02
          FORM USER_COMMAND                                             *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                rs_selfield TYPE slis_selfield.                 "#EC CALLED
    Local Variables
      data : li_ztruck like ztruck occurs 0 with header line,
             lv_zzphytrk like ZPHYSICAL_TRUCK-zzphytrk,
             li_ZWM_TRK_LOC like ZWM_TRK_LOC occurs 0 with header line.
      data : wa_loc like zwm_trk_loc,
             wa_text like zwm_trk_text.
      clear : li_ztruck,
              lv_zzphytrk,
              li_ZWM_TRK_LOC.
      refresh :  li_ztruck,
                 li_ZWM_TRK_LOC.
      CASE R_UCOMM.
        WHEN 'DISP'.
          call transaction 'ZWM_TRK_LOC'.
        when '&DATA_SAVE'.
          loop at i_final.
         Validate the Physical Truck #
            select single zzphytrk from ZPHYSICAL_TRUCK into lv_zzphytrk
                                   where zzphytrk = i_final-zzphytrk
                                   and   werks = p_werks
                                   and   lgnum = '100'.
            if sy-subrc ne 0.
              MESSAGE E090 WITH i_final-zzphytrk.
            else.
              li_ztruck-werks = p_werks.
              li_ztruck-vdatu = p_vdatu.
              li_ztruck-zztrkno = i_final-zztrkno.
              li_ztruck-ZZPHYTRK = i_final-ZZPHYTRK.
              LI_ZTRUCK-ZZRUN = I_FINAL-ZZRUN.
              append li_ztruck.
              CLEAR LI_ZTRUCK.
            endif.
        TRUCK LOCATION DETAILS
            li_ZWM_TRK_LOC-zzphytrk = i_final-zzphytrk.
          Location Validation
          Parking Location Validation
            clear: wa_loc,
                   wa_text.
    Validation on Parked location
            clear: wa_loc,
                   wa_text.
            break sreddy.
            select single * from zwm_trk_text into wa_text
                                 where  zzploc = i_final-zzploc.
            if sy-subrc ne 0.
              select single * from zwm_trk_text into wa_text
                                   where zztext = i_final-zzploc.
            else.
              move wa_text-zztext to i_final-zzploc.
            endif.
            modify i_final.
    Validation on Returned Location
           select single * from zwm_trk_text into wa_text
                                where  zzploc = i_final-zzploc.
           if sy-subrc ne 0.
             select single * from zwm_trk_text into wa_text
                                  where  zztext = i_final-zzploc.
             if sy-subrc ne 0.
               message e091 with i_final-zzphytrk.
             endif.
           else.
             if i_final-zzploc = 'RR' or i_final-zzploc = 'rr'.
               i_final-zzploc = 'Rail Road Parking'.
             elseif i_final-zzploc = 'UTB' or i_final-zzploc = 'utb'.
               i_final-zzploc = 'Up The Block'.
             elseif i_final-zzploc = 'PL' or i_final-zzploc = 'pl'.
               i_final-zzploc = 'Apple Building'.
             elseif i_final-zzploc = 'SH' or i_final-zzploc = 'sh'.
               i_final-zzploc = 'Shipping Yard'.
             elseif i_final-zzploc = 'BO' or i_final-zzploc = 'bo'.
               i_final-zzploc = 'Borden Ave'.
             elseif i_final-zzploc = '23' .
               i_final-zzploc = '23rd Street'.
             elseif i_final-zzploc = 'SW' or i_final-zzploc = 'sw'.
               i_final-zzploc = 'Side Walk'.
             else.
               message e091 with i_final-zzphytrk.
             endif.
             li_ZWM_TRK_LOC-zzploc =  i_final-zzploc.
             li_ZWM_TRK_LOC-zzrloc =  i_final-zzrloc.
             append li_ZWM_TRK_LOC.
             clear li_ZWM_TRK_LOC.
           endif.
          endloop.
          modify ztruck from table li_ztruck.
          modify ZWM_TRK_LOC from table li_ZWM_TRK_LOC.
        when 'ENT1'.
          loop at i_final.
         Validate the Physical Truck #
            select single zzphytrk from ZPHYSICAL_TRUCK into lv_zzphytrk
                                   where zzphytrk = i_final-zzphytrk
                                   and   werks = p_werks
                                   and   lgnum = '100'.
            if sy-subrc ne 0.
              MESSAGE E090 WITH i_final-zzphytrk.
            else.
              li_ztruck-werks = p_werks.
              li_ztruck-vdatu = p_vdatu.
              li_ztruck-zztrkno = i_final-zztrkno.
              li_ztruck-ZZPHYTRK = i_final-ZZPHYTRK.
              LI_ZTRUCK-ZZRUN = I_FINAL-ZZRUN.
              append li_ztruck.
              CLEAR LI_ZTRUCK.
            endif.
        TRUCK LOCATION DETAILS
            li_ZWM_TRK_LOC-zzphytrk = i_final-zzphytrk.
            if i_final-zzploc = 'RR' or i_final-zzploc = 'rr'.
              i_final-zzploc = 'Rail Road Parking'.
            elseif i_final-zzploc = 'UTB' or i_final-zzploc = 'utb'.
              i_final-zzploc = 'Up The Block'.
            elseif i_final-zzploc = 'PL' or i_final-zzploc = 'pl'.
              i_final-zzploc = 'Apple Building'.
            elseif i_final-zzploc = 'SH' or i_final-zzploc = 'sh'.
              i_final-zzploc = 'Shipping Yard'.
            elseif i_final-zzploc = 'BO' or i_final-zzploc = 'bo'.
              i_final-zzploc = 'Borden Ave'.
            elseif i_final-zzploc = '23' .
              i_final-zzploc = '23rd Street'.
            elseif i_final-zzploc = 'SW' or i_final-zzploc = 'sw'.
              i_final-zzploc = 'Side Walk'.
            else.
              message e091 with i_final-zzphytrk.
            endif.
            li_ZWM_TRK_LOC-zzploc =  i_final-zzploc.
            li_ZWM_TRK_LOC-zzrloc =  i_final-zzrloc.
            append li_ZWM_TRK_LOC.
            clear li_ZWM_TRK_LOC.
          endloop.
      ENDCASE.
    ENDFORM.
    Reward Points if it is helpful
    Thanks
    Seshu

  • ALV report required

    hi
    can anyone send me a simple and easily understandable ALV report.
    points will be rewarded....

    Hi,
    I think this will help u a lot...Plz reward if helpful to u...
    REPORT ZSDR_SOSA NO STANDARD PAGE HEADING
    LINE-COUNT 65 LINE-SIZE 100.
    --Tables--
    tables: vbap, vbak, vbpa, vbkd, makt,konv.
    --Data Fetching--
    TYPE-POOLS: slis.
    data:begin of i_vbap occurs 0,
          vbeln like vbap-vbeln,
          posnr like vbap-posnr,
          matnr like vbap-matnr,
          arktx like vbap-arktx,
          kdmat like vbap-kdmat,
          taxm1 like vbap-taxm1,
         end of i_vbap.
    data:begin of i_vbak occurs 0,
         vbeln like vbak-vbeln,
         audat like vbak-audat,
         vbtyp like vbak-vbtyp,
         vkorg like vbak-vkorg,
         knumv like vbak-knumv,
         kunnr like vbak-kunnr,
        end of i_vbak.
    data:begin of i_vbpa occurs 0,
         vbeln like vbpa-vbeln,
         posnr like vbpa-posnr,
         parvw like vbpa-parvw,
         kunnr like vbpa-kunnr,  "SH
         kunnr1 like vbpa-kunnr,  "SP
         end of i_vbpa.
    data:begin of i_konv occurs 0,
         knumv like konv-knumv,
         kschl like konv-kschl,
         kbetr like konv-kbetr,
         mwsk1 like konv-mwsk1,
        end of i_konv.
    data:begin of i_vbkd occurs 0,
         vbeln like vbkd-vbeln,
         posnr like vbkd-posnr,
         bstkd like vbkd-bstkd,
         bstdk like vbkd-bstdk,
        end of i_vbkd.
    data:begin of i_makt occurs 0,
         matnr like makt-matnr,
         spras like makt-spras,
         maktx like makt-maktx, "MAt. Desc
         maktx1 like makt-maktx, "Cust mat. no.
         end of i_makt.
    data:wa_makt like makt.
    DATA:BEGIN OF itab OCCURS 0,
         vbeln like vbap-vbeln,   "SD no.
         audat like vbak-audat,   "Order date
         kunnr like vbpa-kunnr,   "sold to party
         kunnr1 like vbpa-kunnr,  "ship to party
         matnr like vbap-matnr,   "Mat. No.
         maktx like makt-maktx,   "Material Desc.
         kdmat like vbap-kdmat,   "Cust. Mat.no.
         maktx1 like makt-maktx, "Customer Mat. desc.
         bstkd like vbkd-bstkd,   "PO number
         bstdk like vbkd-bstdk,   "PO date
         kbetr like konv-kbetr,   "Basic Price
         knumv like vbak-knumv,
         vkorg like vbak-vkorg,
         vbtyp like vbak-vbtyp,
         parvw like vbpa-parvw,
         kschl like konv-kschl,
         mwsk1 like konv-mwsk1,
         posnr like vbap-posnr,
         arktx like vbap-arktx,
         taxm1 like vbap-taxm1,
    END OF itab.
    --ALV DECLARATION--
    DATA :v_pgm LIKE sy-repid.
    DATA :col_pos TYPE i.
    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.
    DATA:fcat TYPE slis_t_fieldcat_alv,
         fcat1 TYPE slis_t_fieldcat_alv,
         fcat2 TYPE slis_t_fieldcat_alv,
         eve TYPE slis_t_event,
         eve1 TYPE slis_t_event,
         subtot TYPE slis_t_sortinfo_alv,
         g_subtot LIKE LINE OF subtot.
    --SELECTION SCREEN--
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS:s_audat FOR vbak-audat,
                   s_vkorg for vbak-vkorg,
                   s_kunnr for vbak-kunnr.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
    PARAMETERS:p_sorder RADIOBUTTON GROUP rad1,
               p_agree  RADIOBUTTON GROUP rad1,
               p_order  radiobutton group rad1.
    SELECTION-SCREEN END OF BLOCK b2.
    --Initialization--
    INITIALIZATION.
    v_pgm = sy-repid.
    --Start-of-selection--
    Start-of-selection.
      if p_sorder = 'X'.
        perform get_sorder_data.
        perform process_data.
        perform display_data1.
      elseif p_agree = 'X'.
        perform get_agree_data.
        perform process_data.
        perform display_data1.
      elseif p_order = 'X'.
        perform get_order_data.
        perform process_data.
        perform display_data1.
      endif.
    *&      Form  get_sorder_data
          text
    -->  p1        text
    <--  p2        text
    FORM get_sorder_data .
    *Get from VBAK table.
      select vbeln audat vbtyp vkorg knumv kunnr
      from vbak into table i_vbak
       where audat in s_audat
       and vkorg in s_vkorg
       and kunnr in s_kunnr
       and vbtyp in ('C','E').
    *Get from VBAP table.
      if not i_vbak[] is initial.
        clear:i_vbap. refresh:i_vbap.
        select vbeln posnr matnr arktx kdmat taxm1
        from vbap into table i_vbap
        for all entries in i_vbak
        where vbeln = i_vbak-vbeln.
      endif.
    *Get from VBPA table.
      if not i_vbap[] is initial.
        clear:i_vbpa. refresh:i_vbpa.
        select vbeln posnr parvw kunnr
        from vbpa into table i_vbpa
        for all entries in i_vbap
        where vbeln = i_vbap-vbeln
        and  parvw in ('AG','KB','RE','RG','VE','WE','ZM').
      endif.
    *Get from KONV table.
      if not i_vbak[] is initial.
        clear:i_konv. refresh:i_konv.
        select knumv kschl kbetr mwsk1
        from konv into table i_konv
        for all entries in i_vbak
        where knumv = i_vbak-knumv
        and  kschl = 'PR00'.
      endif.
    *Get from VBKD table.
      if not i_vbak[] is initial.
        clear:i_vbkd. refresh:i_vbkd.
        select vbeln posnr bstkd bstdk
        from vbkd into table i_vbkd
        for all entries in i_vbak
        where vbeln = i_vbak-vbeln.
      endif.
    **Get from MAKT table.
    if not i_vbap[] is initial.
       clear:i_makt. refresh:i_makt.
       select single maktx
       from makt into i_makt
       for all entries in i_vbap
       where matnr = i_vbap-matnr
       and spras = sy-langu.
    endif.
    ENDFORM.                    " get_sorder_data
    *&      Form  process_data
          text
    -->  p1        text
    <--  p2        text
    FORM process_data .
      Loop at i_vbap.
        itab-vbeln = i_vbap-vbeln.
        itab-posnr = i_vbap-posnr.
        itab-matnr = i_vbap-matnr.
        itab-arktx = i_vbap-arktx.
        itab-kdmat = i_vbap-kdmat.
        itab-taxm1 = i_vbap-taxm1.
    *Get from MAKT table.
        select single maktx from makt
        into wa_makt-maktx
        where matnr = itab-matnr
        and   spras = sy-langu.
        if sy-subrc = 0.
          itab-maktx = wa_makt-maktx.
          itab-maktx1 = wa_makt-maktx.
        endif.
        read table i_vbak with key vbeln = itab-vbeln.
        if sy-subrc = 0.
          itab-audat = i_vbak-audat.
          itab-knumv = i_vbak-knumv.
          itab-vkorg = i_vbak-vkorg.
          itab-vbtyp = i_vbak-vbtyp.
        endif.
        read table i_vbpa with key vbeln = itab-vbeln.
        if sy-subrc = 0.
          itab-parvw = i_vbpa-parvw.
          itab-kunnr = i_vbpa-kunnr.
          itab-kunnr1 = i_vbpa-kunnr.
        endif.
        read table i_konv with key knumv = itab-knumv.
        if sy-subrc = 0.
          itab-kschl = i_konv-kschl.
          itab-kbetr = i_konv-kbetr.
          itab-mwsk1 = i_konv-mwsk1.
        endif.
        read table i_vbkd with key vbeln = itab-vbeln.
        if sy-subrc = 0.
          itab-bstkd = i_vbkd-bstkd.
          itab-bstdk = i_vbkd-bstdk.
        endif.
        read table i_makt with key matnr = itab-matnr.
        if sy-subrc = 0.
          itab-maktx  = i_makt-maktx.
          itab-maktx1 = i_makt-maktx1.
        endif.
        append itab.
        clear itab.
      endloop.
      delete itab where not audat in s_audat.
      delete itab where not vkorg in s_vkorg.
      delete itab where not kunnr in s_kunnr.
    ENDFORM.                    " process_data
    *&      Form  display_data1
          text
    -->  p1        text
    <--  p2        text
    FORM display_data1 .
      PERFORM get_buildfieldcat1.
      PERFORM display_alv.
    ENDFORM.                    " display_data1
    *&      Form  display_alv
          text
    -->  p1        text
    <--  p2        text
    FORM display_alv .
      IF itab[] IS INITIAL.
        MESSAGE 'No Data Exist' TYPE 'E'.
      ENDIF.
      DATA: title TYPE lvc_title
          , datelow(10) TYPE c
          , datehigh(10) TYPE c
      DATA: gd_repid  LIKE sy-repid
          , gd_layout TYPE slis_layout_alv
    ***************Layout Formatting***************
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-zebra             = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
      gd_layout-totals_only        = 'X'.
      gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
      "click(press f2)
    ***************Layout Formatting***************
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                i_callback_program      = v_pgm
                i_callback_top_of_page  = 'ALV_TOP_OF_PAGE'  "see FORM
                i_callback_user_command = 'USER_COMMAND' "'ALV_USER_COMMAND'
               i_grid_title            = title
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
               it_special_groups       = gd_tabgroup
               it_events               = gt_events
               is_print                = gd_prntparams
                i_save                  = 'X'
                it_sort                  = subtot
               is_variant              = z_template
           TABLES
                t_outtab                = itab
           EXCEPTIONS
                program_error           = 1
                OTHERS                  = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " display_alv
    *&      Form  ALV_TOP_OF_PAGE
    ALV Report Header                                                 *
    -->  p1        text
    <--  p2        text
    FORM alv_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.
    FORM alv_top_of_page1 .
      DATA: i_header TYPE slis_t_listheader,
            wa1_header TYPE slis_listheader,
            i_line LIKE wa1_header-info,
            lld_lines TYPE i,
            lld_linesc(10) TYPE c.
    Title
      wa1_header-typ  = 'H'.
      wa1_header-info = 'Schedule Line-Basic Price Details'.
      APPEND wa1_header TO t_header.
      CLEAR wa1_header.
    Date
      wa_header-typ  = 'S'.
      wa_header-key = 'Date: '.
      CONCATENATE  sy-datum+6(2) '.'
                   sy-datum+4(2) '.'
                   sy-datum(4) INTO wa_header-info.   "todays date
      APPEND wa_header TO t_header.
      CLEAR: wa_header.
      wa_header-typ  = 'S'.
      wa_header-key = 'Time: '.
      CONCATENATE
                   sy-uzeit(2) ':'
                   sy-uzeit+2(2) ':'
                   sy-uzeit+4(2) INTO wa_header-info.   "time
      APPEND wa_header TO t_header.
      CLEAR: wa_header.
      wa_header-typ  = 'A'.
      wa_header-info = t_line.
      APPEND wa_header TO t_header.
      CLEAR: wa_header, t_line.
    Total No. of Rows Displayed
      DESCRIBE TABLE itab LINES ld_lines.
      ld_linesc = ld_lines.
      CONCATENATE 'Total No. of Rows: ' 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.                    "alv_top_of_page
    *&      Form  get_buildfieldcat1
          text
    -->  p1        text
    <--  p2        text
    FORM get_buildfieldcat1 .
      DATA position TYPE i.
      position = -1.
      position = position + 1.
      fieldcatalog-fieldname   = 'VBELN'.
      fieldcatalog-seltext_m   = 'Sales Order No.'.
      fieldcatalog-col_pos     = position.
      fieldcatalog-outputlen   = 10.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      position = position + 1.
      fieldcatalog-fieldname   = 'AUDAT'.
      fieldcatalog-seltext_m   = 'Order Date'.
      fieldcatalog-col_pos     = position.
      fieldcatalog-outputlen   = 15.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      position = position + 1.
      fieldcatalog-fieldname   = 'KUNNR'.
      fieldcatalog-seltext_m   = 'Sold to Party'.
      fieldcatalog-col_pos     = position.
      fieldcatalog-outputlen   = 10.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      position = position + 1.
      fieldcatalog-fieldname   = 'KUNAG'.
      fieldcatalog-seltext_m   = 'Ship to Party'.
      fieldcatalog-col_pos     = position.
      fieldcatalog-outputlen   = 10.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      position = position + 1.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material No.'.
      fieldcatalog-col_pos     = position.
      fieldcatalog-outputlen   = 10.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      position = position + 1.
      fieldcatalog-fieldname   = 'MAKTX'.
      fieldcatalog-seltext_m   = 'Material Desc.'.
      fieldcatalog-col_pos     = position.
      fieldcatalog-outputlen   = 10.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      position = position + 1.
      fieldcatalog-fieldname   = 'KDMAT'.
      fieldcatalog-seltext_m   = 'Customer Material No.'.
      fieldcatalog-col_pos     = position.
      fieldcatalog-outputlen   = 10.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      position = position + 1.
      fieldcatalog-fieldname   = 'MAKTX1'.
      fieldcatalog-seltext_m   = 'Customer Material Desc'.
      fieldcatalog-col_pos     = position.
      fieldcatalog-outputlen   = 10.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      position = position + 1.
      fieldcatalog-fieldname   = 'BSTKD'.
      fieldcatalog-seltext_m   = 'Purchase Order No.'.
      fieldcatalog-col_pos     = position.
      fieldcatalog-outputlen   = 10.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      position = position + 1.
      fieldcatalog-fieldname   = 'BSTDK'.
      fieldcatalog-seltext_m   = 'Purchase Order Date'.
      fieldcatalog-col_pos     = position.
      fieldcatalog-outputlen   = 10.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      position = position + 1.
      fieldcatalog-fieldname   = 'KBETR'.
      fieldcatalog-seltext_m   = 'Basic Price'.
      fieldcatalog-col_pos     = position.
      fieldcatalog-outputlen   = 10.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
    ENDFORM.                    " get_buildfieldcat1
    *&      Form  get_agree_data
          text
    -->  p1        text
    <--  p2        text
    FORM get_agree_data .
    *Get from VBAK table.
      select vbeln audat vbtyp vkorg knumv kunnr
      from vbak into table i_vbak
       where audat in s_audat
       and vkorg in s_vkorg
       and kunnr in s_kunnr
       and vbtyp in ('C','E').
    *Get from VBAP table.
      if not i_vbak[] is initial.
        clear:i_vbap. refresh:i_vbap.
        select vbeln posnr matnr arktx kdmat taxm1
        from vbap into table i_vbap
        for all entries in i_vbak
        where vbeln = i_vbak-vbeln.
      endif.
    *Get from VBPA table.
      if not i_vbap[] is initial.
        clear:i_vbpa. refresh:i_vbpa.
        select vbeln posnr parvw kunnr
        from vbpa into table i_vbpa
        for all entries in i_vbap
        where vbeln = i_vbap-vbeln
        and  parvw in ('AG','KB','RE','RG','VE','WE','ZM').
      endif.
    *Get from KONV table.
      if not i_vbak[] is initial.
        clear:i_konv. refresh:i_konv.
        select knumv kschl kbetr mwsk1
        from konv into table i_konv
        for all entries in i_vbak
        where knumv = i_vbak-knumv
        and  kschl = 'PR00'.
      endif.
    *Get from VBKD table.
      if not i_vbak[] is initial.
        clear:i_vbkd. refresh:i_vbkd.
        select vbeln posnr bstkd bstdk
        from vbkd into table i_vbkd
        for all entries in i_vbak
        where vbeln = i_vbak-vbeln.
      endif.
    ENDFORM.                    " get_agree_data
    *&      Form  get_order_data
          text
    -->  p1        text
    <--  p2        text
    FORM get_order_data .
    *Get from VBAK table.
      select vbeln audat vbtyp vkorg knumv kunnr
      from vbak into table i_vbak
       where audat in s_audat
       and vkorg in s_vkorg
       and kunnr in s_kunnr
       and vbtyp in ('C','E').
    *Get from VBAP table.
      if not i_vbak[] is initial.
        clear:i_vbap. refresh:i_vbap.
        select vbeln posnr matnr arktx kdmat taxm1
        from vbap into table i_vbap
        for all entries in i_vbak
        where vbeln = i_vbak-vbeln.
      endif.
    *Get from VBPA table.
      if not i_vbap[] is initial.
        clear:i_vbpa. refresh:i_vbpa.
        select vbeln posnr parvw kunnr
        from vbpa into table i_vbpa
        for all entries in i_vbap
        where vbeln = i_vbap-vbeln
        and  parvw in ('AG','KB','RE','RG','VE','WE','ZM').
      endif.
    *Get from KONV table.
      if not i_vbak[] is initial.
        clear:i_konv. refresh:i_konv.
        select knumv kschl kbetr mwsk1
        from konv into table i_konv
        for all entries in i_vbak
        where knumv = i_vbak-knumv
        and  kschl = 'PR00'.
      endif.
    *Get from VBKD table.
      if not i_vbak[] is initial.
        clear:i_vbkd. refresh:i_vbkd.
        select vbeln posnr bstkd bstdk
        from vbkd into table i_vbkd
        for all entries in i_vbak
        where vbeln = i_vbak-vbeln.
      endif.
    ENDFORM.                    " get_order_data
    With Regards,
    Seevangi

Maybe you are looking for