cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Retrieving the highest PurchaseOrderItem from CDS view

えq
Newcomer
0 Likes
269

SAPでカスタムCDSビューを作成しています。
I_PurchaseOrderItemビューからPurchaseOrderItemフィールドの最大値を取得したい。
ただし、PurchaseOrderItem は文字列フィールド ("00010"、"00020" など) であり、数値フィールドではないため、MAX 関数の使用は期待どおりに機能しません。
MAX 関数または同様の集計を CDS ビューの文字列型フィールドに適用して、最大値を取得するにはどうすればよいですか?

Accepted Solutions (0)

Answers (1)

Answers (1)

Chris1973
Active Contributor
0 Likes

Machine Translation:

你好 @えq 

在SAP S/4HANA云公共版中的自定义CDS视图里,PurchaseOrderItem字段是字符串类型(例如“00010”、“00020”),因此直接使用MAX()函数会将其视为文本字符串而非数字。这导致计算出的最大值可能与预期数值不符。

解决方案:

聚合前转换为整数

在自定义CDS视图中,可使用如下表达式:

CAST( PurchaseOrderItem AS abap.int4 )

随后对转换后的数值字段应用MAX()函数。

此方式将“00020”视为20而非字符串。

使用语义数据源

若自定义CDS视图基于已发布的数据源I_PurchaseOrderItem,可创建关联或投影,通过计算字段将PurchaseOrderItem转换为整数。

随后在聚合节点中使用该计算字段。

自定义CDS视图应用程序的替代方案(关键用户)

在自定义CDS视图Fiori应用中,无法自由编写CAST语句。

替代方案:创建计算字段:

数据类型:整数
表达式:字符串转数值(如NUMC或Integer)
在聚合操作(MAX)中使用该计算字段。

此致
Chris