使用事务代码QA11或QA32做使用决策时,点击保存触发增强(根据界面上的检验批号LINK表字段 QALS-PRUEFLOS取出QALS-MATNR、QALS-LIFNR和QALS-WERK LINK自建表1中的供应商、物料 和工厂取对应自建表1中“是否管控”字段值是否为N,如果为N则不进入增强,否则进入增强,并进行 以下判断: |
1、根据QALS-LIFNR和QALS-MATNR、QALS-WERKS LINK自建表1中的供应商+物料+工厂取出报告到 期日(如果取到多条数据,则只取报告到期日最早的那条数据做下面的校验),然后用报告到期日减去检验批 创建日期(QALS-ENSTEHDAT): (天)”字段值,并且对应的自建表1中“是否提醒IQC”字段不为N,则弹出警告消息:该检验批物料 XXXX的子材料XXXX报告编码XXXX还有多少天到期,回车可跳过消息并允许保存; 字段值,并且对应的自建表1中“是否控制IQC”字段不为N,则弹出错误消息:该检验批物料XXXX的子 材料XXXX报告编码XXXX已超期XXXX天,不允许保存。
|
SE19 输入相应的增强BADI 创建相应的增强
填写短文本
上面显示的是保存前检查的方法 相关程序写在这里面
method IF_EX_INSPECTIONLOT_UPDATE~SET_UD_AT_SAVE.
DATA: i_data1 TYPE QALS,
i_data2 TYPE QALS,
i_data3 TYPE QAVE.
DATA: gt_ztmm035 TYPE TABLE OF ztmm035,
gs_ztmm035 type ztmm035.
DATA: lv_data(6) TYPE c.
IF sy-tcode = 'QA11' .
i_data1 = NEW_INSPLOT.
i_data2 = OLD_INSPLOT.
i_data3 = UD_DATA.
*
* LOOP AT items INTO line_item.
*
* CLEAR: po_line.
* po_line = line_item-item->get_data( ).
*
SELECT WERKS MATNR LIFNR SFGK JSRQ ZCLMC TXIQCZQ TXIQC BGBH
INTO CORRESPONDING FIELDS OF TABLE gt_ztmm035
FROM ztmm035
WHERE WERKS = i_data1-werk
and matnr = i_data1-matnr
and lifnr = i_data1-lifnr
and SFGK <> 'N'.
*
SORT gt_ztmm035 by WERKS matnr lifnr JSRQ.
*
* CLEAR lv_data.
READ TABLE gt_ztmm035 INTO gs_ztmm035 WITH KEY WERKS = i_data1-werk matnr = i_data1-matnr lifnr = i_data1-lifnr BINARY SEARCH.
if sy-subrc = 0.
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
I_DATE_FROM = i_data1-ENSTEHDAT
I_DATE_TO = gs_ztmm035-JSRQ
I_FLG_SEPARATE = ' ' "是否单独计算 若有标识,则返回两日期相差的天数
IMPORTING
E_DAYS = lv_data. "返回天数:638
*
if lv_data <= gs_ztmm035-TXIQCZQ AND gs_ztmm035-TXIQC <> 'N'.
MESSAGE '该批检验批物料' && gs_ztmm035-matnr && '的子材料' && gs_ztmm035-ZCLMC && '报告编码' && gs_ztmm035-BGBH
&& '还有' && lv_data && '天到期,回车可跳过消息并允许保存订单' TYPE 'I' DISPLAY LIKE 'W'.
ENDIF.
*
if lv_data > gs_ztmm035-TXIQCZQ AND gs_ztmm035-TXIQC <> 'N'.
MESSAGE '该批检验批物料' && gs_ztmm035-matnr && '的子材料' && '报告编码' && gs_ztmm035-BGBH && gs_ztmm035-ZCLMC && '已超期'
&& lv_data && '不允许保存' TYPE 'I' DISPLAY LIKE 'E'.
ENDIF.
*
ENDIF.
CLEAR gs_ztmm035.
*
*
*
*
* ENDLOOP.
ENDIF.
endmethod.