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

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

JSON
{"FIRST_NAME":"FirstName","LAST_NAME":"LastName","MIDDLE_NAME":"MiddleName","T":[{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"BERLIN","LANDXTO":"Germany","CARRNAME":"Lufthansa","CONNID":"2402","FLDATE":"2023-11-03","DEPTIME":"10:30:00","ARRTIME":"11:35:00","PRICE":242.0,"CURRENCY":"EUR","SEATSMAX":475,"SEATSOCC":451,"_GROUP1":"FRANKFURT-Germany-BERLIN-Germany","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"BERLIN","LANDXTO":"Germany","CARRNAME":"Lufthansa","CONNID":"2402","FLDATE":"2024-01-22","DEPTIME":"10:30:00","ARRTIME":"11:35:00","PRICE":242.0,"CURRENCY":"EUR","SEATSMAX":475,"SEATSOCC":452,"_GROUP1":"FRANKFURT-Germany-BERLIN-Germany","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"BERLIN","LANDXTO":"Germany","CARRNAME":"Lufthansa","CONNID":"2402","FLDATE":"2024-04-11","DEPTIME":"10:30:00","ARRTIME":"11:35:00","PRICE":242.0,"CURRENCY":"EUR","SEATSMAX":475,"SEATSOCC":461,"_GROUP1":"FRANKFURT-Germany-BERLIN-Germany","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"BERLIN","LANDXTO":"Germany","CARRNAME":"Lufthansa","CONNID":"2402","FLDATE":"2024-04-28","DEPTIME":"10:30:00","ARRTIME":"11:35:00","PRICE":242.0,"CURRENCY":"EUR","SEATSMAX":475,"SEATSOCC":461,"_GROUP1":"FRANKFURT-Germany-BERLIN-Germany","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"BERLIN","LANDXTO":"Germany","CARRNAME":"Lufthansa","CONNID":"2402","FLDATE":"2024-05-28","DEPTIME":"10:30:00","ARRTIME":"11:35:00","PRICE":242.0,"CURRENCY":"EUR","SEATSMAX":475,"SEATSOCC":460,"_GROUP1":"FRANKFURT-Germany-BERLIN-Germany","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"BERLIN","LANDXTO":"Germany","CARRNAME":"Lufthansa","CONNID":"2402","FLDATE":"2024-06-30","DEPTIME":"10:30:00","ARRTIME":"11:35:00","PRICE":242.0,"CURRENCY":"EUR","SEATSMAX":475,"SEATSOCC":459,"_GROUP1":"FRANKFURT-Germany-BERLIN-Germany","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"BERLIN","LANDXTO":"Germany","CARRNAME":"Lufthansa","CONNID":"2402","FLDATE":"2024-09-18","DEPTIME":"10:30:00","ARRTIME":"11:35:00","PRICE":242.0,"CURRENCY":"EUR","SEATSMAX":475,"SEATSOCC":189,"_GROUP1":"FRANKFURT-Germany-BERLIN-Germany","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"BERLIN","LANDXTO":"Germany","CARRNAME":"Lufthansa","CONNID":"2402","FLDATE":"2024-12-07","DEPTIME":"10:30:00","ARRTIME":"11:35:00","PRICE":242.0,"CURRENCY":"EUR","SEATSMAX":475,"SEATSOCC":32,"_GROUP1":"FRANKFURT-Germany-BERLIN-Germany","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"TOKYO","LANDXTO":"Japan","CARRNAME":"Japan Airlines","CONNID":"0408","FLDATE":"2023-11-03","DEPTIME":"20:25:00","ARRTIME":"15:40:00","PRICE":1061.36,"CURRENCY":"JPY","SEATSMAX":385,"SEATSOCC":367,"_GROUP1":"FRANKFURT-Germany-TOKYO-Japan","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"TOKYO","LANDXTO":"Japan","CARRNAME":"Japan Airlines","CONNID":"0408","FLDATE":"2024-01-22","DEPTIME":"20:25:00","ARRTIME":"15:40:00","PRICE":1061.36,"CURRENCY":"JPY","SEATSMAX":385,"SEATSOCC":373,"_GROUP1":"FRANKFURT-Germany-TOKYO-Japan","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"TOKYO","LANDXTO":"Japan","CARRNAME":"Japan Airlines","CONNID":"0408","FLDATE":"2024-04-11","DEPTIME":"20:25:00","ARRTIME":"15:40:00","PRICE":1061.36,"CURRENCY":"JPY","SEATSMAX":385,"SEATSOCC":373,"_GROUP1":"FRANKFURT-Germany-TOKYO-Japan","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"TOKYO","LANDXTO":"Japan","CARRNAME":"Japan Airlines","CONNID":"0408","FLDATE":"2024-06-30","DEPTIME":"20:25:00","ARRTIME":"15:40:00","PRICE":1061.36,"CURRENCY":"JPY","SEATSMAX":385,"SEATSOCC":364,"_GROUP1":"FRANKFURT-Germany-TOKYO-Japan","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"TOKYO","LANDXTO":"Japan","CARRNAME":"Japan Airlines","CONNID":"0408","FLDATE":"2024-09-18","DEPTIME":"20:25:00","ARRTIME":"15:40:00","PRICE":1061.36,"CURRENCY":"JPY","SEATSMAX":385,"SEATSOCC":51,"_GROUP1":"FRANKFURT-Germany-TOKYO-Japan","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"TOKYO","LANDXTO":"Japan","CARRNAME":"Japan Airlines","CONNID":"0408","FLDATE":"2024-12-07","DEPTIME":"20:25:00","ARRTIME":"15:40:00","PRICE":1061.36,"CURRENCY":"JPY","SEATSMAX":385,"SEATSOCC":15,"_GROUP1":"FRANKFURT-Germany-TOKYO-Japan","T_COLOR":[]},{"CITYFROM":"FRANKFURT","LANDXFROM":"Germany","CITYTO":"NEW YORK","LANDXTO":"USA","CARRNAME":"Lufthansa","CONNID":"0400","FLDATE":"2023-11-03","DEPTIME":"10:10:00","ARRTIME":"11:34:00","PRICE":666.0,"CURRENCY":"EUR","SEATSMAX":330,"SEATSOCC":321,"_GROUP1":"FRANKFURT-Germany-NEW YORK-USA","T_COLOR":[]}]}

).


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

;call

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

Предыстория

Ранее абсолютно все передаваемые данные должны были быть сформированы заранее и переданы в метод xtt->merge( ). И таких данных подчас довольно много. Дабы сократить объем передаваемых данных в примере No130 введено дополнение ;cond= которое позволяет писать простые ABAP выражения COND #( ). К примеру если надо вывести максимальное из полей A и B в структуре R можно написать в шаблоне {R;cond=WHEN value-A gt value-B THEN value-A ELSE value-B} без создания 3-го поля в R. Для краткости выражение можно написать вот так {R:WHEN v-A gt value-B THEN v-A ELSE v-B}.

Но что если выражение содержит очень много пар WHEN-THEN или же его проблематично записать в одну строку? Чтобы улучшить чтения шаблона введена возможность вызова метода с передачей в него, в случае необходимости, параметров.

Неявная передача параметра

Для вызова метода в шаблоне можно использовать дополнение ;call=, сам объект чьи методы будем вызывать передается в методе merge

image

В шаблоне нет необходимости указывать передачу структуры R

image

Она передается неявно, по имени IS_ROOT

      get_fullname
        IMPORTING
                  is_root        TYPE ts_root " <--- is passed implicitly
        RETURNING VALUE(rv_text) TYPE string,

...

  METHOD get_fullname.
    rv_text = to_upper( |{ is_root-first_name } { is_root-last_name } { is_root-middle_name }| ).
  ENDMETHOD.

Краткая форма

Чтобы как и в случае с заменой ;cond= на :, ;call= можно заменить на один символ @ image

Явная передача параметров

Если передавать всю структуру не нужно, можно передать параметр явно через value-FIELD (для ;call=) или же v-FIELD (для @)

image

Метод имеет следующую сигнатуру

      date_text
       IMPORTING
         " is_root TYPE ts_flight_info <-- no need. Pass v-FLDATE explicitly
         iv_date TYPE d
         iv_lang TYPE sylangu DEFAULT sy-langu
       RETURNING VALUE(rv_text) TYPE string.

Обратите внимание что тип (пу STRING) в отличии от ;cond= ячейка {R-T:sy-tabix;type=integer} указывать не надо. Так как тип для rv_text определяется динамически

Результат на двух языках: image


PS

Вывод дат через функцию носит демонстративный характер. При использовании Excel лучше использовать тип ABAP D date, и задавать формат в самой ячейке (Сtrl+1)

image

image


Для универсального вывода дат в Pdf & Word зачастую можно обойтись ;cond= с дополнением COUNTRY

image

image