on 06-11-2014 12:53 PM
Dear all,
I have a input that looks like this:
HeaderKeySomeHeaderInformationItemKeySomeItemInformationItemKeySomeItemInformation...
Here's the actual input
TEHGMESS0026000000288S0001TEI2____026200006112410400000000 18010000000000 00126000000000126000120600000000002000000000 000WESTMONOBERTBE2014052309422408120003 000000000000000000000000000000JTEI2____026200006112410400000000 19010000000000 00126000000000126000120600000000002000000000 000WESTMONOBERTBE2014052309422408120003 000000000000000000000000000000J
HeaderKey = TEHGMESS
ItemKey = TEI2____
Is it possible to process this via MessageTransformBean (my actual scenario is JMS to IDoc)? I already tried but I only succeeded when having new lines in my input to separate between Header and (multiple) Items.
So when the input and my configuration looks like below it works, but when I only have a single row input it doesn't work, even when specifying xml.recordHeader.endSeparator = '0' / xml.recordItem.endSeparator = '0'. I even tried xml.endSeparator = '0' but no luck.
Input that works
TEHGMESS0026000000288S0001
TEI2____026200006112410400000000 18010000000000 00126000000000126000120600000000002000000000 000WESTMONOBERTBE2014052309422408120003 000000000000000000000000000000J
TEI2____026200006112410400000000 19010000000000 00126000000000126000120600000000002000000000 000WESTMONOBERTBE2014052309422408120003 000000000000000000000000000000J
Matching configuration that works for input which structures are delimited by new line.
Paramentername | Parametervalue |
---|---|
Transform.Class | com.sap.aii.messaging.adapter.Conversion |
Transform.ContentType | text/xml;charset=utf-8 |
xml.conversionType | StructPlain2XML |
xml.documentName | MT_TEI2Split |
xml.documentNamespace | http://hansgrohe.com/pi/MQ/TEI2/10 |
xml.keyFieldName | SATZARTKey |
xml.keyFieldType | CaseSensitiveString |
xml.processFieldNames | fromConfiguration |
xml.recordHeader.fieldFixedLengths | 8,4,9,1,4 |
xml.recordHeader.fieldNames | SATZARTKey,SATZLENHG,NUTZLEN,MESSAE,MESSNR |
xml.recordHeader.keyFieldValue | TEHGMESS |
xml.recordItem.fieldFixedLengths | 8,4,2,10,8,19,3,3,2,10,6,2,10,6,2,10,6,6,6,6,6,11,9,2,10,6,2,10,6,3,4,3,7,14,8,1,31 |
xml.recordItem.fieldNames | SATZARTKey,SATZLEN,BUCHART,TRNR,ANDGNR,MITEM,TEIVARI,BSTSTATU,REFTYP,ORNO,POS,REFTYP1,ORNO1,POS1,CHATYP,CHARGE,CHAPOS,ABBVONL,ABBNACH,ZUBVONL,ZUBNACH,I2MENG,I2BUNR,REFTYPN,ORNON,POSN,REFTYP1N,ORNO1N,POS1N,BSTSTATN,ABUSERAB,ABUSERFN,ABUSERNA,I2TIME,I2LIDNR,I2FMCODE,FILLER |
xml.recordItem.keyFieldValue | TEI2____ |
xml.recordsetName | records |
xml.recordsetStructure | recordHeader,1,recordItem,* |
Any clues on this? Is it even possible to have multiple structures in one row? Many thanks in advance
Jens
Thanks all for your valuable input. I asked SAP about this (however with low priority of course). So we'll have to wait a little bit 🙂
Will update this thread as soon as SAP answers.
If someone has other ideas, keep 'em coming
Cheers Jens
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
SAP came back to me with this answer:
First, I would like to point the documentation for Message Transform
Bean (MTB) in 7.4:
As it is written at the beginning of this document, MTB is used to
call classes written for the Plain Adapter Engine. So you may find
additional documentation about the parameters for convertion in the
documentation of the Plain Adapter Engine
(http://help.sap.com/saphelp_nw74/helpdata/en/0d/00453c91f37151e10000000a11402f/content.htm?frameset=...There it is written that the structures by default are
arranged line-by-line. The endSeparator just adds additional character
string as a separator after the last column in a row.
I hope that this answers your question. MTB expects the data to be
structured line by line.
You may add a custom module, which transforms the message in the
expected format.
If you have a look at the second link there's even a more precise wording that multiple structures within one line are not supported:
Even if no specification is made here, a line break must follow since substructures are always expected as a line of the document.
Bottom line is that it's not supported by now and verfied by me with PI 7.4 SP5
Many thanks to Ambrish, Amit and Hareesh for the valuable input. Will probably try to work things out for now following Ambrish's / Hareesh's suggestion as this seems easier to implement. Amit's proposal with a dedicated module however would probably be the more polished solution.
Cheers
Jens
Hi Jens,
Similar to what Amit has suggested, you can read the input as a string and break the input down into header and items in an intermediate message mapping before doing the final mapping to the target.
Ambrish
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks both,
different workarounds that sounds more or less feasible.
I did some more research and figured (on PI 7.0 SP 25) that the xml.recordHeader.endSeparator / xml.recordItem.endSeparator in fact seems not to have any effect. I could specify '0' or '0x09' or some other arbitrary stuff but the scenario keeps working if my file delimits header and items with newline no matter what I specify in xml.recordHeader.endSeparator or xml.recordItem.endSeparator.
Could this be considered a bug or does MTB simply not support xml.<structure>.endSeparator?
Cheers
Jens
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello,
Just to add a dfifferent dimension, u can create a simple module to format ur file i.e. split each line item in a new line and then use MTB.
Thanks
Amit Srivastava
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Not sure if you can achieve with message transformation bean if everything comes as part of single line.
But you can read the entire line as one string and handle the conversion during the mapping using split function.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.