Изменение полей EKPO в ME21n - ME_PROCESS_PO_CUST BADI - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь изменить значения полей 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 при сохранении?

1 Ответ

0 голосов
/ 29 октября 2018

Вы должны вызвать метод SET_DATAX, а затем SET_DATA.SET_DATAX, вы пометите X в поле, которое хотите обновить значения.

С уважением, Умар Абдулла

...