ALV OO Set_table_for_first_display Load Layout YES/Change NO

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

ALV OO Set_table_for_first_display Load Layout YES/Change NO

Beitrag von RIG (Specialist / 110 / 30 / 1 ) »
Hallo Zusammen liebe Forenmitglieder,

ich beiße mir an einem Vermeintlich leichtem Thema die Zähne aus und finde leider auch im Netz keine passenden Tipps.

Meine Ziel ist es mit der set_table_for_first_display methode aus der Klasse cl_gui_alv_grid Daten anzuzeigen.

Je nach USER soll entweder erlaubt sein Layouts zu ändern und zu speichern oder, und genau das stellt das Problem dar
Layouts auswählen JA
Layouts anpassen NEIN
Layouts speichern NEIN

Leider bekomme ich das bisher nicht gelöst, kann mir aber nicht vorstellen das es nicht möglich ist.

Ich sehe nicht das der Funktionscode &MAINTAIN irgendwas ändert.

Code: Alles auswählen.

    wa_excluding = cl_gui_alv_grid=>MC_FC_MAINTAIN_VARIANT.
  APPEND wa_excluding TO it_excluding.


    CALL METHOD gr_alv_grid->set_table_for_first_display
      EXPORTING
        is_layout       = gs_layout
        is_variant      = gs_variant
        i_save          = ' ' 
        it_toolbar_excluding =  it_excluding
      CHANGING
        it_fieldcatalog = gt_feldkatalog
        it_outtab       = gt_ausgabe.
Für eure Hilfe schon mal vielen Dank.

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


Re: ALV OO Set_table_for_first_display Load Layout YES/Chang

Beitrag von ewx (Top Expert / 4846 / 311 / 642 ) »
Siehe hier: https://www.abapforum.com/forum/viewtop ... =1&t=16884
Mit "Layouts anpassen" meinst du sicherlich "Anpassen und speichern" nicht erlaubt?
Nur Anpassen kannst du kaum "verbieten", weil dafür ist ein Grid da: Spalten verschieben, ausblenden, Breite ändern etc.

Re: ALV OO Set_table_for_first_display Load Layout YES/Chang

Beitrag von RIG (Specialist / 110 / 30 / 1 ) »
Danke für die Antwort,
leider meine ich es genauso wie beschrieben.

Mit der ALV Variante CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' ist dies auch möglich, schon deswegen dachte ich sollte es mit der OO Version vom ALV auch funktionieren.

Viele Grüße

Re: ALV OO Set_table_for_first_display Load Layout YES/Chang

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Du musst den Funktionscode aus dem zugehörigen Untermenü ausblenden.
grid->m_cl_menu_button_variant->hide_functions( VALUE #( ( '&COL0' ) ) )
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: ALV OO Set_table_for_first_display Load Layout YES/Chang

Beitrag von RIG (Specialist / 110 / 30 / 1 ) »
black_adept hat geschrieben: Du musst den Funktionscode aus dem zugehörigen Untermenü ausblenden.
grid->m_cl_menu_button_variant->hide_functions( VALUE #( ( '&COL0' ) ) )
Danke für die Antwort,
wie mache ich das denn? Ist ja Protected und ich finde auf Anhieb keine Methode dafür.

Ich habe mich mal durchdebuggt und festgestellt das der FCODE &COLO ( MC_FC_CURRENT_VARIANT ) wenn ausgeschlossen, gleich alle Layout Funktionen und den Button ausblendet - man es über die it_excluding also nicht hinbekommt.

Code: Alles auswählen.

  wa_excluding = cl_gui_alv_grid=>MC_FC_CURRENT_VARIANT.
  APPEND wa_excluding TO it_excluding.
Eine Idee wäre noch den FCODE &LOAD und den Button nachträglich wieder einzublenden oder als Custombutton einzubauen.
Mich wundert dabei aber trotzdem das es im Standard so nicht geht.


Re: ALV OO Set_table_for_first_display Load Layout YES/Chang

Beitrag von RIG (Specialist / 110 / 30 / 1 ) »
Hervorragend, vielen Dank.

Nun habe ich die Funktionen wie gewünscht.

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report z_alv_layout_load_only
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_alv_layout_load_only.


CLASS: lcl_my_gui_alv_grid DEFINITION DEFERRED.

DATA: gr_alv_grid       TYPE REF TO lcl_my_gui_alv_grid.

DATA: gs_layout  TYPE lvc_s_layo,
      gs_variant TYPE disvariant.

DATA: gt_feldkatalog TYPE lvc_t_fcat,
      gt_daten       TYPE STANDARD TABLE OF sflight,
      gt_excluding   TYPE ui_functions.


CLASS lcl_my_gui_alv_grid DEFINITION INHERITING FROM cl_gui_alv_grid.
  PUBLIC SECTION.
    METHODS hide_functions_public
      IMPORTING it_excluding TYPE ui_functions.
ENDCLASS.

CLASS lcl_my_gui_alv_grid IMPLEMENTATION.
  METHOD hide_functions_public.
    CALL METHOD me->m_cl_menu_button_variant->hide_functions( it_excluding ).
  ENDMETHOD.
ENDCLASS.



START-OF-SELECTION.

  SELECT * FROM sflight INTO TABLE gt_daten UP TO 25 ROWS.


  IF gr_alv_grid IS NOT BOUND.

    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
      EXPORTING
        i_buffer_active        = ''
        i_structure_name       = 'SFLIGHT'
      CHANGING
        ct_fieldcat            = gt_feldkatalog
      EXCEPTIONS
        inconsistent_interface = 1
        program_error          = 2
        OTHERS                 = 3.
    IF sy-subrc <> 0.
*     Implement suitable error handling here
    ENDIF.


    CREATE OBJECT gr_alv_grid
      EXPORTING
        i_parent = cl_gui_custom_container=>screen0. "gr_alv_container.

    gs_variant-report = sy-repid.
    gs_layout-sel_mode = 'D'.



    CALL METHOD gr_alv_grid->set_table_for_first_display
      EXPORTING
        is_layout       = gs_layout
        is_variant      = gs_variant
        i_save          = ''
      CHANGING
        it_fieldcatalog = gt_feldkatalog
        it_outtab       = gt_daten.


    APPEND cl_gui_alv_grid=>mc_fc_current_variant TO gt_excluding.
    gr_alv_grid->hide_functions_public( it_excluding = gt_excluding ).

  ENDIF.

  Call Screen 0100.

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  LEAVE PROGRAM.
ENDMODULE.

Vielen lieben Dank

Seite 1 von 1

Vergleichbare Themen

2
Antw.
5171
Views
IW 38 - Change Layout
von xhuljano » 18.02.2015 16:12 • Verfasst in ABAP® für Anfänger
4
Antw.
5125
Views
Set table for first display
von pippi1710 » 27.10.2011 10:34 • Verfasst in ABAP® für Anfänger
0
Antw.
2139
Views
display a Internal table on a SmartForm
von jamiguel77 » 31.12.2014 20:15 • Verfasst in ABAP® für Anfänger
6
Antw.
5974
Views
ALV Refresh Table Display funktioniert nicht.
von Ichse2 » 21.02.2020 13:02 • Verfasst in ABAP Objects®
0
Antw.
4598
Views

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2405
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 8995