本帖最后由 布拉德与朔太郎 于 2013-3-1 12:06 编辑
在创建或者修改PO的时候,难免要对SAP标准字段默认设置数值或者检查,这都可以在ME_PROCESS_PO_CUST这个BADI 中找到。(TCODE : SE18/SE19)
下面这段程序用的是ROCESS_HEADER,为ME21N增强。
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 oldvalue type ekpv-vstel.
data: supplyplant(4) type c value 'aaaa',
shippingpoint(4) type c value 'bbbb'.
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
oldvalue = 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.
该贴已经同步到 布拉德与朔太郎的微博