Vendor analysis - handling multiple vendor in Bex Query

Hi Gurus,
I have a very typical problem about a scenario which I have never came across. It will be great if someone could help me out or show me some light how to proceed further on this.
I have basic data ready in my Cube.
Query will be sort of vendor analysis based on other vendors performance.
Let me explain in more details:e value)
Input to Query --
1. Vendor(Multiple single value)
2. Material(Single value)
3. Date Range (To From)
I need to find out that during the period entered in the query input I need to get the numbers of items delivered by other vendors against each vendor.
Hope I am clear about the requirement.
Thanks in Advance.
Regards,
Sudipta.

Hello there
The first thing to do is to analyze the problem and get the logical solution that's independent of BEx Query. Then translate the solution into BEx specific design.
E.g What I understand from your post is that your requirement is :
Vendor                        Material                         Qty Delivered                              Other Vendor  Qty                 %
600500                        101000                          90 MT                                          1800  MT                                 5
600500                        102000                          80 MT                                          1200  MT                                 6
600600                        101000                          200 MT                                         1800 MT                                11
*Solution : *
Then create a formula for Qty Delivered and restrict it by Vendor #, Period and Material, and Other Vendor Qty  =  Total Qty delivered in the period for specific material - Qty Delivered for specific item by Vendor #, Material, Period and finally % = Qty Delivered / Other Vendors Qty.
I hope this helps!
Regards
MultiABAP

Similar Messages

  • Analysis Office vs Webi report ---Bex query Data mismatch

    I have one Bex query.
    I insterted the query in Analysis office for Microsoft edition, and its pulling 985 records, but when i inserted the bex query in Webi report its pulling only 27 records. Any body faced similar problem, explain the solution..?
    Using BICS connction for webi report development.
    Environment: BI 4.1 SP5
    Anlaysis office version :  1.4 SP10

    Hi Ingo,
            If we make it database delegated then the Webi query returns no results. (Blank results). Moreover there is no exception aggregation
    We have tried the following and getting the result correctly,
    In the Bex Query We had a Time variable which was based on SAP exit. We removed the SAP exit variable from Bex Query and restricted the period for atime range.
    Then created a Prompt in Webi report for the time
    The result is matching.
    But still failed to undrstand this because other queries which have SAP exit variables works fine.
    Still working around for a convincing solution for this.. Will let you know
    Thanks and Regards
    Rajesh

  • Interactive Analysis error when using BW BEx query as data source

    Hello,
    When we try to create a new report based on a BW BEx with the "Interactive Analaysis" tool in the BO 4.0 Launchpad, for all the BEx queries created under one of our multiproviders, we get the following error:
    The DSL Service returned an error: com.businessobjects.mds.services.helpers.OlapUniverseHelper$DimensionsFromCubeFailedException: Cannot retrieve dimensions from cube Cartera de ventas (Ap)
         at com.businessobjects.mds.services.helpers.OlapUniverseHelper.createSapBusinessLayer(OlapUniverseHelper.java:444)
         at com.businessobjects.mds.services.helpers.OlapUniverseHelper.createBusinessLayer(OlapUniverseHelper.java:248)
         at com.businessobjects.dsl.services.workspace.impl.QueryViewAnalyzer.createOlapUniverse(QueryViewAnalyzer.java:286)
         at com.businessobjects.dsl.services.workspace.impl.QueryViewAnalyzer.createOlapUniverse(QueryViewAnalyzer.java:263)
         at com.businessobjects.dsl.services.datasource.impl.DirectOlapAccessUniverseProvider.provideUniverse(DirectOlapAccessUniverseProvider.java:97)
         at com.businessobjects.dsl.services.datasource.impl.DirectOlapAccessUniverseProvider.provideUniverseFromCms(DirectOlapAccessUniverseProvider.java:50)
         at
    With BEX queries from other multiproviders we're not getting this error and however.
    Moreover, if we try to create a new report with the "Analysis Edition for OLAP" tool in the BO Launchpad using these same problematic BEx queries, we don't get any errors with this other tool. The thing is that we need to create them with the Interactive Analaysis.
    Does anybody know why we're getting this error in the "Interactive Analysis" tool and how can we solve it?
    Any help would be very appreciated.
    Thank you and regards,
    Edited by: Juan Jose Catoira on Jul 28, 2011 2:46 PM
    Edited by: Juan Jose Catoira on Jul 28, 2011 2:47 PM

    Hey,
    Did you find out any solution for this. I am also facing the same issue.
    Thanks in advance.

  • Multiple vendor payments with a single u201CYOURSELFu201D cheque

    Hi,
    How do we handle multiple vendor payments with a single u201CYOURSELFu201D cheque, drawn in favor of the paying banker? OR NEFT transfers in SAP.
    Thanks,
    M. Senthil

    Hi
    First things first:
    1. You want to create a single payment document for multiple vendors.  In such a case, you will not be able to use F110. You need to use F-53 or F-f8 in such a case. In the all the vendor masters, maintain the alternative payee with Description as "YOURSELF". There after, if you are using F-53, use FBZ5 to print the cheque in the name of alternative payee.
    2. if you are using F110, multiple payment documents will be created for different vendors. In FBZP Config, you can assign the Payment Advise Form in the Payment Method Step in FBZP Config
    Regards
    Sanil

  • Kanban - External procurement with multiple vendor

    Hi Gurus,
    We are working on implementation of Kanban for external procurement (Scheduling agreement) in my organisation. As per the business requirement, some of the components are supplied by more than one vendor. As per the standard process, Kanban supports automated processfor single vendor only & not multiple vendors
    Has anybody come across this issue? Could you plese share your experiene & any possible workaround or solution to this isuue
    Thanks
    Kariya

    Hi,
    This is how KANBAN works. Since sourcing is automatic.
    You could do a couple of things; first, have more than one control cycle, one for each vendor. Drawback is that you also need to have separate kanban containers for each cycle/vendor. But in the case where you have more that one supply area for a material this is not so bad.
    Another way could be working with internal demand area, in such a way that Kanban creates a stock transfer reservation. Then you need to process the requirements with MRP, and issue orders to multiple vendors (maybe using quota arrangement).
    To ilustrate the solution: your supply area is geting replenishment from the main warehouse, not directly from the vendor. These are two different storage location or plants...
    Regards,
    Mario

  • Need Multiple Units of Measure for a given material due to multiple vendors

    Hello,
    We have a requirement where we must have multiple units of measue (each, box, case, pallet) for a given material.
    Background:
    We have multiple vendors for one SAP material number. We need to store 4 levels of units of measure for each vendor+material combination.
    Unit of Meaure levels
    1. Each
    2. Innerpack (ex: 12 each = 1 innerpack)
    3. Box (ex: 36 eaches = 1 box)
    4. Pallet (ex: 100 eaches = 1 pallet)
    Standard SAP allows in MM01 additional data --> Units of Measure only 1 Ea, Box, Plt, etc.
    Our requirement is to allow multiple Units of Measure due to multiple vendors providing the same material.
    So, our unique combination is by a Material+Vendor.
    We are considering adding the vendor name and vendor number to the material master --> additional data --> Units of Measure tab.
    Does this seem like a good solution? What impacts do you foresee with approach?
    Any alternatve solutions?
    We thought we could enhance the purchasing info records to allow multiple units of measure too but then we need to also add many fields to hold the weight, lenght, height, width, volume, country of origin, etc.
    Please recommend a best practice or solution to handle this requirement.
    Thanks in advance!!!

    Hi,
    Maintain the alternative units in Material Master in Additional Data -> Units of Measure section with proper conversion factors.
    Create individual info-records i.e. per mtl-vendor combination & in the info-record maintain the order unit, along with other details as required.
    Now when you create a PO, the details will be read from the info-record. To test the same, create them in your sandbox & see if it meets your requirement.
    Hope the above clarifies your query.
    Regards,
    Vivek

  • Stock analysis based on vendor material number

    Hi
    Is there any report which can show the total stock of a material with split on vendor material number (I am entering different vendor material numbers upon goods receipt) or any query I can write to get the above result?
    The requirement is as follows: I will order an item with name say X and vendor supplies the item with different name say Y. So I am maintaining vendor specific name in vendor material number. Now I want to see the stock X with what quantity of it is Y.
    Thanks

    Dear Praveen
    You could use the following;
    Input and Output Conversion of Material Numbers  
    Use
    Like every other part in the SAP system, an inventory-managed manufacturer part has an SAP-specific material number that uniquely identifies it. If this material number is uncommon or unknown to the vendor, you should consider the following (especially in the purchasing process):
    ·        You can enter a part with its Manufacturer Part Number (MPN) and its External Manufacturer, and not just with its material number. This is possible because of the input conversion of material numbers.
    ·        The system displays this part with its Manufacturer Part Number and the External Manufacturer in lists and screens. This is possible because of the output conversion of material numbers.
    You have to increase the maximum field length for input and output values in the Output Length for Material Numbers field to enter and display the MPN and the manufacturer code in one field
    Prerequisites
    You have made the following settings in Customizing:
    ·        You have activated the conversion exit for material numbers.
    ·        You have maintained a delimiter. The delimiter separates the MPN and the external manufacturer when they are entered or displayed in one field.
    ·        You have specified a maximum output length for material numbers. This means that the fields for the long material number are scrollable, and the output columns for lists are wider.
    You configure and activate the conversion exit for material numbers in Customizing by choosing Logistics - General ® Interchangeability of Parts ® Set Up Conversion Exit for Material Numbers.
    Features
    Input Conversion
    If you have activated the conversion exit, you can enter the relevant MPN instead of the material number in the relevant input fields.
    If the MPN is not unique, you enter the external manufacturer in the same field, separating the MPN and the external manufacturer by the delimiter defined in Customizing.
    You have defined: as the delimiter.
    Enter 45L700W:36121 (Manufacturer Part Number, Delimiter,and External Manufacturer) for the part, instead of material number 1011. If the MPN is unique, you only have to enter 45L700W (the Manufacturer Part Number).
    You can now scroll the input field for the material number. This allows you to enter the maximum output length for material numbers, which has also been defined in Customizing.
    Input conversion gives you an alternate and additional input option. You can still enter the ERP material number to identify a part.
    The system determines the correct material number from your input, and passes it to the program logic. The system handles your input as follows:
    ·        If your entry contains the delimiter, the system splits the entry at the delimiter, interprets both parts of the entry as the Manufacturer Part Number and the External Manufacturer respectively, and searches for a part corresponding to these entries
    ·        If your entry does not contain a delimiter, the system interprets your entry as an (ERP) material number, and searches for the corresponding part in the material master. If this is unsuccessful, the system interprets your entry as an MPN, and searches for the corresponding part.
    If the system cannot determine a part clearly, or the search is unsuccessful, it issues an error message.
    Value Range for MPN on the Selection Screen
    The system converts the MPN into a material number internally.
    To ensure that the system correctly interprets the value range for an MPN that is entered as selection criteria, when the conversion exit is activated, the system provides both the material number and the MPN as selection criteria in the selection screen.
    Output Conversion
    If the conversion exit is activated, the output conversion ensures that the system displays the MPN and the external manufacturer on screens and in lists, separated by the delimiter in the field or column that usually displays the ERP material number.
    If the Output Length for Material Numbers field in Customizing is not long enough to display both the MPN and the external manufacturer, the system displays the MPN, if it is unique.
    If the MPN is not unique or the output length too short, the system displays the ERP material number.
    The system displays parts with the output length defined in Customizing. In addition:
    ·        You can scroll the output field for the material number on screens.
    ·        The system adjusts the layout of lists to the output length.
    List Formatting
    If you use the inventory-managed MPN, you have to change the list formatting as follows:
    ·        Variable length of the material number in reports
    In cases of the automatic conversion of the material number into an MPN and external manufacturer, the system takes account of the Output Length for Material Numbers field (defined in Customizing) when it structures the lists for selected reports. This ensures that columns are aligned, line breaks are correct, and the lists can be read.
    ·        Adding a field for the external manufacturer
    The external manufacturer should also be displayed in lists because the MPN, into which the material number is automatically converted, is not always unique.
    In Customizing, you have defined whether the external manufacturer should be displayed with the MPN. The system adds the field for the external manufacturer immediately after the field for the MPN in lists and on the screen.
    You can display the external manufacturer with or without an active conversion exit.
    ·        Sorting by MPN, not by material number
    You can sort some lists by material number.
    You can sort by MPN in cases where the MPN is displayed instead of the material number.
    with kind regards
    Sundar

  • Report to identify multiple vendors in source list?

    is there a standard t-code that may list multiple vendors (if they exist) for a range of source lists?  better to solve with abap query?
    (ex. say there are 1250 materials and want a list of source lists, with vendors or even one vendor if it only has one)
    thanks all
    Edited by: strat on Mar 27, 2008 10:41 PM

    Hi
    Try following report
    ME0M - Source List for Material
    Vishal...

  • Q on SRM vendor analysis, spend analysis

    Does anyone has any good documentation on this. I wanted to know how these and other SRM reports r achieved in BW. What the extraction flow is etc.
    Any help will be much appreciated.
    Thanks

    Hello there
    The first thing to do is to analyze the problem and get the logical solution that's independent of BEx Query. Then translate the solution into BEx specific design.
    E.g What I understand from your post is that your requirement is :
    Vendor                        Material                         Qty Delivered                              Other Vendor  Qty                 %
    600500                        101000                          90 MT                                          1800  MT                                 5
    600500                        102000                          80 MT                                          1200  MT                                 6
    600600                        101000                          200 MT                                         1800 MT                                11
    *Solution : *
    Then create a formula for Qty Delivered and restrict it by Vendor #, Period and Material, and Other Vendor Qty  =  Total Qty delivered in the period for specific material - Qty Delivered for specific item by Vendor #, Material, Period and finally % = Qty Delivered / Other Vendors Qty.
    I hope this helps!
    Regards
    MultiABAP

  • Balance Confirmation Report for multiple vendors

    Hi all,
    I have developed report in FI which gives details about opening balance,fiscal year, document number, posting date and amount in the output.In selection screen I am passing single values of fiscal year(GJAHR), vendor(LIFNR) and company code(BUKLRS). This report is working fine for single vendor but now I need to change it for multiple vendors. I tried but not getting desired result in the output.
    Following is code for single vendor in selection screen.
    SORT t_bsikbsak BY bukrs belnr gjahr buzei.
      LOOP AT t_bsikbsak.
        t_pre_bal-netpr = t_bsikbsak-dmbtr.
        t_pre_bal-sgtxt = 'Opening Balance'.
        IF t_bsikbsak-shkzg EQ 'H'.
          t_pre_bal-netpr = t_pre_bal-netpr * -1.
        ENDIF.
        COLLECT t_pre_bal.
      ENDLOOP.
      LOOP AT t_pre_bal.
        itab-netpr = t_pre_bal-netpr.
        itab-sgtxt = t_pre_bal-sgtxt.
        APPEND itab.
      ENDLOOP.
    SORT t_bseg BY bukrs belnr gjahr buzei.
      CLEAR itab.
      LOOP AT t_bseg.
        ON CHANGE OF t_bseg-bukrs OR t_bseg-belnr OR t_bseg-gjahr.
          READ TABLE t_bkpf WITH KEY bukrs = t_bseg-bukrs
                                   belnr = t_bseg-belnr
                                   gjahr = t_bseg-gjahr.
          IF sy-subrc IS INITIAL.
            itab-budat = t_bkpf-budat.
            itab-belnr = t_bkpf-belnr.
            itab-gjahr = t_bkpf-gjahr.
          ENDIF.
        ENDON.
        IF t_bseg-koart = 'K' AND t_bseg-lifnr = s_lifnr.
          itab-sgtxt = t_bseg-sgtxt.
         READ TABLE t_bsak WITH KEY bukrs = t_bseg-bukrs
                                    belnr = t_bseg-belnr
                                    gjahr = t_bseg-gjahr.
          IF t_bseg-shkzg EQ 'H'.
            t_bseg-dmbtr = t_bseg-dmbtr * -1.
          ENDIF.
          itab-netpr = itab-netpr + t_bseg-dmbtr.
        ELSEIF t_bseg-hkont = '0044100040'.  " G/L for INTEREST EXPENSES
          itab-inamt = t_bseg-dmbtr.
        ELSEIF t_bseg-hkont = '0012300060'.  " G/L for TDS ON INTEREST
          itab-tdamt = t_bseg-dmbtr.
        ENDIF.
        AT END OF bukrs.
          append_flag = 'X'.
        ENDAT.
        AT END OF belnr.
          append_flag = 'X'.
        ENDAT.
        AT END OF gjahr.
          append_flag = 'X'.
        ENDAT.
        IF append_flag = 'X'.
          APPEND itab.
          CLEAR itab.
          CLEAR : append_flag.
        ENDIF.
      ENDLOOP.
    Closing Balance
      LOOP AT itab.
        t_temp-netpr = itab-netpr.
        t_temp-sgtxt = 'Closing Balance'.
        COLLECT t_temp.
      ENDLOOP.
      CLEAR itab.
      LOOP AT t_temp.
        itab-netpr = t_temp-netpr.
        itab-sgtxt = 'Closing Balance'.
        APPEND itab.
      ENDLOOP.
    Kindly provide some input how to do it for multiple vendors in same code otherwise provide some suggestions for new code.
    Thanks in Advance.waiting for response.
    Thanks & Regards,
    Harshada Patil

    Hi,
    Thanks for quick response.Following is the structure of internal tables which I am using in this program.
    TYPES : BEGIN OF ty_bsikbsak ,
            bukrs TYPE bsik-bukrs,
            lifnr TYPE bsik-lifnr,
            umsks TYPE bsik-umsks,
            umskz TYPE bsik-umskz,
            augdt TYPE bsik-augdt,
            augbl TYPE bsik-augbl,
            gjahr TYPE bsik-gjahr,
            belnr TYPE bsik-belnr,
            buzei TYPE bsik-buzei,
            zuonr TYPE bsik-zuonr,
            shkzg TYPE bsik-shkzg,
            dmbtr TYPE bsik-dmbtr,
            END OF ty_bsikbsak.
    TYPES : BEGIN OF ty_bkpf ,
            bukrs TYPE bkpf-bukrs,
            belnr TYPE bkpf-belnr,
            gjahr TYPE bkpf-gjahr,
            bldat TYPE bkpf-bldat,
            budat TYPE bkpf-budat,
            stblg TYPE bkpf-stblg,
            stjah TYPE bkpf-stjah,
            END OF ty_bkpf.
    TYPES : BEGIN OF ty_bseg ,
            bukrs TYPE bseg-bukrs,
            belnr TYPE bseg-belnr,
            gjahr TYPE bseg-gjahr,
            buzei TYPE bseg-buzei,
            koart TYPE bseg-koart,
            shkzg TYPE bseg-shkzg,
            dmbtr TYPE bseg-dmbtr,
            sgtxt TYPE bseg-sgtxt,
            hkont TYPE bseg-hkont,
            lifnr TYPE bseg-lifnr,
            END OF ty_bseg.
    DATA : t_bsik     TYPE TABLE OF ty_bsikbsak WITH HEADER LINE.
    DATA : t_bsak     TYPE TABLE OF ty_bsikbsak WITH HEADER LINE.
    DATA : t_bsikbsak TYPE TABLE OF ty_bsikbsak WITH HEADER LINE.
    DATA : t_bkpf     TYPE TABLE OF ty_bkpf     WITH HEADER LINE.
    DATA : t_bkpf2    TYPE TABLE OF ty_bkpf     WITH HEADER LINE.
    DATA : wa_bkpf    TYPE ty_bkpf     .
    DATA : t_bseg     TYPE TABLE OF ty_bseg     WITH HEADER LINE.
    DATA: BEGIN OF t_pre_bal OCCURS 0,
          netpr TYPE bseg-dmbtr,
          sgtxt TYPE bseg-sgtxt,
          lifnr TYPE bseg-lifnr,
          END OF t_pre_bal.
    DATA: t_pre_bal1 LIKE t_pre_bal.
    DATA: BEGIN OF t_temp OCCURS 0,
          netpr TYPE bseg-dmbtr,
          sgtxt TYPE bseg-sgtxt,
          lifnr TYPE bseg-lifnr,
          END OF t_temp.
    DATA: BEGIN OF itab OCCURS 0,
          gjahr LIKE bsik-gjahr,
          belnr LIKE bsik-belnr,
          budat LIKE bkpf-budat,
          sgtxt LIKE bseg-sgtxt,
          lifnr LIKE lfa1-lifnr,
          netpr LIKE bseg-dmbtr,  " Net Amount
          inamt LIKE bseg-dmbtr,  " Interest Amount
          tdamt LIKE bseg-dmbtr,  " TDS Amount
          END   OF itab.
    RANGES: r_budat FOR bkpf-budat.
    I have Included vendor(LIFNR) in all these structures.Now I am using three internal tables to hold opening balance, Closing balance and line item accounting documents from bseg table respectively.here, I need to collect all these three internal tables into one internal table according to vendor(LIFNR)  with it's opening balance, accounting documents and closing balance. can anyone guide me through this so that I can collect all these three internal tables into single one.
    Thanks & Regards,
    Harshada Patil
    Edited by: Harshada.up on Feb 15, 2011 9:33 AM

  • Opening & closing balance for Multiple Vendors

    Hi Friends,
    I have an issue. This is my code.
    *& Report  ZVEN_OPEN_CLOSE_BAL
    REPORT  ZVEN_OPEN_CLOSE_BAL.
    *& Report  ZVEN_OPEN_CLOSE_BAL
    TABLES:lfa1,bsik.
    TYPES: BEGIN OF ty_bsik,
           bukrs TYPE bsik-bukrs,
           lifnr TYPE bsik-lifnr,
           augbl TYPE bsik-augbl,
           zuonr TYPE bsik-zuonr,
           gjahr TYPE bsik-gjahr,
           xblnr TYPE bsik-xblnr,
           belnr TYPE bsik-belnr,
           buzei TYPE bsik-buzei,
           blart TYPE bsik-blart,
           bldat TYPE bsik-bldat,
           budat TYPE bsik-budat,
           shkzg TYPE bsik-shkzg,
           dmbtr TYPE bsik-dmbtr,
    *       bal   TYPE char30,
           sgtxt TYPE bsik-sgtxt,
           END OF ty_bsik.
    TYPES: BEGIN OF ty_bsak,
           bukrs TYPE bsik-bukrs,
           lifnr TYPE bsak-lifnr,
           augbl TYPE bsak-augbl,
           zuonr TYPE bsak-zuonr,
           gjahr TYPE bsik-gjahr,
           belnr TYPE bsak-belnr,
           buzei TYPE bsik-buzei,
           budat TYPE bsak-budat,
           bldat TYPE bsak-bldat,
           xblnr TYPE bsak-xblnr,
           blart TYPE bsak-blart,
           shkzg TYPE bsak-shkzg,
           dmbtr TYPE bsik-dmbtr,
    *      shkzg1 TYPE bsak-shkzg,
           sgtxt TYPE bsak-sgtxt,
           END OF ty_bsak.
    TYPES: BEGIN OF ty_lfc1,
            lifnr TYPE lfc1-lifnr,
            bukrs TYPE lfc1-bukrs,
            gjahr TYPE lfc1-gjahr,
            umsav TYPE lfc1-umsav,
            END OF ty_lfc1.
    TYPES: BEGIN OF ty_all,
            lifnr TYPE bsik-lifnr,
            zuonr TYPE bsik-zuonr,
            xblnr TYPE bsik-xblnr,
            belnr TYPE bsik-belnr,
            hkont TYPE bseg-hkont,
            blart TYPE bsik-blart,
            ltext TYPE text20,
            bldat TYPE bsik-bldat,
            budat TYPE bsik-budat,
            opbal TYPE p DECIMALS 2,
            deb   TYPE p DECIMALS 2 ,"bsik-dmbtr,
            cre   TYPE p DECIMALS 2,"bsik-dmbtr,
            bal   TYPE p DECIMALS 2,
            augbl TYPE bsik-augbl,
            sgtxt TYPE bsik-sgtxt,
          END OF ty_all.
    TYPE-POOLS: slis.
    DATA:  t_layout   TYPE slis_layout_alv,
           s_fieldtab TYPE slis_fieldcat_alv,
           t_fieldtab TYPE slis_t_fieldcat_alv,
           wa_header TYPE slis_listheader,
           it_header TYPE  slis_t_listheader.
    DATA:it_bsik TYPE TABLE OF ty_bsik,
         it_bsak TYPE TABLE OF ty_bsak,
         it_all  TYPE TABLE OF ty_all,
         it_lfc1 TYPE TABLE OF ty_lfc1,
         it_t003 TYPE TABLE OF t003t,
         wa_bsik TYPE ty_bsik,
         wa_bsak TYPE ty_bsak,
         wa_all  TYPE ty_all,
         wa_lfc1 TYPE ty_lfc1,
         wa_t003 TYPE t003t.
    DATA:  gt_fldcat    TYPE slis_t_fieldcat_alv,
           gs_fldcat    TYPE slis_fieldcat_alv,
           gs_layout    TYPE slis_layout_alv,
           gv_save      TYPE c VALUE 'X'.
    types :BEGIN OF ty_bseg,
            BUKRS TYPE BUKRS,
            BELNR  TYPE BELNR_D,
            GJAHR  TYPE GJAHR,
            BUZEI  TYPE BUZEI,
            koart type koart,
            HKONT TYPE HKONT,
           END OF ty_bseg.
    DATA: it_bseg type TABLE OF ty_bseg,
          wa_bseg type ty_bseg.
      data t_balence TYPE TABLE OF BAPI3008_3 WITH HEADER LINE.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS : s_lifnr FOR lfa1-lifnr,
                     s_bukrs FOR bsik-bukrs,
                     s_budat FOR bsik-budat OBLIGATORY.
    PARAMETERS : p_gjahr TYPE bsik-gjahr OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK b1.
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM process_data.
      PERFORM display.
    *&      Form  GET_DATA
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM get_data .
      break naidu.
      SELECT  bukrs
              lifnr
              augbl
              zuonr
              gjahr
              xblnr
              belnr
              buzei
              blart
              bldat
              budat
              shkzg
              dmbtr
              sgtxt FROM bsik
              INTO TABLE it_bsik
              WHERE lifnr IN s_lifnr AND
                    bukrs IN s_bukrs AND
                    budat IN s_budat AND
                    gjahr = p_gjahr .
      SELECT bukrs
             lifnr
             augbl
             zuonr
             gjahr
             belnr
             buzei
             budat
             bldat
             xblnr
             blart
             shkzg
             dmbtr
             sgtxt FROM bsak
             INTO TABLE it_bsak
             WHERE lifnr IN s_lifnr AND
                   bukrs IN s_bukrs AND
                   budat IN s_budat AND
                   gjahr = p_gjahr .
    if it_bsik is INITIAL and it_bsak  is INITIAL.
    *DATA  v_date type budat.
    *data :year(4),
    *      month(2),
    *      date(2).
    *  year  = s_budat-low+0(4).
    *  date  = s_budat-low+6(2).
    *  month = s_budat-low+4(2).
    *  month = month - 01.
    *CONCATENATE year month date INTO v_date .
    *  SELECT  bukrs
    *          lifnr
    *          augbl
    *          zuonr
    *          gjahr
    *          xblnr
    *          belnr
    *          buzei
    *          blart
    *          bldat
    *          budat
    *          shkzg
    *          dmbtr
    *          sgtxt FROM bsik
    *          INTO TABLE it_bsik
    *          WHERE lifnr IN s_lifnr AND
    *                bukrs in s_bukrs and
    *                budat eq v_date AND
    *                gjahr = p_gjahr .
    *  SELECT bukrs
    *         lifnr
    *         augbl
    *         zuonr
    *         gjahr
    *         belnr
    *         buzei
    *         budat
    *         bldat
    *         xblnr
    *         blart
    *         shkzg
    *         dmbtr
    *         sgtxt FROM bsak
    *         INTO TABLE it_bsak
    *         WHERE lifnr IN s_lifnr AND
    *               bukrs IN s_bukrs AND
    *               budat eq v_date AND
    *               gjahr = p_gjahr .
      CALL FUNCTION 'BAPI_AP_ACC_GETKEYDATEBALANCE'
        EXPORTING
          companycode        = s_bukrs-low
          vendor             = s_lifnr-low
          keydate            = s_budat-low
    *     BALANCESPGLI       = ' '
    *     NOTEDITEMS         = ' '
    *   IMPORTING
    *     RETURN             =
        TABLES
          keybalance         = t_balence
      endif.
    ENDFORM.                    " GET_DATA
    *&      Form  PROCESS_DATA
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM process_data .
      DATA:v_bal TYPE netpr.
      LOOP AT it_bsak INTO wa_bsak.
        wa_bsik-bukrs  =    wa_bsak-bukrs.
        wa_bsik-lifnr  =    wa_bsak-lifnr.
        wa_bsik-augbl  =    wa_bsak-augbl.
        wa_bsik-zuonr  =    wa_bsak-zuonr.
        wa_bsik-gjahr  =    wa_bsak-gjahr.
        wa_bsik-belnr  =    wa_bsak-belnr.
        wa_bsik-buzei  =    wa_bsak-buzei.
        wa_bsik-budat  =    wa_bsak-budat.
        wa_bsik-bldat  =    wa_bsak-bldat.
        wa_bsik-xblnr  =    wa_bsak-xblnr.
        wa_bsik-blart  =    wa_bsak-blart.
        wa_bsik-shkzg  =    wa_bsak-shkzg.
        wa_bsik-dmbtr  =    wa_bsak-dmbtr.
        wa_bsik-sgtxt  =    wa_bsak-sgtxt .
        APPEND wa_bsik TO it_bsik.
        CLEAR:wa_bsik.
      ENDLOOP.
      IF it_bsik IS NOT INITIAL .
        SELECT lifnr bukrs gjahr umsav
               FROM lfc1
              INTO TABLE it_lfc1 FOR ALL ENTRIES IN  it_bsik
              WHERE
                    lifnr  EQ it_bsik-lifnr AND
                    bukrs  EQ it_bsik-bukrs AND
                    gjahr  EQ it_bsik-gjahr.
        SELECT  * FROM t003t
          INTO TABLE it_t003
          FOR ALL ENTRIES IN it_bsik
            WHERE blart = it_bsik-blart AND
                  spras = 'EN'.
    *&Bindu........................................
          select bukrs  "Company Code
                 belnr  "Document Number
                 gjahr  "Fiscal Year
                 buzei  "Line item
                 koart  "Account Type
                 hkont  "General Ledger Account
            from bseg into TABLE it_bseg
                      FOR ALL ENTRIES IN it_bsik
                      WHERE belnr eq it_bsik-belnr and
                            bukrs in s_bukrs and
                            gjahr eq p_gjahr and
                            BUZEI eq it_bsik-buzei.
      ENDIF.
      SORT it_bsik BY lifnr.
      DATA:c,
            l_dmbtr type p DECIMALS 2.
    DATA:v1(15),
         v2(3).
    DATA:v_umsav(18).
    DATA v_fbal TYPE umsav.
      LOOP AT it_bsik INTO wa_bsik.
            READ TABLE it_lfc1 INTO wa_lfc1 WITH KEY lifnr = wa_bsik-lifnr
                                                 bukrs = wa_bsik-bukrs
                                                 gjahr = wa_bsik-gjahr.
        if sy-subrc = 0.
    at FIRST.
    v_umsav = wa_lfc1-umsav.
      SPLIT v_umsav at '.' INTO v1 v2.
          wa_all-LTEXT = 'Opening Balance'.
          IF v2+2(1) = '-'.
          wa_all-cre = wa_lfc1-umsav.
          ELSE.
            wa_all-deb = wa_lfc1-umsav.
          ENDIF.
           wa_all-bal = wa_lfc1-umsav.
           v_fbal = wa_all-bal.
    APPEND wa_all to it_all.
    CLEAR wa_all.
    endat.
    endif.
        AT NEW lifnr.
          c = 0.
        ENDAT.
        wa_all-lifnr = wa_bsik-lifnr.
        wa_all-zuonr = wa_bsik-zuonr.
        wa_all-xblnr = wa_bsik-xblnr.
        wa_all-belnr = wa_bsik-belnr.
        wa_all-blart = wa_bsik-blart.
        wa_all-bldat = wa_bsik-bldat.
        wa_all-budat = wa_bsik-budat.
    *&Bindu............
      READ TABLE it_bseg into wa_bseg WITH KEY belnr = wa_bsik-belnr
                                               buzei = wa_bsik-buzei."Bindu.......
    if sy-subrc = 0.
        wa_all-hkont = wa_bseg-hkont. "Bindu.....
    endif.
        IF wa_bsik-shkzg = 'S'.
          wa_all-deb = wa_bsik-dmbtr.
        ELSEIF wa_bsik-shkzg = 'H'.
          wa_all-cre = wa_bsik-dmbtr.
        ENDIF.
        READ TABLE  it_t003 INTO wa_t003 WITH KEY blart = wa_bsik-blart.
        IF sy-subrc = 0.
          wa_all-ltext = wa_t003-ltext.
        ENDIF.
    *    READ TABLE it_lfc1 INTO wa_lfc1 WITH KEY lifnr = wa_bsik-lifnr
    *                                             bukrs = wa_bsik-bukrs
    *                                             gjahr = wa_bsik-gjahr.
    *break naidu.
        IF sy-subrc = 0.
    *      IF c = 0.
    *        clear:l_dmbtr.
    *        wa_all-opbal = wa_lfc1-umsav.
    *        c = c + 1.
    *        IF wa_bsik-shkzg = 'S'.
    *          wa_all-bal =  wa_all-opbal + wa_bsik-dmbtr.
    *        ELSEIF wa_bsik-shkzg = 'H'.
    *          wa_all-bal =  wa_all-opbal - wa_bsik-dmbtr.
    *        ENDIF.
            l_dmbtr = wa_all-bal.
    *      ELSE.
    *          wa_all-bal =  l_dmbtr + wa_bsik-dmbtr.
    *        ELSEIF wa_bsik-shkzg = 'H'.
    *          wa_all-bal = l_dmbtr - wa_bsik-dmbtr.
    *        ENDIF.
          ENDIF.
    *  IF wa_bsik-shkzg = 'S'.
    *          wa_all-bal =  wa_all-opbal + wa_bsik-dmbtr.
    *        ELSEIF wa_bsik-shkzg = 'H'.
    *          wa_all-bal =  wa_all-opbal - wa_bsik-dmbtr.
    *        ENDIF.
    if v_fbal is NOT INITIAL.
    wa_all-bal = v_fbal + wa_all-deb - wa_all-cre.
    CLEAR:v_fbal.
    else.
    wa_all-bal = v_bal + wa_all-deb - wa_all-cre.
        ENDIF.
        wa_all-augbl = wa_bsik-augbl.
        wa_all-sgtxt = wa_bsik-sgtxt.
    *v_balance  = wa_all-bal.
    APPEND wa_all TO it_all.
    v_bal = wa_all-bal.
    CLEAR :wa_all.
    *& Closing Balence.................
        at last.
       wa_all-LTEXT = 'Closing Balance'.
    *      IF .
          wa_all-BAL = v_bal.
    APPEND wa_all to it_all.
    CLEAR wa_all.
    *      ENDIF.
    endat.
      ENDLOOP.
    ENDFORM.                    " PROCESS_DATA
    *&      Form  DISPLAY
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM display .
      DATA : ls_layout  TYPE  slis_layout_alv.
      PERFORM create_fldcat.
      ls_layout-expand_all = 'X'.
      ls_layout-colwidth_optimize = 'X'.
      ls_layout-expand_fieldname = 'X'.
      ls_layout-zebra = 'X'.
    if it_all is initial .
        wa_all-LTEXT = 'Opening Balance'.
        wa_all-bal = t_balence-LC_BAL.
        wa_all-lifnr = s_lifnr-low.
        APPEND wa_all to it_all.
        ENDIF.
      IF it_all IS NOT INITIAL.
            CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            i_callback_program = sy-repid
            is_layout          = ls_layout
            it_fieldcat        = gt_fldcat
            i_save             = 'X'
          TABLES
            t_outtab           = it_all[]
          EXCEPTIONS
            program_error      = 1
            OTHERS             = 2.
      ELSE.
        MESSAGE 'There is no Data for the given selection screen' TYPE 'I' DISPLAY LIKE 'E'.
        LEAVE LIST-PROCESSING.
      ENDIF.
    ENDFORM.                    " DISPLAY
    *&      Form  CREATE_FLDCAT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM create_fldcat .
      PERFORM : append_val USING 'LIFNR'       'IT_ALL' 'vendor'  '' '' 'X' ' '.
      PERFORM : append_val USING 'HKONT'       'IT_ALL' 'G/L Acc'  '' '' 'X' ' '.
      PERFORM : append_val USING 'ZUONR'       'IT_ALL' 'account'  '' '' '' ''.
      PERFORM : append_val USING 'XBLNR'       'IT_ALL' 'number'  '' '' 'X' ''.
      PERFORM : append_val USING 'BELNR'       'IT_ALL' 'ref no'  '' '' 'X' ''.
      PERFORM : append_val USING 'BLART'       'IT_ALL' 'type'  '' '' 'X' ''.
      PERFORM : append_val USING 'LTEXT'       'IT_ALL' 'type text'  '' '' 'X' ''.
      PERFORM : append_val USING 'BLDAT'       'IT_ALL' 'doc date'  '' '' 'X' ''.
      PERFORM : append_val USING 'BUDAT'       'IT_ALL' 'post date'  '' '' 'X' ''.
      PERFORM : append_val USING 'OPBAL'       'IT_ALL' 'op balance'  '' '' '' ''.
      PERFORM : append_val USING 'DEB'         'IT_ALL' 'debit' '' '' '' ''.
      PERFORM : append_val USING 'CRE'         'IT_ALL' 'credit'  '' '' '' ''.
      PERFORM : append_val USING 'BAL'         'IT_ALL' 'balance'  '' '' '' ''.
      PERFORM : append_val USING 'AUGBL'       'IT_ALL' 'clr doc'  '' '' 'X' ''.
      PERFORM : append_val USING 'SGTXT'       'IT_ALL' 'text '  '' '' 'X' ''.
    ENDFORM.                    " CREATE_FLDCAT
    *&      Form  APPEND_VAL
    *       text
    *      -->P_0578   text
    *      -->P_0579   text
    *      -->P_TEXT_010  text
    *      -->P_0581   text
    *      -->P_0582   text
    *      -->P_0583   text
    FORM append_val  USING    p_a
                              p_b
                              p_c
                              p_d
                              p_e
                              p_f
                              p_g.
      CLEAR gs_fldcat.
      gs_fldcat-fieldname  = p_a.
      gs_fldcat-tabname    = p_b.
      gs_fldcat-seltext_m  = p_c.
      gs_fldcat-qfieldname = p_d.
      gs_fldcat-datatype   = p_e.
      gs_fldcat-no_zero    = p_f.
      gs_fldcat-do_sum     = p_g.
      APPEND gs_fldcat TO gt_fldcat.
    ENDFORM.                    " APPEND_VAL
    This is working for single vendor.
    Now my problem is Opening & closing balance should be displayed for multiple vendors.
    Please suggest me.
    Thanks in advance.

    Hi Friends,
    I have an issue. This is my code.
    *& Report  ZVEN_OPEN_CLOSE_BAL
    REPORT  ZVEN_OPEN_CLOSE_BAL.
    *& Report  ZVEN_OPEN_CLOSE_BAL
    TABLES:lfa1,bsik.
    TYPES: BEGIN OF ty_bsik,
           bukrs TYPE bsik-bukrs,
           lifnr TYPE bsik-lifnr,
           augbl TYPE bsik-augbl,
           zuonr TYPE bsik-zuonr,
           gjahr TYPE bsik-gjahr,
           xblnr TYPE bsik-xblnr,
           belnr TYPE bsik-belnr,
           buzei TYPE bsik-buzei,
           blart TYPE bsik-blart,
           bldat TYPE bsik-bldat,
           budat TYPE bsik-budat,
           shkzg TYPE bsik-shkzg,
           dmbtr TYPE bsik-dmbtr,
    *       bal   TYPE char30,
           sgtxt TYPE bsik-sgtxt,
           END OF ty_bsik.
    TYPES: BEGIN OF ty_bsak,
           bukrs TYPE bsik-bukrs,
           lifnr TYPE bsak-lifnr,
           augbl TYPE bsak-augbl,
           zuonr TYPE bsak-zuonr,
           gjahr TYPE bsik-gjahr,
           belnr TYPE bsak-belnr,
           buzei TYPE bsik-buzei,
           budat TYPE bsak-budat,
           bldat TYPE bsak-bldat,
           xblnr TYPE bsak-xblnr,
           blart TYPE bsak-blart,
           shkzg TYPE bsak-shkzg,
           dmbtr TYPE bsik-dmbtr,
    *      shkzg1 TYPE bsak-shkzg,
           sgtxt TYPE bsak-sgtxt,
           END OF ty_bsak.
    TYPES: BEGIN OF ty_lfc1,
            lifnr TYPE lfc1-lifnr,
            bukrs TYPE lfc1-bukrs,
            gjahr TYPE lfc1-gjahr,
            umsav TYPE lfc1-umsav,
            END OF ty_lfc1.
    TYPES: BEGIN OF ty_all,
            lifnr TYPE bsik-lifnr,
            zuonr TYPE bsik-zuonr,
            xblnr TYPE bsik-xblnr,
            belnr TYPE bsik-belnr,
            hkont TYPE bseg-hkont,
            blart TYPE bsik-blart,
            ltext TYPE text20,
            bldat TYPE bsik-bldat,
            budat TYPE bsik-budat,
            opbal TYPE p DECIMALS 2,
            deb   TYPE p DECIMALS 2 ,"bsik-dmbtr,
            cre   TYPE p DECIMALS 2,"bsik-dmbtr,
            bal   TYPE p DECIMALS 2,
            augbl TYPE bsik-augbl,
            sgtxt TYPE bsik-sgtxt,
          END OF ty_all.
    TYPE-POOLS: slis.
    DATA:  t_layout   TYPE slis_layout_alv,
           s_fieldtab TYPE slis_fieldcat_alv,
           t_fieldtab TYPE slis_t_fieldcat_alv,
           wa_header TYPE slis_listheader,
           it_header TYPE  slis_t_listheader.
    DATA:it_bsik TYPE TABLE OF ty_bsik,
         it_bsak TYPE TABLE OF ty_bsak,
         it_all  TYPE TABLE OF ty_all,
         it_lfc1 TYPE TABLE OF ty_lfc1,
         it_t003 TYPE TABLE OF t003t,
         wa_bsik TYPE ty_bsik,
         wa_bsak TYPE ty_bsak,
         wa_all  TYPE ty_all,
         wa_lfc1 TYPE ty_lfc1,
         wa_t003 TYPE t003t.
    DATA:  gt_fldcat    TYPE slis_t_fieldcat_alv,
           gs_fldcat    TYPE slis_fieldcat_alv,
           gs_layout    TYPE slis_layout_alv,
           gv_save      TYPE c VALUE 'X'.
    types :BEGIN OF ty_bseg,
            BUKRS TYPE BUKRS,
            BELNR  TYPE BELNR_D,
            GJAHR  TYPE GJAHR,
            BUZEI  TYPE BUZEI,
            koart type koart,
            HKONT TYPE HKONT,
           END OF ty_bseg.
    DATA: it_bseg type TABLE OF ty_bseg,
          wa_bseg type ty_bseg.
      data t_balence TYPE TABLE OF BAPI3008_3 WITH HEADER LINE.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS : s_lifnr FOR lfa1-lifnr,
                     s_bukrs FOR bsik-bukrs,
                     s_budat FOR bsik-budat OBLIGATORY.
    PARAMETERS : p_gjahr TYPE bsik-gjahr OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK b1.
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM process_data.
      PERFORM display.
    *&      Form  GET_DATA
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM get_data .
      break naidu.
      SELECT  bukrs
              lifnr
              augbl
              zuonr
              gjahr
              xblnr
              belnr
              buzei
              blart
              bldat
              budat
              shkzg
              dmbtr
              sgtxt FROM bsik
              INTO TABLE it_bsik
              WHERE lifnr IN s_lifnr AND
                    bukrs IN s_bukrs AND
                    budat IN s_budat AND
                    gjahr = p_gjahr .
      SELECT bukrs
             lifnr
             augbl
             zuonr
             gjahr
             belnr
             buzei
             budat
             bldat
             xblnr
             blart
             shkzg
             dmbtr
             sgtxt FROM bsak
             INTO TABLE it_bsak
             WHERE lifnr IN s_lifnr AND
                   bukrs IN s_bukrs AND
                   budat IN s_budat AND
                   gjahr = p_gjahr .
    if it_bsik is INITIAL and it_bsak  is INITIAL.
    *DATA  v_date type budat.
    *data :year(4),
    *      month(2),
    *      date(2).
    *  year  = s_budat-low+0(4).
    *  date  = s_budat-low+6(2).
    *  month = s_budat-low+4(2).
    *  month = month - 01.
    *CONCATENATE year month date INTO v_date .
    *  SELECT  bukrs
    *          lifnr
    *          augbl
    *          zuonr
    *          gjahr
    *          xblnr
    *          belnr
    *          buzei
    *          blart
    *          bldat
    *          budat
    *          shkzg
    *          dmbtr
    *          sgtxt FROM bsik
    *          INTO TABLE it_bsik
    *          WHERE lifnr IN s_lifnr AND
    *                bukrs in s_bukrs and
    *                budat eq v_date AND
    *                gjahr = p_gjahr .
    *  SELECT bukrs
    *         lifnr
    *         augbl
    *         zuonr
    *         gjahr
    *         belnr
    *         buzei
    *         budat
    *         bldat
    *         xblnr
    *         blart
    *         shkzg
    *         dmbtr
    *         sgtxt FROM bsak
    *         INTO TABLE it_bsak
    *         WHERE lifnr IN s_lifnr AND
    *               bukrs IN s_bukrs AND
    *               budat eq v_date AND
    *               gjahr = p_gjahr .
      CALL FUNCTION 'BAPI_AP_ACC_GETKEYDATEBALANCE'
        EXPORTING
          companycode        = s_bukrs-low
          vendor             = s_lifnr-low
          keydate            = s_budat-low
    *     BALANCESPGLI       = ' '
    *     NOTEDITEMS         = ' '
    *   IMPORTING
    *     RETURN             =
        TABLES
          keybalance         = t_balence
      endif.
    ENDFORM.                    " GET_DATA
    *&      Form  PROCESS_DATA
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM process_data .
      DATA:v_bal TYPE netpr.
      LOOP AT it_bsak INTO wa_bsak.
        wa_bsik-bukrs  =    wa_bsak-bukrs.
        wa_bsik-lifnr  =    wa_bsak-lifnr.
        wa_bsik-augbl  =    wa_bsak-augbl.
        wa_bsik-zuonr  =    wa_bsak-zuonr.
        wa_bsik-gjahr  =    wa_bsak-gjahr.
        wa_bsik-belnr  =    wa_bsak-belnr.
        wa_bsik-buzei  =    wa_bsak-buzei.
        wa_bsik-budat  =    wa_bsak-budat.
        wa_bsik-bldat  =    wa_bsak-bldat.
        wa_bsik-xblnr  =    wa_bsak-xblnr.
        wa_bsik-blart  =    wa_bsak-blart.
        wa_bsik-shkzg  =    wa_bsak-shkzg.
        wa_bsik-dmbtr  =    wa_bsak-dmbtr.
        wa_bsik-sgtxt  =    wa_bsak-sgtxt .
        APPEND wa_bsik TO it_bsik.
        CLEAR:wa_bsik.
      ENDLOOP.
      IF it_bsik IS NOT INITIAL .
        SELECT lifnr bukrs gjahr umsav
               FROM lfc1
              INTO TABLE it_lfc1 FOR ALL ENTRIES IN  it_bsik
              WHERE
                    lifnr  EQ it_bsik-lifnr AND
                    bukrs  EQ it_bsik-bukrs AND
                    gjahr  EQ it_bsik-gjahr.
        SELECT  * FROM t003t
          INTO TABLE it_t003
          FOR ALL ENTRIES IN it_bsik
            WHERE blart = it_bsik-blart AND
                  spras = 'EN'.
    *&Bindu........................................
          select bukrs  "Company Code
                 belnr  "Document Number
                 gjahr  "Fiscal Year
                 buzei  "Line item
                 koart  "Account Type
                 hkont  "General Ledger Account
            from bseg into TABLE it_bseg
                      FOR ALL ENTRIES IN it_bsik
                      WHERE belnr eq it_bsik-belnr and
                            bukrs in s_bukrs and
                            gjahr eq p_gjahr and
                            BUZEI eq it_bsik-buzei.
      ENDIF.
      SORT it_bsik BY lifnr.
      DATA:c,
            l_dmbtr type p DECIMALS 2.
    DATA:v1(15),
         v2(3).
    DATA:v_umsav(18).
    DATA v_fbal TYPE umsav.
      LOOP AT it_bsik INTO wa_bsik.
            READ TABLE it_lfc1 INTO wa_lfc1 WITH KEY lifnr = wa_bsik-lifnr
                                                 bukrs = wa_bsik-bukrs
                                                 gjahr = wa_bsik-gjahr.
        if sy-subrc = 0.
    at FIRST.
    v_umsav = wa_lfc1-umsav.
      SPLIT v_umsav at '.' INTO v1 v2.
          wa_all-LTEXT = 'Opening Balance'.
          IF v2+2(1) = '-'.
          wa_all-cre = wa_lfc1-umsav.
          ELSE.
            wa_all-deb = wa_lfc1-umsav.
          ENDIF.
           wa_all-bal = wa_lfc1-umsav.
           v_fbal = wa_all-bal.
    APPEND wa_all to it_all.
    CLEAR wa_all.
    endat.
    endif.
        AT NEW lifnr.
          c = 0.
        ENDAT.
        wa_all-lifnr = wa_bsik-lifnr.
        wa_all-zuonr = wa_bsik-zuonr.
        wa_all-xblnr = wa_bsik-xblnr.
        wa_all-belnr = wa_bsik-belnr.
        wa_all-blart = wa_bsik-blart.
        wa_all-bldat = wa_bsik-bldat.
        wa_all-budat = wa_bsik-budat.
    *&Bindu............
      READ TABLE it_bseg into wa_bseg WITH KEY belnr = wa_bsik-belnr
                                               buzei = wa_bsik-buzei."Bindu.......
    if sy-subrc = 0.
        wa_all-hkont = wa_bseg-hkont. "Bindu.....
    endif.
        IF wa_bsik-shkzg = 'S'.
          wa_all-deb = wa_bsik-dmbtr.
        ELSEIF wa_bsik-shkzg = 'H'.
          wa_all-cre = wa_bsik-dmbtr.
        ENDIF.
        READ TABLE  it_t003 INTO wa_t003 WITH KEY blart = wa_bsik-blart.
        IF sy-subrc = 0.
          wa_all-ltext = wa_t003-ltext.
        ENDIF.
    *    READ TABLE it_lfc1 INTO wa_lfc1 WITH KEY lifnr = wa_bsik-lifnr
    *                                             bukrs = wa_bsik-bukrs
    *                                             gjahr = wa_bsik-gjahr.
    *break naidu.
        IF sy-subrc = 0.
    *      IF c = 0.
    *        clear:l_dmbtr.
    *        wa_all-opbal = wa_lfc1-umsav.
    *        c = c + 1.
    *        IF wa_bsik-shkzg = 'S'.
    *          wa_all-bal =  wa_all-opbal + wa_bsik-dmbtr.
    *        ELSEIF wa_bsik-shkzg = 'H'.
    *          wa_all-bal =  wa_all-opbal - wa_bsik-dmbtr.
    *        ENDIF.
            l_dmbtr = wa_all-bal.
    *      ELSE.
    *          wa_all-bal =  l_dmbtr + wa_bsik-dmbtr.
    *        ELSEIF wa_bsik-shkzg = 'H'.
    *          wa_all-bal = l_dmbtr - wa_bsik-dmbtr.
    *        ENDIF.
          ENDIF.
    *  IF wa_bsik-shkzg = 'S'.
    *          wa_all-bal =  wa_all-opbal + wa_bsik-dmbtr.
    *        ELSEIF wa_bsik-shkzg = 'H'.
    *          wa_all-bal =  wa_all-opbal - wa_bsik-dmbtr.
    *        ENDIF.
    if v_fbal is NOT INITIAL.
    wa_all-bal = v_fbal + wa_all-deb - wa_all-cre.
    CLEAR:v_fbal.
    else.
    wa_all-bal = v_bal + wa_all-deb - wa_all-cre.
        ENDIF.
        wa_all-augbl = wa_bsik-augbl.
        wa_all-sgtxt = wa_bsik-sgtxt.
    *v_balance  = wa_all-bal.
    APPEND wa_all TO it_all.
    v_bal = wa_all-bal.
    CLEAR :wa_all.
    *& Closing Balence.................
        at last.
       wa_all-LTEXT = 'Closing Balance'.
    *      IF .
          wa_all-BAL = v_bal.
    APPEND wa_all to it_all.
    CLEAR wa_all.
    *      ENDIF.
    endat.
      ENDLOOP.
    ENDFORM.                    " PROCESS_DATA
    *&      Form  DISPLAY
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM display .
      DATA : ls_layout  TYPE  slis_layout_alv.
      PERFORM create_fldcat.
      ls_layout-expand_all = 'X'.
      ls_layout-colwidth_optimize = 'X'.
      ls_layout-expand_fieldname = 'X'.
      ls_layout-zebra = 'X'.
    if it_all is initial .
        wa_all-LTEXT = 'Opening Balance'.
        wa_all-bal = t_balence-LC_BAL.
        wa_all-lifnr = s_lifnr-low.
        APPEND wa_all to it_all.
        ENDIF.
      IF it_all IS NOT INITIAL.
            CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            i_callback_program = sy-repid
            is_layout          = ls_layout
            it_fieldcat        = gt_fldcat
            i_save             = 'X'
          TABLES
            t_outtab           = it_all[]
          EXCEPTIONS
            program_error      = 1
            OTHERS             = 2.
      ELSE.
        MESSAGE 'There is no Data for the given selection screen' TYPE 'I' DISPLAY LIKE 'E'.
        LEAVE LIST-PROCESSING.
      ENDIF.
    ENDFORM.                    " DISPLAY
    *&      Form  CREATE_FLDCAT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM create_fldcat .
      PERFORM : append_val USING 'LIFNR'       'IT_ALL' 'vendor'  '' '' 'X' ' '.
      PERFORM : append_val USING 'HKONT'       'IT_ALL' 'G/L Acc'  '' '' 'X' ' '.
      PERFORM : append_val USING 'ZUONR'       'IT_ALL' 'account'  '' '' '' ''.
      PERFORM : append_val USING 'XBLNR'       'IT_ALL' 'number'  '' '' 'X' ''.
      PERFORM : append_val USING 'BELNR'       'IT_ALL' 'ref no'  '' '' 'X' ''.
      PERFORM : append_val USING 'BLART'       'IT_ALL' 'type'  '' '' 'X' ''.
      PERFORM : append_val USING 'LTEXT'       'IT_ALL' 'type text'  '' '' 'X' ''.
      PERFORM : append_val USING 'BLDAT'       'IT_ALL' 'doc date'  '' '' 'X' ''.
      PERFORM : append_val USING 'BUDAT'       'IT_ALL' 'post date'  '' '' 'X' ''.
      PERFORM : append_val USING 'OPBAL'       'IT_ALL' 'op balance'  '' '' '' ''.
      PERFORM : append_val USING 'DEB'         'IT_ALL' 'debit' '' '' '' ''.
      PERFORM : append_val USING 'CRE'         'IT_ALL' 'credit'  '' '' '' ''.
      PERFORM : append_val USING 'BAL'         'IT_ALL' 'balance'  '' '' '' ''.
      PERFORM : append_val USING 'AUGBL'       'IT_ALL' 'clr doc'  '' '' 'X' ''.
      PERFORM : append_val USING 'SGTXT'       'IT_ALL' 'text '  '' '' 'X' ''.
    ENDFORM.                    " CREATE_FLDCAT
    *&      Form  APPEND_VAL
    *       text
    *      -->P_0578   text
    *      -->P_0579   text
    *      -->P_TEXT_010  text
    *      -->P_0581   text
    *      -->P_0582   text
    *      -->P_0583   text
    FORM append_val  USING    p_a
                              p_b
                              p_c
                              p_d
                              p_e
                              p_f
                              p_g.
      CLEAR gs_fldcat.
      gs_fldcat-fieldname  = p_a.
      gs_fldcat-tabname    = p_b.
      gs_fldcat-seltext_m  = p_c.
      gs_fldcat-qfieldname = p_d.
      gs_fldcat-datatype   = p_e.
      gs_fldcat-no_zero    = p_f.
      gs_fldcat-do_sum     = p_g.
      APPEND gs_fldcat TO gt_fldcat.
    ENDFORM.                    " APPEND_VAL
    This is working for single vendor.
    Now my problem is Opening & closing balance should be displayed for multiple vendors.
    Please suggest me.
    Thanks in advance.

  • Condition records- setting printer for multiple vendors at the same time

    Hi all,
    I have maintained condition record for POs for Key combination of Doc type,Purch Org and vendors.Now for a particular doc type and P.Org , I have around 50 vendors. I need to change the printer for all these 50 vendors to 'printerx'.Is it possible? I tried selecting multiple vendors at a time and changed the printer but its not working.

    Hi Saurav ,
    You can achieve this through SCAT transaction.
    For running SCAT take the help of ABAP team.
    I hope u might be having the list in the form of text file.
    If not , download the same from NACH table.
    Regards
    Ramesh Ch

  • Best practice for multiple instances of the same BEX query

    Hi there,
    I'm wondering what's the best way to use multiple instances of the same BEX query. Let me explain what I mean:
    I have a dashboard with different queries feeding different period of time such as: week to date, month to date and so on. One query for each since it is based on a user exit.
    For each query I want to show different data in different sections of my dashboard. Per example: sales per directors or sales per customer group, sales per day, sales per week and the like.I tried to connect a simple bar chart via a direct connection but with no success due to the multiple lines generated by the addition of the sales director, customer group, week number and so on.
    My question is about the way to connect the different queries efficiently in order to show the different data while avoiding multiple useless lines.
    The image above shows the query browser where, per example, for a Month to date query there will be mutiple line for each week as well as one line for each director. If, for two different components, I want to show data per week and data per director or other representation what is the best practice:
    Add another instance of the same query and only put the week information and another one will only the director info?
    Should I bind those to the excel file and use formulas to make final calculations?
    Will there be a performance issues for adding different instances of the same query
    I have 6 different queries (read 6 user exit that filters time via user exit).
    Depending on the best practices there might be 4 instances for each for a total of 24 instances in the query browser.
    I hope my question is clear enough, if not please do not hesitate I'll clarify as much as possible.
    Regards,
    Steve

    Hi Steve,
    Might be trying for solution for a long time, If i understood your question clear let me clarify you few points.
    You are trying to access the bex query which is designed with the exit's in the background based on the logic and trying to call the entire dimensions and key-figures in a single connection. Then you are trying to map those data in the charts.
    Steve, try to make more connections based upon the logic and split them. use the same query but split them by sales per customer group, sales per day, sales per week by making three different connections and try. You can merge the prompts from all connections.
    Hope this Helps!!!
    Sorry if i misunderstood your question.
    --SumanT

  • One cheque for multiple vendors

    hi,
    is it possible to generate one cheque for multiple vendors ?
    cheque will be sent to bank and bank will deposit the amounts into vendor banks.
    Can you anybody help me?
    regards,
    kalyan

    Hi
    Yes. you can do it 
    First transfer the amount to bank and from there bank will transfer the amount to respective vendors through ther banks.
    Go for implementing automatic payment programme according to your client reqyuirement. Check  TCode F110 which is master transaction for APP.  Check at TCode F110-Environment-maintain Config.....
    Cheers
    Srinivas

  • One RFQ for multiple vendors

    Hello Experts,
    In SAP, whether an RFQ can be sent to multiple vendors.?
    In ME41 (RFQ Creation), we have the option  of mentioning only one vendor.Whether the same RFQ can be created/sent to multiple vendors?
    Please clarify.
    Regards
    Mahesh

    Hi,
    We can surely send one RFQ to multiple vendors (vendors having master record as well as one time vendor). At first we create RFQ for material or service i.e. we maintain header data and item description in item overview, after that u can send it to multiple vendors by entering vendor name or entering one time vendor detail in vendor address tab which opens separate screen, here when u press save a particular RFQ is generated for the relevant vendor u maintain. Than u will get the item overview screen again if u want than do some changes or not  and again send it to another vendor by the same process.
    Item overview serves as a template in which u maintain ur requirements and than u use this to send multiple vendors, to end end the RFQ creation press exit.
    Regards,
    Man

Maybe you are looking for

  • How can i copy,paste an Object ?

    How can i copy,paste an Object which i define by myself?

  • How To Pass Data Between A Main Report and a Subreport

    Hello,   I'm working with Crystal Reports Professional XI.    I have a main report with two date parameters: BeginDate of Date type and EndDate of Data type.  The main report has no details being printed instead it's grouped by a formula field and di

  • Crossed out Circle... kernal panic... help, about to throw away computer

    Slowly but surely my 15" Powerbook G4 was dying and it may be done forever, but I'm trying on last time. My computer froze and when I hard restarted I just got a blank gray screen (no apple image, no working indicator). I put in Leopard CD and tried

  • Using Ipod and Itunes on more than one computer

    I need to know how I can get my library onto my work computer? It seems that I'm only able to get my purchased music onto the itunes library but not my whole ipod library and all the play lists. Can't this be done?

  • Premiere CS4 freezing on startup menu, please help.

    Hi, I installed Adobe Premiere CS4 not too long ago as part of Master Collection and all the other programs seem to work but Premiere doesn't. Whenever I open Premiere CS4, the splash screen loads up and then I get that menu with New Project and Open