生產訂單工藝路線修改BAPI
阿新 • • 發佈:2021-11-09
一、生產訂單修改工藝路線
現有標準函式可以修改生產訂單的工藝路線: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_zmerhTYPE 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