如何在CRM和C4C中用代码判断当前是否处于configuration模式

举报
汪子熙 发表于 2022/03/28 17:37:18 2022/03/28
【摘要】 CRMCL_CHTMLB_CONFIG_UTILITY=>IS_CONFIG_MODE_ENABLED返回值为boolean: C4C使用api:sap.client.flex.Personalization.isKeyUser这个api返回的是属性_bIsKeyUser:该属性在菜单Adapt->Enter Master Layout时被置为true:这个KeyUser模式的值会导致发送...

CRM

CL_CHTMLB_CONFIG_UTILITY=>IS_CONFIG_MODE_ENABLED
返回值为boolean:

C4C

使用api:sap.client.flex.Personalization.isKeyUser
这个api返回的是属性_bIsKeyUser:

该属性在菜单Adapt->Enter Master Layout时被置为true:

这个KeyUser模式的值会导致发送到C4C后台的http request头部字段adaptation-mode被设置为X.

ABAP Mesh expression

JavaScript

我在第10行调用了函数f,其中传入的第二个和第三个参数都是一个逗号表达式。
函数f的实现,会检查这两个参数的类型,如果是函数,则执行函数调用,再打印其返回值,否则直接打印传入的表达式的值。

执行上面这段代码,打印输出如下:

我们可以看出,虽然传入的第一个参数为true,导致函数f内部只会打印第二个参数y代表的表达式的值,5,但是第三个参数代表的表达式在函数f调用时,也进行了表达式求值,所以最后console也输出了Big calculation2。
如果我们想实现所谓的“惰性求值”,有时候也称”惰性计算“,那么只需要将原本写在表达式位置的逻辑用一个JavaScript函数包裹起来,如下:

再次调用f,此时传入的参数y和z的类型为函数,因此在f进行调用时,同之前传入的表达式不同,这里并不会即时调用y和z代表的函数。打印输出:

Scala

Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。
Scala 运行在Java虚拟机上,并兼容现有的Java程序。
Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。

下图第5行和第12行我分别定义了两个Scala函数exp_test1和exp_test2, 逻辑和之前的JavaScript函数f类似。
exp_test1接受的第二个和第三个参数类型为exp1 :=> Unit,意思是需要传入一个表达式,这个表达式的返回类型是Unit。
exp_test2接收的第二个和第三个参数类型为exp1() :=> Unit,意思是需要传入一个函数,这个函数没有任何输入参数,函数的返回类型是Unit。

第19行到第25行是对这两个函数的各种测试,打印输出:

可以看到,即使传入两个函数exp_test1和exp_test2的第二个和第三个参数都是表达式,Scala也能做到对表达式的惰性求值:
第19行和第20行的函数调用,第三个参数位置的表达式和函数都没有即时求值,而是惰性求值。
第22行和第23行的函数调用,第二个参数位置的表达式和函数都没有即时求值,而是惰性求值。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。