SAPфорум.RU
https://www.sapboard.ru/forum/

Печать в смартформе рисунка, сохраненного в аттачменте
https://www.sapboard.ru/forum/viewtopic.php?f=77&t=52715
Страница 1 из 1

Автор:  Kiki [ Вт, авг 25 2009, 11:21 ]
Заголовок сообщения:  Печать в смартформе рисунка, сохраненного в аттачменте

Привет всем!
Клиенты поставили следующую задачу:
есть Quality Notification, для которого они сохраняют рисунки в аттачменте, через стандартные функции. Далее при печати смартформы эти рисунки должны также распечатываться.

Моя задача состоит на основе номера QN найти загруженные картинки, сохранить их на сервер смартформ\сапскриптов (стандартно при наличии картинки на презентационном сервере реализовывается с помощью SE78) и вывод на печать.
С помощью таблицы SRGBTBREL и FM "SO_OBJECT_READ" я нахожу и вычитываю название картинки, также там есть информация о папке и объекте, но в виде:
FOLTP FOLYR FOLNO DOCTP DOCYR DOCNO
FOL 31 000000000004 EXT 34 000000000107

Может кто знает, с помощью каких функций можно вычитать содержимое картинкив в BIN-виде или как можно перевести цифры папки в физический путь? Либо кто-то знает какими функциями можно сразу сохранить картинку на сервере смартформ из аттачмента?

Заранее всем спасибо за ответы.

Автор:  John Doe [ Чт, ноя 12 2009, 16:05 ]
Заголовок сообщения:  Re: Печать в смартформе рисунка, сохраненного в аттачменте

Очень у меня "свежий" ответ получится :)
Пример получения бинарников приложений из сообщений по качеству.
Code:
DATA: l_objectid TYPE bapiborid,
      lt_relat TYPE TABLE OF bapirellk WITH HEADER LINE,
      l_objdisp TYPE sood2,
      lt_objcont TYPE TABLE OF soli,
      lt_context LIKE sdokpropty OCCURS 0 WITH HEADER LINE,
      loio_object LIKE sdokobject,
      phio_object LIKE sdokobject,
      lt_binary_content TYPE TABLE OF sdokcntbin,
      xfile TYPE xstring,
      xfilename TYPE string.
DATA: xlen TYPE i.

PARAMETERS: p_qmnum LIKE qmel-qmnum.

START-OF-SELECTION.
  l_objectid-objkey = p_qmnum.
  l_objectid-objtype = 'BUS2080'.

  CALL FUNCTION 'BAPI_REL_GETRELATIONS'
    EXPORTING
      objectid        = l_objectid
    TABLES
      listofrelations = lt_relat[].

  LOOP AT lt_relat.
    REFRESH lt_objcont.
    CALL FUNCTION 'SO_OBJECT_READ'
      EXPORTING
        folder_id         = lt_relat-objkey_b(17)
        object_id         = lt_relat-objkey_b+17(17)
      IMPORTING
        object_hd_display = l_objdisp
      TABLES
        objcont           = lt_objcont
      EXCEPTIONS
        OTHERS            = 15.

    TRANSLATE l_objdisp-file_ext TO UPPER CASE.
    CALL FUNCTION 'SO_KPRO_DATA_FROM_OBJCONT_GET'
      IMPORTING
        loio_object       = loio_object
      TABLES
        objcont           = lt_objcont
        context           = lt_context
      EXCEPTIONS
        missing_kpro_data = 1
        OTHERS            = 2.

    CALL FUNCTION 'SO_LOIO_PHIO_GET'
      EXPORTING
        loio_object        = loio_object
      IMPORTING
        phio_object        = phio_object
      EXCEPTIONS
        kpro_inconsistency = 1
        x_error            = 2
        OTHERS             = 3.

    CALL FUNCTION 'SDOK_PHIO_LOAD_CONTENT'
      EXPORTING
        object_id           = phio_object
      TABLES
        file_content_binary = lt_binary_content
      EXCEPTIONS
        not_existing        = 1
        not_authorized      = 2
        no_content          = 3
        bad_storage_type    = 4
        OTHERS              = 5.

    xlen = l_objdisp-objlen.
    CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
      EXPORTING
        input_length = xlen
      IMPORTING
        buffer       = xfile
      TABLES
        binary_tab   = lt_binary_content
      EXCEPTIONS
        failed       = 1
        OTHERS       = 2.

  ENDLOOP.

Дальше хорошо только на Adobe Forms ложится - бинарник в интерфейс закидывается, а там биндинг на изображение.
Со смартформами простого пути не нашел. Можно попробовать конечно сперва выгружать на клиент, а потом пакетником на SE78 загружать...

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/