本文描述如何使用BADI enhancement来修改采购订单的shipping point值。
待实现的BADI class:ME_PROCESS_PO_CUST (Enhancements for Processing Enjoy Purchase Order: Customer)
1. 执行se19实现BAD方法:IIF_EX_ME_PROCESS_PO_CUST~PROCESS_HEADER
2. 在方法内输入如下代码:
method if_ex_me_process_po_cust~process_header .
data : header_data type mepoheader ,
po_data type mepoitem,
my_ekpv type ekpv,
items type purchase_order_items,
item_obj type purchase_order_item.
data oldvstel type ekpv-vstel.
header_data = im_header->get_data( ).
items = im_header->get_items( ) .
if header_data-bsart = 'UB'. "stock transport order
* first,save old value of shipping point b+.
if not items is initial .
loop at items into item_obj .
my_ekpv = item_obj-item->get_shipping_data( ) .
if oldvalue is initial . "statics var
ldvalue = my_ekpv-vstel .
endif.
endloop.
* second, if collect number is 'SAMPLE' , set value 8201 to shipping
* point
if header_data-submi = 'SAMPLE' and
header_data-reswk = supplyplant .
my_ekpv = item_obj-item->get_shipping_data( ) .
my_ekpv-vstel = shippingpoint.
item_obj-item->set_shipping_data( im_ekpv = my_ekpv ).
endif.
* third, if collect number is not 'SAMPLE' ,recover shipping point.
if header_data-submi <> 'SAMPLE' or
header_data-reswk <> supplyplant .
my_ekpv = item_obj-item->get_shipping_data( ) .
my_ekpv-vstel = oldvalue.
item_obj-item->set_shipping_data( im_ekpv = my_ekpv ).
endif.
endif.
endif.
* ENDIF.
endmethod.
待实现的BADI class:ME_PROCESS_PO_CUST (Enhancements for Processing Enjoy Purchase Order: Customer)
1. 执行se19实现BAD方法:IIF_EX_ME_PROCESS_PO_CUST~PROCESS_HEADER
2. 在方法内输入如下代码:
method if_ex_me_process_po_cust~process_header .
data : header_data type mepoheader ,
po_data type mepoitem,
my_ekpv type ekpv,
items type purchase_order_items,
item_obj type purchase_order_item.
data oldvstel type ekpv-vstel.
header_data = im_header->get_data( ).
items = im_header->get_items( ) .
if header_data-bsart = 'UB'. "stock transport order
* first,save old value of shipping point b+.
if not items is initial .
loop at items into item_obj .
my_ekpv = item_obj-item->get_shipping_data( ) .
if oldvalue is initial . "statics var
ldvalue = my_ekpv-vstel .
endif.
endloop.
* second, if collect number is 'SAMPLE' , set value 8201 to shipping
* point
if header_data-submi = 'SAMPLE' and
header_data-reswk = supplyplant .
my_ekpv = item_obj-item->get_shipping_data( ) .
my_ekpv-vstel = shippingpoint.
item_obj-item->set_shipping_data( im_ekpv = my_ekpv ).
endif.
* third, if collect number is not 'SAMPLE' ,recover shipping point.
if header_data-submi <> 'SAMPLE' or
header_data-reswk <> supplyplant .
my_ekpv = item_obj-item->get_shipping_data( ) .
my_ekpv-vstel = oldvalue.
item_obj-item->set_shipping_data( im_ekpv = my_ekpv ).
endif.
endif.
endif.
* ENDIF.
endmethod.