当前位置: 首页 > news >正文

ABAP 字段类型不一样导致相加之后金额错误

文章目录

  • ABAP 字段类型不一样导致相加之后金额错误
    • 写在前面的总结
    • 示例程序1
    • 汇总MSEG表和MLDOC表

ABAP 字段类型不一样导致相加之后金额错误

写在前面的总结

  1. 如果需要不同底表的字段相加的值,那么最好是根据条件去分别算出那些值放在临时内表里面,再去根据条件读取临时内表,读取完之后取出对应的值进行计算,不然可能会因为字段有不同长度,计算的结果出错
  2. 如果要多个表连接,一定要注意连接的条件和思路,思路要清晰,连接条件要正确
  3. 在select语句里面如果使用sum函数,字段长度不相等,可能会导致计算出来的值有问题
  4. 尽量在select语句的筛选条件里面筛选数据,使得到的内表的行数尽量更少,更准确一些。

在这里插入图片描述
原来的代码:

原来的代码:( CASE WHEN c~aufnr IS INITIALTHEN ( SUM( CASE WHEN c~bwart = '102' THEN c~dmbtr * -1 ELSE c~dmbtr END ) )ELSE SUM( CASE WHEN c~bwart = '102' THEN c~dmbtr * -1 ELSE c~dmbtr END ) + d~prd END ) AS dmbtr, "模具入库金额现在修改成:( CASE WHEN c~aufnr IS INITIALTHEN ( SUM( CASE WHEN c~bwart = '102' THEN c~dmbtr * -1 ELSE c~dmbtr END ) )ELSE SUM( CASE WHEN c~bwart = '102' THEN c~dmbtr * -1 ELSE c~dmbtr END ) + ( CASE WHEN abs( d~prd ) > 0 THEN d~prd ELSE 0 END ) END ) AS dmbtr, "模具入库金额

在这里插入图片描述
在这里插入图片描述
程序名:z_test_lhy2

示例程序1

REPORT z_test_lhy2.
*&--------------------------Variables----------------------------------*
TYPES: BEGIN OF ty_out,werks TYPE mseg-werks,  "工厂matnr2 TYPE mara-matnr, "物料aufnr TYPE mseg-aufnr,  "订单END OF ty_out.
DATA: gs_out TYPE ty_out,gt_out TYPE TABLE OF ty_out.*&------------------------------Logic----------------------------------*
gs_out-werks = '1710'.
gs_out-matnr2 = 'MZ-FG-C990'.
gs_out-aufnr = '000001000920'.
APPEND gs_out TO gt_out.SELECTa~werks,  "工厂a~matnr2, "物料( CASE WHEN b~aufnr IS INITIALTHEN SUM( CASE WHEN b~bwart = '102' THEN b~dmbtr * -1 ELSE  b~dmbtr END  )ELSE SUM( CASE WHEN b~bwart = '102' THEN b~dmbtr * -1 ELSE  b~dmbtr END  ) + c~prd END ) AS dmbtr_hj, "合计金额c~prd,b~aufnr,SUM( CASE WHEN b~bwart = '102' THEN b~dmbtr * -1 ELSE  b~dmbtr END  ) AS dmbtr "原始金额FROM @gt_out AS aLEFT JOIN mseg AS b ON a~werks = b~werks AND a~matnr2 = b~matnrLEFT JOIN mldoc AS c ON b~aufnr = c~aufnr AND c~tcode = 'KO88'WHERE substring( b~budat_mkpf,1,4 ) = '2021'GROUP BY a~werks,a~matnr2,b~aufnr,c~prd,b~aufnrINTO TABLE @DATA(lt_temp).

单独定义两个变量之后再相加,数值是没有问题的,都是正确的:
在这里插入图片描述

汇总MSEG表和MLDOC表

这里想先汇总MSEG的金额,再去mldoc表去查询价格差异字段prd,并汇总价格差异的金额,可以用下面的做法:

SELECTa~werks,  "工厂a~matnr2, "物料
*  ( CASE WHEN b~aufnr IS INITIAL
*    THEN SUM( CASE WHEN b~bwart = '102' THEN b~dmbtr * -1 ELSE  b~dmbtr END  )
*    ELSE SUM( CASE WHEN b~bwart = '102' THEN b~dmbtr * -1 ELSE  b~dmbtr END  ) + c~prd END ) AS dmbtr_hj, "合计金额
*  c~prd,b~aufnr,SUM( CASE WHEN b~bwart = '102' THEN b~dmbtr * -1 ELSE  b~dmbtr END  ) AS dmbtr "原始金额FROM @gt_out AS aLEFT JOIN mseg AS b ON a~werks = b~werks AND a~matnr2 = b~matnr AND a~aufnr = b~aufnr"LEFT JOIN mldoc AS c ON a~aufnr = c~aufnr AND c~tcode = 'KO88'WHERE substring( b~budat_mkpf,1,4 ) = '2021'GROUP BY a~werks,a~matnr2,b~aufnrINTO TABLE @DATA(lt_mseg).SORT lt_mseg BY werks matnr2 dmbtr."cl_demo_output=>display( lt_mseg ).SELECTa~werks,"工厂a~matnr2,"物料a~aufnr,  "订单SUM( b~prd ) AS prd "价格差异FROM @lt_mseg AS aLEFT JOIN mldoc AS b ON a~aufnr = b~aufnr AND b~tcode = 'KO88'GROUP BY a~werks,a~matnr2,a~aufnrINTO TABLE @DATA(lt_mldoc).SORT lt_mldoc BY werks matnr2 aufnr."cl_demo_output=>display( lt_mldoc ).

在这里插入图片描述

相关文章:

ABAP 字段类型不一样导致相加之后金额错误

文章目录 ABAP 字段类型不一样导致相加之后金额错误写在前面的总结示例程序1汇总MSEG表和MLDOC表 ABAP 字段类型不一样导致相加之后金额错误 写在前面的总结 如果需要不同底表的字段相加的值,那么最好是根据条件去分别算出那些值放在临时内表里面,再去…...

【L1距离和L2距离】Manhattan Distance Euclidean Distance 解释和计算公式

距离度量 特征空间中两个实例点的距离可以反映出两个实力点之间的相似性程度,使用的距离可以是欧式距离,也可以是其他距离。 欧氏距离(L2距离):最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于…...

自动发卡平台源码优化版,支持个人免签支付

源码下载地址:自动发卡平台源码优化版.zip 环境要求: php 8.0 v1.2.6◂ 1.修复店铺共享连接时异常问题 2024-03-13 23:54:20 v1.2.5 1.[新增]用户界面硬币增款扣款操作 2.[新增]前台对接库存信息显示 3.[新增]文件缓存工具类[FileCache] 4.[新增]库存同…...

如何使用固定公网地址远程连接Python编译器并将运行结果返回到Pycharm

文章目录 一、前期准备1. 检查IDE版本是否支持2. 服务器需要开通SSH服务 二、Pycharm本地链接服务器测试1. 配置服务器python解释器 三、使用内网穿透实现异地链接服务器开发1. 服务器安装Cpolar2. 创建远程连接公网地址 四、使用固定TCP地址远程开发 本文主要介绍如何使用Pych…...

Java设计模式—备忘录模式(快照模式)

定义 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,很多软件都提供了撤销(Undo)操作&#…...

没学数模电可以玩单片机吗?

我们首先来看一下数电模电在单片机中的应用。数电知识在单片机中主要解决各种数字信号的处理、运算,如数制转换、数据运算等。模电知识在单片机中主要解决各种模拟信号的处理问题,如采集光照强度、声音的分贝、温度等模拟信号。而数电、模电的相互转换就…...

FlinkSQL之Flink SQL Join二三事

​ Flink SQL支持对动态表进行复杂而灵活的连接操作。 为了处理不同的场景,需要多种查询语义,因此有几种不同类型的 Join。默认情况下,joins 的顺序是没有优化的。表的 join 顺序是在 FROM 从句指定的。可以通过把更新频率最低的表放在第一个…...

某某消消乐增加步数漏洞分析

一、漏洞简介 1) 漏洞所属游戏名及基本介绍:某某消消乐,三消游戏,类似爱消除。 2) 漏洞对应游戏版本及平台:某某消消乐Android 1.22.22。 3) 漏洞功能:增加游戏步数。 4&#xf…...

SpringBoot动态数据源实现

一、背景 一个应用难免需要连接多个数据库,像我们系统起码连接了5个以上数据库,AWS RDS主库,ECS自搭MySQL从库,工厂系统三个SQLServer数据库,在线网站MySQL数据库,记得很早以前是用SessionFactory配置&…...

计算机网络常见题(持续更新中~)

1 描述一下HTTP和HTTPS的区别 2 Cookie和Session有什么区别 3 如果没有Cookie,Session还能进行身份验证吗? 4 BOI,NIO,AIO分别是什么 5 Netty的线程模型是怎么样的 6 Netty是什么?和Tomcat有什么区别,特点是什么? 7 TCP的三次…...

富格林:可信招数揭发防备暗箱陷阱

富格林悉知,在风云变幻的金融市场中,炒贵金属是一项具有高收益潜力的投资方式。但投资是风险与收益共存的,因此我们在做单投资过程中需总结可信招数揭发暗箱陷阱,防备受害亏损。以下总结几点可信的投资技巧,希望能够帮…...

获取高德安全码SHA1

高德开发者平台上给的三种方法 获取安全码SHA1,这里我自己使用的是第三种方法。 1、通过Eclipse编译器获取SHA1 使用 adt 22 以上版本,可以在 eclipse 中直接查看。 Windows:依次在 eclipse 中打开 Window -> Preferances -> Androi…...

关于RPC

初识RPC RPC VS REST HTTP Dubbo Dubbo 特性: 基于接口动态代理的远程方法调用 Dubbo对开发者屏蔽了底层的调用细节,在实际代码中调用远程服务就像调用一个本地接口类一样方便。这个功能和Fegin很类似,但是Dubbo用起来比Fegin还要简单很多&a…...

pulsar: kafka on pulsar之把pulsar当kafka用

一、下载协议包(要和pulsar版本比较一致) https://github.com/streamnative/kop/releases?q2.8.0&expandedtrue二、在pulsar的根目录创建一个protocols目录,将上述包放到这个目录里 三、编辑broker.conf(如果是集群)或者standalone.con…...

七月论文审稿GPT第4版:通过paper-review数据集微调Mixtral-8x7b

模型训练 Mixtral-8x7b地址:魔搭社区 GitHub: hiyouga/LLaMA-Factory: Unify Efficient Fine-tuning of 100 LLMs (github.com) 环境配置 git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda activate lla…...

基于 YOLO V8 Fine-Tuning 训练自定义的目标检测模型

一、YOLO V8 YOLO V8 是由 2023 年 ultralytics 公司开源的发布,是结合了前几代 YOLO 的融合改进版。YOLO V8 支持全方位的视觉 AI 任务,包括检测、分割、姿态估计、跟踪和分类。并且在速度和准确性方面具有无与伦比的性能。能够应用在各种对速度和精度…...

快手,得物,蓝月亮,蓝禾,奇安信,三七互娱,顺丰,康冠科技,金证科技24春招内推

快手,得物,蓝月亮,蓝禾,奇安信,三七互娱,顺丰,康冠科技,金证科技24春招内推 ①得物 【岗位】技术,设计,供应链,风控,产品,…...

全局UI方法-弹窗二-列表选择弹窗(ActionSheet)

1、描述 定义列表弹窗 2、接口 ActionSheet.show(value:{ title: string | Resource, message: string | Resource, autoCancel?: boolean, confrim?: {value: string | Resource, action: () > void }, cancel?: () > void, alignment?: DialogAlignment, …...

Memcached分布式内存对象数据库

一 Memcached 概念 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 Web 应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。 二 在架构中的位置 Memcached 处于前端或中间件后…...

华为广告打包报错,问题思考

华为广告打包时报错 fata日志不一样能反映出完整的错误日志信息,仅看fata日志具有误导性,有可能指向错误的方向。 通过看完整的日志可见,错误的原因为 Caused by: java.lang.ClassNotFoundException: com.huawei.hms.ads.base.R$dimenfata日…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...