我正在保存时尝试在WEORA
tcode中修改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 OR
l_parent->my_cust_firewall_on EQ mmpur_yes.
两者的值都是初始值,因此它会中断并且不会进入其余代码。强制将它们设置为true
可使所有代码执行,但是字段的更新始终无法进行。
似乎此BADI无效,但我进行了研究,大多数人都使用此BADI更新EKPO
中的ME21n
字段。
我的代码有问题吗?
保存后是否还有其他出口可用于更新交易代码WEORA
中的字段BSTAE
和ME21N
?
您必须先调用方法SET_DATAX,然后再调用SET_DATA。SET_DATAX,您将X标记为要更新值的字段。
关于,乌玛尔·阿卜杜拉