Get total in ALV report

Data : Begin of it_data,
kunnr type kunnr,
name1 type name1,
amt1 type btrt01, " CURR 15,2
end of it_data.
loop at it_data into wa_data
endloop.
Hello friends,
I am developing one ALV report with 20 rows.
I have filled one internal table with some fileds like amount.
I want to get total of all amount1 in AMT1 field.
So, How to get total of amount in same internal table in ALV report ?
It is ok if i get duplicate rows in internal table.
note : i need not data in field catlog
Points 'll be awarded soon.
Regards,

Hai,
While Defining Field Catalog,Specify do_sum = 'X' for the field which you want the Total.Before that u have to sort that Values.
JUST CHECK THIS SAMPLE PROG
TABLES : STKO,STPO,MAKT,MAST.
TYPE-POOLS : SLIS.
DATA : BEGIN OF ISTKO OCCURS 0,
STLNR LIKE STKO-STLNR,
DATUV LIKE STKO-DATUV,
MATNR LIKE MAST-MATNR,
BMENG LIKE STKO-BMENG,
BMEIN LIKE STKO-BMEIN,
END OF ISTKO.
DATA : BEGIN OF ISTPO OCCURS 0,
STLNR LIKE STPO-STLNR,
IDNRK LIKE STPO-IDNRK,
MENGE LIKE STPO-MENGE,
MEINS LIKE STPO-MEINS,
MAKTX LIKE MAKT-MAKTX,
END OF ISTPO.
DATA : BEGIN OF IMAKT OCCURS 0,
MATNR LIKE MAKT-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF IMAKT.
DATA : BEGIN OF IMAST OCCURS 0,
MATNR LIKE MAST-MATNR,
STLNR LIKE MAST-STLNR,
END OF IMAST.
DATA : IFIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WFIELDCAT TYPE SLIS_FIELDCAT_ALV,
ILAYOUT TYPE SLIS_LAYOUT_ALV,
IKEYINFO TYPE SLIS_KEYINFO_ALV,
IEVENT TYPE SLIS_T_EVENT,
WEVENT TYPE SLIS_ALV_EVENT,
ISORT TYPE SLIS_T_SORTINFO_ALV,
WSORT TYPE SLIS_SORTINFO_ALV.
PARAMETERS : P_NUM TYPE I DEFAULT 10.
START-OF-SELECTION.
PERFORM GETDATA.
PERFORM GETHEADERMAT.
PERFORM GET_MAT_DESC.
PERFORM BUILD_FCAT_HEAD.
PERFORM BUILD_FCAT_ITEM.
PERFORM BUILD_KEYINFO.
PERFORM BUILD_EVENT_TAB.
PERFORM BUILD_SORT_TAB.
PERFORM BUILD_LAYOUT.
PERFORM DISPLAY_DATA.
*& Form GETDATA
text
--> p1 text
<-- p2 text
FORM GETDATA .
SELECT STLNR DATUV BMENG BMEIN INTO CORRESPONDING FIELDS OF TABLE ISTKO
FROM STKO UP TO P_NUM ROWS.
IF NOT ISTKO[] IS INITIAL.
SELECT STLNR IDNRK MENGE MEINS INTO TABLE ISTPO FROM STPO FOR ALL ENTRIES IN ISTKO
WHERE STLNR = ISTKO-STLNR AND POSTP = 'L'.
ENDIF.
ENDFORM. " GETDATA
*& Form BUILD_FCAT_HEAD
text
--> p1 text
<-- p2 text
FORM BUILD_FCAT_HEAD .
WFIELDCAT-TABNAME = 'ISTKO'.
WFIELDCAT-FIELDNAME = 'STLNR'.
WFIELDCAT-SELTEXT_L = 'BOM no'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTKO'.
WFIELDCAT-FIELDNAME = 'DATUV'.
WFIELDCAT-SELTEXT_L = 'BOM date'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTKO'.
WFIELDCAT-FIELDNAME = 'MATNR'.
WFIELDCAT-SELTEXT_L = 'Header mat no'.
WFIELDCAT-OUTPUTLEN = 18.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTKO'.
WFIELDCAT-FIELDNAME = 'BMENG'.
WFIELDCAT-SELTEXT_L = 'Base qty'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTKO'.
WFIELDCAT-FIELDNAME = 'BMEIN'.
WFIELDCAT-SELTEXT_L = 'UOM'.
WFIELDCAT-OUTPUTLEN = 3.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
ENDFORM. " BUILD_FCAT_HEAD
*& Form BUILD_FCAT_ITEM
text
--> p1 text
<-- p2 text
FORM BUILD_FCAT_ITEM .
WFIELDCAT-TABNAME = 'ISTPO'.
WFIELDCAT-FIELDNAME = 'STLNR'.
WFIELDCAT-SELTEXT_L = 'BOM no'.
WFIELDCAT-NO_OUT = 'X'.
*WFIELDCAT-HOTSPOT = 'X'.
WFIELDCAT-OUTPUTLEN = 10.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTPO'.
WFIELDCAT-FIELDNAME = 'IDNRK'.
WFIELDCAT-SELTEXT_L = 'Material no'.
*WFIELDCAT-HOTSPOT = 'X'.
WFIELDCAT-OUTPUTLEN = 18.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTPO'.
WFIELDCAT-FIELDNAME = 'MAKTX'.
WFIELDCAT-SELTEXT_L = 'Material desc'.
WFIELDCAT-JUST = 'C'.
WFIELDCAT-OUTPUTLEN = 30.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTPO'.
WFIELDCAT-FIELDNAME = 'MENGE'.
WFIELDCAT-SELTEXT_L = 'Item qty'.
WFIELDCAT-OUTPUTLEN = 15.
WFIELDCAT-DO_SUM = 'X'.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTPO'.
WFIELDCAT-FIELDNAME = 'MEINS'.
WFIELDCAT-SELTEXT_L = 'UOM'.
WFIELDCAT-OUTPUTLEN = 3.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
ENDFORM. " BUILD_FCAT_ITEM
*& Form BUILD_KEYINFO
text
--> p1 text
<-- p2 text
FORM BUILD_KEYINFO .
IKEYINFO-HEADER01 = 'STLNR'.
IKEYINFO-ITEM01 = 'STLNR'.
ENDFORM. " BUILD_KEYINFO
*& Form DISPLAY_DATA
text
--> p1 text
<-- p2 text
FORM DISPLAY_DATA .
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COM'
IS_LAYOUT = ILAYOUT
IT_FIELDCAT = IFIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = ISORT
IT_FILTER =
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = IEVENT[]
IT_EVENT_EXIT =
I_TABNAME_HEADER = 'ISTKO'
I_TABNAME_ITEM = 'ISTPO'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
IS_KEYINFO = IKEYINFO
IS_PRINT =
IS_REPREP_ID =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB_HEADER = ISTKO
T_OUTTAB_ITEM = ISTPO
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_DATA
*& Form GET_MAT_DESC
text
--> p1 text
<-- p2 text
FORM GET_MAT_DESC .
IF NOT ISTPO[] IS INITIAL.
SELECT MATNR MAKTX INTO TABLE IMAKT FROM MAKT FOR ALL ENTRIES IN ISTPO
WHERE MATNR = ISTPO-IDNRK.
ENDIF.
LOOP AT ISTPO.
READ TABLE IMAKT WITH KEY MATNR = ISTPO-IDNRK.
IF SY-SUBRC = 0.
ISTPO-MAKTX = IMAKT-MAKTX.
ENDIF.
MODIFY ISTPO.
ENDLOOP.
ENDFORM. " GET_MAT_DESC
*& Form BUILD_LAYOUT
text
--> p1 text
<-- p2 text
FORM BUILD_LAYOUT .
ILAYOUT-ZEBRA = 'X'.
ILAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM. " BUILD_LAYOUT
*FORM USER_COM USING PUCOM LIKE SY-UCOMM PSELFIELD TYPE SLIS_SELFIELD.
*CASE PUCOM.
*WHEN '&IC1'.
SET PARAMETER ID 'MAT' FIELD PSELFIELD-VALUE.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
*ENDCASE.
*ENDFORM.
*& Form BUILD_EVENT_TAB
text
--> p1 text
<-- p2 text
FORM BUILD_EVENT_TAB .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = IEVENT
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE IEVENT INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WEVENT-FORM = 'TOPOFPAGE'.
MODIFY IEVENT FROM WEVENT INDEX SY-TABIX.
ENDIF.
ENDFORM. " BUILD_EVENT_TAB
*& Form TOPOFPAGE
text
FORM TOPOFPAGE.
DATA : ILISTHEAD TYPE SLIS_T_LISTHEADER,
WLISTHEAD TYPE SLIS_LISTHEADER.
WLISTHEAD-INFO = 'Its a test hierarchical sequential alv dispaly'.
WLISTHEAD-TYP = 'H'.
APPEND WLISTHEAD TO ILISTHEAD.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = ILISTHEAD
I_LOGO = ''
I_END_OF_LIST_GRID =
ENDFORM.
*& Form GETHEADERMAT
text
--> p1 text
<-- p2 text
FORM GETHEADERMAT .
IF NOT ISTKO[] IS INITIAL.
SELECT MATNR STLNR INTO TABLE IMAST FROM MAST FOR ALL ENTRIES IN ISTKO
WHERE STLNR = ISTKO-STLNR.
ENDIF.
LOOP AT ISTKO.
READ TABLE IMAST WITH KEY STLNR = ISTKO-STLNR.
IF SY-SUBRC = 0.
ISTKO-MATNR = IMAST-MATNR.
ENDIF.
MODIFY ISTKO.
ENDLOOP.
ENDFORM. " GETHEADERMAT
*& Form BUILD_SORT_TAB
text
--> p1 text
<-- p2 text
FORM BUILD_SORT_TAB .
WSORT-FIELDNAME = 'STLNR'.
WSORT-TABNAME = 'ISTPO'.
WSORT-UP = 'X'.
WSORT-SUBTOT = 'X'.
WSORT-GROUP = 'UL'.
APPEND WSORT TO ISORT.
ENDFORM. " BUILD_SORT_TAB

Similar Messages

  • How to get total in ALV report in same Internal table?

    Data : Begin of it_data,
            kunnr type kunnr,
            name1 type name1,
            amt1  type btrt01, " CURR 15,2
           end of it_data.
    loop at it_data into wa_data
    endloop.      
    Hello friends,
    I am developing one ALV report with 20 rows.
    I have filled one internal table with some fileds like amount.
    I want to get total of all amount1 in AMT1 field.
    So, How to get total of amount in same internal table in ALV report ?
    It is ok if i get duplicate rows in internal table.
    Points 'll be awarded soon.
    Regards,
    NVM

    Hi Ronny,
    the alv output will display the sum at the last row.
    for this functionality u have do this logic.
    data: lw_fcat type slis_fieldcat_alv.
    data: lt_fcat type slis_t_fieldcat_alv/
    wa_fcat-fieldname = 'AMT1'.
    wa_fcat-tabname = 'ITAB'.
    wa_fcat-do_sum = 'X'.
    append wa_fcat to lt_fcat.
    and then pass it to reuse_alv_grid_display function,
    regards,
    Santosh Thorat

  • 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

  • Only sub total in alv report

    hi,
    I have a report on ALV with sub totals for some fields, it is working fine but my requirement is whether i can get only the sub totals of that report.
    regards,
    Prabhu

    HI
    refer this code.
    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.
    *END OF ZALV PROGRAM
    Reward all helpfull answers.
    Regards.
    Jay

  • Sub total in ALV report.

    hello everyone,
    i am developing one ALV report and one problem is there.
    i want Material Group wise total on 1.Quantity 2. Asssessable value 3. Basic duty 4. Edu cess.
    Problem is all total are correct but when material group is different it repeat same total again. how to do total different material group wise?
    i am using this code...............
    *& Report  ZHP_EXCISE_INVOICE
    REPORT  zhp_excise_invoice NO STANDARD PAGE HEADING LINE-SIZE 150 MESSAGE-ID 00.
    TYPE-POOLS: slis.
    TABLES: j_1iexchdr,vbrk,vbrp,t001w,t023t,konv.
    DATA: BEGIN OF ithp_j_1iexchdr OCCURS 0,
           docyr LIKE j_1iexchdr-docyr,               "Year
           bukrs LIKE j_1iexchdr-bukrs,               "Company Code
           werks LIKE j_1iexchdr-werks,               "PLANT
           exdat LIKE j_1iexchdr-exdat,               "Excise Document Date
           rdoc  LIKE j_1iexchdr-rdoc,                "Reference Document 1
           preprn LIKE j_1iexchdr-preprn,             "Preprinted Serial Number
           kunag LIKE j_1iexchdr-kunag,               "Sold-to party
           kunwe LIKE j_1iexchdr-kunwe,               "Ship-to party
           exbed LIKE j_1iexchdr-exbed,               "Basic Excise Duty
           ecs LIKE j_1iexchdr-ecs,                   "Edu Cess amount
           status LIKE j_1iexchdr-status,             "Excise Document Status
           censtat LIKE j_1iexchdr-censtat,           "CENVAT Utilization status
           exccd LIKE j_1iexchdr-exccd,               "ECC Number
           trntyp LIKE j_1iexchdr-trntyp,             "Excise Transaction Type
           vbeln LIKE vbrk-vbeln,                   "Billing Document
           kzwi2 LIKE vbrp-kzwi2,                   "Assessable value
           fkimg LIKE vbrp-fkimg,                   "Actual billed quantity
           matkl LIKE vbrp-matkl,                   "Material group
           netwr LIKE vbrp-netwr,                   "Net value
           name1 LIKE t001w-name1,                  "Plant Name
           wgbez LIKE t023t-wgbez,                  "Material Group Desc.
           serial_no TYPE i,
           subtot1 TYPE vbrp-fkimg,
            price_per TYPE konv-kbetr,
            cash_disc TYPE konv-kwert,
            vol_disc TYPE konv-kwert,
            ***_value TYPE konv-kbetr,
            ***_value1 TYPE konv-kbetr,
            BASIC_DUTY1 TYPE konv-kwert,
            EDU_CESS1 TYPE konv-kwert,
          END OF ithp_j_1iexchdr.
    DATA : x TYPE i VALUE 0,
           y TYPE i VALUE 0.
    DATA: t_fillcat TYPE slis_t_fieldcat_alv,
          w_fillcat TYPE slis_fieldcat_alv,
          layout  TYPE slis_layout_alv,
          repid LIKE sy-repid.
    TYPES: BEGIN OF ty_itab,
          price_per TYPE konv-kbetr,
          basic_prc TYPE konv-kbetr,
          cash_disc TYPE konv-kwert,
          vol_disc TYPE konv-kwert,
          ***_value TYPE konv-kbetr,
        END OF ty_itab.
    DATA:it_itab TYPE ty_itab OCCURS 0 WITH HEADER LINE,
         wa_itab TYPE ty_itab.
    TYPES: BEGIN OF ty_konv,
          kschl TYPE konv-kschl,
          kbetr TYPE konv-kbetr,
          kwert TYPE konv-kwert,
          mwsk1 TYPE konv-mwsk1,
          knumv TYPE konv-knumv,
          kposn TYPE konv-kposn,
          END OF ty_konv.
    DATA: it_konv TYPE ty_konv OCCURS 0 WITH HEADER LINE,
         wa_konv TYPE ty_konv .
    TYPES: BEGIN OF ty_vbrk,
          fkdat TYPE vbrk-fkdat,
          fkart TYPE vbrk-fkart,
          knumv TYPE vbrk-knumv,
          vbeln TYPE vbrk-vbeln,
          vbtyp TYPE vbrk-vbtyp,
          bukrs TYPE vbrk-bukrs,
          kunrg TYPE vbrk-kunrg,
          END OF ty_vbrk.
    DATA: it_vbrk TYPE ty_vbrk OCCURS 0 WITH HEADER LINE,
         wa_vbrk TYPE ty_vbrk .
    TYPES : BEGIN OF ty_vbrp,
            werks TYPE vbrp-werks,
            spart TYPE vbrp-spart,
            vkbur TYPE vbrp-vkbur,
            matkl TYPE vbrp-matkl,
            vbeln TYPE vbrp-vbeln,
            posnr TYPE vbrp-posnr,
            vgbel TYPE vbrp-vgbel,
            matnr TYPE vbrp-matnr,
            brgew TYPE vbrp-brgew,
            fkimg TYPE vbrp-fkimg,
            vrkme TYPE vbrp-vrkme,
            netwr TYPE vbrp-netwr,
            arktx TYPE vbrp-arktx,
            aubel TYPE vbrp-aubel,
            kzwi1 TYPE vbrp-kzwi1,
            kzwi2 TYPE vbrp-kzwi2,
            kzwi4 TYPE vbrp-kzwi4,
            kzwi5 TYPE vbrp-kzwi5,
            kzwi6 TYPE vbrp-kzwi6,
            END OF ty_vbrp.
    DATA: it_vbrp TYPE ty_vbrp OCCURS 0 WITH HEADER LINE,
          wa_vbrp TYPE ty_vbrp.
    DATA: events   TYPE slis_t_event,
          gt_list_top_of_page TYPE slis_t_listheader.
         top_of_page  type slis_formname value 'TOP_OF_PAGE'.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: p_bukrs FOR j_1iexchdr-bukrs.
    SELECT-OPTIONS: p_exgrp FOR j_1iexchdr-exgrp.
    SELECT-OPTIONS: p_werks FOR j_1iexchdr-werks.
    SELECT-OPTIONS: p_matkl FOR vbrp-matkl.
    SELECT-OPTIONS: p_trntyp FOR j_1iexchdr-trntyp DEFAULT 'DLFC' NO INTERVALS.
    SELECT-OPTIONS: p_status FOR j_1iexchdr-status DEFAULT 'C' NO INTERVALS.
    SELECT-OPTIONS: p_cnstat FOR j_1iexchdr-censtat DEFAULT 'P' NO INTERVALS.
    SELECT-OPTIONS: p_exdat FOR j_1iexchdr-exdat OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK b1.
    repid = sy-repid.
    AT SELECTION-SCREEN ON p_bukrs.
      SELECT SINGLE * FROM j_1iexchdr WHERE bukrs IN p_bukrs.
      IF sy-subrc <> 0.
        MESSAGE e001 WITH 'No Table Entries Found'.
        EXIT.
      ENDIF.
    AT SELECTION-SCREEN ON p_werks.
      SELECT SINGLE * FROM j_1iexchdr WHERE werks IN p_werks.
      IF sy-subrc <> 0.
        MESSAGE e001 WITH 'No Table Entries Found'.
        EXIT.
      ENDIF.
    AT SELECTION-SCREEN ON p_matkl.
      SELECT SINGLE * FROM vbrp WHERE matkl IN p_matkl.
      IF sy-subrc <> 0.
        MESSAGE e001 WITH 'No Table Entries Found'.
        EXIT.
      ENDIF.
    AT SELECTION-SCREEN ON p_exdat.
      SELECT SINGLE * FROM j_1iexchdr WHERE exdat IN p_exdat.
      IF sy-subrc <> 0.
        MESSAGE e001 WITH 'No Table Entries Found'.
        EXIT.
      ENDIF.
    START-OF-SELECTION.
      PERFORM select.
      PERFORM fillcat.
      PERFORM display.
    END-OF-SELECTION.
    *&      Form  SELECT
          text
    -->  p1        text
    <--  p2        text
    FORM select .
    SELECT  DOCYR
             BUKRS
             WERKS
             EXDAT
             RDOC
             PREPRN
             KUNAG
             KUNWE
             EXBED
             ECS
             STATUS
             CENSTAT
    INTO CORRESPONDING FIELDS OF TABLE ITHP_J_1IEXCHDR
    FROM J_1IEXCHDR
    WHERE BUKRS IN P_BUKRS AND
           EXGRP IN P_EXGRP AND
           WERKS IN P_WERKS AND
           EXDAT IN P_EXDAT.
    SELECT   VBELN
             NETWR
    INTO CORRESPONDING FIELDS OF TABLE ITHP_VBRK
    FROM VBRK
    FOR ALL ENTRIES IN ITHP_J_1IEXCHDR
    WHERE VBELN EQ ITHP_J_1IEXCHDR-RDOC AND
          BUKRS EQ ITHP_J_1IEXCHDR-BUKRS AND
          KUNAG EQ ITHP_J_1IEXCHDR-KUNAG.
    SORT ITHP_J_1IEXCHDR BY DOCYR BUKRS WERKS EXDAT RDOC.
    SORT ITHP_VBRK BY VBELN.
      SELECT   a~docyr
               a~bukrs
               a~werks
               a~exdat
               a~rdoc
               a~preprn
               a~kunag
               a~kunwe
               a~exbed
               a~ecs
               a~status
               a~censtat
               a~exccd
               a~trntyp
               c~netwr
               c~kzwi2
               c~fkimg
               c~matkl
               d~name1
               e~wgbez
      INTO CORRESPONDING FIELDS OF TABLE ithp_j_1iexchdr
      FROM j_1iexchdr AS a INNER JOIN vbrk AS b ON ardoc = bvbeln
                           INNER JOIN vbrp AS c ON bvbeln = cvbeln
                           INNER JOIN t001w AS d ON awerks = dwerks
                           INNER JOIN t023t AS e ON cmatkl = ematkl
      WHERE a~bukrs IN p_bukrs AND
            a~exgrp IN p_exgrp AND
            a~werks IN p_werks AND
            c~matkl IN p_matkl AND
            a~trntyp IN p_trntyp AND
            a~status IN p_status AND
            a~censtat IN p_cnstat AND
            a~exdat IN p_exdat.
      SORT ithp_j_1iexchdr BY docyr bukrs werks exdat rdoc matkl.
    ENDFORM.                    " SELECT
    *&      Form  FILLCAT
          text
    -->  p1        text
    <--  p2        text
    FORM fillcat .
      DATA: subtot TYPE vbrp-fkimg.
      DATA: BASIC_DUTY TYPE konv-kwert.
      DATA: EDU_CESS TYPE konv-kwert.
      REFRESH it_vbrk.
      REFRESH it_konv.
      REFRESH it_vbrp.
      LOOP AT ithp_j_1iexchdr.
        SELECT fkdat fkart knumv vbeln vbtyp bukrs kunrg
          FROM vbrk INTO TABLE it_vbrk
          WHERE vbeln EQ ithp_j_1iexchdr-rdoc.
        SELECT kschl kbetr kwert mwsk1 knumv kposn FROM konv
          INTO TABLE it_konv FOR ALL ENTRIES IN it_vbrk
          WHERE knumv EQ it_vbrk-knumv.
        SELECT werks spart vkbur matkl vbeln posnr
          vgbel matnr brgew fkimg vrkme netwr
          arktx aubel  kzwi1 kzwi2 kzwi4 kzwi5
          kzwi6 FROM vbrp INTO TABLE it_vbrp FOR ALL
           ENTRIES IN it_vbrk
          WHERE vbeln EQ it_vbrk-vbeln.
        SORT it_vbrk BY vbeln knumv.
        SORT it_konv BY KSCHL knumv.
        SORT it_vbrp BY vbeln.
          LOOP AT it_konv.
          IF it_konv-kschl =  'ZASS'.
             LOOP AT it_konv.
                IF it_konv-kschl =  'ZPR0'.
                it_itab-***_value = it_konv-kwert.
                ithp_j_1iexchdr-***_value = it_itab-***_value.
                ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
                ithp_j_1iexchdr-***_value1 = ithp_j_1iexchdr-***_value1 - ithp_j_1iexchdr-***_value.
                 MODIFY ithp_j_1iexchdr.
              ENDIF.
              IF it_konv-kschl =  'ZASS'.
                it_itab-***_value = it_konv-kwert.
                ithp_j_1iexchdr-***_value = it_itab-***_value.
                ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
                MODIFY ithp_j_1iexchdr.
              ENDIF.
            ENDLOOP.
            EXIT.
           ENDIF.
          IF it_konv-kschl = 'PR00'.
            it_itab-***_value = it_konv-kwert.
            ithp_j_1iexchdr-***_value = it_itab-***_value.
            ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
            MODIFY ithp_j_1iexchdr.
          ENDIF.
          IF it_konv-kschl =  'ZPR0'.
            LOOP AT it_konv.
              IF it_konv-kschl =  'ZASS'.
              EXIT.
             ENDIF.
                it_itab-***_value = it_konv-kwert.
                ithp_j_1iexchdr-***_value = it_itab-***_value.
                 ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
                ithp_j_1iexchdr-***_value1 = ithp_j_1iexchdr-***_value1 - ithp_j_1iexchdr-***_value.
                  MODIFY ithp_j_1iexchdr.
              ENDIF.
              IF it_konv-kschl =  'ZPR0'.
                it_itab-***_value = it_konv-kwert.
                ithp_j_1iexchdr-***_value = it_itab-***_value.
                ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
                MODIFY ithp_j_1iexchdr.
              ENDIF.
            ENDLOOP.
            EXIT.
          ENDIF.
               IF it_konv-kschl =  'JEXP'.
                   BASIC_DUTY = it_konv-kwert.
                   ADD BASIC_DUTY TO ithp_j_1iexchdr-BASIC_DUTY1.
                   MODIFY ithp_j_1iexchdr.
                ENDIF.
                IF it_konv-kschl =  'JECS'.
                   EDU_CESS = it_konv-kwert.
                   ADD EDU_CESS TO ithp_j_1iexchdr-EDU_CESS1.
                   MODIFY ithp_j_1iexchdr.
                ENDIF.
        ENDLOOP.
      ENDLOOP.
      LOOP AT ithp_j_1iexchdr.
        AT NEW rdoc.
          SUM.
          subtot = ithp_j_1iexchdr-fkimg.
        ENDAT.
        ithp_j_1iexchdr-subtot1 = subtot.
        MODIFY ithp_j_1iexchdr.
        AT NEW MATKL.
        ENDAT.
      ENDLOOP.
      DELETE ADJACENT DUPLICATES FROM ithp_j_1iexchdr.
      LOOP AT ithp_j_1iexchdr.
        x = x + 1.
        ithp_j_1iexchdr-serial_no = x.
        MODIFY ithp_j_1iexchdr.
      ENDLOOP.
      repid = sy-repid.
      DATA: col_pos TYPE i VALUE 0.
      col_pos = col_pos + 1.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'SERIAL_NO'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Serial No'.
      w_fillcat-seltext_m = 'Serial No'.
      w_fillcat-seltext_l = 'Serial No'.
      w_fillcat-outputlen = 8.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'DOCYR'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Year'.
      w_fillcat-seltext_m = 'Year'.
      w_fillcat-seltext_l = 'Year'.
      w_fillcat-outputlen = 5.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'WERKS'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Plant'.
      w_fillcat-seltext_m = 'Plant'.
      w_fillcat-seltext_l = 'Plant'.
      w_fillcat-outputlen = 5.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'EXDAT'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Doc. Date'.
      w_fillcat-seltext_m = 'Doc. Date'.
      w_fillcat-seltext_l = 'Doc. Date'.
      w_fillcat-outputlen = 10.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'RDOC'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Ref. Document'.
      w_fillcat-seltext_m = 'Ref. Document'.
      w_fillcat-seltext_l = 'Ref. Document'.
      w_fillcat-outputlen = 11.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'PREPRN'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Invoice No'.
      w_fillcat-seltext_m = 'Invoice No'.
      w_fillcat-seltext_l = 'Invoice No'.
      w_fillcat-outputlen = 11.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'SUBTOT1'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-do_sum = 'X'.
      w_fillcat-seltext_s = 'Quantity'.
      w_fillcat-seltext_m = 'Quantity'.
      w_fillcat-seltext_l = 'Quantity'.
      w_fillcat-outputlen = 13.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = '***_VALUE1'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-do_sum = 'X'.
      w_fillcat-seltext_s = 'Assessable value'.
      w_fillcat-seltext_m = 'Assessable value'.
      w_fillcat-seltext_l = 'Assessable value'.
      w_fillcat-outputlen = 15.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'BASIC_DUTY1'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-do_sum = 'X'.
      w_fillcat-seltext_s = 'Basic Duty'.
      w_fillcat-seltext_m = 'Basic Duty'.
      w_fillcat-seltext_l = 'Basic Duty'.
      w_fillcat-outputlen = 13.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'EDU_CESS1'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-do_sum = 'X'.
      w_fillcat-seltext_s = 'Edu Cess'.
      w_fillcat-seltext_m = 'Edu Cess'.
      w_fillcat-seltext_l = 'Edu Cess'.
      w_fillcat-outputlen = 13.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'KUNAG'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Sold-to pt'.
      w_fillcat-seltext_m = 'Sold-to pt'.
      w_fillcat-seltext_l = 'Sold-to pt'.
      w_fillcat-outputlen = 10.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'KUNWE'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Ship-to pt'.
      w_fillcat-seltext_m = 'Ship-to pt'.
      w_fillcat-seltext_l = 'Ship-to pt'.
      w_fillcat-outputlen = 10.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'STATUS'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Doc. Status'.
      w_fillcat-seltext_m = 'Doc. Status'.
      w_fillcat-seltext_l = 'Doc. Status'.
      w_fillcat-outputlen = 8.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'CENSTAT'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Cenvet status'.
      w_fillcat-seltext_m = 'Cenvet status'.
      w_fillcat-seltext_l = 'Cenvet status'.
      w_fillcat-outputlen = 8.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'MATKL'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Mat. Grp'.
      w_fillcat-seltext_m = 'Mat. Grp'.
      w_fillcat-seltext_l = 'Mat. Grp'.
      w_fillcat-outputlen = 9.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'WGBEZ'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Mat. Grp Desc.'.
      w_fillcat-seltext_m = 'Mat. Grp Desc.'.
      w_fillcat-seltext_l = 'Mat. Grp Desc.'.
      w_fillcat-outputlen = 20.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
    ENDFORM.                    " FILLCAT
    *&      Form  DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM display .
      DATA : lv_grid_title TYPE lvc_title.
      DATA: date1(10) TYPE c.
      DATA: tperiod(500) TYPE c,
            tperiod1(40) TYPE c,
            tperiod2(30) TYPE c,
            temp(25) TYPE c,
            temp1(35) TYPE c,
            temp2(25) TYPE c,
            temp3(25) TYPE c,
            temp4(60) TYPE c,
            temp5(100) TYPE c.
      CONCATENATE sy-datum6(2) sy-datum4(2) sy-datum+0(4)
                  INTO date1 SEPARATED BY '/'.
      CONCATENATE p_exdat-low6(2) p_exdat-low4(2) p_exdat-low+0(4)
                  INTO temp1 SEPARATED BY '/'.
      CONCATENATE p_exdat-high6(2) p_exdat-high4(2) p_exdat-high+0(4)
                  INTO temp2 SEPARATED BY '/'.
      CONCATENATE 'DUTY DEBIT STMT:'
                 temp1 'TO' temp2
                 INTO tperiod
                  SEPARATED BY space.
      IF ithp_j_1iexchdr-werks = '1000'.
        CONCATENATE tperiod  'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
                SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1101'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF  ithp_j_1iexchdr-werks = '1102'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1103'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1104'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1201'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1202'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1203'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1204'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1205'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1261'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1301'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1901'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '2000'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '2101'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '3000'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '3101'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSE.
        CONCATENATE tperiod ' ' INTO lv_grid_title
             SEPARATED BY space.
      ENDIF.
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING
          percentage = 100
          text       = 'Generating Report ... '.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = 'REPID'
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
      I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       i_grid_title                      = lv_grid_title
      I_GRID_SETTINGS                   =
         is_layout                         = layout
         it_fieldcat                       = t_fillcat
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
         i_default                         = 'X'
         i_save                            = 'X'
      IS_VARIANT                        =
      IT_EVENTS                         = 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                          = ithp_j_1iexchdr
    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
    Thanks in Advance.....

    Hi himanshu,
    here i am sending some solution.
    just create a internal table and wa for IT_SORT in grid display(just like for field cat).
    Then u have to populate the internal table by fields for which u want subtotals.
    just follow this code.
    data:  i_sort type SLIS_T_SORTINFO_ALV,
            wa_sort type SLIS_SORTINFO_ALV.
    wa_sort-fieldname = 'quantity'.
    wa_sort-up = 'X'.
    wa_sort-subtotal = 'X'.
    append wa_sort to i_sort.
    Do the same thing for all fields.
    mention the internal table name in Grid display.
    I think this some what useful to u,
    Bye.

  • Total in alv report

    hi everyone!
    there is an alv report  that runs correctly in dev system
    and shows the totals in the alv report.
    when the request is being transport to qa system,
    the alv report doesn't shows the totals line at all.
    i tried to transport the report several times activating all the includes screens and so on but it still doesn't work.
    what might be the problem?
    thanks its very urgent
    yifat

    Hi Yifat,
    Have you created a variant for the total alv display.
    In that case try out the same in the qa system. If not, please send the code for field catalog and function module call.
    Thanks
    Vinod

  • 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

  • Text getting truncated in alv report...

    hi friends,
         i am doing an alv report..the requirement is i need to display the user inputs at the top of the alv grid..in that, for a particular field, if the user is not selecting any option, then i need to display all the values in that category...i have concatenated all those values into a variable and displayed it...but the problem is, it is not taking beyond 60 characters as P_HEADING-INFO is only defined as characters of length 60...how to expand the character value of p_heading? thanks all..

    max size is
    types: begin of slis_listheader,
             typ(1) type c,   " H = Header, S = Selection, A = Action
             key(20) type c,
             info type slis_entry,
           end of slis_listheader.
    slis_entry(60) type c,
    so try to create one more Line if u have to much more data to display.
    regards
    Prabhu

  • Getting problem with ALV reports

    I am trying to set lock on columns in alv report so that when i scroll right the columns will stay fix. The code is
    REPORT ZBPALV.
    type-pools SLIS.
    data: w_fcat type slis_fieldcat_alv,
    t_fcat type slis_t_fieldcat_alv.
    w_fcat-fieldname = 'kunnr'.
    w_fcat-seltext_m = 'Customer'.
    w_fcat-key = 'x'.
    append w_fcat to t_fcat.
    data: begin of ty_kna1 occurs 100,
    kunnr type kunnr,
    end of ty_kna1.
    select kunnr from kna1 into table ty_kna1.
    *loop at ty_kna1.
    *write: ty_kna1-kunnr.
    *endloop.
    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 = t_fcat
    IT_EXCLUDING =
    IT_SPECIAL_GROUPS =
    IT_SORT =
    IT_FILTER =
    IS_SEL_HIDE =
    I_DEFAULT = 'X'
    I_SAVE = ' '
    IS_VARIANT =
    IT_EVENTS =
    IT_EVENT_EXIT =
    IS_PRINT =
    IS_REPREP_ID =
    I_SCREEN_START_COLUMN = 0
    I_SCREEN_START_LINE = 0
    I_SCREEN_END_COLUMN = 0
    I_SCREEN_END_LINE = 0
    IT_ALV_GRAPHICS =
    IT_HYPERLINK =
    IT_ADD_FIELDCAT =
    IT_EXCEPT_QINFO =
    I_HTML_HEIGHT_TOP =
    I_HTML_HEIGHT_END =
    IMPORTING
    E_EXIT_CAUSED_BY_CALLER =
    ES_EXIT_CAUSED_BY_USER =
    TABLES
    T_OUTTAB = ty_kna1
    EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    i came to know from a thread that w_fcat-key = 'x' will use for setting locks in fieldset.But its changing color which is right.Can i know how to fix the columns in alv report.
    Thanks in advance

    Hi
    KEY attribute displays your column output in Blue Color but it will not act as a fixed column.
    Try setting the FIX_COLUMN parameter = 'X'. Generally this is set along with the key fields just to make the output look similar to SAP standard table output.
    Hope this solves your problem.
    Enjoy SAP.
    Rajasekhar

  • CUSTOMIZE FIELD TOTAL IN ALV REPORT

    Hi all,
    I am using ALV List display and calculating totals and subtotals. I have 3 columns and the totals are all displayed column-wise.
    But my requirement is that total of 3rd column should not be the sum of all the values in that column but it has to be ( total of column1 / total of column2 ). How can I replace already calculated total of column 3 by the value I get by custom logic. Please suggest me which event needs to be used and how to capture calculated total values of first 2 columns.
    Here is e.g.
    COL1                           COL2                         COL3
    1               |                       2                 |              0.5
    9               |                       3                 |               3
    10             |                      5                 |                3.5        -> VALUE DISPLAYED BY ALV TOTAL
    10             |                      5                 |               (10/5 = 2) -> VALUE REQUIRED TO BE DISPLAYED
    Waiting for your replies....
    Regards
    Vasu

    Check the following example:
    report z_tot_alv.
    TYPE-POOLS SLIS.
    DATA: BEGIN OF ITAB OCCURS 0,
           BELNR LIKE BSEG-BELNR,
           GJAHR TYPE I,
           WRBTR TYPE I,
           WAERS LIKE BKPF-WAERS,
           TOTAL TYPE P,
          END OF ITAB.
    DATA: LAYOUT     TYPE SLIS_LAYOUT_ALV,
          IT_EVENTS  TYPE SLIS_T_EVENT,
          FCAT       TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
          REC_FCAT   TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
    START-OF-SELECTION.
      FCAT-COL_POS       = 1.
      FCAT-FIELDNAME     = 'BELNR'.
      FCAT-TABNAME       = 'ITAB'.
      FCAT-REF_FIELDNAME = 'BELNR'.
      FCAT-REF_TABNAME   = 'BSEG'.
      APPEND FCAT.
      FCAT-COL_POS       = 2.
      FCAT-FIELDNAME     = 'GJAHR'.
      FCAT-TABNAME       = 'ITAB'.
      FCAT-REF_FIELDNAME = 'GJAHR'.
      FCAT-DATATYPE      = 'INT4'.
      FCAT-INTTYPE       = 'I'.
      FCAT-DO_SUM        = 'X'.
      APPEND FCAT.
      FCAT-COL_POS       = 3.
      FCAT-FIELDNAME     = 'WRBTR'.
      FCAT-TABNAME       = 'ITAB'.
      FCAT-DATATYPE      = 'INT4'.
      FCAT-INTTYPE       = 'I'.
      FCAT-DO_SUM        = 'X'.
      APPEND FCAT.
    FCAT-COL_POS       = 4.
      FCAT-FIELDNAME     = 'TOTAL'.
      FCAT-TABNAME       = 'ITAB'.
    *  FCAT-DATATYPE      = 'INT4'.
      FCAT-INTTYPE       = 'P'.
      FCAT-DO_SUM        = 'X'.
      APPEND FCAT.
      DO 10 TIMES.
        ITAB-WRBTR = SY-INDEX.
        ITAB-GJAHR = SY-INDEX + 1.
       ITAB-TOTAL = ITAB-WRBTR / ITAB-GJAHR.
        APPEND ITAB.
      ENDDO.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
        EXPORTING
          I_CALLBACK_PROGRAM = 'Z_TOT_ALV'.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
        EXPORTING
          IS_LAYOUT   = LAYOUT
          IT_FIELDCAT = FCAT[]
          I_TABNAME   = 'ITAB'
          IT_EVENTS   = IT_EVENTS[]
        TABLES
          T_OUTTAB    = ITAB[].
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.

  • How to get total on Chart report

    I created a chart (line graph) in IR and set the legends on Depth with 5 products legends.
    How to get the total of these 5 products as a 6th legends.
    Ravi..

    The way it seems to (not) work for now is you can't have subtotals and grand total at the same time, at least not without some heavy tinkering and customising which would kinda defeat the purpose of the interactive report.

  • Sub total wise Grand total in ALV report

    Dear All,
    I am displaying a list of material through material group wise so for each material i want to display sub-total for stock and grand total of stock(material group wise).Here it is adding up all the stock displayed for different AUOM(alternative unit of measure ) which is for same material so i want to pick only the sub-total and sum up in my Grand total.
    How to pick only the Sub-total Results and Add in ALV List for Grand total.
    Thanks & Regards,
    Arun.
    Edited by: Arun Kumaran on Sep 24, 2008 7:46 AM

    Hi arun,
    check these links
    total and subtotal in alv
    ALV SUBTOTAL
    Regards,
    Anirban

  • Regarding sub totaling in alv

    hi,
    i am making report in alv in which i have to display the sub totals and den full total.
    is it possible to display sub total in ALV acccording to material type wise or itemid wise.
    plzz help me with some example.
    If find useful he or she will definately rewarded.........

    Hi, 
    The following example for sub totall for ALV  report..
    u have to pass do_sum = 'X'. for perticuler fileds.
    if it is use full answer reward me a points..
    *& Report  ZDEL_ALV1
    *Description:        This ALV interactive report is display Delivary
                       status
    REPORT  zdel_alv1 NO STANDARD PAGE HEADING LINE-SIZE 255 LINE-COUNT 60.
    *TABLE DECLARATION
    TABLES : likp,                     "Delivery Header Data
             lips,                     "Delivery item Data
             vbup.                     "sales document item status
    TYPE-POOLS : slis.
    *SRUCTURE DECLARATION
    *THIS TABLE FOR HEADER DETAILS
    TYPES : BEGIN OF t_likp ,
            vbeln LIKE likp-vbeln,     "Delivery number
            kosta like vbup-kosta,
            kunnr LIKE likp-kunnr,     "Customer number
            wadat LIKE likp-wadat,     "Planned goods movement date
            ernam LIKE likp-ernam,     "Name of person
            vkorg LIKE likp-vkorg,     "Sales organization
            lfart LIKE likp-lfart,      "DELIVERY TYPE
            ntgew LIKE likp-ntgew,      "NET WEIGHT
            END OF t_likp.
    *THIS TABLE FOR ITEM DETAILS
    TYPES : BEGIN OF t_lips ,
            vbeln LIKE lips-vbeln,     "Delivery number
            posnr LIKE lips-posnr,     "delivery item
            matnr LIKE lips-matnr,     "Material number
            lfimg LIKE lips-lfimg,     "Actual quantity delivered
            ntgew LIKE lips-ntgew,     "Net weight
            exbwr LIKE lips-exbwr,     "Externally entered posting amount
            arktx LIKE lips-arktx,     "Short text SO Item
            END OF t_lips.
    *THIS IS FOR FINAL OUTPUT
    TYPES : BEGIN OF t_vbup ,
            vbeln LIKE likp-vbeln,     "Delivery number
            kosta LIKE vbup-kosta,     "Picking status/Putaway status
            posnr LIKE vbup-posnr,     "delivery item
            matnr LIKE lips-matnr,     "Material number
            lfimg LIKE lips-lfimg,     "Actual quantity delivered
            ntgew LIKE lips-ntgew,     "Net weight
            exbwr LIKE lips-exbwr,     "Externally entered posting amount
            arktx LIKE lips-arktx,     "SHORT text SO Item
            description(20),           "for display text
            END OF t_vbup.
    *INTERNAL TABLES
    DATA : i_likp TYPE STANDARD TABLE OF t_likp.
    DATA : i_lips TYPE STANDARD TABLE OF t_lips.
    DATA : i_vbup TYPE STANDARD TABLE OF t_vbup.
    DATA : repid LIKE sy-repid.
    DATA : delivar1(10) TYPE c.
    *WORK AREA
    DATA : wa_likp TYPE t_likp.
    DATA : wa_lips TYPE t_lips.
    DATA : wa_vbup TYPE t_vbup.
    DATA:  i_vbup1 LIKE wa_vbup OCCURS 0 WITH  HEADER LINE.
    *SLIS TABLE DECLARATIONS
    DATA: i_fieldcat TYPE slis_t_fieldcat_alv  WITH HEADER LINE,
          i_events TYPE slis_t_event,
          w_events TYPE slis_alv_event,
          i_fieldcat1 TYPE slis_t_fieldcat_alv  WITH HEADER LINE,
          i_layout TYPE slis_layout_alv.
    *SELECTING RANGE OF VALUES
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS : s_vbeln  FOR likp-vbeln,
                     s_kunnr  FOR likp-kunnr,
                     s_wadat  FOR likp-wadat.
    SELECTION-SCREEN END OF BLOCK b1 .
    *CHOOSE ONE CHECK BOX FOR DISPLAYING THE DELIVARY STATUS
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
    PARAMETERS : cb_kostc AS CHECKBOX,"DEFAULT 'X',
                 cb_kosta AS CHECKBOX,
                 cb_kostb AS CHECKBOX.
    SELECTION-SCREEN END OF BLOCK b2.
    *INTIALIZATION CHECK
    INITIALIZATION.
      repid = sy-repid.
    *START-OF-SELECTION
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM get_field.
    PERFORM GET_EVENTS.
      PERFORM display.
    *END-OF-SELECTION
    END-OF-SELECTION.
    *&      Form  RUCOMM
          This form getting details from lips table for displaying
           the item details and all select statements for delivary status
         -->R_UCOMM    text
         -->RS_SELFIELDtext
    FORM user_command USING r_ucomm LIKE sy-ucomm  rs_selfield TYPE
                                                   slis_selfield.
      IF rs_selfield-fieldname = 'VBELN'.
        delivar1 = rs_selfield-value.
      ENDIF.
      IF cb_kostc = 'X'.
      SELECT   VBELN KOSTA   FROM   VBUP
      INTO TABLE I_VBUP
      WHERE  VBELN IN DELIVAR
      AND KOSTA = 'C'.
      SELECT VBELN MATNR LFIMG EXBWR INTO TABLE I_LIPS FROM LIPS
                                        WHERE VBELN EQ DELIVAR1.
        REFRESH i_vbup1[].
        CLEAR i_vbup1.
        SELECT avbeln akosta bposnr bmatnr blfimg bntgew b~exbwr
        b~arktx
        INTO TABLE i_vbup
        FROM vbup AS a INNER JOIN lips AS b
        ON avbeln = bvbeln
        WHERE a~vbeln EQ delivar1
           AND kosta = 'C'.
      ELSEIF cb_kosta = 'X'.
      SELECT   VBELN KOSTA   FROM   VBUP
      INTO TABLE I_VBUP
      WHERE  VBELN IN DELIVAR
      AND KOSTA = 'A'.
        SELECT avbeln akosta bposnr bmatnr blfimg bntgew b~exbwr
        b~arktx
        INTO TABLE i_vbup
        FROM vbup AS a INNER JOIN lips AS b
        ON avbeln = bvbeln
        WHERE a~vbeln EQ delivar1
           AND kosta = 'A'.
      ELSEIF cb_kostb = 'X'.
        SELECT   VBELN KOSTA   FROM   VBUP
      INTO TABLE I_VBUP
      WHERE  VBELN IN DELIVAR
      AND KOSTA = 'B'.
        SELECT avbeln akosta bposnr bmatnr blfimg bntgew b~exbwr
        b~arktx
        INTO TABLE i_vbup
        FROM vbup AS a INNER JOIN lips AS b
        ON avbeln = bvbeln
        WHERE a~vbeln EQ delivar1
           AND kosta = 'B'.
      ENDIF.
      CLEAR i_vbup1.
      LOOP AT i_vbup INTO wa_vbup.
        i_vbup1-vbeln = wa_vbup-vbeln.
        i_vbup1-kosta = wa_vbup-kosta.
        IF wa_vbup-kosta = 'C'.
          i_vbup1-description = 'COMPLETELY PROCESSED'.
        ELSEIF wa_vbup-kosta = 'B'.
          i_vbup1-description = 'PARTIALLY PROCESSED'.
        ELSEIF wa_vbup-kosta = 'A'.
          i_vbup1-description = 'NOT YET PROCESSED'.
        ENDIF.
        i_vbup1-posnr = wa_vbup-posnr.
        i_vbup1-matnr = wa_vbup-matnr.
        i_vbup1-lfimg = wa_vbup-lfimg.
        i_vbup1-ntgew = wa_vbup-ntgew.
        i_vbup1-exbwr = wa_vbup-exbwr.
        i_vbup1-arktx = wa_vbup-arktx.
        APPEND i_vbup1 .
      ENDLOOP.
      SORT i_vbup1 BY vbeln matnr lfimg.
      DELETE ADJACENT DUPLICATES FROM i_vbup1 COMPARING vbeln matnr lfimg.
    SELECT VBELN MATNR LFIMG EXBWR INTO TABLE I_LIPS FROM LIPS
                                         WHERE VBELN EQ DELIVAR1.
    *This function module for displaying the item details
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = repid
          it_fieldcat             = i_fieldcat1[]
          i_callback_top_of_page  = 'TOP_OF_PAGE'
          i_callback_user_command = 'USER_COMMAND1'
          it_events               = i_events
        TABLES
          t_outtab                = i_vbup1
        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.
      CLEAR i_vbup1.
    ENDFORM.                    "RUCOMM
    *&      Form  USER_COMMAND1
          text
         -->R_UCOMM1   text
         -->RS_SELFIELDtext
    FORM user_command1 USING r_ucomm1 LIKE sy-ucomm  rs_selfield1 TYPE
                                                     slis_selfield.
      DATA: deliv(10) TYPE c.
      IF rs_selfield1 = 'VBELN'.
        deliv = rs_selfield1-value.
      ENDIF.
      SET PARAMETER ID 'VL' FIELD delivar1.
      CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
    ENDFORM.                    "USER_COMMAND1
    *&      Form  GET_DATA
          This form for getting the data from likp table
    -->  p1        text
    <--  p2        text
    FORM get_data .
    SELECT VBELN KUNNR WADAT FROM LIKP INTO TABLE I_LIKP
                                     WHERE VBELN IN S_VBELN
                                     AND KUNNR IN S_KUNNR
                                     AND WADAT IN S_WADAT.
      REFRESH i_likp[].
      CLEAR i_likp.
      IF cb_kostc = 'X' AND cb_kosta = ' ' AND cb_kostb = ''.
        SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
        INTO TABLE i_likp
        FROM vbup AS a INNER JOIN likp AS b
        ON avbeln = bvbeln
        WHERE
              b~kunnr IN s_kunnr
              AND b~vbeln IN s_vbeln
              AND b~wadat IN s_wadat
               AND a~kosta = 'C'.
      ELSEIF cb_kosta = 'X' AND cb_kostb = ' ' AND cb_kostc = ''.
        SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
           INTO TABLE i_likp
           FROM vbup AS a INNER JOIN likp AS b
           ON avbeln = bvbeln
           WHERE
                 b~kunnr IN s_kunnr
                 AND b~vbeln IN s_vbeln
                 AND b~wadat IN s_wadat
                  AND a~kosta = 'A'.
      ELSEIF cb_kostb = 'X' AND cb_kosta = '' AND cb_kostc = ''.
        SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
           INTO TABLE i_likp
           FROM vbup AS a INNER JOIN likp AS b
           ON avbeln = bvbeln
           WHERE
                 b~kunnr IN s_kunnr
                 AND b~vbeln IN s_vbeln
                 AND b~wadat IN s_wadat
                  AND kosta = 'B'.
      ELSEIF cb_kostc = 'X' AND cb_kosta = 'X' AND cb_kostb = 'X'.
        SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
        INTO TABLE i_likp
        FROM vbup AS a INNER JOIN likp AS b
        ON avbeln = bvbeln
        WHERE
              b~kunnr IN s_kunnr
              AND b~vbeln IN s_vbeln
              AND b~wadat IN s_wadat
              AND kosta NE ' '.
      ENDIF.
      DELETE ADJACENT DUPLICATES FROM i_likp.
    ENDFORM.                    " GET_DATA
    *&      Form  GET_FIELD
          This form for defining the every fields from likp & lips tables
    FORM get_field .
    *This fields are retrieving from header table(likp)
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'VBELN'.
      i_fieldcat-seltext_m = 'SALES ORDER NO'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'KUNNR'.
      i_fieldcat-seltext_m = 'CUSTOMER NO'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'WADAT'.
      i_fieldcat-seltext_m = 'DATE'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'ERNAM'.
      i_fieldcat-seltext_m = 'NAME OF PERSON'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'VKORG'.
      i_fieldcat-seltext_m = 'SALES ORGANIZATION'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'LFART'.
      i_fieldcat-seltext_m = 'DELIVERY TYPE'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
      i_fieldcat-fieldname = 'NTGEW'.
      i_fieldcat-seltext_m = 'NET WEIGHT'.
      i_fieldcat-do_sum = 'X'.
      APPEND i_fieldcat TO i_fieldcat.
      CLEAR i_fieldcat.
    *This fields are retrieving from item table(lips)
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'VBELN'.
      i_fieldcat1-seltext_m = 'DELIVAR NO'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'POSNR'.
      i_fieldcat1-seltext_m = 'DELIVERY ITEM'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'MATNR'.
      i_fieldcat1-seltext_m = 'MATERIAL NO'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'LFIMG'.
      i_fieldcat1-seltext_m = 'ACTUAL QUANTITY'.
      i_fieldcat1-do_sum    = 'X'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'NTGEW'.
      i_fieldcat1-seltext_m = 'NET WEIGHT'.
      i_fieldcat1-do_sum = 'X'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'EXBWR'.
      i_fieldcat1-seltext_m = 'AMOUNT'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'ARKTX'.
      i_fieldcat1-seltext_m = 'SHORT TEXT FOR so ITEM'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
      i_fieldcat1-fieldname = 'DESCRIPTION'.
      i_fieldcat1-seltext_m = 'PICKING STATUS'.
      APPEND i_fieldcat1 TO i_fieldcat1.
      CLEAR i_fieldcat1.
    ENDFORM.                    " GET_FIELD
    *&      Form  GET_EVENTS
          This form defining the events
    *FORM GET_EVENTS .
    CLEAR W_EVENTS.
    W_EVENTS-NAME = 'USER_COMMAND'.
    W_EVENTS-FORM = 'RUCOMM'.
    APPEND W_EVENTS TO I_EVENTS.
    *ENDFORM.                    " GET_EVENTS
    *&      Form  DISPLAY
         This form is going to display header details from likp table
    FORM display .
    *This function module for displaying the header details
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = repid
          i_callback_top_of_page  = 'TOP-OF-PAGE'
          i_callback_user_command = 'USER_COMMAND'
          it_fieldcat             = i_fieldcat[]
          i_save                  = 'X'
          it_events               = i_events
        TABLES
          t_outtab                = i_likp
        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
    *&      Form  TOP-OF-PAGE
        This form is going to display top-of-page header text
    FORM top-of-page.
      DATA:  i_list_comments TYPE slis_t_listheader.
      DATA:  w_list_comments TYPE slis_listheader.
      CLEAR: i_list_comments[].
      w_list_comments-typ  = 'H'. "H=Header, S=Selection, A=Action
      w_list_comments-info = 'DELIVERY ORDER DETAILS'.
      APPEND w_list_comments TO i_list_comments.
      w_list_comments-typ  = 'A'. " H = Header, S = Selection, A = Action
      w_list_comments-info = 'Basic list'.
      APPEND w_list_comments TO i_list_comments.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          i_logo             = 'enjoy'
          it_list_commentary = i_list_comments.
    ENDFORM.                    "TOP-OF-PAGE
    *&      Form  TOP_OF_PAGE
           This form is going to display top-of-page item text
    FORM top_of_page.
      DATA:  i_list_comments TYPE slis_t_listheader.
      DATA:  w_list_comments TYPE slis_listheader.
      DATA : i_line LIKE w_list_comments-info.
      CONCATENATE 'DELIVERY ITEM DETAILS :' delivar1 INTO i_line .
    SEPARATED BY SPACE.
      CLEAR: i_list_comments[].
      w_list_comments-typ  = 'H'. "H=Header, S=Selection, A=Action
      w_list_comments-info = i_line.
      APPEND w_list_comments TO i_list_comments.
      w_list_comments-typ  = 'A'. " H = Header, S = Selection, A = Action
      w_list_comments-info = 'Secondary list'.
      APPEND w_list_comments TO i_list_comments.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          i_logo             = 'enjoy'
          it_list_commentary = i_list_comments.
    ENDFORM.                    "TOP_OF_PAGE

  • Currency wise grand totals IN ALV

    Hi friends,
    I  have problem  in alv report, my requirement is want to display the
    currency wise grand totals in ALV Report.if any having this idea please
    address the solution.
    yours
    ramakrishna.Y

    if i am not wrong then ithink you are talking about subtotal as per currency .
    then you have to use sort fnality..
    you have to write your fieldcat for currency value field
    wfieldcat-do_sum = 'X'.
    data : isort type slis_t_sortinfo_alv,
             wsort type slis_sortinfo_alv.
    wsort-spos = 1.
    wsort-up = 'X'.
    wsort-fieldname = ' YOUR CURRency key field in caps'.
    wsort-group = 'UL'.
    append wsort to isort.
    you have to pass that to reuse alv fm it_sort = isort.
    regards
    shiba dutta

  • How to get the total pages in ALV report?

    Hi guys,
    Since I used page breaks can somebody please help me on how to get the total pages in ALV report?sincerely please...thanks guys.

    automatic display total page.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a415907
    r

Maybe you are looking for