Layout Variante cl_salv_table

Getting started ... Alles für einen gelungenen Start.
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Layout Variante cl_salv_table

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hallo,

ich habe ein Programm geschrieben, welches eine Liste ausgibt. Bei dieser kann man per Eingabefeld ein Layout eingeben, dieses soll direkt dann auch so erscheinen, wie von dem Benutzer eingegeben. Wie funktioniert das genau mit der Klasse cl_salv_table?? Also das Layout in die Variante mit einbinden??

Vielen Dank

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Layout Variante cl_salv_table

Beitrag von ST22 (Specialist / 279 / 43 / 41 ) »
Die Klassen CL_SALV_LAYOUT und CL_SALV_LAYOUT_SERVICE liefern alles notwendige.
Der Report SALV_DEMO_TABLE_LAYOUT liefert Beispielcoding.
VG
Frank

Re: Layout Variante cl_salv_table

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
hmm könnte mir da vielleicht jemand ein Biespiel mit Coding geben?? Ich komm auf dieses Beispielcoding aus dem Beispiel nicht so klar :/

Re: Layout Variante cl_salv_table

Beitrag von ST22 (Specialist / 279 / 43 / 41 ) »
Du brauchst einen Parameter, der den Namen des Layout aufnimmt:
PARAMETERS:
p_layout TYPE slis_vari.

Bei INITIALIZATION kannst du das gespeicherte Default-Layout vorbelegen:

Code: Alles auswählen.

  
INITIALIZATION.
PERFORM get_default_layout CHANGING p_layout.

Code: Alles auswählen.

FORM get_default_layout CHANGING p_layout TYPE slis_vari.
  DATA:
    ls_layout TYPE salv_s_layout_info,
    ls_key    TYPE salv_s_layout_key.

  ls_key-report = sy-repid.

  ls_layout = cl_salv_layout_service=>get_default_layout(
    s_key = ls_key
    ).

  p_layout = ls_layout-layout.

ENDFORM.
Bei F4 auf dem Layout kannst du die Werthilfe anzeigen:

Code: Alles auswählen.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_layout.
  PERFORM f4_layout CHANGING p_layout.

Code: Alles auswählen.

FORM f4_layout CHANGING p_layout TYPE slis_vari.
  DATA:
    ls_layout_key  TYPE salv_s_layout_key,
    ls_layout_info TYPE salv_s_layout_info.

  ls_layout_key-report = sy-repid.
  ls_layout_info       = cl_salv_layout_service=>f4_layouts( ls_layout_key ).
  p_layout = ls_layout_info-layout.

ENDFORM.      
Wenn du deinen ALV aufbaust holst du dir die Referenz des Layouts:

Code: Alles auswählen.

Data:
  lr_layout type ref to CL_SALV_LAYOUT.
* pr_salv ist dein CL_SALV_TABLE Referenz      
lr_layout = pr_salv->get_layout( ).
* falls dein Reportparameter gefüllt ist, sendest du das vor der Displaymethode 
* an deinen ALV
IF p_layout IS NOT INITIAL.
  lr_layout->set_initial_layout( p_layout ).
ENDIF.

Folgende Benutzer bedankten sich beim Autor ST22 für den Beitrag (Insgesamt 2):
LD57Stefanouis


Re: Layout Variante cl_salv_table

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
irgendwie funktioniert es bei mir leider nicht :/

Hier der Code von mir:

Sieht da jemand den/die Fehler?

Code: Alles auswählen.

TYPES:BEGIN OF ty_test,
        name2 TYPE name2,
        ort01 TYPE ort01,
        rbetr TYPE rbetr,
      END OF ty_test.

PARAMETERS:p_layout TYPE slis_vari.

data: gt_outtab TYPE TABLE OF ty_test.

data: gr_alv TYPE REF TO cl_salv_table,
      gr_columns TYPE REF TO cl_salv_columns_table,
      gr_column  TYPE REF TO cl_salv_column_table,
            gr_layout           TYPE REF TO cl_salv_layout.

INITIALIZATION.
if p_layout is NOT INITIAL.
PERFORM get_default_layout CHANGING p_layout.
endif.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_layout.
  PERFORM f4_layout CHANGING p_layout.

  select name2 ort01 rbetr from reguh into corresponding fields of table gt_outtab.

cl_salv_table=>factory(
      IMPORTING
        r_salv_table   =  gr_alv
      CHANGING
        t_table        = gt_outtab
    ).


Data:
  lr_layout type ref to CL_SALV_LAYOUT.
* pr_salv ist dein CL_SALV_TABLE Referenz
lr_layout = gr_alv->get_layout( ).
* falls dein Reportparameter gefüllt ist, sendest du das vor der Displaymethode
* an deinen ALV
IF p_layout IS NOT INITIAL.
  lr_layout->set_initial_layout( p_layout ).
ENDIF.


* Einschalten der Funktionssymbole vom ALV-Grid.
    gr_alv->get_functions( )->set_all( abap_true ).

 " Ausgabe der Daten per ALV-Grid.
  gr_alv->display( ).



 FORM get_default_layout CHANGING p_layout TYPE slis_vari.
  DATA:
    ls_layout TYPE salv_s_layout_info,
    ls_key    TYPE salv_s_layout_key.

  ls_key-report = sy-repid.

  ls_layout = cl_salv_layout_service=>get_default_layout(
    s_key = ls_key
    ).

  p_layout = ls_layout-layout.

ENDFORM.


FORM f4_layout CHANGING p_layout TYPE slis_vari.
  DATA:
    ls_layout_key  TYPE salv_s_layout_key,
    ls_layout_info TYPE salv_s_layout_info.

  ls_layout_key-report = sy-repid.
  ls_layout_info       = cl_salv_layout_service=>f4_layouts( ls_layout_key ).
  p_layout = ls_layout_info-layout.

ENDFORM.

Re: Layout Variante cl_salv_table

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Es funktioniert jetzt zwar wenn ich über die F4-Hilfe ein Layout auswähle und dann Doppelklick mache, komme ich rein. Ich würde es allerdings gerne so haben, dass man einfach /FI (für die Variante) in das Feld eingibt, es mir dann alles anzeigt.

Re: Layout Variante cl_salv_table

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
L0w-RiDer hat geschrieben:
03.09.2019 14:25
Ich würde es allerdings gerne so haben, dass man einfach /FI (für die Variante) in das Feld eingibt, es mir dann alles anzeigt.
Du solltest dich mal mit Reporting-Ereignisblöcken beschäftigen.
Dem Programm fehlt ein START-OF-SELECTION vor dem eigentlichem SELECT der Daten.

Aktuell wird der Select und die ALV-Ausgabe nur noch im Ereignisblock AT SELECTION SCREEN ausgeführt.

Code: Alles auswählen.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_layout.
  PERFORM f4_layout CHANGING p_layout.

START-OF-SELECTION.          "<---neuer Ereignisblock
  select name2 ort01 rbetr from reguh into corresponding fields of table gt_outtab.

cl_salv_table=>factory(
Hier ist auch noch Unsinn drin: Wieso soll das Default Layout nur dann ermittelt werden, wenn bereits ein Layout eingeben wurde?

Code: Alles auswählen.

INITIALIZATION.
if p_layout is NOT INITIAL.
PERFORM get_default_layout CHANGING p_layout.
endif.
Gruß Hendrik

Seite 1 von 1

Vergleichbare Themen

2
Antw.
742
Views
SALV - gespeichertes Layout als ITAB
von nickname8 » 03.04.2019 12:16 • Verfasst in ABAP® für Anfänger
0
Antw.
1487
Views
SALV - Layout wird nicht gezogen
von ralf.wenzel » 15.02.2019 16:16 • Verfasst in ABAP Objects®
11
Antw.
9695
Views
Layout Variante Verwalten
von Sava » 23.07.2013 11:40 • Verfasst in ABAP® für Anfänger
4
Antw.
3898
Views
Aufruf REUSE_ALV* mit einem gespeicherten Layout-Variante
von JürgenFFM » 08.04.2007 15:29 • Verfasst in ABAP® Core
2
Antw.
5003
Views
Salv Table - Layouts speichern
von JohnLocklay » 14.06.2019 11:33 • Verfasst in ABAP Objects®

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor einer Stunde von tar 8 / 177
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1488

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor einer Stunde von tar 8 / 177
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1488

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822