ABAP Mapping for Large Messages
Hi Folks,
We are exploring different options for dealing with the fact that XI will choke on very large messages/files. One of the options that we are considering is a third party tool that bypasses XI. However, we've just learned that it may be possible to solve the large message problem by using ABAP Mapping, because supposedly, by doing so, one would bypass the large message being converted to XML as it comes into XI. The scenario involves messages coming into XI on their way to SAP R/3. Does the ABAP Mapping option appear to be viable to you experienced folks out there?
Thanks
Nic
Hey
tunneling as per the term is used mainly for IDOC but we use the term bypass to implement the same concept but with other interfaces.
see if u have simple 1-1 mapping then u can do a bypass scenario in which u are not doing anything in IR,u simple do the configurations in ID.
you can not drastically increase the performance just by choosing some specific mapping.mappin is not made for this .
for best performance you can design a bypass JDBC to IDOC scenario(but then you wont be able to do any message mapping.
have a look at the following for bypass scenario
/people/william.li/blog/2006/09/08/how-to-send-any-data-even-binary-through-xi-without-using-the-integration-repository
if u want to do message mapping then design a JDBC to Proxy scenario.
proxy is mainly used to enhance performance and would be the best bet for u i guess
Thanx
Aamir suhail
Message was edited by:
Aamir Suhail
Similar Messages
-
ABAP Mapping for Error handling in Proxy to JDBC
Hi All,
I am working on a proxy to jdbc scenario in which we have to throw validation errors to NWPM(Net Weaver Process Monitor Tool)
I am following the below steps,
step 1 - In message mapping a UDF is created to catch errors and store them in a variable using dynamic configuration
step 2 - writing abap mapping for handling this thrown exception and im reading the dynamic configuration in the abap class and raising exception. The exception format expected is
SAP:Error SOAP:mustUnderstand="" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SAP:Category>XIServer</SAP:Category>
<SAP:Code area="RCVR_DETERMINATION">NO_RECEIVER_CASE_ASYNC</SAP:Code>
<SAP:P1>ZPI_THROW_EXCEPTION</SAP:P1>
<SAP:P2>001</SAP:P2/>
<SAP:P3>Mandatory field is missing[BUKRS] </SAP:P3>
<SAP:AdditionalText />
<SAP:Stack>No receiver could be determined</SAP:Stack>
<SAP:Retry>M</SAP:Retry>
</SAP:Error>
I have written the following ABAP code to achieve this:
method IF_MAPPING~EXECUTE.
DATA l_record type mpp_dynamic.
DATA error type String.
getting dynamic configuration value
filled in by any previous mapping
CALL METHOD DYNAMIC_CONFIGURATION->GET_RECORD
EXPORTING
NAMESPACE = 'http://sap.com/xi/XI/System/ERROR'
NAME = 'ERROR'
RECEIVING
RECORD = l_record.
error = l_record-value.
*raising exception with our message
RAISE EXCEPTION TYPE CX_MAPPING_FAULT
EXPORTING
TEXTID =
PREVIOUS =
ERROR_CODE = '001'
ERROR_TEXT = error .
RAISE EXCEPTION TYPE CX_MAPPING_FAULT
EXPORTING
TEXTID =
PREVIOUS =
ERROR_CODE = '003'
ERROR_TEXT = error .
endmethod.
I am gettign the following message for our code:
SAP:Error SOAP:mustUnderstand="" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SAP:Category>XIServer</SAP:Category>
<SAP:Code area="RCVR_DETERMINATION">NO_RECEIVER_CASE_ASYNC</SAP:Code>
<SAP:P1 />
<SAP:P2 />
<SAP:P3 />
<SAP:P4 />
<SAP:AdditionalText />
<SAP:Stack>No receiver could be determined</SAP:Stack>
<SAP:Retry>M</SAP:Retry>
</SAP:Error>
Could you please help in finding the solution for getting currect error message from ABAP class?
Edited by: SwethaC on Jan 21, 2011 8:18 AMThe error is due to RFC Call fail from PI system to your ECC Application System.
Check your RFC Destination for ECC System type 3 in PI System.
When you are receiving data from ECC System using Proxies & again you are going to ECC System for Validation.
Why you are not doing this validation on ECC System only in your proxy code ?
In your proxy code, it will be much better for performance to check your data there on same system. -
ABAP Mapping :: for multi files
Dear Experts,
We are doing an Idoc to file interface, using ABAP mapping.
This is 1:n mapping i.e receiver message interface is 0..unbounded.
We have achieved the mapping for 1:1. But when I test for multi, i get an error in moni saying
Parsing error after multi mapping.Expected Message<i> instead of Item
Item is the name of the node that has to be created multiple times.
Has anyone done multi mapping in ABAP?? Any idea why this error....may be we are missing something.
Any idea as to how we can progress???
Thanks in advance
Regards
ShobhaHi,
Surely u can use an ABAP mapping for this.
Sounds like your problem is your not using correct output structure for multi mapping.
As with any type of multi mapping your structure should reflect this. Your target payload must thus have the following structure:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1>
<unboundedPayload/>
</ns0:Message1>
</ns0:Messages>
The <unboundedPayload> element in above should of course be replaced with your actual payload - I believe 'Item' in your case, if that is in fact the root node of your actual payload.
Regards,
Daniel -
Adapter Status Error : Error in creating message ID map for JMS message:
Currently in the SAP XI 3.0 JMS Adapter, I am receiving the following error
Error in creating message ID map for JMS message:
ie. Error while processing message 'de8265f6-c864-4479-1137-9bab17b78b3b'; detailed error description: com.sap.aii.adapter.jms.api.channel.filter.MessageFilterException: Error in creating message ID map for JMS message: ID:c3e2d840d8d4d7f14040404040404040c44f8e2213630b01 at com.sap.aii.adapter.jms.core.channel.filter.InboundDuplicateCheckFilter.filter(InboundDuplicateCheckFilter.java:103)
Although I am receivng this error, when I check the details of the message processing, all steps are successful and the message is set to status : DLVD
Audit Log for Message: de8265f6-c864-4479-1137-9bab17b78b3b
Time Stamp Status Description
09.06.2009 13:27:24 Success New JMS message with JMS message ID ID:c3e2d840d8d4d7f14040404040404040c44f8e2213630b01 received. The XI message ID for this message is de8265f6-c864-4479-1137-9bab17b78b3b
09.06.2009 13:27:24 Success JMS message converted to XI message format successfully
09.06.2009 13:27:24 Success RRB: entering RequestResponseBean
09.06.2009 13:27:24 Success RRB: suspending the transaction
09.06.2009 13:27:24 Success RRB: passing through ...
09.06.2009 13:27:24 Success RRB: leaving RequestResponseBean
09.06.2009 13:27:24 Success Transform: using Transform.Class: com.sap.aii.messaging.adapter.Conversion
09.06.2009 13:27:24 Success Transform: transforming the payload ...
09.06.2009 13:27:24 Success Transform: successfully transformed
09.06.2009 13:27:24 Success Application attempting to send an XI message synchronously using connection JMS_http://sap.com/xi/XI/System.
09.06.2009 13:27:24 Success Trying to put the message into the call queue.
09.06.2009 13:27:24 Success Message successfully put into the queue.
09.06.2009 13:27:24 Success The message was successfully retrieved from the call queue.
09.06.2009 13:27:24 Success The message status set to DLNG.
09.06.2009 13:27:25 Success The application sent the message synchronously using connection JMS_http://sap.com/xi/XI/System. Returning to application.
09.06.2009 13:27:25 Success The message was successfully transmitted to endpoint http://sapxia.swets.nl:8000/sap/xi/engine?type=entry using connection JMS_http://sap.com/xi/XI/System.
09.06.2009 13:27:25 Success The message status set to DLVD.
Not sure why this is occurring.......No, not using correlation id.
I was able to resolve the issue on this queue by changing the following setting
Under the PROCESSING tab, under XI SETTINGS
Time period for Duplicate Check for EO(IO) (secs) it was set to 86400
I have changed this to 300 seconds and the adapter has now gone green.
BUT......
That said, I have the exact scenario on another sender JMS channel set to 300 seconds and it exhibits the same issue.
correlation settings:
Set XI message id to = GUID
Set Xi conversation -
Hi,
I am trying to parse a large message (2.7 MB file) in a custom Flat file Disassembler (inherited from the Microsoft.BizTalk.Component.FFDasmComp) this does exactly the same work for FFDasmComp but also promotes the count of disassembled messsages. This
works fine for small messages but for large messages I get this error
There was a failure executing the receive pipeline: "<pipeline name>, <Pipeline assembly>" Source: "Custom FlatFile Disassembler" Receive Port: "ReceivePort7" URI: "<the input file location>" Reason: Cannot access a disposed object.
Object name: 'MessageContext'.
In the event log
what I am doing inside the custom flat file assembly is, I am saving all the disassembled messages in a List<IBaseMessage> and then finally when GetNext() method returns null I am promoting the nRecordCount in the messageContext of all the disassembled
messages. This is where I get the error when trying to promote to the message context.(Cannot access a disposed object, Object name: 'MessageContext'). I think the messagecontext is getting disposed, but it should not as I still hold its reference in
the List<IBaseMEssage);
private long nRecordCount = 0;
private List<IBaseMessage> oDisassembledMessages = new List<IBaseMessage>();
Any idea why this happens ?
Thanks in advance, PLEASE HELP
SuryaHi Surya,
Are you still facing this issue? and are you using Flat File Disassembler in your Receive pipeline?
If yes then set 'RecoverableInterchangeProcessing' to True.
Please have a look in below articles-
BizTalk
Pipeline - Flat File Disassembler Cannot Access a Disposed Object 'DataReader'
biztalk-esb-toolkitflat-file-debatching
BizTalk
Server: List of Errors and Warnings, Causes, and Solutions
This issue can also occur if you are using Large Size message, in this case you will have to optimize your code.
Thanks,
Prashant
Please mark this post accordingly if it answers your query or is helpful. -
Mapping error for larger messages
HI,
My senario is File to File with some conditions ( Conditions are written in UDF )
When i am executing the payload with small size mapping executes correctly .
But when i am executing with larger payload Mapping executes but not taking any conditions in UDF , It executes as one-one mapping.
thanks in advanceHI
This should not be the case... if your UDF is working fine for smaller payload then it should work for larger payload also..
- test mapping by using payload and after that in mapping use display queue wherever you have used UDF and try to to see what is input and what is the output.. and this will give you clear idea about what exactly is going on..
- I guess something wrong with logic which you have used in UDF or is input payload dependent, so try to use display queue to get clear idea about UDF working.,.
Thanks,
Bhupesh -
Abap mapping for content conditions routing in a flat-flat scenario
Dear Experts.
I have a flat-flat file scenario. Based on the content of the input file, I need to route data to the receiver.The source flat file will have several IDOC details.
Assume two fields FIELD1 and FIELD2 in different segments of the IDOC. My requirement is if FIELD1 of an IDOC = "XYZ" and FIELD2 of the same IDOC = "PQR", then this IDOC's details has to be passed to the receiver.
I have tried to implement the above condition at interface determination in graphical mapping.
In the graphical mapping, the problem is:
Assuming there are 3 idocs in the input file.
FIELD1 of IDOC[1] = 'XYZ' and FIELD2 of IDOC[1] = 'PQR'
FIELD1 of IDOC[2] = 'LMN' and FIELD2 of IDOC[2] = 'RST'
FIELD1 of IDOC[3] = 'ABC' and FIELD2 of IDOC[3] = 'DEF' .
Now, if none of the IDOCs in the input file satisfy my requirement,the message mapping should not be called at all. But in my case its failing because FIELD1 of IDOC[1] and FIELD2 of IDOC[3] together are satisfying the condition and hence the message mapping is getting called.
And I need to check this condition IDOC wise. Both the conditions has to be satisfied in the same IDOC.
The question is very similar to the one posted by SHOBHA HB. (Topic:Receiver determination(or Interface determination) and conditional routing )
but, due to complexities in the graphical mapping, we have decided to go for the ABAP mapping instead.
Kindly help, by mentioning the steps I should follow for this interface, the logic basically. I already have paths to some basic ABAP mapping documents from SDN, so, kindly refrain from posting general URLS for definition or history of ABAP mapping.
IF you could guide me on this interface, It would be really helpful.
regards,
giri rajHi,
/people/ravikumar.allampallam/blog/2005/02/10/different-types-of-mapping-in-xi
This document will help you to create ABAP Mapping .
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/3.0/how%20to%20use%20abap-mapping%20in%20xi%203.0.pdf
How to Use ABAP Mapping in Exchange Infrastructure 3.0 (NW2004)
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/5c46ab90-0201-0010-42bd-9d0302591383
SAP Network Blog: How to call XI ABAP Mapping via RFC
/people/ricardoandres.maienza/blog/2007/04/06/how-to-call-xi-abap-mapping-via-rfc
SAP Network Blog: Testing ABAP Mapping
/people/sameer.shadab/blog/2005/09/29/testing-abap-mapping
/people/udo.martens/blog/2006/08/23/comparing-performance-of-mapping-programs
An ad-on
/people/michal.krawczyk2/blog/2006/09/20/xi-abap-mapping-logs--more-standard-better-visibility
Regards -
Access MIME from ABAP Mapping for Attachment
Hi,
I am adding an attachment in ABAP Mapping and sending that message to Ariba System through HTTP Adapter channel.
I am able to send the message successfully and also I can see the attachment in the PI RWB But I am not able to see any
attachment in the Receiver's end along with the message.Ariba is able to receive the message successfully though.
It looks like I need to change MIME Header a bit before sending the message.
I check this link.
XI Attachment and main document MIME sequence
But Its about SOAP Adapter with PayloadSwap Bean. Since HTTP adapter is on ABAP we can not use the Module
Tab of the channel.
I need to know how can I use ABAP Mapping to access the MIME HEADER to change/ check Content Disposition and
other properties.
Thanks,
Vijay
Edited by: tech.info012 on Oct 12, 2010 6:33 PMWhen I tried the 2nd option It is giving me this error in response message. Do you have any idea what problem can cause this.
<SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"
SOAP:mustUnderstand="1">
<SAP:Category>XIAdapterFramework</SAP:Category>
<SAP:Code area="MESSAGE">GENERAL</SAP:Code>
<SAP:P1 />
<SAP:P2 />
<SAP:P3 />
<SAP:P4 />
<SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: Could not queue receive
for message 4cb474bf-00c1-02af-e100-80000aa00d4b(INBOUND). Reason: java.lang.NullPointerException:
</SAP:AdditionalText>
<SAP:Stack />
<SAP:Retry>M</SAP:Retry>
</SAP:Error>
Thanks,
Vijay -
ABAP SM02 for Portal (messages for users)
Hi,
how to implement functionality similar to transaction SM02 from ABAP ?
I mean showing up message(s) for users after they login in and those currently working (it is something more then broadcasting message for currently working users as was described in weblog Brodcast messages to logged on users in Portal(Part1)) .
regards,
MichalHello Michal,
well, you could for example modify the solution in the weblog mentioned in the way, that every user logged on to the portal only sees the message once per session. But i think, there is no way to show the user a popup without having any preliminary user action (i.e. clicking on anything) like it is in SAPGUI ... what other functionality do you think of ? -
i have envelope schema which debatches the messages and delivers to messages box, but if pass 1000 messages it give bottle neck as i am calling web service. How can avoid bottle neck???
any help pleaseSo calling of concurrent web service is the bottle neck.
What u can try out is implementating custom queue to process limited number of web requests at a given time through biztalk say 5 or 10 requests at a time.
Regards
Ritu Raj
When you see answers and helpful posts,
please click Vote As Helpful, Propose As Answer, and/or Mark As Answer -
Using Siebel-OPA connector BO mapping for large amount of data
Hi,
We plan to use the BO mapping approach to get multiple values from OPA to Siebel, which we plan to store as multiple records in Siebel.
1. Is it advisable to do so using BO mapping?
2. Would IO mapping be a better approach, considering the size of data involved?
Thanksnilskil wrote:
Hi,
We plan to use the BO mapping approach to get multiple values from OPA to Siebel, which we plan to store as multiple records in Siebel.
1. Is it advisable to do so using BO mapping?
2. Would IO mapping be a better approach, considering the size of data involved?
ThanksFor passing lots of data between OPA and Siebel I would definitely recommend using an IO mapping. You will find it faster and also, the return IO xml will be easier to deal with.
Cheers
Frank -
ABAP mapping split messages and dynamic filename
Hello,
i have set up a IDOC to file scenario where the IDOC is split into several files, which works fine. In addition to this it is required to set a dynamic filename out of the ABAP mapping for each file. If only one file is created this works already as well but how do you set the dynamic configuration when the messages are split?
Regards,
Andreas
Edited by: Andreas on Feb 26, 2009 9:09 AMyou cannot do dynamic configuration for message splits. The below is from SAP help.
Adapter-Specific Attributes and Multi-Mappings
In multi-mappings, there are multiple message headers with adapter-specific attributes. The mapping API can only access one message header. This has the following consequences depending on whether there are multiple source or target messages:
u25CF 1:n Transformation
If there are multiple target messages, the header for the adapter-specific attributes is copied for each message. This means that you can only create one header for all adapter-specific attributes, and not individual headers.
u25CF n:1 Transformation
This variant is only possible for multi-mappings in integration processes. If there is more than one source message, read-access to the adapter-specific attributes of the various message headers is not possible at runtime.
u25CF m:n Transformation
All afore-mentioned restrictions apply here. Developers can at most write the same adapter-specific attributes for all target messages to the header, without read-access to the attributes of the source messages. m:n transformations are only supported within integration processes.
What i will suggest is to use BPM to have the message split i.e 1:N mapping and then after that have another mapping 1-1 to have the dynamic configuration -
Hello everybody,
for a special mappging I use ABAP mapping -everything fine.
But I need to split the message with ABAP mapping.
Does anybody know if this is possible ?
In the ABAP-class I use the interface IF_MAPPING. This has as a result parameter the parameter RESULT Type XSTRING (no table).
It only works to add to XMLs in 1 XML string, but my result have to be 2 XML files.
Alternatively would it be an idea to use multi message mapping (graphical first) AND then ABAP-mapping for special mappings?
Thanks a lot,
FlorianFlorian,
for multimappings in coded mappings (xslt, java and abap mappings) you'll also create a single stream, but in this case, the stream may have the following format:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1>
<b><enter your first message here></b>
</ns0:Message1>
<ns0:Message2>
<b><enter your second message here></b>
</ns0:Message2>
</ns0:Messages>
where <ns0:MessageX> tags refer to each different target message type.
In the case you have a 1:n split, you'll have only 1 message type, but may have several messages within it.
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1>
<b><My_message id=1></b>
<b></My_message></b>
<b><My_message id=2></b>
<b></My_message></b>
</ns0:Message1>
</ns0:Messages>
Also, remember that, when you define an interface mapping as multimapping (meaning, you set either source, target or both interfaces to multiple messages, your input stream will also contain the <ns0:Messages> and <ns0:MessageX> tags, so you need to treat them in your mapping program.
Regards,
Henrique. -
Performance in XI / PI ABAP mapping class
Hi,
I have to do some ABAP mapping for XI / PI scenarios. First of all number of messages is huge, messages can be very large,
so my question is where to pay special attention because of performance. Is there some blog on net with suggestions? I saw and read lot of ABAP mapping blogs, but I have never found one where is it performance explained.
br
marioHi there.
The performace problem of the ABAP Mappings in XI/PI is not related to the code itself. When coding, just keep in mind alll you have said: "messages are huge, and lot's of messages". This way, you should keep the code as sharp as possible within the class methods you will use.
Now, the real problem in ABAP mapping is ther ABAP mapping itself. Don't forget that PI usually (and ideally) processes the message mappins (or java mappings) in the java stack. If you are creating an ABAP mapping, you are telling PI to send the work to the integration server (ABAP stack), and then retrive the result from it.
If you can, use message mapping or java mapping for best performance. If you cannot, use ABAP mapping but having all this in mind. Hope this helped.
Regards,
Valter Oliveira. -
Setting the content type inside the ABAP mapping.
Hello All,
Can any one help me by telling me how to set the content-type inside ABAP mapping. I have searched a large no of blogs and help.sap.com for the same.
My requirement is I want to change the MIME type of the Main Document in side SXMB_MONI so that can change the content type of Main document which is application\xml by default.
I would appreciate an early response regarding the same.
AbinashHello Raj,
The output of my ABAP mapping is a flat file. So when I try to open the file with content type application/xml in the message monitor it shows the file has some error which is natural. The way to get around this problem is change the content type to application\txt from application\xml.
I am not finding an option to set the content type inside the ABAP mapping for the same.
Abinash
Maybe you are looking for
-
Create Material Master Views in mass-change
Dear All, We have to add a additional view to the material master of some products. Is this possible to do as a mass change (ex. MM17) or have we to do it with transaction SCAT/ MASS? Do you know an other solution? Thank you. Best regards, Thomas
-
ITunes keeps quitting unexpectedly! Help!
This has just started happening recently. I believe it may have something to do with Fluke; however I have totally uninstalled iTunes twice and it keeps happening. This seems to happen when iTunes is "Determining Gapless Playback Information". Error
-
How to make ROUNDED rectangle default style cp8?
Hi, I want my smart shape style to be rounded rectangle, not squared. I have set up my object styles with color and all that good stuff, but there is no way I can see to make it the rounded shape instead of the squared off shape. I also tried to cha
-
Hi, In 10g express DB, when connecting to hr schema, I've got ERROR: ORA-28000: the account is locked How can I unlock it? Best regards
-
Formula Column - Strange behaviour
I have a formula defined like shown below: function CF_qty_ordFormula_dir return Number is begin IF :ord_import_order_ind = 'Y' and (:sup_supplier BETWEEN 90000 and 99999) THEN --srw.message(100,:sup_supplier||'-'||:crj_order_qty); re