ABAP CDS 笔记

文章目录

  • 1.什么是abap cds
    • adap cds的优点
  • 2.常用cds语法
    • 常用函数
    • 一 数值函数
      • 1.绝对值
      • 2. 最小整数不小于arg的值
      • 3.两个参数相除
      • 4.两个数相除切保留小数位
      • 5.最小整数不大于arg的值
      • 6.取除数的余数
    • 二 字符串函数
      • 1.拼接字符
      • 2.替换字符
      • 3.截取字符串
    • 三 常用的分支语句
      • 1.CASE 表达式
      • 2.IF 表达式
  • 3.cds 语法演示
    • 1.汇总
    • 2.字符串截取
    • 3.CASE 语句
    • 4.case / coalesce()
    • 5.除法计算
    • 7.添加过滤条件

1.什么是abap cds

ABAP CDS(Core Data Services)是一种数据建模语言,用于定义和管理数据模型和服务。它提供了一种简单而强大的方式来定义数据结构、关联和业务逻辑,并且可以与数据库无缝集成。ABAP CDS可以用于创建适用于SAP HANA数据库的数据模型,也可以用于创建适用于SAP S/4HANA和其他SAP应用程序的数据服务。它还可以与ABAP程序和其他SAP技术进行集成,为开发人员提供了更多的灵活性和功能。ABAP CDS是SAP的一种推荐的数据建模和服务定义语言,被广泛应用于SAP系统和应用程序的开发中。(来自gpt-3.5)

adap cds的优点

1.可以利用DDIC语义进行高级数据模型定义;
2.内置了各种SQL函数和表达式进行数据的处理;
3.cds表函数利用本地 SAP hana特性和功能;

2.常用cds语法

常用函数

Aggregation Functions: SUM, AVG, MIN, MAX, COUNT 等用于对数据进行聚合计算的函数。String Functions: CONCAT, SUBSTRING, REPLACE, TRANSLATE 等用于处理字符串的函数。Date and Time Functions: CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP 等用于处理日期和时间的函数。Mathematical Functions: ROUND, CEIL, FLOOR, ABS 等用于数学运算的函数。Conditional Functions: CASE, COALESCE, NULLIF 等用于条件判断的函数。

一 数值函数

1.绝对值

ABS(arg1)

2. 最小整数不小于arg的值

CEIL(arg1)

3.两个参数相除

arg1 除以 arg2 的整数部分 在金额除以后分配符号;如果参数具有相同的符号,则为正数,如果参数具有不同的符号,则为负数。异常:arg2 的值为 0。

DIV(arg1,arg2)

4.两个数相除切保留小数位

arg1/arg2 保留 dec位小数;相除的结果是四舍五入的 ,dec必须是是int类型的

DIVISION(arg1, arg2, dec)

5.最小整数不大于arg的值

FLOOR(arg)

6.取除数的余数

arg1/arg2 的余数

例如 10 / 4 = 2.5

MOD(arg1, arg2)mod(10 , 4) = 5

二 字符串函数

1.拼接字符

CONCAT(arg1, arg2)

2.替换字符

字符串 arg1,其中 arg2 的所有实例都替换为 arg3 中的内容。字母的替换区分大小写。

REPLACE(arg1, arg2, arg3)例如:arg1 = 'abcd1234'.arg2 = 'cd'.arg3 = '00'
REPLACE(arg1, arg2, arg3) = 'ab001234'	

3.截取字符串

截取arg字符串从pos开始取len个字符

SUBSTRING(arg, pos, len)例如:arg = '1234567890'.SUBSTRING(arg, 2, 5) = '23456' .	

在使用函数或分支语句的时候 需要给 他一个别名

三 常用的分支语句

1.CASE 表达式

类似于SQL中的CASE语句,可以根据不同条件执行不同的逻辑。

写法一:
CASEWHEN condition1 THEN result1WHEN condition2 THEN result2ELSE result3
END.
写法2:
CASE argWHEN 'A' THEN result1WHEN 'B'  THEN result2ELSE result3
END.

2.IF 表达式

用于执行简单的条件判断。

IF condition.statement1.
ELSE.statement2.
END.

3.cds 语法演示

1.汇总

sum(_m.stock_qty) as menge

2.字符串截取

取a.prodh 从 第一个字符到 第五字符的值

a.prodh = 'abcdefg123456'
substring(a.prodh,1,5) as prodh2结果:
prodh2 = 'abcef'

3.CASE 语句

  case _ekko.bsartwhen 'Z006' then _ekpo.menge * -1 when 'Z008' then _ekpo.menge * -1 else _ekpo.menge  end as emenge,

4.case / coalesce()

如果为z006/z008 menge * -1 - p.menge

否则 menge - p.menge

  case when _ekko.bsart = 'Z006' or _ekko.bsart = 'Z008' then  coalesce(_ekpo.menge * -1,0) - coalesce(_ekbe.menge,0)else  coalesce( _ekpo.menge,0) - coalesce(_ekbe.menge,0)  end as menge_diff 

5.除法计算

division(A,B,3) : A / B 保留三位小数

division(_d.labst ,_mr.umrez,3) * _mr.umren
  1. 复核处理case/division/coalesce
 case when _ekko.bsart = 'Z006' or _ekko.bsart = 'Z008' then  division( coalesce(_ekpo.menge * -1,0) - coalesce(_ekbe.menge,0) ,_marm.umren ,3) *  _marm.umrez else   division( coalesce( _ekpo.menge,0) - coalesce(_ekbe.menge,0) ,_marm.umren,3) *  _marm.umrez  end as menge_tran 

7.添加过滤条件

define view zbv_stka_eb_ddl with parameters "条件p_date : datum as select from matdoc as _minner join ZBV_MARA_CO as _a on _a.matnr = _m.matnr
{_m.werks,substring(_a.prodh,1,5) as prodh2,sum(_m.stock_qty) as menge
}where _m.budat <= $parameters.p_date "条件
group by_m.werks,
having sum(_m.stock_qty) <> 0  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

19. 从零用Rust编写正反向代理, 配置数据的热更新原理及实现

wmproxy wmproxy是由Rust编写&#xff0c;已实现http/https代理&#xff0c;socks5代理&#xff0c; 反向代理&#xff0c;静态文件服务器&#xff0c;内网穿透&#xff0c;配置热更新等&#xff0c; 后续将实现websocket代理等&#xff0c;同时会将实现过程分享出来&#xff…

探索 Java 8 中的 Stream 流:构建流的多种方式

目录 前言 什么是 Stream 流&#xff1f; 创建 Stream 流 1. 从集合创建 Stream 2. 从数组创建 Stream 3. 使用 Stream.of 创建 Stream 4. 使用 Stream.generate 创建 Stream 5. 使用 Stream.iterate 创建 Stream Stream 流的操作 1. 过滤数据 2. 映射数据 …

01 ZigBee开发环境IAR搭建

链接&#xff1a;https://pan.baidu.com/s/18l8z9qajPBj2X5WzgjT0TA?pwd41qc 提取码&#xff1a;41qc 注意&#xff1a;安装包和注册机都要右击用管理员权限打开&#xff0c;安装过程中关闭杀毒软件&#xff08;否则后续程序不行&#xff09; 安装IAR-8051 以管理员身份运行E…

鸿蒙开发已解决-arkts编译报错-arkts-limited-stdlib错误

文章目录 项目场景:问题描述原因分析:解决方案:适配指导案例此Bug解决方案总结项目场景: arkts编译报错-arkts-limited-stdlib错误。 我用Deveco studio4.0 beta2开发应用,报arkts-limited-stdlib错误 报错内容为: ERROR: ArKTS:ERROR File: D:/prRevivw/3792lapplica…

行列式的计算

1、基本性质&#xff1a; 1&#xff09;行列式转置相等 2&#xff09;任意两行&#xff08;列&#xff09;成比例&#xff0c;行列式为0 3&#xff09;对换任意某两行&#xff08;列&#xff09;&#xff0c;行列式变号 4&#xff09;某一行&#xff08;列&#xff09;乘某…

Ubuntu下VsCode+CMake 交叉编译

参考连接&#xff1a; Ubuntu下VsCodeCMake 交叉编译 VSCode与CMake搭配使用之基本配置 VSCode与CMake搭配使用之交叉编译 step1: CtrlShiftp打开VSCode的指令面板&#xff0c;然后输入cmake:q ; 在窗口搜索&#xff1a;“ >CMake:Edit user-loacl CMake kits ”会打开一个…

SpringBoot集成阿里云短信实现发送短信验证码

SpringBoot集成阿里云短信实现发送短信验证码 一、准备工作1、注册账号2、申请资质3、申请签名4、创建模板 二、springboot集成发送短信1、引入依赖2、编写短信配置文件3、编写短信发送工具类 一、准备工作 在使用springboot集成短信服务之前&#xff0c;需要先注册阿里云的账…

VMware vSphere运维管理手册

适用版本:VMware vSphere 7.0 VMware vSphere 是 VMware 的虚拟化平台,可将数据中心转换为包括 CPU、存储和网络资源的聚合计算基础架构。vSphere 将这些基础架构作为一个统一的运行环境进行管理,并为您提供工具来管理加入该环境的数据中心。 ![[Pasted image 20231212132…

uni-app的学习【第二节】

四 路由配置及页面跳转 (1)路由配置 uni-app页面路由全部交给框架统一管理,需要在pages.json里配置每个路由页面的路径以及页面样式(类似小程序在app.json中配置页面路由) (2)路由跳转 uni-app有两种页面路由跳转方式:使用navigator组件跳转(标签式导航)、调用API跳…

使用Markdown编辑器

使用Markdown编辑器 本Markdown编辑器使用[StackEdit][6]修改而来&#xff0c;用它写博客&#xff0c;将会带来全新的体验哦&#xff1a; Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的…

比亚迪:从低谷中涅槃,内功造就辉煌

修炼内功才能绽放光芒吗? 比亚迪用自己的奋斗史证明~ 只有经历低谷的洗礼&#xff0c;才能铸就属于自己的辉煌。 比亚迪这家公司的发展历程可谓是一部从战略转型到今天这个行业翘楚的奋斗史&#xff0c;真是跌宕起伏令人唏嘘。早期比亚迪从一个传统企业转型到汽车行业&#xf…

git第一次提交代码到仓库(初始化提交)

要将代码提交到仓库&#xff0c;首先需要初始化一个git仓库。以下是在本地初始化一个新的git仓库的步骤&#xff1a; 打开命令行工具&#xff0c;进入到要初始化git仓库的目录下。 使用以下命令初始化git仓库&#xff1a; git init这将在当前目录下创建一个.git的隐藏文件夹&a…

电源模块常见温升测试方法分享 -纳米软件

温升测试是电器产品安规测试项目之一&#xff0c;是为了检测电器产品及部件的温度变化情况&#xff0c;判断是否符合要求。在设备运行过程中会释放一定的热量&#xff0c;如果内部温度过高会影响产品的性能和稳定性&#xff0c;导致绝缘性能下降&#xff0c;因此温升测试是确保…

ubuntu18.04安装部署环境

部署项目 云服务器放开端口&#xff0c;虚拟机关闭防火墙 # 防火墙状态&#xff0c;如果输出显示 Status: inactive&#xff0c;表示 UFW 处于禁用状态 sudo ufw status# 关闭防火墙 sudo ufw disable# 启动防火墙 sudo ufw enable# 设置防火墙默认策略的命令&#xff0c;将所…

sshpass 命令exit code 6 问题解决方法

近期在使用sshpass做自动化交互的脚本&#xff0c;结果运行命令后会返回错误码6,命令如下&#xff1a; sshpass -p 123456 ssh test192.168.1.100 "uname -a" 经搜索资料发现&#xff0c;错误码6指的是Host public key is unknown&#xff0c;也就是说要访问的地址是…

股东分红模式玩法解析!

股东分红模式股东分红模式是指公司通过向股东支付现金或股票的方式&#xff0c;将公司利润分配给股东的一种方式。不同的股东分红模式有着不同的特点和应用场景。 ​一、模式概述 一个私域电商平台&#xff0c;非常重要的一个角色是“团队长”&#xff0c;尤其是能够带动业绩和…

MoE模型性能还能更上一层楼?一次QLoRA微调实践

Fine-Tuning Mixtral 8x7B with QLoRA&#xff1a;Enhancing Model Performance &#x1f680; 编者按&#xff1a;最近&#xff0c;混合专家(Mixture of Experts,MoE)这种模型设计策略展现出了卓越的语言理解能力&#xff0c;如何在此基础上进一步提升 MoE 模型的性能成为业界…

Win10子系统Ubuntu实战(二)

在 Windows 10 中安装 Ubuntu 子系统&#xff08;Windows Subsystem for Linux&#xff0c;简称 WSL&#xff09;有几个主要的用途和好处&#xff1a;Linux 环境的支持、跨平台开发、命令行工具、测试和验证、教育用途。总体而言&#xff0c;WSL 提供了一种将 Windows 和 Linux…

使用python执行系统命令的五种方式

在日常开发中&#xff0c;有时需要在Python脚本中执行系统命令&#xff0c;Python有五种方式来执行系统命令&#xff0c;推荐使用第五种。 python执行系统命令的五种方式 方法1: os.system 这是最简单的方法&#xff0c;适合简单的业务场景&#xff0c;输入为完整命令字符串…

【IP-Adapter】进阶 - 同款人物【2】 ☑

测试模型&#xff1a;###最爱的模型\flat2DAnimerge_v30_2.safetensors [b2c93e7a89] 原图&#xff1a; 加入 control1 [IP-Adapter] 加入 control 2 [OpenPose] 通过openpose骨骼图修改人物动作。 加入 control 3 lineart 加入cotrol3 …