Я пытаюсь изменить значения полей WEORA и BSTAE в ME21n при сохранении.Я написал свои коды в ME_PROCESS_PO_CUST BADI, в методе CHECK.Ниже приведен мой код.
DATA: lt_data TYPE PURCHASE_ORDER_ITEMS,
lo_header TYPE REF TO CL_PO_HEADER_HANDLE_MM,
lt_item TYPE REF TO IF_PURCHASE_ORDER_ITEM_MM,
ls_get_item TYPE MEPOITEM,
ls_set_item TYPE MEPOITEM,
lv_firewall TYPE abap_bool.
FIELD-SYMBOLS: <fs_data> TYPE PURCHASE_ORDER_ITEM.
lt_data = im_header->get_items( ).
READ TABLE lt_data ASSIGNING <fs_data> INDEX 1.
IF <fs_data> IS ASSIGNED.
lt_item = <fs_data>-item.
ENDIF.
ls_get_item = lt_item->get_data( ).
ls_get_item-bstae = '0004'.
ls_get_item-weora = abap_true.
CALL METHOD lt_item->set_data
EXPORTING
im_data = ls_get_item.
Я попытался отладить его, но внутри метода set_data есть условие:
CHECK l_parent-> my_ibs_firewall_on EQ mmpur_yes ИЛИ l_parent-> my_cust_firewall_on EQ mmpur_yes.
Значение бота является начальным, поэтому оно не проходит через весь код set_data.Но я также попытался заставить одного из них использовать abap_true (чтобы он прошел через остальную часть кода), но обновление полей также не работает.
Кажется, этот BADI не работает, но я сделалмое исследование и большинство из них использует этот BADI для обновления полей EKPO в ME21n.Есть ли проблемы с моим кодом?И есть ли другой выход, который я могу использовать для обновления полей WEORA и BSTAE в коде транзакции ME21N при сохранении?