CL_GUI_ALV_GRID Layout (Default Einstellung und originale Reihenfolge der Spalten)

Benutzeroberflächen in SAP®-Systemen.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

CL_GUI_ALV_GRID Layout (Default Einstellung und originale Reihenfolge der Spalten)

Beitrag von Romaniac (Specialist / 198 / 57 / 26 ) »
Hallo zusammen,

ich habe einen editierbaren ALV der per Event immer wieder refreshed wird. Dabei vergisst der ALV immer die Default Variante des Users, was mache ich da falsch? Ich habe jetzt auch schon die /Default Variante mitgegeben, nur wenn ich sie beim Refresh nochmal reinschreibe bleibt die auch da, ist das so korrekt?

Dann habe ich mit den Varianten rumprobiert, wie bekomme ich den die ursprüngliche Spaltenreihenfolge wieder her, so wie sie im DDIC definiert ist?

Danke und Gruß,

Wolfgang

Code: Alles auswählen.

  METHOD alv_refresh.
    DATA lv_stable TYPE lvc_s_stbl.
    lv_stable-row = abap_true.
    lv_stable-col = abap_true.

    w_variant-report = sy-repid.
    w_variant-variant = '/DEFAULT'.

    me->alv_hide_cols( ).
    me->r_alv->set_frontend_fieldcatalog( EXPORTING it_fieldcatalog = t_fcat ).
    me->r_alv->set_frontend_layout( EXPORTING is_layout = w_layout ).
    me->r_alv->refresh_table_display( is_stable = lv_stable ).
*                                      i_soft_refresh = abap_false ).
  ENDMETHOD.

  METHOD build_display_options.

    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
      EXPORTING
        i_structure_name   = '/KBC/FI_ADJUSTMENT_ALV_EDIT_S'
        i_bypassing_buffer = abap_true
      CHANGING
        ct_fieldcat        = t_fcat.

    alv_rename_cols( ).
    alv_hide_cols( ).

*    w_layout-cwidth_opt = abap_true.
    w_layout-stylefname = 'T_STYLE'.
    w_layout-ctab_fname = 'T_COLOR'.
    w_variant-report = sy-repid.
    w_variant-variant = '/DEFAULT'.
    APPEND cl_gui_alv_grid=>mc_fg_edit TO t_excl.
  ENDMETHOD.

    r_alv->set_ready_for_input( 1 ).
    CALL METHOD r_alv->set_table_for_first_display
      EXPORTING
        i_bypassing_buffer   = abap_true
        is_variant           = w_variant
        i_save               = 'A'
        i_default            = 'X'
        it_toolbar_excluding = t_excl
        is_layout            = w_layout
      CHANGING
        it_outtab            = r_iat->t_balance_alv
        it_fieldcatalog      = t_fcat.
Geht nicht gibts nicht

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


Re: CL_GUI_ALV_GRID Layout (Default Einstellung und originale Reihenfolge der Spalten)

Beitrag von a-dead-trousers (Top Expert / 4281 / 214 / 1140 ) »
Warum veränderst du im "Refresh" auch das Layout und den Feldkatalog?
Ich würde darauf tippen, dass dein Fehler von dort herrührt.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Romaniac

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.

ECC: 6.18
Basis: 7.50

Re: CL_GUI_ALV_GRID Layout (Default Einstellung und originale Reihenfolge der Spalten)

Beitrag von Romaniac (Specialist / 198 / 57 / 26 ) »
Da könntest Du recht haben, ich weis es ehrlich gesagt nicht mehr. Wie ich die original Spaltenreihenfolge wieder herbekomme weis keiner?
Geht nicht gibts nicht

Re: CL_GUI_ALV_GRID Layout (Default Einstellung und originale Reihenfolge der Spalten)

Beitrag von jocoder (Specialist / 339 / 3 / 101 ) »
Wie ich die original Spaltenreihenfolge wieder herbekomme weis keiner?
Die originale Spaltenreihenfolge wie im Dictionary definiert, wurde bei meinen Tests mit der Methode

Code: Alles auswählen.

me->r_alv->set_frontend_fieldcatalog( EXPORTING it_fieldcatalog = t_fcat ).
wiederhergestellt.
In deinem Fall liegt es wahrscheinlich an der Methode alv_hide_cols. Verändert diese den Feldkatalog?

Re: CL_GUI_ALV_GRID Layout (Default Einstellung und originale Reihenfolge der Spalten)

Beitrag von Romaniac (Specialist / 198 / 57 / 26 ) »
Hallo Jocoder,

nein, die Methode ändert nichts am Feldkatalog. Die Default Varianten werden jetzt korrekt angezeigt nachdem ich den Feldkatalog nicht neu setze wie die eine-tote-hose vorgeschlagen hat oben.

Bei der Wiederherstellung der ursprünglichen Spaltenreihenfolge ging es mir darum wie ich die wieder hinbekomme wenn ich im Varianten Dialog eine Variante gesetzt habe in der bestimmte Felder eben ausgeblendet werden. Ich brauche aber auch die Ansicht mit allen Feldern die intern verwendet werden um Fehler identifizieren zu können über die Ausgabeliste. Aber sobald mal eine Variante gesetzt war komme ich nicht mehr zurück in die Ansicht "Zeige alles in der originären Reihenfolge".

Code: Alles auswählen.

  METHOD alv_hide_cols.
    
      t_cols_text = VALUE #(
        ( fieldname = 'KEY_BUKRS'        )
        ( fieldname = 'KEY_BCS_ITEM'     )
        ( fieldname = 'KEY_BCS_ITEM_ID'  ) " for test do not hide
        ( fieldname = 'KEY_BCS_BEWAR'    )
        ( fieldname = 'KEY_BCS_GSBER'    )
        ( fieldname = 'KEY_BCS_VBUND'    )
        ( fieldname = 'SORT_KEY'         ) " for test do not hide
        ( fieldname = 'LINE_TYPE'        )
        ( fieldname = 'KSL_RTCUR'        )
        ( fieldname = 'KSL_TARGET_VALUE' )
        ( fieldname = 'KSL_CALC_VALUE'   )
        ( fieldname = 'CREDIT_DEBIT_SHIFT'   )
        ( fieldname = 'HEADER'           ) ).
 


    LOOP AT t_cols_text ASSIGNING FIELD-SYMBOL(<lw_cols_text>).
      READ TABLE t_fcat ASSIGNING FIELD-SYMBOL(<lw_fcat>)
           WITH KEY fieldname = <lw_cols_text>-fieldname.
      IF sy-subrc = 0.
        <lw_fcat>-tech = abap_true.
      ENDIF.
    ENDLOOP.

* open/close business area
    LOOP AT t_fcat ASSIGNING <lw_fcat>
      WHERE fieldname = 'ERP_GSBER'
         OR fieldname = 'BCS_GSBER'
         OR fieldname = 'TARGET_GSBER'.
      CASE r_iat->b_use_gsber.
        WHEN abap_false.
          <lw_fcat>-tech = abap_true.
        WHEN abap_true.
          <lw_fcat>-tech = abap_false.
      ENDCASE.
    ENDLOOP.
  ENDMETHOD.
Geht nicht gibts nicht

Re: CL_GUI_ALV_GRID Layout (Default Einstellung und originale Reihenfolge der Spalten)

Beitrag von jocoder (Specialist / 339 / 3 / 101 ) »
Wie wäre es mit einem Button, der einfach den Feldkatalog, wie er aus dem Funktionsbaustein LVC_FIELDCATALOG_MERGE kommt, setzt und die Anzeige erneuert? Dies würde doch das Problem lösen.

Re: CL_GUI_ALV_GRID Layout (Default Einstellung und originale Reihenfolge der Spalten)

Beitrag von Romaniac (Specialist / 198 / 57 / 26 ) »
Danke erst mal für Deine Hilfe! Klar wäre das eine Lösung, aber da muss ich programmieren um eine eigentlich simple Aufgabe zu lösen: Zeig mir die Liste an wie sie aus dem Programm kommt, das muss doch über den Variantendialog auch funktionieren.
Geht nicht gibts nicht

Re: CL_GUI_ALV_GRID Layout (Default Einstellung und originale Reihenfolge der Spalten)

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
1. Du übergibst der Methode Set_Table_For_First_Display die Option "DEFAULT=X" und setzt zusätzlich das Layout "/DEFAULT". Was ist, wenn der Anwender eine andere Variante als "Default" markiert hat? Ich würde "/DEFAULT" komplett weglassen. Zusätzlich solltest du einen HANDLE definieren.

2. Das mit der Originalreihenfolge ist in der Tat nicht so trivial. Das habe ich auch schon vermisst. Meiner Meinung nach müsstest du erstens "/DEFAULT" aus deinem Programm entfernen. Dann musst du sicherstellen, dass keine Default-Variante eingestellt ist. Wenn du dann das Programm startest, müsste eigentlich das Originallayout wieder hergestellt sein.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Romaniac


Seite 1 von 1

Vergleichbare Themen

2
Antw.
2189
Views
ALV GRID Reihenfolge der spalten ändern
von ek53 » 09.11.2016 10:10 • Verfasst in ABAP® für Anfänger
0
Antw.
2156
Views
ALV-GRID EXCEL-EXPORT Spalten-Reihenfolge
von meinrad » 29.01.2007 16:20 • Verfasst in ABAP® Core
2
Antw.
1805
Views
OO ALV Layout /DEFAULT
von Icke0801 » 07.11.2019 14:50 • Verfasst in Dialogprogrammierung
2
Antw.
4550
Views
ALV-Spalten im Layout ausblenden
von chatty » 14.02.2006 12:14 • Verfasst in ABAP® Core
3
Antw.
332
Views
ALV-List-Layout: Offset der Spalten ermitteln
von Josef Bauernfeind » 07.09.2022 16:14 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 168