Dzien Dobry,
Staram nauczyc sie programowac w ABAPie. Tworzyłem ostatnio ALV w ktorej nie mam struktury słownikowej. Chciałbym by program zapisywał mi kazde zmiany dokonane w ALV Jednak nie jest to mozliwe. Wprowadzic zmiany moge jednak po nacisnieciu "SAVE' ALV wraca do podstawej wersji.
Napisałem taki kod w PAI ale nie działa.... (bylbym wdzieczny za podpowiedz)
WHEN 'SAVE'.
CALL METHOD cl_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD cl_alv->check_changed_data.
DATA: go_respond_events TYPE REF TO respond_events.
CREATE OBJECT go_respond_events.
SET HANDLER go_respond_events->handle_data_changed_finish FOR ALL INSTANCES.
FORM SAVE_DATA.
DATA : WA_MARACP TYPE PROGRAM_NAME.
DATA : WA_MARA_TMP TYPE marc.
DATA: WA_table TYPE PROGRAM_NAME.
DATA: IT_CHANGES TYPE STANDARD TABLE OF tt_table.
* DATA: it_maracp TYPE STANDARD TABLE OF tt_table.
CLEAR IT_CHANGES[].
LOOP AT gt_table INTO WA_table.
READ TABLE IT_MARACP INTO WA_MARACP INDEX sy-tabix.
CHECK sy-subrc IS INITIAL.
IF WA_MARACP NE WA_table.
APPEND WA_table TO IT_CHANGES.
MOVE-CORRESPONDING WA_maracp TO WA_MARA_TMP.
UPDATE marc FROM WA_MARA_TMP .
ENDIF.
ENDLOOP.
CHECK IT_CHANGES IS NOT INITIAL.
UPDATE marc FROM WA_MARA_TMP.
IF sy-subrc IS NOT INITIAL.
COMMIT WORK.
CLEAR IT_CHANGES.
it_maracp = gt_table.
ELSE.
ROLLBACK WORK.
gt_table = it_maracp.
ENDIF.
ALV- brak zapisu zmian
-
- Posty: 1061
- Rejestracja: pt mar 14, 2008 12:51 pm
- Has thanked: 71 times
- Been thanked: 314 times
Re: ALV- brak zapisu zmian
Nauka nauką ale nie rób takich rzeczy jak update standardowych tabel, tym bardziej MARA czy MARCa.
A nie działa Ci bo pewnie pomyliłeś i mas if sy-subrc is not initial -> commit. W sy-subrc INITIAL = wszystko ok.
A nie działa Ci bo pewnie pomyliłeś i mas if sy-subrc is not initial -> commit. W sy-subrc INITIAL = wszystko ok.