SAP-S4制造商料号-HERS

项目场景:

在电子行业,工厂一般向代理商购买电子料,代理商需要制造商料号。另外,在工厂后续生产过程中,需要制造商料号,实现进一步的追溯。不同的行业,需求不一样,此处有待丰富。

本文主要介绍启用无库存管理的MPN后,涉及到的配置,以及物料主数据的维护,货源清单,PIR,Quota,采购SA的相关测试。当时在实施此方案时,发现无详细的相关资料,特别是涉及到采购SA的。欢迎大家一起交流。


解决方案:

一:配置

1. Activate the MPN  :  OMTO

SPRO -- logistics-general-- material master --basic setting--make global settings

2. Define MPN profile  : ompn

SPRO-- Materials Management->purchasing->material master->define manufacture parts profile

3. Maintain material type

SPRO -- logistics-general-- material master --basic setting--make global settings--material type--define attributes of material types

二:需准备的主数据

工厂内部物料:采购视图需维护 MPN参数文件:表示该物料启用了制造商料号功能。

HERS料号:物料类型是HERS,只有采购视图。需包含以下截图信息。用MM01创建,会用于创建PIR,以及采购SA.

供应商BP:  代理商,创建SA时,需要使用的供应商。

制造商BP: 在创建HERS料号时,需要填这个制造商BP。

-----------基本的主数据就维护完成。

三:不同的业务场景 
一对一的情况: 一个内部物料,对应一个MPN。对应一个供应商

数据维护:工厂内部料号   HERS 料号   供应商

信息记录: HERS料号+供应商

配额:  不需要维护

采购SA:   HERS料号+供应商 

货源 :   内部物料+供应商:  如果手动点生成,基于SA会自动带出实际的MPN.

一对一的情况: 一个内部物料,对应一个MPN。对应多个供应商
    1. 数据维护:内部料号    HERS     多个供应商
    2. 信息记录:HERS+供应商
    3. 配额:  不维护MPN字段,会报错:无对应PIR。所以必须维护MPN

    1. SA:   MPN+供应商   
    2. 货源 :   可以不维护。因为有配额存在。维护也不需要MPN.对结果没影响。

备注: 如果维护了配额,则会优先考虑配额。(无论货源有没有维护,或者只维护一部分,都没有影响,系统会优先考虑配额)

一对多的情况: 一个内部物料,对应多个MPN。对应一个供应商
一对多的情况: 一个内部物料,对应多个MPN。对应多个供应商
四:测试逻辑:

基于上面维护的主数据,以及创建独立需求,再跑MRP,看在介入HERS料号后,基于配额比例,如何跑出正确的SA中的交货计划行。

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Aho-Corasick算法是一种高效的字符串匹配算法,它可以在一次扫描文本的过程中同时查找多个模式串。该算法通过将模式串预处理为确定有限状态自动机,从而实现快速的匹配过程。与其他算法相比,Aho-Corasick算法的时间复杂度为O(n),与模式串的数量和长度无关。 以下是Aho-Corasick算法的一种Java实现示例: ```java import java.util.*; class AhoCorasick { static class Node { Map<Character, Node> children; Node fail; List<String> outputs; Node() { children = new HashMap<>(); fail = null; outputs = new ArrayList<>(); } } static void buildTrie(Node root, List<String> patterns) { for (String pattern : patterns) { Node curr = root; for (char c : pattern.toCharArray()) { curr.children.putIfAbsent(c, new Node()); curr = curr.children.get(c); } curr.outputs.add(pattern); } } static void buildFailure(Node root) { Queue<Node> queue = new LinkedList<>(); for (Node child : root.children.values()) { child.fail = root; queue.add(child); } while (!queue.isEmpty()) { Node curr = queue.poll(); for (Map.Entry<Character, Node> entry : curr.children.entrySet()) { char c = entry.getKey(); Node child = entry.getValue(); queue.add(child); Node failNode = curr.fail; while (failNode != null && !failNode.children.containsKey(c)) { failNode = failNode.fail; } child.fail = failNode != null ? failNode.children.get(c) : root; child.outputs.addAll(child.fail.outputs); } } } static List<String> search(Node root, String text) { List<String> matches = new ArrayList<>(); Node curr = root; for (char c : text.toCharArray()) { while (curr != null && !curr.children.containsKey(c)) { curr = curr.fail; } curr = curr != null ? curr.children.get(c) : root; for (String output : curr.outputs) { matches.add(output); } } return matches; } public static void main(String[] args) { List<String> patterns = Arrays.asList("he", "she", "his", "hers"); String text = "ushers"; Node root = new Node(); buildTrie(root, patterns); buildFailure(root); List<String> matches = search(root, text); System.out.println(matches); // 输出:[she, he, hers] } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值