DATA:gs_bapi_pp_order_create TYPE bapi_pp_order_create.
DATA:gt_bapi_order_key TYPE TABLE OF bapi_order_key,
gs_bapi_order_key TYPE bapi_order_key,
gt_order_return TYPE TABLE OF bapi_order_return WITH HEADER LINE.
DATA:gs_return TYPE bapiret2,
gv_order_number TYPE bapi_order_key-order_number.
DATA:gt_tline TYPE TABLE OF tline,
gw_tline TYPE tline.
CLEAR:gs_return.
DATA:gs_keko TYPE keko.
DATA:gv_message TYPE string.
DATA:lv_int TYPE i.
DATA:g_fname TYPE thead-tdname.
CLEAR:lv_int.
"检查物料下达标准成本估算
SELECT SINGLE * INTO CORRESPONDING FIELDS OF gs_keko
FROM keko WHERE matnr = '000001131818181101'"物料号
AND werks = '2101'"工厂
AND bwkey = '2101'"工厂
AND kadat LE sy-datum
AND bidat GE sy-datum
AND freig = 'X'.
IF sy-subrc <> 0.
MESSAGE '物料 1131818181101 未下达标准成本估算!' TYPE 'E' .
EXIT.
ENDIF.
CLEAR:gs_return,gt_order_return[],gt_bapi_order_key[],gs_bapi_order_key.
gs_bapi_pp_order_create-material ='000001131818181101'."物料号
gs_bapi_pp_order_create-plant = '2101'."订单工厂
gs_bapi_pp_order_create-planning_plant = '2101'."计划工厂
gs_bapi_pp_order_create-basic_start_date = sy-datum."基础开始日期
gs_bapi_pp_order_create-basic_end_date = sy-datum."基准解释日期
gs_bapi_pp_order_create-quantity = '10'."订单数量
"单位外内部转换bapi
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' "单位
EXPORTING
input = 'TO'
IMPORTING
output = gs_bapi_pp_order_create-quantity_uom
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE '单位转换有误!' TYPE 'E' .
EXIT.
ENDIF.
gs_bapi_pp_order_create-order_type = 'PP01'."订单类型
gs_bapi_pp_order_create-prod_version = 'X101'."生产版本
gs_bapi_pp_order_create-storage_location = '2103'."库存地点
gs_bapi_pp_order_create-gr_proc_time = ''."以天计的收货处理时间
"调用订单创建函数生产订单bapi
CALL FUNCTION 'BAPI_PRODORD_CREATE'
EXPORTING
orderdata = gs_bapi_pp_order_create
IMPORTING
return = gs_return
order_number = gv_order_number.
IF gs_return-type = 'E' OR gs_return = 'A'.
MESSAGE gs_return-message TYPE 'E' .
EXIT.
ELSE.
CONCATENATE sy-mandt gv_order_number INTO g_fname.
gw_tline-tdformat = 1.
gw_tline-tdline = '生产订单长文本内容测试'.
APPEND gw_tline TO gt_tline.
CALL FUNCTION 'CREATE_TEXT'
EXPORTING
fid = 'KOPF'
flanguage = sy-langu
fname = g_fname
fobject = 'AUFK'
TABLES
flines = gt_tline
EXCEPTIONS
no_init = 1
no_save = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE '生产订单长文本保存失败!' TYPE 'E' .
EXIT.
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
WAIT UP TO 1 SECONDS.
" ltext设置为1 长文本才显示
UPDATE aufk
SET ltext = '1'
WHERE aufnr = gv_order_number.
COMMIT WORK.
gs_bapi_order_key-order_number = gv_order_number.
APPEND gs_bapi_order_key TO gt_bapi_order_key.
"订单下达bapi
CALL FUNCTION 'BAPI_PRODORD_RELEASE'
TABLES
orders = gt_bapi_order_key
detail_return = gt_order_return.
READ TABLE gt_order_return WITH KEY type = 'E'.
IF sy-subrc <> 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ELSE.
MESSAGE '生产订单下达失败!' TYPE 'E' .
ENDIF.
ENDIF.
SAP中通过BAPI创建生产订单CO01,生产订单长文本,订单下达
最新推荐文章于 2025-04-09 16:43:57 发布