SAP CO CK11N委外采购信息记录增强

业务需求:

CK11N获取委外采购信息记录时,要求获取所属工厂下采购信息记录最新日期下的价格;
工厂优先级最高,然后是生效日期最新优先级别最高;

解决方案:

SE38: LMEQRF3S->prefetch_eine_lesen 函数中做隐式增强,位置在函数最末尾;

复制LORD[] 采购信息记录清单到ZLORD清单中,ZLORD新增字段结构DATAB生效日期。

循环ZLORD表行:
根据采购信息记录zlord-infnr,供应商lifnr读取EINA 获取对应的物料matnr;
1. 若当前WERKS不为空,且当前行WERKS不等于当前CK11N估算工厂COMIM-WERKS,则删除当前行;
2. 若当前WERKS不为空,且当前行WERKS等于当前CK11N估算工厂COMIM-WERKS,则按照物料+供应商+采购组织+工厂+信息类型, KAPPL=’M’ ,生效开始日期DATAB 大于等于 CK11N估算日期COMIM-NEDAT, 有效截止日期 DATBI 小于等于CK11N估算日期COMIM-NEDAT,读取A017表获取符合条件行,将对应的生效日期 赋值给当前行;
3. 若当前WERKS为空,则按照物料+供应商+采购组织+信息类型, KAPPL=’M’ ,生效开始日期DATAB 大于等于 CK11N估算日期COMIM-NEDAT, 有效截止日期 DATBI 小于等于CK11N估算日期COMIM-NEDAT,读取A018表获取符合条件行,将对应的生效日期 赋值给当前行;

若上述ZLORD表行不为空,则清空lord表单进行如下赋值:
ZLORD表行按照工厂从有到无排序,日期从高到低排序;将优先级最高的数据赋值给LORD采购信息记录表单;

额外知识点:

委外采购信息记录SAP抓取逻辑如下顺序:
步骤一:LMEQRU17->ME_SEARCH_SOURCE_OF_SUPPLY 自动查找供应商源中用到源增强
步骤二:LMEQRF3S->prefetch_eine_lesen 对应EINA委外采购信息记录 查询到的EINE表清单;
步骤三:LMEPRF17->bezugsquelle_selektieren 对应委外采购信息记录 进行价格对比,默认获取最低价格;

一般情况下:在步骤二环节中【LMEQRF3S->prefetch_eine_lesen 对应EINA委外采购信息记录 查询到的EINE表清单】; 在此函数中程序可抓取到当前CK11N填写估算日期,以及获取到符合条件下工厂采购信息记录(包含采购信息记录以及前端采购订单来源记录价格),做在此处隐式增强 加入自定义逻辑,排除财务反馈的不需要采购信息记录;对于符合条件的采购信息记录存放入【Lord】清单,等后续价格比对默认取最低值;

在步骤二中根据上述采购信息记录清单,在【LMEQRF3S-> infosatz_bearbeiten 】中检查是否符合条件,SAP详细抓取逻辑:
a. 读取当前工厂获取T024W工厂所属采购组织,从现有EINE采购组织信息记录中,筛选出符合条件的采购组织,排除其他范围外采购组织信息记录;代码位置:LMEQRF3R->INFOSATZ_BEARBEITEN 管控工厂对应的采购组织
b. 根据“MM_CURRENT_PRICE_INFORECORD”函数 获取当前采购信息记录下的价格清单,包括采购信息记录价格以及前端采购订单以及对应价格。
c. 系统读取上述获取到价格清单,若采购信息记录中A018或A017表对应KONP价格为0,则系统进一步读取采购订单行上的价格,以这个价格作为当前采购信息记录价格。代码位置:LMEQRF37->preis_uebernahme_info
备注:此处可后期做增强检验 成本估算时是否读取 已打删除标志的采购订单行;
具体函数点:
PERFORM beleg_kopf_lesen USING eine-ebeln.
PERFORM beleg_pos_lesen USING eine-ebeln eine-ebelp.
d. 系统进一步读取BAPI 检查是否有额外增强点管控。检查badi_chk_lord_in_srch BAPI函数中是否激活 ME_CHECK_SOURCES BAPI,对于不符合条件的采购信息记录行,则反馈renturn参数表示不采用记录。

备注 本次未对标准采购信息进行测试,仅针对F30委外外采购信息记录调试:

你可能感兴趣的:(SAP CO CK11N委外采购信息记录增强)