ABAP MAPPING steps
hi all,
Iam just trying to do ABAP mapping,but iam confused with the steps.
can anyone explain me ,what is the significance of those steps.
Message was edited by:
venugopal tummala
Message was edited by:
venugopal tummala
hi venu,
check this for abap mapping... this would help u
<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/5c46ab90-0201-0010-42bd-9d0302591383">https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/5c46ab90-0201-0010-42bd-9d0302591383</a>
<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e3ead790-0201-0010-64bb-9e4d67a466b4">https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e3ead790-0201-0010-64bb-9e4d67a466b4</a>
Message was edited by:
Raghavendra K.B
Similar Messages
-
Abap Mapping: XML iterative parsing.
Hi All,
I am trying to parse an XML file which structure is the following.
<Order>
<BookingCode>AAAAA</BookingCode>
<F1>
<F1>
<F2>
<F2>
<BookingCode>BBBBBB</BookingCode>
<F1>
<F1>
<F2>
<F2>
</Order>
More exactly I try to check all values of tag name "BookingCode" up to the end of the XML file. The number of occurrences of "BookingCode" is not determinated.
Is it necessary a loop after collecting a list of occurrences of "BookingCode"?
I am trying to use:
data: node_iterator type ref to if_ixml_node_iterator.
node_iterator = incode->CREATE_ITERATOR( ).
data: emp_node type ref to if_ixml_node.
emp_node = node_iterator->GET_NEXT( ).
data: emp_node_list type ref to if_ixml_node_list.
emp_node_list = emp_node->GET_CHILDREN( ).
data: emp_node_list_lenth type I.
emp_node_list_lenth = emp_node_list->GET_LENGTH( ).
Using the debugging I can not find exactly the behaviour.
Any suggestion for solving my issue will be well appreciated.
Thanks in advance.
Regards,
GiovanniHi,
referring to a document in the net, I am trying to define the loop for understanding the behaviour but I receive the abend:
document: Understanding and working with ABAP Mapping (Steps to be followed in ABAP Mapping classes )
data: emp_node_list_iterator type ref to if_ixml_node_iterator.
data: emp_subnode type ref to if_ixml_node.
DO emp_node_list_lenth TIMES.
emp_subnode = emp_node_list_iterator->get_next( ).
Abend:
Runtime Errors OBJECTS_OBJREF_NOT_ASSIGNED_NO
Except. CX_SY_REF_IS_INITIAL
Thanks in advance for your kind support.
Regards,
Giovanni -
Has any one ever met this kind of ABAP-mapping problem ??
Dear all,
our scenario is:
(remote)MQ(ssl connection)->(local)MQ-(jms)>XI---(proxy)>ECC
I met a very strange question during mapping which we use abap mapping inside xi.
the message come out from the abap mapping step.after the abap-mapping, the generated target message still has the source message concatenated with. it occurs only when all servers integrated together, but not occurs when we mannully put the source msg at local MQ (means this way, it works all right).
even during error case, it still can go through all the remaining steps of IE, and the out bound jms adapter then goes into the
target SAP ECC system, but of cause at the final step, it will reach u2018CX_ST_GROUP_MISSING_CASEu2019 error (this is because the message is not a valid xml file, and abap proxy can not consume it...
sample file after abap mapping:
<?xml version="1.0" encoding="utf-8"?>
<ns:MT_MQIVMessage xmlns:ns="urn:ianes:mqiv">
<MQIVMessage>
<MQIVPayload> ..data..</MQIVPayload>
</MQIVMessage>
</ns:MT_MQIVMessage>
<?xml version="1.0"?>
<ns:MT_K2 xmlns:ns="urn:ianes:prp:ipsc">
<header> .header.</header>
<data>..data...</data>
</ns:MT_K2>Dear expert,
after detail analysis, i found the 1st place that the soap header was wrongly set...
in call adater setp...
<SAP:Sender>
<SAP:Service>BS_PRP</SAP:Service>
<SAP:Interface namespace="urn:ianes:ext:ips">MI_MQIV_outb</SAP:Interface>
</SAP:Sender>
<SAP:Receiver>
<SAP:Party agency="" scheme="" />
<SAP:Service>BS_SAP</SAP:Service>
<SAP:Interface namespace="urn:ianes:prp:ipsc">MI_K3</SAP:Interface>
</SAP:Receiver>
<SAP:Interface namespace="urn:ianes:prp:ipsc">MI_K5</SAP:Interface>
</SAP:Main>
you can see the k5 was wrong set to k3
correct soap header should be this
<SAP:Sender>
<SAP:Service>BS_PRP</SAP:Service>
<SAP:Interface namespace="urn:ianes:ext:ips">MI_MQIV_outb</SAP:Interface>
</SAP:Sender>
- <SAP:Receiver>
<SAP:Party agency="" scheme="" />
<SAP:Service>BS_SAP</SAP:Service>
<SAP:Interface namespace="urn:ianes:prp:ipsc">MI_K5</SAP:Interface>
- <SAP:Mapping notRequired="M">
<SAP:ObjectId>RXmJZiHCMPynqzPehi20YQ==</SAP:ObjectId>
<SAP:SWCV>z+4XcK+qEduCcMP2oNwEVQ==</SAP:SWCV>
<SAP:SP>-1</SAP:SP>
</SAP:Mapping>
</SAP:Receiver>
<SAP:Interface namespace="urn:ianes:prp:ipsc">MI_K5</SAP:Interface>
</SAP:Main>
i guess this is the root of error, does any one give some hints on this ?
Thanks
Wu -
Hi Sdn,
I am new to ABAP mapping in XI, can you please help me out by answering the below questons.
1. When is an ABAP mapping being used?
2. How to write an ABAP mapping?
3. Some examples of ABAP mapping?
Suitable links will also do?
Thanks and regards,
Aniruddha BhattacharyaHi Aniruddha,
Few Links from my collection;)
[ABAP Mapping Steps |https://www.sdn.sap.com/irj/scn/wiki?path=/display/xi/abap%252bmapping%252bsteps]
http://help.sap.com/saphelp_nw04/helpdata/en/47/b5413acdb62f70e10000000a114084/frameset.htm
collection of all related Blogs and [http://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=79955426|]Wikis
The best one http://www.sdn.sap.com/irj/scn/advancedsearch?query=abap+mapping.
Regards,
Srinivas
Edited by: Srinivas on Apr 22, 2010 8:47 PM -
Hello,
Can any one explain how to do ABAP mapping?and necessary trancsaction codes for this?
Ex: I am sending PO to reciever system.
And if posibel screen shots....plz
Thank youHi Jyotsna,
Which mapping we need to use..
/people/udo.martens/blog/2006/08/23/comparing-performance-of-mapping-programs
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/xi/mapping%2btechniques
ABAP MAPPING...
You can implement the following mapping programs by using the ABAP Workbench:
ABAP mappings [Seite 375] in ABAP objects
XSLT mappings (ABAP Engine) [Seite 376]
Use
ABAP mappings are mapping programs in ABAP objects [Extern] that customers can implement using the ABAP Workbench.
Prerequisites
Note the prerequisites in the sections Purpose and Integration as well as the Restrictions in Mapping Development with the ABAP Workbench
Features
An ABAP mapping comprises an ABAP class that implements the interface IF_MAPPING in the package SAI_MAPPING. The interface has a method EXECUTE with the following signature:
Importing Parameter Parameter Meaning
SOURCE(Type XSTRING) Source XML document
PARAM(Type Ref To IF_MAPPING_PARAM) Parameter object for read access to runtime constants (see below)
TRACE (Type Ref To IF_MAPPING_TRACE) Trace object for writing messages in the mapping trace (see below)
Exporting Parameter Parameter Meaning
RESULT (Type XSTRING) Target XML document
Exception: CX_MAPPING_FAULT
Applications can decide themselves in the method EXECUTE how to import and change the source XML document. If you want to use the XSLT processor of SAP Web AS, you can use the ABAP Workbench to develop a stylesheet directly (see XSLT Mappings (ABAP Engine) [Seite 376]) rather than using ABAP mappings
Runtime Constants
In ABAP mapping you can read access message header fields. To do this, an object of type IF_MAPPING_PARAM is transferred to the EXECUTE method. The interface has constants for the names of the available parameters and a method GET, which returns the respective value for the parameter name. The constants are the same as in Java mappings [Seite 367], although the constant MAPPING_TRACE does not exist for ABAP mappings. Instead, the trace object is transferred directly using the parameter TRACE of the method IF_MAPPING~EXECUTE (see above).
regards,
Kishore -
Disabling the Sub Road map steps in web dynpro abap
Hello Experts,
I am using Floor Plan Manager for Road map(FPM_GAF_COMPONENT).
I have 5 main road map steps of which the second one has 3 ( 2.1, 2.2 , 2.3 ) sub road map steps.
I have a requirement of enabling only the sub road map step in which we are presently in.
The other sub road map steps should be disabled.
Like if i am in 2.2 then 2.1 and 2.3 should be disabled.
I have solved this issue for main road map steps but unable to find a way for doing the same with Sub Road map steps.
Please help me out in this.
Thanks in Advance,
Shravan VarmaSubsteps are not shown automatically, they are to be enabled at runtime .
See in page 35/36 adding/activating substep
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/e0d500f5-5205-2e10-43a6-dd023a5d0818?QuickLink=index&overridelayout=true -
ABAP Dictionary structure for use in ABAP Mapping
Hello, I'm creating an ABAP mapping class which requires me to use standard ABAP dictionary (table) structures (ex.MARA, KNA1 etc) for the mapping as the data coming into the mapping is in that format. I'm creating the ABAP class in the PI server and do not have table structures (MARA, KNA1 etc) in the dictionary in the PI server. What is the efficient way to create these structures (as Z elements) in the PI server's dictionary?
I have the XSD of these table structures. Can I import those XSDs into the ABAP dictionary in PI servers? If yes, how can it be done? Please help!Yes you can import it as an external definition data and create the data type based on this XSD. Go through the link below for more information on the steps to import and how to use it.
http://help.sap.com/saphelp_nwpi71/helpdata/en/26/9e97b0f525d743882936c2d6f375c7/frameset.htm -
Dynamic configuration in integration process using abap mapping
Hi everybody,
i have the following scenario:
file adapter -> integration process -> file adapter
The integration process uses an ABAP mapping and sets the filename in dynamic configuration as follows:
*-- Set Parameter
clear ls_dyn_record.
ls_dyn_record-name = gc_dyn_config_name.
ls_dyn_record-namespace = gc_dyn_config_ns.
ls_dyn_record-value = <new_file_name>
*-- Write configuration
ir_dyn_config->add_record( ls_dyn_record ).
But now the new filename is not reflected in the file adapter (receiver). In the integration monitor (SXMB_MONI) i still find the old filename.
Whats wrong?
ElkoThe ABAP mapping is more complex, setting filename in Dyn. Conf. is just one step in mapping.
If I check the Workflow protocol of the Integration Process, I find the following in the Trace of the ABAP-Mapping:
The filename has been set to 3233340.SWNF00HW.P10I. The Suffix P10I has been added in the ABAP mapping.
When I check the subsequent message in SXMB_MONI I find:
The added suffix is missing in the filename !!
Elko -
Java Mapping, XSLT Mapping, ABAP Mapping
Hi Experts,
Could any one explain what is the main features of the following Mapping. How to pick the mapping?
Java Mapping - When to use and what is the advantage.
ABAP Mapping - When to use and what is the advantage.
XSLT Mapping - When to use and what is the advantage.
Graphical Mapping - When to use and what is the advantage.
cheers,
SuneeThere are 4 types of mapping in XI
1. Graphical Mapping
2. XSLT Mapping
3. JAVA Mapping
4. ABAP Mapping
When to use Message mapping
1 When the logic for your mapping is simple and straight forward, you can use
Advantages of message mapping
1)Easy to use.
2) has GUI drag and drop.
3) used for simple mapping cases
4) it does not involve any complex logic
Disadvantages of message mapping
1)has limitation in terms of complex hierarchy
When to use Java mapping
1) Java mapping are used when graphical mapping cannot help you.
Advantages of Java Mapping
1)you can use Java APIs and Classes in it.
2) file look up or a DB lookup is possible
3) DOM is easier to use with lots of classes to help you create nodes and elements.
Disadvantages of Java mapping
1)SAX parser is not easy to develop
2)DOM parser is intensive
3) Java knowledge is required
4) bit complexer
XSLT Mapping - When to use
1)When the required output is other than XML like Text, Html or XHTML (html displayed as XML )
2)When default namespace coming from graphical mapping is not required or is to be changed as per requirements.
3)When data is to be filtered based on certain fields (considering File as source)
4)When data is to be sorted based on certain field (considering File as source)
5)When data is to be grouped based on certain field (considering File as source)
Advantages of using XSLT mapping
1)XSLT program itself defines its own target structure.
2)XSLT programs can be imported into SAP XI. Message mapping step can be avoided. One can directly go for interface mapping once message interfaces are created and mapping is imported.
3)XSLT provides use of number of standard XPath functions that can replaces graphical mapping involving user defined java functions easily.
4)File content conversion at receiver side can be avoided in case of text or html output.
5)Multiple occurrences of node within tree (source XML) can be handled easily.
6)XSLT can be used in combination with graphical mapping.
7)Multi-mapping is also possible using xslt.
8)XSLT can be used with ABAP and JAVA Extensions
Disadvantages of using XSLT mapping
1)Resultant XML payload can not be viewed in SXMB_MONI if not in XML format (for service packs < SP14).
2)Interface mapping testing does not show proper error description. So errors in XSLT programs are difficult to trace in XI but can be easily identified outside XI using browser.
3)XSLT mapping requires more memory than mapping classes generated in Java.
4)XSLT program become lengthier as source structure fields grows in numbers.
5)XSLT program sometimes become complex to meet desired functionality.
6)Some XSL functions are dependent on version of browser.
Advantages of Abap Mapping
1) A person comfortable with OOABAP can go for ABAP mapping instead.
Disadvantages of Abap Mapping
1) Abap knowledge is required
2) bit compexer
For further info on each of the mapping, refer to these links,
Graphical Mapping,
http://help.sap.com/saphelp_nw04/helpdata/en/6d/aadd3e6ecb1f39e10000000a114084/content.htm
http://help.sap.com/saphelp_nw04/helpdata/en/43/c4cdfc334824478090739c04c4a249/content.htm
XSLT Mapping
http://help.sap.com/saphelp_nw04/helpdata/en/73/f61eea1741453eb8f794e150067930/content.htm
http://www.w3.org/TR/xslt20/
Java Mapping
http://help.sap.com/saphelp_nw04/helpdata/en/e2/e13fcd80fe47768df001a558ed10b6/content.htm
DOM parser API
http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/package-frame.html
Check this blog on Mapping:
/people/ravikumar.allampallam/blog/2005/02/10/different-types-of-mapping-in-xi
Also, check this thread for more info,
Different types of Mapping in XI -
Multi-Message-split with ABAP mapping and adapter specific attributes
Hi all,
With <b>ABAP-Mapping I split 1 message to n messages</b>.
So many files are generated in <b>file-Adapter</b>.
Everything fine.
But now I want the file names different using adapter specific attributes.
It is not possible to use variable substitution and write the file name in payload because of receiver restrictions.
I tried this with following similar coding in ABAP-Mapping:
data: lt_records TYPE MPP_DYNAMIC_TAB.
Loop.
l_file_name = "payload-Inbound"-information
ls_record-namespace = 'http://sap.com/xi/XI/System/File'.
ls_record-name = 'FileName'.
ls_record-value = l_file_name. "l_file_name comes from inbound-payload
append ls_record to lt_records.
Endloop.
CALL METHOD dynamic_configuration->set_all_records
EXPORTING
records = lt_records.
If I start the interface I see in the monitoring the dynamic configuration with many entries for file-name in the the SOAP-Header mapping of the request message (following extract):
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- Mapping der Request-Message
-->
- <SAP:DynamicConfiguration xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:Record namespace="http://sap.com/xi/XI/System/File" name="FileName">BPAADDRESS.XML</SAP:Record>
<SAP:Record namespace="http://sap.com/xi/XI/System/File" name="FileName">BPABROKERROLE.XML</SAP:Record>
<SAP:Record namespace="http://sap.com/xi/XI/System/File" name="FileName">BPACOMPANYSEGMENT.XML</SAP:Record>
<SAP:Record namespace="http://sap.com/xi/XI/System/File" name="FileName">BPACUSTOMERROLE.XML</SAP:Record>
The result is that <b>all files have the same file name</b> (last entry in dynamic configuration).
Is it possible to write the adapter specific configuration in ABAP-mapping <u>for every single result message</u>??
Thank you for your help,
FlorianHi Florian,
I've a different idea...I dont think its a "right solution" but just another work around..it involves a BPM...
In your ABAP mapping..set the dynamic config with as many variables as number of different messages...i.e. use the variables like 'FileName1', 'FileName2'...'FileName6' instead of 'FileName'. But use the same namespace 'http://sap.com/xi/XI/System/File'
Call the above mapping in a BPM and capture the individual messages and set the attribute 'FileName' from the values of 'FileName1' to 'FileName6' accordingly using Message Mapping and then send the message using the 'Send' step.
before you try this, try using the variable names 'FileName1' ...'FileName6' in the receiver adapters...enable the ASMS. <b>I know we need to select which variables from the dynamic config to be used by the adapter by specifically selecting 'FileName', 'Directory' etc...but just give it a try and see if it works..</b>
Or..instead of using a BPM..you can combine Henrique's idea...use Adapter module to set the value for 'FileName' from variables 'FileName1'...'FileName6' accordingly.
hope I'm clear..lemme know if you have any questions..
cheers
praveen -
I am working on SAP XI 3.0
As per documentation i add the entry in
http://<hostname>:<portid>/exchangeProfile
com.sap.aii.repository.mapping.additionaltypes
as e.g.
R3_ABAP|Abap-class;R3_XSLT|XSL (ABAP Engine)
but i.e. not seen in the
httP://<hostname>:<portid>/rep/support/index.html
All Properties options
so what else configuration required
because one of its sentence says that:
Technically, the Integration Server calls the ABAP function CALL_PARTNER_MAPPING with the additional mapping type name as destination. Therefore, the additional mapping type name must be registered as RFC-Destination in the Integration Server, too.
so where to define RFC-Destination and how.
Thanks & Regards,
Gaurav JainHi
HERE are steps for abap mapping
1. Add additional mapping types in your
exchange profile
Open
http://<host>:<port>/exchangeProfile/ind
ex.html
Choose IntegrationBuilder ->
IntegrationBuilder.Repository ->
com.sap.aii.repository.mapping.addition
altypes
Maintain the following entry:
R3_ABAP|Abapclass;
R3_XSLT|XSL (ABAP
Engine)
2. Check whether the data has been
successfully read from the exchange profile:
Open
http://<host>:<port>/rep/support/admin/in
dex.html
Choose Administration of Properties ->
All Properties
If the value associated to parameter
com.sap.aii.repository.mapping
.additionaltypes is not correct.
3 . Create a class and implement interface IF_Mapping in that.
4. implement ABAP mapping.
Hope this will help
thanx
Vinod ahir -
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: error in accessing to DynamicConfiguration.
Hi All,
I have been trying to put a value into Dynamic Configuration repository with the following abap code.
DATA: l_record TYPE MPP_DYNAMIC.
l_record-namespace = 'http://name1/ca/result1'.
l_record-name = 'FileName'.
l_record-value = '/mydir/dir1/File01.xml'.
CALL METHOD dynamic_configuration->add_record
EXPORTING
record = l_record.
I receive the following dump.
Runtime Errors OBJECTS_OBJREF_NOT_ASSIGNED_NO
Except. CX_SY_REF_IS_INITIAL
Date and Time 25.03.2009 11:06:10
Short text
Access using a 'ZERO' object reference is not possible.
What happened?
Error in the ABAP application program.
The current ABAP program "Z_XI_MAPPING_TEST_03==========CP" had to be
interrupted because it contains
a statement that cannot be executed.
Error analysis
An exception occurred that is explained in detail below.
The exception, which is assigned to class 'CX_SY_REF_IS_INITIAL', was n
caught in
procedure "IF_MAPPING~EXECUTE" "(METHOD)", nor was it propagated by a R
clause.
Since the caller of the procedure could not have anticipated that the
exception would occur, the current program is terminated.
The reason for the exception is:
An attempt was made to access a component with a 'ZERO' object
reference (points to 'nothing').
An object reference must point to an object (an instance of a class)
before it can be used to access a component.
Either the reference has not yet been set or it was set to 'ZERO' using
a CLEAR statement.
I am executing my test outside PI, by launching the report Z_MAPPING_TEST as explained in a blog.
In java evironment it is necessary to create an istance of a object for saving the value of the variable 'FileName' inside the Dynamic Configuration repository.
I do not know if it is necessary to create (before) an istance of the Dynamic Configuration in abap mapping or if the method add_record do this.
The meaning of my test is to get the name file from the Dynamic Configuration repository set in a previous step in a flow where the abap mapping will be launched.
Any suggestion will be well appreciated.
Many thanks in advance for your kind cooperation.
Regard,
GiovanniHi,
in your ABAP mapping code, instead of l_record-namespace = 'http://name1/ca/result1' use below:
l_record-namespace = 'http://sap.com/xi/XI/System'.
Then re-run your scenario.
Regards,
Rajeev Gupta -
Hi ,
I am working with a scenerio where i have 2 diff system to send the data depending upong the sending payload data.
I am using ABAP mapping where i am able to send accros the data, below is my code
METHOD IF_MAPPING~EXECUTE.
BREAK-POINT.
* initialize iXML
TYPE-POOLS: IXML.
CLASS CL_IXML DEFINITION LOAD.
DATA: L_IXML TYPE REF TO IF_IXML.
*creating the Interface by calling the create method in class C_IXML
CALL METHOD CL_IXML=>CREATE
EXPORTING
TYPE = 0
RECEIVING
RVAL = L_IXML.
create stream factory
DATA: STREAMFACTORY TYPE REF TO IF_IXML_STREAM_FACTORY.
CALL METHOD L_IXML->CREATE_STREAM_FACTORY
RECEIVING
RVAL = STREAMFACTORY.
create input stream
DATA: ISTREAM TYPE REF TO IF_IXML_ISTREAM.
CALL METHOD STREAMFACTORY->CREATE_ISTREAM_XSTRING
EXPORTING
STRING = SOURCE
RECEIVING
RVAL = ISTREAM.
*This iXML factory can create an empty XML document object named IDOCUMENT.
initialize input document
DATA: IDOCUMENT TYPE REF TO IF_IXML_DOCUMENT.
CALL METHOD L_IXML->CREATE_DOCUMENT
RECEIVING
RVAL = IDOCUMENT.
parse input document
DATA: IPARSER TYPE REF TO IF_IXML_PARSER.
CALL METHOD L_IXML->CREATE_PARSER
EXPORTING
DOCUMENT = IDOCUMENT
ISTREAM = ISTREAM
STREAM_FACTORY = STREAMFACTORY
RECEIVING
RVAL = IPARSER.
IPARSER->PARSE( ).
DATA: EL_ELEMENT TYPE REF TO IF_IXML_ELEMENT,
VALUE TYPE STRING.
DATA: ROOT TYPE REF TO IF_IXML_ELEMENT.
get message content of tag
DATA: INCODE TYPE REF TO IF_IXML_NODE_COLLECTION,
INCODE1 TYPE REF TO IF_IXML_NODE_COLLECTION,
INCODE2 TYPE REF TO IF_IXML_NODE_COLLECTION,
INCODE0 TYPE REF TO IF_IXML_NODE_COLLECTION.
CALL METHOD IDOCUMENT->GET_ELEMENTS_BY_TAG_NAME
EXPORTING
DEPTH = 0
NAME = 'MANDT'
NAMESPACE = 'urn:sap-com:document:sap:rfc:functions'
RECEIVING
RVAL = INCODE0 .
CALL METHOD IDOCUMENT->GET_ELEMENTS_BY_TAG_NAME
EXPORTING
DEPTH = 0
NAME = 'EMPNO'
NAMESPACE = 'urn:sap-com:document:sap:rfc:functions'
RECEIVING
RVAL = INCODE.
CALL METHOD IDOCUMENT->GET_ELEMENTS_BY_TAG_NAME
EXPORTING
DEPTH = 0
NAME = 'EMPNAME'
NAMESPACE = 'urn:sap-com:document:sap:rfc:functions'
RECEIVING
RVAL = INCODE1.
CALL METHOD IDOCUMENT->GET_ELEMENTS_BY_TAG_NAME
EXPORTING
DEPTH = 0
NAME = 'DEPARTMENTNAME'
NAMESPACE = 'urn:sap-com:document:sap:rfc:functions'
RECEIVING
RVAL = INCODE2.
DATA: URI TYPE STRING.
URI = 'urn:sap-com:document:sap:rfc:functions'.
* build up output document =============================================
create output document
DATA: ODOCUMENT TYPE REF TO IF_IXML_DOCUMENT.
CALL METHOD L_IXML->CREATE_DOCUMENT
RECEIVING
RVAL = ODOCUMENT.
DATA: RET_VALUE TYPE I.
**At this point you can add the nodes (elements, attributes) into the document. First you have to declare the root element node.
DATA: L_ELEMENT_ROOT TYPE REF TO IF_IXML_ELEMENT.
DATA: NODE_LIST_COLLECTION TYPE REF TO IF_IXML_NODE_COLLECTION.
add node to the output document
DATA: OUTCODE0 TYPE REF TO IF_IXML_NODE.
DATA: OUTCODE TYPE REF TO IF_IXML_NODE.
DATA: OUTCODE1 TYPE REF TO IF_IXML_NODE.
DATA: OUTCODE2 TYPE REF TO IF_IXML_NODE.
DATA: INDEX1 TYPE SY-INDEX.
DATA: INDEX TYPE SY-INDEX.
DATA IRC TYPE I.
TYPES: BEGIN OF TY_IMPORT,
MANDT TYPE MANDT,
EMPNO TYPE STRING,
EMPNAME TYPE STRING,
DEPARTMENTNAME TYPE STRING,
END OF TY_IMPORT.
DATA: IT_IMPORT TYPE STANDARD TABLE OF TY_IMPORT.
DATA: WA_IMPORT TYPE TY_IMPORT.
CALL METHOD IDOCUMENT->GET_ELEMENTS_BY_TAG_NAME
EXPORTING
DEPTH = 0
NAME = 'MANDT'
NAMESPACE = ''
RECEIVING
RVAL = NODE_LIST_COLLECTION.
DATA: LENGTH TYPE I.
CALL METHOD NODE_LIST_COLLECTION->GET_LENGTH
RECEIVING
RVAL = LENGTH.
WHILE INDEX < LENGTH.
CALL METHOD IDOCUMENT->FIND_FROM_NAME
EXPORTING
DEPTH = index
NAME = 'EMPNO'
NAMESPACE = ''
RECEIVING
RVAL = EL_ELEMENT .
CALL METHOD INCODE0->GET_ITEM
EXPORTING
INDEX = INDEX
RECEIVING
RVAL = OUTCODE0.
EL_ELEMENT = IDOCUMENT->FIND_FROM_NAME( 'MANDT' ).
VALUE = OUTCODE0->GET_VALUE( ).
WA_IMPORT-MANDT = VALUE.
CLEAR: VALUE.
CALL METHOD INCODE->GET_ITEM
EXPORTING
INDEX = INDEX
RECEIVING
RVAL = OUTCODE.
EL_ELEMENT = IDOCUMENT->FIND_FROM_NAME( 'EMPNO' ).
VALUE = OUTCODE->GET_VALUE( ).
WA_IMPORT-EMPNO = VALUE.
CLEAR: VALUE.
CALL METHOD INCODE1->GET_ITEM
EXPORTING
INDEX = INDEX
RECEIVING
RVAL = OUTCODE1.
EL_ELEMENT = IDOCUMENT->FIND_FROM_NAME( 'EMPNAME' ).
VALUE = OUTCODE1->GET_VALUE( ).
WA_IMPORT-EMPNAME = VALUE.
CLEAR: VALUE.
CALL METHOD INCODE2->GET_ITEM
EXPORTING
INDEX = INDEX
RECEIVING
RVAL = OUTCODE2.
EL_ELEMENT = IDOCUMENT->FIND_FROM_NAME( 'DEPARTMENTNAME' ).
VALUE = OUTCODE2->GET_VALUE( ).
WA_IMPORT-DEPARTMENTNAME = VALUE.
CLEAR: VALUE.
APPEND WA_IMPORT TO IT_IMPORT.
CLEAR WA_IMPORT.
ADD 1 TO INDEX.
ENDWHILE.
TYPES: BEGIN OF TY_DATA,
DATA TYPE STRING,
END OF TY_DATA.
DATA: IT_DATA TYPE STANDARD TABLE OF TY_DATA,
WA_DATA TYPE TY_DATA.
DATA: SSSS TYPE STRING.
IF SOURCE IS NOT INITIAL.
CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
EXPORTING
IM_XSTRING = SOURCE
IM_ENCODING = 'UTF-8'
IMPORTING
EX_STRING = SSSS.
ENDIF.
render document ======================================================
create output stream
DATA: XX TYPE STRING.
DATA: XX_1 TYPE STRING.
DATA: XX1 TYPE STRING.
DATA: XX2 TYPE STRING.
DATA: T1 TYPE STRING VALUE ''.
DATA: T TYPE STRING VALUE '<DATA><MANDT>'.
LOOP AT IT_IMPORT INTO WA_IMPORT.
CLEAR: XX1.
IF SY-TABIX = 1.
IF WA_IMPORT-EMPNO = '000000000022'.
CONCATENATE T WA_IMPORT-MANDT '</MANDT>'
'<EMPNO>' WA_IMPORT-EMPNO '</EMPNO>'
'<EMPNAME>' WA_IMPORT-EMPNAME '</EMPNAME><DEPARTMENTNAME>'
WA_IMPORT-DEPARTMENTNAME '</DEPARTMENTNAME></DATA>'
INTO XX1 .
IF SY-TABIX = 1.
ELSE.
CONCATENATE XX1 XX_1 INTO XX_1.
ENDIF.
ELSE.
CONCATENATE T WA_IMPORT-MANDT '</MANDT>'
'<EMPNO>' WA_IMPORT-EMPNO '</EMPNO>'
'<EMPNAME>' WA_IMPORT-EMPNAME '</EMPNAME><DEPARTMENTNAME>'
WA_IMPORT-DEPARTMENTNAME '</DEPARTMENTNAME></DATA>' INTO XX1 .
CONCATENATE XX1 XX INTO XX.
ENDIF.
ENDIF.
AT LAST.
CONCATENATE '<?xml version="1.0" encoding="UTF-8"?><ns1:ZTEST1 xmlns:ns1="urn:sap-com:document:sap:rfc:functions">'
XX_1 INTO XX_1.
CONCATENATE XX_1 '</ns1:ZTEST1>' INTO XX_1.
CALL FUNCTION 'ECATT_CONV_STRING_TO_XSTRING'
EXPORTING
IM_STRING = XX_1
IM_ENCODING = 'UTF-8'
IMPORTING
EX_XSTRING = RESULT.
EX_LEN = .
CONCATENATE '<?xml version="1.0" encoding="UTF-8"?><ns1:ZTEST1 xmlns:ns1="urn:sap-com:document:sap:rfc:functions">'
XX INTO XX.
CONCATENATE XX '</ns1:ZTEST1>' INTO XX.
CONCATENATE XX_1 XX INTO XX.
CALL FUNCTION 'ECATT_CONV_STRING_TO_XSTRING'
EXPORTING
IM_STRING = XX
IM_ENCODING = 'UTF-8'
IMPORTING
EX_XSTRING = RESULT
EX_LEN =
ENDAT.
ENDLOOP.
ENDMETHOD.
here above result parameter will have the target data..But it sends the that same data to both the system , If i will be able to recursively call this method, then i be able to solve the prob easily as first time result will send one data to one system and next time to other system,Hi munish,
I dont think there is any thing wrong with the ABAP code.
Try testing your ABAP mapping using transaction code SXI_MAPPING_TEST in XI.
Enter the Details asked and then enter TEst data in XML format..
Also, you can make use of the Trace element to find out if there is any thing wrong with the code.
Include the following Statements after every step in the ABAP code to ensure that the particular step is completed successfully.
data : l_trace type string.
concatenate l_trace '<Message you want to display>' into l_trace.
trace->trace(level = '<level>'
message =l_trace).
The trace is visible in SXMB_MONI (click on "Trace" in the left pane to view).
using this you will get to know i the code is functioning as desired.
Regards,
Yashaswee. -
Exception handling in BPM and ABAP mapping
Hello all,
We have a BPM with this structure:
. REC (receiver)
. <begin BLOCK1>
. TRANSFORMATION1 (Abap Mapping)
. <begin EXCEPT> (exception branch)
. CONTROL (Cancel Process)
. <end EXCEPT>
. <end BLOCK1>
The same exception is assigned to the block; to the mapping and to exception branch.
The problem is that, when in the Abap Mapping the exception CX_MAPPING_FAULT is raised, the exception branch seems to be ignored and so, the BPM doesn't finish.
This problem only occurs in some of ours BPMs, because the same thing, when done in other BPMs, works fine.
I know i can change the BPM to turn around this problem, but i would very much like to know the solution to this.
Please, help us with this posting.
thanks in advance
Filipe BarreiraHi again,
We are in SP19, witch invalidates the note 921757 listed.
Also, i made an abap mapping witch only raises the exception. So i think it is not an ABAP error.
Also the XML seems to be correct, because this is a duplicates check routine. A message (with the same data) already entered previously (we trying to avoid another entry).
In the trace analysis for the message, it is stated that the exception has occurred:
<?xml version="1.0" encoding="utf-8" ?>
- <MappingTrace>
<Trace level="1" type="T">Mapping-Namespace:http://xi.es/suministros</Trace>
<Trace level="1" type="T">Mapping-Name:IM_SALIDAS_TESTE1</Trace>
<Trace level="1" type="T">Mapping-SWCV:7CE651C00ABC11DBCBF0C8E8C0A901F6</Trace>
<Trace level="1" type="T">Mapping-Step:1</Trace>
<Trace level="1" type="T">Mapping-Type:R3_ABAP</Trace>
<Trace level="1" type="T">Mapping-Program:ZCLTD_MM_SALIDAS_CARGA_TESTE</Trace>
<Trace level="1" type="T">Creating Abap mapping. Classname =ZCLTD_MM_SALIDAS_CARGA_TESTE</Trace>
<Trace level="1" type="T">CALL APPLICATION MAPPING.</Trace>
<Trace level="1" type="T">Application error in mapping program ZCLTD_MM_SALIDAS_CARGA_TESTE, error code: , error text:</Trace>
</MappingTrace>
the problem is that the process keeps running.
regards Filipe Barreira
Maybe you are looking for
-
I have an alias of one of my external hard drives in my trash. When I tried to delete it, it showed that I was deleting 80,000 files and counting. I stopped the delete process and when I clicked on "show original" all my external H.D.'s and my Mac ha
-
How to install Windows 8.1 with Windows 8 Product key?
I have purchased Upgrade pack from Windows 7 to Windows 8. I have also Updated the OS to windows 8.1 through Store. How to install Windows 8.1 with Windows 8 Product key?
-
Acrobat 9.1.0 crashes
Saturday, March 28, 2009 9:16:37 AM PDT I got the 'updates available' message this morning. I updated AcroRead 9.0 and Acrobat 9.0 standard. After the reboot to finish the Acrobat 9.1.0 update I got the following error message: AcroDist.exe - The app
-
Attachments allowed on all boards
We have just enabled attachments so you can now attach a file to your post. For example, you can add screen captures or log files to your post to describe your problem. The max file size is about 5mb and the possible file types currently include jpg,
-
ITunes music files are too large, how can I compress them?
So yeah today was my first day using iTunes and buying some songs. I got 12 songs and it came out to 80.6MB, I really want to know if there is a converter in iTunes for this or if there is a trusted software I can use to convert them?