CRM WebClient UI 和 Hybris Commerce 里的跨组件跳转
在 Hybris Storefront 首页,点了一个产品的图片,系统怎么知道需要load哪个jsp文件来渲染?
之前的issue讨论过,这个点击对应的url,会被Spring MVC map到一个通过@RequestMapping注册的的controller上:
也就是这个controller:
target BSP的url通过这个方法getViewForPage算出来:
算出来是这个:
也就是这个:在product folder下有个同名的.jsp文件:
该jsp渲染结果如下:
打开SAP云平台上的SAP HANA Web-Based Development Workbench超链接:
遇到错误信息:403 - Forbidden - The server refused to fulfill the request.
解决方案
打开SAP HANA Cockpit, 选择OK:
添加下列权限:
(1) sap.hana.admin.roles::Administrator
(2) sap.hana.ide.roles::TraceViewer
(3) sap.hana.ide.roles::SecurityAdmin
之后即可打开。
ABAP里客户做二次开发时,当其business requirement需要新的字段添加到已有数据类型上时,一般采用append structure的方式增强SAP标准的数据类型。
之前说到每个extension都有其local的object, 比如extension specific的data type在resources folder下面的这个XML里定义. XML的naming convention为-items.xml.
对于数据类型的扩展Hybris的思路也类似:
这个例子定义了一个新的数据类型AlipayPaymentTransactionEntry,扩展自PaymentTransactionEntry
黄色区域内的field相当于ABAP里include structure里的field.
像下图里的exporting parameter需要在method 实现最开始时显式CLEAR么?
答案是it depends.
pass by value checkbox默认未选中,即pass by reference,此时实参的reference直接传到method 实现里,修改method里的形参即直接修改了实参。
如果是pass by value,在runtime进入method执行时,abap runtime自动为输入和输出形参创建local object,然后把输入实参的value copy到local object里,method里的计算都存储在输出形参的local object里,method执行结束后再把local object的值copy到输出实参。
在pass by reference的情况下,exporting参数在进入函数内时不会自动被初始化,而仍然为传入时实参的值,因此需要developer 自己负责去初始化,否则可能会出现unexpepected的behavior。
什么时候用pass by reference,什么时候用pass by value?
Pass by reference性能更好,但需要developer自己在实现里初始化exporting parameter
如果期望输出参数仅当method 成功执行之后才返回给caller,用pass by value
如果参数是一个很复杂的structure,比如nested table,或者按照abap help里面的建议值—超过100bytes后最好用pass by reference。
二者更详细的区别参考abap help。
Extended check会自动把所有违反规则的code 列出来,比如CL_CRM_SOC_FND_ACCESS_IMPL 有17处:
这些issue被categorize成programming guideline violation,不会算作ATC error。
- 点赞
- 收藏
- 关注作者
评论(0)