我正在尝试在保存时修改ME21n tcode中WEORA,BSTAE的值。我已经用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来更新ME21n中的EKPO字段。
我的代码有什么问题吗?
是否有其他出口可用于在保存时更新交易代码ME21N中的字段WEORA和BSTAE?
发布于 2018-10-29 15:25:39
您必须先调用方法SET_DATAX,然后调用SET_DATA。SET_DATAX,则将X标记为要更新值的字段。
向您致敬,奥马尔·阿卜杜拉
发布于 2020-11-13 23:39:37
您应该使用此BAdi中的PROCESS_ITEM方法,您的this question中的代码非常适合我,并更新了这些字段:
DATA: ls_mepoitem_set TYPE mepoitem.
FIELD-SYMBOLS: <fs_item> TYPE mepoitem.
DATA(ls_mepoitem) = im_item->get_data( ).
ls_mepoitem_set = ls_mepoitem.
ls_mepoitem_set-bstae = '0004'.
ls_mepoitem_set-weora = abap_true.
ASSIGN ls_mepoitem_set TO <fs_item>.
CALL METHOD im_item->set_data( EXPORTING im_data = <fs_item> ).https://stackoverflow.com/questions/52877382
复制相似问题