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

Генерация QR кода больших размеров средствами SAP
https://sapboard.ru/forum/viewtopic.php?f=13&t=95947
Страница 2 из 2

Автор:  MeIIIok [ Чт, янв 18 2018, 17:21 ]
Заголовок сообщения:  Re: Генерация QR кода больших размеров средствами SAP

DiVo написал(а):
Сначала в тр. SE73 создайте свой QR код (как здесь):

https://blogs.sap.com/2016/05/12/qr-code-or-2d-bar-code-in-sap/

Затем для смартформы создайте стиль и в этом стиле создайте формат знаков, ссылающийся на ранее созданный QR код. Далее используйте этот формат в смартформе для отображения QR кода.


Спасибо огромное всем :pivo: , сейчас вышло сделать QR код размерностью в 560 символов байтовый в юникоде. Теперь буду отлаживать код смартформ для того чтобы выяснить как QR создается таких размеров и выходит на экран. Если кто то может сразу сказать в какой фм/класс залезть буду признателен.

Автор:  MeIIIok [ Пт, янв 19 2018, 15:00 ]
Заголовок сообщения:  Re: Генерация QR кода больших размеров средствами SAP

Все заработало. :D Получилось посмотреть каким образом запускаются системные функции при создании QR в смартформах.
В итоге переменная, в которой лежит текст кода должна быть DATA: barcdata(6144) TYPE c.
Генерю следующим образом
Code:
CALL 'RSPO_CACHE_CONTROL' ID 'AREA' FIELD 'BARCODE'
                            ID 'OP'   FIELD 'RENDERBARCODE'
                            ID 'BC_PAR' FIELD bc_cmd-tdprintpar
                            ID 'BP_PAR' FIELD bp_cmd-tdprintpar
                            ID 'BARCDATA' FIELD barcdata
                            ID 'BARCDATALEN' FIELD barcdatalen
                            ID 'BMSIZE' FIELD bitmapsize
                            ID 'WIDTH'  FIELD w
                            ID 'HEIGHT' FIELD h
                            ID 'MSG'    FIELD msg
                            ID 'ERRMSG' FIELD errmsg.



  IF sy-subrc = 0.
* get bitmap buffer
    totallen = 0.
    DO.
      CALL 'RSPO_CACHE_CONTROL' ID 'AREA' FIELD 'BARCODE'
                                ID 'OP'   FIELD 'GETBITMAP'
                                ID 'BUFFER' FIELD bmbuf-data
                                ID 'LENGTH' FIELD c_bmbuf_size
                                ID 'ACTSIZE' FIELD actlen.
      IF sy-subrc = 0.
        IF actlen > 0.
          APPEND bmbuf.
          ADD actlen TO totallen.
        ENDIF.
        IF totallen >= bitmapsize.
          sy-subrc = 0.
          EXIT.
        ENDIF.
      ELSE.
*      write: / 'ERROR at GETBITMAP, SUBRC', sy-subrc.
        EXIT.
      ENDIF.
    ENDDO.
    IF sy-subrc = 0.
*   write: / 'Read', totallen, 'bytes of bitmap data'.
    ENDIF.
  ELSE.
    CONCATENATE errmsg ':' msg INTO errormsg.
    sy-subrc = 1. "concatenate changes SUBRC
  ENDIF.

Автор:  MeIIIok [ Пт, янв 19 2018, 15:08 ]
Заголовок сообщения:  Re: Генерация QR кода больших размеров средствами SAP

Сейчас есть следующая проблема, при генерации кода не может создать bitmap больше 871 кб. Это дает ограничение на QR код при уровне корректировке H максимум 220 символов, при L максимум 500 символов. QR код у меня в байтовой кодировке.
Ошибка сразу после выполнения системной функции RSPO_CACHE_CONTROL
Сообщение следующее:
Изображение

Никто не знает можно ли расширить объем графического файла?

Автор:  DiVo [ Вт, янв 23 2018, 11:57 ]
Заголовок сообщения:  Re: Генерация QR кода больших размеров средствами SAP

MeIIIok написал(а):
Никто не знает можно ли расширить объем графического файла?


А какая конечная цель, получить bmp-файл с QR кодом? :-)

Я правильно понимаю, теперь любые QR коды выводятся на смартформу без каких-либо ограничений, проблема только в формировании bmp-файла?

Автор:  MeIIIok [ Ср, янв 24 2018, 21:00 ]
Заголовок сообщения:  Re: Генерация QR кода больших размеров средствами SAP

DiVo написал(а):
MeIIIok написал(а):
Никто не знает можно ли расширить объем графического файла?


А какая конечная цель, получить bmp-файл с QR кодом? :-)

Я правильно понимаю, теперь любые QR коды выводятся на смартформу без каких-либо ограничений, проблема только в формировании bmp-файла?


Конечная цель получить QR код в bmp файл и прицепить его к эксель форме, часть данных из которой будет зашита в QR код.

Да, теперь в смартформу можно вывести практически любой QR код, ограничением является размер страницы смартформы и физическое ограничение QR кода (для кириллицы около 1500 символов) и как в моем случае ограничение на BMP файл, причем это ограничение сработает и в смартформе, так как там выполняется точно такой же код.

Автор:  UKY [ Пн, янв 29 2018, 18:04 ]
Заголовок сообщения:  Re: Генерация QR кода больших размеров средствами SAP

Может быть, получится установить какую-нибудь утилиту на сервер приложений и запускать её, чтобы генерировался BMP-файл?
http://www.linux-magazine.com/Online/Features/Generating-QR-Codes-in-Linux

Автор:  AFH [ Вт, янв 30 2018, 04:37 ]
Заголовок сообщения:  Re: Генерация QR кода больших размеров средствами SAP

А там случайно нет настройки какая ширина\высота квадратика qr-кода в пикселах? Может поменьше поставить? Тогда будет генерироваться файл меньшего размера.

Автор:  DiVo [ Ср, янв 31 2018, 22:22 ]
Заголовок сообщения:  Re: Генерация QR кода больших размеров средствами SAP

MeIIIok написал(а):

Да, теперь в смартформу можно вывести практически любой QR код


Если QR коды выводятся на смартформу без проблем, то можно попробовать сделать следующим образом:

1. Вывести QR код на смартформу без отображения на экране, получить отрендеренное содержимое смартформы в формате OTF. Подробно описано здесь http://sap-technique.blogspot.ru/2017/04/converting-smart-forms-output-to-pdf.html, см. параметры control_parameters-no_dialog, control_parameters-getotf и job_output_info-otfdata[].

2. Выгрузить полученные OTF данные способом, описанным здесь https://blogs.sap.com/2016/05/12/qr-code-or-2d-bar-code-in-sap/. В блоге есть программа, надо использовать кусок кода, который идёт сразу после вызова процедуры bitmap2otf
Code:
perform bitmap2otf IN PROGRAM sapmssco
                   tables bitmap
                          otf
                    using bitmapsize
                          w
                          h.

Автор:  MeIIIok [ Ср, фев 07 2018, 12:55 ]
Заголовок сообщения:  Re: Генерация QR кода больших размеров средствами SAP

UKY написал(а):
Может быть, получится установить какую-нибудь утилиту на сервер приложений и запускать её, чтобы генерировался BMP-файл?
http://www.linux-magazine.com/Online/Features/Generating-QR-Codes-in-Linux

Думали про это, вопрос, как эту утилиту вызывать из Abap и как передавать на нее параметры.

AFH написал(а):
А там случайно нет настройки какая ширина\высота квадратика qr-кода в пикселах? Может поменьше поставить? Тогда будет генерироваться файл меньшего размера.

Такой настройки не видел.

Автор:  MeIIIok [ Ср, фев 07 2018, 12:58 ]
Заголовок сообщения:  Re: Генерация QR кода больших размеров средствами SAP

DiVo написал(а):
MeIIIok написал(а):

Да, теперь в смартформу можно вывести практически любой QR код


Если QR коды выводятся на смартформу без проблем, то можно попробовать сделать следующим образом:

1. Вывести QR код на смартформу без отображения на экране, получить отрендеренное содержимое смартформы в формате OTF. Подробно описано здесь http://sap-technique.blogspot.ru/2017/04/converting-smart-forms-output-to-pdf.html, см. параметры control_parameters-no_dialog, control_parameters-getotf и job_output_info-otfdata[].

2. Выгрузить полученные OTF данные способом, описанным здесь https://blogs.sap.com/2016/05/12/qr-code-or-2d-bar-code-in-sap/. В блоге есть программа, надо использовать кусок кода, который идёт сразу после вызова процедуры bitmap2otf
Code:
perform bitmap2otf IN PROGRAM sapmssco
                   tables bitmap
                          otf
                    using bitmapsize
                          w
                          h.


Не выйдет, так как ограничение на размер bitmap вылетает в момент выполнения системной функции, которая генерит сам qr код.

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