Abap 如何显示通用对象服务中的附件列表

Abap 如何显示通用对象服务中的附件列表,abap,sap-basis,Abap,Sap Basis,我有一个报告,它应该显示一个对象的附件列表 例如,在交易FI02(银行维护)中,GOS工具栏具有菜单附件列表: 我想显示这个列表。最好的展示方式是什么 REPORT zay_gos_demo. DATA ls_appl_object TYPE gos_s_obj. DATA lo_gos_api TYPE REF TO cl_gos_api. DATA lt_attachment_list TYPE gos_t_atta. DATA lt_role_filter

我有一个报告,它应该显示一个对象的附件列表

例如,在交易
FI02
(银行维护)中,GOS工具栏具有菜单附件列表:

我想显示这个列表。最好的展示方式是什么

REPORT zay_gos_demo.

DATA ls_appl_object     TYPE gos_s_obj.
DATA lo_gos_api         TYPE REF TO cl_gos_api.
DATA lt_attachment_list TYPE gos_t_atta.
DATA lt_role_filter     TYPE gos_t_rol.

DATA ls_attachment   TYPE gos_s_atta.
DATA ls_attachm_cont TYPE gos_s_attcont.
DATA ls_atta_key     TYPE gos_s_attkey.

ls_appl_object-typeid = 'KNA1'.
ls_appl_object-instid = '0000000001'.
ls_appl_object-catid  = 'BO'. "BO - BOR Object
"CL - Persistent Class

START-OF-SELECTION.

* create instance of GOS API providing unique application object
  TRY.
  lo_gos_api = cl_gos_api=>create_instance( ls_appl_object ).
*   get attachment list for this object (if needed restrict selection
*   by adding certain roles to filter table; initial table means: get
*   attachments in all roles)
  APPEND cl_gos_api=>c_attachment TO lt_role_filter.
  APPEND cl_gos_api=>c_annotation TO lt_role_filter.
  APPEND cl_gos_api=>c_website TO lt_role_filter.
  lt_attachment_list = lo_gos_api->get_atta_list( lt_role_filter ).
CATCH cx_gos_api.
*   error handling
  ENDTRY.
我找到了另一个示例,我想对其进行测试:

REPORT zay_attachment_list_display.

DATA: go_attachments  TYPE REF TO cl_gos_attachments,
  g_att_container TYPE REF TO cl_gui_custom_container,
  ls_object       TYPE borident,
  lo_bitem        TYPE REF TO cl_sobl_bor_item.


ls_object-objtype = 'KNA1'.

ls_object-objkey = '0000000001'.


IF NOT go_attachments IS INITIAL.

  CLEAR go_attachments.

ENDIF.

CREATE OBJECT g_att_container
  EXPORTING
   container_name              = 'ATTS'
  EXCEPTIONS
   cntl_error                  = 1
   cntl_system_error           = 2
   create_error                = 3
   lifetime_error              = 4
   lifetime_dynpro_dynpro_link = 5.

IF sy-subrc NE 0.

*    ADD your handling

ENDIF.

CREATE OBJECT lo_bitem
 EXPORTING
  is_bor = ls_object.

IF go_attachments IS INITIAL.

CREATE OBJECT go_attachments
  EXPORTING
    io_object      = lo_bitem
    ip_check_arl   = 'X'
    ip_check_bds   = 'X'
    io_container   = g_att_container
*       is_layout      = ls_layout
*       ip_mode        = wf_mode
    ip_notes       = 'X'
    ip_attachments = 'X'
    ip_urls        = 'X'.

ELSE.

  go_attachments->set_container( g_att_container ).

ENDIF.

  go_attachments->display( ).

我在dynpro
0100
中创建了一个自定义控件,并将其命名为
ATTS
。我仍然无法获得GOS的附件列表。我错过什么了吗?

经过几周的搜索和询问。这真的很简单。只需调用函数
GOS\u ATTACHMENT\u LIST\u POPUP

例如:

DATA: ls_object    TYPE sibflporb,
      save_request TYPE sgs_flag.
ls_object-instid = 'FR 1234567890'.
ls_object-typeid = 'BUS1011'.
ls_object-catid = 'BO'.
CALL FUNCTION 'GOS_ATTACHMENT_LIST_POPUP'
  EXPORTING
    is_object       = ls_object
    ip_mode         = 'E' " Edit mode
  IMPORTING
    ep_save_request = save_request.
IF save_request = 'X'.
  COMMIT WORK.
ENDIF.

有很多方法可以显示列表-除非你告诉我们更多关于你的需求,否则我们将无法提供帮助。我已经在谷歌上搜索过了,正如你所说,我发现了很多方法可以显示列表,其中之一就是使用类CL\u ATTACHMENT\u list->display。可以将这个类与我的代码一起使用吗?或者我应该以其他方式实现吗?实际上我想检索通用对象服务(GOS)并在子屏幕中显示它。。。但不幸的是,它仍然不起作用:(