DATA: ls_pohead TYPE bapimepoheader,
ls_poheadx TYPE bapimepoheaderx,
lt_return TYPE STANDARD TABLE OF bapiret2,
ls_return TYPE bapiret2,
lt_itempo TYPE STANDARD TABLE OF bapimepoitem,
ls_itempo TYPE bapimepoitem,
lt_itempox TYPE STANDARD TABLE OF bapimepoitemx,
ls_itempox TYPE bapimepoitemx,
lt_schedule TYPE STANDARD TABLE OF bapimeposchedule,
ls_schedule TYPE bapimeposchedule,
lt_schedulex TYPE STANDARD TABLE OF bapimeposchedulx,
ls_schedulex TYPE bapimeposchedulx,
lt_pocond TYPE STANDARD TABLE OF bapimepocond,
ls_pocond TYPE bapimepocond,
lt_pocondx TYPE STANDARD TABLE OF bapimepocondx,
ls_pocondx TYPE bapimepocondx.
DATA: lv_ebeln TYPE ebeln,
lv_row TYPE i,
lv_etenr TYPE etenr,
lv_msg(255).
CLEAR: ls_pohead,ls_poheadx,lt_return,ls_return,lt_itempo,ls_itempo,
lt_itempox,ls_itempox,lt_schedule,ls_schedule,lt_schedulex,ls_schedulex.
READ TABLE it_item INTO DATA(ls_item) INDEX 1.
ls_pohead-doc_type = 'ZSO'. "订单类型
ls_pohead-vendor = is_header-lifnr. "供应商
ls_pohead-vendor = |{ ls_pohead-vendor ALPHA = IN }|.
ls_pohead-doc_date = is_header-audat. "凭证日期
ls_pohead-currency = ls_item-konwa. "货币
ls_pohead-collect_no = is_header-bstkd. "so单号
IF is_header-lifnr = '2090'.
ls_pohead-purch_org = '2130'. "采购组织
ls_pohead-pur_group = '907'. "采购组
ls_pohead-comp_code = '2130'. "公司代码
ELSEIF is_header-lifnr = '2130'.
ls_pohead-purch_org = '2020'. "采购组织
ls_pohead-pur_group = '901'. "采购组
ls_pohead-comp_code = '2020'. "公司代码
ENDIF.
ls_poheadx-doc_type = 'X'. "订单类型
ls_poheadx-vendor = 'X'. "供应商
ls_poheadx-doc_date = 'X'. "凭证日期
ls_poheadx-currency = 'X'. "货币
ls_poheadx-collect_no = 'X'. "so单号
ls_poheadx-purch_org = 'X'. "采购组织
ls_poheadx-pur_group = 'X'. "采购组
ls_poheadx-comp_code = 'X'. "公司代码
IF it_item IS NOT INITIAL.
SELECT matnr,meins FROM mara
INTO TABLE @DATA(lt_mara)
FOR ALL ENTRIES IN @it_item
WHERE matnr = @it_item-matnr.
ENDIF.
CLEAR: lv_row,lv_etenr.
LOOP AT it_item INTO ls_item.
lv_row = lv_row + 10.
ls_itempo-po_item = lv_row. "行项目
ls_itempo-material = ls_item-matnr. "物料编码
ls_itempo-quantity = ls_item-menge. "数量
ls_itempo-po_price = '2'. "
ls_itempo-price_unit = ls_item-kpein. "
READ TABLE lt_mara INTO DATA(ls_mara) WITH KEY matnr = ls_item-matnr.
IF sy-subrc = 0.
ls_itempo-po_unit = ls_mara-meins. "单位
ENDIF.
IF is_header-lifnr = '2090'.
ls_itempo-plant = '2130'. "工厂
ls_itempo-net_price = ls_item-kbetr1. "
ELSEIF is_header-lifnr = '2130'.
ls_itempo-plant = '2020'. "工厂
ls_itempo-net_price = ls_item-kbetr. "
ENDIF.
* ls_itempo-stge_loc = ls_item-lgort. "库存地点
APPEND ls_itempo TO lt_itempo.
CLEAR ls_itempo.
ls_itempox-po_item = lv_row. "行项目
ls_itempox-material = 'X'. "物料编码
ls_itempox-quantity = 'X'. "数量
ls_itempox-po_price = 'X'. "
ls_itempox-net_price = 'X'. "
ls_itempox-price_unit = 'X'. "
ls_itempox-po_unit = 'X'. "单位
ls_itempox-plant = 'X'. "工厂
* ls_itempox-stge_loc = 'X'. "库存地点
APPEND ls_itempox TO lt_itempox.
CLEAR ls_itempox.
lv_etenr = 1.
ls_schedule-po_item = lv_row. "
ls_schedule-sched_line = lv_etenr. "
ls_schedule-delivery_date = is_header-audat. "
ls_schedule-quantity = ls_item-menge. "
APPEND ls_schedule TO lt_schedule.
CLEAR ls_schedule.
ls_schedulex-po_item = lv_row. "
ls_schedulex-sched_line = 'X'. "
ls_schedulex-delivery_date = 'X'. "
ls_schedulex-quantity = 'X'. "
APPEND ls_schedulex TO lt_schedulex.
CLEAR ls_schedulex.
ls_pocond-itm_number = lv_row.
ls_pocond-cond_type = 'PB00'.
IF is_header-lifnr = '2090'.
ls_pocond-cond_value = ls_item-kbetr1. "条件金额(价格)
ELSEIF is_header-lifnr = '2130'.
ls_pocond-cond_value = ls_item-kbetr. "条件金额(价格)
ENDIF.
ls_pocond-cond_p_unt = ls_item-kpein. "价格单位
* ls_pocond-cond_unit = ls_mara-meins. "条件单位
ls_pocond-currency = ls_item-konwa. "货币码
ls_pocond-change_id = 'I'. "更改类型
APPEND ls_pocond TO lt_pocond.
CLEAR ls_pocond.
ls_pocondx-itm_number = lv_row.
ls_pocondx-cond_type = 'X'.
ls_pocondx-cond_value = 'X'.
ls_pocondx-cond_p_unt = 'X'.
* ls_pocondx-cond_unit = 'X'.
ls_pocondx-currency = 'X'.
ls_pocondx-change_id = 'X'.
APPEND ls_pocondx TO lt_pocondx.
CLEAR ls_pocondx.
ENDLOOP.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = ls_pohead
poheaderx = ls_poheadx
IMPORTING
exppurchaseorder = lv_ebeln
TABLES
return = lt_return
poitem = lt_itempo
poitemx = lt_itempox
poschedule = lt_schedule
poschedulex = lt_schedulex.
* pocond = lt_pocond
* pocondx = lt_pocondx.
LOOP AT lt_return INTO ls_return WHERE type CA 'EAX'.
MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-number
INTO lv_msg
WITH ls_return-message_v1 ls_return-message_v2
ls_return-message_v3 ls_return-message_v4.
es_return-msg = es_return-msg && lv_msg && ';'.
ENDLOOP.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
es_return-type = 'E'.
IF is_header-lifnr = '2090'.
es_return-msg = '2090 <- 2130 PO ' && text-006 && es_return-msg.
ELSEIF is_header-lifnr = '2130'.
es_return-msg = '2130 -> 2020 PO ' && text-006 && es_return-msg.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
es_return-type = 'S'.
es_return-msg = text-002 && lv_ebeln && text-003.
es_return-ebeln = lv_ebeln.
CLEAR: lv_row.
ENDIF.
非特殊说明,本文版权归在海边看星星所有,转载请注明出处.
本文标题:BAPI_PO_CREATE1创建采购订单范例
本文网址:http://www.hysvr.com.com/article-118.html.
本文标签:PO