Generate this example Choose a template and create a fresh report with the demo service.

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

JSON
{"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":[]}]}

).


Generate demo 022

Merging cells (Flight Model)

Request preview

Purpose

Demo ZCL_XTT_DEMO_022 covers both fixed merged ranges and data-driven merging. It uses flight-model data to show how repeated values can be merged without calculating the final range in ABAP.

Static merged ranges

When the range is known in advance, merge it directly in the template.

Cells B3:H3 & B5:F5

image

Generated result:

image


Merged ranges may be horizontal or vertical.

Cells B2 & E2

image

Result

image

Dynamic merging with ;merge=X

Use ;merge=X when the range grows with the generated data and its final size is not known at design time.

image

With normal row-oriented output, XTT merges vertically across generated rows. With ;direction=column, it merges horizontally across generated columns.


Merge rule

Only adjacent cells with equal values are merged.

In cell D10 of the report (D3 in the template), func=FIRST copies a value from level=2 to level=1. The value is not merged because that marker lacks ;merge=X; the adjacent column C includes it.

image

Inspect the generated values first when a merge is unexpected. Equal values and the directive must both be present.

image


For the hierarchy used by this example, see grouped trees.