Иногда появляется задача с очень простым решением. Но когда с ней ни разу не сталкивался, приходится потратить немного времени на поиск решения. Так вот и с этой задачей вышло так.
Есть некий отчет со списком материалов. Для каждого из них есть перечень приложений (в моем случае - файлы PDF), созданные в транзакции MM02. Задача - вывести список приложений по нажатию на кнопку.
Такие документы имеют имя класса BUS1001006 и тип класса BO, а в качестве ключа используется номер материала (т.е. можно залезть в OAER и посмотреть). После недолгих рысканий по просторам гугла нашелся ФМ GOS_ATTACHMENT_LIST_POPUP, который показывает список приложений во всплывающем окне.
В итоге всех поисков родилась тестовая программа, листинг которой приведен ниже. В представленном виде она выводит окно со списком приложений для материала, а попутные функции работы с конкретным приложением закомментированы.
Есть некий отчет со списком материалов. Для каждого из них есть перечень приложений (в моем случае - файлы PDF), созданные в транзакции MM02. Задача - вывести список приложений по нажатию на кнопку.
Такие документы имеют имя класса BUS1001006 и тип класса BO, а в качестве ключа используется номер материала (т.е. можно залезть в OAER и посмотреть). После недолгих рысканий по просторам гугла нашелся ФМ GOS_ATTACHMENT_LIST_POPUP, который показывает список приложений во всплывающем окне.
Попутно
В начале пути искал решение отображения документа из расчета, что он будет только один. Таким образом, нужно было открыть документ на просмотр. В этом поможет класс cl_gos_document_service, который может открыть не только приложение, но и заметку и внешний документ.В итоге всех поисков родилась тестовая программа, листинг которой приведен ниже. В представленном виде она выводит окно со списком приложений для материала, а попутные функции работы с конкретным приложением закомментированы.
report zlocal_jc_sdn_gos_test.
tables:
srgbtbrel. "Relationships in GOS Environment
parameters:
*"Defaults here are an FI doc with GOS Note visible in FB03
p_objkey like borident-objkey
default '000000000001093313',
p_objtyp like borident-objtype
default 'BUS1001006'.
start-of-selection.
perform display_attachment.
*&---------------------------------------------------------------------*
*& Form display_attachment
*&---------------------------------------------------------------------*
form display_attachment.
data:
l_objkey type swo_typeid,
lo_gos_service type ref to cl_gos_document_service,
ls_srgbtbrel type srgbtbrel,
lt_srgbtbrel type srgbtbrel occurs 10.
*" Get a list of the links and choose one:
select *
into corresponding fields of table lt_srgbtbrel
from srgbtbrel
where instid_a = p_objkey
and typeid_a = p_objtyp
and reltype = 'ATTA'.
*" Exit if no attachments found
if lines( lt_srgbtbrel ) is initial.
exit.
endif.
*" Choose first one and set up the ident for the BOR
sort lt_srgbtbrel by utctime. "put oldest top for this demo
read table lt_srgbtbrel into ls_srgbtbrel index 1.
l_objkey = ls_srgbtbrel-instid_b. "i.e. the Note's ID
DATA l_OBJECT TYPE SIBFLPORB.
CLEAr: l_OBJECT.
l_object-instid = p_objkey.
l_object-typeid = p_objtyp.
l_object-catid = 'BO'.
CALL FUNCTION 'GOS_ATTACHMENT_LIST_POPUP'
EXPORTING
is_object = l_object.
* create object lo_gos_service.
** call method lo_gos_service->display_note
** exporting
** ip_note = l_objkey
** ip_disp_html = 'X'.
*
*CALL METHOD lo_gos_service->display_attachment
* EXPORTING
** is_object =
* ip_attachment = l_objkey
* .
*"Methods in cl_gos_document_service include:
*" DISPLAY_ATTACHMENT
*" DISPLAY_NOTE
*" DISPLAY_PERSONAL_NOTE
*" DISPLAY_URL
endform. "display_attachment
Комментарии
Отправить комментарий