SAP_MM模块-特殊业务场景下的系统实现方案

一、业务背景

目前公司有一种电商业务,卖的是备品配件,是公司先跟供应商采购,然后再销售给客户,系统账就是按照正常业务来流转,公司进行采购订单入库,然后销售订单出库。

不过这种备品配件,实物是不经过我们公司的,而是从供应商的生产工厂直接发货给客户(系统会专门给这些供应商设置一个库存地点,如XXX供应商成品仓,入库时就入到这个库位,发货时也通过这个库位来发,便于对账),然后这个时候存在一种客户退货的业务场景,由于实物是不经过我们公司的,那么对于客户退货,有一部分也是供应商自身的原因,所以客户退货时,我们需要由供应商那边承担一定的责任。

基于这种客户退货,我们公司和供应商各自承担一部分责任的场景下,我们需要在SAP里面重新下采购订单,入库后再重新发货给客户(至于客户退货的那部分,属于在供应链平台管理,SAP系统不记账,所以没有库存重新发货),并且这部分采购订单的定价,需要做好折扣,譬如原本10块钱/PC的,现在公司和供应商分别承担50%的责任,那么我们下采购订单给供应商时,这个单价就变成了5块钱/PC。

也就是说,目前我们的重点,有两个; (1)重新跟供应商下采购订单时,如何定价,因为每个物料,跟供应商分别承担的比例是不一样的

(2)物料跟供应商下单采购,正常的业务是不能有折扣的,只有这种客户退回来的,重新跟供应商采购补货给客户的,才需要折扣。

目前讨论了一种系统的实现方案;

二、原理

(一)新增订单类型

1、新增一个采购订单类型ZNB7,用于区分是正常的采购业务,还是这种客户退货后,需要重新跟供应商下单采购的业务

(二)配置与供应商的折扣

1、通过新增折扣条件表,让用户在前台使用MEK1事务码,维护物料与供应商对应的折扣价;并且更新到定价过程中;(条件表关联的字段为:供应商 + 订单类型作为表头,物料作为项目)

2、新增存储顺序Z001,把折扣条件表分配到存储顺序中,

3、新增折扣条件类型Z001:然后再把存储顺序Z001分配到折扣条件类型Z001中;

4、把折扣条件类型添加到采购定价过程中

(三)前台操作效果

1、用户维护MEK1折扣价;

2、当用户创建ZNB7采购订单时,根据条件表维护的供应商和物料,自动带出来对应的折扣条件类型;

3、增加一个增强校验,当采购订单类型ZNB7没有找到折扣条件类型Z001时,报错;(防止用户漏维护MEK1的折扣数据)

三、后台配置实现;

1、后台配置

(1)新增采购订单类型ZNB7

(2)新增采购折扣的条件表:A501,字段包含:供应商、物料、采购订单类型;

(3)新增存储顺序Z001,把表A501添加到存储顺序中

(4)新增折扣相关的条件类型:Z001

(5)把存储顺序Z001关联到折扣的条件类型Z001中;

(6)把条件类型添加到采购订单对应的定价过程中;

(7)后台配置完成,前台MEK1维护Z001的折扣条件类型,绑定供应商、物料、采购订单类型;

(8)正常测试:创建ZNB7的采购订单,可以正常带出来对应的折扣条件类型;

2、增强控制

采购订单增强控制,特定采购订单类型时,必须要带出来条件类型Z001,否则就报错(防止用户忘记维护条件表,而导致创建采购订单时没产生折扣)

CMOD:EXIT_SAPMM06E_012。INCLUDE ZXM06U43

四、系统配置完整记录

(一)新增采购订单类型

新增采购订单比较简单,这里就不讲解了,复制其他订单类型新增即可。

(二)配置与供应商的折扣

1、新增折扣条件表

为了让用户可以在前台MEK1维护着特定采购订单类型下,针对不同的供应商,维护不同的物料折扣,需要单独配置一个采购折扣表;

新增条件表A501时,系统标准不存在“订单类型”这个字段,需要单独进行额外的配置操作

说明:定义条件表;

有3个相关的结构需要维护:

KOMG(允许条件结构字段)

KOMK(定价通讯抬头)

KOMP(定价通讯项目)

要把我们需要添加的字段添加到这3个表里,KOMG表是必须要添加的(上面创建条件表时,找不到字段就是这里维护的),抬头字段添加到表KOMK,行项目字段添加到KOMP,我这里要添加的字段是采购订单类型BSART,所以需要添加KOMG和KOMK

1.1、维护KOMG结构

新增附加结构,添加对应的条件字段BSART;

添加外键,用于维护条件记录时,检查数据

1.2、维护KOMK结构

由于KOMK表中自身已经有哦BSART这个字段,不需要另外新增处理

1.3、重新维护新增A501条件表

(1)KOMG结构维护了BSART字段后,下面可以看到该字段

(2)这技术视图中的配置需要注意,会影响到后面使用MEK1维护折扣时,抬头和行项目物料的维护方式(哪个字段属于抬头,哪个字段属于行项目,需要自己考虑清楚)

(3)点击左上角的字典元素,也能看到这个字段对应的表是KOMG,这也能解释,为什么需要先在这个结构添加字段

(4)点击激活生成表A501

没有维护外键时,会有以下提示;

维护外键后,没有黄色警告;

2、新增存储顺序Z001,把折扣条件表分配到存储顺序中,

2.1、新增存储顺序Z001

3、新增折扣条件类型Z001:然后再把存储顺序Z001分配到折扣条件类型Z001中;

可以参考标准的条件类型:R000 总价折扣 %

4、把折扣条件类型添加到采购定价过程中

(三)前台操作效果

1、用户维护MEK1折扣价;

2、建单测试

当用户创建ZNB7采购订单时,根据条件表维护的供应商和物料,自动带出来对应的折扣条件类型;

3、增加一个增强校验

当采购订单类型ZNB7没有找到折扣条件类型Z001时,报错;(防止用户漏维护MEK1的折扣数据)

至此,整个方案初步设计完成,剩下的就是让用户使用测试,再根据实际情况进行迭代优化了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/780888.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android使用http加载自建服务器静态网页

最终效果如下图,成功加载了电脑端的静态网页内容,这是一个xml文件。 电脑端搭建http服务器 使用“Apache Http Server”,下载地址是:https://httpd.apache.org/download.cgi。具体操作步骤,参考:Apache …

卫星IoT产品发展前景

卫星IoT产品发展前景 一、概述 卫星IoT产品是指利用卫星通信技术实现物联网设备互联互通的解决方案。随着卫星互联网技术的快速发展,卫星IoT产品正逐渐成为解决偏远地区、海洋、航空等场景下物联网连接问题的重要手段。 二、性能特点 广泛覆盖: 卫星…

ssrf结合redis未授权getshell

目录 漏洞介绍 SSRF Redis未授权 利用原理 环境搭建 利用过程 rockylinux cron计划任务反弹shell 写公钥免密登录 ubuntu 写公钥免密登录 漏洞介绍 SSRF SSRF(server side request forgrey)服务端请求伪造,因后端未过滤用户输入&…

SpringBoot实现多数据源切换

1. 概述 仓库地址:https://gitee.com/aopmin/multi-datasource-demo 随着项目规模的扩大和业务需求的复杂化,单一数据源已经不能满足实际开发中的需求。在许多情况下,我们需要同时操作多个数据库,或者需要将不同类型的数据存储在不…

陶建辉当选 GDOS 全球数据库及开源峰会荣誉顾问

近日,第二十三届 GOPS 全球运维大会暨 XOps 技术创新峰会在北京正式召开。本次会议重点议题方向包括开源数据库落地思考、金融数据库自主可控、云原生时代下数据库、数据库智能运维、数据库安全与隐私、开源数据库与治理。大会深入探讨这些方向,促进了数…

Matplotlib 学习

知识点 1.plot():用于绘制线图和 散点图scatter() 函数:plot() 函数可以接受许多可选参数,用于控制图形的外观,例如:颜色: colorblue 控制线条的颜色。线型: linestyle-- 控制线条的样式,例如虚线。标记…

前端vue后端java使用easyexcel框架下载表格xls数据工具类

一 使用alibaba开源的 easyexcel框架&#xff0c;后台只需一个工具类即可实现下载 后端下载实现 依赖 pom.xml <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependen…

昇思25天学习打卡营第12天|FCN图像语义分割

文章目录 昇思MindSpore应用实践基于MindSpore的FCN图像语义分割1、FCN 图像分割简介2、构建 FCN 模型3、数据预处理4、模型训练自定义评价指标 Metrics 5、模型推理结果 Reference 昇思MindSpore应用实践 本系列文章主要用于记录昇思25天学习打卡营的学习心得。 基于MindSpo…

机械键盘有哪些分类

机械键盘是一种比传统的薄膜键盘更耐用、更快捷、更具有手感的键盘。它的键帽和按键是独立的&#xff0c;能够提供更好的反应速度和操作感。机械键盘在现代化生活中得到了广泛的应用。根据其特性和使用场景&#xff0c;机械键盘可以分为以下几类&#xff1a; 1.轴体分类 机械…

永磁同步电机控制算法--最大转矩电流比控制(虚拟信号注入法)

目前&#xff0c;国内外相关学者对 MTPA 控制方法进行了一系列的理论研究与仿真分析。通过研究取得的成果综合来看&#xff0c;该控制方法主要有&#xff1a;直接公式计算法、曲线拟合法、查表法、搜索法、高频信号注入法以及参数辨识法等。 之前的文章中已经介绍了直接公式计…

柯桥小语种学校成人生活口语学习|西班牙语中H为什么不发音…

01 H en el alfabeto espaol 西语字母表中的h 字母H是唯一一个在标准西班牙语中不再代表任何音素的字母。尽管在它单独出现时被叫做HACHE&#xff0c;但在大多数单词拼写中&#xff0c;它只是一个没有声音对应关系的字母&#xff0c;因此RAE称其为“无声的H”&#xff08;hac…

昇思25天学习打卡营第4天|MindSpore数据集和数据变换

# 打卡 目录 # 打卡 Dateset&#xff1a;Pipeline 的起始 具体步骤 数据处理 Pipeline 代码例子 内置数据集的情况 自定义数据集的情况 可迭代的数据集 生成器 Transforms&#xff1a;数据预处理 代码例子 通用变换Compose 文本变换 Text Lambda变换 Dateset&…

ExtruOnt——为工业 4.0 系统描述制造机械类型的本体

概述 论文地址 &#xff1a;https://arxiv.org/abs/2401.11848 原文地址&#xff1a;https://ai-scholar.tech/articles/ontology/ExtruOnt 在工业 4.0 应用场景中&#xff0c;以机器可解释代码提供的、语义丰富的制造机械描述可以得到有效利用。然而&#xff0c;目前显然还缺…

【开源项目】LocalSend 局域网文件传输工具

【开源项目】LocalSend 局域网文件传输工具 一个免费、开源、跨平台的局域网传输工具 LocalSend 简介 LocalSend 是一个免费的开源跨平台的应用程序&#xff0c;允许用户在不需要互联网连接的情况下&#xff0c;通过本地网络安全地与附近设备共享文件和消息。 项目地址&…

​RAG与LLM原理及实践(8)--- Chroma 应用场景及限制

前言 通过前面几节的介绍&#xff0c;你应该对Chroma的运作原理有相当透彻的理解。Chroma的设计正如之前描述的&#xff1a; Chroma提供的工具&#xff1a; 存储文档数据和它们的元数据&#xff1a;store embeddings and their metadata 嵌入&#xff1a;embed documents an…

.mkp勒索病毒:深度解析与防范

引言&#xff1a; 在数字化时代&#xff0c;网络安全问题日益严峻&#xff0c;其中勒索病毒作为一种极具破坏性的恶意软件&#xff0c;严重威胁着个人用户和企业机构的数据安全。在众多勒索病毒家族中&#xff0c;.mkp勒索病毒以其强大的加密能力和广泛的传播方式&#xff0c;成…

Amesim中删除计算结果保存计算文件

前言 Amesim在工程应用中计算的结果文件有时会很大&#xff0c;为了节省电脑存储空间&#xff0c;项目结束后可以将计算结果删除进行保存以存档。 操作步骤 具体操作步骤如下&#xff1a; Step1&#xff1a;在①File下打开&#xff08;Open&#xff09;需要删除计算结果的项…

PyQt5开发笔记:2. 2D与3D散点图、水平布局和边框修饰

一、装pyqtgraph和PyOpenGL库 pip install pyqtgraph pip install PyOpenGL 注意&#xff1a;一定不要pip install OpenGL&#xff0c;否则会找不到 二、3D散点图效果 import pyqtgraph as pg import pyqtgraph.opengl as gl import numpy as np# 创建应用程序 app pg.mkQ…

《机器学习》读书笔记:总结“第4章 决策树”中的概念

&#x1f4a0;决策树 基于树结构进行决策。 一棵决策树包括&#xff1a; 一个 根节点&#xff08;起点&#xff09;若干 叶节点&#xff08;没有下游节点的节点&#xff09;若干 内部节点(分支节点) 即&#xff1a; #mermaid-svg-Mxe3d0kNg29PM2n8 {font-family:"treb…

leetcode每日一题-3101 交替子数组计数

暴力遍历&#xff1a;看起来像是回溯,实际上就是递归 class Solution { private:long long _res 0; public:long long countAlternatingSubarrays(vector<int>& nums) {backtrack(nums, 0);return _res;}void backtrack(vector<int>& nums, long long st…