如何在报表中调用通用对象服务?

时间:2014-08-18 09:41:58

标签: sap abap

enter image description here

您好,

我有一个从对象获取附件列表的报告。我想显示这些列表。显示它的最佳方式是什么?

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( ).

我已经在0100 Dynrpo中创建了一个自定义控件,我把它命名为ATTS。我仍然无法获得GOS的附件清单。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

经过数周的搜索和询问。这真的很简单。只需调用函数GOS_ATTACHMENT_LIST_POPUP