You can find all of these discussions at Tutorials > Generic Object Services (GOS).
Today, we will see how to get the attachement details.
We will use the static method READ_LINKS from the class CL_BINARY_RELATION. We have to pass what kind of the objects we want to get back from the all the attachements like Notes, Attachment, External document etc.
This code will show how to get the NOTES attachments from the GOS toolbar.
*&---------------------------------------------------------------------*
*& Report ZTEST_NP_GOS_ATT
*&
*&---------------------------------------------------------------------*
*& Read the GOS attachments
*&
*&---------------------------------------------------------------------*
*
REPORT ztest_np_gos_note.
*
* Selection Screen
PARAMETERS: p_matnr TYPE mara-matnr.
*
*
START-OF-SELECTION.
*
*---------
* Get all the NOTE attached to Business object
*---------
*
* buseinss object key
DATA: gs_lpor TYPE sibflporb.
*
gs_lpor-instid = p_matnr.
gs_lpor-typeid = 'BUS1001006'.
gs_lpor-catid = 'BO'.
*
* attachment type selection
DATA: lt_relat TYPE obl_t_relt,
la_relat LIKE LINE OF lt_relat.
*
la_relat-sign = 'I'.
la_relat-option = 'EQ'.
la_relat-low = 'NOTE'. "For notes
APPEND la_relat TO lt_relat.
*
* Read the links
DATA: t_links TYPE obl_t_link,
la_links LIKE LINE OF t_links.
*
DATA: lo_root TYPE REF TO cx_root.
*
TRY.
CALL METHOD cl_binary_relation=>read_links
EXPORTING
is_object = gs_lpor
it_relation_options = lt_relat
IMPORTING
et_links = t_links.
CATCH cx_root INTO lo_root.
ENDTRY.
*
To test this program:
Go to MM02
Enter Material and go to Basic data view 1
In GOS toolbar, Create > Note
Now, run the above program to get the attachment details.
The same way we can select attachements by adding the relation option ATTA.
Like:
*&---------------------------------------------------------------------*
la_relat-sign = 'I'.
la_relat-option = 'EQ'.
la_relat-low = 'ATTA'. "Attachements
APPEND la_relat TO lt_relat.
Hi Naimesh,
my problems start after I read the List of attachments. I searched for notes and after that I have troubles to display the note exactly like it is displayed in SAP. I tried to use SGOS_NOTE_DISPLAY, but it did’nt work … is this the wrong FM?
thanks
Dieter
Hello Dieter,
You asked:
I tried to use SGOS_NOTE_DISPLAY, but it did’nt work … is this the wrong FM?
Try to use the FM SO_OBJECT_READ. Check the post http://help-abap.blogspot.com/2009/02/generic-object-services-gos-toolbar_09.html
Regards,
Naimesh Patel
Hi Naimesh,
You have been posting wonderful and very useful information about GOS.
I need help on the below.
I would like to know the type of document attached wheather PDF, JPG, text file etc. how could i find out for the attachments!
Ideally i could see these as an icons on the Attachment List window.
Here my requirement is i need to create a report program which lists title of the attachement and
type of the attachment.
Regards
Lokesh
Hi Naimesh:
Nice blog about GOS….
Here is what I am trying to do.
I would like to attach a picture (.GIF) to a Delivery as an attachment using an RFC. I developed a BAPI which would be triggered by an external program. The BAPI works just fine when tested in SE37 and I can see the pictures in the attachment list for the Delivery. But, when I trigger it from my external program, I get a "CNTL_ERROR". After a lot of debugging, I found that the function SO_DOCUMENT_REPOSITORY_MANAGER works only in frontend mode. Can you tell me if there exists a RFC version for the above function. Thanks.
Gautam
Hello Gautam,
You can try with FMs SO_DOCUMENT_INSERT_API1, SO_DOCUMENT_UPDATE_API1. I haven't used them.
Regards,
Naimesh Patel
Naimesh,
Thanks for the very useful examples.
I used your code to create attachments for a new BOR object and unique objectID. Now I want to display the attachment list popup in another program.
BOR object type = 'ZGOS'
Object key = 'My_unique_key_000000000000…1'
Your code can get me to the individual attachments for that key.
I want to display the standard popup list. I want to pop up the entire list of attachments, notes, and URLs so that they can be deleted or added to, by the person looking at the list.
How do I do that?
Thanks
Bruce
Hi Naimesh,
On a related topic, I need to upload a file to the material using a function module/prog. Can you pls help me on how to do this?
Hi Naimesh,
Your blog is very helpful to me. Thanks.
I have a requirement to get the attachment (GOS) from a particular Quality Notification.
Could you please guide me how to define gs_lpor?
Thanks,
Khanh
Hello Naimesh,
I want to copy URL link from object to another object ..
I hve written following code but it is not copying the link
REPORT ztest_np_copy_gos_att.
*
*
DATA: lt_services TYPE tgos_sels. ” Services table typ
DATA: ls_service TYPE sgos_sels. ” Services structure type
DATA: ls_source TYPE sibflporb, ” Source
ls_target TYPE sibflporb. ” Target
*
START-OF-SELECTION.
*
* Service needs to be performed
ls_service-sign = ‘I’.
ls_service-option = ‘EQ’.
ls_service-low = ‘URL_CREA’.
APPEND ls_service TO lt_services.
*
* Source
ls_source-instid = ‘ATESTLNG01’.
ls_source-typeid = ‘BUS1019’.
ls_source-catid = ‘BO’.
*
* Target
ls_target-instid = ‘000080032378’.
ls_target-typeid = ‘BUS2007’.
ls_target-catid = ‘BO’.
*
* Copy the objects between Source and Target
cl_gos_service_tools=>copy_linked_objects(
is_source = ls_source
is_target = ls_target
it_service_selection = lt_services
).
*
COMMIT WORK.
Hello Archana,
It works well for me. I tried moving the URL from one Customer (Object Type: KNA1) to another Customer.
BUS1019 would have the key by concatenating the values of PLNTY, PLNNR & PLNAL. In your example, the value of Source INSTID looks 1 char off. Please check that.
If you need to concatenate, use the addition RESPECTING BLANKS of the CONCATENATE.
Regards,
Naimesh Patel
Hi Naimesh,
I want to download the attachments from FB03. I tries to replicate ur code but unfortunatley i am using 4.6 version . could u pls help me how to download the attachments for 4.6 version
Hi Friends,
I would like to restrict the users from uploading the document using create attachment option while creating PR and PO’s. Can you kindly let me know how to achieve this.
Rgds,
SM