最近有个需求需要使用这个BAPI写个批导程序,但是网上对这方面的内容少之又少,鼓捣了很久走了很多弯路才搞好,现分享给大家。
DATA: lt_return TYPE TABLE OF bapiret2,
lt_comp TYPE TABLE OF cps_task_list_maint_com,
ls_comp TYPE cps_task_list_maint_com,
lt_compx TYPE TABLE OF cps_task_list_maint_com_x,
ls_compx TYPE cps_task_list_maint_com_x.
CONSTANTS:gc_con TYPE c VALUE 'X'.
ls_comp-maintain_mode = 'C'. "操作模式:C:创建,M:修改,D:删除 PS:如未分配(PLMZ表没数据)则选择C模式
ls_comp-flag_bar_pointer = '0000000001'. "操作模式序号,如不分配则报错
ls_comp-activity = '0010'. "操作/活动编号
ls_comp-activity_old = '0010'. "旧操作/活动编号 PS:如果是M模式则需要获取原编号,否则报错
ls_comp-sequence_no = '000000'. "排序号
ls_comp-sequence_no_old = '000000'. "旧排序号
ls_comp-item_id = '00000003'. "项目ID
ls_comp-bom_type = 'M'. "BOM类型
ls_comp-bom_no = '00000359'. "物料清单
ls_comp-alternative_bom = '01'. "备选物料清单
ls_comp-bom_type_root = 'M'. "父件BOM类型
ls_comp-bom_no_root = '00000359'. "父件物料清单
ls_comp-alternative_bom_root = '01'. "父件备选物料清单
ls_comp-item_no = '0030'. "BOM项目号
ls_comp-material = 'M0305020478'. "父件BOM的物料号
ls_comp-plant = '2000'. "工厂
ls_comp-order_lvl = '01'. "层次,仅虚拟件使用;如果有多层,建议通过BAPI:CS_BOM_EXPL_MAT_V2获取
ls_comp-order_path = '01'. "路径,仅虚拟件使用;如果有多层,建议通过BAPI:CS_BOM_EXPL_MAT_V2获取
APPEND ls_comp TO lt_comp.
CLEAR ls_comp.
ls_comp-maintain_mode = 'C'. "操作模式:C:创建,M:修改,D:删除 PS:如未分配(PLMZ表没数据)则选择C模式
ls_comp-flag_bar_pointer = '0000000002'. "操作模式序号,如不分配则报错
ls_comp-activity = '0010'. "操作/活动编号
ls_comp-activity_old = '0010'. "旧操作/活动编号 PS:如果是M模式则需要获取原编号,否则报错
ls_comp-sequence_no = '000000'. "排序号
ls_comp-sequence_no_old = '000000'. "旧排序号
ls_comp-item_id = '00000001'. "项目ID
ls_comp-bom_type = 'M'. "BOM类型
ls_comp-bom_no = '00000357'. "物料清单
ls_comp-alternative_bom = '01'. "备选物料清单
ls_comp-bom_type_root = 'M'. "父件BOM类型
ls_comp-bom_no_root = '00000359'. "父件物料清单
ls_comp-alternative_bom_root = '01'. "父件备选物料清单
ls_comp-item_no = '0010'. "BOM项目号
ls_comp-material = 'M0299010001'. "父件BOM的物料号
ls_comp-plant = '2000'. "工厂
ls_comp-order_lvl = '01'. "层次,仅虚拟件使用;如果有多层,建议通过BAPI:CS_BOM_EXPL_MAT_V2获取
ls_comp-order_path = '01'. "路径,仅虚拟件使用;如果有多层,建议通过BAPI:CS_BOM_EXPL_MAT_V2获取
APPEND ls_comp TO lt_comp.
CLEAR ls_comp.
ls_compx-activity = gc_con.
ls_compx-plant = gc_con.
ls_compx-sequence_no = gc_con.
ls_compx-bom_type_root = gc_con.
ls_compx-bom_no_root = gc_con.
ls_compx-alternative_bom_root = gc_con.
ls_compx-order_lvl = gc_con.
ls_compx-order_path = gc_con.
ls_compx-plant = gc_con.
ls_comp-material = gc_con.
APPEND ls_compx TO lt_compx.
CLEAR ls_compx.
ls_compx-activity = gc_con.
ls_compx-plant = gc_con.
ls_compx-sequence_no = gc_con.
ls_compx-bom_type_root = gc_con.
ls_compx-bom_no_root = gc_con.
ls_compx-alternative_bom_root = gc_con.
ls_compx-order_lvl = gc_con.
ls_compx-order_path = gc_con.
ls_compx-plant = gc_con.
ls_comp-material = gc_con.
APPEND ls_compx TO lt_compx.
CLEAR ls_compx.
CALL FUNCTION 'CPCC_S_TASK_LIST_MAINTAIN'
EXPORTING
key_date = sy-datum
task_list_type = 'N' "任务清单类型 PLMZ-PLNTY
task_list_group = '50000290' "组 PLMZ-PLNNR
group_counter = '02' "组计数器 PLMZ-PLNAL
"task_maintain_mode = 'M' "表头task结构操作模式
application = 'PP01'
bom_usage = '1'
material = 'M0305020478' "工艺路线父项物料号
plant = '2000' "工厂
TABLES
component_allocations = lt_comp
component_allocations_x = lt_compx
return = lt_return.
PS:通过BAPI:CS_BOM_EXPL_MAT_V2获取层次及路径字段时,需要给传入参数AUFSW = ‘X’ 才会有值