这个功能没有对应的BAPI,可以用对应的函数或者BDC录屏.
用函数 ‘CM_FV_PROD_VERS_DB_UPDATE’创建前
需要用函数'CM_FV_MKAL_CONSISTENCY_CHECK'检查生产版本的一致性
DATA :it_mkal_i TYPE STANDARD TABLE OF mkal,
ls_mkal TYPE mkal,
it_mkal_u TYPE STANDARD TABLE OF mkal,
it_mkal_d TYPE STANDARD TABLE OF mkal,
it_mkal_aend TYPE STANDARD TABLE OF mkal_aend.
DATA: mkal_imp TYPE mkal,
flg_from_db TYPE c,
object_imp TYPE c,
cons_error TYPE c,
cons_warning TYPE c,
result_tab TYPE STANDARD TABLE OF mkal_result_tab.
CLEAR:it_mkal_i.
LOOP AT gt_excle INTO gs_excle WHERE checkbox = 'X'.
CLEAR :ls_mkal.
ls_mkal-matnr = gs_excle-matnr.
ls_mkal-werks = gs_excle-werks.
ls_mkal-verid = gs_excle-verid ."生产版本
ls_mkal-text1 = gs_excle-text1.
ls_mkal-adatu = gs_excle-adatu .
ls_mkal-bdatu = gs_excle-bdatu .
* ls_mkal- = gs_excle-BISMT."图号
ls_mkal-stlal = gs_excle-stlal."备选物料清单
ls_mkal-plnnr = gs_excle-plnnr."组
ls_mkal-alnal = gs_excle-plnal. "计数器
ls_mkal-alort = gs_excle-lgort. "收货库存地点
ls_mkal-prfg_f = '1'. "任务清单 1:绿灯
ls_mkal-prfg_s = '1'. "物料清单 1:绿灯
ls_mkal-prdat = sy-datum.
gs_excle-msg = '生产版本导入成功'.
"默认字段
ls_mkal-stlan = '1'."BOM 用途
ls_mkal-plnty = 'N'."任务清单类型
ls_mkal-serkz = ''."版本允许的重复制造
ls_mkal-mdv01 = ''."用于重复制造的生产线
ls_mkal-elpro = ''."对组件提出发货仓储地点
ls_mkal-alort = ''."重复生产的收货库存地点
ls_mkal-PRFG_F = '1'."重复生产的收货库存地点
ls_mkal-PRFG_S = '1'."重复生产的收货库存地点
*ls_mkal-PRFG_R = '1'."重复生产的收货库存地点
*ls_mkal-PRFG_G = '1'."重复生产的收货库存地点
"一致性检查
CLEAR:result_tab.
CALL FUNCTION 'CM_FV_MKAL_CONSISTENCY_CHECK'
EXPORTING
mkal_imp = ls_mkal
* FLG_FROM_DB = ' '
* OBJECT_IMP = ' '
* IMPORTING
* CONS_ERROR = CONS_ERROR
* CONS_WARNING = CONS_WARNING
TABLES
result_tab = result_tab
EXCEPTIONS
mkal_err = 1
plko_err = 2
stko_err = 3
other_err = 4.
LOOP AT result_tab INTO DATA(lw_check_result).
IF lw_check_result-object_status NE space AND lw_check_result-object = 'S'.
ls_mkal-prfg_s = '3'.
gs_excle-msg = '生产版本检查出错'.
ENDIF.
IF lw_check_result-object_status NE space AND lw_check_result-object = 'F'.
ls_mkal-prfg_f = '3'.
gs_excle-msg = '生产版本检查出错'.
ENDIF.
ENDLOOP.
MODIFY gt_excle FROM gs_excle TRANSPORTING msg.
APPEND ls_mkal TO it_mkal_i.
CLEAR gs_excle.
ENDLOOP.
CALL FUNCTION 'CM_FV_PROD_VERS_DB_UPDATE'
TABLES
it_mkal_i = it_mkal_i
it_mkal_u = it_mkal_u
it_mkal_d = it_mkal_d
it_mkal_aend = it_mkal_aend.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgty INTO DATA(lv_msg) WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.