In eine Spalte des SALV (bzw. des zugrundeliegenden ALV) passen max. 128 Zeichen (Datentyp LVC_VALUE). Sofern das ausreichend ist, könntest du eine "Titelzeile" in die Daten des SALV einfügen. Dann mit ein wenig OO-Magie kannst du auf das ALV Grid zugreifen und das protected Attribut MT_DATA verändern (Ableitung mit statischer Methode und Übergabe der Objektreferenz) damit die Zelle über die gesamte Breite des Grid läuft. (siehe auch https://tricktresor.de/blog/zellen-verbinden/)
EDIT:
Okay, es geht auch einfacher. Das SALV hat doch TOP_OF_LIST und END_OF_LIST. Laut Beschreibung sind das HTML-Header und -Footer Objekte. Kannst du daraus nicht was basteln?
Ansonsten bleibt immer noch der Weg über einen Splitter mit einem eigenen HTML-Header-Control.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.