SAP_SD模块-销售订单抬头折扣金额分摊到行项目的业务记录

前言:

本文主要是记录24年9月份支持财务月结过程中,用户提出的一个问题:“为什么KE30有部分物料9月份的销售数量少于FAGLL03H的销售数量??”,主要包括以下两个内容;

1、问题发生的场景复现;

2、折扣金额如何分摊到订单行项目上;

3、折扣后,行项目金额为0时的处理方案;

PS:本文记录的方案个人感觉不是标准方案,但是这边公司的财务觉得该方案没问题,而且以前就是一直这样操作过来的,那我也就先不折腾了,后续有时间再去研究下是否有标准的解决方案;

一、业务背景

1、业务说明;

        我们公司有电商的业务,在淘宝/天猫/京东等平台销售产品时,有可能会有优惠券抵消的情况,这个时候,优惠券的折扣金额会带到订单行项目上。

        当折扣金额等于订单行项目金额时,该行项目就相当于是免费订单了;目前我们公司的操作方式,是通过在订单抬头添加折扣的条件类型,然后再把抬头的折扣金额,按比例分摊到不同行项目上;

        如果行项目打完折后,净值为0,那么就手工添加一个含税单价的条件类型(ZC01),金额为0.01元,使得净值不为0;后续开票的时候也是按这个金额来开票,这样发票金额会多出来1分钱,后续财务会通过手工凭证调整该差异;

        注意,下面截图的这种添加1分钱的操作方式,就是最终导致抬头折扣金额,分摊到不同行项目时出错,从而导致部分行项目净值为负数,然后导致销售开票过帐失败,进而导致KE30的销售数量与FAGLL03H销售数量对不上!!!

2、销售订单创建方式:

我们公司在SAP系统创建销售订单,有三        种方式;

(1)第三方平台下单,通过接口函数,把数据推送给SAP,实时调用函数创建销售订单并返回结果;

(2)第三方平台下单,然后通过接口函数,把业务数据推送到SAP两个底表把数据存起来,分别是订单抬头底表ZZT_ORDER_HEAD和行项目底表ZZT_ORDER_DETAIL(这两个表包含创建一个销售订单应有的数据),再通过后台作业定时调用一个自开发的程序来创建销售订单;

(3)用户手工在SAP创建销售订单;

本文主要讲解的是第二种方式;

3、发现问题:

        该问题是基于国庆期间,财务月结时提出,KE30的财务报表与FAGLL03H报表有部分物料的销售数量对不上,KE30的数据少了;

4、分析问题:

        分析后发现,是因为有部分销售发票过帐失败导致的,发票没过帐成功,导致KE30没有产生对应的收入,报表对应的数量就少了;但是因为销售订单有发货过帐,所以FAGLL03H有对应的发货数量;

5、进一步分析

        进一步分析,为什么销售发票会过帐失败呢??发现原来是销售订单有部分行项目数据的净价值为负数,导致开票失败;

        再进一步分析,为什么订单行项目的净价值会有负数?原来是订单抬头的折扣金额,分摊到订单行项目时有问题;因为折扣是负数,当折扣金额大于订单的销售金额时,净价值就变成负数;

6、初步结论:

        也就是说,由于订单抬头的折扣金额,分摊到不同行项目时出错,导致部分行项目的净值变成负数,从而导致销售开票过帐时报错,进而导致KE30报表没有产生对应的收入凭证,然后对应的销售数量数据就和FAGLL03H发货过帐的数据对应不上了。

二、模拟错误单据的操作,复原问题

1、接收创建销售订单业务数据;

通过SE37手动调用接口,模拟第三方平台推送数据到SAP,把数据存储到SAP自定义的后台表中(这两步不是重点,用VA01创建销售订单测试也可以)

2、创建销售订单;

通过后台作业,定时运行自开发的程序,从ZZT_ORDER_HEAD和ZZT_ORDER_DETAIL表中获取数据后创建销售订单

订单数据如下:

A、订单有两个行项目,数量分别为1

B、抬头折扣金额为700

C、订单行项目的金额

10行项目;金额300;20行项目,金额为400,订单总金额为700;抬头的折扣金额为700;

那么10行项目分配的折扣金额为:700 * (300 / 700)= 300;

同理,20行项目的折扣金额为 :700 * (400 / 700)= 400;

3、查看订单不完整日志

查看不完整日志可以发现,订单净值不能为0(正常净值为0的订单,应该是要配置成免费订单)

4、用户手工修改价格数据(注意,这一步就是问题产生的关键!!)

为了让订单净值不为0,财务用户手工添加了同一个含税价格的条件类型ZC01,单价为0.01;

注意:此时订单还没保存,可以看到,10行项目和20行项目的订单净值分别为0.01,此时,分摊的折扣金额仍然还是300和400,看起来还是很合理的,也是因为这样,财务同事操作的时候就没有认真注意保存后的结果!!!

5、销售订单修改后保存;

保存后,可以看到,10行项目的折扣金额,由原来的300变成了350;20行项目的折扣金额,由原来的400变成了350~~

此时,我们也可以看到,10行项目的净值,变成了-49.99了~~

6、VL01N/VL10A创建交货单

7、VL02N/VL06G交货单过帐

8、VLPOD发货确认

做完以上三步正常操作后,订单凭证流如下图所示;

9、VF01/VF04 销售开票(这步是重点)

我们公司配置的是两步开票法;VF01创建发票,VF02发票过帐,这个比较简单,就不截图演示了,下面截图讲解一下VF04;

VF04:可以批量开具销售发票;

选中对应的行项目进行开票;

单个开票:每个交货单单独开票,点击后,每一行数据都需要手动保存~~如果有10行数据,那么可能就需要点击10次保存,比较麻烦;但是每个交货单单独开票,后期出问题的话就针对性处理该交货项目,我个人感觉是比较方便的;

集中开票:根据后台配置设定好的规则进行合并;这个功能细讲的话也能写一篇文章了,这里不深入,有兴趣的小伙伴网上搜索相关资料自己看一下~~

点击集中开票后,看到最后面绿色统计,证明开票成功

其实从这里我们可以看到,开出来的发票是有错误的;但是财务同事一般在前一个页面,执行后看到绿色的按钮,就以为都成功了~~

我们也可以在前台查看,事务码:VF02

可以看到发票过帐状态是有错误的;

点击发布到会计核算,可以看到对应的错误提示

PS:A、交货单只要发货过帐,启用了POD功能的订单,即使没有完成VLPOD的交货确认,VF04也能看得到数据,但是开票时会报错;

B、不管系统配置的是一步开票法还是两步开票法,VF04执行后,都会生成发票号并且发票过帐(正常两步法的话,需要用VF01生成发票号,再用VF02进行发票过帐产生凭证)

10、VFX3:批量批准发票凭证到会计(也就是销售发票过帐)

针对VF04开票过帐失败的数据,可以用VFX3批量查看,并在处理错误原因后,进行过帐

11、问题分析;

查看后台配置中的定价过程,可以看到ZC03是要含税价扣除折扣和运费,以及销项税后的不含税金额,是要进入到ERL收入科目的;从销售订单可以看到,目前的金额为负数-44.24,系统不支持,从而导致开票失败(具体为什么不支持负数,是否可以通过配置修改成支持,目前没有进一步研究,有兴趣的小伙伴可以研究下)

三、问题处理

通过以上问题复原,其实我们也可以知道,就是因为用户手工多添加了一个1分期的ZC01条件类型导致的;经过测试发现,处理方法目前有两个;

前提:先用VF11取消发票,否则无法更新

取消后,查看订单凭证流;

1、使用行项目的折扣条件类型

销售订单抬头删除订单折扣金额,转为在行项目中添加折扣

保存后,即可正常开票;

2、合并ZC01条件类型

保留抬头的折扣金额,行项目删除多余的ZC01条件类型,把需要多添加的1分钱合并到原来的ZC01中

保存后,原本错误的折扣金额才会更新成正确的,此时可正常开票;

四、折扣金额分摊到行项目的业务记录

1、条件类型配置

2、演示不勾选组条件

前面的例子已经演示过,ZM04条件类型放到销售订单抬头时,会按照行项目的金额来分摊;(勾选了组条件),此处演示不勾选组条件时

也就是说,抬头的条件,如果要按比例分摊到行项目中去,切记要勾选“组条件”,另外,分摊的逻辑,可以根据“计算类型”的选项来决定,譬如可以根据金额、数量、毛重、净重等等条件来分摊,网上也有很多例子,感兴趣的可以自行搜索了解下;

SAP 抬头运费分摊到行项目.docxSAP 抬头运费分摊到行项目.docx,1.业务描述现在销售订单有多个行项目,有一项运费要按重比例分配到行项目上。这笔运费由我方出,但是由经销商代付。(原来的收入改为由运费收入和业务收入两部分组成,这时的运费实际上是收入,要记到总账科目贷方,表示收入增加,而不作为费用处理)。通过配置,我们可以在抬头输入运费单价,也可以在抬头输入运费总金额。2.方案设计2.1方案一:在抬头输入总金额2.1.1实现过程1.定义条件类型计算类型选择B 固定金额,勾选定价组,选择抬头条件。2.定义定价过程运费勾选手动,基础类型选择12毛重。3.在物料主数据中icon-default.png?t=O83Ahttps://max.book118.com/html/2017/0709/121364697.shtm

五、总结

1、问题点:

为什么KE30有部分物料9月份的销售数量少于FAGLL03H的销售数量??

2、原因分析:

折扣金额分摊后等于订单金额,导致净价值为0—>销售订单行项目新增加了一个价值为0.01的ZC01,系统同时存在两个ZC01—>导致系统在按金额比例分摊抬头折扣金额时出错(具体为什么会出错没有深究,估计得看源代码才行)—>导致订单行项目的净价值为负数—>导致销售开票过帐失败—>导致KE30没有对应的收入数据

3、解决方法:

方法(1)把抬头的折扣金额删掉,转而在行项目中添加折扣金额,人为分配这部分折扣金额;

方法(2)抬头折扣金额保留,行项目把需要增加的0.01合并到原来的ZC01条件类型中,不能新增相同的条件类型ZC01;

以上,记录完成,有更好方案的小伙伴可以联系沟通下,一起学习成长,不甚感激~~

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

毕设分享 基于协同过滤的电影推荐系统

文章目录 0 简介1 设计概要2 课题背景和目的3 协同过滤算法原理3.1 基于用户的协同过滤推荐算法实现原理3.1.1 步骤13.1.2 步骤23.1.3 步骤33.1.4 步骤4 4 系统实现4.1 开发环境4.2 系统功能描述4.3 系统数据流程4.3.1 用户端数据流程4.3.2 管理员端数据流程 4.4 系统功能设计 …

【hot100-java】二叉树的最近公共祖先

二叉树篇 我觉得是比两个节点的深度,取min(一种情况) DFS解题。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ clas…

Apache Flink Dashboard

1、Overview Apache Flink Web Dashboardhttp://110.40.130.231:8081/#/overview 这张图片显示的是Apache Flink的Web UI界面,其中包含了以下几个部分: Available Task Slots: 显示当前可用的任务槽位数量。任务槽位是指Flink集群中可用于运行任务的资…

Django makemigrations时出现ModuleNotFoundError: No module named ‘MySQLdb‘

使用Python 3.11、Django 5.1.2 写完model进行makemigrations时出现报错 查找资料发现说是mysqldb适用于Python2,不支持Python3;python3可以使用pymysql 安装pymsql pip install pymysql 然后要在项目的__init__.py中加如下代码: import …

K8s(学习笔记)

swap分区是什么呀? 什么是ipvs呀? yaml是什么呀??? p20看不下去了!!!

【LeetCode】修炼之路-0004-Median of Two Sorted Arrays【python】

题目 Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays. The overall run time complexity should be O(log (mn)). Example 1: Input: nums1 [1,3], nums2 [2] Output: 2.00000 Explanation: merged…

SPIE出版-EI会议-人机交互 虚拟现实 <<< 11月杭州

EI、Scopus检索|人机交互与虚拟现实国际会议征稿进行中❗会议已通过SPIE出版❗ 2024人机交互与虚拟现实国际会议 ✅大会时间:2024年11月15-17日 ✅大会地点:中国-杭州 ✅报名/截稿:2024年10月15日(团队投稿可享优惠&#xff…

实现std::sort,replace,fill,accumulate,equal等函数

std::sort /// <summary>/// std::sort 是从小到大排列的/// </summary>/// <typeparam name"IteratorClass"></typeparam>/// <typeparam name"ComparingFunctions"></typeparam>/// <param name"itBegin&qu…

基于IDEA+SpringBoot+Vue+Uniapp的投票评选小程序系统的详细设计和实现

2. 详细视频演示 文章底部名片&#xff0c;联系我获取更详细的演示视频 3. 论文参考 4. 项目运行截图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 5. 技术框架 5.1 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框…

大数据毕业设计选题推荐-B站热门视频数据分析-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

AI助力农作物自动采摘,基于嵌入式端超轻量级模型LeYOLO全系列【n/s/m/l】参数模型开发构建作物生产场景下番茄采摘检测计数分析系统

去年十一那会无意间刷到一个视频展示的就是德国机械收割机非常高效自动化地24小时不间断地在超广阔的土地上采摘各种作物&#xff0c;专家设计出来了很多用于采摘不同农作物的大型机械&#xff0c;看着非常震撼&#xff0c;但是我们国内农业的发展还是相对比较滞后的&#xff0…

计算机的错误计算(一百一十八)

摘要 探讨一个不动点的计算精度问题。 不动点是一类特殊的循环迭代。它有形式 例1. 已知迭代[1] 计算 显然&#xff0c;每个 均为 0.5 . 不妨在Visual Studio 2010 下用下列C语言代码计算&#xff1a; #include <stdio.h> #include <math.h>int main() {do…

【大语言模型-论文速读】GPT的不确定性判断

【大语言模型-论文精读】GPT’s Judgements Under Uncertainty Authors: Payam Saeedi and Mahsa Goodarzi 论文&#xff1a;https://arxiv.org/pdf/2410.02820 文章标题翻译 GPT的不确定性判断 Payam Saeedi Rochester Institute of Technology Mahsa Goodarzi The State …

【exp报错注入】

整数范围 最大整数 exp 函数介绍 报错盲注注入 payload分析 709C-ASCII 值就等于我们下面的 7091-1 &#xff0c;C就是我们要猜的值&#xff0c;当我们猜测的值和ASCII码相等时&#xff0c;那么exp就不会出现报错&#xff0c;因为1-1还是等于709&#xff1a; 练习 id1 an…

【AIGC】OpenAI API在快速开发中的实践与应用:优化ChatGPT提示词Prompt加速工程

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;使用最新型号确保最佳实践利用最新模型进行高效任务处理为什么要选择最新模型&#xff1f;结论 &#x1f4af;指令与上下文的分隔最佳实践分隔指令和上下文的重要性使用符…

Win32 API 控制台鼠标操作、坐标获取与相关函数介绍

Win32 API 控制台鼠标操作、坐标获取与相关函数介绍 一、前置介绍读取控制台输入缓冲区数据 ReadConsoleInput 函数控制台输入缓冲区中的输入事件 INPUT_RECORD 结构鼠标输入事件 MOUSE_EVENT_RECORD 结构更改输入模式 SetConsoleMode 函数 二、鼠标坐标获取(以下代码环境为 VS…

PCL 3D-SIFT关键点检测(Z方向梯度约束

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 SIFT关键点检测 2.1.2 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#…

SQL优化 where谓词条件OR优化

1.测试表&#xff0c;及测试语句where条件中OR对应两个字段选择度很高 create table t618 as select * from dba_objects; select object_name from t618 where (object_id12043 or DATA_OBJECT_ID12043) and STATUSVALID; 2.没有索引情况下&#xff0c;全表扫描逻辑读…

C++核心编程和桌面应用开发 第九天(静态多态 动态多态 纯虚函数 抽象类 虚析构 纯虚析构 向上向下类型转换 重载重写重定义)

目录 1.1静态多态 1.2动态多态 1.2.1满足条件 1.2.2动态多态的使用条件 1.3纯虚函数和抽象类 1.3.1纯虚函数 1.3.2抽象类 1.4虚析构/纯虚析构 1.5向上向下类型转换 1.5.1向下类型转换 1.5.2向上类型转换 1.5.3多态中的类型转换 1.6重载重写重定义 1.6.1重载 1.6…

qwt实现码流柱状图多色柱体显示

qwt实现码流柱状图多色柱体显示 1. 前言2. qt实现柱状图3.qwt基础说明3.1 qwt安装与使用3.1.1 下载qwt源码3.1.2 编译3.1.3 安装3.1.4 使用3.2 QwtPlotBarChart类3.2.1画图步骤3.2.2 specialSymbol3.3.3 barTitle4 BsBarChart定制4.1 每个柱体可以显示不同的颜色4.2 每个柱体可…