{"id":20624704,"url":"https://github.com/sgudkov/gos_attachments","last_synced_at":"2025-06-11T02:37:25.053Z","repository":{"id":52953556,"uuid":"520890900","full_name":"Sgudkov/GOS_ATTACHMENTS","owner":"Sgudkov","description":"Get all attachmetns of bussines objects","archived":false,"fork":false,"pushed_at":"2022-09-14T11:31:35.000Z","size":154,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-14T15:41:52.316Z","etag":null,"topics":["abap","abap-development","bo","business-objects","gos"],"latest_commit_sha":null,"homepage":"","language":"ABAP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sgudkov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-03T13:26:06.000Z","updated_at":"2023-06-08T07:45:24.000Z","dependencies_parsed_at":"2023-01-18T07:15:15.234Z","dependency_job_id":null,"html_url":"https://github.com/Sgudkov/GOS_ATTACHMENTS","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sgudkov%2FGOS_ATTACHMENTS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sgudkov%2FGOS_ATTACHMENTS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sgudkov%2FGOS_ATTACHMENTS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sgudkov%2FGOS_ATTACHMENTS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sgudkov","download_url":"https://codeload.github.com/Sgudkov/GOS_ATTACHMENTS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sgudkov%2FGOS_ATTACHMENTS/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259187036,"owners_count":22818681,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abap","abap-development","bo","business-objects","gos"],"created_at":"2024-11-16T13:05:46.350Z","updated_at":"2025-06-11T02:37:25.017Z","avatar_url":"https://github.com/Sgudkov.png","language":"ABAP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Get all attachmetns of business objects\n\n### This example show how you can retrieve all attachments of any business object and then use CRUD.\n\n\u003eSource code [here](https://github.com/Sgudkov/GOS_ATTACHMENTS/blob/main/ZCL_GOS_ATTACHMENTS.abap).\n\n#### How use.\n\n1. Run method *SET_OBJECT*. This method define what kind of attachmetns do you want to retrieve.\n- [x] ATTACHMENTS - retrieve all attachmetns of BO.\n- [x] NOTES - retrieve all notes of BO.\n- [x] URLS - retrieve all urls of BO.\n\n\n*Want to get all urls of BO FMBU*\n```abap  \n  DATA: lo_attachments TYPE REF TO lcl_gos_attachments,\n        ls_object      TYPE lcl_gos_attachments=\u003emty_s_borid,\n        lt_attachmetns TYPE lcl_gos_attachments=\u003emty_t_borid,\n        lo_witem       TYPE REF TO cl_browser_item,\n\tlo_msg_item    TYPE REF TO cl_msg_al_item,\n\tlv_typid       TYPE swo_typeid,\n\tlv_url         TYPE string,\n\tlv_docid       TYPE so_entryid,\n\tls_borident    TYPE borident.\n\t\t\n  CREATE OBJECT lo_attachments.\t\n  \n  ls_object-objkey  = '0400000004'.\n  ls_object-objtype = 'FMBU'.\n  ls_object-urls    = 'X'.\n\n  lo_attachments-\u003eset_object(\n   EXPORTING\n     is_object = ls_object\n   ).   \n```  \n\u003e Method *SET_OBJECT* allow to set list of objects, see interface of method.\n\n2. Run method *GET_ATTACHMENTS* to retrieve all uploaded data for BO for those attachments which you selected in step 1.\n\n*Get requested attachments*\n```abap \n  lt_attachmetns = lo_attachments-\u003eget_attachments( ).\n``` \n   \n\u003e This is what method returned\n\n![alt text](https://github.com/Sgudkov/GOS_ATTACHMENTS/blob/main/attachments_main1.jpg)\n\n\u003e Table has field with table type where store all attachments which are represented like instance of class *CL_MSG_AL_ITEM*.\n\n![alt text](https://github.com/Sgudkov/GOS_ATTACHMENTS/blob/main/attachments_bitem1.jpg)\n\n\n*This is how you can get attachments data*\n\n```abap \n  LOOP AT lt_attachmetns ASSIGNING \u003cls_boitem\u003e.\n    LOOP AT \u003cls_boitem\u003e-t_bitem INTO lo_witem.\n      TRY.\n          lo_msg_item ?= lo_witem.\n        CATCH cx_sy_move_cast_error.\n          CONTINUE.\n      ENDTRY.\n\n      CONCATENATE lo_msg_item-\u003egs_folder lo_msg_item-\u003egs_document INTO lv_docid.\n      lv_url = lo_attachments-\u003eget_object_content( lv_docid ).\n    ENDLOOP.\n  ENDLOOP.\n```  \n\n*This is how you can display and edit attachments*\n\n```abap \n  LOOP AT lt_attachmetns ASSIGNING \u003cls_boitem\u003e.\n    LOOP AT \u003cls_boitem\u003e-t_bitem INTO lo_witem.\n      TRY.\n          lo_msg_item ?= lo_witem.\n        CATCH cx_sy_move_cast_error.\n          CONTINUE.\n      ENDTRY.\n\n      \"Edit trigger commit work even if you cancel changed data\n      lo_msg_item-\u003eexecute( cl_gos_attachments=\u003egc_cmd_edit ).\n\n      \"Just display\n      lo_msg_item-\u003eexecute( cl_gos_attachments=\u003egc_cmd_display ).\n\n    ENDLOOP.\n  ENDLOOP.\n```\n\n*Another way display, edit, create and export attachments*\n\n```abap \n  MOVE-CORRESPONDING ls_object TO ls_borident.  \n\n  \"Allow to create attachemtns, note, urls. Need to use commit after creation.\n  \"See more variants in class CL_GOS_DOCUMENT_SERVICE\n  lo_attachments-\u003emo_services-\u003ecreate( EXPORTING is_object = ls_borident  ).\n\n  LOOP AT lt_attachmetns ASSIGNING \u003cls_boitem\u003e.\n    LOOP AT \u003cls_boitem\u003e-t_bitem INTO lo_witem.\n      TRY.\n          lo_msg_item ?= lo_witem.\n        CATCH cx_sy_move_cast_error.\n          CONTINUE.\n      ENDTRY.\n\n      \"Display single row\n      CONCATENATE lo_msg_item-\u003egs_folder lo_msg_item-\u003egs_document INTO lv_typid.\n      lo_attachments-\u003emo_services-\u003edisplay_attachment( EXPORTING ip_attachment = lv_typid  ).\n\n      \"Edit single row\n      lo_attachments-\u003emo_services-\u003eedit_attachment( EXPORTING ip_attachment = lv_typid  ).\n      \n      \"Just export attachments\n      lo_attachments-\u003emo_services-\u003eexport_attachment( EXPORTING ip_attachment = lv_typid ).\n      \n    ENDLOOP.\n  ENDLOOP.\n \n```  \n\n*This is how you can display all attachments in ALV*\n\n\u003e Need to call go_attachments-\u003edisplay_all( '0400000004' ). in PBO\n\u003e Popup screen with ALV will be created\n\n```abap \nCLASS: lcl_gos_attachments DEFINITION DEFERRED.\n\nDATA go_attachments TYPE REF TO lcl_gos_attachments.\n\n\nMODULE status_0900 OUTPUT.\n*  SET PF-STATUS 'xxxxxxxx'.\n*  SET TITLEBAR 'xxx'.\n\n  go_attachments-\u003edisplay_all( '0400000000' ).\n\nENDMODULE.                 \" STATUS_0900  OUTPUT\n\n``` \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgudkov%2Fgos_attachments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsgudkov%2Fgos_attachments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgudkov%2Fgos_attachments/lists"}