1. 增强BADI
- BADI:WORKORDER_CONFIRM
2. 增强实现
- 全局变量
- IF_EX_WORKORDER_CONFIRM~AT_CANCEL_CHECK
METHOD if_ex_workorder_confirm~at_cancel_check.
IF is_confirmation-vornr IS INITIAL.
CLEAR gv_vornr. "CO15
ELSE.
gv_vornr = 'X'. "CO11N
ENDIF.
gv_aufnr = is_confirmation-aufnr.
ENDMETHOD.
- IF_EX_WORKORDER_CONFIRM~BEFORE_UPDATE
METHOD if_ex_workorder_confirm~before_update.
DATA: wa_afrub TYPE afrub.
DATA: wa_ztwms_t008 TYPE ztwms_t008,
lt_ztwms_t008 TYPE TABLE OF ztwms_t008.
DATA: lv_vornr TYPE afvc-vornr.
CASE sy-tcode.
WHEN 'CO11N'. "工序报工
READ TABLE it_confirmation INTO wa_afrub INDEX 1.
IF sy-subrc = '0'.
"取最大工序号码
SELECT MAX( b~vornr )
FROM afko AS a
LEFT JOIN afvc AS b
ON a~aufpl = b~aufpl
WHERE aufnr = @wa_afrub-aufnr
INTO @lv_vornr.
"是否有最后一道工序报工数据
READ TABLE it_confirmation INTO wa_afrub WITH KEY vornr = lv_vornr.
IF sy-subrc = '0'.
SELECT SINGLE
a~aufnr,a~matnr,b~maktx,
a~charg,a~kdauf,a~kdpos,a~meins,
'生产入库' AS zdjlx,
'合格' AS zstatus,
'X' AS zflag
FROM afpo AS a
LEFT JOIN makt AS b
ON a~matnr = b~matnr
AND b~spras = @sy-langu
WHERE a~aufnr = @wa_afrub-aufnr
AND a~dauat NOT IN ('ZP02','ZP04')
INTO CORRESPONDING FIELDS OF @wa_ztwms_t008.
IF wa_ztwms_t008 IS NOT INITIAL. "查询到符合条件的数据,保存到中间表
CALL FUNCTION 'ZFM_MOVE_CORRESPONDING'
EXPORTING
is_input = wa_afrub
iv_structure = 'AFRUB'
cv_structure = 'ZTWMS_T008'
CHANGING
cs_input = wa_ztwms_t008.
APPEND wa_ztwms_t008 TO lt_ztwms_t008.
ENDIF.
ENDIF.
ENDIF.
WHEN 'CO13'.
IF gv_vornr = abap_true. "判断是否工序报工
"取最大工序号码
SELECT MAX( b~vornr )
FROM afko AS a
LEFT JOIN afvc AS b
ON a~aufpl = b~aufpl
WHERE aufnr = @gv_aufnr
INTO @lv_vornr.
"读是否有最后一道工序报工数据(最后一道工序报工才同步)
READ TABLE it_confirmation INTO wa_afrub WITH KEY vornr = lv_vornr.
IF sy-subrc = '0'.
SELECT SINGLE
a~aufnr,a~matnr,b~maktx,
a~charg,a~kdauf,a~kdpos,a~meins,
'生产入库' AS zdjlx,
'合格' AS zstatus,
'X' AS zflag
FROM afpo AS a
LEFT JOIN makt AS b
ON a~matnr = b~matnr
AND b~spras = @sy-langu
WHERE a~aufnr = @wa_afrub-aufnr
AND a~dauat NOT IN ('ZP02','ZP04')
INTO CORRESPONDING FIELDS OF @wa_ztwms_t008.
IF wa_ztwms_t008 IS NOT INITIAL. "查询到符合条件的数据,保存到中间表
CALL FUNCTION 'ZFM_MOVE_CORRESPONDING'
EXPORTING
is_input = wa_afrub
iv_structure = 'AFRUB'
cv_structure = 'ZTWMS_T008'
CHANGING
cs_input = wa_ztwms_t008.
APPEND wa_ztwms_t008 TO lt_ztwms_t008.
ENDIF.
ENDIF.
ELSE. "非工序报工
READ TABLE it_confirmation INTO wa_afrub WITH KEY stokz = 'X'.
IF sy-subrc = '0'.
SELECT SINGLE
a~aufnr,a~matnr,b~maktx,
a~charg,a~kdauf,a~kdpos,a~meins,
'生产入库' AS zdjlx,
'合格' AS zstatus,
'X' AS zflag
FROM afpo AS a
LEFT JOIN makt AS b
ON a~matnr = b~matnr
AND b~spras = @sy-langu
WHERE a~aufnr = @wa_afrub-aufnr
AND a~dauat NOT IN ('ZP02','ZP04')
INTO CORRESPONDING FIELDS OF @wa_ztwms_t008.
IF wa_ztwms_t008 IS NOT INITIAL. "查询到符合条件的数据,保存到中间表
CALL FUNCTION 'ZFM_MOVE_CORRESPONDING'
EXPORTING
is_input = wa_afrub
iv_structure = 'AFRUB'
cv_structure = 'ZTWMS_T008'
CHANGING
cs_input = wa_ztwms_t008.
APPEND wa_ztwms_t008 TO lt_ztwms_t008.
ENDIF.
ENDIF.
ENDIF.
WHEN 'CO15'. "整体报工
READ TABLE it_confirmation INTO wa_afrub INDEX 1.
IF sy-subrc = '0'.
SELECT SINGLE
a~aufnr,a~matnr,b~maktx,
a~charg,a~kdauf,a~kdpos,a~meins,
'生产入库' AS zdjlx,
'合格' AS zstatus,
'X' AS zflag
FROM afpo AS a
LEFT JOIN makt AS b
ON a~matnr = b~matnr
AND b~spras = @sy-langu
WHERE a~aufnr = @wa_afrub-aufnr
AND a~dauat NOT IN ('ZP02','ZP04')
INTO CORRESPONDING FIELDS OF @wa_ztwms_t008.
IF wa_ztwms_t008 IS NOT INITIAL. "查询到符合条件的数据,保存到中间表
CALL FUNCTION 'ZFM_MOVE_CORRESPONDING'
EXPORTING
is_input = wa_afrub
iv_structure = 'AFRUB'
cv_structure = 'ZTWMS_T008'
CHANGING
cs_input = wa_ztwms_t008.
APPEND wa_ztwms_t008 TO lt_ztwms_t008.
ENDIF.
ENDIF.
WHEN OTHERS.
ENDCASE.
IF lt_ztwms_t008 IS NOT INITIAL.
MODIFY ztwms_t008 FROM TABLE lt_ztwms_t008.
ENDIF.
CLEAR: wa_ztwms_t008,lt_ztwms_t008,lv_vornr,wa_afrub.
ENDMETHOD.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX