1,问题描述
在BADI ME_PROCESS_PO_CUST的方法CHECK中增强,增加对采购订单行项目的校验,发现使用宏mpur_message_forced添加错误消息时,这些错误消息只能显示到采购订单的最后一行上,并不能按照行项目归集显示。
增强点:
错误截图,
点击检查按钮后,下图中,可以看到行00020上的错误显示到PO的最后一个行项目30上了,
关闭弹出的消息窗口后,红灯标识显示到30行上了。
2,问题解决
查看代码发现在宏 mpur_message_forced之前漏掉了一句话,
1 |
mmpur_business_obj_id ls_item-id. |
宏mmpur_business_obj_id就是用来确定错误消息显示到哪个行项目上的。
完整的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
DATA:lt_po_item TYPE purchase_order_items, ls_po_item LIKE LINE OF lt_po_item, ls_item TYPE mepoitem. lt_po_item = im_header->get_items( ). LOOP AT lt_po_item INTO ls_po_item. ls_item = ls_po_item-item->get_data( ). * .... IF ls_item-lifnr IS INITIAL. mmpur_business_obj_id ls_item-id. "确定错误消息显示到哪个行项目上 mmpur_message_forced 'E' 'ZMM001' '003' lv_message '' '' ''. "收集错误消息 CALL METHOD ls_po_item-item->invalidate( ). "将发生错误的行设置为无效行 ch_failed = 'X'. ENDIF. ENDLOOP. |
修改后测试效果:错误消息不在显示在最后一个行项目30上了,改到了20上。
以上。
发表评论