Custom Subtotals

Hi there
I am new to Crystal Reports and am struggling on my first report, so any help would be much appreciated.
I have created a report with grouping levels. I have got my subtotals in for each group.
I would however like to subtotal a field based on a condition. I would like to split my total hours up into "working hrs" and "non-working hrs" and do this for each area - which I have already grouped by. the sql is
SELECT     SUM(Hrs)
FROM         PROJECT_LEDGER
WHERE     (A01 = N'basic rate') OR
                      (A01 = N'Bank Hol')
I would like this sql statement though to apply to each group rather than all the records in the database.
I don't know whether I need a formula, or an sql statement etc.
Many thanks
Amanda

Hi,
Just write a Running total formula for your Particular field lets say it is 'Amount'.
Field to summarize is 'Amount'
Type of summary is 'Sum'
Under Evaluate Section
Go to Use Formula---> write formula like this.
                          if (Field= 'Working hours')
              --  Here you can write any condition
Under Reset Section
select on change of group and select the group you are going to do subtotal.
Click OK.
Thats all.
Thanks,
Vijay

Similar Messages

  • ALV Totals , Subtotals for a particular field in ALV Grid report

    Hi,
    I have an issue in ALV totals and subtotals.
    Scenario is like this.
    i have a vendor data to be pulled out of SAP and to be shown in the form of report.
    i am populating all the data and doing do_sum based on Vendor ( has expansin & collapse option ) and display the number of reports .
    Vendor -
    100
    Vendor1 -
    1
    Vendor2----
    2.
    Vendor100----
    100.
    but my problem is in the same report i have a date field .
    if i have a five vendors created on 03/03/2008. in the same report for the date field having ( expansion & collapse ) , when i expand based on that date can i be able to sum up all the vendors created on 03/03/2008 and display in the same report along with the vendor count.
    Let me know . Thank you in advance
    Regards,
    Ry

    Hi Roby,
    Have a look at this sample code
    It will help u,
    REPORT ZIN_FI_AGEING
           message-id zbdc
           no standard page heading.
    Title                   : For Ageing Details
    Author                  :
    Date                    : 22/11/2004
    Transport/Correction Id :
    Clarify case ID         :
    Application             : FI
    Program Type            :
    Frequency               :
    Purpose                 :
    Comments                :
    Request No              :
      TABLES DELCARATIONS
    Tables: zzgeinz9a,    "Actual line item table
            t001.         "Plants/Branches
      ALV TTPE DELCARATIONS
    type-pools: slis.
    *Type Declarations for Field Catalog
    data : i_fldcat_head type slis_t_fieldcat_alv,
           wa_fldcat_head type slis_fieldcat_alv.
    *Type Declarations for ALV Events
    data : i_events type slis_t_event,
           wa_event like line of i_events.
    *Type Declarations for Layout Design
    data : wa_layout type slis_layout_alv.
    *Type Declarations for Sorting Fields
    data:  it_sort type slis_sortinfo_alv occurs 0 with header line.
    *Type Declarations for Displaying Images on Grid
    data : i_comment type slis_t_listheader,
           wa_comment type slis_listheader.
    *Type Declarations for Grouping fields
    data : wa_group type slis_sp_group_alv,
           i_group type slis_t_sp_group_alv.
      DATA DELCARATIONS
    data: v_flag,                 "Status Flag
          v_repid like sy-repid,  "Program Name
          p_year(4) type c,       "Year
          v_due_days type i.      "To hold the due days
      CONSTANTS DELCARATIONS
    constants: c_x type c value 'X',
               c_bukrs(4) type c value '0373'.
      INTERNAL TABLES DELCARATIONS
    *--Internal table to hold the required data
    data: begin of it_final_vendor occurs 0,
            rzzlifnr    like zzgeinz9a-rzzlifnr,  "Vendor
            name1       like lfa1-name1,          "Vendor Name
            docnr       like zzgeinz9a-DOCNR,     "Accounting Doc No
            refdocnr    like zzgeinz9a-REFDOCNR,  "Reference document no
            belnr       like bkpf-belnr,          "FI Doc No
            doc_date    like bkpf-awkey,          "Document Date
            zbd1t       like bsik-zbd1t,          "Cash discount days 1
            bldat       like bkpf-bldat,          "Document Date
            due_date    like bkpf-bldat,          "Due Date
            due_days    type i,                   "Due Days
            rzz_ebeln   like zzgeinz9a-rzz_ebeln, "P.O. Ref No
            not_due     like zzgeinz9a-hsl,       "Not Yet Due
            hsl         like zzgeinz9a-hsl,       "local currency
            found       type c,                   "Existance Flag
          end of it_final_vendor.
    data: begin of it_final_vendor_temp occurs 0,
            rzzlifnr    like zzgeinz9a-rzzlifnr,  "Vendor
            name1       like lfa1-name1,          "Vendor Name
            belnr       like bkpf-belnr,          "FI Doc No
            bldat       like bkpf-bldat,          "Document Date
            rzz_ebeln   like zzgeinz9a-rzz_ebeln, "P.O. Ref No
            hsl        like zzgeinz9a-hsl,        "local currency
            due_date    like bkpf-bldat,          "Due Date
            due_days    type i,                   "Due Days
            not_due     like zzgeinz9a-hsl,       "Not Yet Due
            buck_0_30   like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_31_60  like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_61_90  like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_91_180 like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_180    like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            docnr       like zzgeinz9a-DOCNR,     "Accounting Doc No
            refdocnr    like zzgeinz9a-REFDOCNR,  "Reference document no
            doc_date    like bkpf-awkey,          "Document Date
            found       type c,                   "Existance Flag
          end of it_final_vendor_temp.
    data: begin of it_final_customer occurs 0,
            rzzkunnr    like zzgeinz9a-rzzkunnr,  "Customer
            name1       like kna1-name1,          "Customer Name
            docnr       like zzgeinz9a-DOCNR,     "Accounting Doc No
            refdocnr    like zzgeinz9a-REFDOCNR,  "Reference document no
            belnr       like bkpf-belnr,          "FI Doc No
            doc_date    like bkpf-awkey,          "Document Date
            zbd1t       like bsik-zbd1t,          "Cash discount days 1
            bldat       like bkpf-bldat,          "Document Date
            due_date    like bkpf-bldat,          "Due Date
            due_days    type i,                   "Due Days
            rzz_ebeln   like zzgeinz9a-rzz_ebeln, "P.O. Ref No
            not_due     like zzgeinz9a-hsl,       "Not Yet Due
            hsl         like zzgeinz9a-hsl,       "local currency
            found       type c,                   "Existance Flag
          end of it_final_customer.
    data: begin of it_final_customer_temp occurs 0,
            rzzkunnr    like zzgeinz9a-rzzkunnr,  "Customer
            name1       like kna1-name1,          "Customer Name
            belnr       like bkpf-belnr,          "FI Doc No
            bldat       like bkpf-bldat,          "Document Date
            rzz_ebeln   like zzgeinz9a-rzz_ebeln, "P.O. Ref No
            hsl        like zzgeinz9a-hsl,        "local currency
            due_date    like bkpf-bldat,          "Due Date
            due_days    type i,                   "Due Days
            not_due     like zzgeinz9a-hsl,       "Not Yet Due
            buck_0_30   like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_31_60  like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_61_90  like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_91_180 like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_180    like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            docnr       like zzgeinz9a-DOCNR,     "Accounting Doc No
            refdocnr    like zzgeinz9a-REFDOCNR,  "Reference document no
            doc_date    like bkpf-awkey,          "Document Date
            found       type c,                   "Existance Flag
          end of it_final_customer_temp.
    *--Internal Table to hold the Cash discount days 1 for Vendors
    data: begin of it_final_bsik occurs 0,
            belnr like bsik-belnr,
            zbd1t like bsik-zbd1t,
          end of it_final_bsik.
    *--Internal Table to hold the Cash discount days 1 for Customers
    data: begin of it_final_bsid occurs 0,
            belnr like bsid-belnr,
            zbd1t like bsid-zbd1t,
          end of it_final_bsid.
      INITIALIZATION
    v_repid = sy-repid.
      SELECTION SCREEN
    selection-screen: begin of block b1 with frame title text-h01.
    selection-screen skip.
    select-options: s_vendor for zzgeinz9a-rzzlifnr modif id ven.
    parameters: p_comp1 like t001-bukrs modif id ven.
    parameters: p_rundt1 like bkpf-bldat modif id ven.
    select-options: s_cust for zzgeinz9a-rzzkunnr modif id cst.
    parameters: p_comp2 like t001-bukrs modif id cst.
    parameters: p_rundt2 like bkpf-bldat modif id cst.
    selection-screen skip.
    selection-screen: begin of block b2 with frame title text-h02.
    parameters : p_vendor radiobutton group gr1 default 'X'
                                      user-command test,
                 p_cust  radiobutton group gr1.
    selection-screen: end of block b2.
    selection-screen: end of block b1.
    **************************AT Selection Screen OutPut ******************
    at selection-screen output.
      loop at screen.
        if p_cust = 'X'.
          if screen-group1 = 'VEN'.
            screen-active = '0'.
            screen-input = '0'.
            screen-output = '0'.
            screen-invisible = '0'.
          endif.
        elseif p_vendor = 'X'.
          if screen-group1 = 'CST'.
            screen-active = '0'.
            screen-input = '0'.
            screen-output = '0'.
            screen-invisible = '0'.
          endif.
        endif.
        modify screen.
      endloop.
      SELECTION SCREEN ON
    at selection-screen on s_vendor.
    *--Validating Vendor
      if not s_vendor[] is initial.
        perform validate_s_vendor.
      endif.
    at selection-screen on s_cust.
    *--Validating Customer
      if not s_cust[] is initial.
        perform validate_s_cust.
      endif.
    at selection-screen on p_comp1.
    *--Validating Company Code.
      if not p_comp1 is initial.
        perform validate_p_comp1.
      endif.
    at selection-screen on p_comp2.
    *--Validating Company Code.
      if not p_comp2 is initial.
        perform validate_p_comp2.
      endif.
      START OF SELECTION
    start-of-selection.
    if p_vendor = 'X'.
       perform get_vendor_data.
    elseif p_cust = 'X'.
       perform get_customer_data.
    endif.
      END OF SELECTION
    end-of-selection.
    if p_vendor = 'X'.
    *--Generating the output for vendor
      perform generate_field_catalog_vendor.
      perform get_events_vendor.
      perform generate_layout_vendor.
      perform generate_sort_vendor.
      perform generate_group_vendor.
      perform disp_alv_grid_vendor.
    elseif p_cust = 'X'.
    *--Generating the output for customer
      perform generate_field_catalog_cust.
      perform get_events_customer.
      perform generate_layout_customer.
      perform generate_sort_customer.
      perform generate_group_customer.
      perform disp_alv_grid_customer.
    endif.
    *&      Form  validate_s_vendor
          Validating the Vendor
    form validate_s_vendor.
      select rzzlifnr up to 1 rows
      into (zzgeinz9a-rzzlifnr)
      from zzgeinz9a
      where rzzlifnr in s_vendor.
      endselect.
      if sy-subrc ne 0.
        message e004 with 'Invalid Range of Vendor'(002)
    s_vendor-low 'To'(006) s_vendor-high.
      endif.
    endform.                    " validate_s_vendor
    *&      Form  validate_s_cust
          Validating the Customer
    form validate_s_cust.
       select rzzkunnr up to 1 rows
       into (zzgeinz9a-rzzkunnr)
       from zzgeinz9a
       where rzzkunnr in s_cust.
       endselect.
       if sy-subrc ne 0.
         message e004 with 'Invalid Range of Customer'(005)
    s_cust-low 'To'(006) s_cust-high.
      endif.
    endform.                    " validate_s_cust
    *&      Form  validate_p_comp1
          Validating the Company Code
    form validate_p_comp1.
      select single bukrs
             into   (t001-bukrs)
             from   t001
             where  bukrs eq p_comp1.
      if sy-subrc ne 0.
        message e004 with 'Company Code'(004) p_comp1 'Does not Exists'(003)
      endif.
    endform.                    " validate_p_comp1
    *&      Form  validate_p_comp2
          Validating the Company Code
    form validate_p_comp2.
      select single bukrs
             into   (t001-bukrs)
             from   t001
             where  bukrs eq p_comp2.
      if sy-subrc ne 0.
        message e004 with 'Company Code'(004) p_comp2 'Does not Exists'(003)
      endif.
    endform.                    " validate_p_comp2
    *&      Form  get_vendor_data
          Getting the Vendor Related Docs
    form get_vendor_data.
    select a~rzzlifnr
            b~name1
            a~docnr
            a~refdocnr
            a~rzz_ebeln
            a~hsl
        into corresponding fields of table it_final_vendor
        from zzgeinz9a as a
        inner join lfa1 as b
        on arzzlifnr = blifnr
        where rzzlifnr in s_vendor
        and   rbukrs   eq p_comp1.
        if sy-subrc eq 0.
          v_flag = 'X'.
          p_year = sy-datum+0(4).
          perform get_doc_date using p_comp1
                                     p_year.
          perform move_records.
          sort it_final_vendor by rzzlifnr.
          perform generate_data.
        else.
          v_flag = space.
        endif.
    endform.                    " get_vendor_data
    *&      Form  get_customer_data
          Getting the Customer Related Docs
    form get_customer_data.
    select a~rzzkunnr
            b~name1
            a~docnr
            a~refdocnr
            a~rzz_ebeln
            a~hsl
        into corresponding fields of table it_final_customer
        from zzgeinz9a as a
        inner join kna1 as b
        on arzzkunnr = bkunnr
        where rzzkunnr in s_cust
        and   rbukrs   eq p_comp2.
        if sy-subrc eq 0.
          v_flag = 'X'.
          p_year = sy-datum+0(4).
          perform get_doc_date_cust using p_comp2
                                          p_year.
          perform move_records_cust.
          sort it_final_customer by rzzkunnr.
          perform generate_data_cust.
        else.
          v_flag = space.
        endif.
    endform.                    " get_customer_data
    *&      Form  get_doc_date
          Getting the Document Date and FI Doc No
         -->P_P_COMP1 Company Code
         -->P_P_YEAR  Fiscal Year
    form get_doc_date using    p_p_comp1
                               p_p_year.
      loop at it_final_vendor.
        concatenate it_final_vendor-refdocnr '*' into
    it_final_vendor-doc_date.
        modify it_final_vendor index sy-tabix.
    endloop.
    clear it_final_vendor.
    data: v_doc_date(11) type c,
          v_belnr like bkpf-belnr,
          v_bldat like bkpf-bldat.
          loop at it_final_vendor.
           concatenate it_final_vendor-refdocnr '%' into v_doc_date.
            select single belnr
                          bldat
                   into corresponding fields of it_final_vendor
                   from bkpf
                   where bukrs eq p_p_comp1
                   and   gjahr eq p_p_year
                   and   awkey like v_doc_date.
                   modify it_final_vendor.
           endloop.
        clear:it_final_vendor.
    endform.                    " get_doc_date
    *&      Form  move_records
          Moving records to final internal table
    form move_records.
    *--Checking the existance of belnr in bsik
    clear it_final_vendor.
      select belnr
             zbd1t
             into table it_final_bsik
             from bsik
             for all entries in it_final_vendor
             where belnr eq it_final_vendor-belnr
             and   bukrs eq c_bukrs.
    clear it_final_bsik.
      loop at it_final_vendor.
        read table it_final_bsik with key belnr = it_final_vendor-belnr.
        if sy-subrc eq 0.
          it_final_vendor-zbd1t = it_final_bsik-zbd1t.
          it_final_vendor-due_date = it_final_vendor-bldat +
    it_final_bsik-zbd1t.
          it_final_vendor-found    = 'X'.
          modify it_final_vendor.
        endif.
      endloop.
    endform.                    " move_records
    *&      Form  generate_data
          Segregating the records based on due_date
    form generate_data.
      delete it_final_vendor[] where found ne 'X'.
      sort it_final_vendor by belnr.
      loop at it_final_vendor.
        if it_final_vendor-due_date > p_rundt1.
          move-corresponding it_final_vendor to it_final_vendor_temp.
          move it_final_vendor-hsl to it_final_vendor_temp-not_due.
        elseif it_final_vendor-due_date < p_rundt1.
          it_final_vendor-due_days = p_rundt1 - it_final_vendor-DUE_DATE.
        endif.
    *--filling 0-30 bucket.
        if it_final_vendor-due_days ge 0 AND it_final_vendor-due_days le 30.
          move-corresponding it_final_vendor to it_final_vendor_temp.
          move it_final_vendor-hsl to it_final_vendor_temp-buck_0_30.
    *--filling 31-60 bucket.
    elseif it_final_vendor-due_days ge 31 AND it_final_vendor-due_days le 60
          move-corresponding it_final_vendor to it_final_vendor_temp.
          move it_final_vendor-hsl to it_final_vendor_temp-buck_31_60.
    *--filling 61-90 bucket.
    elseif it_final_vendor-due_days ge 61 AND it_final_vendor-due_days le 90
          move-corresponding it_final_vendor to it_final_vendor_temp.
          move it_final_vendor-hsl to it_final_vendor_temp-buck_61_90.
    *--filling 91-180 bucket.
        elseif it_final_vendor-due_days ge 91 AND it_final_vendor-due_days
    le 180.
          move-corresponding it_final_vendor to it_final_vendor_temp.
          move it_final_vendor-hsl to it_final_vendor_temp-buck_91_180.
    *--filling 180 bucket.
        elseif it_final_vendor-due_days gt 180.
          move-corresponding it_final_vendor to it_final_vendor_temp.
          move it_final_vendor-hsl to it_final_vendor_temp-buck_180.
        endif.
         append it_final_vendor_temp.
         clear it_final_vendor_temp.
      endloop.
    endform.                    " generate_data
    *&      Form  DISP_ALV_GRID_VENDOR
          Displaying the output in grid For Vendor
    form DISP_ALV_GRID_VENDOR.
    *--Generating the OUTPUT GRID FOR VENDOR
      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          = ' '
        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                         = wa_layout
          IT_FIELDCAT                       = i_fldcat_head
        IT_EXCLUDING                      =
          IT_SPECIAL_GROUPS                 = i_group
          IT_SORT                           = it_sort[]
        IT_FILTER                         =
        IS_SEL_HIDE                       =
        I_DEFAULT                         = 'X'
        I_SAVE                            = ' '
        IS_VARIANT                        =
          IT_EVENTS                         = i_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                          = it_final_vendor_temp
       EXCEPTIONS
         PROGRAM_ERROR                     = 1
         OTHERS                            = 2
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.                    " DISP_ALV_GRID
    *&      Form  get_doc_date_cust
          text
         -->P_P_COMP2 Company Code
         -->P_P_YEAR  Fiscal Year
    form get_doc_date_cust using    p_p_comp2
                                    p_p_year.
      loop at it_final_customer.
        concatenate it_final_customer-refdocnr '*' into
    it_final_customer-doc_date.
        modify it_final_customer index sy-tabix.
    endloop.
    clear it_final_customer.
    data: v_doc_date(11) type c,
          v_belnr like bkpf-belnr,
          v_bldat like bkpf-bldat.
          loop at it_final_customer.
           concatenate it_final_customer-refdocnr '%' into v_doc_date.
            select single belnr
                          bldat
                   into corresponding fields of it_final_customer
                   from bkpf
                   where bukrs eq p_p_comp2
                   and   gjahr eq p_p_year
                   and   awkey like v_doc_date.
                   modify it_final_customer.
           endloop.
        clear:it_final_customer.
    endform.                    " get_doc_date_cust
    *&      Form  move_records_cust
          Moving Customer Data to Final Internal Table
    form move_records_cust.
    *--Checking the existance of belnr in bsid
      select belnr
             zbd1t
             into table it_final_bsid
             from bsid
             for all entries in it_final_customer
             where belnr eq it_final_customer-belnr
             and   bukrs eq c_bukrs.
    clear it_final_bsid.
      loop at it_final_customer.
        read table it_final_bsid with key belnr = it_final_customer-belnr.
        if sy-subrc eq 0.
          it_final_customer-zbd1t    = it_final_bsid-zbd1t.
          it_final_customer-due_date = it_final_customer-bldat +
    it_final_bsid-zbd1t.
          it_final_customer-found    = 'X'.
          modify it_final_customer.
        endif.
      endloop.
    endform.                    " move_records_cust
    *&      Form  generate_data_cust
          Generating the Customer Output
    form generate_data_cust.
      delete it_final_customer[] where found ne 'X'.
      sort it_final_customer by belnr.
      loop at it_final_customer.
        if it_final_customer-due_date > p_rundt2.
         move-corresponding it_final_customer to it_final_customer_temp.
         move it_final_customer-hsl to it_final_customer_temp-not_due.
        elseif it_final_customer-due_date < p_rundt2.
         it_final_customer-due_days = p_rundt2 - it_final_customer-DUE_DATE.
        endif.
    *--filling 0-30 bucket.
    if it_final_customer-due_days ge 0 AND it_final_customer-due_days le 30
          move-corresponding it_final_customer to it_final_customer_temp.
          move it_final_customer-hsl to it_final_customer_temp-buck_0_30.
    *--filling 31-60 bucket.
    elseif it_final_customer-due_days ge 31 AND it_final_customer-due_days
    le 60
          move-corresponding it_final_customer to it_final_customer_temp.
          move it_final_customer-hsl to it_final_customer_temp-buck_31_60.
    *--filling 61-90 bucket.
    elseif it_final_customer-due_days ge 61 AND it_final_customer-due_days
    le 90
          move-corresponding it_final_customer to it_final_customer_temp.
          move it_final_customer-hsl to it_final_customer_temp-buck_61_90.
    *--filling 91-180 bucket.
        elseif it_final_customer-due_days ge 91 AND
    it_final_customer-due_days
    le 180.
          move-corresponding it_final_customer to it_final_customer_temp.
          move it_final_customer-hsl to it_final_customer_temp-buck_91_180.
    *--filling 180 bucket.
        elseif it_final_customer-due_days gt 180.
          move-corresponding it_final_customer to it_final_customer_temp.
          move it_final_customer-hsl to it_final_customer_temp-buck_180.
        endif.
         append it_final_customer_temp.
         clear it_final_customer_temp.
      endloop.
    endform.                    " generate_data_cust
    *&      Form  generate_field_catalog_vendor
          Generating the Field Catalog for Vendor
    form generate_field_catalog_vendor.
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
          I_PROGRAM_NAME               = v_repid
          I_INTERNAL_TABNAME           = 'IT_FINAL_VENDOR_TEMP'
        I_STRUCTURE_NAME             =
        I_CLIENT_NEVER_DISPLAY       = 'X'
          I_INCLNAME                   = v_repid
        I_BYPASSING_BUFFER           =
        I_BUFFER_ACTIVE              =
        changing
          ct_fieldcat                  = i_fldcat_head
       EXCEPTIONS
         INCONSISTENT_INTERFACE       = 1
         PROGRAM_ERROR                = 2
         OTHERS                       = 3
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
      if not i_fldcat_head[] is initial.
        loop at i_fldcat_head into wa_fldcat_head.
        case wa_fldcat_head-fieldname.
         when 'RZZLIFNR'.
            wa_fldcat_head-col_pos = '1'.
            wa_fldcat_head-ref_tabname = ' '.
            wa_fldcat_head-seltext_m  = 'Vendor No'(001).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '12'.
         when 'NAME1'.
            wa_fldcat_head-col_pos = '2'.
            wa_fldcat_head-seltext_m  = 'Vendor Name'(007).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '35'.
         when 'BELNR'.
            wa_fldcat_head-col_pos = '3'.
            wa_fldcat_head-seltext_m  = 'Invoice No'(008).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '12'.
            wa_fldcat_head-KEY       = ' '.
         when 'BLDAT'.
            wa_fldcat_head-col_pos = '4'.
            wa_fldcat_head-seltext_m  = 'Document Date'(009).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '13'.
            wa_fldcat_head-ref_tabname = ' '.
         when 'RZZ_EBELN'.
            wa_fldcat_head-col_pos = '5'.
            wa_fldcat_head-seltext_m  = 'PO.Ref.No'(010).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '13'.
            wa_fldcat_head-ref_tabname = ' '.
         when 'HSL'.
            wa_fldcat_head-col_pos = '6'.
            wa_fldcat_head-seltext_m  = 'Invoice Amount'(011).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'DUE_DATE'.
            wa_fldcat_head-col_pos = '7'.
            wa_fldcat_head-seltext_m  = 'Due Date'(012).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '12'.
            wa_fldcat_head-ref_tabname = ' '.
         when 'DUE_DAYS'.
            wa_fldcat_head-col_pos = '8'.
            wa_fldcat_head-seltext_m  = 'Due Days'(013).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '9'.
         when 'NOT_DUE'.
            wa_fldcat_head-col_pos = '9'.
            wa_fldcat_head-seltext_m  = 'Not Due'(014).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_0_30'.
            wa_fldcat_head-col_pos = '10'.
            wa_fldcat_head-seltext_m  = '0 To 30'(015).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_31_60'.
            wa_fldcat_head-col_pos = '11'.
            wa_fldcat_head-seltext_m  = '31 To 60'(016).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_61_90'.
            wa_fldcat_head-col_pos = '12'.
            wa_fldcat_head-seltext_m  = '61 To 90'(017).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_91_180'.
            wa_fldcat_head-col_pos = '13'.
            wa_fldcat_head-seltext_m  = '91 To 180'(018).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_180'.
            wa_fldcat_head-col_pos = '14'.
            wa_fldcat_head-seltext_m  = 'Beyond 180'(019).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
        when 'DOCNR'.
            wa_fldcat_head-no_out = 'X'.
        when 'REFDOCNR'.
            wa_fldcat_head-no_out = 'X'.
        when 'DOC_DATE'.
            wa_fldcat_head-no_out = 'X'.
        when 'FOUND'.
            wa_fldcat_head-no_out = 'X'.
         endcase.
         modify i_fldcat_head from wa_fldcat_head index sy-tabix.
        endloop.
      endif.
    endform.                    " generate_field_catalog_vendor
    *&      Form  get_events_vendor
          Getting ALV Events
    form get_events_vendor.
        call function 'REUSE_ALV_EVENTS_GET'
      EXPORTING
        I_LIST_TYPE           = 0
       importing
         et_events             = i_events
      exceptions
        list_type_wrong       = 1
        others                = 2
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
      if not i_events[] is initial.
       read table i_events into wa_event with key name = 'TOP_OF_PAGE'(024)
       wa_event-form = 'GENERATE_USERCOMMAND'.
       modify i_events from wa_event index sy-tabix.
       read table i_events into wa_event with key name = 'END_OF_LIST'(025)
       wa_event-form = 'GENERATE_USERCOMMAND_FOOTER'.
       modify i_events from wa_event index sy-tabix.
      endif.
    endform.                    " get_events_vendor
    *&      Form  GENERATE_USERCOMMAND
          Displaying Header-Text and Logo on Grid
    form generate_usercommand .
      clear i_comment[].
      wa_comment-typ = 'H'.
      wa_comment-info = 'Vendor Ageing Report'(026).
      append wa_comment to i_comment.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
        exporting
          it_list_commentary = i_comment
          i_logo             = 'ENJOYSAP_LOGO'
        I_END_OF_LIST_GRID       = 'X'
    endform.                    " GENERATE_USERCOMMAND
    *&      Form  GENERATE_USERCOMMAND_FOOTER
          Displaying Footer-Text on Grid
    form generate_usercommand_footer.
      clear i_comment[].
      clear wa_comment.
      wa_comment-typ = 'S'.
      wa_comment-key = 'GE-Betz'(027).
      append wa_comment to i_comment.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
        exporting
          it_list_commentary       = i_comment
        I_LOGO                  = ''
          i_end_of_list_grid       = 'X'.
    endform.                    " GENERATE_USERCOMMAND_FOOTER
    *&      Form  generate_layout_vendor
          Generating the ALV Layout
    form generate_layout_vendor.
      WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.     "OPTIMIZING FIELD WIDTH
      wa_layout-zebra = 'X'.                  "PUTTING ZEBRA COLORS
      wa_layout-confirmation_prompt = 'X'.    "DISPLAYS CONFIRMATION DIALOG
      wa_layout-totals_text = 'Totals'(028).       "DISPLAYS TOTALS TEXT
      wa_layout-subtotals_text = 'Sub Totals'(029)."DISPLAYS SUBTOTALS TEXT
    endform.                    " generate_layout_vendor
    *&      Form  generate_sort_vendor
          Sorting the Internal Table by Vendor
    form generate_sort_vendor.
      it_sort-fieldname = 'RZZLIFNR'.
      it_sort-tabname = 'IT_FINAL_VENDOR_TEMP'.
      it_sort-up = 'X'.
      it_sort-subtot = 'X'.
      append it_sort.
    endform.                    " generate_sort_vendor
    *&      Form  generate_group_vendor
          Grouping the Data
    form generate_group_vendor.
      clear i_group.
      wa_group-sp_group = 'A'.
      wa_group-text  = 'RZZLIFNR'.
      append wa_group to i_group.
    endform.                    " generate_group_vendor
    *&      Form  GENERATE_FIELD_CATALOG_CUST
          Generating Field Catalog for Customer
    form GENERATE_FIELD_CATALOG_CUST.
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
          I_PROGRAM_NAME               = v_repid
          I_INTERNAL_TABNAME           = 'IT_FINAL_CUSTOMER_TEMP'
        I_STRUCTURE_NAME             =
        I_CLIENT_NEVER_DISPLAY       = 'X'
          I_INCLNAME                   = v_repid
        I_BYPASSING_BUFFER           =
        I_BUFFER_ACTIVE              =
        changing
          ct_fieldcat                  = i_fldcat_head
       EXCEPTIONS
         INCONSISTENT_INTERFACE       = 1
         PROGRAM_ERROR                = 2
         OTHERS                       = 3
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
      if not i_fldcat_head[] is initial.
        loop at i_fldcat_head into wa_fldcat_head.
        case wa_fldcat_head-fieldname.
         when 'RZZKUNNR'.
            wa_fldcat_head-col_pos = '1'.
            wa_fldcat_head-ref_tabname = ' '.
            wa_fldcat_head-seltext_m  = 'Customer No'(020).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '12'.
         when 'NAME1'.
            wa_fldcat_head-col_pos = '2'.
            wa_fldcat_head-seltext_m  = 'Customer Name'(021).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '35'.
         when 'BELNR'.
            wa_fldcat_head-col_pos = '3'.
            wa_fldcat_head-seltext_m  = 'Invoice No'(008).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '12'.
            wa_fldcat_head-KEY       = ' '.
         when 'BLDAT'.
            wa_fldcat_head-col_pos = '4'.
            wa_fldcat_head-seltext_m  = 'Document Date'(009).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '13'.
            wa_fldcat_head-ref_tabname = ' '.
         when 'RZZ_EBELN'.
            wa_fldcat_head-col_pos = '5'.
            wa_fldcat_head-seltext_m  = 'PO.Ref.No'(010).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '13'.
            wa_fldcat_head-ref_tabname = ' '.
         when 'HSL'.
            wa_fldcat_head-col_pos = '6'.
            wa_fldcat_head-seltext_m  = 'Invoice Amount'(011).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'DUE_DATE'.
            wa_fldcat_head-col_pos = '7'.
            wa_fldcat_head-seltext_m  = 'Due Date'(012).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '12'.
            wa_fldcat_head-ref_tabname = ' '.
         when 'DUE_DAYS'.
            wa_fldcat_head-col_pos = '8'.
            wa_fldcat_head-seltext_m  = 'Due Days'(013).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '9'.
         when 'NOT_DUE'.
            wa_fldcat_head-col_pos = '9'.
            wa_fldcat_head-seltext_m  = 'Not Due'(014).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_0_30'.
            wa_fldcat_head-col_pos = '10'.
            wa_fldcat_head-seltext_m  = '0 To 30'(015).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_31_60'.
            wa_fldcat_head-col_pos = '11'.
            wa_fldcat_head-seltext_m  = '31 To 60'(016).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_61_90'.
            wa_fldcat_head-col_pos = '12'.
            wa_fldcat_head-seltext_m  = '61 To 90'(017).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_91_180'.
            wa_fldcat_head-col_pos = '13'.
            wa_fldcat_head-seltext_m  = '91 To 180'(018).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_180'.
            wa_fldcat_head-col_pos = '14'.
            wa_fldcat_head-seltext_m  = 'Beyond 180'(019).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
        when 'DOCNR'.
            wa_fldcat_head-no_out = 'X'.
        when 'REFDOCNR'.
            wa_fldcat_head-no_out = 'X'.
        when 'DOC_DATE'.
            wa_fldcat_head-no_out = 'X'.
        when 'FOUND'.
            wa_fldcat_head-no_out = 'X'.
         endcase.
         modify i_fldcat_head from wa_fldcat_head index sy-tabix.
        endloop.
      endif.
    endform.                    " GENERATE_FIELD_CATALOG_CUST
    *&      Form  get_events_customer
          Getting ALV Events
    form get_events_customer.
        call function 'REUSE_ALV_EVENTS_GET'
      EXPORTING
        I_LIST_TYPE           = 0
       importing
         et_events             = i_events
      exceptions
        list_type_wrong       = 1
        others                = 2
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
      if not i_events[] is initial.
       read table i_events into wa_event with key name = 'TOP_OF_PAGE'(024)
       wa_event-form = 'GENERATE_USERCOMMAND_CUST'.
       modify i_events from wa_event index sy-tabix.
       read table i_events into wa_event with key na

  • FBL5N - printing per customer and per total one sheet

    Hello @ all,
    we tried to print open items report, but we get per sheet one customer and the total on an other sheet. The print out is like this too big. How can we change the settings for the printing?
    We like to have the list subsequently.
    Thanks in advance for your help

    Hi,
    Try to get to Subtotals (Ctrl+F1) and in the Sort fields delete the * in the last column (column GW).
    Regards,
    Adela

  • Short dump while export grid alv with subtotals.

    hello,
    its strange and i face first time that my grid alv report goin to short dump while i done subtotals and send it to local file thru export.
    if am not doing subtotals then export it to local file it goin fine.
    whats it has problem plz give ur helping hends.
    here i copied a dump msg also.
    Short text
        Error at assignment: Overwritten protected field.
    What happened?
        Error in the ABAP Application Program
        The current ABAP program "SAPLKKBL" had to be terminated because it has
        come across a statement that unfortunately cannot be executed.
    Error analysis
        A new value is to be assigned to the field "<L_UNIT>", although this field is
        entirely or partly protected against changes.
        The following are protected against changes:
        - Character literals or numeric literals
        - Constants (CONSTANTS)
        - Parameters of the category IMPORTING REFERENCE for functions and
        methods
        - Untyped field symbols not yet assigned a field using ASSIGN
        - TABLES parameters if the actual parameter is protected against changes
        - USING reference parameters and CHANGING parameters for FORMs, if the
        actual parameter is protected against changes and
        - Accesses using field symbols if the field assigned using ASSIGN is
        protected (or partially protected, e.g. key components of an internal
        table with the type SORTED or HASHED TABLE) against changes
        - Accesses using references, if the field bound to the reference is
        protected (or partially protected) against changes
        - External write accesses to READ-ONLY attributes,
        - Content of a shared object area instance accessed using a shared lock
        (ATTACH_FOR_READ).
    regards amit.

    & Object Id               :                                                  &
    & Object Name             :                                                  &
    & Function Module Name    : Sales Register                                   &
    & Transaction Code        :                                                  &
    & Author                  : Amit gujargoud                                      &
    & Module Name             : SD                                               &
    & Sub-Module              :                                                  &
    & Program Type            : Dialog            Create Date     : 02/02/2007   &
    & SAP Release             : ECC 6.0                                          &
    & Description             : Sales Register - Detail                           &
    *& Report  ZSALESREGISTER
    REPORT  zsd_salesregister.
    *&       TYPE-POOLS
    TYPE-POOLS : slis.
    *&       TABLES
    TABLES: vbrp,  "Billing Document: Item Data
            vbrk,  "Billing Document: Header Data
            lips,  "SD document: Delivery: Item data
            lfa1,  "Vendor Master (General Section)
            kna1,  "General Data in Customer Master
            vbak,  "Sales Document: Header Data
            vbpa,  "Sales Document: Partner (Gopal)
            likp,  "SD Document: Delivery Header Data
            vbap,  "Sales Document: Item Data
            vbkd,  "Sales Document: Business Data
            mara.  "General Material Data
    *&       DATA DECLARATION
    DATA: BEGIN OF i_report OCCURS 100,
            vbeln LIKE vbrp-vbeln,        "Billing Document
      posnr LIKE vbrp-posnr,
      matnr  LIKE mara-matnr ,
      aubel LIKE vbrp-aubel,        "Sales Document
       fkimg LIKE vbrp-fkimg,        "Actual billed quantity
       vrkme LIKE vbrp-vrkme,        "Sales unit
       arktx LIKE vbrp-arktx,        "Short text for sales order item
       vgbel LIKE vbrp-vgbel,        "Doc number of the reference document
       werks  LIKE vbap-werks,
      vkgrp  LIKE vbrp-vkgrp,
      fklmg LIKE vbrp-fklmg,
      volum LIKE vbrp-volum,
       vkbur  LIKE vbrp-vkbur,
      vtweg_auft LIKE vbrp-vtweg_auft,
            auart  LIKE vbak-auart,
            tabix LIKE sy-tabix,          "Internal Table, Current Row Index
            name1 LIKE kna1-name1,                              "Name1
            exnum LIKE j_1iexchdr-exnum,  "Official Excise Document Number
            orqty TYPE p DECIMALS 0,
            penqty TYPE p DECIMALS 0,     "Cumulative order qty in sls units
            openqty TYPE p DECIMALS 0,    "Cumulative order qty in sls units
            ean11 LIKE lips-ean11,        "International Article No(EAN/UPC)
           volum LIKE lips-volum,
            lgmng LIKE lips-lgmng,
            traid LIKE likp-traid,
            ort01 LIKE lfa1-ort01,        "City
            lifnr LIKE lfa1-lifnr,        "A/c Number of Vendor or Creditor
            netwr LIKE vbrp-netwr,        "Net val of bill item in doc currency
            kunnr LIKE vbak-kunnr,        "Sold-to party
            adrnr LIKE vbpa-adrnr,        "Address
            city1 LIKE adrc-city1,        "City
            tprtr LIKE lfa1-name1,                              "Name 1
            knumv LIKE konv-knumv,        "Number of the document condition
            kposn LIKE konv-kposn,
            rate  LIKE konv-kbetr,        "Rate (cond amount or percentage)
            bas_val LIKE konv-kwert,      "Rate (cond amount or percentage)
            exc_duty LIKE konv-kwert,     "Rate (cond amount or percentage)
            ed_cess LIKE konv-kwert,      "Rate (cond amount or percentage)
            freight LIKE konv-kwert,      "Rate (cond amount or percentage)
            pack    LIKE konv-kwert,      "Rate (cond amount or percentage)
            cst LIKE konv-kwert,          "Rate (cond amount or percentage)
            vat LIKE konv-kwert,          "Rate (cond amount or percentage)
            ent_tax LIKE konv-kwert,      "Rate (cond amount or percentage)
            tot_inv LIKE konv-kwert,       "Rate (cond amount or percentage)
            tot_inv_round LIKE konv-kwert,   "Rate (cond amount or percentage)
            disc_tot  LIKE konv-kwert,       "Discount total - Z001 to Z020
            vat_rate LIKE konv-kbetr,
            cst_rate LIKE konv-kbetr,
            lst_rate LIKE konv-kbetr,
            mwsbk LIKE vbrk-mwsbk,
            bas_tax LIKE konv-kwert,
            dev_tax LIKE konv-kwert,
            tcs_tax LIKE konv-kwert,
            bas_tot LIKE konv-kwert,
            lst     LIKE konv-kwert,
            vkorg   LIKE vbak-vkorg,
            mvgr1   LIKE mvke-mvgr1,
            mvgr2   LIKE mvke-mvgr2,
            mvgr3   LIKE mvke-mvgr3,
            mvgr4   LIKE mvke-mvgr4,
            mvgr5   LIKE mvke-mvgr5,
            text1   LIKE tvm1t-bezei,
            text2   LIKE tvm1t-bezei,
            text3   LIKE tvm1t-bezei,
            text4   LIKE tvm1t-bezei,
            text5   LIKE tvm1t-bezei,
            bismit_area TYPE p DECIMALS 4,   " Size (L*B) in mm
            face_area  TYPE p DECIMALS 2,   " Face Area Declaration
            notional_area TYPE p DECIMALS 2,
            stock_pcs TYPE p ,               " decimals 3 Pcs of Stock
            labst  LIKE mard-labst,           " Valuated Unrestricted-Use Stock
            bismt  LIKE mara-bismt,           " Size (L*B) in mm
            normt  LIKE mara-normt,           " Industry Standard Description
            temp   TYPE p DECIMALS 2,
            temp1  TYPE p DECIMALS 2,
            temp2  TYPE p DECIMALS 2,
            temp3  TYPE p DECIMALS 2,
            temp4  TYPE p DECIMALS 2,
            temp5  TYPE p DECIMALS 2,
            temp6  TYPE p DECIMALS 2,
            temp7  TYPE p DECIMALS 2,
            temp8  TYPE p DECIMALS 2,
            temp9  TYPE p DECIMALS 2,
            temp10 TYPE p DECIMALS 2,
            temp11 TYPE p DECIMALS 2,
            temp12 TYPE p DECIMALS 2,
            temp13 TYPE p DECIMALS 0,
            temp14 TYPE p DECIMALS 0,
            temp15 TYPE p DECIMALS 0,
            temp16 TYPE p DECIMALS 2,
            temp17 TYPE p DECIMALS 2,
            temp18 TYPE p DECIMALS 2,
            temp19 TYPE p DECIMALS 2,
            temp20 TYPE p DECIMALS 2,
            temp21 TYPE p DECIMALS 2,
            waybill(20) TYPE c,
            audat  LIKE vbak-audat,     "Document Date (Date Received/Sent)
            lgort  LIKE vbap-lgort,     "Storage location
            lgobe  LIKE t001l-lgobe,    "Description of storage location
            erdat  LIKE vbrk-erdat,     "Date on which the record was created
            exdat  LIKE j_1iexchdr-exdat,  "Excise Document Date
            vbtyp  LIKE vbak-vbtyp,        "SD document category
            acdt   LIKE likp-wadat_ist,    "Actual goods movement date
            fkdat  LIKE vbrk-fkdat,
            ship   LIKE kna1-name1,      "Name1 (Ship-to party)
            fksto  LIKE vbrk-fksto,
            fkart  LIKE vbrk-fkart,
            bezei  LIKE t005u-bezei,
            vtweg  LIKE vbak-vtweg,
            spart  LIKE vbak-spart,
            matkl  LIKE mara-matkl,
            wgbez  LIKE t023t-wgbez,
            mtart  LIKE mara-mtart,
            labor  LIKE mara-labor,
            ferth  LIKE mara-ferth,
            lbtxt  LIKE t024x-lbtxt,
            niels  LIKE kna1-niels,
            kukla  LIKE kna1-kukla,
            desc   LIKE tvkbt-bezei,
            brsch  LIKE kna1-brsch,
            zeinr  LIKE mara-zeinr,
            bzirk  LIKE vbrk-bzirk,
            area_desc   LIKE tnlst-bezei,
            dist_desc   TYPE tkukt-vtext,
            taluka_desc TYPE t016t-brtxt,
            sales_desc  TYPE tvgrt-bezei,
            kmein       LIKE konv-kmein,    "Sales Unit
            challan     LIKE likp-vbeln,
            END OF i_report.
    data for MVKE
    DATA: BEGIN OF i_report_mvke OCCURS 0,
            vbeln   LIKE vbrp-vbeln,        "Billing Document
            aubel   LIKE vbrp-aubel,        "Sales Document
            vkorg   LIKE vbak-vkorg,
            matnr   LIKE mara-matnr ,
            vtweg   LIKE vbak-vtweg,
            END OF i_report_mvke.
    ***********************TEMP COPY
    DATA: BEGIN OF i_report_temp OCCURS 0,
           vbeln LIKE vbrp-vbeln,        "Billing Document
      posnr LIKE vbrp-posnr,
      matnr  LIKE mara-matnr ,
      aubel LIKE vbrp-aubel,        "Sales Document
       fkimg LIKE vbrp-fkimg,        "Actual billed quantity
       vrkme LIKE vbrp-vrkme,        "Sales unit
       arktx LIKE vbrp-arktx,        "Short text for sales order item
       vgbel LIKE vbrp-vgbel,        "Doc number of the reference document
       werks  LIKE vbap-werks,
      vkgrp  LIKE vbrp-vkgrp,
      fklmg LIKE vbrp-fklmg,
      volum LIKE vbrp-volum,
       vkbur  LIKE vbrp-vkbur,
      vtweg_auft LIKE vbrp-vtweg_auft,
            auart  LIKE vbak-auart,
            tabix LIKE sy-tabix,          "Internal Table, Current Row Index
            name1 LIKE kna1-name1,                              "Name1
            exnum LIKE j_1iexchdr-exnum,  "Official Excise Document Number
            orqty TYPE p DECIMALS 0,
            penqty TYPE p DECIMALS 0,     "Cumulative order qty in sls units
            openqty TYPE p DECIMALS 0,    "Cumulative order qty in sls units
            ean11 LIKE lips-ean11,        "International Article No(EAN/UPC)
           volum LIKE lips-volum,
            lgmng LIKE lips-lgmng,
            traid LIKE likp-traid,
            ort01 LIKE lfa1-ort01,        "City
            lifnr LIKE lfa1-lifnr,        "A/c Number of Vendor or Creditor
            netwr LIKE vbrp-netwr,        "Net val of bill item in doc currency
            kunnr LIKE vbak-kunnr,        "Sold-to party
            adrnr LIKE vbpa-adrnr,        "Address
            city1 LIKE adrc-city1,        "City
            tprtr LIKE lfa1-name1,                              "Name 1
            knumv LIKE konv-knumv,        "Number of the document condition
            kposn LIKE konv-kposn,
            rate  LIKE konv-kbetr,        "Rate (cond amount or percentage)
            bas_val LIKE konv-kwert,      "Rate (cond amount or percentage)
            exc_duty LIKE konv-kwert,     "Rate (cond amount or percentage)
            ed_cess LIKE konv-kwert,      "Rate (cond amount or percentage)
            freight LIKE konv-kwert,      "Rate (cond amount or percentage)
            pack    LIKE konv-kwert,      "Rate (cond amount or percentage)
            cst LIKE konv-kwert,          "Rate (cond amount or percentage)
            vat LIKE konv-kwert,          "Rate (cond amount or percentage)
            ent_tax LIKE konv-kwert,      "Rate (cond amount or percentage)
            tot_inv LIKE konv-kwert,       "Rate (cond amount or percentage)
            tot_inv_round LIKE konv-kwert,   "Rate (cond amount or percentage)
            disc_tot  LIKE konv-kwert,       "Discount total - Z001 to Z020
            vat_rate LIKE konv-kbetr,
            cst_rate LIKE konv-kbetr,
            lst_rate LIKE konv-kbetr,
            mwsbk LIKE vbrk-mwsbk,
            bas_tax LIKE konv-kwert,
            dev_tax LIKE konv-kwert,
            tcs_tax LIKE konv-kwert,
            bas_tot LIKE konv-kwert,
            lst     LIKE konv-kwert,
            vkorg   LIKE vbak-vkorg,
            mvgr1   LIKE mvke-mvgr1,
            mvgr2   LIKE mvke-mvgr2,
            mvgr3   LIKE mvke-mvgr3,
            mvgr4   LIKE mvke-mvgr4,
            mvgr5   LIKE mvke-mvgr5,
            text1   LIKE tvm1t-bezei,
            text2   LIKE tvm1t-bezei,
            text3   LIKE tvm1t-bezei,
            text4   LIKE tvm1t-bezei,
            text5   LIKE tvm1t-bezei,
            bismit_area TYPE p DECIMALS 4,   " Size (L*B) in mm
            face_area  TYPE p DECIMALS 2,   " Face Area Declaration
            notional_area TYPE p DECIMALS 2,
            stock_pcs TYPE p ,               " decimals 3 Pcs of Stock
            labst  LIKE mard-labst,           " Valuated Unrestricted-Use Stock
            bismt  LIKE mara-bismt,           " Size (L*B) in mm
            normt  LIKE mara-normt,           " Industry Standard Description
            temp   TYPE p DECIMALS 2,
            temp1  TYPE p DECIMALS 2,
            temp2  TYPE p DECIMALS 2,
            temp3  TYPE p DECIMALS 2,
            temp4  TYPE p DECIMALS 2,
            temp5  TYPE p DECIMALS 2,
            temp6  TYPE p DECIMALS 2,
            temp7  TYPE p DECIMALS 2,
            temp8  TYPE p DECIMALS 2,
            temp9  TYPE p DECIMALS 2,
            temp10 TYPE p DECIMALS 2,
            temp11 TYPE p DECIMALS 2,
            temp12 TYPE p DECIMALS 2,
            temp13 TYPE p DECIMALS 0,
            temp14 TYPE p DECIMALS 0,
            temp15 TYPE p DECIMALS 0,
            temp16 TYPE p DECIMALS 2,
            temp17 TYPE p DECIMALS 2,
            temp18 TYPE p DECIMALS 2,
            temp19 TYPE p DECIMALS 2,
            temp20 TYPE p DECIMALS 2,
            temp21 TYPE p DECIMALS 2,
            waybill(20) TYPE c,
            audat  LIKE vbak-audat,     "Document Date (Date Received/Sent)
            lgort  LIKE vbap-lgort,     "Storage location
            lgobe  LIKE t001l-lgobe,    "Description of storage location
            erdat  LIKE vbrk-erdat,     "Date on which the record was created
            exdat  LIKE j_1iexchdr-exdat,  "Excise Document Date
            vbtyp  LIKE vbak-vbtyp,        "SD document category
            acdt   LIKE likp-wadat_ist,    "Actual goods movement date
            fkdat  LIKE vbrk-fkdat,
            ship   LIKE kna1-name1,      "Name1 (Ship-to party)
            fksto  LIKE vbrk-fksto,
            fkart  LIKE vbrk-fkart,
            bezei  LIKE t005u-bezei,
            vtweg  LIKE vbak-vtweg,
            spart  LIKE vbak-spart,
            matkl  LIKE mara-matkl,
            wgbez  LIKE t023t-wgbez,
            mtart  LIKE mara-mtart,
            labor  LIKE mara-labor,
            ferth  LIKE mara-ferth,
            lbtxt  LIKE t024x-lbtxt,
            niels  LIKE kna1-niels,
            kukla  LIKE kna1-kukla,
            desc   LIKE tvkbt-bezei,
            brsch  LIKE kna1-brsch,
            zeinr  LIKE mara-zeinr,
            bzirk  LIKE vbrk-bzirk,
            area_desc   LIKE tnlst-bezei,
            dist_desc   TYPE tkukt-vtext,
            taluka_desc TYPE t016t-brtxt,
            sales_desc  TYPE tvgrt-bezei,
            kmein       LIKE konv-kmein,    "Sales Unit
            challan     LIKE likp-vbeln,
            END OF i_report_temp.
    DATA: BEGIN OF i_vbap OCCURS 0 ,
            posnr LIKE vbap-posnr,
            vbeln LIKE vbap-vbeln ,
            matnr LIKE vbap-matnr ,
            werks LIKE vbap-werks,
       kwmeng LIKE vbap-kwmeng,
      lgort LIKE vbap-lgort,
            matkl LIKE mara-matkl,
            wgbez LIKE t023t-wgbez,
            mtart LIKE mara-mtart,
          END OF i_vbap .
    DATA : w_temp_cal(20) TYPE c.
    DATA : w_face_area TYPE p DECIMALS 4,
           w_notinal_area TYPE p DECIMALS 4.
    **MVKE
    DATA: BEGIN OF itab_mvke OCCURS 0,
          matnr   LIKE mvke-matnr,
          vkorg   LIKE vbak-vkorg,
          vtweg   LIKE mvke-vtweg,
          mvgr1   LIKE mvke-mvgr1,
          mvgr2   LIKE mvke-mvgr2,
          mvgr3   LIKE mvke-mvgr3,
          mvgr4   LIKE mvke-mvgr4,
          mvgr5   LIKE mvke-mvgr5,
          END OF itab_mvke.
    **TVM1T
    DATA : BEGIN OF itab_tvm1t OCCURS 0,
            spras LIKE tvm1t-spras,
          mvgr1 LIKE tvm1t-mvgr1,
          bezei LIKE tvm1t-bezei,
      END OF itab_tvm1t.
    DATA : BEGIN OF itab_tvm2t OCCURS 0,
          spras LIKE tvm2t-spras,
        mvgr2 LIKE tvm2t-mvgr2,
        bezei LIKE tvm2t-bezei,
    END OF itab_tvm2t.
    DATA : BEGIN OF itab_tvm3t OCCURS 0,
          spras LIKE tvm3t-spras,
        mvgr3 LIKE tvm3t-mvgr3,
        bezei LIKE tvm3t-bezei,
    END OF itab_tvm3t.
    DATA : BEGIN OF itab_tvm4t OCCURS 0,
          spras LIKE tvm4t-spras,
        mvgr4 LIKE tvm4t-mvgr4,
        bezei LIKE tvm4t-bezei,
    END OF itab_tvm4t.
    DATA : BEGIN OF itab_tvm5t OCCURS 0,
          spras LIKE tvm5t-spras,
        mvgr5 LIKE tvm5t-mvgr5,
        bezei LIKE tvm5t-bezei,
    END OF itab_tvm5t.
    DATA:      itab_t024x TYPE STANDARD TABLE OF t024x WITH HEADER LINE,
          it_report LIKE LINE OF i_report OCCURS 0,
          i_mvke LIKE LINE OF itab_mvke OCCURS 0.
    **VBKD
    DATA: BEGIN OF i_vbkd OCCURS 0 ,
            vbeln LIKE vbkd-vbeln ,
            posnr LIKE vbkd-posnr ,
           bzirk LIKE vbkd-bzirk ,
          END OF i_vbkd .
    DATA: BEGIN OF i_lips OCCURS 0,
       vbeln LIKE lips-vbeln,
            ean11 LIKE lips-ean11,
             volum LIKE lips-volum,
             lgmng LIKE lips-lgmng,
            waybill(20) TYPE c,
          END OF i_lips.
    DATA: BEGIN OF i_vbrk OCCURS 0,
            vbeln LIKE vbrk-vbeln,
            rfbsk LIKE vbrk-rfbsk,      "Status for transfer to accounting
            erdat LIKE vbrk-erdat,      "Dt on which the record was created
            fkdat LIKE vbrk-fkdat,      "CHANGE MADE BY PARTHA RAHAMAN
            fksto LIKE vbrk-fksto,      "GOPAL:: CANCELLED DOC. DO NOT PRNT.
            netwr LIKE vbrk-netwr,
            fkart LIKE vbrk-fkart, "Gopal:when billng typ=s1 do not pnt 1jul
            knumv LIKE vbrk-knumv,
            mwsbk LIKE vbrk-mwsbk,
            bzirk LIKE vbrk-bzirk,
            vtweg LIKE vbrk-vtweg,
            spart LIKE vbrk-spart,
           END OF i_vbrk.
          *structure for MARD Table by kalika
    DATA : BEGIN OF itab_mard OCCURS 0,
           matnr LIKE mard-matnr,
          werks LIKE mard-werks,
           labst LIKE mard-labst,          " Valuated Unrestricted-Use Stock
          lgort LIKE mard-lgort,          " Storage Location
           END OF itab_mard.
          *structure for MARD Table by kalika
    DATA:BEGIN OF i_kna1 OCCURS 0,
          vbeln LIKE vbak-vbeln,
          name1 LIKE kna1-name1,
          kunnr LIKE kna1-kunnr,
          regio LIKE kna1-regio,
         bezei LIKE t005u-bezei,
          land1 LIKE kna1-land1,
          vkgrp LIKE vbak-vkgrp,
          niels LIKE kna1-niels,
          kukla LIKE kna1-kukla,
          brsch LIKE kna1-brsch,
          vkbur LIKE vbak-vkbur,
         END OF i_kna1.
    DATA:BEGIN OF i_t005u OCCURS 0,
         spras LIKE t005u-spras,
        land1 LIKE t005u-land1,
       bland LIKE t005u-bland,
         bezei LIKE t005u-bezei,
         END OF i_t005u.
    DATA:BEGIN OF i_tnlst OCCURS 0,
       spras LIKE t005u-spras,
    niels LIKE tnlst-niels,
       bezei LIKE t005u-bezei,
       END OF i_tnlst.
    DATA:BEGIN OF itab_tkukt OCCURS 0,
    spras LIKE tkukt-spras,
    kukla LIKE tkukt-kukla,
    vtext LIKE tkukt-vtext,
    END OF itab_tkukt.
    DATA : BEGIN OF itab_t016t OCCURS 0,
          spras LIKE t016t-spras,
           brsch LIKE t016t-brsch,
           brtxt LIKE t016t-brtxt,
      END OF itab_t016t.
    DATA : BEGIN OF itab_tvgrt OCCURS 0,
          spras LIKE tvgrt-spras,
          vkgrp LIKE tvgrt-vkgrp,
          bezei LIKE tvgrt-bezei,
      END OF itab_tvgrt.
    *DATA: i_t005u  TYPE STANDARD TABLE OF t005u WITH HEADER LINE.
    DATA:BEGIN OF i_kna2 OCCURS 0,
         kunnr LIKE kna1-kunnr,
         name1 LIKE kna1-name1,   " For Ship-to-Party
          END OF i_kna2.
    DATA:BEGIN OF i_vbak OCCURS 0,
         vbeln LIKE vbak-vbeln,
         vbtyp LIKE vbak-vbtyp,
         audat LIKE vbak-audat,
         auart LIKE vbak-auart,
         vtweg LIKE vbak-vtweg,
         spart LIKE vbak-spart,
         vkbur LIKE vbak-vkbur,
         vkorg LIKE vbak-vkorg,
         END OF i_vbak.
    DATA:BEGIN OF i_adrc OCCURS 0,
          vbeln LIKE vbpa-vbeln,
          kunnr LIKE kna1-kunnr,
          city1 LIKE adrc-city1,
         name1 LIKE kna1-name1,      "Name1 (Ship-to party)
         END OF i_adrc.
    DATA:BEGIN OF i_lfa1 OCCURS 0,
          lifnr LIKE vbpa-lifnr,
          vbeln LIKE vbpa-vbeln,
          name1 LIKE lfa1-name1,
         END OF i_lfa1.
    DATA : BEGIN OF it_knumv OCCURS 0,
            vbeln LIKE vbrk-vbeln,
            knumv LIKE vbrk-knumv,
          END OF it_knumv.
    DATA : BEGIN OF it_rate OCCURS 0,
            ksteu LIKE konv-ksteu,    "Condition control
            knumv LIKE konv-knumv,    "Number of the document condition
            kschl LIKE konv-kschl,    "Condition type
            kbetr LIKE konv-kbetr,    "Rate (condition amount or percentage)
            kwert LIKE konv-kwert,    "Condition value
            kposn LIKE konv-kposn,
            kmein LIKE konv-kmein,    "Sales Unit
           END OF it_rate.
    DATA: BEGIN OF itab_exnum OCCURS 0,
           exnum LIKE j_1iexchdr-exnum,  "Official Excise Document Number
           exdat LIKE j_1iexchdr-exdat,  "Excise Document Date
           rdoc LIKE j_1iexchdr-rdoc,    "Reference Document 1
            status LIKE j_1iexchdr-status,
           END OF itab_exnum.
    DATA: BEGIN OF itab_qty OCCURS 0,
          kwmeng LIKE vbap-kwmeng,
          vbeln LIKE vbap-vbeln,
          lgort LIKE vbap-lgort,
          END OF itab_qty.
    *DATA: BEGIN OF i_stloc OCCURS 0,
         lgort LIKE t001l-lgort,
         lgobe LIKE t001l-lgobe,
         END OF i_stloc.
    DATA:t_line LIKE STANDARD TABLE OF tline INITIAL SIZE 0
         WITH HEADER LINE,
    "     itab_tvkbt LIKE STANDARD TABLE OF tvkbt WITH HEADER LINE,
         w_tdname LIKE thead-tdname.
    DATA : BEGIN OF itab_tvkbt OCCURS 0,
      spras LIKE tvkbt-spras,
      vkbur LIKE tvkbt-vkbur,
      bezei LIKE tvkbt-bezei,
      END OF itab_tvkbt.
    DATA: BEGIN OF i_exchdr OCCURS 0,
          exnum LIKE j_1iexchdr-exnum,
          exdat LIKE j_1iexchdr-exdat,
          rdoc  LIKE j_1iexchdr-rdoc,
          END OF i_exchdr.
    DATA: BEGIN OF i_likp OCCURS 0,
          vbeln LIKE likp-vbeln,
          wadat_ist LIKE likp-wadat_ist,
          traid LIKE likp-traid,
          bolnr LIKE likp-bolnr,
          END OF i_likp.
    DATA: BEGIN OF i_mara OCCURS 0,
          matnr LIKE mara-matnr,
          matkl LIKE mara-matkl,
          mtart LIKE mara-mtart,
          labor LIKE mara-labor,
         wgbez LIKE t023t-wgbez,
          bismt LIKE mara-bismt,
          normt LIKE mara-normt,
          ferth LIKE mara-ferth,
          zeinr LIKE mara-zeinr,
          extwg LIKE mara-extwg,
          spart LIKE mara-spart,
          END OF i_mara.
    DATA: BEGIN OF i_t023t OCCURS 0,
          matkl LIKE t023t-matkl,
          wgbez LIKE t023t-wgbez,
          END OF i_t023t.
    DATA : var_length(20)  TYPE c,
           var_breadth(20)  TYPE c.
    DATA: p_w_value LIKE konv-kwert.
    DATA : it_fieldcat    TYPE  slis_t_fieldcat_alv,      " Event for Table to creater fieldcatalog
           wa_fieldcat     LIKE LINE OF it_fieldcat,      " Work Area for table field catalog
           lt_top_of_page   TYPE  slis_t_listheader,      " Header table for top of page
            i_layout        TYPE  slis_layout_alv .      " It will fill the layout
           gt_event   TYPE  slis_t_event.                 " Table Event
    *DATA :
         "itab_tnlst TYPE STANDARD TABLE OF tnlst WITH HEADER LINE,
         "      itab_tkukt TYPE STANDARD TABLE OF tkukt WITH HEADER LINE,
    *"      itab_t016t TYPE STANDARD TABLE OF t016t WITH HEADER LINE,
         itab_tvgrt TYPE STANDARD TABLE OF tvgrt WITH HEADER LINE.
    *&       SELECTION-SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK block
                                      WITH FRAME TITLE text-100.
    SELECT-OPTIONS: s_date FOR vbrk-fkdat OBLIGATORY,
                    s_vkbur FOR vbak-vkbur OBLIGATORY,
                    s_vtweg FOR vbrk-vtweg OBLIGATORY,
                    s_werks FOR vbap-werks,
                    s_spart FOR vbrk-spart OBLIGATORY,
                    s_matkl FOR mara-matkl.
    PARAMETERS:
                r_opt3  RADIOBUTTON GROUP grp1,
                r_opt2  RADIOBUTTON GROUP grp1.
               r_opt4  RADIOBUTTON GROUP grp1,
               r_opt5  RADIOBUTTON GROUP grp1,
               r_opt1  RADIOBUTTON GROUP grp1.
    SELECTION-SCREEN END OF BLOCK block.
    *&       INITIALIZATION
    INITIALIZATION.
      r_opt2 = 'X'.
    *&     START-OF-SELECTION.
    START-OF-SELECTION.
    *select data from VBRP
    SELECT vbeln
            posnr
            matnr
            aubel
            fkimg
            vrkme
            arktx
            vgbel
            werks
            vkgrp
             fklmg
             volum
             vkbur
             vtweg_auft
            FROM vbrp
            INTO  TABLE i_report
            WHERE "erdat IN s_date
            AND   spart IN s_spart
               vkbur IN s_vkbur
            AND   vtweg_auft IN s_vtweg.
    **logic for Pending, Summary & Detail Report
      IF
         r_opt1 EQ 'X' OR
        r_opt2 EQ 'X'  OR
               r_opt3 EQ 'X'.
        SELECT vbeln
                  rfbsk
                  erdat
                  fkdat
                  fksto
                  netwr
                  fkart
                  knumv
                  mwsbk
                  bzirk
                  vtweg
                  spart
                  FROM vbrk INTO TABLE i_vbrk
                 FOR ALL ENTRIES IN i_report
                  WHERE "vbeln = i_report-vbeln
                 " and
                  fkdat IN s_date
                  AND   fkart IN ('ZBHR', 'ZTZT', 'ZKRP', 'ZRUD', 'ZBSR',
                                'ZGHT', 'ZKOL', 'ZPTN', 'ZRNC', 'ZCND',
                                'ZDLH', 'ZGZB', 'ZGUR', 'ZHSR', 'ZJPR',
                                'ZLKW', 'ZBLR', 'ZCHN', 'ZCBM', 'ZHUB',
                                'ZHYD', 'ZKOC', 'ZAHD', 'ZIND', 'ZMUM',
    *********************MODIFICATION BY CHAKRAPANI  (ADDITION OF ZVIJ AND ZHWH ) 18.05.2007
                                'ZNGP', 'ZPNE', 'ZRPR' , 'ZEXP', 'ZDEM','ZVIJ', 'ZHWH','JEX' )
    *********************MODIFICATION BY CHAKRAPANI  (ADDITION OF ZVIJ AND ZHWH ) 18.05.2007
                  AND   vtweg IN s_vtweg
                 AND   spart IN s_spart
                  AND   fksto NE 'X'.
        IF i_vbrk[] IS NOT INITIAL.
          SELECT   vbeln
                   posnr
                   matnr
                   aubel
                   fkimg
                   vrkme
                   arktx
                   vgbel
                   werks
                   vkgrp
                    fklmg
                    volum
                    vkbur
                    vtweg_auft
                   FROM vbrp
                   INTO  TABLE i_report
            FOR ALL ENTRIES IN i_vbrk
                   WHERE vbeln = i_vbrk-vbeln "erdat IN s_date
            AND   spart IN s_spart
                   AND  vkbur IN s_vkbur
                   AND   vtweg_auft IN s_vtweg.
        ENDIF.
       ELSEIF r_opt4 EQ 'X' OR
              r_opt5 EQ 'X'.
         SELECT   vbeln
                  rfbsk
                  erdat
                  fkdat
                  fksto
                  netwr
                  fkart
                  knumv
                  mwsbk
                  bzirk
                  vtweg
                  spart
                  FROM vbrk INTO CORRESPONDING FIELDS OF TABLE i_vbrk
                  FROM vbrk INTO TABLE i_vbrk
                  FOR ALL ENTRIES IN i_report
                  WHERE vbeln = i_report-vbeln
                  AND   fkart EQ 'ZEXP'
                  AND   vtweg IN s_vtweg
                  AND   spart IN s_spart
                  AND   fksto NE 'X'.
       ENDIF.
        SORT i_vbrk BY vbeln ASCENDING.
      ENDIF.
    change amit by my self may be removed
      IF i_report[] IS NOT INITIAL.
        REFRESH it_report.
        it_report[] = i_report[].
        DELETE ADJACENT DUPLICATES FROM it_report COMPARING aubel.
        SORT it_report BY aubel.
    *select VBAP data
        SELECT posnr vbeln matnr werks
        kwmeng lgort
        FROM vbap
        INTO  TABLE i_vbap
        FOR ALL ENTRIES IN it_report
        WHERE vbeln = it_report-aubel.
      ENDIF.
    change amit by my self may be removed
    *select data from VBKD
    IF NOT i_vbap[] IS INITIAL.
       SELECT vbeln posnr
         FROM vbkd
         INTO TABLE i_vbkd
         FOR ALL ENTRIES IN i_vbap
         WHERE vbeln = i_vbap-vbeln.
    ENDIF.
      SORT i_vbap BY vbeln ASCENDING.
      IF i_report[] IS NOT INITIAL.
        REFRESH it_report.
        it_report[] = i_report[].
        DELETE ADJACENT DUPLICATES FROM it_report COMPARING matnr.
        SORT it_report BY matnr.
        SELECT
        matnr
        matkl
        mtart
        labor
        bismt
        normt
        ferth
        zeinr
        extwg
        spart
        FROM mara
        INTO TABLE i_mara
        FOR ALL ENTRIES IN i_report
        WHERE matnr = i_report-matnr
          AND   spart IN s_spart.
      ENDIF.
       IF NOT i_mara[] IS INITIAL.
         SORT i_mara BY matnr.
         SELECT matnr
                labst
                FROM mard
                INTO TABLE itab_mard
                FOR ALL ENTRIES IN i_mara
                WHERE matnr = i_mara-matnr.
       ENDIF.
    ENDIF.
      DATA : it_mara LIKE LINE OF i_mara OCCURS 0.
      IF NOT i_mara[] IS INITIAL.
        REFRESH it_mara.
        it_mara[] = i_mara[].
        DELETE ADJACENT DUPLICATES FROM it_mara COMPARING matkl.
        SORT it_mara BY matkl.
        SELECT matkl wgbez
          FROM t023t
          INTO  TABLE i_t023t
          FOR ALL ENTRIES IN it_mara
          WHERE matkl = it_mara-matkl.
    *T024X
        REFRESH it_mara.
        it_mara[] = i_mara[].
        DELETE ADJACENT DUPLICATES FROM it_mara COMPARING labor.
        SORT it_mara BY labor.
        SELECT * FROM t024x
        INTO TABLE itab_t024x
        FOR ALL ENTRIES IN it_mara
        WHERE labor = it_mara-labor
        AND spras = sy-langu.
      ENDIF.
    *begin of change amit
      LOOP AT i_vbap.
        READ TABLE i_mara WITH KEY matnr = i_vbap-matnr.
        IF sy-subrc = 0.
    *material type & material group
          i_vbap-mtart = i_mara-mtart.
          i_vbap-matkl = i_mara-matkl.
        ENDIF.
        MODIFY i_vbap.
      ENDLOOP.
    *Material Group Description
    *end of change amit
    IF i_report[] IS NOT INITIAL.
       REFRESH it_report.
       it_report[] = i_report[].
       DELETE ADJACENT DUPLICATES FROM it_report COMPARING vgbel.
       SORT it_report BY vgbel.
       SELECT vbeln
              ean11
              volum
              lgmng
              FROM lips
              INTO  TABLE i_lips
              FOR ALL ENTRIES IN it_report
              WHERE vbeln = it_report-vgbel.
    ENDIF.
      IF i_report[] IS NOT INITIAL.
        REFRESH it_report.
        it_report[] = i_report[].
        SORT it_report BY vgbel.
        DELETE ADJACENT DUPLICATES FROM it_report COMPARING vgbel.
          IF i_lips[] IS NOT INITIAL.
        SELECT vbeln
               wadat_ist
               traid
               bolnr
               FROM likp
               INTO TABLE i_likp
               FOR ALL ENTRIES IN it_report
               WHERE vbeln = it_report-vgbel.
      ENDIF.
       SORT i_lips BY vbeln ASCENDING.
       LOOP AT i_lips.
         REFRESH t_line.
         CLEAR   w_tdname.
         w_tdname = i_lips-vbeln.
         CALL FUNCTION 'READ_TEXT'
           EXPORTING
             client                  = sy-mandt
             id                      = 'ZVOW'
             language                = sy-langu
             name                    = w_tdname
             object                  = 'VBBK'
           TABLES
             lines                   = t_line
           EXCEPTIONS
             id                      = 1
             language                = 2
             name                    = 3
             not_found               = 4
             object                  = 5
             reference_check         = 6
             wrong_access_to_archive = 7
             OTHERS                  = 8.
         IF sy-subrc <> 0.
         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
         ENDIF.
         LOOP AT t_line.
           CONCATENATE i_lips-waybill t_line-tdline INTO i_lips-waybill.
         ENDLOOP.
         IF sy-subrc EQ 0.
           MODIFY i_lips.
         ENDIF.
       ENDLOOP.
    *IF i_report[] IS NOT INITIAL.
       REFRESH it_report.
       it_report[] = i_report[].
       SORT it_report BY aubel.
       DELETE ADJACENT DUPLICATES FROM it_report COMPARING aubel.
      SELECT a~vbeln
             b~name1
             b~kunnr
             b~regio
             b~land1
             a~vkgrp
             b~niels
             b~kukla
             b~brsch
             a~vkbur
             FROM vbak AS a
             INNER JOIN kna1 AS b
             ON akunnr = bkunnr
             INTO TABLE i_kna1
             FOR ALL ENTRIES IN i_report
             WHERE vbeln = i_report-aubel.
            AND land1 = 'IN'.
    *endif.
      DATA : it_kna1 LIKE LINE OF i_kna1 OCCURS 0.
      IF NOT i_kna1[] IS INITIAL.
        REFRESH it_kna1.
        it_kna1[] = i_kna1[].
        SORT it_kna1 BY regio.
        DELETE ADJACENT DUPLICATES FROM it_kna1 COMPARING regio.
        SELECT spras
          land1
          bland
          bezei FROM t005u
                 INTO TABLE i_t005u
                 FOR ALL ENTRIES IN it_kna1
                 WHERE bland = it_kna1-regio
                 AND spras = 'EN' AND land1 = 'IN'.
        REFRESH it_kna1.
        it_kna1[] = i_kna1[].
        SORT it_kna1 BY niels.
        DELETE ADJACENT DUPLICATES FROM it_kna1 COMPARING niels.
        SELECT spras niels bezei FROM tnlst
               INTO TABLE i_tnlst
               FOR ALL ENTRIES IN it_kna1
               WHERE niels = it_kna1-niels
               AND spras = sy-langu.
        REFRESH it_kna1.
        it_kna1[] = i_kna1[].
        SORT it_kna1 BY kukla.
        DELETE ADJACENT DUPLICATES FROM it_kna1 COMPARING kukla.
        SELECT spras kukla vtext FROM  tkukt
              INTO TABLE itab_tkukt
              FOR ALL ENTRIES IN it_kna1
              WHERE kukla = it_kna1-kukla
              AND spras = sy-langu.
        REFRESH it_kna1.
        it_kna1[] = i_kna1[].
        SORT it_kna1 BY brsch.
        DELETE ADJACENT DUPLICATES FROM it_kna1 COMPARING brsch.
        SELECT spras brsch brtxt FROM t016t
           INTO TABLE itab_t016t
             FOR ALL ENTRIES IN it_kna1
             WHERE brsch = it_kna1-brsch
             AND spras = sy-langu.
        REFRESH it_kna1.
        it_kna1[] = i_kna1[].
        SORT it_kna1 BY vkgrp.
        DELETE ADJACENT DUPLICATES FROM it_kna1 COMPARING vkgrp.
        SELECT spras vkgrp bezei FROM tvgrt
            INTO TABLE itab_tvgrt
            FOR ALL ENTRIES IN it_kna1
            WHERE vkgrp = it_kna1-vkgrp
            AND spras = sy-langu.
      ENDIF.
      SORT i_kna1 BY vbeln ASCENDING.
      IF i_report[] IS NOT INITIAL.
        REFRESH it_report.
        it_report[] = i_report[].
        SORT it_report BY aubel.
        DELETE ADJACENT DUPLICATES FROM it_report COMPARING aubel.
        SELECT a~vbeln
               a~kunnr
               b~city1
               FROM vbpa AS a
               INNER JOIN adrc AS b
               ON aadrnr = baddrnumber
               INTO TABLE i_adrc
               FOR ALL ENTRIES IN it_report
               WHERE vbeln = it_report-aubel
               AND parvw = 'WE'.
        SORT i_adrc BY vbeln ASCENDING.
      ENDIF.
      DATA : it_adrc LIKE LINE OF i_adrc OCCURS 0.
      IF i_adrc[] IS NOT INITIAL.
        REFRESH it_adrc.
        it_adrc[] = i_adrc[].
        SORT it_adrc BY kunnr.
        DELETE ADJACENT DUPLICATES FROM it_adrc COMPARING kunnr.
        SELECT kunnr name1
               FROM kna1
               INTO TABLE i_kna2
               FOR ALL ENTRIES IN it_adrc
              WHERE kunnr = it_adrc-kunnr.
      ENDIF.
    SELECT a~lifnr
            a~vbeln
            b~name1
           FROM vbpa AS a
            INNER JOIN lfa1 AS b
            ON alifnr = blifnr
            INTO TABLE i_lfa1
            FOR ALL ENTRIES IN i_report
            WHERE vbeln = i_report-vgbel
            AND parvw = 'SP'.
      SORT i_lfa1 BY vbeln ASCENDING.
    change amit by my self may be removed
      IF i_report[] IS NOT INITIAL.
        REFRESH it_report.
        it_report[] = i_report[].
        SORT it_report BY vbeln.
        DELETE ADJACENT DUPLICATES FROM it_report COMPARING vbeln.
        SELECT exnum
               exdat
               rdoc
              status
               FROM j_1iexchdr
               INTO TABLE itab_exnum
               FOR ALL ENTRIES IN it_report
               WHERE rdoc = it_report-vbeln AND status =  'P' OR status = 'C' .
      ENDIF.
    change amit by my self may be removed
    change amit by my self may be removed
      IF i_report[] IS NOT INITIAL.
        REFRESH it_report.
        it_report[] = i_report[].
        SORT it_report BY aubel.
        DELETE ADJACENT DUPLICATES FROM it_report COMPARING aubel.
        SELECT kwmeng
               vbeln
               lgort
               FROM vbap
               INTO TABLE itab_qty
               FOR ALL ENTRIES IN it_report
               WHERE vbeln = it_report-aubel.
      ENDIF.
    change amit by my self may be removed
      SORT itab_qty BY vbeln.
      CHECK NOT i_vbrk[] IS INITIAL.
      SORT i_report BY vbeln.
      DATA : t_vbrk LIKE LINE OF i_vbrk OCCURS 0.
      REFRESH t_vbrk.
      t_vbrk[] = i_vbrk[].
      SORT t_vbrk BY knumv.
      DELETE ADJACENT DUPLICATES FROM t_vbrk COMPARING knumv.
      SELECT ksteu
             knumv
             kschl
             kbetr
             kwert
             kposn
             kmein
             FROM konv
             INTO  TABLE it_rate
             FOR ALL ENTRIES IN t_vbrk
             WHERE knumv = t_vbrk-knumv
             AND kschl IN ('ZR00',          "Basic Price
                           'ZR01',          "Basic Price
                           'ZR02',          "Basic Price
                           'ZR03',          "Basic Price
                           'ZR04',          "Basic Price
                           'ZR05',          "Basic Price
                           'JEXP',          "Excise
                           'JECS',          "ED
                           'ZG03',          "Freight
                           'ZG04',          "Freight
                           'JCST',          "CST
                           'JLST',          "LST
                           'ZDEV',         "Dev Tax
                           'Z001',         "Discount
                           'Z002',         "Discount
                           'Z003',         "Discount
                           'Z004',         "Discount
                           'Z005',         "Discount
                           'Z006',         "Discount
                           'Z007',         "Discount

  • 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

  • Internal table and subtotals

    Hi,
    I want  to display report output like below .
    how can i bulid the internal table means can i hardcode the field1.
    how can i do the subtotals and totals i know the doing subtotals and totals in alv based on some field.
    field1                          field2           field3           field4
    Revenues
    product sales             100               1000           2000
    Contract revenue         200               4500          3000
    total Renues               300               5500          5000
    cost and expenses     
    Cost of sales               10000           5000          6000
    Selling  expenses         5000            2000          1000
    Research expenses      2000            2000          3000
    total expenses             17000           9000          10000
    total                             17300          14500         15000
    Please help regarding this,
    Regards,
    Suresh.

    check this example
    REPORT ZBLOCK_ALV.
    CONSTANTS :
      c_x VALUE 'X'.
    Macro definition
    DEFINE m_fieldcat.
      ls_fieldcat-fieldname = &1.
      ls_fieldcat-ref_tabname = &2.
      ls_fieldcat-tabname = &3.
      append ls_fieldcat to lt_fieldcat.
    END-OF-DEFINITION.
    DEFINE m_sort.
      ls_sort-fieldname = &1.
      ls_sort-up        = c_x.
      append ls_sort to lt_sort.
    END-OF-DEFINITION.
    TYPE-POOLS: slis.                      " ALV Global types
    TYPES:
    1st Table
      BEGIN OF ty_kna1,
        kunnr TYPE kna1-kunnr,             " Customer number
        ernam TYPE kna1-ernam,             " Name of Person who Created
        erdat TYPE kna1-erdat,             " Creation date
        name1 TYPE kna1-name1,             " Name 1                    .
      END OF ty_kna1,
    2nd Table
      BEGIN OF ty_mara,
        matnr TYPE mara-matnr,             " Material number
        ernam TYPE mara-ernam,             " Name of Person who Created
        ersda TYPE mara-ersda,             " Creation date
        mtart TYPE mara-mtart,             " Material type
        matkl TYPE mara-matkl,             " Material group
      END OF ty_mara,
    3rd Table
      BEGIN OF ty_vbak,
        vbeln TYPE vbak-vbeln,             " Sales document
        vkorg TYPE vbak-vkorg,             " Sales organization
        vtweg TYPE vbak-vtweg,             " Distribution channel
        kunnr TYPE vbak-kunnr,             " Sold-to party
        erdat TYPE vbak-erdat,             " Creation date
      END OF ty_vbak.
    DATA:
      gs_layout TYPE slis_layout_alv,
      gt_kna1 TYPE TABLE OF ty_kna1,
      gt_mara TYPE TABLE OF ty_mara,
      gt_vbak TYPE TABLE OF ty_vbak.
    SELECTION-SCREEN :
      SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.    "#EC NEEDED
    PARAMETERS p_max(2) TYPE n DEFAULT '02' OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    INITIALIZATION.
      v_1 = 'Maximum of records to read'.
    START-OF-SELECTION.
    Read data
      SELECT kunnr ernam erdat name1
        FROM kna1
       UP TO p_max ROWS
        INTO TABLE gt_kna1.
      SELECT matnr ernam ersda mtart matkl
        FROM mara
       UP TO p_max ROWS
        INTO TABLE gt_mara.
      SELECT vbeln vkorg vtweg kunnr erdat
        FROM vbak
       UP TO p_max ROWS
        INTO TABLE gt_vbak.
    END-OF-SELECTION.
      PERFORM f_display_data.
          FORM USER_COMMAND                                             *
    FORM user_command USING u_ucomm     TYPE sy-ucomm
                            us_selfield TYPE slis_selfield.     "#EC CALLED
      DATA:
        ls_vbak TYPE ty_vbak.
      CASE u_ucomm.
        WHEN '&IC1'.                       " Pick
          CASE us_selfield-tabname.
            WHEN 'GT_MARA'.
            WHEN 'GT_KNA1'.
            WHEN 'GT_VBAK'.
              READ TABLE gt_vbak INDEX us_selfield-tabindex INTO ls_vbak.
              IF sy-subrc EQ 0.
                SET PARAMETER ID 'AUN' FIELD ls_vbak-vbeln.
                CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
              ENDIF.
          ENDCASE.
      ENDCASE.
    ENDFORM.                               " USER_COMMAND
          Form  f_display_data
    FORM f_display_data.
      DATA :
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog
        ls_sort     TYPE slis_sortinfo_alv,
        lt_sort     TYPE slis_t_sortinfo_alv, " Sort table
        lt_events   TYPE slis_t_event,
        ls_event    TYPE slis_alv_event.
      gs_layout-group_change_edit = c_x.
      gs_layout-colwidth_optimize = c_x.
      gs_layout-zebra             = c_x.
      gs_layout-detail_popup      = c_x.
      gs_layout-get_selinfos      = c_x.
    Build field catalog and sort table
      m_fieldcat  'KUNNR' 'KNA1' 'GT_KNA1'.
      m_fieldcat  'ERNAM' 'KNA1' 'GT_KNA1'.
      m_fieldcat  'ERDAT' 'KNA1' 'GT_KNA1'.
      m_fieldcat  'NAME1' 'KNA1' 'GT_KNA1'.
      m_sort  'KUNNR'.
    Build Event Table
      MOVE        'TOP_OF_PAGE'        TO ls_event-name.
      MOVE        'TOP_OF_PAGE'        TO ls_event-form.
      APPEND ls_event TO lt_events.
      MOVE        'END_OF_LIST'        TO ls_event-name.
      MOVE        'END_OF_LIST'        TO ls_event-form.
      APPEND ls_event TO lt_events.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program      = sy-cprog
          i_callback_user_command = 'USER_COMMAND'
          it_fieldcat             = lt_fieldcat
          is_layout               = gs_layout
          it_events               = lt_events
          it_sort                 = lt_sort
          i_save                  = 'A'
        TABLES
          t_outtab                = gt_kna1.
    ENDFORM.                               " F_DISPLAY_DATA
          FORM top_of_page                                              *
    FORM top_of_page.                                           "#EC CALLED
      ULINE.
      WRITE : sy-uname, sy-title(56) CENTERED, sy-datum.
      ULINE.
    ENDFORM.                               " TOP_OF_PAGE
          FORM End_of_list                                              *
    FORM end_of_list.                                           "#EC CALLED
      DATA :
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog
        ls_sort     TYPE slis_sortinfo_alv,
        lt_sort     TYPE slis_t_sortinfo_alv, " Sort table
        lt_events   TYPE slis_t_event,
        ls_event    TYPE slis_alv_event.
    Build field catalog and sort table
      m_fieldcat 'MATNR' 'MARA' 'GT_MARA'.
      m_fieldcat 'ERNAM' 'MARA' 'GT_MARA'.
      m_fieldcat 'ERSDA' 'MARA' 'GT_MARA'.
      m_fieldcat 'MTART' 'MARA' 'GT_MARA'.
      m_fieldcat 'MATKL' 'MARA' 'GT_MARA'.
      m_sort 'MATNR'.
    Build Event Table
      MOVE 'END_OF_LIST'   TO ls_event-name.
      MOVE 'END_OF_LIST_2' TO ls_event-form.
      APPEND ls_event TO lt_events.
      gs_layout-list_append = c_x.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program = sy-cprog
          it_fieldcat        = lt_fieldcat
          is_layout          = gs_layout
          it_sort            = lt_sort
          it_events          = lt_events
          i_save             = 'A'
        TABLES
          t_outtab           = gt_mara.
    ENDFORM.                               " END_OF_LIST
          FORM End_of_list_2                                            *
    FORM end_of_list_2.                                         "#EC CALLED
      DATA :
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog
        ls_sort     TYPE slis_sortinfo_alv,
        lt_sort     TYPE slis_t_sortinfo_alv, " Sort table
        lt_events   TYPE slis_t_event,
        ls_event    TYPE slis_alv_event.
    Build field catalog and sort table
      m_fieldcat 'VBELN' 'VBAK' 'GT_VBAK'.
      m_fieldcat 'VKORG' 'VBAK' 'GT_VBAK'.
      m_fieldcat 'VTWEG' 'VBAK' 'GT_VBAK'.
      m_fieldcat 'KUNNR' 'VBAK' 'GT_VBAK'.
      m_fieldcat 'ERDAT' 'VBAK' 'GT_VBAK'.
      m_sort 'VBELN'.
    Build Event Table
      MOVE 'TOP_OF_PAGE' TO ls_event-name.
      MOVE 'TOP_OF_PAGE' TO ls_event-form.
      APPEND ls_event TO lt_events.
      gs_layout-list_append = c_x.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program = sy-cprog
          it_fieldcat        = lt_fieldcat
          is_layout          = gs_layout
          it_sort            = lt_sort
          it_events          = lt_events
          i_save             = 'A'
        TABLES
          t_outtab           = gt_vbak.
    ENDFORM.                               " END_OF_LIST_2

  • Customer Statement using SAP Script and Standard print program RFKORD10

    Using sap script and standard print program RFKORD10 I need to create a customer statement where the main window will be as follows
    Invoice #     InvoiceDate  CustomerPO  Debit Amt  Credit Amt  Total
        6        7           8               9               10               11
        6        7           8               9               10               11
                                     Totals               12             13              14
    Where company code BKORM-KUKRS
                Invoice              BSID-BELNR
                Invoice date      BSID-BLDAT
                Customer PO    VBKD-BSTKD
    For each document number selected there will be one to many records in VBRP.  For each invoice item in VBRP:
    u2022     Select BSTKD from VBKD where
    o     VBELN = VBRP-VGBEL and
    o     POSNR = VBRP-VGPOS
    u2022     If no hits then select BSTKD from VBKD where
    o     VBELN = VBRP-VGBEL
    If there is more than one PO per invoice then list them in the Customer PO field without repeating the other fields.PO shouldnu2019t come more than once per invoice.
                 Debit Amt         if BSEG-SHKZG = S then WRBTR ELSE 0
                 Credit Amt        if BSEG-SHKZG = H then WRBTR ELSE 0
                 Total                  Debit Amt u2013 Credit Amt
                  Totals                Subtotals
    It will be of great help if some one can help me with the script and the alterations required in standard print program RFKORD10
    Points will b rewarded for sure.
    Thanks.

    Hi Suganya,
    The custom form is getting displayed properly. But the requirement is to have it as an editable PDF. So the functional team is working on configuring the settings of PDF forms with customers email address.
    But for right now, i customized the standard form F140_ACC_STAT_01 and standard print program RFKORD10_PDF and did the configuration. It is getting displayed (I tested only with the transaction FBL5N - customer open line items..)
    Please let me know any further details on this.
    Poornima

  • Generate a subtotals table in Adobe LiveCycle Designer

    Hi everybody.
    I'm having troubles with a template named Customer Invoice (of Application and user management > Business Flexibility > Form Template Maintenance), the case is I modified the template to show a subtotals table that I generate by code (FormCalc language) in Adobe LiveCycle Designer, but the problem is that the code of template just works with some invoices. I don't know what's happening, I hope someone can helps me with this topic.
    I'm attaching screenshots I hope it can help you to understand me, in the screenshots I'm marking the table I generated.
    My code is (Language FormCalc ):
    var longitud = tblTable.all.length
    var aux
    var acum = ""
    var auxIndex = tblTable.all.length
    for i=0 upto longitud - 1 step 1 do
        if(i == 0)then
                Table4.Row1[i].Cell1.rawValue = xfa.resolveNode(concat("tblTable[",i,"].rowItem.frmHiddenItem.frmQuantity.decQuantity"))
                Table4.Row1[i].CellMesure.rawValue = xfa.resolveNode(concat("tblTable[",i,"].rowItem.frmHiddenItem.frmQuantity.txtQuantityUnit"))
                Table4.Row1[i].Cell2.rawValue = xfa.resolveNode(concat("tblTable[",i,"].rowItem.colDescription"))
                Table4.Row1[i].Cell3.rawValue = xfa.resolveNode(concat("tblTable[",i,"].rowItem.tblNetValue.rowNetValue.decHiddenNetAmount"))
                Table4.Row1[i].CellCurrency.rawValue = xfa.resolveNode(concat("tblTable[",i,"].rowItem.tblNetValue.rowNetValue.txtNetAmountCurrency"))
                Table4.Row1[i].Cell0.rawValue = xfa.resolveNode(concat("tblTable[",i,"].rowItem.colProduct"))
            else
                var bandera = 0
                for j=0 upto Table4.Row1.all.length - 1 step 1 do
                    if (tblTable[i].rowItem.colProduct.rawValue eq Table4.Row1[j].Cell0.rawValue ) then
                        Table4.Row1[j].Cell3.rawValue =Sum(0.00, Table4.Row1[j].Cell3, tblTable[i].rowItem.tblNetValue.rowNetValue.decHiddenNetAmount)
                        Table4.Row1[j].Cell1.rawValue =Sum(0.00 , Table4.Row1[j].Cell1, tblTable[i].rowItem.frmHiddenItem.frmQuantity.decQuantity)
                        if(xfa.resolveNode(concat("tblTable[",i , "].rowItem.colDescription")) <> "" or xfa.resolveNode(concat("tblTable[",i , "].rowItem.colDescription")) <> null) then
                            Table4.Row1[j].Cell2.rawValue =concat( xfa.resolveNode(concat("tblTable[", i , "].rowItem.colDescription")))
                        endif
                        bandera = 1
                        break
                    endif
                endfor
                if (bandera == 0) then
                    Table4.Row1.instanceManager.addInstance(1).Cell1.rawValue = xfa.resolveNode(concat("tblTable[",i,"].rowItem.frmHiddenItem.frmQuantity.decQuantity"))
                    Table4.Row1[i].CellMesure.rawValue = xfa.resolveNode(concat("tblTable[",i,"].rowItem.frmHiddenItem.frmQuantity.txtQuantityUnit"))
                    Table4.Row1[i].Cell2.rawValue = xfa.resolveNode(concat("tblTable[",i,"].rowItem.colDescription"))
                    Table4.Row1[i].Cell3.rawValue = xfa.resolveNode(concat("tblTable[",i,"].rowItem.tblNetValue.rowNetValue.decHiddenNetAmount"))
                    Table4.Row1[i].CellCurrency.rawValue = xfa.resolveNode(concat("tblTable[",i,"].rowItem.tblNetValue.rowNetValue.txtNetAmountCurrency"))
                    Table4.Row1[i].Cell0.rawValue = xfa.resolveNode(concat("tblTable[",i,"].rowItem.colProduct"))
                endif
            endif
    endfor
    Thank you very much.
    Best regards.
    Sincerely.
    Ismael Lara

    Hi Ismael,
    as far as I can see there might be a mistake in the code itself. Did you check the tablerows you compare here?
    I think you might have unexpected values at here:
    tblTable[i].rowItem.colProduct.rawValue eq Table4.Row1[j].Cell0.rawValue
    This might cause your unexpected result. Your results are never higher than expected, am I right?
    ~Florian

  • ALV: how to display only subtotals and total rows in the output

    ALV: how to display only subtotals and total rows in the output
    i am getting output
    i am getting subtotals for respective fields
    but i want to display only subtotals and totals rows in the output
    i have tried the
    totals_only   parameter in slis_layout_alv
    but it is not working.

    hi,
    For TOTAL
    For the amount field / quantity field in the field catalog give DO_SUM = 'X'    for WHOLE total
    For SUBTOTAL
    For subtotal you will have to create an internal table sort..Let's say you want to do subtotal for each customer..
    DATA: lt_sort type SLIS_T_SORTINFO_ALV,
    ls_sort type slis_sortinfo_alv.
    CLEAR ls_sort.
    ls_sort-spos = 1.
    ls_sort-fieldname = 'Give the field name that you do the sum'.
    ls_sort-up = 'X'.
    ls_sort-subtot = 'X'.
    APPEND ls_sort TO lt_sort.
    fieldcatalog-do_dum = 'X'.
    for subtotals
    WA_SORT-FIELDNAME = 'ERSDA'.
    WA_SORT-SPOS = '2'.
    WA_SORT-UP = 'X'.
    WA_SORT-SUBTOTAL = 'X'.
    APPEND WA_SORT TO IT_SORT.
    Refer
    http://help.sap.com/saphelp_erp2004/helpdata/en/ee/c8e056d52611d2b468006094192fe3/content.htm
    http://sap.ittoolbox.com/groups/technical-functional/sap-dev/doesnt-function-event-subtotal_text-in-alv-713787
    regards,
    Prabhu
    reward if it is helpful

  • BI Answers Subtotals in Hierarchy Column

    Hello,
    I am building an operational statement using BI Answers. However, I'm having trouble finding some functionality that is required.
    1. Subtotal for each level of the hierarchy - I can only find grand total - no option for subtotals
    2. When the group is collapsed it should show the subtotal for the group on the group row. Then, when the row is expanded, the values should be removed in the group row and show a subtotal row at the bottom.
    Any ideas on these two?
    Thanks!

    Hi,
    I am trying to increase column width.In the report i am displaying 15 columns.This column project description is one of the 15 columns in the report.
    To increase column width for this column i tried column properties->column format->additional formatting options->width 5000
    and also i tried
    column properties->column format->custom css style options (HTML only)->select custom style-?width:5000em
    Both these options didn't worked for me.
    Hope it is clear now.
    Thanks in advance

  • SAP query. Subtotals with information.

    Goodmorning,
    I hope this is the right forum to post this thread.
    I made a query that shows sales information. When I fill in a customer number and a period, I get a list with all the articles they bought.
    Some articles are more then one time sold in a period. I want the sum of the articles in one row. I made subtotals and then used the option to only show the subtotals. The problem is now that information like specification, brand and type is not visible in the list. How can i include this information?
    Thanks in advance!
    Greetings,
    Thomas

    If you use the Group by clause in your select, the static data (inside the group) can be displayed if you use a grouping function, the most plausible way the min() function.
    Like this:
    SELECT T0.[ItemCode], min(T0.[Dscription]), sum(T0.[Quantity])
    FROM RDR1 T0 GROUP BY T0.[ItemCode]

  • How to Calculate sum for the selected rows in ALV gird using custom button

    Hi I am trying to implement an ALV Grid display where the user can select few rows in the output and if he click on some custom button he should get the sum for only those rows.
    Can anyone give me some idea regarding this.
    Thanks in advance

    While building the fieldcatalog for amount field use gt_fieldcat-do_sum = 'X'. And use the below for doc type sorting and subtotal.
    *  ALV data declarations
      data: it_sortcat   type slis_sortinfo_alv occurs 1,
            wa_sort like line of it_sortcat.
    perform build_sortcat.
    *&      Form  build_sortcat
    *       Build Sort catalog
    FORM build_sortcat .
      wa_sort-spos      = 1.
      wa_sort-fieldname = 'EBELN'.
      wa_sort-SUBTOT    = 'X'. "subtotals any totals column by this field
    *  gd_sortcat-tabname
      APPEND wa_sort TO it_sortcat.
      wa_sort-spos      = 2.
      wa_sort-fieldname = 'EBELP'.
    *  gd_sortcat-tabname
      APPEND wa_sort TO it_sortcat.
    ENDFORM.                    " build_sortcat
    call function 'REUSE_ALV_LIST_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
                it_sort                 = it_sortcat
                i_save                  = 'X'
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
    Regards,
    Chandru

  • Hierarchy Subtotals in the Query

    Hi,
    I have inserted a GL Account hierarchy in the query,all amounts are okay in the query except the subtotals. The subtotals are totally wrong, its giving me this message:
    Diagnosis
    The function Calculate Results as ... could not be applied everywhere.
    Recalculation of a resutls row is always based on the amount of detail cells subordinate to this cell, which is the finest details of a drilldown. It is not possible to recalculate resutls in hierarchical lists. This means that calculation of a results cell is not performed if a row or column with an expand symbol is subordinate to it. With recalculation, the newly calculated result has to change with each expansion of a node subordinate to it. This is not supported for technical reasons and would only confuse the user.
    Note, however, that Calculate Results as -> Suppress Results is always executed, because the problem above does not apply in that case.
    I need to combine Purchasing and Price GL accounts in one line.
    How can I:
    1. Fix the sub-totals
    or
    2. Combine Purchamsing and Price GL accounts in one line
    Thanks

    Hi Dave,
    For sub totals, the message suggests that for that column you have used a result/single value calculate as, instead of default nothing defined.
    And in case of hierarchies, custom result calculations is not supported.
    Second one about adding multiple GL values. I guess you are intended to use GL Hierachy in your rows. If that is the case then the values will be shown only against the respective nodes.
    In the case, the intention is not to use GL hierarchy, then create two selections/restricted key figures, each one restricting by Purchasing accounts and Price accounts and then sum them up using a formula.
    This should provide the desired result.
    Do let us know, if you are looking for some thing else.
    Naveen.A

  • Roll up hierarchie in custom dimension

    Hello,
    I'm trying to add the cost of materials so the node member could collect the total cost of the group.
    I have a dimension P_Material where materials are organized in groups by hierarchie:
    ID         Descr                              PARENTH1
    matA    Materials class A
    0001     xudud                             matA
    0002     yszysy                           matA
    Every material has a cost, represented by a member in a custom dimension P_Ratio.
    The problem is, once I have the cost of every material in the group, I don't get the subtotal cost rolled up.
    I made a BEX query and I got the subtotals but with a BPC report it seems to have no data.
    Could you please help me with this issue? give me some ideas?
    Thank you!

    Hi Ethan,
    My EvDRE structure is :
                                                                     P_RATIO        
    P_PRODUCTION     P_MATERIAL     
    And the member of P_RATIO is totcost.
    Thanks for your time!

  • Subtotals in smartform

    Hi Experts,
    We are working on customer account statement. for that we are developing a smartform, in which it should display subtotals and grand total.
    Here the subtotal is month wise. and all the totals of subtotal is the grand total.
    How can we get the totals monthly? it should print the line items of one month and its subtotal, then line items of second month n its subtotal etc... finally the grand total.
    Can someone plz help me.
    Thanks in advance,

    Hi ,
    In your loop node / table node --> calculation tab --> give the details of the operaton , the field on which the totals have to be done and the target field name ( subtotal / total ) and time as after loop.
    now use the variables subtotal and total in the text node to display.
    dont forget to clear the subtotal after displaying....
    create program lines after display of subtotal and in that use the statement
    clear subtotal.
    regards
    padma

Maybe you are looking for

  • Dynamic lov selection

    If anyone knows other reference than Bayross, pls tell me. The example in Bayross is very difficult to unberstand. it is very urgent. pls reply. Regards Subrata

  • Is it OK to change ip address

    I had a lot of trouble getting my router set up.  Then it worked just fine.  The next day my desktop couldn't get to the internet, but the wireless laptop could.  Called Linksys and was on the phone for over an hour.  They changed the ip address.  Wo

  • Duplicate Photo Detection

    I just updated my iMac to Snow Leopard and also installed iLife '09. I noticed when downloaded some photos from my camera just now that the program does not give me the option anymore to NOT download duplicate photos. Becasue of that I have a bunch o

  • Need help with Object States or Buttons?

    I currently work in InDesign to compile layouts and present design decks to clients. Our template includes an approval section (Not Approved, Revised, Approved) that we currently have as white/black bubbles that we change manually on each page. I've

  • RW2 files not opening...

    I can't import my Panasonic LX5 raw files into LR4. Is there anything I can do to make this possible? Gary