Technical Articles
Cloud Integration (SAP CPI) – API_CV_ATTACHMENT_SRV (OData API for attachments)
Introduction:
Recently I faced a use case in which a integration flow needed to add an attachment to a supplier invoice, we have standard OData/SOAP API to perform operations like create, read, rename, and deletion of attachments, In this blog I’m going to discuss adding (creating) an attachment to supplier invoice by consuming OData API.
Pre-requisite:
- Before consuming the OData API make sure that API_CV_ATTACHMENT_SRV oData API is active ,system client ID and alias name maintained.
- Check the entity list and make sure “AttachmentContentSet” entity set is present to create an attachment.
- System user should have sufficient roles assigned to call these API’s.
I assume that you successfully posted the Supplier invoice to the S4/Hana and noted Invoice details like Invoice Number and fiscal year to add an attachment for this invoice.
Steps:
Below is the integration iFlow design to add an attachment.
iflow
Step 1: Fetch x-csrf-token
Set the header x-csrf-token with the value “fetch” and configure the connection like below to get a token.
set header to fetch token
getToken
Step 2:
Once we get a token set few mandatory header fields to post attachment .
Parameter | Description | Value |
BusinessObjectTypeName | Defines the business object for the supplier invoice. | BUS2081 (supplier invoice) |
LinkedSAPObjectKey |
Defines the business object instance key to which the attachment will be linked to. Note Enter the key without space between the numbers for the invoice and the fiscal year. |
<invoice number><fiscal year> |
X-CSRF-Token | Validates together with the cookie that the user is an authenticated communication user for the OData service Attachments ( API_CV_ATTACHMENT_SRV). | You get the taken value together with the cookie value about the HTTP-GET request. |
Slug | Defines the file name and file type. | Example: sample.txt |
Content-Type | Defines the mime type of the attachment. | Example: Text/plain |
SetHeaders
Step 3: With the help of pool enricher get an attachment by passing the file name
sftpCallToGetfFle
Step 4: Post the attachment through API by passing mandatory headers fields .
postTheAttachmentThroughAPI
Step 5: Validate the attachment in S4Hana System.
AttachmentPostedSuccessfully
References
Attachment posting
Hope you find this article helpful and if you have any suggestion and comments, please reply in the Comments section below.
Best regards,
Prabhugoud Gogi
Hi Prabhugoud,
Thanks for such an informative blog. It was really helpful and to the point.
Maybe just a suggestion...While making the call to S/4 HANA API, you could have used OData V2 connector, and this way it would have been very easy to configure. In the case of complex queries, an XSD would have also been generated by CPI which could be used for further mapping.
Thanks Saurabh !!
Yes i agree your point ,we can use OData V2 adapter, since my scenario was quite simple without any complex quires so went with Http connector, Even i tested with OData it works fine, Thanks for the suggestion.
Regards,
Prabhugoud Gogi
Hi Prabhugoud,
I am currently struggling with exactly the scenario you describe in your reply. How did you manage to send the attachment via the OData v2 adapter? I always end up with the error "XmlPullParserException: only whitespace content allowed before start tag" because the content modifier doesn't contain an XML structure. My attachement is an excel file that comes into the flow via HTTPS sender and is customized afterwards. Unfortunately the HTTP adapter is not available to me as a solution, so I hope you see my question! I would be very happy to get an answer from you.
Regards
Laura
Hello Prabhugoud,
What steps we need to perform for a FI posting integration scenario ?
Regards,
Varun Vichare.
HI Varun,
For most the scenario we do have standard API's for FI posting you can make use of those ,follow the respective API document which says what parameters need to pass ,consuming process remains same.
Regards,
Prabhu
Informative ! Thanks Prabhu for your article.
Regards,
Sathya
helpful blog!
thanks for sharing.
regards, Avinash