Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: knopix от Февраль 12, 2013, 09:03:22 am
-
Здравствуйте!
В соответствии с http://help.sap.com/saphelp_nw04s/helpdata/en/91/ca9f0ba9d111d1a5690000e82deaaa/frameset.htm (http://help.sap.com/saphelp_nw04s/helpdata/en/91/ca9f0ba9d111d1a5690000e82deaaa/frameset.htm) написал вот такой код:
FORM modification.
DATA: tmp TYPE i,
wa TYPE zvsz0002,
t_index TYPE sytabix,
e_index TYPE sytabix.
LOOP AT total.
IF <action> EQ neuer_eintrag OR
<action> EQ aendern.
t_index = sy-tabix.
MOVE-CORRESPONDING total TO wa.
IF wa-szkls IS INITIAL.
READ TABLE extract WITH KEY <vim_xtotal_key>.
IF sy-subrc IS INITIAL.
e_index = sy-tabix.
ELSE.
CLEAR e_index.
ENDIF.
CASE wa-szkod.
" тут осуществляется модификация данных
ENDCASE.
CHECK t_index GT 0.
CHECK e_index GT 0.
total = wa.
MODIFY total INDEX t_index.
extract = wa.
MODIFY extract INDEX e_index.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR sy-subrc.
ENDFORM. " MODIFICATION
Соответственно, вношу изменения в таблицы "extract" и "total".
После нажатия на кнопку "Сохранить" выводится сообщение об успешном сохранении данных, но по факту изменения в таблицу не вносятся и при перезапуске транзакции ракурса ведения новые строчки не отображаются, а модифицированные выводятся со старыми значениями. При тестировании выяснил, что если внести изменения в ещё какое-нибудь поле, то запись сохраняется. Видимо взводится какой-то флаг на сохранение данных. (например, попробовал использовать "UPDATE_FLAG" но безрезультатно)
Подскажите, пожалуйста, что я делаю не так и почему не сохраняются данные?..
-
Разобрался с вопросом. Думал, думал, а оказывается случайно потёр поле "ACTION" в "total" и "extract" операторами
total = wa.
MODIFY total INDEX t_index.
extract = wa.
MODIFY extract INDEX e_index.
Структуры-то у них не совпадают. Исправил на "MOVE-CORRESPONDING" и всё заработало. Тема закрыта.