https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/Cloud-Integration-qa.xml SAP Community - Cloud Integration 2025-05-14T23:00:10.927895+00:00 python-feedgen Cloud Integration Q&A in SAP Community https://community.sap.com/t5/technology-q-a/groovy-script-generate-dynamic-filename/qaq-p/14080635 Groovy Script : Generate Dynamic Filename 2025-04-19T15:17:27.602000+02:00 Corrupt-07 https://community.sap.com/t5/user/viewprofilepage/user-id/1982075 <P>import com.sap.gateway.ip.core.customdev.util.Message</P><P>import java.text.SimpleDateFormat</P><P>&nbsp;</P><P>def Message processData(Message message) {</P><P>&nbsp; &nbsp; def date = new Date()</P><P>&nbsp; &nbsp; def sdf = new SimpleDateFormat("yyyyMMdd_HHmmss")</P><P>&nbsp; &nbsp; def timestamp = sdf.format(date)</P><P>&nbsp; &nbsp; def fileName = "Invoice_" + timestamp + ".pdf"</P><P>&nbsp;</P><P>&nbsp; &nbsp; message.setProperty("dynamicFilename", fileName)</P><P>&nbsp; &nbsp; return message</P><P>}</P> 2025-04-19T15:17:27.602000+02:00 https://community.sap.com/t5/technology-q-a/po-to-btp-is-migration-query-parameters-in-http-receiver-adapter/qaq-p/14084669 PO to BTP - IS Migration : Query parameters in HTTP receiver adapter 2025-04-23T15:43:11.455000+02:00 aditya_20 https://community.sap.com/t5/user/viewprofilepage/user-id/876377 <P>Hello all,</P><P>I'm migrating an HTTP interface from PO to BTP-IS. Just wanted to know how the query parameters option in PO HTTP receiver can be implemented in HTTP receiver adapter in CPI.</P><P>Attaching the PO configuration screenshot for reference.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aditya_20_0-1745415551622.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/254101i3A513C86745C17CA/image-size/medium?v=v2&amp;px=400" role="button" title="aditya_20_0-1745415551622.png" alt="aditya_20_0-1745415551622.png" /></span></P><P>Thank you,</P><P>Aditya</P> 2025-04-23T15:43:11.455000+02:00 https://community.sap.com/t5/technology-q-a/cpi-alert-notification-template-in-groovy/qaq-p/14084932 CPI Alert Notification Template in Groovy 2025-04-24T02:31:59.448000+02:00 stephen_xue https://community.sap.com/t5/user/viewprofilepage/user-id/214851 <P>This is a simple one. I just developed a simple program for generating alert notification mail body in HTML catching the exception raised by the Cloud Integration Framwork.&nbsp;</P><P>You need to configure a separated mail receiver for pushing the content into whoever concerns. <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span></P><P>One of the benifit of using this piece of code is that , the only input parameter is: mail-receiver.</P><P>or if you do not want to even configure it , you can put the receiver in the value mapping</P><pre class="lia-code-sample language-java"><code>valueMapApi.getMappedValue('CPI', 'cpi:office365:receiver', 'receiver', 'OFFICE365', 'cpi:office365:receiver')</code></pre><P>Please read the code carefully before using it and you take your own responsibility for the consequence. <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span></P><pre class="lia-code-sample language-java"><code>import com.sap.gateway.ip.core.customdev.util.Message import org.apache.camel.Exchange import org.apache.camel.builder.SimpleBuilder import java.time.Instant import java.time.ZoneId import java.time.ZonedDateTime import com.sap.it.api.ITApiFactory import com.sap.it.api.mapping.ValueMappingApi /* ************************************************************************ Program : AlertNotification.groovy Create Date : Mar-26-2025 Author : Stephen Xue Parameters : message --&gt; message reference from framework; testFlag--&gt; true for test mode; default for production code mode; Function : 1. Source: HTTP Header alert-receiver Target: HTML *************************************************************************/ Message processData(Message message) { def map = message.getProperties(); def msgID = map.get("SAP_MessageProcessingLogID"); def receivers = map.get("alert-receiver");; def exceptionMessage, exceptionCode,exceptionName, tenantType; // Tenant type: prod or non-prod def tenant = System.getenv("TENANT_NAME"); if(tenant.contains('-non-')){ tenantType = 'Non-Prod'; }else{ tenantType = 'Prod'; } // Get receiver from ValueMappingApi if(receivers == "" || receivers == null ){ def valueMapApi = ITApiFactory.getApi(ValueMappingApi.class, null); try{ receivers = valueMapApi.getMappedValue('CPI', 'cpi:office365:receiver', 'receiver', 'OFFICE365', 'cpi:office365:receiver'); }catch(Exception e){ receivers = "yourusername@example.com"; } } message.setHeader('mail-receiver',receivers); // Get iflow name and subject Exchange exchange = message.exchange; def evaluateSimple = { simpleExpression -&gt; SimpleBuilder.simple(simpleExpression).evaluate(exchange, String); } def iflowName = evaluateSimple('${camelId}'); def subject = "[${tenantType}]iFlow: '${iflowName}' has error"; // Get system time Instant instant = Instant.now(); ZoneId zoneId = ZoneId.of( "Australia/Melbourne" ); ZonedDateTime zdt = instant.atZone( zoneId ); def systemTime = zdt.toString(); // Get Message Link String url = System.getenv("TENANT_NAME")+"."+System.getenv("IT_SYSTEM_ID")+"."+System.getenv("IT_TENANT_UX_DOMAIN"); def msgIDLink = "https://"+url+":443/itspaces/shell/monitoring/MessageDetails/%7B%22messageGuid%22%3A%22"+msgID+"%22%7D"; def ex = map.get("CamelExceptionCaught"); if (ex!=null) { // Exception Handling in OData V2 Receiver Adapter if(ex.getClass().getCanonicalName().equals("com.sap.gateway.core.ip.component.odata.exception.OsciException")){ exceptionMessage = ex.getMessage(); exceptionCode = message.getHeaders().get("CamelHttpResponseCode").toString(); exceptionName = ex.getClass().getCanonicalName(); // Exception Handling in HTTP Receiver }else if(ex.getClass().getCanonicalName().equals("org.apache.camel.component.ahc.AhcOperationFailedException")){ exceptionMessage = ex.getResponseBody(); exceptionCode = message.getHeaders().get("CamelHttpResponseCode").toString(); exceptionName = ex.getClass().getCanonicalName(); }else{ exceptionMessage = ex.getMessage(); exceptionCode = message.getHeaders().get("CamelHttpResponseCode").toString(); exceptionName = ex.getClass().getCanonicalName(); } mailBody = "&lt;!DOCTYPE html&gt;\n" + "&lt;html lang=\"en\"&gt;\n" + "&lt;head&gt;\n" + " &lt;meta charset=\"UTF-8\" /&gt;\n" + " &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /&gt;\n" + " &lt;title&gt;EMAIL&lt;/title&gt;\n" + " &lt;style&gt;\n" + "table, th, td {\n" + " border: 1px solid black;\n" + "}\n" + "&lt;/style&gt;\n" + "&lt;/head&gt;\n" + "&lt;body&gt;\n" + "&lt;p&gt;Hi,&lt;br&gt;&lt;br&gt;\n" + "Please find below details for Interface Message failure.&lt;br&gt;\n" + "&lt;table&gt;\n" + " &lt;tr&gt;\n" + " &lt;td&gt;&lt;span style=\"font-weight:bold\"&gt;Tenant Type&lt;/span&gt;&lt;/td&gt;\n" + " &lt;td&gt;${tenantType}&lt;/td&gt;\n" + " &lt;/tr&gt;\n" + " &lt;tr&gt;\n" + " &lt;td&gt;&lt;span style=\"font-weight:bold\"&gt;iFlow Name&lt;/span&gt;&lt;/td&gt;\n" + " &lt;td&gt;${iflowName}&lt;/td&gt;\n" + " &lt;/tr&gt;\n" + " &lt;tr&gt;\n" + " &lt;td&gt;&lt;span style=\"font-weight:bold\"&gt;Message ID&lt;/span&gt;&lt;/td&gt;\n" + " &lt;td&gt;&lt;a href=\"${msgIDLink}\"&gt;${msgID}&lt;/a&gt;&lt;/td&gt;\n" + " &lt;/tr&gt;\n" + " &lt;tr&gt;\n" + " &lt;td&gt;&lt;span style=\"font-weight:bold\"&gt;HTTP Status&lt;/span&gt;&lt;/td&gt;\n" + " &lt;td&gt;${exceptionCode}&lt;/td&gt;\n" + " &lt;/tr&gt;\n" + " &lt;tr&gt;\n" + " &lt;td&gt;&lt;span style=\"font-weight:bold\"&gt;Timestamp&lt;/span&gt;&lt;/td&gt;\n" + " &lt;td&gt;${systemTime}&lt;/td&gt;\n" + " &lt;/tr&gt;\n" + " &lt;tr&gt;\n" + " &lt;td&gt;&lt;span style=\"font-weight:bold\"&gt;Exception&lt;/span&gt;&lt;/td&gt;\n" + " &lt;td&gt;${exceptionName}&lt;/td&gt;\n" + " &lt;/tr&gt;\n" + " &lt;tr&gt;\n" + " &lt;td&gt;&lt;span style=\"font-weight:bold\"&gt;Error Message&lt;/span&gt;&lt;/td&gt;\n" + " &lt;td&gt;${exceptionMessage}&lt;/td&gt; \n" + " &lt;/tr&gt;\n" + "&lt;/table&gt;&lt;br&gt;\n" + "Do Not Reply to this mail. Please contact SAP-Integration Team for further investigation.&lt;br&gt;&lt;br&gt;\n" + "Regards,&lt;br&gt;\n" + "SAP Integration Team.\n" + "&lt;/p&gt;\n" + "&lt;/body&gt;\n" + "&lt;/html&gt;"; message.setHeader('subject',subject); message.setBody(mailBody); } message.setHeader('mime-type','text/html'); return message; }</code></pre><P>&nbsp;This is how the alert notification looks like in my mail box.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="stephen_xue_0-1745454632634.png" style="width: 580px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/254181i434187E30B0F7D73/image-dimensions/580x219?v=v2" width="580" height="219" role="button" title="stephen_xue_0-1745454632634.png" alt="stephen_xue_0-1745454632634.png" /></span></P><P>feel free to modify the code and have fun.&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P> 2025-04-24T02:31:59.448000+02:00 https://community.sap.com/t5/technology-q-a/event-mesh-v-s-cloud-integration-jms-adapter/qaq-p/14085138 Event Mesh v.s. Cloud Integration - JMS Adapter 2025-04-24T08:40:51.074000+02:00 shin861231 https://community.sap.com/t5/user/viewprofilepage/user-id/1484100 <P class="">Hello Experts,</P><P class="">&nbsp;</P><P class=""><STRONG>My understanding:</STRONG> To achieve asynchronous system integration, Event Mesh is often used. However, according to a<A href="https://www.linkedin.com/posts/venkateswaran-krishnamurthy-46580210_jms-adapter-in-sap-cpi-the-jms-java-activity-7286269234106560512-8GSl" target="_self" rel="nofollow noopener noreferrer"> blog</A>, asynchronous integration can also be achieved without Event Mesh by using the JMS Adapter within Cloud Integration.</P><P class=""><STRONG>Questions:</STRONG></P><OL class=""><LI>Is my understanding correct?</LI><LI>If my understanding is correct, what are the advantages and disadvantages of using Event Mesh versus Cloud Integration - JMS Adapter?</LI><LI>Are there specific use cases for Event Mesh versus Cloud Integration - JMS Adapter? Explanations with examples are appreciated. (when to use event mesh, and when to use JMS Adapter?)</LI><LI>When subscribing Services in BTP Cockpit, Event Mesh must be registered separately from Integration Suite. Does this mean the costs are calculated separately?</LI></OL><P class="">Thank you.</P> 2025-04-24T08:40:51.074000+02:00 https://community.sap.com/t5/technology-q-a/choosing-the-right-authorization-method-in-sap-integration-suite/qaq-p/14085158 Choosing the Right Authorization Method in SAP Integration Suite 2025-04-24T08:58:20.399000+02:00 StefanK https://community.sap.com/t5/user/viewprofilepage/user-id/1558946 <P>Hi everyone,</P><P>I'm curious to know which authorization methods you prefer when working with the SAP Integration Suite, including OAuth, Basic Authentication, and Client Certificate Authentication. I've noticed that using Client Certificate Authentication can be more complex due to the need to update certificates with all communication partners every 365 days.</P><P>Given these considerations, do you have recommendations or best practices to share? Additionally, does SAP provide any guidance on preferred authorization methods for specific scenarios?</P><P>Looking forward to hearing your insights!</P><P>Thanks!</P><P>Kind regards,</P><P>Stefan</P> 2025-04-24T08:58:20.399000+02:00 https://community.sap.com/t5/technology-q-a/sap-cpi-not-able-to-pick-done-file/qaq-p/14085614 SAP CPI: Not able to pick done file 2025-04-24T15:43:24.061000+02:00 MohitRelwani https://community.sap.com/t5/user/viewprofilepage/user-id/1498846 <P>Using Sender SFTP, I am trying to pick the Main file based on Read lock strategy as Completion file.</P><P>&nbsp;</P><P>Main file Naming Format: abc.TXT<BR />Done/completion File Format: abc_CMPL.TXT</P><P>What should be the format of Done file Naming. Seems it only supports when extension is .done.<BR /><BR />Please suggest</P><P>&nbsp;</P> 2025-04-24T15:43:24.061000+02:00 https://community.sap.com/t5/technology-q-a/certficate-expiry-notification-in-sap-integration-suite/qaq-p/14085845 Certficate expiry notification in SAP Integration Suite 2025-04-24T20:39:09.882000+02:00 ramu_g4 https://community.sap.com/t5/user/viewprofilepage/user-id/245959 <P>Hi Experts,</P><P>We have received notification regarding the certificate expiry for Baltimore CyberTrust Root Certificate on 13th May 2025 in Integration Suite. We are not sure whether it really affects us,&nbsp; There are certain steps that needs to be taken mentioned in <A href="https://me.sap.com/notes/3565626/E" target="_blank" rel="noopener noreferrer">https://me.sap.com/notes/3565626/E</A>&nbsp; . Eventhough this certificate is not used currently, it is better to update the certificate right? Pls guide regarding this.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ramu_g4_1-1745519792760.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/254500iD414D0D6114C9213/image-size/medium?v=v2&amp;px=400" role="button" title="ramu_g4_1-1745519792760.png" alt="ramu_g4_1-1745519792760.png" /></span></P><P>&nbsp;</P><P>Thanks,</P><P>Ramu.</P><P>&nbsp;</P> 2025-04-24T20:39:09.882000+02:00 https://community.sap.com/t5/technology-q-a/exactly-once-in-order-eoio-for-group-messages-using-advanced-event-mesh/qaq-p/14086945 Exactly once in order (EOIO) for Group messages using Advanced Event Mesh 2025-04-26T06:32:23.346000+02:00 anuj_dulta1 https://community.sap.com/t5/user/viewprofilepage/user-id/788776 <P>Hi there,</P><P>We have recently introduced SAP Advanced Event Mesh (AEM), which under the hood is ‘Solace PubSub+ Cloud’ in our Integration Landscape, and now I am seeking for the best way to implement ‘Exactly Once In Order’ Sequencing in our Integration.</P><P>We are on Version 10.9.1.114-0.</P><P><STRONG>The Integration</STRONG> is going to do the following:</P><OL><LI>Source System will Publish the Switching Job details (XML) to SAP AEM from WebLogic JMS Server.</LI><LI>We have another SAP Integration Layer which then subscribes to the Solace Queue (or Topic), does Message Transformation, and then forwards that to External System.</LI></OL><P><STRONG>The Challenge:</STRONG></P><P>We want messages belonging to one Job (lets say Job A), should be delivered to External System in Sequence. Lets say Job A has Operation 1, 2 and 3. If for some reason Operation 2 fails to get delivered to External System, Job 3 should not go. However, Job B and it’s Operations can continue to go as usual.</P><P>So, we need FIFO for individual Job Operation, and not across all the Job Operations.</P><P><STRONG>Analysis done so far:</STRONG></P><OL><LI>We can create <STRONG>One Exclusive Queue and One DMQ</STRONG> for the process, and Publish everything there. By doing it all the Jobs and their Operations will follow Sequence by Default. In All the Success scenarios, this should be okay (I guess). But in case of failure, the message will move to DMQ and the Subsequent message for one Job will not know and ‘might’ get processed.</LI><LI>I went through Partition Queues, but that doesn’t seem to fit the purpose, as there the messages (Job Operations in our case) of one Job can go to any Partition</LI><LI>Non-Durable (Temporary) Queues: What I have understood so far, we can request the Publisher (Client) to create Queues Dynamically and all the messages (Operation) of one Job should be sent to ONE Queue. As soon as those messages are consumed by our SAP Integration and forwarded to Externally System, these Queues get deleted - I am not 100% sure if this is how this will behave. In case of failures, I would expect the Queue remains intact and messages belonging to that Queue will pile up, without impacting the other Jobs.</LI><LI>We can introduce a persistence layer to store the failed messages. Every message consumed from the queue will first be checked (using some checksum) to see if any message for that Operation has failed in the past and if yes, the push the message to DMQ or else continue normal. I will then have to keep DMQ and this persistence layer in sync. Or just use this persistence and not DMQ.</LI></OL><P><STRONG>Following things are Mandatory:</STRONG></P><OL><LI>Guaranteed Delivery of the messages to External System</LI><LI>Order of Operations belonging to same Job should be maintained</LI><LI>Order for Different Jobs is not Mandatory, and those can be parallelly processed.</LI></OL><P>Any help on this would be really appreciated.</P><P>-Anuj</P> 2025-04-26T06:32:23.346000+02:00 https://community.sap.com/t5/technology-q-a/jars-to-develop-groovy-locally/qaq-p/14089097 JARs to develop groovy locally 2025-04-29T09:08:40.229000+02:00 milan_10 https://community.sap.com/t5/user/viewprofilepage/user-id/150158 <P>Hi,</P><P>is there a way how to get the required jars in order to be able to develop/run and test groovy scripts locally using your IDE?</P><P>I see this Blog:&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-members/exploring-cpi-s-filesystem-s-content/ba-p/13414683" target="_blank">https://community.sap.com/t5/technology-blogs-by-members/exploring-cpi-s-filesystem-s-content/ba-p/13414683</A></P><P>from 2019 how to get the required jars from CI using iFlow... This way seems not to work anymore, but I really would expect that SAP somehow offer these jars to download...</P><P>Thanks for any help.</P><P>Milan</P> 2025-04-29T09:08:40.229000+02:00 https://community.sap.com/t5/technology-q-a/valid-parameters-for-events-api-to-fetch-mdi-data/qaq-p/14091421 Valid parameters for events API to fetch MDI data? 2025-05-01T19:08:13.133000+02:00 SoumenDas https://community.sap.com/t5/user/viewprofilepage/user-id/1462880 <P>We are able to push data from MDG to MDI &amp; need to cascade this data to various consumers. Tried using MDI adapter in IS-CI but it always returns blank response. Tried using HTTP adapter instead and it fetches the whole load alright. Now I am trying to restrict the GET call to fetch only last day data but doesn't look like I am able to get the correct filter parameter.&nbsp;</P><P>The GET URL being used is&nbsp;<SPAN><A href="https://community.sap.com/" target="_blank" rel="nofollow noopener noreferrer">https://&lt;domain&gt;/v1/odm/3.1.0/sap.odm.finance.costobject.CostCenter/events</A><BR /><BR />This gives the full load alright. But on daily basis I need to have only last day load. What should be the parameter to get that? Tried looking for documentation but doesnt seem to be reaching the right place in the ocean of docs from SAP.<BR /><BR />Thanks in Advance.</SPAN></P> 2025-05-01T19:08:13.133000+02:00 https://community.sap.com/t5/financial-management-q-a/how-to-check-if-customer-invoice-is-paid-in-byd-via-odata/qaq-p/14093315 How to check if customer invoice is paid in ByD via OData 2025-05-05T12:51:55.906000+02:00 mathiasmueller-aico https://community.sap.com/t5/user/viewprofilepage/user-id/884665 <P>Dear SAP community,</P><P class="">I have a problem finding the correct Business Object name and field while configuring an OData service in SAP ByDesign.</P><P class="">I’m trying to check whether the client’s invoice is open or cleared. I found this article, but it didn’t help me much:<A href="https://community.sap.com/t5/technology-q-a/how-to-check-if-customer-invoice-is-paid-in-byd-via-webservice/qaq-p/12506714" target="_blank">https://community.sap.com/t5/technology-q-a/how-to-check-if-customer-invoice-is-paid-in-byd-via-webservice/qaq-p/12506714</A><BR /><BR /></P><P class="">I’m not sure which Business Object (BO) it should be. Has anyone else encountered this issue before?</P><P class="">To make things clearer, I’m including some screenshots below showing the exact location where the status is displayed.</P><P class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-05-05 at 12.42.20.png" style="width: 632px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/257615iFF6BEB7E9EECB70F/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2025-05-05 at 12.42.20.png" alt="Screenshot 2025-05-05 at 12.42.20.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-05-05 at 12.42.25.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/257613iF5C583D9B3333EEA/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2025-05-05 at 12.42.25.png" alt="Screenshot 2025-05-05 at 12.42.25.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-05-05 at 12.42.35.png" style="width: 310px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/257614i3CFB29380421654E/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2025-05-05 at 12.42.35.png" alt="Screenshot 2025-05-05 at 12.42.35.png" /></span></P><P class="">&nbsp;</P><P class="">In the OData Configuration Tool, I tried to select the BO name <I>CustomerInvoice</I>, but it doesn’t seem to be the correct one.</P><P class="">Can someone please assist me with this?</P><P>Best wishes!</P><P>   </P><P><BR /><BR /><BR /></P> 2025-05-05T12:51:55.906000+02:00 https://community.sap.com/t5/technology-q-a/sap-cpi-is-not-picking-few-files-from-sender-sftp-al11/qaq-p/14095141 SAP CPI is not picking few files from Sender SFTP AL11. 2025-05-07T10:17:04.930000+02:00 NikhilChary https://community.sap.com/t5/user/viewprofilepage/user-id/807879 <P>Daily around 40 files will be placed in AL11 in one of the directory and initially due to some issue with 9 files the files went to processing mode in SAP CPI for 24 hrs and they we're discarded. Since then those file names are not being picked up by CPI, we tried to change the file name they we're successful but I need the exact file names to be processed from the same directory (client requirement) and post processing they should be placed in archive folder. Is there any solution to it, Receiver is also SFTP and we're reading the file name from property and on receiver side the filename is called through property so I cannot append timestamp. client requirement is the filename should be same daily so that they should overwrite the existing file daily. Below is the SFTP detail for reference.<BR /><BR /></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NikhilChary_0-1746605505198.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/258334iD1430E2FED286C06/image-size/medium?v=v2&amp;px=400" role="button" title="NikhilChary_0-1746605505198.png" alt="NikhilChary_0-1746605505198.png" /></span></P><P>&nbsp;</P> 2025-05-07T10:17:04.930000+02:00 https://community.sap.com/t5/technology-q-a/accessing-sap-graph-odata-v4-through-sap-cloud-integration-cpi/qaq-p/14095338 Accessing SAP Graph OData V4 through SAP Cloud Integration (CPI) 2025-05-07T13:05:48.437000+02:00 Aishwarya_Pola https://community.sap.com/t5/user/viewprofilepage/user-id/2090996 <H2 id="toc-hId-1710189775">Introduction</H2><P>This blog explains how to access an SAP Graph OData V4 URL using SAP Cloud Integration (CPI). We will configure the connection, use OAuth 2.0 Client Credentials, and query data using OData parameters.</P><H2 id="toc-hId-1513676270"><SPAN>What is SAP Graph?</SPAN></H2><P><SPAN>SAP Graph is a unified API that provides a simplified, single interface to access data across various SAP systems (like SAP S/4HANA, SAP SuccessFactors, SAP Sales Cloud, etc.). It helps developers interact with complex SAP systems using a consistent API structure, making integration and data access easier.</SPAN></P><H2 id="toc-hId-1317162765">Prerequisites</H2><UL><LI><P>Access to SAP BTP with an SAP Graph instance.</P></LI><LI><P>OAuth 2.0 Client Credentials for SAP Graph.</P></LI><LI><P>SAP CPI with design privileges.</P></LI></UL><H2 id="toc-hId-1120649260"><SPAN>Step 1: Create OAuth 2.0 Credentials</SPAN></H2><OL><LI><P><SPAN>In SAP BTP Cockpit, navigate to your SAP Graph instance.</SPAN></P></LI><LI><P><SPAN>Go to Security and create OAuth 2.0 client credentials.</SPAN></P></LI><LI><P><SPAN>Note the Client ID and Client Secret.</SPAN></P></LI><LI><P><SPAN>Save the credentials in </SPAN><SPAN><STRONG>Security Material</STRONG></SPAN><SPAN> of CPI as a new OAuth2 Client Credentials artifact (e.g., Credential Name: </SPAN><SPAN>GraphOAuthCredentials</SPAN><SPAN>).</SPAN></P></LI></OL><H2 id="toc-hId-924135755"><SPAN>Step 2: Get the SAP Graph URL</SPAN></H2><OL><LI><P><SPAN>In SAP Integration Suite, navigate to the </SPAN><SPAN><STRONG>Design</STRONG></SPAN><SPAN> section.</SPAN></P></LI><LI><P><SPAN>Inside </SPAN><SPAN><STRONG>Business Data Graph</STRONG></SPAN><SPAN>, you can find the OData V4 URL for your SAP Graph instance.</SPAN></P></LI><LI><P><SPAN>Copy the OData V4 URL (e.g., </SPAN><SPAN>https://&lt;your-graph-url&gt;/graph/api/graphdemo</SPAN><SPAN>).</SPAN></P></LI></OL><H2 id="toc-hId-727622250">Step 3: Configure OData Connection in CPI</H2><OL><LI><P>Log in to SAP CPI, go to Design, and create an Integration Flow.</P></LI><LI><P>Add a Start Timer and a Request Reply step.</P></LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Aishwarya_Pola_0-1746610838349.png" style="width: 764px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/258404i8EEA39716D701D2E/image-dimensions/764x386?v=v2" width="764" height="386" role="button" title="Aishwarya_Pola_0-1746610838349.png" alt="Aishwarya_Pola_0-1746610838349.png" /></span></P><P>&nbsp; &nbsp; 3. Set connection details:</P><UL><LI><P>Address: <FONT color="#000000">https://&lt;your-graph-url&gt;/graph/api/graphdemo/sap.s4</FONT></P></LI><LI><P>Authentication: OAuth2 Client Credentials</P></LI><LI><P><SPAN>Credential Name: </SPAN><SPAN>GraphOAuthCredentials</SPAN></P></LI></UL><P>&nbsp;</P><H2 id="toc-hId-531108745">Step 3: Set the Resource Path</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Aishwarya_Pola_1-1746611173389.png" style="width: 773px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/258405iB0CD32AD6A97A194/image-dimensions/773x417?v=v2" width="773" height="417" role="button" title="Aishwarya_Pola_1-1746611173389.png" alt="Aishwarya_Pola_1-1746611173389.png" /></span></P><P>&nbsp;</P><UL><LI><P>Resource Path: A_SalesOrder</P></LI><LI><P>Query: $select=SalesOrder,SoldToParty&amp;$filter=SalesOrder eq '1'&amp;$expand=_SoldToParty</P></LI></UL><H2 id="toc-hId-334595240">Step 4: Deploy and Test</H2><OL><LI><P>Deploy the integration flow.</P></LI><LI><P>Monitor message processing to verify the response.</P></LI></OL><H2 id="toc-hId-138081735">Conclusion</H2><P>You have successfully configured SAP CPI to access SAP Graph OData V4 using OAuth 2.0 authentication.</P> 2025-05-07T13:05:48.437000+02:00 https://community.sap.com/t5/technology-q-a/ariba-integration-with-s4-public-cloud-using-mdi/qaq-p/14095528 Ariba integration With S4 public cloud using MDI 2025-05-07T16:43:14.245000+02:00 EsraaMoubarek https://community.sap.com/t5/user/viewprofilepage/user-id/140465 <P>Hi Dears ,</P><P><SPAN>We need to integrate S4 public cloud with Ariba . Is it possible to integrate via Master Data Integration (Orchestration) application and MDI BTP service only or we have&nbsp; to use CIG "SAP Integration Suite, managed gateway for spend management and SAP Business Network" ?<BR /></SPAN><SPAN>can Ariba be a sender or receiver only as per this photo ?</SPAN></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="EsraaMoubarek_0-1746625393588.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/258470iB7B604DAC6BEBCCD/image-size/medium?v=v2&amp;px=400" role="button" title="EsraaMoubarek_0-1746625393588.png" alt="EsraaMoubarek_0-1746625393588.png" /></span></P><P>&nbsp;</P> 2025-05-07T16:43:14.245000+02:00 https://community.sap.com/t5/technology-q-a/jdbc-adapter-fails-to-parse-scalar-response-from-stored-procedure-without/qaq-p/14095626 JDBC Adapter Fails to Parse Scalar Response from Stored Procedure Without Alias 2025-05-07T18:33:35.158000+02:00 DhrubS https://community.sap.com/t5/user/viewprofilepage/user-id/1821919 <P>Hi all,</P><P>I'm working with an iFlow in SAP Integration Suite that calls a stored procedure which returns a scalar value. Unfortunately, the flow fails at the JDBC adapter with the following error:</P><PRE>java.sql.SQLException: com.sap.it.rt.adapter.jdbc.exceptions.JDBCException: Error occurred while constructing the response nodes. : org.xml.sax.SAXException: Nodename cannot be empty., cause: org.xml.sax.SAXException: Nodename cannot be empty.</PRE><P>The stored procedure returns a scalar value something like this:</P><PRE>SELECT 1234;</PRE><P>If it were written with an alias (e.g., SELECT 1234 AS SeqId;), the issue wouldn't occur. However, modifying the stored procedure is not an option in my case.</P><P>I've also observed that the same error occurs with simple queries like:</P><PRE>SELECT COUNT(*) FROM my_table;</PRE><P>But it works fine if I include an alias:</P><PRE>SELECT COUNT(*) AS total_count FROM my_table;</PRE><P>Since the failure happens at the JDBC adapter level, I cannot handle the response using a Groovy script or mapping step—it never reaches those steps.</P><P><STRONG>My question is:</STRONG> <EM>Is there any way to handle responses like SELECT COUNT(*) FROM my_table in SAP IS without modifying the SQL or stored procedure?</EM><BR />I'm quite new to SAP Integration Suite, so I’d really appreciate a detailed explanation or workaround if one exists.</P><P>Thanks in advance!</P> 2025-05-07T18:33:35.158000+02:00 https://community.sap.com/t5/technology-q-a/detecting-handwritten-vs-digital-docs-in-sap-cap-dox/qaq-p/14096930 Detecting Handwritten vs. Digital Docs in SAP CAP + DOX 2025-05-09T08:46:00.939000+02:00 sundar https://community.sap.com/t5/user/viewprofilepage/user-id/1393233 <P><SPAN>I'm working on a solution using&nbsp;</SPAN><STRONG>SAP CAP (Cloud Application Programming) with Node.js</STRONG><SPAN>, integrated with&nbsp;</SPAN><STRONG>SAP Document Information Extraction (DOX)</STRONG><SPAN>. This project sends documents via API to the DOX service to extract relevant information from files such as invoices and receipts. My requirement here is to check whether the document is&nbsp;</SPAN><STRONG>handwritten or computer-generated</STRONG><SPAN>. This distinction could significantly enhance data accuracy and processing logic. If anyone has insights on integrating handwriting detection with SAP DOX or using pre-processing techniques for document classification, I’d love to connect and learn more.</SPAN></P> 2025-05-09T08:46:00.939000+02:00 https://community.sap.com/t5/technology-q-a/unexpected-eof-at-target-when-calling-api-proxy-for-standard-odata-service/qaq-p/14097776 Unexpected EOF at Target when Calling API Proxy for Standard OData Service via SAP API Management 2025-05-10T09:19:17.949000+02:00 Shashikant_Patel https://community.sap.com/t5/user/viewprofilepage/user-id/1486177 <P>Hello Community,</P><P>I’ve created an API proxy in <STRONG>SAP API Management</STRONG> that wraps an existing <STRONG>standard OData service</STRONG> from our <STRONG>SAP S/4HANA</STRONG> system. The proxy was deployed successfully, and I’ve included the required <STRONG>API Key</STRONG> in the apikey header when testing via <STRONG>Postman</STRONG>.<BR /><BR />Steps that I have followed:<BR />1. I selected an API from api.sap.com to fetch/retrieve time-sheet data and tested it in POSTMAN and I was getting the data.<BR />2. I created an API proxy using SAP API Management with included policy of APIkey and published the product.<BR />3.But when I tried calling from postman it is giving this error:</P><pre class="lia-code-sample language-json"><code>{ "fault": { "faultstring": "Unexpected EOF at target", "detail": { "errorcode": "messaging.adaptors.http.flow.UnexpectedEOFAtTarget" } } }</code></pre><P>&nbsp;</P><P>I want a solution to this problem!<BR /><BR />Regards,<BR />Shashikant Patel</P> 2025-05-10T09:19:17.949000+02:00 https://community.sap.com/t5/technology-q-a/can-sap-integration-suite-push-data-to-s-4hana-on-premise-via-jdbc-adapter/qaq-p/14100736 Can SAP Integration Suite Push Data to S/4HANA On-Premise via JDBC Adapter? 2025-05-14T03:42:42.064000+02:00 shin861231 https://community.sap.com/t5/user/viewprofilepage/user-id/1484100 <P>Hello experts,</P><P><SPAN>I am currently working on a data integration process where I need to fetch data from a third-party system, perform some transformations within SAP Integration Suite, and then insert the data into an <STRONG>on-premise S/4HANA database</STRONG> using the <STRONG>JDBC adapter</STRONG>.</SPAN></P><P><SPAN>Would this be a feasible approach?</SPAN></P><P><SPAN>For reference, the workflow looks like this:</SPAN></P><P><SPAN><span class="lia-unicode-emoji" title=":file_folder:">📁</span> <STRONG>CSV File</STRONG> → <STRONG>SAP Integration Suite</STRONG> → (<STRONG>JDBC Adapter</STRONG>) → <STRONG>SAP S/4HANA DB (On-Premise)</STRONG></SPAN></P><P><SPAN>I understand that <STRONG>OData adapter</STRONG> is the more common approach, but we are currently exploring alternative ways to exchange data between <STRONG>Integration Suite</STRONG> and <STRONG>S/4HANA DB</STRONG>.</SPAN></P><P><SPAN>Has anyone successfully implemented a similar solution? Any insights or recommendations would be greatly appreciated!</SPAN></P><P><SPAN>Thank you! <span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span></SPAN></P> 2025-05-14T03:42:42.064000+02:00 https://community.sap.com/t5/enterprise-resource-planning-q-a/aead-is-not-getting-disabled/qaq-p/14100874 AEAD is not getting disabled 2025-05-14T08:36:03.830000+02:00 NitishKrishna_D https://community.sap.com/t5/user/viewprofilepage/user-id/2124831 <P>Even after disabling the AEAD, when we are checking by gpg --list-packets &lt;filename&gt; still it exists, it is showing as prefix for AEAD as O2.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NitishKrishna_D_0-1747204487068.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/260883i704CF4DA36FA186A/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="NitishKrishna_D_0-1747204487068.png" alt="NitishKrishna_D_0-1747204487068.png" /></span></P><P>&nbsp;</P> 2025-05-14T08:36:03.830000+02:00 https://community.sap.com/t5/enterprise-resource-planning-q-a/ml4hmaster229/qaq-p/14100978 ML4HMASTER229 2025-05-14T10:18:44.927000+02:00 berkayilgin https://community.sap.com/t5/user/viewprofilepage/user-id/842164 <P>&nbsp;</P><P>We have made all the necessary adaptations in the S/4HANA Public Cloud system. However, when opening the material and entering the accounting master data, we encounter an error. What could be the reason?</P><P>Best regards.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="berkayilgin_0-1747210383675.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/260916i2F65B520DF86FAA0/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="berkayilgin_0-1747210383675.png" alt="berkayilgin_0-1747210383675.png" /></span></P><P>&nbsp;</P> 2025-05-14T10:18:44.927000+02:00