CL_GUI_ALV_GRID editierbar -> nach Eingabe in Zelle wird genau diese nicht mehr editierbar, alle andern bleiben

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

CL_GUI_ALV_GRID editierbar -> nach Eingabe in Zelle wird genau diese nicht mehr editierbar, alle andern bleiben

Beitrag von Romaniac (Specialist / 221 / 65 / 27 ) »
Hallo zusammen,

ich habe in einem editierbaren ALV bestimmte Zellen editierbar (gesteuert über die Style Tabelle), andere nicht. Jedesmal wenn in eine Zelle ein Wert eingegeben wurde ist die Zelle nach Eingabe von "Enter" geschlossen, alle anderen bleiben offen. Trage ich dann in eine andere Zelle einen Wert ein, geht die vorherige Zelle wieder auf, die aktuelle schließt sich. Im Debugger konnte ich bis kurz vor der Ausgabe in der Style Tabelle den Wert für "offen" sehen, also wird der nicht überschrieben. In den Methoden in denen der Saldo angepasst wird nach Eingabe werden nur die Beträge verändert in der Liste verändert, keine Zeilen aus der Liste gelöscht oder hinzugefügt. Hat jemand eine Idee was ich falsch machen könnte?

Vielen Dank und Gruß,

Wolfgang

ALV:

Code: Alles auswählen.

  METHOD alv_data_display_editable.

    r_alv->register_edit_event( i_event_id = cl_gui_alv_grid=>mc_evt_modified ).

    SET HANDLER me->/kbc/if_iat_gui_alv_grid~data_changed FOR r_alv.
*    SET HANDLER me->/kbc/if_iat_gui_alv_grid~handle_toolbar             FOR r_alv.
*    SET HANDLER me->/kbc/if_iat_gui_alv_grid~handle_before_user_command FOR r_alv.
*    SET HANDLER me->/kbc/if_iat_gui_alv_grid~handle_user_command        FOR r_alv.
*    SET HANDLER me->/kbc/if_iat_gui_alv_grid~handle_after_user_command  FOR r_alv.
*    SET HANDLER me->zif_gui_alv_grid~handle_button_click        FOR r_alv.

    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.

  ENDMETHOD.
Feldstatus:

Code: Alles auswählen.

      CASE iv_mode.
        WHEN 'OPEN'.
          ct_style = VALUE #( BASE ct_style ( fieldname = iv_field_name style = cl_gui_alv_grid=>mc_style_enabled ) ).
        WHEN 'CLOSE'.
          ct_style = VALUE #( BASE ct_style ( fieldname = iv_field_name style = cl_gui_alv_grid=>mc_style_disabled ) ).
      ENDCASE.
Data changed:

Code: Alles auswählen.

  METHOD /kbc/if_iat_gui_alv_grid~data_changed.
    DATA lv_stable TYPE lvc_s_stbl.
    lv_stable-row = abap_true.
    lv_stable-col = abap_true.

    r_iat->alv_data_changed( er_data_changed ).
    r_alv->refresh_table_display( is_stable = lv_stable ).
  ENDMETHOD.

Code: Alles auswählen.

  METHOD alv_data_changed.
    LOOP AT ir_data_changed->mt_good_cells ASSIGNING FIELD-SYMBOL(<lw_good>).
      READ TABLE t_balance_alv ASSIGNING FIELD-SYMBOL(<lw_balance_alv>) INDEX <lw_good>-row_id.
      ASSIGN COMPONENT <lw_good>-fieldname OF STRUCTURE <lw_balance_alv> TO FIELD-SYMBOL(<lv_value>).
      IF sy-subrc = 0.
        <lv_value> = <lw_good>-value.
      ENDIF.

      IF <lw_good>-fieldname = 'TARGET_VALUE'.
        calc_value_adjust( <lw_good>-row_id ).

* get BCS Total and set all totals
        calc_value_adjust_bcs( ).
      ENDIF.

    ENDLOOP.

  ENDMETHOD.
Geht nicht gibts nicht

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


Re: CL_GUI_ALV_GRID editierbar -> nach Eingabe in Zelle wird genau diese nicht mehr editierbar, alle andern bleiben

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Ich vermute dein Fehler liegt in deinem zweiten Code-Schnippsel:
Wird CT_STYLE oder besser der zugehörige Inhalt in der Ausgabetabelle irgendwann mal auch gelöscht?
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 editierbar -> nach Eingabe in Zelle wird genau diese nicht mehr editierbar, alle andern bleiben

Beitrag von Romaniac (Specialist / 221 / 65 / 27 ) »
Nein, ich loope da nur drüber, ich habe es jetzt nochmal debugged in Methode DATA_CHANGED, bis zum Aufruf von REFRESH_TABLE_DISPLAY steht in der T_STYLE für Feld 'TARGET_VALUE' ein '00080000' drin, der Wert für cl_gui_alv_grid=>mc_style_enabled
Geht nicht gibts nicht

Re: CL_GUI_ALV_GRID editierbar -> nach Eingabe in Zelle wird genau diese nicht mehr editierbar, alle andern bleiben

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Sicher?
So wie ich den Code lese (mit BASE) schreibst du sowohl "enabled" als auch beim nächsten Refresh "disabled" für dieselbe Spalte in unterschiedlichen Zeilen von CT_STYLE rein. Das würde zu deinem Verhalten (plötzliches an/aus) passen.
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 editierbar -> nach Eingabe in Zelle wird genau diese nicht mehr editierbar, alle andern bleiben

Beitrag von Romaniac (Specialist / 221 / 65 / 27 ) »
Hmmmm... nach Eingabe eines Wertes und Enter wird ja sofort das Event Data_Change ausgelöst, dort schreibe ich nur den Wert aus der Zelle in das Feld der interne Tabelle zurück, dann rufe ich den Refresh auf. Aber ich ich setze mal Breakpoint an den stellen wo ich das Feld auf oder zu mache.
Geht nicht gibts nicht

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1933
Views
ALV editierbar nach jeder Zelle Summierung in der gl. Spalte
von Kleenmex » 09.05.2008 11:00 • Verfasst in ABAP Objects®
3
Antw.
5400
Views
ALV Grid (CL_SALV_TABLE) editierbar
von egge » 25.01.2008 11:02 • Verfasst in Dialogprogrammierung
6
Antw.
13054
Views
ALV-GRID: Feldweise editierbar
von matthes » 30.04.2008 11:02 • Verfasst in ABAP Objects®
1
Antw.
1730
Views
ALV-Grid editierbar -> ab welchem Release
von svenk » 07.08.2007 13:56 • Verfasst in Dialogprogrammierung
4
Antw.
4352
Views
ALV-Grid editierbar machen (mit Bedingung)
von hausi » 04.08.2015 08:57 • Verfasst in ABAP® Core

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

SD_PRINT_TERMS_OF_PAYMENT
vor einer Woche von Manfred K. 1 / 1734
BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Wochen von snooga87 1 / 3567