2

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

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

GOS 工具栏作为上下文菜单

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 的附件列表。我错过了什么?

4

1 回答 1

3

经过数周的搜索和询问。这真的很简单。只需调用该函数GOS_ATTACHMENT_LIST_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.
于 2014-09-01T12:36:57.780 回答