SAP CRM数据库表CRMD_CUMULAT_H的设计原理
Recently I am working in a project and the prerequisite is to understand how table CRMD_CUMULAT_H works. As I could not find enough material in SCN, I make some self study on it and list my learning in this blog. Let me use one record for example to illustrate how its GROSS WEIGHT 400 KG is determined.
As the table name “cumulate” indicates, certain fields in this table are cumulated. I write a small API to demonstrate the logic, it will generate the same Gross Weight amount: 400
DATA: lt_order_i TYPE TABLE OF crmd_orderadm_i-guid,
lt_product_i TYPE TABLE OF crmd_product_i.
SELECT guid INTO TABLE lt_order_i FROM crmd_orderadm_i
WHERE header = iv_guid.
CHECK sy-subrc = 0.
SELECT guid gross_weight INTO CORRESPONDING FIELDS OF TABLE lt_product_i FROM crmd_product_i
FOR ALL ENTRIES IN lt_order_i WHERE guid = lt_order_i-table_line.
LOOP AT lt_product_i ASSIGNING FIELD-SYMBOL(<product>).
rv_gross_weight = rv_gross_weight + <product>-gross_weight.
ENDLOOP.
In order to better explain the calculation logic, I draw a picture below.
Where is gross weight in CRMD_PRODUCT_I.GROSS_WEIGHT coming from
The next question is: how is the value of field GROSS_WEIGHT in table CRMD_PRODUCT_I populated? When we log on WebClient UI, we can only see the quantity 4 ST in each line item. Why 4 ST of product has gross weight 200 KG?
First get product IMU’s guid from table COMM_PRODUCT:
00163EA71FFC1EE1A7CCADA1477A9164 Then query table COMM_PR_UNIT with this guid, and we can know from there that 1 ST = 50 KG, so 4 ST = 200 KG.
When I change the quantity of first item from 4 to 3,
the updated gross weight ( 3 * 50 = 150 KG ) is persisted to database via update function module:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux下安装maven3.6.2遇到的问题
- Unity3D网络通讯(五)--Socket通讯之Udp通讯
- IP不能作为rocketmq 的topic
- Unity3D网络通讯(六)-- UnityWebRequest实现WebService通讯
- Java Maven编译时没问题,运行时报java.lang.NoSuchMethodError
- 树莓派基础实验34:L298N模块驱动直流电机实验
- The consumer group[PushConsumer] has been created before, specify another name please
- 虚拟机系列 | JVM特点,基础结构与执行周期
- 报错 解决-bash: fork: retry: Resource temporarily unavailable
- 结构与算法(04):排序规则与查找算法
- 手把手教你在 TKE 集群中实现简单的蓝绿发布和灰度发布
- 虚拟机系列 | JVM类加载机制
- 树莓派综合项目2:智能小车(一)四轮驱动
- java 字节流入门(内存数组流->文件流)
- 视频高速上云网关/网络穿透EasyNTS智能组网服务平台ini配置文件丢失如何处理?