BAPI_INSPECTIONPLAN_CREATE
该函数主要用于检验的创建,对应于事物代码为QP01。
使用背景:在项目中是根据用户需求在导入物料主数据时判断需要导入质量视图且检验类型为‘01‘并且物料合并已激活为‘X‘,在MAPL中该物料对于工厂下不含有Q任务类型数据时同时导入检验计划。
使用说明:的L_FLAG时判断检验计划是否导入成功然后为前台传输消息。
SELECT SINGLE
MATNR
WERKS
PLNTY
FROM MAPL
INTO LS_MAPL
WHERE MATNR = GS_ZMATERIELI-MATNR
AND WERKS = GS_ZMATERIELI-WERKS
AND PLNTY = 'Q'
AND LOEKZ = SPACE.
IF GS_ZMATERIELH-QUALITY_VIEW = 'X' AND GS_ZMATERIELI-ART = '01' AND GS_ZMATERIELI-AKTIV = 'X' AND LS_MAPL IS INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'"单位转换
EXPORTING
INPUT = GS_ZMATERIELI-MEINS
* LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = GS_ZMATERIELI-MEINS
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
" CREATE_BAPI 中的物料任务清单用于检验计划
* CLEAR IT_MATERIALTASKALLOCATION[].
IT_MATERIALTASKALLOCATION-MATERIAL = GS_ZMATERIELI-MATNR. " 物料编码
IT_MATERIALTASKALLOCATION-PLANT = GS_ZMATERIELI-WERKS. " 工厂
IT_MATERIALTASKALLOCATION-VALID_FROM = SY-DATUM. " 有效起始日期
APPEND IT_MATERIALTASKALLOCATION.
" CREATE-BAPI 中的任务清单抬头数据用于检验计划
* CLEAR IT_TASK[].
IT_TASK-VALID_FROM = '20180101'. " 有效起始日期
* IT_TASK-DESCRIPTION = F_MAKTG. " 物料描述
IT_TASK-TASK_LIST_USAGE = '5'. " 用途
IT_TASK-TASK_LIST_STATUS = '4'. " 状态
IT_TASK-LOT_SIZE_FROM = '0'. " 从批量
IT_TASK-LOT_SIZE_TO = '9999999999'. " 到批量
IT_TASK-PLANNING_WORK_CENTER = ''. " 计划员组
IT_TASK-PLANT = GS_ZMATERIELI-WERKS. " 工厂
IT_TASK-TASK_MEASURE_UNIT = GS_ZMATERIELI-MEINS. " 单位
IT_TASK-DYN_MODIF_LEVEL = '0'.
APPEND IT_TASK.
" CREATE-BAPI 中的工序用于检验批
* CLEAR IT_OPERATION[].
IT_OPERATION-VALID_FROM = '20180101'. " 有效起始日期
IT_OPERATION-ACTIVITY = '1'. " 操作/活动编号
IT_OPERATION-PLANT = GS_ZMATERIELI-WERKS. " 工厂
IT_OPERATION-CONTROL_KEY = 'QM01'. " 控制码
IT_OPERATION-WORK_CNTR = ''. " 工作中心
IT_OPERATION-STANDARD_TEXT_KEY = ''. " 标准文本码
IT_OPERATION-DESCRIPTION = '质量检验'. " 工序短文本
IT_OPERATION-OPERATION_MEASURE_UNIT = GS_ZMATERIELI-MEINS . " 作业/工序的计量单位
IT_OPERATION-DENOMINATOR = '1'. " 用于转换工艺路线和工序单位的分母
IT_OPERATION-NOMINATOR = '1'. " 用于转换任务清单和工序计量单位的计数器
IT_OPERATION-BASE_QUANTITY = '1.000'. " 基本数量
APPEND IT_OPERATION.
" 检验计划 CREATE-BAPI 中的检验特性
* CLEAR IT_INSPCHARACTERISTIC[].
IT_INSPCHARACTERISTIC-ACTIVITY = '1'. " 操作/活动编号
IT_INSPCHARACTERISTIC-INSPCHAR = '0010'. " 检验特性编号
IT_INSPCHARACTERISTIC-VALID_FROM = '20180101'. " 有效起始日期
IT_INSPCHARACTERISTIC-MSTR_CHAR = 'M0000001'. " 主文件检验特性
IT_INSPCHARACTERISTIC-PMSTR_CHAR = GS_ZMATERIELI-WERKS. " 工厂
IT_INSPCHARACTERISTIC-SMPL_PROCEDURE = 'G01'. " 检验特性中的采样程序
IT_INSPCHARACTERISTIC-SMPL_UNIT = GS_ZMATERIELI-MEINS. " 采样计量单位
IT_INSPCHARACTERISTIC-SMPL_QUANT = '1.00'. " 采样的采样数量因子(多重采样计量单位)
IT_INSPCHARACTERISTIC-CHA_MASTER_IMPORT_MODUS = 'C'. " 参考主文件检验特性的方式
APPEND IT_INSPCHARACTERISTIC.
DATA: L_FLAG TYPE CHAR1 .
CLEAR L_FLAG .
IF IT_MATERIALTASKALLOCATION IS NOT INITIAL.
CALL FUNCTION 'BAPI_INSPECTIONPLAN_CREATE' "创建检验计划
* EXPORTING
* TESTRUN = ' '
* PROFILE =
IMPORTING
GROUP = G_GROUP
GROUPCOUNTER = G_GROUPCOUNTER
TABLES
TASK = IT_TASK
MATERIALTASKALLOCATION = IT_MATERIALTASKALLOCATION
OPERATION = IT_OPERATION
* REFERENCEOPERATION =
* PRODUCTIONRESOURCE =
INSPCHARACTERISTIC = IT_INSPCHARACTERISTIC
* TEXTALLOCATION =
* TEXT =
RETURN = IT_RETURN
* INSP_CHAR_VALUES =
.
" 判断程序是否成功
READ TABLE IT_RETURN INDEX 1.
DESCRIBE TABLE IT_RETURN.
IF IT_RETURN-TYPE EQ 'S' AND SY-TFILL EQ 1.
LS_RESULT-ZLOGTYPE = '02'.
LS_RESULT-TYPE = 'S'.
LS_RESULT-MESSAGE = '02:检验计划创建成功'.
APPEND LS_RESULT TO OT_RESULT.
CLEAR LS_RESULT.
" 如果程序没有发生错误则进行提交
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'."
" 创建成功后更新输出内表的值
L_FLAG = 'S'." ADD BY HANDLXY 20180507
ELSE.
L_FLAG = 'E'. " ADD BY HANDLXY 20180507
DATA: TEXT TYPE STRING.
LOOP AT IT_RETURN WHERE TYPE = 'E'.
CONCATENATE TEXT IT_RETURN-MESSAGE INTO TEXT.
ENDLOOP.
* WA_LOG-ZTEXT = '创建失败!' + TEXT.
* APPEND WA_LOG TO IT_LOG.
LS_RESULT-ZLOGTYPE = '03'.
LS_RESULT-TYPE = 'E'.
CONCATENATE '03:' TEXT INTO LS_RESULT-MESSAGE.
APPEND LS_RESULT TO OT_RESULT.
CLEAR LS_RESULT.
ROLLBACK WORK.
ENDIF.
CLEAR: IT_TASK, IT_MATERIALTASKALLOCATION, IT_OPERATION, IT_INSPCHARACTERISTIC, IT_RETURN.
CLEAR: IT_TASK[], IT_MATERIALTASKALLOCATION[], IT_OPERATION[], IT_INSPCHARACTERISTIC[], IT_RETURN[].
CLEAR: G_GROUP,G_GROUPCOUNTER.
ENDIF.
ENDIF.