Attachments for Purchase Order Approval APP from content server
In the standard SAP Fiori App for the PO Approval , when the attachments are created as store business documents option (Which will be saved on the content server) these were not displayed in the App.
By following the below steps the attachment list can be displayed in the Fiori APP.
After creating the PO in SAP ECC the Attachments are attached to the PO using Business Object services as shown above and the objective is to show the above list in the SAP Fiori App.
As per the SAP note instructions 1937715, the addon will be installed on Backend system which creates the below package.
Navigate to CL_GBAPP_APV_PO_RDP->Methods->Redefinition>/IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_EXPANDED_ENTITY
Goto GET_HEADER_GOS_ATTACHMENTS method and here write an Implicit enhancement as shown below.
We will be getting the PO number as the input parameter for this method. With the PO number get all the list of attachments data using the Standard FM ARCHIV_GET_CONNECTIONS.
Fill the ET_ATTACHMENTS internal table by preparing and moving the data as shown.
For object ID, attach GUID from the connections data, get the MIME filed from the standard FM by passing the reserve filed of the connection data.
Get the description from the table TOASP by passing the AR Object and the language
Calculate the size by getting the content of the attachment using standard FM PT_ARQ_ATTACHMENT_DETAIL_GET.
From the above code the attachment list will be displayed in the App.
To download the content of the attachment we have to write code by implementing the Enhancement spot GBAPP_APV_PO.
After implementing the Enhancement spot using the Custom class. We have to write a piece of code in
IF_GBAPP_EX_APV_PO_RDP~CHANGE_ATTACHMENT_CONTENT_API
The attach key will be a importing parameter for this method .
By passing the attach key to the standard FM ARCHIV_GET_CONNECTIONS we can get the attachment details.
Get the Content of the attachment using the standard FM PT_ARQ_ATTACHMENT_DETAIL_GET.
Get the description of the downloaded file by getting the File description from the table toasp by passing the connection data and the language
Concatenate the file description along with the file extension and get the MIME type from the standard FM SDOK_MIMETYPE_GET.
If we click on the attachment it will download the file to the space on the local disk.
In this way we can achieve the functionality of attaching the Documents of different types which gets saved on content server for a purchase order in Fiori APP.
Thank you for sharing a BADI solution. Each customer has different contents storage and retrieving data from contents server is a challenge.
Thanks for the Review Masa !!!
Hi Pavan, I have the same problem, thank you for the guide.
I'm trying to implement this, but I can't find it very clear.
Can you add the code in text instead of photo?
If I try to follow what I see in the photos, I find that some variables that you are using are not declared and the code line before the implementation is 91, btu after is 110.
Can you share what is in between? Are you declaring there the variables that are not declared?
Hi Ramirez ,
I have attached the file with sample code , you can have a look at it.
Thanks & Regards
Pavan
Yes, great, thank!
I'm having some issues like that I don't have the FM PT_ARQ_ATTACHMENT_DETAIL_GET and the second part is not being triggered by my fiori app, but I guess it will be fine.
Great post, thanks.
Hi Pavan,
could you please share code to me as well.
Thanks
Where was the sample code attached? Â I cannot find the file on this post.
Thanks
Hi Pavan.
I was trying this. The first part worked fine for me, and I can see now the attachments tab with all the attachments, but the second part is not working, and when I click to download, I'm just getting a blank txt file with name $value,txt
This is what i did, screen by screen.
Go to SE18 and select Enhancement Spot GBAPP_APV_PO
Inside there, go to the second BADi Definition, GBAPP_APV_PO_RDP and select the example class CL_GBAPP_APV_PO_RDP_EXAMPLE
Then, select the method IF_GBAPP_EX_APV_PO_RDP~CHANGE_ATTACHMENT_CONTENT_API
Inside there, create an enhancement implementatino and write the code provided.
To troubleshoot this, I set an external breakpoint inside the enhancement, but is never triggered.
Do you have any suggestions?
Thank you in advance.
Regards.
Hi
From the above screenshot i can see that you have written an implicit enhancement in the BADI method.
There is no need of any implicit enhancement in BADI method. you just have to write the code in the BADI method with out any implicit enhancement.
You can compare the screenshots of IF_GBAPP_EX_APV_PO_RDP~CHANGE_ATTACHMENT_CONTENT_API done by you and me. you will get to know the issue.
If you place an external break-point it will get trigger once you solve the above issue.
Thanks & Regards
Pavan
Hi.
Thank you for your reply.
So should I re implement the method?
Regards.
Yes Normal BADI Implementation.
Thanks, it is triggering now, but still the file is wrong.
Unfortunatelly, I don't have PT_ARQ_ATTACHMENT_DETAIL_GET in my system. Do you know some alternative?
Regards.
You can have look at the below mentioned blog, Similar scenario with a different approach
Attachment Issue in Approve Purchase Order and Purchase Requisition Fiori Apps
Thanks & Regards
Pavan
Hi Pavan,
I encountered the same problem as Manuel, I didn't have the listed FM PT_ARQ for loading the actual file into a stream.
After some searching, was able to use the following:
Seems to work on desktop, will try it out on the mobile device and hope it works in the same way.
We tried using the URL before (the other method posted), but it behaved differently on Android. I forget the details, but this one you posted is a great alternative. Thanks!
can you please send me code
Likely not as it is owned by the company and is not "free".
HI Pavan.
Finally I did it, it looks fine, but when I download the file, is always a 0 bytes file with name "$value()".
I was looking and I found people with a similat issue on Approve Travel request and there is a note for that, but is on the odata for that app.
Do you have any idea about this?
Regards.
Hi Manuel
If the file size is 0 bytes then the content is not getting transferred, please check it while debugging and try to pass the file content into cs_stream .
The file name you can pass it in the parameters cv_file_name.
Also you have to pass the MIME type into cv_mime_type
I don't think any SAP Note is required to achieve this functionality.
Please check the sample code once again and everything is available to resolve the above issue.
Thanks & Regards
Pavan
Ok, got it, you have to clear cache and it works.
Thank you!
Hello Former Member,
Your first part of code works perfectly and attachments are showing.But when i click on the attachment then it opens a blank window and my external debugger on content api method is also not triggering. Can you please tell me why this issue is coming.
Could you share the code ?
Hi,
Could you share the sample code?
Thanks...