目录一、CDS创建步骤二、CDS相关语法1.数字金额字段需带单位/货币参考2.CAST语法括号内参考必须为SAP内数据元素3. CDS内去重复项group by4.CASE条件判断5.concat 语法字段拼接6.系统相关字段7.左截取/右截取8.自定义文本字段标注9.SUM聚合10. UNION ALL合并结果集11.LPAD RPAD 核心语法同源不同向1. 统一基础语法2. 核心规则两者通用一、CDS创建步骤1.进入 ABAP Development Tools (ADT)在 Eclipse 环境中打开 ABAP Development Tools (ADT)选择对应的包。2.将 CDS 创建到对应的模块包下在模块包下创建新的 CDS 视图。选择适合的模块包并确保它符合项目的命名和结构规范。3.需要写一个FICO模块的CDS右键点击选择New - Data Definition来创建新的 CDS 视图并选择合适的类型选下图类型4.输入 CDS 代码编写 CDS 视图的 SQL 代码使用合适的 SQL 语法并结合 SAP 中的相关数据元素来定义数据集。二、CDS相关语法CDS 视图使用专门的语法来定义数据视图。以下是一些常见的 CDS 语法和用法1.数字金额字段需带单位/货币参考在 CDS 中当处理金额字段时应该使用Semantics.amount.currencyCode或Semantics.quantity.unitOfMeasure注解确保金额与相应的单位或货币代码相关联。a.erfme, Semantics.quantity.unitOfMeasure: ERFME a.menge, a.waers, Semantics.amount.currencyCode: WAERS a.dmbtrSemantics.quantity.unitOfMeasure为字段指定单位。Semantics.amount.currencyCode为金额字段指定货币。2.CAST语法括号内参考必须为SAP内数据元素在 CDS 中使用CAST时括号内的参考字段必须是 SAP 内的数据元素确保数据类型正确。Semantics.amount.currencyCode: WAERScast( sum( A.stval A.prd A.kdm ) as ml4h_stval ) as ZSJCB3. CDS内去重复项group by使用GROUP BY语法去除重复项通常用于聚合计算4.CASE条件判断CASE用于根据条件判断返回不同的值。它类似于 SQL 中的CASE语句适用于复杂的数据条件计算。CASE WHEN amount 100 THEN High WHEN amount 100 THEN Low ELSE Unknown END AS amount_category5.concat 语法字段拼接CONCAT用于将多个字段拼接成一个字符串。可以使用两种方式进行拼接单个拼接和多重拼接。I.poper concat( 0,L.lfmon )concat( concat (L.name1, L.name2) , L.name3 ) as name, 双重拼接第一种方式为给lfmon字段前加一个 0。第二种方式通过双重拼接将name1,name2, 和name3拼接成一个完整的名字。6.系统相关字段在 CDS 视图中可以使用系统相关字段来获取当前会话的系统语言、日期等信息。G.spras $session.system_language 系统语言d.datab $session.system_date系统时间$session.system_language获取系统语言。$session.system_date获取系统当前日期7.左截取/右截取使用LEFT和RIGHT函数对字段值进行截取通常用于处理日期、时间和编号字段年度 left( A.jahrper, 4 )月份 right( A.jahrper, 3 )LEFT(A.jahrper, 4)取字段jahrper的前四位年度。RIGHT(A.jahrper, 3)取字段jahrper的后三位月份。8.自定义文本字段标注使用 Semantics.text 注解标记某个字段为文本字段。这样字段就被视为描述性文本。Semantics.text: true9.SUM聚合使用 SUM 聚合函数计算数值字段的总和。通常与 GROUP BY 一起使用用于汇总数据。10. UNION ALL合并结果集UNION ALL用于将多个查询结果合并成一个结果集。它会返回所有记录包括重复的记录。UNION ALL将ztable1和ztable2的结果合并返回所有记录包括重复记录。11.LPAD RPAD 核心语法同源不同向LPAD和RPAD是 ABAP 中一对 “对称函数”核心逻辑完全一致仅填充方向不同LPADLeft Pad在字符串左侧填充指定字符直到达到目标长度RPADRight Pad在字符串右侧填充指定字符直到达到目标长度。1. 统一基础语法 LPAD 语法 LPAD( val 待处理值 len 目标总长度 pad 填充字符 ) RPAD 语法 RPAD( val 待处理值 len 目标总长度 pad 填充字符 )2. 核心规则两者通用若原始值长度≥目标长度直接截断LPAD/RPAD 均截断右侧字符若原始值长度目标长度按方向填充指定字符至目标长度填充字符仅支持单个字符若传入多字符如00仅取第一个字符生效。DATA: gv_original TYPE string VALUE 5010200033, gv_amt1 TYPE string VALUE 123, gv_result1 TYPE string, gv_result2 TYPE string. LPAD最典型的场景是 “补前导零”—— 将短编码补成固定长度的标准化编码如物料号、客户号、订单号。 gv_result1 LPAD( gv_original ,18,0 ). 输出结果000000005010200033 “RPAD常用于 “补后导零”“文本右补空格对齐”“固定长度编码补位” 等场景。 gv_result2 RPAD(|{ gv_amt1 }.| , 5 ,0). 输出结果 123.00总结CDS 视图为 ABAP 开发者提供了一种强大的数据查询和处理方式。通过理解和应用 CDS 的语法特性如字段拼接、聚合函数、条件判断等开发者可以高效地创建复杂的视图和报告满足不同的业务需求。在实际应用中开发者应根据需求选择适当的语法和方法如聚合、截取、拼接等以提升数据处理的灵活性和可维护性。希望本篇博客能帮助您更好地理解 SAP CDS 的基本操作及常见语法提升您的开发效率