Создать этот пример Выберите шаблон и создайте новый отчёт с помощью демонстрационного сервиса.

xtt->merge( iv_block_name = 'R' is_block =

JSON
{"TITLE":"Test icons","T":[{"ID":"@00@","NAME":"ICON_DUMMY","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAJEAAAAAAP8A/4CAgP///yH5BAEAAAEALAAAAAAQABAAAAKRTJgwYcKECRMmTJgwYcKECRMmTJgwIECACBMmTJgQokSJAhMmTBhQokSJEhEmTAhRo0SJEwUmTAhR4kSNEgUmTAhRosaJEgUmTAhRosaJEgUmTAhR4kSNEgUmTAhRo0SJEwUmTBhQokSJEhEmTJgQokSJAhMmTJgwIECACBMmTJgwYcKECRMmTJgwYcKECRMmLAA7"},{"ID":"@01@","NAME":"ICON_CHECKED","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQALMAAAAAAE2mGf8A/5LAACRNDAAA9AAgHAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAQABAAAAQxUMhJq70YA5ApGAHXfQEhaqDpnQKpTkAQSi7bBsNWX3Ge2jDZbyR7ZQAE4wjYaTonEQA7"},{"ID":"@02@","NAME":"ICON_INCOMPLETE","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAKIAAAAAAP+ZmZkAAMQAJv8A//8AAAAgHAACACH5BAEAAAQALAAAAAAQABAAAAOWSEREhEREREhERIRERERIRESERERESEREhEREREhEAIRERABIRESEEAFESBABhEREEFgDBIElQERIRDCFA1ECSEREhEQwFVgCRIRERERIUFWARERESEQEgTU1QEhERIQEUQI4NUCEREQQWAIEgyVAREgEIYBEBCIIRESEBEBESARAhEREREhERIRERERIRESERERESESUADs="},{"ID":"@03@","NAME":"ICON_FAILURE","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAKIAAAAAAOjSWP//1v8A////AAAA9AAgHAACACH5BAEAAAMALAAAAAAQABAAAAOWODMzgzMzMzgzM4MzMzM4MzODMzMACDAzgAAzMzgDIoAzIAE4MzODQAEDKBQwgzMzQBgAEoQBMzM4AxSAEkABODMzg0AkAQgUMIMzM0BIAQOEATMzOAMUgDNAATgzM4MAMAAIFACAMzMzODNAhBQwMzgzM4MzQAE4MzODMzMzOAAzgzMzMzgzM4MzMzM4MzODMzMzODOTADs="},{"ID":"@04@","NAME":"ICON_POSITIVE","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAKIAAF99AO75/cvU4f8A/0BAQAAA9AAgHAACACH5BAEAAAMALAAAAAAQABAAAAOWODMzgzMzMzgzM4MzMzM4MzODMzMzSEREhEQzMzgzFIERESFIMzODFBERGBEhhDMzFBgRAIERQjM4QxGBARARKDQzgxQBAAgAIYQzMxQYAACAEEIzOEMRgQEQESg0M4MUEQEIESGEMzMkGBERgRFCMzgzJIIiIiJIMzODM0RESEQ0gzMzMzgzM4MzMzM4MzODMzMzODOTADs="},{"ID":"@05@","NAME":"ICON_NEGATIVE","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAKIAAP9mZu75/cvU4f8A/0BAQAAA9AAgHAACACH5BAEAAAMALAAAAAAQABAAAAOWODMzgzMzMzgzM4MzMzM4MzODMzMzSEREhEQzMzgzFIERESFIMzODFBERGBEhhDMzFBgREYERQjM4QxGBERERKDQzgxQBAAgAIYQzMxQYAACAEEIzOEMRgRERESg0M4MUEREYESGEMzMkGBERgRFCMzgzJIIiIiJIMzODM0RESEQ0gzMzMzgzM4MzMzM4MzODMzMzODOTADs="},{"ID":"@06@","NAME":"ICON_LOCKED","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAKIAAAAAAG+MnP8A/4+SwGZmZv///7+/vwACACH5BAEAAAIALAAAAAAQABAAAAOWKCIigiIiIigiIoIiAgAIICKCIiIiCFVlhiAiIigiUIUAYAYoIiKCAgUiKFAggiIiAlggIoAFIiIoIlCAIgIFKCIigQAAAAgAAIEiAlVYVVWFVQMiKFAzgzMzM0ggIoA1MzM4M0OAIgI1ODMzgzMEIihQM4MzMzNIICKANTMzODNDgCICQ0hERIREBCIoAgCAAAAACCKSADs="},{"ID":"@07@","NAME":"ICON_UNLOCKED","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAKIAAAAAAG+MnP8A/4+SwGZmZv///7+/vwACACH5BAEAAAIALAAAAAAQABAAAAOWKCIigiIiIigiIoIiIiIoAACAIiIiKCIChVVmICgiIoICVQAIZiCCIiICWCAigAUiIigiUIAiAgUoIiKCAgUiKFAQgAAAAAgAIYABUFVYVVWFAyIiCDUzgzMzBCgiAoUzMzM4QyCCIlAzODMzgwQiIgg1M4MzMwQoIgKFMzMzOEMggiIwREhERIQEIiIoAACAAAAgKCKSADs="},{"ID":"@0B@","NAME":"ICON_TOTAL_LEFT","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAIAAAAAAAP8A/yH5BAEAAAEALAAAAAAQABAAAAKRTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTJgQYMKECREmTJgQYMKEAREmTJgQYMKEABEmTJgQYMKAABEmTJgQYEKAABEmTJgQYECAABEmTJgQYEKAABEmTJgQYMKAABEmTJgQYMKEABEmTJgQYMKEAREmTJgQYMKECREmTJgwYcKECRMmTJgwYcKECRMmLAA7"},{"ID":"@0C@","NAME":"ICON_TOTAL_RIGHT","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAIAAAAAAAP8A/yH5BAEAAAEALAAAAAAQABAAAAKRTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTBgwYcKEABMmTBgQYcKEABMmTBgQYMKEABMmTBgQIMKEABMmTBgQIMCEABMmTBgQIECEABMmTBgQIMCEABMmTBgQIMKEABMmTBgQYMKEABMmTBgQYcKEABMmTBgwYcKEABMmTJgwYcKECRMmTJgwYcKECRMmLAA7"},{"ID":"@0D@","NAME":"ICON_COLUMN_LEFT","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAIAAAAAAAP8A/yH5BAEAAAEALAAAAAAQABAAAAKRTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTJgwYcKACRMmTJgwYUKACRMmTJgwYUCACRMmTJgwIUCACRMmTJgwIECACRMmTJgQIECACRMmTJgwIECACRMmTJgwIUCACRMmTJgwYUCACRMmTJgwYUKACRMmTJgwYcKACRMmTJgwYcKECRMmTJgwYcKECRMmLAA7"},{"ID":"@0E@","NAME":"ICON_COLUMN_RIGHT","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAIAAAAAAAP8A/yH5BAEAAAEALAAAAAAQABAAAAKRTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTJgwIcKECRMmTJgwIcCECRMmTJgwIUCECRMmTJgwIUCACRMmTJgwIUCACBMmTJgwIUCAABMmTJgwIUCACBMmTJgwIUCACRMmTJgwIUCECRMmTJgwIcCECRMmTJgwIcKECRMmTJgwYcKECRMmTJgwYcKECRMmLAA7"},{"ID":"@0F@","NAME":"ICON_PAGE_RIGHT","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAIAAAAAAAP8A/yH5BAEAAAEALAAAAAAQABAAAAKRTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTIgwYUKECRMmTAgwYUKACRMmTAgQYUKACBMmTAgQYEKAABMmTAgQIEKAABEmTAgQIECAAAEmTAgQIEKAABEmTAgQYEKAABMmTAgQYUKACBMmTAgwYUKACRMmTIgwYUKECRMmTJgwYcKECRMmTJgwYcKECRMmLAA7"},{"ID":"@0G@","NAME":"ICON_PAGE_LEFT","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAIAAAAAAAP8A/yH5BAEAAAEALAAAAAAQABAAAAKRTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTJgwYcCECQMmTJgwIcCECQEmTJgwIMCEAQEmTJgQIMCEAAEmTBgQIMCAAAEmTAgQIECAAAEmTBgQIMCAAAEmTJgQIMCEAAEmTJgwIMCEAQEmTJgwIcCECQEmTJgwYcCECQMmTJgwYcKECRMmTJgwYcKECRMmLAA7"},{"ID":"@0H@","NAME":"ICON_PREVIOUS_VALUE","IMG":"REF UNSUPPORTED","RAW":"R0lGODlhEAAQAIAAAAAAAP8A/yH5BAEAAAEALAAAAAAQABAAAAKRTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTAgQIECAABEmTBgQIECAABMmTJgQIECACBMmTJgwIECACRMmTJgwIUCECRMmTJgwYcCECRMmTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmLAA7"}]}

).


Создать демо 110

Image template declration

Предпросмотр запроса

Назначение

Демо-класс ZCL_XTT_DEMO_110 принимает двоичные данные XSTRING, а директива ;type=image создаёт оболочку ZCL_XTT_IMAGE внутри библиотеки. В контексте отчёта остаются только данные, а размеры и формат можно задать в шаблоне.

Класс ZCL_XTT_IMAGE

В предыдущем примере №10 картинки создавались с помощью класса ZCL_XTT_IMAGE.
Можно ли как то упростить данный процесс?

image

Зачем это надо?

  • Чтобы создать картинку на стороне ABAP нужен специальный factory метод. Если внутренняя реализация будет изменена в будущем, “жесткая” ссылка на класс и метод не позволят сделать это безболезненно
  • Чтобы понять шаблон нужно просмотреть код ABAP, тк тип {R-T-IMG} неизвестен
  • Если используется шаблон, изображению по факту нужны лишь бинарные данные
  • Без шаблона нужно также указать высоту, ширину и расширение файла (пу .jpg)

Дополнение ‘;type=image’

Данное дополнение позволяет “конвертировать” бинарные данные (xString) в картинку без вызова дополнительного метода ABAP

image

Пример №11 использует данные в №10. Только используется поле RAW TYPE XSTRING для вывода вместо IMG TYPE REF TO ZCL_XTT_IMAGE

image

Класс ZCL_XTT_IMAGE используется лишь опосредственно. Все дополнительные параметры в метод ZCL_XTT_IMAGE=>CREATE_IMAGE( ) можно передать через:

  • ;width=
  • ;height=
  • ;ext=

из самого шаблона, в более сложных случаях нужно использовать “заготовку” для картинок (см. столбец F)