ABAP : OO-ALV nicht immer aktualisiert
Ich weiß, mein problem wurde gebeten, hundert mal.
Aber ich kann immer noch nicht finden eine geeignete Lösung für mich
- Ich habe ein dropdown, jedes mal, wenn ich Daten ändern in der dropdown geladen werden, die neuen Daten basierend auf den dropdown-Daten
- Aus Schritt eins, ich aktualisieren editierbaren ALV
- Jede änderung in editierbaren ALV willbe gespeichert (eine weitere Aktion für die Rettung)
Mein problem, wenn, Nachdem ich speichern, ich kann nicht aktualisieren, mein ALV
Aber es ist kein problem wenn ich nicht gedrückt Schaltfläche speichern
Bitte bitte helft mir
Dank
Angefügten Code
Schritt 1 ist "wenn SET_P" in diesem code
HINWEIS :
jemand aus SAP-forum gesagt, mich zu bewegen refresh-Funktion der PBO habe ich versucht, dieses aber noch nicht
MODULE pbo_1000 OUTPUT.
IF flag = 0.
SET PF-STATUS '1000'.
SET TITLEBAR '1000'.
s_name = sy-uname.
s_date = sy-datum.
IF s_month IS INITIAL AND s_year IS INITIAL.
s_month = sy-datum+4(2).
s_year = sy-datum(4).
ENDIF.
PERFORM create_toolbar.
PERFORM create_catalog.
PERFORM select_data.
CREATE OBJECT ob_custom
EXPORTING
container_name = 'CCTRL'.
CREATE OBJECT ob_grid
EXPORTING
i_parent = ob_custom
i_appl_events = 'X'.
PERFORM create_dropbox.
CALL METHOD ob_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'TYPE'
it_toolbar_excluding = lt_toolbar
is_layout = lyt
CHANGING
it_fieldcatalog = fld[]
it_outtab = itab[].
CALL METHOD ob_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
CALL METHOD ob_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
ENDIF.
ENDMODULE.
PAI Module
MODULE user_command_1000 INPUT .
DATA: v_perio(6) TYPE c.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE TO SCREEN 0.
WHEN 'SAVE'.
PERFORM save_data.
PERFORM send_email.
WHEN 'SET_S'.
flag = 1.
PERFORM set_status.
CALL METHOD ob_grid->refresh_table_display
EXPORTING
is_stable = stbl.
WHEN 'SET_P'.
flag = 1.
PERFORM select_data.
CALL METHOD ob_grid->refresh_table_display
EXPORTING
is_stable = stbl.
ENDCASE.
ENDMODULE.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich etwas ähnliches gemacht in einer Anwendung, die benötigt, um aktualisiert werden, wenn gespeichert, da einige Berechnungen ändern in der Maske. Ich Teil den folgenden code in das Kommando-Formular für den 'REUSE_ALV_GRID_DISPLAY' - Funktion-Modul.
Hoffe es hilft
Ich denke, Sie müssen die CHECK_CHANGED_DATA - Methode aufgerufen, die als erstes in der PAI, das würde das Feuer bis die Ereignisse DATA_CHANGED und DATA_CHANGED_FINISHED.
Aber das wichtigste ist, dass er synchronisiert das OLE-Objekt, mit dem Instanz-backend und dann, wenn man den Aufruf der REFRESH_TABLE_DISPLAY es würde aktualisieren Sie Ihre ALV richtig. Ich habe kein Beispiel im moment, aber ich kann vielleicht versuchen nächste Woche, wenn ich Zugang zum system.
Durch die Art und Weise, in der PBO -, die Sie nicht brauchen, um die variable Flagge können Sie prüfen, ob das ALV-Objekt bereits initialisiert wurde oder nicht, und nach diesem können Sie erstellen/aktualisieren von alv. So etwas wie dieses:
Könnten Sie erreichen dies, indem manuell auslösen PBO. Sie erklärte, dass die Bearbeitung gespeichert, so können Sie nur die Anzeige des ALV in PBO wieder:
Nach dieser Aktion
sy-ucomm
im PBO den WertREFRESH
.