- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-15-2023 05:16 AM
Hello,
I need to fill an array in a SOAP-Request:
s.setStringParameterNoEscape('item.AddInfoAttribute', 'SAPProcessType');
s.setStringParameterNoEscape('item.AddInfoValue', 'YMIN');
But how is to achieve this in an array?
Thanks in advance!
Sven
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-15-2023 06:16 AM
Hi @Sven Brose ,
Variables don't only have to be placed within the xml elements. The elements themselves can be within variables too. For instance:
<IctAdditionalInfos>
<!--Zero or more repetitions:-->
<item>
<Guid>INC12345</Guid>
<ParentGuid>irbert566</ParentGuid>
<AddInfoAttribute>SAPMessageImpact</AddInfoAttribute>
<AddInfoValue>50</AddInfoValue>
</item>
${items}
</IctAdditionalInfos>
With that now you can build your xml from an array into the needed xml:
The following is an idea since I don't know how your data is coming in. I am assuming it's an array of objects containing the necessary values.
var whereverDataComesFrom = [
{
"AddInfoAttribute": "SAPProcessType",
"AddInfoValue": "YMIN"
},
{
"AddInfoAttribute": "SAPCategory",
"AddInfoValue": "YAS"
}
]
function buildXml(item){
var xml = [
"<item>",
"<AddInfoAttribute>",
item.AddInfoAttribute,
"</AddInfoAttribute>",
"<AddInfoValue>",
item.AddInfoValue,
"</AddInfoValue>",
"</item>"
]
//convert to string without commas
return xml.join("");
}
//combine all your items into a string of xml
var itemsArr = whereverDataComesFrom.map(buildXml).join("");
...
s.setStringParameterNoEscape('items', itemsArr);
Again that is one idea of how to do this. There probably could be a better example if you posted or described what the data structure is that holds the values.
Hope this helps.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-16-2023 03:40 AM
Hi Chris,
I've testet it, but the array will not be set in the parameter.
var itemsArr =
'<item><AddInfoAttribute>SAPProcessType</AddInfoAttribute><AddInfoValue>YMIN</AddInfoValue></item><item><AddInfoAttribute>SAPCategory</AddInfoAttribute><AddInfoValue>YAS</AddInfoValue></item>'
This is working, but only with on Attribute/Value-Pair:
Result is:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style"> <soapenv:Header/> <soapenv:Body> <urn:ProcessIncident> <IctAdditionalInfos> <!--Zero or more repetitions:--> <item> <Guid></Guid> <ParentGuid></ParentGuid> <AddInfoAttribute></AddInfoAttribute> <AddInfoValue></AddInfoValue> </item> </IctAdditionalInfos> <IctAttachments> <!-- <item> <AttachmentGuid></AttachmentGuid> <Filename></Filename> <MimeType></MimeType> <Data>cid:375667742933</Data> <Timestamp></Timestamp> <PersonId></PersonId> <Url></Url> <Language></Language> <Delete></Delete> </item>--> </IctAttachments> <IctHead> <IncidentGuid>680FC3B7975FED10310F74871153AF9F</IncidentGuid> <RequesterGuid>SERVICENOWRZS0SAPSOLUTIONMANAGER</RequesterGuid> <ProviderGuid>BF8D284C68335032E10000000A0ACCA6</ProviderGuid> <AgentId></AgentId> <ReporterId></ReporterId> <ShortDescription>Checkmk: WARN - T4 - Enterprise Alert</ShortDescription> <Priority></Priority> <Language>DE</Language> <RequestedBegin></RequestedBegin> <RequestedEnd></RequestedEnd> </IctHead> <IctId>INC0023258</IctId> <IctPersons> </IctPersons> <IctSapNotes> </IctSapNotes> <IctSolutions> </IctSolutions> <IctStatements> <!--Zero or more repetitions:--> <item> <TextType>YU99</TextType> <Texts> <!--Zero or more repetitions:--> <item><![CDATA[Host: T4 Service: Enterprise Alert Output: For testing purposes only - this check simulates a real state change and will change it´s state every hour. ]]></item> </Texts> <Timestamp></Timestamp> <PersonId></PersonId> <Language></Language> </item> </IctStatements> <IctTimestamp></IctTimestamp> <IctUrls> </IctUrls> </urn:ProcessIncident> </soapenv:Body> </soapenv:Envelope>
Still any Ideas?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-15-2023 06:16 AM
Hi @Sven Brose ,
Variables don't only have to be placed within the xml elements. The elements themselves can be within variables too. For instance:
<IctAdditionalInfos>
<!--Zero or more repetitions:-->
<item>
<Guid>INC12345</Guid>
<ParentGuid>irbert566</ParentGuid>
<AddInfoAttribute>SAPMessageImpact</AddInfoAttribute>
<AddInfoValue>50</AddInfoValue>
</item>
${items}
</IctAdditionalInfos>
With that now you can build your xml from an array into the needed xml:
The following is an idea since I don't know how your data is coming in. I am assuming it's an array of objects containing the necessary values.
var whereverDataComesFrom = [
{
"AddInfoAttribute": "SAPProcessType",
"AddInfoValue": "YMIN"
},
{
"AddInfoAttribute": "SAPCategory",
"AddInfoValue": "YAS"
}
]
function buildXml(item){
var xml = [
"<item>",
"<AddInfoAttribute>",
item.AddInfoAttribute,
"</AddInfoAttribute>",
"<AddInfoValue>",
item.AddInfoValue,
"</AddInfoValue>",
"</item>"
]
//convert to string without commas
return xml.join("");
}
//combine all your items into a string of xml
var itemsArr = whereverDataComesFrom.map(buildXml).join("");
...
s.setStringParameterNoEscape('items', itemsArr);
Again that is one idea of how to do this. There probably could be a better example if you posted or described what the data structure is that holds the values.
Hope this helps.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-16-2023 12:39 AM
Hi Chris,
thank you. I will try it as soon as possible. Will give you feedback.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-16-2023 03:40 AM
Hi Chris,
I've testet it, but the array will not be set in the parameter.
var itemsArr =
'<item><AddInfoAttribute>SAPProcessType</AddInfoAttribute><AddInfoValue>YMIN</AddInfoValue></item><item><AddInfoAttribute>SAPCategory</AddInfoAttribute><AddInfoValue>YAS</AddInfoValue></item>'
This is working, but only with on Attribute/Value-Pair:
Result is:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style"> <soapenv:Header/> <soapenv:Body> <urn:ProcessIncident> <IctAdditionalInfos> <!--Zero or more repetitions:--> <item> <Guid></Guid> <ParentGuid></ParentGuid> <AddInfoAttribute></AddInfoAttribute> <AddInfoValue></AddInfoValue> </item> </IctAdditionalInfos> <IctAttachments> <!-- <item> <AttachmentGuid></AttachmentGuid> <Filename></Filename> <MimeType></MimeType> <Data>cid:375667742933</Data> <Timestamp></Timestamp> <PersonId></PersonId> <Url></Url> <Language></Language> <Delete></Delete> </item>--> </IctAttachments> <IctHead> <IncidentGuid>680FC3B7975FED10310F74871153AF9F</IncidentGuid> <RequesterGuid>SERVICENOWRZS0SAPSOLUTIONMANAGER</RequesterGuid> <ProviderGuid>BF8D284C68335032E10000000A0ACCA6</ProviderGuid> <AgentId></AgentId> <ReporterId></ReporterId> <ShortDescription>Checkmk: WARN - T4 - Enterprise Alert</ShortDescription> <Priority></Priority> <Language>DE</Language> <RequestedBegin></RequestedBegin> <RequestedEnd></RequestedEnd> </IctHead> <IctId>INC0023258</IctId> <IctPersons> </IctPersons> <IctSapNotes> </IctSapNotes> <IctSolutions> </IctSolutions> <IctStatements> <!--Zero or more repetitions:--> <item> <TextType>YU99</TextType> <Texts> <!--Zero or more repetitions:--> <item><![CDATA[Host: T4 Service: Enterprise Alert Output: For testing purposes only - this check simulates a real state change and will change it´s state every hour. ]]></item> </Texts> <Timestamp></Timestamp> <PersonId></PersonId> <Language></Language> </item> </IctStatements> <IctTimestamp></IctTimestamp> <IctUrls> </IctUrls> </urn:ProcessIncident> </soapenv:Body> </soapenv:Envelope>
Still any Ideas?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-16-2023 04:49 AM
Some of questions:
- When you used 'IctAdditionalInfos' and 'items' did you change your variables in the Web Service set up and replaced any elements to reflect that?
- Are you worried about the format? The result usually doesn't need to be neatly formatted unless that is some requirement on the third party system that you're integrating with.
- I can only go by the information you're providing here. Are you able to give some sort of example of what structure your data is coming in as? Can you also show what the SOAP message looks like before the actual values go in and where the variables are? It doesn't have to contain real values, we're working on the concept here.