五、框架协议——计划协议

1、计划协议优势:

(1)一个计划协议可以取代一系列离散的采购订单和合同执行订单;

(2)使用计划协议可以缩短系统处理次数,减少纸面作业;

(3)因为计划协议已经确定了每一次送货的具体时间和数量,所以可以使我们的库存保持在一个较低的水平;

(4)计划协议能让供应商在这个计划协议周期内更有效的管理和分配他们的资源。

✱计划交货协议不能提前交货;

2、计划协议类型:

 2.1、LP-没有发布计划:      

  在计划协议的计划行生成之时,即被供应商认可,计划行不用发布,可立即把消息传递给供应商;

2.2、 LPA-有发布计划:        

只有计划协议的计划行做了发布之后,才能把交货计划以文件形式传递给供应商,否则不能收货,计划行的发布有两种形式:        

1)及时交货计划( JIT ),这是一种近期对某种物资,有比较精确数量需求的采购计划,一般以日为单位,可以给供应商展示短期内的物料需求;          

2)预测交货计划( FRC ),这是一种长期的采购计划,一般以月或者周为单位,可以给供应商展示中长期的物料需求。

2.2.1 计划协议后台配置      

 1)凭证类型设置

——路径:IMG:物料管理>采购>计划协议>定义凭证类型

*LPA除了勾选时间依赖条件,还要勾选批准凭证。    
  2)创建参数文件

——路径IMG:物料管理>采购>计划协议>维护无审批凭证的计划协议的审批参数文件 创建工厂参数文件

*没有合计:JIT,0-1原样输出计划;FRC 0不合计

*每日合计:JIT,2-7天按日合计数量输出计划;FRC,0-7按日合计数量

*每周合计:FRC,8-60按周合计

*每月合计:FRC,61-120 按月合计

3)控制统计数量 (事务代码OMXX)

 With ordered qty:已订购数量;

With delivered qty:已交付数量;    

 2.2.2 计划协议LP类型业务

  1)创建计划协议(事务代码ME31L)

——路径:菜单:后勤>物料管理>采购>框架协议>计划协议>创建>ME31L-已知供应商

协议类型选择:LP;填写有效截至日期;

输入物料详情;

点击“项目细节”或者双击物料,设置信息记录更新;

          2)维护交货计划(手动事务代码ME38)

——路径:菜单:后勤>物料管理>采购>框架协议>交货计划> ME38 - 维护

输入计划协议号;

设置收货时间,数量;维护计划交货日期 提示:收货(MIGO)时不能提前收货,只能收取当前或之前的物料。          

3)后续业务——采购收货(事务代码MIGO)

——路径:后勤>物料管理>采购>采购订单>后继功能> MIGO - 收货

通过计划协议编号进行收货操作;

  2.2.3 计划协议LPA类型业务

➽计划协议LPA包含JIT交货计划和预测交货计划

➽业务流程:计划协议->交货计划->下达需求      

 1)物料主数据维护(前提)

物料能进行计划协议LPA业务的前提是主数据采购视图JIT要进行设置;

 2)创建计划协议(事务代码ME31L)

点击“附加数值”;

设置“创建参考文件”和检查“JIT”标识;  

  3)维护交货计划(事务代码ME38)

  4)创建计划协议审批(事务代码ME84)

——路径:菜单:后勤>物料管理>采购>框架协议>计划协议> ME84-创建计划协议审批

 5)计划协议执行进度查询(事务代码ME39)

——路径:菜单:后勤>物料管理>采购>框架协议>计划协议>交货计划> ME84-创建计划协议审批 点击“批准凭证进入”;

点击“JIT计划”;

选择2个行项目数据,点击“比较批准”;

*FRC计划的查询流程同上;      

 6)计划协议传送供应商(事务代码ME9L)

——路径:菜单:后勤>物料管理>采购>框架协议>计划协议>消息> MEP9L-打印/传送

选择输出消息;

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很高兴能够回答你的问题。RIP(Routing Information Protocol)是一个内部网关协议,它用于在同一组织的网络中传递路由信息。RIP使用距离向量算法来确定最佳路径,并且具有自适应性,可以自动调整网络拓扑变化。 以下是RIP的C++代码实现: ``` #include <iostream> #include <vector> #include <string> #include <limits.h> #include <algorithm> #include <unordered_map> using namespace std; // 定义路由表项 struct RoutingTableEntry { string destination; // 目标网络IP地址 int hopCount; // 经过的跳数 string nextHop; // 下一跳路由器IP地址 }; // 实现路由器节点 class Router { public: Router(string routerId) { id = routerId; } // 添加相邻路由器 void addNeighbor(Router* neighbor, int cost) { neighbors[neighbor] = cost; } // 更新路由表 void updateRoutingTable() { routingTable.clear(); unordered_map<string, int> distanceVector; distanceVector[id] = 0; // 初始化距离向量 for (auto& neighbor : neighbors) { distanceVector[neighbor.first->id] = neighbor.second; } // 迭代更新距离向量 bool updated = true; while (updated) { updated = false; for (auto& neighbor : neighbors) { unordered_map<string, int> neighborVector = neighbor.first->getDistanceVector(); for (auto& item : neighborVector) { if (item.first == id) { continue; } int distance = neighbor.second + item.second; if (distance < distanceVector[item.first]) { distanceVector[item.first] = distance; updated = true; } } } } // 生成路由表 for (auto& item : distanceVector) { if (item.first == id) { continue; } int minCost = INT_MAX; Router* minNeighbor = nullptr; for (auto& neighbor : neighbors) { if (neighbor.first->id == item.first) { minCost = neighbor.second; minNeighbor = neighbor.first; break; } unordered_map<string, int> neighborVector = neighbor.first->getDistanceVector(); auto iter = neighborVector.find(item.first); if (iter != neighborVector.end() && neighbor.second + iter->second < minCost) { minCost = neighbor.second + iter->second; minNeighbor = neighbor.first; } } RoutingTableEntry entry; entry.destination = item.first; entry.hopCount = minCost; entry.nextHop = minNeighbor->id; routingTable.push_back(entry); } } // 获取距离向量 unordered_map<string, int> getDistanceVector() { unordered_map<string, int> distanceVector; for (auto& neighbor : neighbors) { distanceVector[neighbor.first->id] = neighbor.second; } return distanceVector; } // 打印路由表 void printRoutingTable() { cout << "Routing table of router " << id << ":" << endl; cout << "Destination\tHop count\tNext hop" << endl; for (auto& entry : routingTable) { cout << entry.destination << "\t\t" << entry.hopCount << "\t\t" << entry.nextHop << endl; } cout << endl; } private: string id; // 路由器ID unordered_map<Router*, int> neighbors; // 相邻路由器和其距离 vector<RoutingTableEntry> routingTable; // 路由表 }; int main() { // 创建四个路由器节点 Router* r1 = new Router("R1"); Router* r2 = new Router("R2"); Router* r3 = new Router("R3"); Router* r4 = new Router("R4"); // 添加相邻路由器和距离 r1->addNeighbor(r2, 2); r1->addNeighbor(r3, 1); r2->addNeighbor(r1, 2); r2->addNeighbor(r3, 3); r2->addNeighbor(r4, 1); r3->addNeighbor(r1, 1); r3->addNeighbor(r2, 3); r3->addNeighbor(r4, 2); r4->addNeighbor(r2, 1); r4->addNeighbor(r3, 2); // 更新路由表 r1->updateRoutingTable(); r2->updateRoutingTable(); r3->updateRoutingTable(); r4->updateRoutingTable(); // 打印路由表 r1->printRoutingTable(); r2->printRoutingTable(); r3->printRoutingTable(); r4->printRoutingTable(); return 0; } ``` 上述代码实现了一个简单的RIP路由器,它可以自动计算最佳路径并生成路由表。需要注意的是,该实现并不完整,仅仅是提供了一个基本的框架,如果需要实际使用,还需要进行更多的改进和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值