ALV- brak zapisu zmian

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
Carlos87
Posty: 3
Rejestracja: wt maja 19, 2015 7:49 pm

ALV- brak zapisu zmian

Post autor: Carlos87 »

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.

wojtas7
Posty: 780
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 55 times
Been thanked: 154 times

Re: ALV- brak zapisu zmian

Post autor: wojtas7 »

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.