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.添加过滤条件

eclipse ADT安装及abap cds模版创建
https://blog.csdn.net/weixin_49198221/article/details/135545378?spm=1001.2014.3001.5501

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/616103.shtml

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

相关文章

亚马逊API:快速查询全球商品数据的技巧!

了解亚马逊API的限制和要求&#xff1a;在使用亚马逊API之前&#xff0c;您需要了解其限制和要求&#xff0c;例如请求频率限制、认证要求等。确保您遵循了API的使用条款&#xff0c;以避免不必要的麻烦。使用合适的亚马逊API服务&#xff1a;亚马逊提供了多个API服务&#xff…

Linux的SSH密钥认证快捷配置

本文适用&#xff1a;rhel5-9系列&#xff0c;同类系统(CentOS,AlmaLinux,RockyLinux等)、debian系(ubuntu)等也可参照 文档形成时期&#xff1a;2012-2024年 因系统版本不同&#xff0c;配置应略有差异&#xff0c;本文没有在细节上区分&#xff0c;但实践中发现均可配置成功 …

Linux实用命令

文章目录 一.系统与设置命令1. Linux的用户与用户组2.当前用户的详细信息 id3.提高普通用户的权限sudo4.实时显示进程的信息 top5.查看进程信息ps6.杀死进程kill7.关机重启8.显示当前登陆系统的用户who9.校正服务器时间,时区 timedatectl10.清屏命令clear 二.目录管理1.ls列出目…

Atlassian版本选择趋势是上云还是本地部署?全面分析两个版本的特性

近日&#xff0c;龙智联合Atlassian举办的DevSecOps研讨会年终专场”趋势展望与实战探讨&#xff1a;如何打好DevOps基础、赋能创新”在上海圆满落幕。龙智Atlassian技术与顾问咨询团队&#xff0c;以及清晖、JamaSoftware、CloudBees等生态伙伴的嘉宾发表了主题演讲&#xff0…

flutter封装dio请求库,让我们做前端的同学可以轻松上手使用,仿照axios的使用封装

dio是一个非常强大的网络请求库&#xff0c;可以支持发送各种网络请求&#xff0c;就像axios一样灵活强大&#xff0c;但是官网没有做一个demo示例&#xff0c;所以前端同学使用起来还是有点费劲&#xff0c;所以就想在这里封装一下&#xff0c;方便前端同学使用。 官网地址&a…

uniapp开发安卓应用微信开放平台创建应用如何获取签名

微信开放平台创建应用时需要应用的签名 比如我们开发了一个应用叫 “滴滴拉屎” 包名&#xff1a;uni.DIDILASHI #mermaid-svg-BUKbltDr30J93dUs {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-BUKbltDr30J93dUs .…

直播带货2024:洗牌、阵痛和暗流涌动

文 | 螳螂观察 作者 | 青月 一天前&#xff0c;大学生齐夏根本不会在直播间购买《额尔古纳河右岸》这种书籍。 她是喜欢看小说&#xff0c;但只钟爱悬疑无限流题材&#xff0c;至于《额尔古纳河右岸》这种讲述一个弱小民族顽强的抗争和优美的爱情的长篇小说&#xff0c;用齐…

设计模式原理与分析

一、设计模式原理与分析 1、概念 设计模式是在软件开发过程中总结得出的一些可重用的解决方案&#xff0c;它能解决一些实际的问题。一些常见的模式&#xff0c;比如工厂模式、单例模式等等。 封装、继承、多态只是类的三大特性&#xff0c;在程序设计时并不是说使用到了这三个…

读书笔记--微服务架构

微服务架构 服务网关 客户端与微服务直接通信 GateWay&#xff1a;API 网关是一个服务器&#xff0c;是系统的单入口点。它类似于面向对象设计模式中的门面&#xff08;Facade&#xff09;模式。API 网关封装了内部系统架构&#xff0c;并针对每个客户端提供一个定制 API。它…

vue上传文件加进度条,fake-progress一起使用

el-upload上传过程中加进度条&#xff0c;进度条el-progress配合fake-progress一起使用&#xff0c;效果如下&#xff1a; 安装 npm install fake-progress 在用到的文件里面引用 import Fakeprogress from "fake-progress"; 这个进度条主要是假的进度条&#xff…

轻量级图床Imagewheel本地部署并结合内网穿透实现远程访问

文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

springIoc依赖注入循环依赖三级缓存

springIoc的理解&#xff0c;原理和实现 控制反转&#xff1a; 理论思想&#xff0c;原来的对象是由使用者来进行控制&#xff0c;有了spring之后&#xff0c;可以把整个对象交给spring来帮我们进行管理 依赖注入DI&#xff1a; 依赖注入&#xff0c;把对应的属性的值注入到…

全面解读数据安全法规

数据安全&#xff0c;可以说是近些年的热点&#xff0c;特别是随着大数据、人工智能等信息安全技术的快速发展&#xff0c;数据安全和隐私保护形势日益严峻&#xff0c;网络边界被打破&#xff0c;数据安全问题与日俱增。各国也非常重视数据安全建设&#xff0c;如下图展示的全…

js join方法的使用

JavaScript的join()方法是数组对象的方法之一&#xff0c;用于将数组中的所有元素连接成一个字符串。它可以接受一个可选的参数作为分隔符&#xff0c;用于在每个元素之间进行分隔。 以下是join()方法的基本语法&#xff1a; var newString array.join(separator) 在上述方…

设计模式之避免共享的设计模式 Thread-Specific Storage 模式

系列文章目录 设计模式之避免共享的设计模式Immutability&#xff08;不变性&#xff09;模式 设计模式之并发特定场景下的设计模式 Two-phase Termination&#xff08;两阶段终止&#xff09;模式 设计模式之避免共享的设计模式Copy-on-Write模式 提示&#xff1a;写完文章后…

Android Matrix (三)矩阵组合和应用变换

在 Android 开发中&#xff0c;Matrix 类不仅提供了 mapPoints 方法来变换点坐标&#xff0c;还提供了多种其他用法&#xff0c;使其成为处理图像和视图变换的强大工具。以下是 Matrix 类的一些关键用法&#xff1a; 1. 变换方法 setTranslate(float dx, float dy): 设置矩阵…

Android开发基础(二)

Android开发基础&#xff08;二&#xff09; 上篇主要描述了Android系统架构&#xff0c;代码是通过Java表示的&#xff1b; 本篇将从介绍Android组件去理解Android开发&#xff0c;代码将对Java和Kotlin进行对比。 Android组件 Android应用程序由一些零散的有联系的组件组成…

黑洞数(C语言)

黑洞数也称为陷阱数&#xff0c;又称“Kaprekar问题”&#xff0c;是一类具有奇特转换特性的数。 任何一个各位数字不全相同的三位数&#xff0c;经有限次“重排求差”操作&#xff0c;总会得到495。最后所得的495即为三位黑洞数。所谓“重排求差”操作即组成该数的数字重排后…

element input组件自动失去焦点问题解决

最近在 Vue3 ElementPlus 中&#xff0c;使用 el-input 组件时&#xff0c;如果设置了 v-model&#xff0c;那么在每次改变内容后后&#xff0c;input 会自动失去焦点&#xff0c;这样会导致用户无法输入多个字符。 一、问题原因 如上图所示&#xff0c;配置项的 Name 和 Cod…

算法训练营Day36

#Java #动态规划 开源学习资料 Feeling and experiences&#xff1a; 动态规划&#xff1a;01背包理论基础&#xff1a;卡码网题目链接 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带一些研究材料&#xf…