Таки есть! Вот ведь, век живи - век учись.
Один немец нащупал:
https://tricktresor.de/blog/zellen-verbinden/Однако, с ограничениями функциональности ALV GRID, придётся отказаться от сортировки и фильтрации, и только текстовые поля.
Его вариант работает только с маленькими отчётами, когда ALV Grid не нужна онлайн-подкачка данных при скроллинге.
Я нашёл решение, в общем идея понятна, остальную обвязку (структуру и заполнение gt_Merge_Cell) каждый сам себе сочинит.
Для нормальной работы нужно переопределить метод CL_GUI_ALV_GRID->On_Before_Send:
Code:
Method On_Before_Send.
Data:
lv_Col type I.
Field-Symbols:
<mergecell> like line of gt_Merge_Cell,
<mtdata> like line of Mt_Data,
<mtinfo> like line of Mt_Info.
Call method Super->On_Before_Send
exporting
Firstline = Firstline
Lastline = Lastline.
*( обработка объединённых ячееек
Loop at Mt_Data assigning <mtdata>.
Read table mt_info assigning <mtinfo> index <mtdata>-Col_Pos.
check sy-subrc = 0.
lv_Col = <mtinfo>-Col_Id - 1.
Read table gt_Merge_Cell assigning <mergecell>
with key Row = <mtdata>-Row_Id "Row_Pos
Col = lv_Col. "<mtdata>-Col_Pos.
If sy-subrc = 0.
<mtdata>-Mergehoriz = <mergecell>-Horz.
<mtdata>-Mergevert = <mergecell>-Vert.
EndIf.
EndLoop.
*)
EndMethod.
Эх! Ещё бы переносы текста и продление его поверх других ячеек.