ALV: nur eine einzige Zelle als Checkbox

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

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

ALV: nur eine einzige Zelle als Checkbox

Beitrag von kloie (ForumUser / 1 / 1 / 0 ) »
Hallo zusammen,

wie kann ich im ALV eine einzige Zelle zu einer Checkbox machen, ohne , dass die ganze Spalte oder Zeile als Checkbox ausgegeben wird.

Wäre das irgendwie möglich?

Vielen Dank im voraus ^^

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


Re: ALV: nur eine einzige Zelle als Checkbox

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Soll die Checkbox editierbar sein?
wenn nicht, dann:

Code: Alles auswählen.

REPORT.

PARAMETERS p_Test.
INCLUDE <cl_alv_control>.

INITIALIZATION.

 data(fcat) = value lvc_t_fcat(
   ( fieldname = 'DEMO'   outputlen = 20 )
   ( fieldname = 'FLAG'   outputlen = 3 ) ).
 types: begin of _struc,
          demo type c length 20,
          flag type c LENGTH 1,
          style type lvc_t_styl,
        END OF _struc,
        _tab type STANDARD TABLE OF _struc with DEFAULT KEY.

 data(outtab) = value _tab(
    ( demo = 'no checkbox'     flag = abap_false style = value #( ( fieldname = 'FLAG' style = alv_style_checkbox_no ) ) )
    ( demo = 'checkbox X'      flag = abap_True  style = value #( ( fieldname = 'FLAG' style = alv_style_checkbox_checked + alv_style_enabled ) ) )
    ( demo = 'checkbox space'  flag = abap_True  style = value #( ( fieldname = 'FLAG' style = alv_style_checkbox_not_checked ) ) ) ).

 data(grid) = new cl_gui_alv_grid( i_parent = new cl_gui_docking_Container( ratio = 80 side = 1 ) ).
 grid->set_table_for_first_display(
   EXPORTING
     is_layout       = value #( stylefname = 'STYLE' )
   CHANGING
     it_outtab           = outtab
     it_fieldcatalog               = fcat
   EXCEPTIONS
     others                        = 4 ).
SNAG-0007.png
Die eine Checkbox sieht zwar aus, als wäre sie editierbar, aber das ist nicht der Fall. Wenn man das noch möchte, dann müsste man noch das entsprechenden Ereignis ausprogrammieren:

Code: Alles auswählen.

REPORT.

PARAMETERS p_test.

CLASS app DEFINITION.
  PUBLIC SECTION.
    METHODS go.
  PRIVATE SECTION.
    INCLUDE <cl_alv_control>.
    TYPES: BEGIN OF _struc,
             demo  TYPE c LENGTH 20,
             flag  TYPE c LENGTH 1,
             style TYPE lvc_t_styl,
           END OF _struc,
           _tab TYPE STANDARD TABLE OF _struc WITH DEFAULT KEY.
    METHODS on_click FOR EVENT hotspot_click OF cl_gui_alv_grid IMPORTING e_column_id e_row_id sender.
    DATA outtab TYPE _tab.
ENDCLASS.

CLASS app IMPLEMENTATION.
  METHOD go.


    DATA(fcat) = VALUE lvc_t_fcat(
      ( fieldname = 'DEMO'   outputlen = 20 )
      ( fieldname = 'FLAG'   outputlen = 3 hotspot = abap_true ) ).

    outtab = VALUE #(
       ( demo = 'no checkbox'     flag = abap_false style = VALUE #( ( fieldname = 'FLAG' style = alv_style_checkbox_no ) ) )
       ( demo = 'checkbox X'      flag = abap_true  style = VALUE #( ( fieldname = 'FLAG' style = alv_style_checkbox_checked  ) ) )
       ( demo = 'checkbox space'  flag = abap_false style = VALUE #( ( fieldname = 'FLAG' style = alv_style_checkbox_not_checked ) ) ) ).

    DATA(grid) = NEW cl_gui_alv_grid( i_parent = NEW cl_gui_docking_container( ratio = 80 side = 1 ) ).
    grid->set_table_for_first_display(
      EXPORTING
        is_layout       = VALUE #( stylefname = 'STYLE' )
      CHANGING
        it_outtab           = outtab
        it_fieldcatalog               = fcat
      EXCEPTIONS
        OTHERS                        = 4 ).
    SET HANDLER on_click FOR grid.

  ENDMETHOD.

  METHOD on_click.

    ASSIGN outtab[ e_row_id ] TO FIELD-SYMBOL(<outline>).
    IF sy-subrc = 0.
      <outline>-flag = SWITCH #( <outline>-flag WHEN abap_true THEN abap_false ELSE abap_true ).
      <outline>-style = VALUE #( (
        fieldname = 'FLAG'
        style     = SWITCH #( <outline>-flag
          WHEN abap_true THEN alv_style_checkbox_checked
          ELSE alv_style_checkbox_not_checked ) ) ).
      sender->refresh_table_display(
          is_stable      = VALUE #( row = abap_true col = abap_true )
          i_soft_refresh = abap_true ).
    ENDIF.

  ENDMETHOD.
ENDCLASS.

INITIALIZATION.
  NEW app( )->go( ).
Dann kann man die Checkbox aber anscheinend nicht mehr auf "nicht eingabebereit" stellen. ALV_STYLE_DISABLED funktioniert dann jedenfalls nicht mehr.

Eine andere Möglichkeit wäre, dass man mit Icons arbeitet und passende Icons verwendet.

Oder ganz anders: https://tricktresor.de/blog/moderne-ui- ... -alv-grid/

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


Seite 1 von 1

Vergleichbare Themen

12
Antw.
10782
Views
eine einzige Suchhilfe für mehrere Dynprofelder
von sapdepp » 19.06.2014 12:26 • Verfasst in Dialogprogrammierung
4
Antw.
2119
Views
ALV Zelle einfärben
von Google » 23.11.2005 13:57 • Verfasst in ABAP® Core
2
Antw.
3737
Views
ALV Zelle ausblenden
von jspranz » 25.10.2010 17:47 • Verfasst in Dialogprogrammierung
15
Antw.
11831
Views
F4 in ALV Grid Zelle
von the-FoX » 12.01.2005 11:24 • Verfasst in ABAP Objects®
2
Antw.
2042
Views
ALV - Button in Zelle
von Google » 13.02.2007 09:34 • Verfasst in ABAP® Core

Ü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

Daten an Tabelle binden
Gestern von Bright4.5 1 / 510
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2145
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8741