BADI: ME_PROCESS_PO_CUST
check中获取的item是前台的全量(保存,检查都会进入;
process_item获取的是单条,循环进入(只有行项目发生变更才会进到这里
方法:CHECK
绑定消息到弹出框
ch_failed = abap_true."则会阻断po生成,弹出校验消息!!!
**"获取抬头&&行项目数据**DATA(ls_hddata)= im_header->get_data().DATA(rt_items)= im_header->get_items(). LOOP AT rt_items INTODATA(rs_items).DATA(ls_item)= rs_items-item->get_data(). ENDLOOP. "消息绑定到弹框 INCLUDE mm_messages_mac. "useful macros for message handling MESSAGEe000(zgl01)WITH lv_werks'工厂不存在库存地点'gs_lgort-lgort INTODATA(lv_dummy). mmpur_message_forced sy-msgty sy-msgid sy-msgno sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. lv_yn ='E'. IF lv_yn ='E'. ch_failed = abap_true."**则会阻断po生成,弹出校验消息!!!** ENDIF.方法:PROCESS_ITEM
"获取抬头&&行项目数据
"获取抬头DATA(lo_header)= im_item->get_header().DATA(ls_hddata)= lo_header->get_data(). "获取当前明细行DATA(ls_item)= im_item->get_data(). **"自定义校验消息绑定行项目** INCLUDE mm_messages_mac. "useful macros for message handling mmpur_business_obj_id ls_item-id. "确定错误消息显示到哪个行项目上 MESSAGEe039(zmm01)WITH ls_item-matnr INTODATA(lv_dummy). mmpur_message_forced sy-msgty sy-msgid sy-msgno sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.拓展:会出现强制保存的情况–针对前台
虽然增强自定义了一些类型E报错,但是保存依然可以保存
1.在check,process_item方法中增加标识,并传出
DATA:lv_yn(1)."在中判断是否可以保存 CLEAR lv_yn. IF lv_yn ='E'. EXPORT lv_yn = lv_yn TO MEMORY ID'LMEGUICJI_YN'. ENDIF.2.接收判断: