Filtering out MATMAS IDoc based on a condition

Hi All,
       We are distributing a Material Master IDoc (Message Type MATMAS / IDoc Type MATMAS05) from an ECC 6.0 (WebAS 700) system to an external Non-SAP system via SAP XI.
       Now our requirement is that the users will maintain a Z-table with all the SAP plants that are relevant for the external system. They can add or delete plants from this table in the future
       If the MATMAS Idoc is created/extended for a plant which is not in the Z-Table then it should not get distributed.
E.g. If MATMAS IDoc contains plant 5000 and 5000 is not in the Z-Table then the Idoc should not even be created
We Tried a lot of enhancements: -
SMOD Enhancement - MGV00001
Enhancement Spot - ES_SAPLMV01 at different call up points
But none of them give the required exact result.
If we implement the enhancement spot inside the function module MASTERIDOC_CREATE_MATMAS, we get a message "1 Master IDoc created, 0 Communication IDocs created". So something is getting created and that's incomplete anyway.
So I am not sure how reliable this is
<b>One last approach I have is</b>: -
1) Send the IDoc to XI (without filtering)
2) Let XI look at the Plant code and compare with the Z-Table in ECC (via a Z-RFC function module) and then decide whether to send the IDoc or not send it to external system
Please let me know if my approch is correct or I am missing something here
Thanks and Regards,
Aditya

Hi Aditya,
If the Communication Idoc is not created it means that the IDOC is not sent out of the system. The Master Idoc creation does not mean the Idoc is sent to the XI adapter.
The purpose of Restricting at the Plant level will be satisfied if you delete the Idoc data with in the function module MASTERIDOC_CREATE_MATMAS.
It will work. Consequently you can add an additional check in XI to do this check, but this will increase the number of connections made to R3.
Hope it helps.
Thanks,

Similar Messages

  • Create a matmas idoc based on PIR information

    Hello friends,
    can you please help me on the following points please :-) ?
    I need to create matmas idocs and these idocs should be sent on a web portal identified on our SAP system as a logical system. The vendors will have access only to the materials they supply. For this reason, I need to send in the matmas the GLN code corresponding to the vendor for which we have created a purchase information record. This way, on the web portal the display of matmas information will be organised according to GLN codes.
    Question :
    how can we create the MATMAS idocs according to purchase information records? I mean how can I create matmas idocs selecting the materials supplied by specific vendors???
    is there any standard way to do it on SAP? or has it got to be done a specific way. and if so, do you have any idea on how to do it?
    Thanks in advance for your very precious help,
    Kind regards,
    Karenn

    are you thinking about manual creation in BD10, or something automatic?
    BD10 has the standard F4 material search help.
    If you need to do it regular and manually, then you may consider creation of a new included search help where you can search based on info records.

  • How to create multiple idocs based on complex condition

    HI Users,
    my scenario is jms(xml file) to idoc. for each file have multiple records for each record i need to create multiple idocs.
    source structure:
    <lineitem>
    <student sid="cid">456</student>
    <hreference>
    <reference rtype="number">123</reference>
    </hreference>
    <hreference>
    <reference rtype="number">789</reference>
    </hreference>
    <hreference>
    <reference rtype="char">147</reference>
    </hreference>
    now condition is One input message must create only one output message for each unique  rtype="number" and sid="cid" combination.
    for example
    1. rtype="number" and sid="cid" the value combination means 123456 for this one idoc
    2.  rtype="number" and sid="cid" the value combination means 789456 for this one idoc
    --> the below file shows with out sid="cid"
    <lineitem>
    <student sid="abc">456</student>
    <hreference>
    <reference rtype="number">123</reference>
    </hreference>
    <hreference>
    <reference rtype="number">789</reference>
    </hreference>
    <hreference>
    <reference rtype="number">147</reference>
    </hreference>
    in this case we have to consider only rtype="number" so here we need to create  3 idocs.
    Could anyone help me in this regard.
    Thanks in advance

    Hi Swathip,
    Change the occurence of the IDoc to "unbounded", so that multiple IDocs can get create
    Try with below logic
    If (SID = "CID")
    Then
         If(rtype = "number")
              concat(student,reference ) ---> removeContext ---> Idoc          
    Else
         rtype ---> removeContext ---> Idoc
    If combination of unique  student and reference can occur more than once in the XML, use sort command and splitByValue (Value Change)
    Edited by: chandra shekhar on Jul 3, 2011 12:53 PM

  • Multiple MATMAS IDoc getting created through RBDMIDOC program

    Hello All,
    I am creating MATMAS Idocs by RBDMIDOC proram, but as MATMAS message type is used in multiple distribution models ( i.e. MATAMAS is being sent to multiple partners), its creating multiple IDocs.
    I want my IDoc to get triggered only for a particular partner. How can i acheive this ?
    Searched on SDN but did not found solution.

    As the standard settings, IDOCs will be transmitted to all the Partners which are maintained in WE20 (Partner Configuration).  You can restrict the triggering of IDOC based on some condition using the Business transaction event MGV00100 (Publish & Subscribe).  This event is called from Function module MASTERIDOC_CREATE_MATMAS (Line number 2074).  Documentation of Standard FM SAMPLE_INTERFACE_MGV00100  reads
    * Event rissen by the ALE outbound process for MATMAS.
    * It allows to modify the idoc's control header the idoc data aswell
    * as serialization information created by the standard SAP outbound
    * process.
    * Raising the EXCEPTION ERROR will prevent the IDOC from being
    * submitted to the ALE layer.
    * BE CAREFUL WITH ANY CHANGES TO IDOC_CONTROL. IT MAY EFFECT YOUR WHOLE
    * ALE-SCENARIO
    You have to copy the Standard FM SAMPLE_INTERFACE_MGV00100 to a Z function module and assign it using transaction code FIBF.  Search SCN to get more details about configuring Business transaction events using FIBF.

  • 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

  • Multiple Idocs creation based on source conditions

    Dear All,
    I have to create multiple idocs from the source idoc based on the line litems ie if my source Idocs has 5 line items so 5 different idocs to be generated at target.
    I am able to process upto this stage.
    Now my requirement is that target Idocs is to be generated based on different plants available in the source idoc line items. I need to trigger a single idoc for the line items having same plant.
    S.No   Line Item No  Plant
    1         00010            8200
    2.        00020            7800
    3.        00030            7800
    4.        00040            8200
    5.        00050            2100
    So, for the above case total 3 Idocs needs to be generated at the target.
    Kindly suggest me how the mapping is to be done which can filter out the plants at line items and creates the no of target idocs.
    Regards,
    NJ

    just a samll pointer...
    you can use
    plant>sort>splitbyvalue(valuechange)->collapse context ..
    this will create the plant Queue as
    2100
    7800
    8200
    now u can generate number of idocs based on this
    Edited by: Tarang Shah on Mar 30, 2009 3:02 PM

  • How to split the IDOCS based on document number change whit out BPM

    Hi all,
    Thanks,for giving the responce..
    Scenario:File to IDoc.
    Problum1 : How to Split the IDocs based on document number change in the source file with out BPM.My file contains document numbers like
    20000092
    20000092
    20000092
    50000050
    50000050
    50000065
    I want 3 IDocs in target system.i.e 1 for 20000092,20000092,20000092
                                                       2 for 50000050,50000050
                                                       3 for 5000006
    By using external definations i am getting 6 IDOCs insted of 3.
    Problum 2:Is there any chnges/modifications in Directory when we are using external definations.
    Could u plz provide me the step by step process(Repository/Directory) with using of external definations.
    Thanks in advance.
    Regards,
    KP

    HI,
    for this no need of BPM.
    You can think of Idoc bundling concept to acheive this-just you need to do the external definition to change the idoc occurence
    /people/michal.krawczyk2/blog/2005/12/04/xi-idoc-bundling--the-trick-with-the-occurance-change
    to achieve for each document no, one idoc, you can write small user defined function in the mapping with context handling you an achieve this.
    For this e.g
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/6bd6f69a-0701-0010-a88b-adbb6ee89b34
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/877c0d53-0801-0010-3bb0-e38d5ecd352c
    Regards,
    Moorthy

  • JDBC to IDOC Scenario - select data in jdbc based on multiple conditions

    Hello
         I have a JDBC to IDOC Scenario. I have to select the records in JDBC based on different conditions each time. For example I have to select based on company code '1000' and Employee claasification 'E1' and date range. After I post these records in SAP again I want to select other records for some other company code '2000' and different business area and different dates. Basically I want to extract data multiple times based on different conditions.
    Hiow do I achieve this?
    Another question is in the JDBC to IDOC scenario since the sender adapter is JDBC and the sender adapter polls depending on the duration of time ( say 60 secs ) in the adapter once after I extract the data based on a condition how do I control in such a way that the same data is not extracted again.
    Thanks
    Naga

    Hi Naga,
    I have to select the records in JDBC based on different conditions each time. For example I have to select based on company code '1000' and Employee claasification 'E1' and date range. After I post these records in SAP again I want to select other records for some other company code '2000' and different business area and different dates. Basically I want to extract data multiple times based on different conditions.
    -->
    Such requirements cant be handle through select query of the sender...but you can handle this in the message mapping area.....you can fire a select query in the database to pick up records in a batch of 10K (do not keep any condition on this except for sorting). After the records come into PI you can send the message to your target based on the unique combination of "Company code+ Employee clasification + date range" handling this in the message mapping.
    Another question is in the JDBC to IDOC scenario since the sender adapter is JDBC and the sender adapter polls depending on the duration of time ( say 60 secs ) in the adapter once after I extract the data based on a condition how do I control in such a way that the same data is not extracted again.
    You can use the N--> C logic
    The data records that you pick have a corresponding control table i assume. There should be a field STATUS where the initial status of record should be N.
    After you pick the records this status should be made C so that only those records present in the database with status = N are picked up.
    Mention the condition Status = N in the select query.
    Thanks
    Dhwani

  • Single iDOc to multiple files based on a condition

    Hi Friends
    need your help in one scenario which is something like this:
    there is one iDOC as the sender and this iDOC has to be mapped to files based on a condition means let us say if there is a particular field "R" in iDOC(WPDBBYY01) than it should go and create the file "ABC"
    and if the particlar field is P or G or M than it should create another 2 files named "XYZ" and "WUV" .
    Please guide me how can i put this condition ?
    Any help would be rewarded with points
    Thanks

    Have a single receiver and 2 inbound interfaces.
    So you will have 2 different mappings. In the first mappng source is IDOC and the target is file ABC.
    In the second mappping the source is IDOC and the target is 2 files XYZ and WUV.
    In Interface determination, add both the inbound interfaces and put the condition for each interface.
    Regards,
    Jaishankar

  • Grey out a particular row in ALV based on some condition.

    Hi All,
    How can we grey out the particular row in ALV based on some condition( I am using the function modules and not OOPS).
    Regards
    Ramesh.

    Hello Ramesh
    In this case you need to add a specific field to your structure:
    TYPES: BEGIN OF ty_s_outtab.
    INLCUDE TYPE <my table or structure>.
    TYPES: CELLTAB   TYPE lvc_t_styl.  " name is arbitrary but this one is most frequently used
    TYPES: END OF ty_s_outtab.
    DATA: gt_outtab  TYPE STANDARD TABLE OF ty_s_outtab
                                 WITH DEFAULT KEY.
    You can use the fieldcatalog to make an entire column non-editable (LVC_S_FCAT-EDIT = ' ' ).
    However, in case of rows you need to inactivate all cells of this row. For sample coding please refer to thread:
    How to conditionally set ALV field as hotspot
    Regards
      Uwe

  • Condition for Inbound MATMAS Idoc

    Hi,
    Today we are receiving Idocs with Material Master data. IF the Material does not exist in SAP, it is created, otherwise, it is updated.
    Is there any way of only create the Material and if it does exist, do nothing? Do I have to copy FM IDOC_INPUT_MATMAS01 and do this myself or there is a way of achieving this by Customizing?
    Any help would be appreciated.
    Thanks  & Regards,
    Ernesto.

    Try with Business Transaction event MGV00200.  You Can refer to the Wiki post [Business Transaction Events for Filtering Outbound Master IDOCs |http://wiki.sdn.sap.com/wiki/display/ABAP/BusinessTransactionEventsforFilteringOutboundMaster+IDOCs] which is related to Outbound Processing. You can follow the same steps for implementing the BTE mentioned above.  In the steps mentioned, while you creating the Function module for BTE, you can include the required validations and return SY-SUBRC = 1 if processing is not required for the idoc.

  • Unable to filter a formula field based on two conditions

    hi,
    I have a report with 3 subreports in it. When i drill down onto first subreport i am getting correct records in details based on selection criteria but when i am unable to populate the same record count in summary.
    For example
    On summary i see : 60 when i drill down i see 20 records which is correct but not reflecting onto summary report
    the details selection criteria is based on two  fields where field1>=1 and field2= "Text"It is coming out good (20 records) but in summary i am unable to populate this based on same selection criteria
    The main issue i am facing was if i apply a filter on summary selection criteria all the subreport counts are getting affected. Is there a way i can apply filters only one one field
    Please suggest
    Thanks!
    Lucky

    Thanks! for the prompt response Abhilash
    I got part of what you told me. Yes i am calculating the counts in the summary report.
    Basically here is the selection criteria: i need to filter the records based on two conditions. One is x.field1= "Admin" and x.field2=act_pct>=1
    For example:
    Admin Returns         50  but when i dig into details it showing as 20 records ( based on selection criteira above)
    when coming back to summary . 50 what ever is returing here is based on a formula ( if x.field1="admin" then 1 else 0) ..in addition to this i need to filter that by x.field2>=1 which is not taking it     
    Is there any syntax to do this
    If i apply a filter on this particular 50 record its bee applying for whole summary report ...
    And from what you said :
    Why don't you create the summary in the Subreport and maybe use shared variables to bring it back to the Main Report?
    i did not get this
    Please suggest
    Lucky

  • VT02N - do PGI and Invoice for certain deliveries either based on certain conditions

    Hi Friends ,
    We are using VT04 for creating shipments . While shipment completion stage in VT02N   an activity profile has been maintained  which does both the Goods issue and Invoice.
    We have a business requirement , PGI and Invoice should be created only for specific set of deliveries based on certain conditions.
    Is there any standard way to do this or by using user exits.
    Please guide.
    Thanks,
    Nileshsa.

    what about adding a check in userexit RV60AFZZ, when the condition is not met during invoice creation, error out and disable the creation of the invoice document?

  • Need help on filtering out one record from a report and open in new page

    Hi I am new and embarrassed to write in the forum asking silly questions. Thing is I am learning all from scratch without help from anyone. I have created a database (have previous knowledge only from Access) and have managed to create a beautiful report from a search filter. This report lines up several records matching what I needed. Now, I want to make the whole report with hyperlinks to a detailed page on each of the records in the report. I have tried using the feature where one can make one column hyperlinked and redirect to a new page, where I am getting all the records again - instead of only getting the record I am clicking on. I have looked and looked in the forums without finding solution and I have tested and tried various methods without luck. I am suspecting that I need some sort of knowledge on how to write a select query with where conditions that can apply to filtering out a record from one report to get another detailed on only one object (i.e. record). :/ Stupid or what?

    Hrefna.
    What you need to look into is two things:
    1) The link you defined, needs to set additional attributes for the target page. In the "Column Link" box, you have set the link to "Page in this Application" and followed by the page number (let's say, Page 10). Below that, you should set an Item to an item on you target page (let's call that P10_PRODUCT_ID). This item should be the primary key of your detail table (on the targe page). You can select this item from the popup list. The Value of the item should be picked from a popup list as well, being the value from the record you clicked on. This should then transfer your selected item to your page. The URL will then have something like P10_PRODUCT_ID:5 at the end.
    2) On the target page, 10, you must change the query slightly, so that it adds a WHERE clause:
    WHERE PRODUCT_ID = :P10_PRODUCT_ID
    Now, you should be set.
    Hope this helps.
    Borkur

  • FILE  to  IDOC  SCENARIO   NEED  MANDATORY FIELDS IN  MATMAS IDOC

    Hi
       I'm  learning a scenario like File to Idoc  which is i need some what are the mandatory fields for  creting the message mapping.. between source file and MATMAS IDOC...  because it was showing several fields.
    is there any way to find out the  fields we need to map compulsory...  for sending IDOC successfully.
    Thanks
    Babu

    Hi Babu !
    Log into the R/3 system, transaction WE60, enter the idoc type MATMAS01 or 02, 03, 04, then press F8 or go to Documentation menu, HTML Format.
    It will display a document, telling you which fields are optional and which mandatory.
    Regards,
    Matias
    PS: please award points if helpful.

Maybe you are looking for

  • How do I use Contains clause to find an XML value within a CLOB

    Hello: ( I have also posted this question on the PL/SQL forum )... I have a table with a CLOB column ( adt_xml_desc). Within it there is a value of "<EVENT><PINREQUEST TYPE='1'> ......... I am trying to query the row with the following sql : select *

  • Ipad mini incoming messages

    My iPad mini suddenly stopped receiving incoming e-mail messages to my yahoo inbox this afternoon.  I've tried turning it off for a decent amount of time and turning it back on, and that does not fix the problem.  Other mailboxes seem to update and p

  • PLZZZ Help me out in this code

    hi friends.. Problem in this code is trial of accessing a value that dsnt exist,i.e., words[i+1] . This throws an ArrayOutOfBoundException as it is supposed to. But i nyhow want to access words[i+1] ,may it be null. How do i do that? PLZZ suggest me

  • Keychain fix?

    Anyone else have this problem? After downloading and installing the recent updates, Safari does not remember any of my logins. I opened up keychain and they are all there, but how do I get Safari to look at them?

  • New Camera so why won't LR import?

    I've had LR 4 and use it with my Nikon D90. I just upgraded to a Nikon D7100 but LR only imported a few. Do I need to upgrade my LR?