abap - 通过 ME_PROCESS_PO_CUST BAdi 更新 ME21n 字段 WEORA/BSTAE?
问题描述
我正在尝试在保存时在 tcode 中修改 ,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 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 标记为要更新值的字段。
问候, 奥马尔·阿卜杜拉
推荐阅读
- javascript - Vuex 状态和 vue-router
- java - 在cplex(Java)中向目标函数添加二次惩罚项
- c# - 为什么用 npoi 编辑后 docx 文件损坏
- android - 尝试从 Firestore 加载时应用关闭
- java - 有什么方法可以从 Spring 中的 AbstractHttpMessageConverter 方法 support() 中获取集合的泛型类型?
- java - Java 流减少
- react-native - SyntaxError:意外的标识符 jest & babel 7 & react-native 0.56
- mysql - 远程访问 MySql 5.7 不起作用
- c++ - 如何从 main.cpp 中的 cpp 文件获取函数结果?
- android - 像 Instagram 一样在 RecyclerView 中自动播放视频