on 2024 Nov 26 12:13 PM
Hello All,
I have a requirement to replace incoming xml element values with new values, those are set as headers/properties.
Input payload:
<EDI_DC40>
<TABNAM>ORDERSHIPPED</TABNAM>
<MANDT>100</MANDT>
<DOCNUM></DOCNUM>
<DOCREL>640</DOCREL>
<STATUS>5</STATUS>
<DIRECT>2</DIRECT>
<IDOCTYP>DELVRY03</IDOCTYP>
<CIMTYP/>
<MESTYP>YT_LA_WHSCON</MESTYP>
<SNDPOR>LS</SNDPOR>
<SNDPRT>DELVRY03</SNDPRT>
<SNDPRN>LS</SNDPRN>
<RCVPOR></RCVPOR>
<RCVPRT>DELVRY03</RCVPRT>
<RCVPRN>P77</RCVPRN>
<CREDAT>20240830</CREDAT>
<CRETIM>121540</CRETIM>
</EDI_DC40>
The SNDPRN and RCVPRN values need to be updated.
Output Required:
<EDI_DC40>
<TABNAM>ORDERSHIPPED</TABNAM>
<MANDT>100</MANDT>
<DOCNUM></DOCNUM>
<DOCREL>640</DOCREL>
<STATUS>5</STATUS>
<DIRECT>2</DIRECT>
<IDOCTYP>DELVRY03</IDOCTYP>
<CIMTYP/>
<MESTYP>YT_LA_WHSCON</MESTYP>
<SNDPOR>LS</SNDPOR>
<SNDPRT>DELVRY03</SNDPRT>
<SNDPRN>BTP_IS</SNDPRN>
<RCVPOR></RCVPOR>
<RCVPRT>DELVRY03</RCVPRT>
<RCVPRN>ZEUABC</RCVPRN>
<CREDAT>20240830</CREDAT>
<CRETIM>121540</CRETIM>
</EDI_DC40>
Can anyone share the script to achieve the required output.
Thanks,
Aditya
Request clarification before answering.
Hi
To achieve the required output where specific XML element values are replaced with new ones,
you can use the following Groovy script in integration platforms like SAP CPI or other similar environments:
import groovy.xml.XmlUtil
// Input payload
def inputPayload = '''<EDI_DC40>
<TABNAM>ORDERSHIPPED</TABNAM>
<MANDT>100</MANDT>
<DOCNUM></DOCNUM>
<DOCREL>640</DOCREL>
<STATUS>5</STATUS>
<DIRECT>2</DIRECT>
<IDOCTYP>DELVRY03</IDOCTYP>
<CIMTYP/>
<MESTYP>YT_LA_WHSCON</MESTYP>
<SNDPOR>LS</SNDPOR>
<SNDPRT>DELVRY03</SNDPRT>
<SNDPRN>LS</SNDPRN>
<RCVPOR></RCVPOR>
<RCVPRT>DELVRY03</RCVPRT>
<RCVPRN>P77</RCVPRN>
<CREDAT>20240830</CREDAT>
<CRETIM>121540</CRETIM>
</EDI_DC40>'''
// Parse the XML
def xml = new XmlParser().parseText(inputPayload)
// Replace values
xml.SNDPRN[0].value = 'BTP_IS'
xml.RCVPRN[0].value = 'ZEUABC'
// Convert back to string
def outputPayload = XmlUtil.serialize(xml)
// Return updated payload
return outputPayload
Output:
The script will produce the desired XML:
<EDI_DC40>
<TABNAM>ORDERSHIPPED</TABNAM>
<MANDT>100</MANDT>
<DOCNUM/>
<DOCREL>640</DOCREL>
<STATUS>5</STATUS>
<DIRECT>2</DIRECT>
<IDOCTYP>DELVRY03</IDOCTYP>
<CIMTYP/>
<MESTYP>YT_LA_WHSCON</MESTYP>
<SNDPOR>LS</SNDPOR>
<SNDPRT>DELVRY03</SNDPRT>
<SNDPRN>BTP_IS</SNDPRN>
<RCVPOR/>
<RCVPRT>DELVRY03</RCVPRT>
<RCVPRN>ZEUABC</RCVPRN>
<CREDAT>20240830</CREDAT>
<CRETIM>121540</CRETIM>
</EDI_DC40>
Note:
Adjust headers/properties dynamically if required by fetching values from variables or runtime configurations. Ensure the integration tool supports Groovy scripting.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
33 | |
21 | |
16 | |
8 | |
8 | |
6 | |
5 | |
4 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.