ABAP Mapping Black Field Missing
Hi,
I did an ABAP Mapping, one field of a sender message could be full of spaces or with some data. When a message with data for that field is sent, the mapped field in the receiver message had the data, but when I send a full spaces data field the receiver message have no data, it's empty. Somebody could help me?
Regards,
Luis Diego
Hi,
Btw, where are you looking about this field ? In the sxmb_moni ? If so are u able to see the XML tags generated for that field ? If not
Check the existsence of the field in the mapping. If there is no field i.e empty, then pass the spaces explicitly..
It is like , Built-in function in the message mapping i.e "EXISTS" with If-Else logic.
If you are able to see the xml tags generated for that field, view the SXMB_MONI message in the notepad, so that you can view the space.
Hope this helps,
Regards,
Moorthy
Similar Messages
-
XI 7.0 ABAP-Mapping in Design Builder (Interface Mapping)
Hi,
in XI 3.0 there was the possibility to specify a ABAP-Mapping-Class in the Interface Mapping. In XI 7.0 the
entry ABAP-Mapping is somehow missing in the drop-down-Box, there is a Message-Mapping, JAVA-Mapping and XSLT-Mapping but no ABAP-Mapping :-(.
Did this move somewhere else or are ABAP-Mapping's not possible anymore ??
Best Regards,
Frank MarxFrank,
You need to activate ABAP and XSLT mapping.
Check this blog for the same,
/people/ravikumar.allampallam/blog/2005/02/10/different-types-of-mapping-in-xi
Regards,
Bhavesh -
IDOC--XI--IDOC Using ABAP MAPPING
Hi all,
My requirement is to map source IDOC fields to target IDOC fields using ABAP Mapping.
few fields in source idoc structure has to be merged into a single field in target idoc structure.
need help on how to start with as i am not exposed to ABAP Mapping.
regards,
SubbaHi Subba,
I suggest you also go through these links:
https://websmp101.sap-ag.de/~sapdownload/011000358700003082332004E/HowToABAPMapping.pdf
/people/ravikumar.allampallam/blog/2005/02/10/different-types-of-mapping-in-xi
/people/r.eijpe/blog
ABAP Mapping Vs Java Mapping.
Re: Message Mapping of type ABAP Class not being shown
Re: Performance of mappings (JAVA, XSLT, ABAP)
Refer to following SDN Demo which explains the need and how to do the ABAP mapping.
https://www.sdn.sap.com/irj/sdn/docs?rid=/webcontent/uuid/110ff05d-0501-0010-a19d-958247c9f798#jdi [original link is broken]
This document will help you to create ABAP Mapping.
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/e3ead790-0201-0010-64bb-9e4d67a466b4
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
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/5c46ab90-0201-0010-42bd-9d0302591383
Regards,
Abhy
Message was edited by: Abhy Thomas -
ABAP Mapping XML-IDoc to Flat string: missing character of segement header
Hello folks!
I'm using an ABAP-Mapping in order to trasform an XML-IDOC to a flat string.
The implementation of the mapping is in accordance with the "HOW TO convert an IDoc-XML to ..."Basically it works fine except the following:
The following line shows one Segment of an IDoc. the control record is ok.
With '380' begins the payload of the segment. The part before includes the segment header,
which is 63 Bytes long, which is correct.
What we're missing, is the last character of the segement header:
ABAP-Mapping:
E1VDEWBGM 01000000000325511200000020000000 380 5 (...)
BusinessConnector:
E1VDEWBGM 010000000003255112000000200000001380 5 (...)
Again: the overall length of the segment is ok, but the '1' of the field hirarchie level is overwritten.
Any idea?In that case you need to extend the trace file in the Visual Admin Console...
 Services
 Log Configurator
 Locations
 Choose the location (Java package) and the tracing level (severity)
(for example, com.sap.aii.adapter.file)
 Root Location > com > sap > aii > File
 Set the severity and choose Copy Severity to Subtree
Check the trace file to find the field erroring this way! -
Error text missing in raising exception (In ABAP mapping)
Hi,
iam using ABAP Mapping for 1 interface.
Based on some condition i am raising exception with error text. When i executed this in SXI_Mapping_test it's showing the Error text. But when i execute the interface directly error text is missing in the Error details.
can any one figure out y its not coming..
regards
KishoreHi,
I think you need to write the error to mapping trace.
http://help.sap.com/saphelp_nw04/helpdata/en/ba/e18b1a0fc14f1faf884ae50cece51b/content.htm
Regards
Vijaya -
Descriptor exception for "missing mapping for field"
I am using TopLink 9.0.3, oracle database 9, JVM 1.4.
I got one DescirptorException that states that the descriptor misses mapping for one database field.
However I have such field mapped through workbench.
The is the exception.
-----------------exception-----------------------
LOCAL EXCEPTION STACK:
EXCEPTION [TOPLINK-45] (TopLink - 9.0.3 (Build 423)): oracle.toplink.exceptions.DescriptorException
EXCEPTION DESCRIPTION: Missing mapping for field [DatabaseField(DEVICEDB.DEVICEID)].
DESCRIPTOR: Descriptor(ContactDB --> [DatabaseTable(DEVICEDB)])
at oracle.toplink.exceptions.DescriptorException.missingMappingForField(Unknown Source)
at oracle.toplink.internal.descriptors.ObjectBuilder.extractValueFromObjectForField(Unknown Source)
at oracle.toplink.internal.descriptors.ObjectBuilder.extractValueFromObjectForField(Unknown Source)
at oracle.toplink.mappings.OneToManyMapping.extractForeignKeyFromReferenceObject(Unknown Source)
at oracle.toplink.mappings.OneToManyMapping.executeBatchQuery(Unknown Source)
at oracle.toplink.mappings.OneToManyMapping.extractResultFromBatchQuery(Unknown Source)
at oracle.toplink.internal.indirection.NoIndirectionPolicy.valueFromBatchQuery(Unknown Source)
at oracle.toplink.mappings.ForeignReferenceMapping.batchedValueFromRow(Unknown Source)
at oracle.toplink.mappings.ForeignReferenceMapping.valueFromRow(Unknown Source)
at oracle.toplink.mappings.DatabaseMapping.readFromRowIntoObject(Unknown Source)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildAttributesIntoObject(Unknown Source)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildObject(Unknown Source)
at oracle.toplink.internal.descriptors.ObjectBuilder.buildObjectsInto(Unknown Source)
at oracle.toplink.internal.queryframework.DatabaseQueryMechanism.buildObjectsFromRows(Unknown Source)
at oracle.toplink.queryframework.ReadAllQuery.execute(Unknown Source)
at oracle.toplink.queryframework.DatabaseQuery.execute(Unknown Source)
at oracle.toplink.queryframework.ReadQuery.execute(Unknown Source)
at oracle.toplink.publicinterface.Session.internalExecuteQuery(Unknown Source)
at oracle.toplink.threetier.ServerSession.internalExecuteQuery(Unknown Source)
at oracle.toplink.publicinterface.Session.executeQuery(Unknown Source)
at oracle.toplink.internal.indirection.QueryBasedValueHolder.instantiate(Unknown Source)
at oracle.toplink.internal.indirection.DatabaseValueHolder.getValue(Unknown Source)
at oracle.toplink.indirection.IndirectList.buildDelegate(Unknown Source)
at oracle.toplink.indirection.IndirectList.getDelegate(Unknown Source)
at oracle.toplink.indirection.IndirectList.isEmpty(Unknown Source)
The is my mapping file for DeviceDB and ContactDB. The ContactDB is a subclass of the DeviceDB.
Clearly from the mapping below, the DeviceDB has a mapping for the database filed DeviceID.
The ContactDB is a subclass of DeviceDB. Therefore the ContactDB also should have a mapping for
database field deviceID
----------------------- partial mapping file for DeviceDB----------
public Descriptor buildDeviceDBDescriptor() {
Descriptor descriptor = new Descriptor();
descriptor.setJavaClass(DeviceDB.class);
descriptor.addTableName("DEVICEDB");
descriptor.addPrimaryKeyFieldName("DEVICEDB.DBID");
// Inheritance properties.
descriptor.getInheritancePolicy().setClassIndicatorFieldName("DEVICEDB.CLASS");
descriptor.getInheritancePolicy().addClassIndicator(ContactDB.class, "c");
descriptor.getInheritancePolicy().addClassIndicator(ContentDB.class, "f");
OneToOneMapping deviceMapping = new OneToOneMapping();
deviceMapping.setAttributeName("device");
deviceMapping.setReferenceClass(Device.class);
deviceMapping.setRelationshipPartnerAttributeName("databases");
deviceMapping.dontUseIndirection();
deviceMapping.readOnly();
deviceMapping.addForeignKeyFieldName("DEVICEDB.DEVICEID", "DEVICE.DEVICEID");
descriptor.addMapping(deviceMapping);
return descriptor;
---------------------------partial mapping for ContactDB --------------
public Descriptor buildContactDBDescriptor() {
Descriptor descriptor = new Descriptor();
descriptor.setJavaClass(com.access.sync.business.contact.ContactDB.class);
descriptor.addTableName("DEVICEDB");
// Inheritance properties.
descriptor.getInheritancePolicy().setParentClass(com.access.sync.framework.systemObj.DeviceDB.class);
Any help is really appreciated.
jasonYour 1-1 mapping must not be read-only.
deviceMapping.readOnly();Read-only means the mapping will not write the field, and should only be used when another mapping does write the field. -
Missing mapping for field error
Here is the set up:
Person extends Party using InheritanceType.JOINED
Household extends Party_Relationship using InheritanceType.JOINED
Household has a Set of Persons mapped One to Many unidirectional
When I use PrimaryKeyJoinColumn on the Person and/or Household to rename the column say to PERSON_POID instead of PARTY_POID and when adding Persons to the Household Set the following error occurs:
oracle.toplink.essentials.exceptions.DescriptorException
Exception Description: Missing mapping for field [PERSON.PARTY_POID].
Descriptor: RelationalDescriptor(com.dhsnet.cms.domain.Person --> [DatabaseTable(PARTY), DatabaseTable(PERSON)])
What am I missing? If I do not use the PrimaryKeyJoinColumn mapping this error does not occur. I am stumped! Any help is greatly appreciated.
Here are the mappings:
@Entity
@TableGenerator(name="party", table="generator", pkColumnName="table_name",
valueColumnName="key_value", pkColumnValue="party", allocationSize=1)
@Table(name="PARTY")
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name = "PARTY_TYPE")
public abstract class Party extends AbstractEntity{
@Entity
@DiscriminatorValue("PERSON")
@PrimaryKeyJoinColumn(name="PERSON_POID")
public class Person extends Party{
@Entity
@Table(name="PARTY_RELATIONSHIP")
@TableGenerator(name="party_relationship", table="generator", pkColumnName="table_name",
valueColumnName="key_value", pkColumnValue="party_relationship", allocationSize=1)
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "PARTY_RELATIONSHIP_TYPE", discriminatorType=DiscriminatorType.STRING)
public abstract class PartyRelationship extends AbstractEntity {
@Entity
@DiscriminatorValue(value="HOUSEHOLD")
@PrimaryKeyJoinColumn(name="HOUSEHOLD_POID")
public class Household extends PartyRelationship {
On the Household Object:
@OneToMany
@JoinTable(joinColumns = @JoinColumn(name="HOUSEHOLD_POID"),
inverseJoinColumns = @JoinColumn(name="PERSON_POID"))
protected Set<Person> getMembers() {
return members;
}This looks to be the same/related issue that has already been entered. See
https://glassfish.dev.java.net/issues/show_bug.cgi?id=1586
The alternative like you mentioned, is to not use a PrimaryKeyJoinColumn to rename the column in the joined inheritance case.
Cheers,
Guy -
Hi All,
I am doing Flat file to Flat file Scenario.I am doing content conversion on both the sender and receiver side.I have twenty eight fileds on sender side and twenty eight fields on receiver side.When the Flat file is being picked up it is converting into XML and all the fields are clearly shown in SXMB_MONI.I have mapped every field during mapping.But when i check the payload in RWB in message monitoring the XML message which we can see after mapping in some records only 24 fields are being shown while in some records all 28 fields are being shown.When I check the same in test tab in message mapping it is working fine.Please help in this regard ASAP.
Thanks in Advance
DinakarSounds to me like you have some conditional mappings that are falling out and not returning values. If all your field mappings are one-to-one without conditions then the problem must be within the data itself. We've seen where certain XML control characters can mess up mappings (& and $ for example).
I don't suppose you are using an XSL mapping that you can post here for us to check out???
Chad -
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] No output
Hey,
try to do a scenario like "How to use ABAP mapping in SAP XI 3.0", but got no output.
Is it correct that we don't need a namespace for abap mapping? In the "How to" document the namespace field is empty, but in sxmb_moni he says:
<b> <SAP:AdditionalText>com.sap.aii.af.ra.ms.api.DeliveryException: error while processing the request to rfc-client: com.sap.aii.af.rfc.afcommunication.RfcAFWException: error while processing message to remote system:com.sap.aii.af.rfc.core.client.RfcClientException: could not get functionname from XML requst: com.sap.aii.af.rfc.RfcAdapterException: failed to read funtionname from XML document: missing namespace declaration(2)</SAP:AdditionalText> </b>
But he takes the ABAP mapping, because in ABAP code I create following trace node:
<i> DATA: l_trace TYPE string.
CONCATENATE 'Chris Sender Service = ' l_sender_service INTO l_trace.
trace->trace( level = '1'
message = l_trace ).</i>
And in sxmb_moni he got it:
<i><Trace level="1" type="T">Chris Sender Service =BS_Reisebuero2</Trace> </i>
In sxi_mapping_test he writes, that the mapping was successful, but didn't create the output structure. Do I have a wrong ABAP code? Could it be, that I have a wrong append_child??
Here it is (it equals the how to):
<i>
METHOD if_mapping~execute.
initialize iXML
TYPE-POOLS: ixml.
CLASS cl_ixml DEFINITION LOAD.
create main factory
DATA: ixmlfactory TYPE REF TO if_ixml.
ixmlfactory = cl_ixml=>create( ).
create stream factory
DATA: streamfactory TYPE REF TO if_ixml_stream_factory.
streamfactory = ixmlfactory->create_stream_factory( ).
create input stream
DATA: istream TYPE REF TO if_ixml_istream.
istream = streamfactory->create_istream_xstring( source ).
parse input document =================================================
initialize input document
DATA: idocument TYPE REF TO if_ixml_document.
idocument = ixmlfactory->create_document( ).
parse input document
DATA: iparser TYPE REF TO if_ixml_parser.
iparser = ixmlfactory->create_parser( stream_factory = streamfactory
istream = istream
document = idocument ).
iparser->parse( ).
**********get source elements**********************************
get message content of tag <carrid>
DATA: carrid TYPE REF TO if_ixml_node_collection.
carrid = idocument->get_elements_by_tag_name( 'carrid' ).
get message content of tag <connid>
DATA: connid TYPE REF TO if_ixml_node_collection.
connid = idocument->get_elements_by_tag_name( 'connid' ).
get message content of tag <fldate>
DATA: fldate TYPE REF TO if_ixml_node_collection.
fldate = idocument->get_elements_by_tag_name( 'fldate' ).
***********get meta datas****************************************
get XI header data (here: "Sender Service")
DATA: l_sender_service TYPE string.
l_sender_service = param->get( if_mapping_param=>sender_service ).
add trace (appears in message monitoring)
DATA: l_trace TYPE string.
CONCATENATE 'Chris Sender Service = ' l_sender_service INTO l_trace.
trace->trace( level = '1'
message = l_trace ).
build up output document =============================================
create output document
DATA: odocument TYPE REF TO if_ixml_document.
odocument = ixmlfactory->create_document( ).
create element SXIDEMO_AIRL_FLIGHT_CHECKAVAIL and add it to the document
DATA: sxidemo TYPE REF TO if_ixml_element.
sxidemo = odocument->create_simple_element(
name = 'SXIDEMO_AIRL_FLIGHT_CHECKAVAIL_chris'
parent = odocument ).
add FLIGHT_KEY node to the output document
DATA: flight_key TYPE REF TO if_ixml_node.
flight_key = carrid->get_item( index = 0 ).
DATA irc TYPE i.
irc = sxidemo->append_child( flight_key ).
***********add elements to output document *******************
add carrid node to the output document
DATA: outcode1 TYPE REF TO if_ixml_node.
outcode1 = carrid->get_item( index = 0 ).
irc = flight_key->append_child( outcode1 ).
add connid node to the output document
DATA: outcode2 TYPE REF TO if_ixml_node.
outcode2 = connid->get_item( index = 0 ).
irc = flight_key->append_child( outcode2 ).
add fldate node to the output document
DATA: outcode3 TYPE REF TO if_ixml_node.
outcode3 = fldate->get_item( index = 0 ).
irc = flight_key->append_child( outcode3 ).
Testen einer manuellen eingabe
outcode1 = odocument->create_simple_element(
name = 'passengerName'
value = 'Christian Riekenberg'
parent = flight_key ).
render document ======================================================
create output stream
DATA: ostream TYPE REF TO if_ixml_ostream.
ostream = streamfactory->create_ostream_xstring( result ).
create renderer
DATA: renderer TYPE REF TO if_ixml_renderer.
renderer = ixmlfactory->create_renderer( ostream = ostream
document = odocument ).
irc = renderer->render( ).
ENDMETHOD.
</i>
thanks
chris
Message was edited by:
Christian RiekenbergHi,
I took a working scenario, that is runnable with java- and graphical mapping.
Just change it to ABAP-Mapping.
I just had forget to include the namespace into abap mapping. So the output has to look like:
<ns1:SXIDEMO_AIRL_FLIGHT_CHECKAVAIL <b>xmlns:ns1="urn:sap-com:document:sap:rfc:functions"</b>>
That was the missing namespace. Another problem was my created structure. I used the function append_child with a wrong input.
Your tip, that I'm able to use the debugger in
sxi_mapping test was great. So points for you!
Message was edited by:
Christian Riekenberg -
ABAP mapping XML inside another XML
<b>Cross posted to ABAP Objects</b>
From XI we want to make an abap mapping.
The input xml looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:mt_dummy xmlns:ns0="http://kmd.dk/phh/externalEventEngine/pfhaen">
<details>
<Navn>Nielsen</Navn>
<Adresse><![CDATA[><?xml version="1.0" encoding="UTF-8"?><ns0:mt_dummy2 xmlns:ns0="http://kmd.dk/phh/externalEventEngine/pfhaen"><Details2><Vej>tingvej</Vej><Husnr>75</Husnr></Details2></ns0:mt_dummy2>]]></Adresse>
</details>
</ns0:mt_dummy>
One of the fields in this structure <Adresse> contains another xml structure. It is this structure we want as a result of our ABAP mapping. First we get the value of the field <Adresse>. This field contains the actual xml structure that we want to map. We convert the structure to xstring and run it through a new parser and create our output document.(See code below).
The code works fine if we just use a normal xml structure, but when one of the fields contains a XML structure and we want to parse this structure, we get the error. Is there anything we have missed, or is this not possible in ABAP mapping ?
If we test the code with SXI_MAPPING_TEST we get no errors, but in runtime we get the following error in SXMB_MONI:
The XML page document can not be shown
The XML document must have an element at the top level
method IF_MAPPING~EXECUTE.
initialize xml
type-pools: ixml.
class cl_ixml definition load.
*create main factory
data: ixmlfactory type ref to if_ixml.
ixmlfactory = cl_ixml=>create( ).
*create stream factory
data: streamfactory type ref to if_ixml_stream_factory.
streamfactory = ixmlfactory->create_stream_factory( ).
*create input stream
data: istream type ref to if_ixml_istream.
istream = streamfactory->create_istream_xstring( source ).
*initialize input document
data: idocument type ref to if_ixml_document.
idocument = ixmlfactory->create_document( ).
*parse input document
data: iparser type ref to if_ixml_parser.
iparser = ixmlfactory->create_parser( stream_factory = streamfactory
istream = istream
document = idocument ).
iparser->parse( ).
data: pnode type ref to if_ixml_node,
pnode2 type ref to if_ixml_node,
pnode3 type ref to if_ixml_node.
data: l_blob type string,
l_xml type string,
l_length type i.
pnode = idocument.
pnode2 = pnode->get_first_child( ).
pnode2 = pnode2->get_first_child( ).
pnode2 = pnode2->get_last_child( ).
l_blob = pnode2->get_value( ).
data: l_blob2 type xstring.
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING
TEXT = l_blob
MIMETYPE = ' '
ENCODING =
IMPORTING
BUFFER = l_blob2
EXCEPTIONS
FAILED = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*2. parse
*create main factory
data: ixmlfactory2 type ref to if_ixml.
ixmlfactory2 = cl_ixml=>create( ).
*create stream factory
data: streamfactory2 type ref to if_ixml_stream_factory.
streamfactory2 = ixmlfactory2->create_stream_factory( ).
*create input stream
data: istream2 type ref to if_ixml_istream.
istream2 = streamfactory2->create_istream_xstring( l_blob2 ).
*initialize input document
data: idocument2 type ref to if_ixml_document.
idocument2 = ixmlfactory2->create_document( ).
*parse input document
data: iparser2 type ref to if_ixml_parser.
iparser2 = ixmlfactory2->create_parser( stream_factory = streamfactory2
istream = istream2
document = idocument2 ).
iparser2->parse( ).
data: odocument type ref to if_ixml_document.
odocument = idocument2.
data: irc type i.
*render document----
*create output stream
data: ostream type ref to if_ixml_ostream.
ostream = streamfactory2->create_ostream_xstring( result ).
*create renderer
data: renderer type ref to if_ixml_renderer.
renderer = ixmlfactory2->create_renderer( ostream = ostream
document = odocument ).
irc = renderer->render( ).
endmethod.Hey,
It seems like the output is not a valid XML,
(I guess that the input XML is different from your test).
XML must have one element at the top level,
for example:
<A>
Ilan
</A>
<B>
Shani
</B>
is not a valid XML,
A valid XML should look like:
<mt_dummy>
<A>
Ilan
</A>
<B>
Shani
</B>
</mt_dummy>
In order to see the in-valid XML, press on the right-click mouse on the i.e error text,
and chose "view source". -
Regarding Field Missing in Dso Transformation
Hi
Folks
I am facing the issue like
In Datasouce to DSO transformation i can see the 55 objects in DSO table, and in DSO to Cube Transformation i can see 54 fields in DSO table, one field is missing , the object 0TXTSH(short discription) is mapped to field 0TXZ01in DS to DSO transformation.
so How can i get the field in DSO to Cube transformation.??
any settings have to be change???
waiting for yours Valuable answers
Regards
AnandHi,
Please identify the object and check it whether it is an attribute or a characteristic, if it is attribute only disable that option then check it.
Regards,
Srinivas -
Hi,
When i replicated CO-PA data into BI. It created two DS's:
0COPA_RCTY AND 1_CO_PA_XXXXXXX
I created an Infosource and transfer rules for 1_CO_PA_XXXXXXX but there are a few fields missing that i do see in the operating concern such as:
ARTNR=0MATERIAL
KNDNR=0CUSTOMER
BZIRK=0SALES_DIST
Why are these fields not in the Infosource since they are in the operating concern?
Where would they be?
ThanksDelete the data source and then need to re-create using KEB2 transaction. While re-creating the data source use the same old name so that there won't be any changes in the BW side when you need to assign the data source to info-source. Just replicate the new data source in BW side and map the new field in info-source.
(you can also try, goto KE24 and edit the dataaource and add your fields not 100% sure of it works)
how to select fields refer doc:
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/fb07ab90-0201-0010-c489-d527d39cc0c6 -
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
Maybe you are looking for
-
Query Invoices based on checked sites WHEN_BUTTON_PRESSED
Hello, I am newbie to Oracle Forms, Please correct me if iam wrong. Requirement: I have a Master-detail Block with Vendors and Vendors Sites. When i query a vendor, all his sites also will be listed. Against each site there is a check box. When i sel
-
Service Entry Sheet Release Procedure
Dear all, I want to assign a new Plant to an existing service entry release strategy. In CL20N for Class Type 032 and maintaining the Release Group and Release Strategy I want, I hit ENTER and the Class SERVICE_RELEASE is displayed, which is correct
-
Downloaded songs don't start at the beginning of the song, why?
the songs i bought from itunes don't start at the beginning of the song, it's just the preview clip.
-
Dear Guru's I have a requirement that system should generate unique Batch No. for each material receiveng lot from Purchase and Production Order. Like this. Material A PO No. 45/1 GR Qty 100 Batch No. 000001 Material A PO No. 45/2
-
Problem in SAP Script - Paragraph AS - Chars getting truncated at end of
Output for one of script is not getting printed correctly. When i see output of Script, text is printing beyond the end of line and last few characters are getting truncated. For ex: xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx