К основному контенту

GOS докумены

Иногда появляется задача с очень простым решением. Но когда с ней ни разу не сталкивался, приходится потратить немного времени на поиск решения. Так вот и с этой задачей вышло так.
Есть некий отчет со списком материалов. Для каждого из них есть перечень приложений (в моем случае - файлы 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



Комментарии

Популярные сообщения из этого блога

Прямые ссылки на файлы Google диска

В предыдущей статье я рассказал, как подключить свой JavaScript файл к блогу BLOGSPOT . Но для того, что бы их подключить нужны прямые ссылки на файл, а Google диск при предоставлении общего доступа к файлу выдает ссылку на предварительный просмотр, которая никак напрямую не ссылается на файл. Для Google диска прямая ссылка на файл - это ссылка на скачивание. Ниже описаны два способа создания ссылки на скачивание на примере файла prism.js.

События для ведения таблиц

Как и всегда, в пылу проекта внезапно родилась Z табличка. Главный нюанс был в том, что она должна была хранить пароли для авторизации на стороннем сервере. Естественно, никто не хотел хранить пароли в открытом виде, а двустороннее шифрование SAP не умеет без сторонних пакетов и надстроек. Далее, все как обычно - придумали алгоритм, сделали табличку. Дело осталось за малым - нужно шифровать пароли, которые вводит пользователь. Делать отдельную программу нет смысла, поскольку ее функционал мало чем будет отличаться от сгенерированного. Вот здесь на помощь приходят события! С их помощью можно, наверное, все. По крайней мере, я не нашел чего-либо, что нельзя сделать с данными через события.

OOP ALV GRID с HTML шапкой

В этой статье хочу постараться подробно описать и привести пример, как можно создать ALV отчет с таблицей на весь экран и с HTML шапкой вверху. Я не буду описывать начальный этап, где пишется селекционный экран или делается выборка данных. Будем считать, что основа у нас есть и нам нужно просто вывести данные. Главной изюминкой является то, что нужно вывести ALV GRID на экран без использования каких-либо дополнительных элементов на экране. Step-By-Step Шаг 1. Создание окна Создаем самое простое окно с номером 100. На него не нужно кидать никаких контейнеров. Оно нам нужно только для модулей PAI и PBO и вывода на него ALV GRID.