FCC's parameters for multiple occurence on target side

Hi Experts,
I have an issue in Fixed File content conversion(FCC).
The fixed format file is being read into XI and is being converted in XML via FCC.
I have changed the occurence of MT on target side,which resulted in adding Messages & Message1 tag on sender side as well.The structure has become like this:
Messages
     ->  Message1
          -->  FCI0002_MT
               --->  row
>  Fields
Target str:
Messages
     ->Message1
          -->FCI002_MT
               --->row
>Fields
If I use FCI0002_MT in document name and row,* in Recordset structure then message mapping fails at MT node.
What should be the Document name and Recordset structure in the FCC adapter?
Thanks and Regards,
Indu Khurana
Edited by: Indu Khurana on Feb 6, 2009 9:29 AM
Edited by: Indu Khurana on Feb 6, 2009 9:34 AM

Hi Mugdha,
Yes Its has passed FCC and stuck in mapping.
But now if I change  Recordset structure to :
Message1,1,FCI000012_Forecast_DATA2000_MT,1,row,*
then its gving error in communication channel : "  Mandatory parameter 'xml.keyfieldName': no value found  ".
And in my case I don't have any key field name.
Kindly suggest.
Thanks
Indu

Similar Messages

  • How to pass multiple records to target side using xquery

    Hi Everybody,
    I am using xquery transformation.
    Input: Source payload contains 5 variables.
    Target payload contains 5 variables.
    I have input with payload with multiple instance like:
    <Input>
    <payload1>
    <a>1<a>
    <b>2<b>
    <c>3<c>
    <d>4<d>
    <e>5<e>
    </payload1>
    <payload1>
    <a>6<a>
    <b>7<b>
    <c>8<c>
    <d>9<d>
    <e>10<e>
    </payload1>
    </Input>
    So my requirement is to pass above records into target side,
    So I am using xquery Transformation.
    I have written code as follows.
    (:: pragma bea:global-element-parameter parameter="$tHRecAdv1" element="ns0:THRecAdv" location="../XMLSchemas/THRecAdv.xsd" ::)
    (:: pragma bea:global-element-return element="ns1:ShipmentReceiptEBO" location="../../AIAReferenceModelProject/EnterpriseObjectLibrary/Core/EBO/ShipmentReceipt/V1/ShipmentReceiptEBO.xsd" ::)
    declare namespace ns2 = "http://xmlns.oracle.com/EnterpriseObjects/Core/Custom/EBO/ShipmentReceipt/V1";
    declare namespace ns1 = "http://xmlns.oracle.com/EnterpriseObjects/Core/EBO/ShipmentReceipt/V1";
    declare namespace ns4 = "http://xmlns.oracle.com/EnterpriseObjects/Core/Common/V2";
    declare namespace ns3 = "http://xmlns.oracle.com/EnterpriseObjects/Core/Custom/Common/V2";
    declare namespace ns0 = "http://diversey.com/THRecAdv";
    declare namespace xf = "http://tempuri.org/ShipmentReceiptServicesProject/XMLTransformations/THRecAdvFile_ShipmentReceiptEBO_JDE_XQuery/";
    declare function xf:THRecAdvFile_ShipmentReceiptEBO_JDE_XQuery($tHRecAdv1 as element(ns0:THRecAdv))
    as element(ns1:ShipmentReceiptEBO) {
    for $THRecAdvFields  in $tHRecAdv1/ns0:THRecAdvFields
    return
    <ns1:ShipmentReceiptEBO>
    <ns4:Identification>
    <ns4:BusinessComponentID>{ data($THRecAdvFields/ns0:JD_WHSE_Code) }</ns4:BusinessComponentID>
    <ns4:ID schemeID = "{ (data($THRecAdvFields/ns0:JD_PO_Number)) }"
    schemeVersionID = "{ data($THRecAdvFields/ns0:JD_PO_Type) }">{ data($THRecAdvFields/ns0:WMS_InternalPONumber) }</ns4:ID>
    <ns4:ApplicationObjectKey>
    <ns4:ID>{ data($THRecAdvFields/ns0:JD_BranchPlant) }</ns4:ID>
    </ns4:ApplicationObjectKey>
    <ns4:Revision>
    <ns4:Reason>{ data($THRecAdvFields/ns0:ReturnReceiptReasonCode) }</ns4:Reason>
    </ns4:Revision>
    </ns4:Identification>
    <ns1:ExpectedReceiptDate>{ data($THRecAdvFields/ns0:WMS_ReceiptDate) }</ns1:ExpectedReceiptDate>
    <ns4:InvoiceReference>
    <ns4:InvoiceIdentification>
    <ns4:ID>{ data($THRecAdvFields/ns0:JDE_SupplierInvoiceNumber) }</ns4:ID>
    </ns4:InvoiceIdentification>
    </ns4:InvoiceReference>
    <ns1:ShipmentReceiptLine actionCode = "{ data($THRecAdvFields/ns0:ActionFlag) }">
    <ns4:Identification>
    <ns4:ID schemeID = "{ data($THRecAdvFields/ns0:JD_PO_LineNumber) }"
    schemeVersionID = "{ data($THRecAdvFields/ns0:ExternPONumber) }">{ data($THRecAdvFields/ns0:WMS_ReceiptNumber) }</ns4:ID>
    <ns4:ContextID>{ data($THRecAdvFields/ns0:WMSReceivingClerk) }</ns4:ContextID>
    <ns4:ApplicationObjectKey>
    <ns4:ID schemeID = "{ data($THRecAdvFields/ns0:BatchNumber) }"
    schemeVersionID = "{ data($THRecAdvFields/ns0:BatchLineNumber) }">{ data($THRecAdvFields/ns0:JD_LocationCode) }</ns4:ID>
    </ns4:ApplicationObjectKey>
    <ns4:AlternateObjectKey>
    <ns4:ID>{ data($THRecAdvFields/ns0:SupplierCode) }</ns4:ID>
    <ns4:ContextID>{ data($THRecAdvFields/ns0:LineNumber_Or_SequenceNumber) }</ns4:ContextID>
    </ns4:AlternateObjectKey>
    <ns4:Revision>
    <ns4:Label>{ data($THRecAdvFields/ns0:Records) }</ns4:Label>
    </ns4:Revision>
    </ns4:Identification>
    <ns1:ReceivedQuantity unitCode = "{ data($THRecAdvFields/ns0:ReceiptUOM) }">{ data($THRecAdvFields/ns0:UnitReceipt) }</ns1:ReceivedQuantity>
    <ns1:SourceDocumentTypeCode>{ data($THRecAdvFields/ns0:SKU_Code) }</ns1:SourceDocumentTypeCode>
    <ns1:DestinationTypeCode>{ data($THRecAdvFields/ns0:DestinationProcessFlag) }</ns1:DestinationTypeCode>
    <ns1:Comment>{ data($THRecAdvFields/ns0:Remarks) }</ns1:Comment>
    <ns4:Status>
    <ns4:Code>{ data($THRecAdvFields/ns0:ProcessSourceFlag) }</ns4:Code>
    <ns4:EffectiveDateTime>{ data($THRecAdvFields/ns0:ADDDATE) }</ns4:EffectiveDateTime>
    </ns4:Status>
    <ns1:ShipmentReceiptTransaction>
    <ns1:ShipmentReceiptTransactionLot>
    <ns1:ShipmentReceiptItemLotReference>
    <ns1:ExpirationDate>{ data($THRecAdvFields/ns0:ExpiryDate) }</ns1:ExpirationDate>
    <ns1:CreationDateTime>{ data($THRecAdvFields/ns0:ProductionDate) }</ns1:CreationDateTime>
    </ns1:ShipmentReceiptItemLotReference>
    </ns1:ShipmentReceiptTransactionLot>
    </ns1:ShipmentReceiptTransaction>
    </ns1:ShipmentReceiptLine>
    </ns1:ShipmentReceiptEBO>
    declare variable $tHRecAdv1 as element(ns0:THRecAdv) external;
    xf:THRecAdvFile_ShipmentReceiptEBO_JDE_XQuery($tHRecAdv1)
    But while importing this code to OSB,and tested it ,
    With 1 payload it successfully shows the data in Target side,
    But while testing with multiple line items,i am getting an error as follows.
    *Error executing the XQuery transformation: line 14, column 17: {err}FORG0005: expected exactly one item, got 2+ items*
    So please provide me the steps how to pass multiple records to target side using xquery.
    Regards,
    Jyoti Nayak

    Hi Jyoti Nayak,
    You have to do something like the example bellow, you can not just repeat the inner element, you will need an outer "container" tag. So you will have to change the target element of your xq transformation.
    declare function xf:setToList($set1 as element(ns0:set))
    as element(ns0:list) {
    <ns0:list>
    for $pair in $set1/ns0:pair
    return
    <ns0:entry>
    <ns0:key>{ data($pair/ns0:key) }</ns0:key>
    <ns0:value>{ data($pair/ns0:value) }</ns0:value>
    </ns0:entry>
    </ns0:list>
    Cheers,
    Vlad
    Give points - it is good etiquette to reward an answerer points (5 - helpful; 10 - correct) for their post if they answer your question. If you think this is helpful, please consider giving points

  • Wrong parameters for multiple targets mapping started in Control Center

    Dear experts,
    I'm newbie for OWB and I got into the following error when I try to start the loading of one my mapping that consists of 2 Cubes as targets:
    INVN_HIST_MAP
    Error
    ORA-06550: line 1, column 847:
    PLS-00306: wrong number or types of arguments in call to 'MAIN'
    ORA-06550: line 1, column 841:
    PL/SQL: Statement ignored
    When I check the the package Main Procedure, I found the number of parameters for 'TRUNCATE_LOAD' and 'AW_EXECUTE_RESULT' doubled compared to the other mappings I have which consist of one target cube only. That explains why I got the error above. My question is whether there's any way to get the Control Center loading work?
    Many thanks!

    Thanks for the reply David. I'm using OWB 10.2.0.4. Is this a known bug? I don't mind splitting into 2 mappings. My only concern is that ~60% of the data processing are overlapping. I'm using MOLAP. Is there a way to share staged table data on 2 different mappings?

  • Can't define init parameters for multiple servlets

    I want to define init parameters for two servlets in the web.xml file but i only get null for my Login servlet
    <web-app>
    <servlet>
    <servlet-name>
    RSServlet
    </servlet-name>
    <servlet-class>
    RoadSafe.Servlet.RSServlet
    </servlet-class>
    <init-param>
    <param-name>serverip</param-name>
    <param-value>localhost</param-value>
    </init-param>
         <load-on-startup>
              2
         </load-on-startup>
    </servlet>
         <servlet>
    <servlet-name>
    Login
    </servlet-name>
    <servlet-class>
    RoadSafe.AdMisc.Login
    </servlet-class>
    <init-param>
    <param-name>serverip2</param-name>
    <param-value>localhost</param-value>
    </init-param>
         <load-on-startup>
              1
         </load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>
    RSServlet
    </servlet-name>
    <url-pattern>
    /RSServlet
    </url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>
    Login
    </servlet-name>
    <url-pattern>
    /Login
    </url-pattern>
    </servlet-mapping>
    </web-app>

    In the code for you Login servlet, are you using the name "serverip2" to access the initial parameter ?
    Thats the name you have used in the web.xml file.

  • How do you do a search for multiple occurences of the same word in a NOTE?

    How do you search for multiiple occurences of a word in NOTES?  I seem only to be able to find the first occurence and then it goes into a loop, never past the first occurence.

    I want to find all the same words in ONE NOTE. It is a very loong list and I want to find all cccurences of a specific word in that one NOTE when I do a search. I thought I had solved this earlier today but now I can't seem to repeat it. I type in word in the SEARCH box, select the NOTE and then it shows me the FIRST occurence in that note, but only the first,

  • Multiple message at target side

    Hi frnds,
    iam doing one Scenario file to file.my requirement is i have multiple records in a message at source side, i want split each record as different message at target side is it possible. if it possible please share the ideas on this.
    Regards,
    Rajendar K

    Hi Rajendra,
    Can you have a look,it may help you Re: Split a message into multiple instances
    Thanks
    Satish

  • FCC - JMS receiver for multiple

    Hi Experts,
    Scenairo: FILE --- XI -- JMS.
    Source and target structure are identical. Using FCC at both the side.
    Root 0--Unbounded
    HEADER_RECORD  1:1
    DETAIL_RECORD_DEPARTMENTS   0--Unbounded
    DETAIL_RECORD_JCODES   0--Unbounded
    DETAIL_RECORD_FCODES  0--Unbounded
    DETAIL_RECORD_SCODES 0--Unbounded
    TRAILER_RECORD 1:1
    JMS FCC parameters details shown below :
    ModuleKey  ParameterName          ParameterValue
    XML2Plain     Transform.Class            com.sap.aii.messaging.adapter.Conversion
    XML2Plain     TransformContentType   text/plain;charset=utf-8
    XML2Plain     xml.conversionType       SimpleXML2PlainXML2Plain xml.addHeaderLine   0
    XML2Plain     xml.fieldFixedLengths      ?????
    XML2Plain     xml.fixedLengthTooShortHandling   Cut
    Refer the given below blog:
    http://wiki.sdn.sap.com/wiki/display/XI/HowTo...ContentconversionmodulewithJ2EEJMS+adapter
    It's FieldFixedLengths file and consists of diffrent  multiple nodes.
    How do we achieve FCC in JMS reciever since structure has diffrent nodes ?
    Regards,
    Sameer

    Thanks for you input.
    As suggested, can you pls eloborate, what would be FCC pataremeter in this case?
    Sameer!

  • Parse for multiple occurences of something in query string used

    HI
    A varchar is passed as an input to a stored proc. This could have zero, one or more occurances of a word (e.g. from_no). This will be in form of a name value pair and could occur multiple times. Exampe
    query_string = ' abc=123 and from_no > 1 and from_no < 10 and def = 1'
    Now I need to parse this string to get the operator and values for the 2 occurences of from_no. How can I do that? How can I go about writing a smple func or sp to parse and return both from_no's?

    Perhaps this sample code can help:
    with yourtable as
    (select ' abc=123 and from_no > 1 and from_no < 10 and def = 1' query_string from dual union all
    select ' abc=123 and from_no = 2 and from_no != 30 and def = 1 and from_no=40' query_string from dual)
    select  query_string,
            x.n no,
            regexp_substr(query_string,'from_no *[<>!=]* *[0-9]*',1,x.n) exp,       
            regexp_replace(regexp_substr(query_string,'from_no *[<!>=]* *[0-9]*',1,x.n),'.*from_no *([<!>=]*) *([0-9]*).*','\1') op,
            regexp_replace(regexp_substr(query_string,'from_no *[<!>=]* *[0-9]*',1,x.n),'.*from_no *([<!>=]*) *([0-9]*).*','\2') val
    from yourtable,
         (select rownum n from dual connect by rownum<=100) x
    where regexp_instr(query_string,'from_no',1,x.n)>0   --  end searching in query string when there are no more expressions
    order by query_string, x.nI added one more example.
    It works with your example, but you will have to adapt the code for your real environment.
    This code supports only the operators: =, !=, <, >
    This code supports only numeric values without decimal-point.
    Edited by: hm on 19.10.2010 22:46

  • Multiple occurence not working for extended idocs

    hai friends
    iam doing file to idoc senario in that multiple occurence is not working for Z segments.
    it is extented idoc .
    in taht multilpe segments are not creating only one segment is creating
    what is the problem
    pls help me
    with regards
    srikanth vipparla

    Hi Srikanth,
    You should map the node of the target side(the one which you want to occur multple times) to the node of the source side based upon which the target side node has to occur multiple times. For example lets say our source and target side structures are like this:
    <Source>
                  <Element1>
                  <Element2>
                  <Element3>
    </Source>
    <Target>
                  <Element1>
                  <Element2>
                  <Element3>
    </Target>
    Now if you want Target to occur n times if  Source node occurs n times, you should map Target node to the Source node. Even in case you want that Element1 of target side should occur as many times as many times you have Element1 of Source side, you should do the same.
    Thanks and Regards,
    Sanjeev.
    PS: Reward points if helpful.

  • Target Vs Acual Cost Comparison for multiple process orders

    Dear SAPians,
    I want to take a report for target vs actual cost for all process orders and product cost collectors created in a particular period. I have checked the standard report KKBC_ORD that serve my purpose but for a single order. I want the same report for multiple process orders and product cost collectors.
    Is there any standard report or should I create a report painter report. I have tried to create a report painter report based on library 7KO, but target cost was not showing for selected order.
    Kindly suggest.
    Shirazi

    Target Costs are available in library 601 for internal orders (and can be used for process/production orders).
    Regards,
    Adrian

  • Single hierarchy for multiple target systems

    Hi,
    I have a version named "Account" with a hierarchy named as "Acc2013".
    the hierarchy "Acc2013" is same across Oracle EBS, Oracle Fusion GL, and HFM.
    how can i assign multiple node types to the same hierarchy so that i just need to maintain one hierarchy (this case account hierarchy) and select the properties pertaining to each target system?
    i.e. i select the Oracle GL from the drop down and give the details for the Oracle GL then i select the HFM category from the drop down and provide the HFM related properties.
    the reason why i am asking is, if i dont give the node type, all the unnecessary properties are showing up for other type of hierarchies. for e.g. there is another hierarhcy named cost center there its showing the account related properties.
    to summarize, how i can utilize a single hierarchy to be used for different target systems? Appreciate your help. do i need to create different version and hierarchy for different types of target systems?

    I'm late to respond to this, but I always preach to customers that it is critical for DRM to act as an enterprise view. This isn't a "System A" hierarchy, or a "System B" hierarchy, but rather it's an asset that is shared by both systems, and therefore attributes for both systems are valid. Since node types provide the ability to hide properties, many interesting options present themselves, not all of which lead to a good outcome in the longer term. If a user doesn't ever want to see properties for a particular system, it would be better to just remove their access to that property category in many cases. (They may already have read only access but they object to "being bothered" with seeing those properties.)
    I've seen many DRM implementations head down the other path and end up with duplicate maintenance requirements, configuration challenges, or even having to do major reengineering efforts to transition DRM from a Finance department tool into an enterprise use case feeding a data warehouse. A current customer of mine used a scheme where a checkbox on each property category would make the properties disappear if unchecked...this worked great with a handful of node types, but unfortunately the number of node types needed to support all of these property category combinations was bound by factorial math principles. Consequently the maintenance for this solution went from unweildy to unmanageable as more "non-HFM" data was added to DRM.
    DRM implementations should be guided by governance principles and maintenance business rules, rather than than how things appear in DRM. It's how they appear when published that is of primary importance. I think the new features related to Data Governance will help greatly in this regard. Users that are overwhelmed by the DRM UI can easily be limited to the attributes that are relevant to their specific workflows, and only the "Power users" will see everything.

  • Oracle Portal Virtual Host Enhacement for Multiple Virtual Hosts

    I open the TAR Number: 4326752.996
    The TAR is related to " REQUEST ASSISTANCE FOR MULTIPLE VIRTUAL HOSTS AND MULTIPLE PAGE GROUPS CONFIG. "
    This is the Scenario: We Have Oracle Portal installed in a single Box. yes I know I know... but Not everybody is Yahoo or Google for Clusters and all the good stuff, we just want our website managed by Oracle Portal since all our ERP is running Oracle Database. Anyway. 1 Box running Oracle Portal Infrastructure and MidTier.
    It turns out that our previous configuration we have the LAMP Solution with PHP, Apache with Virtual Servers configuration very trivial for a regular web server however we have about 6 Virtual domains.
    For example:
    www.abc.com
    www.def.com
    www.ghi.com
    www.jkl.com
    www.mno.com
    www.pqr.com
    We also like to post all our Intranet Information in this great Portal:
    http://intranet.com
    Where intranet.com is the same server but setup in our Internal DNS without be a Real Internet Register Domain.
    So bottom line we start doing great with Install our single box install, later [GRRRRRR does not come by default in port 80 GRRRRRR, ok need to move and setup the virtual host to resolve our main External website www.abc.com ]
    For starters ok it worked we have our main website running Oracle Portal.
    Now is time to go to the step number 2.
    Setup another Page Group in Portal to be the Page_Group_INTERNAL.
    I figure if Apache can setup Virtual Hosts pointing to Independent parts of the File System without be shared. I was expecting some kind of custom configuration where I can setup httpd.conf to point to some specific PageGroups to make sure
    www.abc.com => Page_Group_External
    never share information with:
    intranet.com => Page_Gorup_Internal
    My TAR was very quick closed with the Argument that is not what It supposed to do.
    Since a virtual host is a common thing to do on Linux and Apache, I wonder if You guys could list this as one of the default features to have multiple virtual domains assosiated with Page Groups that they never talk or share Resources I think that would be really great.
    In the mean time I guess we have no option but to put a password for every internal page or take the risk of share our Information to the Internet. Perhaps designate another box with Oracle Portal but In that case Is not really cost/bennefit to use a killer technology for our external site since we just have no more than 30 pages.
    Anyway just figure drop you guys a note any advise will be really appreciated.
    Best Regards Dino.

    Hi Martin,
    1. To change the target URL of KM resources you can to the following:
    Access the URL Generation Service Configuration by navigating to:
    System Administration -> System Configuration -> Knowledge Management -> Configuration
    Content Management -> Global Services -> URL Generator Service
    Change the Host property to "portal.company.com".
    2. You change the Port by opening the Visual Administrator and going to : Dispatcher -> Services -> HTTP Provider
    Change there the "Ports" entry from (Port:50000,Type:http)to (Port:80,Type:http). Then go on "Save".
    3. To remove the "/irj" from the portal URL you can create a index.jsp with the following content, and save it in the J2EE Documentation folder:
    <Drive>:\usr\sap\<SAPSID>\JC<J2EE_instance_number>\j2ee\cluster\server0\apps\sap.com\com.sap.engine.docs.examples\servlet_jsp\_default\root
    <%
    //Send the redirect using server redirection (not client script)
    //This will also send the HTTP GET parameters
    String queryString = request.getQueryString() ;
    if (queryString==null ) {
    response.sendRedirect
    ("irj/servlet/prt/portal/prtroot/com.sap.portal.navigation.portallauncher.default") ;
    } else {//redirect with HTTP GET parameters
    response.sendRedirect
    ("irj/servlet/prt/portal/prtroot/com.sap.portal.navigation.portallauncher.default?" + queryString) ;
    %>
    Hope this helps,
    Robert

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

  • BO xi 3.1 u2013 schedule a template for multiple reports with different column

    Hi,
    I need to migrate the existing reports from SQL Server Reporting Services to BO, and the column order in the report is very important to the clients since clients have existing code to ingest these reports into their database. Now I want to schedule a single template with different parameters for all reports in BO, or create a single template with lot of parameters for all reports. My question is how I might use one template to create multiple reports with different column orders in the reports?
    For example, client A has the following column order in their report: firstName, LastName, DateBirth, SSN. Client B has the following column order in their report: SSN, DateBirth, LastName, FirstName. Can I use one template to create these multiple reports?
    Thanks!

    Hi,
    The only approach I can think of is to create a template report which uses variables
    For each column you would need to variable
    v_columnAName and v_columnAValue
    v_columnAName would have a if statement in it
    =if([client]="clientA" or [client]="clientC";NameOf([firstName]);if([client]="clientB";NameOf([SSN]);NameOf([lastName]));
    v_columnA would have a if statement in it
    =if([client]="clientA" or [client]="clientC";[firstName];if([client]="clientB";[SSN],[lastName]));
    This would only work when you had a small set of clients.
    This might be more managable if it was done in the universe
    Regards
    Alan

  • One search help for multiple select-options in webdynpro abap

    Hi,
    I need a way to use one search help for multiple select-options fields. My scenario is :
    I have a table for keeping different organizational units' values of different systems. I have pasted some sample data from this table at the end of this mail. On the screen I want to have 1 select-options filed for werks, and 1 select-options filed for vkorg. (In fact I will have more org. unit fields...) In the beginning of my application the user will select sid.
    If the user selects ADS as SID, when he opens search-help for the first org. unit (werks), he will see the records with SID: ADS, VARBL = $WERKS, LANGU = SY-LANGU.
    If the user selects AGT as SID, when he opens search-help for the second org. unit (vkorg), he will see the records with SID: AGT, VARBL = $VKORG, LANGU = SY-LANGU.
    I have created a search-help taking SIDD, VARBL and LANGU as import parameters; used field mapping and bound this search help to my table. I have created 2 context nodes : org1 and org2 having attributes SID, VARBL, VALUE, LANGU .
    I have assigned related SID, VARBL and Langu values to these attributes at runtime as I needed. That way, if I use input field and reference to the related context attributes org1-value and org2-value2 accordingly, search help works well as I want.
    However, when I use select-options field , I can not bind the field to the context data. I can give reference only to ddic structure. Is there any way to reference to a context attribute? I searched for this in SDN, but could find nothing.
    I think I won't be able to use this way. What do you say?
    As I read from forums maybe using OVS help will be suitable for me. But I have to use one search-help for all select-options fields. Do you know how I can determine the active select-options field and pass its name (for instance "werks" ) as parameter to this OVS search help. (Also I'll pass SID and LANGU.)
    MY TABLE (ZBYYT080) CONTENTS:
    SID     VARBL     VALUE     LANGU     VTEXT
    ADS     $WERKS     1     T     Werk 0001
    ADS     $WERKS     11     T     OZYAS  GIDA URETIM YERI
    ADS     $WERKS     5501     T     BOYA GEBZE FABRİKASI
    ADS     $WERKS     5502     T     BOYA CIGLI FABRİKASI
    AGT     $WERKS     2301     T     KAMLI DAMIZLIK
    AGT     $WERKS     9601     T     PANAR DENIZ URETIM YERI
    ADS     $VKORG     22     T     AA KİMYASALLAR
    ADS     $VKORG     8001     T     İINSAAT BOYALARI
    AGT     $VKORG     6500     T     DAMk St.Org
    AGT     $VKORG     5400     T     PANAR St.Org.
    I wish I'm clear enough..
    I will be gald if someone answers me as soon as possible...
    Thanks İn advance..
    MERAL

    Hi,
    Your ques is how to refer to a DDIC search help to refer to selection screen parameter ?
    Am I right ?
    If Yes, then in the interface IF_WD_SELECT_OPTIONS
    method ADD_SELECTION_FIELD, ADD_PARAMETER_FIELD etc
    have importing param like I_VALUE_HELP_TYPE and  I_VALUE_HELP_ID, I_VALUE_HELP_MODE, I_VALUE_HELP_STRUCTURE
    etc which may help you to link your create DDIC Search help to selection screen params.
    this is just a clue from my side. I haven't tried it myself.
    You can go to the where used list of this method and find some sample implementations which use these params.
    Hope this helps.
    Regards
    Manas Dua

Maybe you are looking for

  • Subcontractor and supplier material

    i want to know where is the particular material allocate to which vendor for example there are two more vendors ,we provide contract to any of one  vendors i want to know curently which vendor has that material ifor raw material which  supplier has t

  • Sign XML document without KeyPairGenerator

    Hi everyone -----> System.out.println("HEEEELP!"); I have a problem for signing and validating an XML document, using the Apache toolkit and JWSDP. Example : XMLSignature signature = fac.unmarshalXMLSignature(valContext); boolean coreValidity = signa

  • Multiple cursors for one plot

    Hi everybody, I'm trying to put multiple plots on my XYGraph. I need then that for instance cursor1=f(cursor0). Is it possible ? If it's not what are the alternatives ? Best regards. MartinO. Solved! Go to Solution.

  • Javascript can not be activated (ff 3.6.22 on mac os 10,4.11).

    Box for javascript checked in preferences. Javascript does not work on any websites. I have to use safari or flock, when javascript is used.

  • We keep getting a message that the ipod cannot allocate memory- help

    We are having trouble with our ipod touch.  It keeps telling us that it cannot allocate memory whenever we try to go on the internet or use apps.  We have 2.3,gb of storage avalible.  Any ideas?