生产订单工艺路线修改BAPI
一、生产订单修改工艺路线
现有标准函数可以修改生产订单的工艺路线:CO_SE_PRODORD_CHANGE,但是该函数添加工艺路线时,不能传入采购信息记录和采购组织等字段,因此对标准函数进行改造
二、复制和修改标准函数
复制标准函数为ZCO_SE_PRODORD_CHANGE
因为要添加的字段时在工艺路线上,因此修改工艺路线对应的结构
添加上自定义的字段和更新标识
修改程序中对应的创建和修改的结构
创建结构中添加缺少的字段
更新结构中添加缺少的字段和更新标识
创建和修改时,赋值传入的数据
复制更新和修改函数
ZCO_SE_PRODORD_OPR_CREATE中新建子例程,维护传入的字段。修改函数ZCO_SE_PRODORD_OPR_CHANGE中,调用同一个子例程
复制原有的包含文件,模仿现有的字段赋值子例程,编写新的子例程赋值新增的字段
*&---------------------------------------------------------------------* *& Form opr_set_external_wx *&---------------------------------------------------------------------* * 导入外协采购信息记录和采购组织等字段 *----------------------------------------------------------------------* FORM opr_set_external_wx USING p_infnr TYPE infnr p_infnr_x TYPE c p_ekorg TYPE ekorg p_ekorg_x TYPE c p_meinh TYPE vorme p_meinh_x TYPE c p_umren TYPE cp_umren p_umren_x TYPE c p_zmerh TYPE dzmerh p_zmerh_x TYPE c p_zeier TYPE dzeier p_zeier_x TYPE c p_create TYPE c. DATA: ls_t024 TYPE t024. DATA: lv_msgv1 TYPE symsgv, lv_msgv2 TYPE symsgv, lv_msgv3 TYPE symsgv, lv_msg_vornr(9) TYPE c. *--> Take over material group IF NOT p_create IS INITIAL. "create gs_afvgd-infnr = p_infnr. gs_afvgd-ekorg = p_ekorg. gs_afvgd-meinh = p_meinh. gs_afvgd-umren = p_umren. gs_afvgd-zmerh = p_zmerh. gs_afvgd-zeier = p_zeier. ELSE. "change IF NOT p_infnr_x IS INITIAL. gs_afvgd-infnr = p_infnr. ENDIF. IF NOT p_ekorg_x IS INITIAL. gs_afvgd-ekorg = p_ekorg. ENDIF. IF NOT p_meinh_x IS INITIAL. gs_afvgd-meinh = p_meinh. ENDIF. IF NOT p_umren_x IS INITIAL. gs_afvgd-umren = p_umren. ENDIF. IF NOT p_zmerh_x IS INITIAL. gs_afvgd-zmerh = p_zmerh. ENDIF. IF NOT p_zeier_x IS INITIAL. gs_afvgd-zeier = p_zeier. ENDIF. ENDIF. *--> Take over purchasing group IF NOT gs_afvgd-infnr IS INITIAL. SELECT SINGLE infnr, ekorg, esokz, werks FROM eine INTO @DATA(lt_eine) WHERE infnr = @gs_afvgd-infnr AND ekorg = @gs_afvgd-ekorg. IF sy-subrc NE 0. lv_msgv1 = gs_afvgd-ekorg. lv_msgv2 = gs_afvgd-infnr. PERFORM error_handling USING gs_caufvd-aufnr gc_error_msg gc_msgid_wx '010' lv_msgv1 lv_msgv2 space space CHANGING gs_return. EXIT. ENDIF. ENDIF. IF NOT gs_afvgd-ekorg IS INITIAL. SELECT SINGLE ekorg, ekotx FROM t024e INTO @DATA(lt_t024e) WHERE ekorg = @gs_afvgd-ekorg. IF sy-subrc NE 0. lv_msgv1 = gs_afvgd-ekorg. PERFORM error_handling USING gs_caufvd-aufnr gc_error_msg gc_msgid_wx '011' lv_msgv1 space space space CHANGING gs_return. EXIT. ENDIF. ENDIF. IF NOT gs_afvgd-meinh IS INITIAL. SELECT SINGLE * FROM t006 INTO @DATA(lt_t006) WHERE msehi = @gs_afvgd-meinh. IF sy-subrc NE 0. lv_msgv1 = gs_afvgd-meinh. PERFORM error_handling USING gs_caufvd-aufnr gc_error_msg gc_msgid_wx '012' lv_msgv1 space space space CHANGING gs_return. EXIT. ENDIF. ENDIF. ENDFORM. " opr_set_external_wx