Hallo,
ist das ein Bug oder ein Feature?
Ich zeige eine Tabelle per CL_SALV_TABLE an. Da die Liste für den Druck zu breit wäre, bin ich in die Druckansicht und habe dort das Layout auf dreizeilig gesetzt, Spaltenbreiten geändert und das dann unter dem Namen /DEFAULT abgespeichert.
Dieses wird jetzt per SET_INITIAL_LAYOUT vor dem Display-Aufruf gesetzt, das funktioniert prinzipiell.
Code: Alles auswählen.
lr_layout->set_initial_layout( '/DEFAULT' ).
lr_alv->display( ).
Wenn ich zuvor beim Erzeugen meines ALV-Objektes per factory-Aufruf den Parameter list_display auf 'X' setze, also mit der Listanzeige starte, sieht alles genau so aus wie gewünscht.
Code: Alles auswählen.
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = p_print
IMPORTING
r_salv_table = lr_alv
CHANGING
t_table = gt_daten.
Wenn ich beim factory-Aufruf den Parameter list_display aber auf ' ' belasse, also mit dem Grid starte, erhalte ich dort (natürlich) eine einzeilige Anzeige. Beim Wechsel auf die Druckansicht erscheint eine dreizeilige, also wie gewünscht, mein Layout wird wohl gezogen. Nur: die Spaltenbreiten sind nicht wie von mir gesetzt.
Lade ich dann nochmal mein Layout, dann stimmen auch die Spaltenbreiten.
Ich hoffe, das war soweit verständlich, hat wer 'ne Idee?
Gruß,
Frank.