SE19创建BADI实施
METHOD :AT_RELEASE
method IF_EX_WORKORDER_UPDATE~AT_RELEASE.
DATA:LV_REL_FLG TYPE CHAR01 .
IF I_AKTYP EQ 'V' OR I_AKTYP EQ 'H' or sy-tcode = 'COHVOMRELEASE'.
LV_REL_FLG = 'X'.
EXPORT P1 = LV_REL_FLG TO MEMORY ID 'ZREL' .
ENDIF.
endmethod.
METHOD AT_SAVE
*未滚算标准成本不允许下达工单。
IMPORT P1 = LV_REL_FLG FROM MEMORY ID 'ZREL' .
IF SY-SUBRC = 0 .
IF LV_REL_FLG EQ 'X' . "工单下达操作。
IF IS_HEADER_DIALOG-KDAUF_AUFK IS NOT INITIAL AND IS_HEADER_DIALOG-KDPOS_AUFK IS NOT INITIAL .
*若带销售订单,系统检查该生产订单对应的物料编码在表:EBEW 基于销售订单+销售订单行项目+物料编码的条件搜索,
*若能找到符合条件的记录,且字段:EBEW-VMSTP>0,则系统继续进行。
*若找不符合条件的记录,则系统报错,报错消息:生产订单未做销售订单标准成本价发布,请联系财务发布。
SELECT
*
INTO CORRESPONDING FIELDS OF TABLE LT_EBEW
FROM EBEW
WHERE
MATNR EQ IS_HEADER_DIALOG-MATNR
AND VBELN EQ IS_HEADER_DIALOG-KDAUF_AUFK
AND POSNR EQ IS_HEADER_DIALOG-KDPOS_AUFK
and BWKEY eq is_header_dialog-WERKS
AND EBEW~VMSTP > 0.
DESCRIBE TABLE LT_EBEW LINES LV_COUNT .
IF LV_COUNT GE 1 .
ELSE .
MESSAGE '生产订单未做销售订单标准成本价发布,请联系财务发布' TYPE 'E' RAISING ERROR_WITH_MESSAGE.
ENDIF .
ELSE .
*若不带销售订单,系统检查该生产订单对应的物料编码在表:MBEW 基于物料编码的条件搜索,
*若能找到符合条件的记录且字段:MBEW-STPRS>0,则系统继续进行。
SELECT
*
INTO CORRESPONDING FIELDS OF TABLE LT_MBEW
FROM MBEW
WHERE
MATNR EQ IS_HEADER_DIALOG-MATNR
AND BWKEY EQ IS_HEADER_DIALOG-WERKS
AND MBEW~STPRS > 0 .
DESCRIBE TABLE LT_MBEW LINES LV_COUNT .
IF LV_COUNT GE 1 .
ELSE .
MESSAGE '生产订单未做标准成本价发布,请联系财务发布' TYPE 'E' RAISING ERROR_WITH_MESSAGE.
ENDIF .
*若找不符合条件的记录,则系统报错,报错消息:生产订单未做标准成本价发布,请联系财务发布。
ENDIF .
ENDIF .
ENDIF.