需求:在根据采购订单做了入库凭证之后,如果用户反审批采购订单去修改单价,系统提示‘已收货,不允许修改单价’。
判断流程:是否有入库凭证
如果采购订单条件按采购信息记录定价,这个价格本来就不能修改,只能新增一条PBXX的条件,这里判断时
还要判断有没有PBXX或者只有PB00.
找增强的位置SMOD,然后搜索包ME包含的增强点,这个增强的位置就在
点击保存后就会执行。
CMOD创建一个项目,填入增强点用于管理。双击ZXM06U43创建就行,直接在这里写代码。
最后附上代码
*&---------------------------------------------------------------------* *& 包含 ZXM06U43 *&---------------------------------------------------------------------* data: sum_menge type ekbe-menge. if sy-tcode = 'ME22N' or sy-tcode = 'ME22'. loop at tekpo. "判断是否有入库记录 select menge,shkzg into table @data(lt_ekbe) from ekbe where ebeln = @tekpo-ebeln and ebelp = @tekpo-ebelp and bewtp = 'E'. loop at lt_ekbe assigning field-symbol(<ls_ekbe>). if <ls_ekbe>-shkzg = 'S'. sum_menge = sum_menge + <ls_ekbe>-menge. else. sum_menge = sum_menge - <ls_ekbe>-menge. endif. endloop. check sum_menge > 0."有入库记录 sum_menge = 0. select kposn, "项目 kschl, "条件类型 kbetr "价格 into table @data(lt_price) from prcd_elements where knumv = @i_ekko-knumv and kposn = @tekpo-ebelp. read table lt_price assigning field-symbol(<ls_price>) with key kposn = tekpo-ebelp "是否有新增条件 kschl = 'PBXX'. if sy-subrc = 0. read table tkomv assigning field-symbol(<ls_komv>) with key kschl = 'PBXX'. if sy-subrc = 0. if <ls_price>-kbetr <> <ls_komv>-kbetr. "修改了价格 message e899(mm) with tekpo-ebeln tekpo-ebelp '由于已经收货,不允许修改价格。'. endif. else. "删除了价格 message e899(mm) with tekpo-ebeln tekpo-ebelp '由于已经收货,不允许修改价格。'. endif. else."原po没有新增条件价格, read table tkomv with key kschl = 'PBXX' transporting no fields. if sy-subrc = 0. "新增了价格 message e899(mm) with tekpo-ebeln tekpo-ebelp '由于已经收货,不允许修改价格。'. endif. endif. endloop. endif.