Separate IDocs based on condition

My scenario is XML file to IDoc. In my XML file I have BELNR which will change often.
Whenever a new BELNR occurs a separate IDoc needs to be created.
For example:
If I get BELNR like following:
100100
100100
Then only 1 IDoc needs to created...
100100
100101
Then 2 IDocs needs to created in target side.
How do I get this in mapping...

BELNR - removecontexts - spltbyvalue(valuechanged) - collapsecontexts - IDOC
Assuming that the BELNR come sorted.

Similar Messages

  • Regarding Suppressing the Idoc based on Condition

    Hi All,
    Its File to Idoc one, Here is the logic,
    If Status code = X1 or AB then only create the Idoc AND also create the one one Idoc for each and every line item
    If we have 2 line items from text file, we have to create 2 idocs in ECC.
    We setup in the following way....
    To create the Multiple Idocs for multiple Line items, i changed the IDOC segment Occurence to 0-9999 and Idocs are getting posting correctly.
    The thing is if the status code is either X1 or AB then it is getting creating idocs as per the logic. If the status code is not either one means it is failing in XI MONI.
    please advice me i shld not see the failed message in MONI
    Regards
    Vamsi

    Hi Vamsi,
    If you donot want to generate the IDOC when the Status Code is not X1 or AB, either use create function as mentioned by Raj or also craete a dummy receiver in ID and use conditions in receiver determination and route the data as per the status code.
    If Status Code = X1 or AB                       receiver= idoc
    If Status Code != X1 or AB                      receiver= dummy receiver
    I hope this is helpful.
    Regards,
    Sarvesh Desai

  • How to create additional Line in file based on condition available as part of ZINVOIC02 Idoc segment

    Scenario Details:
    Receiving Zinvoic02 Idoc in PI. Idoc to file translation creates comma separated file with .csv extn
    The logic was kept in such a way that how many E1EDP01 (items) are available in IDoc that many no of records will be created in csv file.
    The file logic for some the fields is as below:
    No of records
    InvNumber
    InvDate
    CusNumber
    LineitemDesc
    Tax1Type
    Tax1%
    for 1st E1EDP01
    E1EDK01-BELNR
    E1EDK03-DATUM
    E1EDK01-PARTN
    Populate when E1EDP04/MSKWZ=O2 or O4 with E1EDP19/KTEXT
    Hardcode when E1EDP04/MSKWZ=O2 or O4
    Sum all E1EDP04 /MSATZ when E1EDP04/MSKWZ=O2 or O4
    for 2nd E1EDP01
    E1EDK01-BELNR
    E1EDK01-DATUM
    E1EDK01-PARTN
    same as above
    same as above
    same as above
    for 3rd E1EDP01
    E1EDK01-BELNR
    E1EDK03-DATUM
    E1EDK01-PARTN
    same as above
    same as above
    same as above
    Additional Line to be created when one or more of E1EDP01 is having E1EDP04/MSKWZ = O3
    same as above
    same as above
    same as above
    Hardcode "REIM for USE TAX"
    Hardcode ""
    Hardcode ""
    Now we have got addition requirement to add a new lineitem when tax code is equal to O3 for any of the E1EDP01.
    Is it possible to create additional lineitem based on condition. If yes, please share what should be the approach.
    How we can create the additional lineitem?
    Currently we are using E1EDP01 to do context handling.
    The target structure is :
    MT_FILE
         INVOICE     0..unbounded
              InvNumber     0..1
              InvDate          0..1
              CusNumber     0..1
              LineitemDesc     0..1
              Tax1Type          0..1
              Tax1%               0..1

    Hello,
    Please add one extra field in the data structure of the target mapping and let its occurrence be 0..unbounded under the root node 'MT_ADP_Invoice'.
    Apply the condition, if tax code MSKWZ (with its context changed to E1EDP01) equalsS to '03', then map it to the newly created target field whose occurrence is 0..unbounded.
    This will then create an additional field which is your requirement.
    The above is one way.
    But if you want to have the same target field name as ADP_File appended for tax field being '03'.
    Then in that case you can you two message mapping for one common operational mapping / interface.
    In the first message mapping you need to have one target data structure created with the source data structure remaining the same as the one shown by you in scrn shot. Now this target data structure will be similar to the source, except that you need to add one more field at the end(name different from other fields) in target (whose occurrence should be 0..unbounded), and it needs to be mapped to E1EDP01 provided the tax code field MSKWZ(its context changed to E1EDP01) equalsS to constant '03'.
    In the second message mapping you need to map the target structure of previous message mapping to the actual required structure. The newly added field should be mapped to ADP_File of your final target structure.
    This will then create the same structure as required.
    Note : Please change the occurence of ADP_File to 0..unbounded.
    Regards,
    Souvik

  • Multiple IDOCs based on multiple fields in File to IDOC mapping

    Hello Experts,
         I have a requirement to create multiple IDOCs based on multiple fields.
         Earlier my requirement is to create IDOCs based on ShipID (i.e., for every ShipID new IDOC...I achieved this).
         But now the requirement was to create IDOC based on two more fields like
    Source:
         ShipID1
         FieldA with value1 
         FieldB with value1
    Target :
         1 IDOC to create
    and If
    Source:
         ShipID1
         FiledA with Value2
         FiledB with Value2
         ShipID1
         FiledA with Value1
         FiledB with Value2
    Target:
         2 IDOCs based on FiledA
    Like wise IDOC should create for every change in FiledA and FieldB.
    If FiledA and FiledB has no changes then create IDOC based on ShipID
    please help me in achieving this as this is an urgent requirement.

    Hi Prasad -
    Just concat all the three fields - shipID1, FieldA and FieldB and
    remove contexts
    split by value (value changed)
    collapse contexts
    This way whenever there is a change in any of the above fields you'll have separate IDOC..

  • How can we trigger an IDOC based on Orders creation.

    Hiii...experts,
                            After searching alot in SDN i am taking this very commonly asked to experts in the hope of a better understanding.
    If i create a sales order means.. i want to trigger a IDOC based on certain Condition on ORDER data .. how can we do this..
    when ever i'm creating a sales order it should be automatically trigger a IDOC , Because when ever sales ordre was created in R/3 system it should be transferred to some destination...
    And pls tell me about the reports that does the job of collecting required data from the sales order and converts it into a IDOC.
    so, how can we trigger an IDOC based on Orders creation..
    pls help.
    Ram.

    Use IDOC_OUTPUT_ORDERS for creating IDOC
    you need to maintain condition records & output type
    <REMOVED BY MODERATOR>
    Edited by: Alvaro Tejada Galindo on Apr 10, 2008 4:18 PM

  • Hide column based on condition on other column in table

    hi,
    am using BIP 10.1.3.2 to generate reports.In the template i need to hide one column based on condition on other.am using SQL query as my data source type.can anybody help me ?

    Use <?if:?> condition in the RTF, but its mainly for the rows not column. You can work around this by handeling in backend. Or take two separate tables, one with the column which you want to hide and another table without that column and before calling that table use IF condition.
    Regards,
    Amit D
    Persistent Systems Ltd.

  • How to blink TreeView Nodes based on condition c#

    suppose i am populating my tree view with data from database and i want to blink those nodes which has a specific data. now guide me with code how can i efficiently blink multiple tree view nodes  based on condition in winform application.

    Hi Mou_kolkata,
    >> anyone can give me small working code for tree node blinking
    Thank Armin for the details about blinking TreeView Nodes.
    For a simple demo to blink TreeView nodes, you could refer the link below:
    # Treeview control - How to make a node blink?
    https://social.msdn.microsoft.com/Forums/en-US/64e7a4d7-3098-4370-990f-390cb3a640a1/treeview-control-how-to-make-a-node-blink
    If you have issues when you blink Treeview nodes, please feel free to post a new thread in this forum, then you would get more help.
    Best Regards,
    Edward
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • How to give color to the display of keyfigure based on condition using exception.

    Dear Friends.
       I am trying to color "BAD3" in exception based on condition but my problem is in exception I can have only formula variable to compare the value, How to assign a value to formula variable in BEx Query designer.
    What I am trying to do is :
       in Query designer :
       I have PO Quantity and Delivered Quantity. 
      if PO Qnantity > Delivered Quantity
        then Delivered Quantity field should be colored as "BAD3" in exception.
    but here proble is in exception
      I have alert level , operator, and  value fields for Delivered Quantity keyfigure ( Under definition tab - Exception is defined on = Delivered Quantity ).
    but for value field I dont have PO Quantity for that I have to supply one formula variable,
    When I created a forumula  and did this way
    FV_PO_QUANTITY = PO_QUANTITY formula editor throws errors. I dont understand How to assign a value of key figure to formula variable and use it in EXceptions.
    Please help me How I can solve my problem
    I will greatly appreciate your any help.
    Thanking you
    Regards
    Naim

    Thank you so much for your replies,
      I did following way and it helped me to solve my issues.
      I created one formula and under formula I use boolean < funtion to compare the values.
    like following way.
    ( 'PO Quantity' > 'Delivered Quantity' ) * ( FV_PO_QNT + PO_QUANTITY')
    here fv_po_qnt is formula variable I supply that variable to exception and since I have the value in it.. it compares with Delievered Quantity value and colored the perticular cell.
    Thanks again for your replies
    Regards
    Naim

  • How to stop workitem complete or how to keep work item in inbox based on conditions even if it completed

    Hi,
    my requirement is to call webdyn pro screen from workflow..
    i am calling webdynpro screen by using FM :CALL_BROWSER from workflow.
    when webdyn pro screen is called user will enter some values . if user closed webdyn pro screen with out entering any values we need show this workitem in his inbox. so that user can again open it and enter values in the webdyn pro screen.
    Please help how to stop work item complete based on conditions.
    Thanks,
    phani

    Hi,
    As per my understanding, this is not a proper approach toy call web dynpro using FM CALL_BROWSER. is the web dynpro screen being called when user clicks on the work item from portal UWL OR from SAP SBWP ?
    if you are calling web dynpro screen from portal UWL when user clicks on work item link, better you achieve it using SWFVISU tcode. in SWFVISU tcode you can maintain which web dynpro. application to call when particualr work item task come in user's inbox. in your web dynpro code, then you can write your buisiness logic when user clicks for example SUBMIT/SAVE button. on action submit/save button you can use FM SAP_WAPI_WORKITEM_COMPLETE to complete the worktiem once the user clicks on final submit/save button. in this way the workitem will get removed from user inbox only upon clicking on submit/save button.
    You can refer below link for web dynpro for workitem:
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/70648e99-4cc1-2c10-879d-9c61003c69d6?QuickLink=index&…

  • Table Control - Input Enabling/Diabling of Rows based on Condition.

    Hi,
    In the TC, I want to Input Enable/Disable the rows based on Conditions. The First row is input enabled always. But the other rows, (2nd onwards) need to be Input Enabled/Disabled based on some conditions. It is possible to make this working. Can you please provide me a suitable solution for this?
    Appreciate Your Help.
    Thanks,
    Kannan

    Hi Kannan...
    If we are talking about "Rows"...
    then identify based on some conditions the row numbers and in PBO...loop at screen with screen name..set thier input properties and modify screen (make them input only)
    If we are taking into consideration "columns"
    There is an internal structure COLS where we can identify column number of screen name ...or we can take except for one particular column..
    if some condition satisfied....
    loop at screen where screen-name <> "Column which is input'.
    Loop at screen...and make other columns display only.
    modify screen
    endif.
    Regards
    Byju

  • Need to send notification to a specific person based on condition

    Please help.
    I need to send notification to a specific person based on condition. When a specific hold is placed on an invoice, send a notification to the Buyer who is referenced on the Purchase Order that is associated with that invoice. It will be an FYI notification.
    I'm looking at APINVHDN AP Hold Maiin Process. I thought possibly adding a notification into the "No" condition after the GET_APPROVER function since there would not be an approver on the invoice since it's on hold.
    Any ideas would be very much appreciated.

    Try the LiveCycle Designer forum.

  • Calling different pages in a single sap script based on conditions?

    Hi All,
             Can anyone please give me an example of how to call different pages in a single sap script based on condition. Eg., i need to call 5 differnet pages from a single sap script based on 5 company codes.
    Please help
    Regards
    Priya

    This approach to make call from SAPscript. Its concept is similar to make call to a subroutine in another program. I would presume you understand how to use USING and CHANGING parameter. =)
    SAPscript -
    /: Perform get_date in program z_at_date
    /:    using &p_year&
    /:    changing &new_date&
    /: endperform.
    program z_at_date -
    form get_date TABLES rec_in  STRUCTURE itcsy
                                    rec_out STRUCTURE itcsy..
    DATA:
       v_year type char10.
    sap script and subroutine uses itcsy structure to transmit parameters
    first parameter is incoming while second parameter is out going
    their function is like an internal table with header line
    all data types between SAPscript and subroutine are string.
    so, you might need additional conversion.
    read incoming parameter with exact name from SAPscript
      READ TABLE rec_in WITH KEY name = 'P_YEAR'.
      IF sy-subrc EQ 0.
        v_year = rec_in-value.
      ENDIF.
    to return value, use the exact name on the second structure
        CONCATENATE v_year v_year INTO v_year.
        READ TABLE rec_out WITH KEY name = 'NEW_DATE'.
        IF sy-subrc EQ 0.
          rec_out-value = v_year.
          MODIFY rec_out TRANSPORTING value WHERE name = 'NEW_DATE'.
        ENDIF.
    endform.
    Hope this helps =)

  • JDBC Inbound to separate IDOCS per Row instead of one single IDOC?

    Hello everyone,
    I'm currently working on the migration of our old B1iSN 8.8 scenarios to B1iSN 9.0.
    The scenario is the following: I have a SQL table with data and a separate control table where I store the date of the last run/data retrieval. My JDBC Inbound is triggered every day and the SQL Statement selects all new data between now and the last run. The process flow only consists of one transformation Atom which builds my custom idoc structure.
    In B1iSN 8.8 I've got one IDOC per row from the resultset. In the B1 9.0 outbound all rows are now withing one single IDOC. How can I trigger that separate IDOCS are created!?
    I've already tried the "Block Size" Setting. When I set it to "1" I get for two datasets two output IDOCS. However all data is in IDOC 1 and the second IDOC is empty. What is wrong here? How can I access the data in the current block? I currently use a "for each" on the normal jdbc resultset rows.
    I'm testing it at the moment with flat file output as our target system is not accessible yet, but I suppose this is not the reason?
    Thanks in advacne for any help.

    Hello André,
    please use a two-step approach with two integration scenarios:
    DB INBOUND -> VOID OUTBOUND
    INTERNAL QUEUE INBOUND -> ECC OUTBOUND
    In step one add a condtion including a for-each loop into your integration flow.
    Within this for-each please hand over for each IDoc you want to create into a second integration step via "Internal queue":
    The second step is triggered x-times via internal queue and does the field mapping into IDoc format.
    Best regards
    Bastian
    P.S.: with this approach, you can keep the block processing setting for DB INBOUND to an higher amount.

  • Splitting Purchase Order Idoc based on qty

    Hi All,
    I am having a requirement wherein i have to insert multiple line items in purchase order idoc  based on quatity .Eg if the line item qty is 3 then the same line item has to be repated for 3 times and purchase order idoc has to created with 3 line items.I am trying to do this User exit EXIT_SAPLEINM_002 which is used Customer Enhancements to Data Segments: Purchasing Document (Outbound ).Can anybody tell me how can i go ahead inserting multiple lineitems in purchase order idoc based on the qty.So, Can anybody know how to handle this scenario? Also, can you please let me know whether is there any standard procedure for handling this scenario
    Thanks in advance
    Regards
    Saravana

    Hi,
    Use t.code ME2M or ME2N , enter account assignment category A & then choose selection parameter WE101 (open goods receipt) and execute.
    Regards,
    Biju K

  • Creating  idocs based on invoice number ocurrences

    Hi ,
    I want  to create idocs based on invoice numbers .
    Lets say i have a file coming in from sender system
    Invoice1 material customer value
    Invoice1 materail1 ..........
    imvoice2 material2.....
    invoice2 material1.....
    invoice1 material3..
    Invoice3. material4....
    So for Invoice1 only one Idoc should be created  similarly for invoice 2 which is ocurring twice in the file
    only 1 idoc  should be created
    Let me know how to achieve this ..  by UDF , or by split by value
    please help
    thnx
    Chirdip

    Hi,
      Change the IDOC occurance to 0-unbounded.Export the xsd change the occurance and import it to external definition.
    Map Like below:
    invoice number--removecontext--sort--splitbyvalue(valuechange)--IDOC
    other fields you need to map like below.
    invoice number--removecontext--sortbykey--SplibyValue(Each)---IDOC fields
    source field----removecontext------
    Regards,
    Prakasu.M

Maybe you are looking for