1. 程式人生 > 其它 >生產訂單工藝路線修改BAPI

生產訂單工藝路線修改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