通过ME_PROCESS_PO_CUST更新ME21n tcode中的字段无效

问题描述 投票:1回答:1

我正在保存时尝试在WEORA tcode中修改BSTAEME21n的值。我已经在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中的字段BSTAEME21N

sap abap purchase-order badi
1个回答
0
投票

您必须先调用方法SET_DATAX,然后再调用SET_DATA。SET_DATAX,您将X标记为要更新值的字段。

关于,乌玛尔·阿卜杜拉

© www.soinside.com 2019 - 2024. All rights reserved.