CDS视图:获取会话语言文本/描述的正确方法是什么

2020-08-25 17:10发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我正在编写CDS视图,并...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在编写CDS视图,并希望引入与代码关联的文本描述,但是我遇到了许多不同的方法来以会话语言获取这些描述。 是其中的任何一种"正确"方法吗?

例如,这是一个CDS视图,该视图带回一个会计科目表代码及其描述:

定义视图ZTEXT_TEST1
   从t004中选择
   将[0 .. *]与I_ChartOfAccountsText关联为_Text
     在$ projection.ChartOfAccounts = _Text.ChartOfAccounts
 {
   关键ktopl为ChartOfAccounts,
       _Text.ChartOfAccountsName
 }
 哪里
   ktopl ='0MB1'
 

这显然会带回表T004T中维护的每种语言文本的记录,这不是我想要的

因此,为了只获取一个文本,我可以将会话语言放入关联中(这与在ABAP中进行编码的方式类似):

将[0 .. *]与I_ChartOfAccountsText关联为_Text
     在$ projection.ChartOfAccounts = _Text.ChartOfAccounts
     和_Text.Language = $ session.system_language
 

或者我可以在路径表达式上放置一个过滤器:

 {
   关键ktopl为ChartOfAccounts,
       _Text [1:Language = $ session.system_language] .ChartOfAccountsName
 }
 

我还没有找到将语言限制放在WHERE子句中的方法,因为它返回了以下错误(我不太了解!):

其中
   ktopl ='0MB1'
   和_Text.Language = $ session.system_language

 此处不允许"到很多"关联(基数[n .. *])

这些方法中有没有一种是标准的方法,还是有我不知道的更好的方法?

谢谢,
安德鲁

付费偷看设置
发送
2条回答
昵称总是被占用
1楼-- · 2020-08-25 18:04

您好安德鲁·福特汉姆(Andrew Fordham)

我已经在大多数标准CDS中使用 第一种方法(基于条件)。 但是您可以尝试使用 vizplan 看看是否第一种方法和 第二种方法使用 vizplan 可以对性能进行任何重大更改。 对我而言,第二种方法不是很容易理解,因此更喜欢第一种。 我们通常使用第二种方法直接显示关联字段,并且不通过其内部的过滤器。

但这对我来说是一个新的学习,因为有了你。 谢谢:)

关于where条件方法,我相信它将与Joins一起使用,并且不确定是否可以与关联一起使用,不确定该错误。 您是否在1..1关联上尝试过这种方法? 因为当我尝试时,它没有给出错误并且执行了它,但是它没有过滤数据,所以我假设这种情况下添加了关联过滤器,而这种情况根本不支持条件

谢谢,

Mahesh

南山jay
2楼-- · 2020-08-25 17:57

感谢Mahesh。 似乎没有明确的答案。 也许我来看看ST05,看看是否有什么不同。

一周热门 更多>