Jerry的WebClient UI 42篇原创文章合集
我要感谢CRM On Premise, 因为在这个产品上做开发让我得以使用WebClient UI框架。有些朋友觉得这个SAP自己发明的基于HTML+ABAP的MVC框架,和现在流行的三驾马车(Angular, React, Vue)相比显得很笨重,也缺少一些他们认为现代UI框架必不可少的一些功能。
这个看法我个人不是完全认同,除了诸如React的Virtual DOM rendering和三驾马车都支持的双向绑定之外,很多这三个框架都支持的功能,SAP WebClient UI勉强说起来也都支持,只是实现得没那么优雅。掌握WebClient UI,除了能帮我们完成日常工作,从开阔工程师的视野来说也是很好的一种方式,毕竟国内几乎每位开发人员都能接触基于HMTL+JavaScript的UI框架,但是WebClient UI则不然。
下面是我在SAP community写的关于WebClient UI的42篇文章列表,按照发布时间罗列。
1. How to quickly locate the source code where a given message is raised in WebClient UI
这篇文章讲述如何通过快速找到UI上看到的错误信息是在哪行ABAP代码抛出来的,方便您排错。

2. A real case: how to open external url ( ABAP webdynpro ) via pop up window in CRM
如何在WebClient UI里通过弹出窗口打开ABAP Webdynpro的页面,用于中央电视台CRM项目

3. how to navigate to ABAP webdynpro page via CRM navigation framework
注意和第二篇文章区分开: 通过这篇文章介绍的方式打开的ABAP Webdynpro是显示在一个新的页面上,而非弹出窗口。

4. Three ways to control the visibility of an assignment block in overview page in web client UI
三种方式控制WebClient UI上某个Assignment block根据运行时某种条件动态地显示或者隐藏
5. 一个奇怪的问题: 用户登录后选择了业务角色后一直显示这个页面,进不去任何应用了。引起这个问题的原因:
6. 缩略图的显示原理
https://blogs.sap.com/2013/12/04/display-thumbnail-in-crm-ui-with-the-help-of-attachment/

7. 在WebClient UI里显示PDF
https://blogs.sap.com/2013/12/17/another-way-to-preview-pdf-in-crm-web-client-ui-with-little-coding/

8. 这个技巧我个人觉得很有用,把WebClient UI运行时产生的错误信息自动存到你指定的Z表里,排错时直接去Z表里找错误信息,省去了很多调试的时间。
https://blogs.sap.com/2013/12/21/how-to-persist-the-ui-exception-so-you-can-view-them-later/
9. WebClient UI和ABAP Webdynpro的性能比较
这是manager交代下来的任务,用于中联重科的CRM项目。

10. 如果在CRM WebClient UI里混用ABAP Webdynpro, 会遇到哪些坑?
SAP官方不推荐用ABAP Webdynpro的技术在CRM里进行二次开发。下面这个文章里介绍了原因 - 两种UI框架有着截然不同的:
session管理
后退按钮的实现
UI configuration的实现
Data loss的实现
消息显示的UI区域设计
https://blogs.sap.com/2014/01/08/issue-lists-of-using-abap-webdynpro-in-crm-ui/
11. WebClient UI的delta handling
又一个诡异的问题,这个问题最后是托我的同事到SAP德国找到一个WebClient UI专家才最终弄明白。
https://blogs.sap.com/2014/01/19/automatic-delta-handling-in-webclient-ui/
12. "超时消息"并非真正是你的会话超时了
有时您在UI上做了一些操作,您会立即看到这个会话超时的提示,然而实际上这个页面是一个提示,往往意味着后台ABAP的应用里执行出了某些错误,这些错误被WebClient UI框架捕获到,然后执行一个通用的错误处理分支:显示该超时提示页面。

13. 我自己写的一个小工具,方便我调试用的。文章里有介绍其具体用途。
https://blogs.sap.com/2014/03/03/a-small-component-repository-parse-tool-and-its-usage/
14. WebClient UI 框架原理性介绍
UI configuration的determine逻辑讲解: 介绍当您点了F2之后,这些显示信息的由来

https://blogs.sap.com/2014/03/07/ui-configuration-determination-logic-introduction/
文本的determine逻辑:

https://blogs.sap.com/2014/03/07/ui-text-label-determination-logic/
15. Webclient UI Switch related processing
介绍了这两个switch背后的故事:

https://blogs.sap.com/2014/03/08/webclient-ui-switch-related-processing/
16. 一个具体的排错分享
我在WebClient UI的开发里已经完成了工具栏的绘制,但是最终显示的UI上看不到工具栏显示。如何通过自己debug找到哪里出了问题?

https://blogs.sap.com/2014/04/24/how-to-investigate-bsp-tag-issue-by-yourself/
17. 如何处理白屏问题
有时我们在WebClient UI上操作,然后就白屏了。如何找到线索?

https://blogs.sap.com/2014/05/13/another-small-tip-to-deal-with-empty-screen-issue/
18. WebClient UI源码搜索工具
为提高我工作效率而写的, 因为RS_ABAP_SOURCE_SCAN不支持搜索WebClient UI组件里包含的ABAP代码。
https://blogs.sap.com/2014/05/26/webclient-ui-source-code-search-tool/
19. 下拉菜单的排错
为什么这个下拉菜单里一个可选项也没有?

https://blogs.sap.com/2014/06/18/dropdown-list-issue-in-crm-webclient-ui-a-very-funny-trouble-shooting-process/
20. 一次WebClient UI里的AJAX尝试
21. WebClient UI里同时上传多个附件的尝试
在2014年的时候,WebClient UI还没有这个功能,所以我做了一个原型:
https://blogs.sap.com/2014/08/23/attachment-multiple-upload/
22. 使用您喜欢的文本编辑器进行WebClient UI
比较冷门,可能也没什么实际用处,但是证明了SAPGUI的flexibility(灵活性)
https://blogs.sap.com/2014/12/05/use-notepad-to-edit-your-webclient-ui-component-view/

23. 一个案例: Chrome development tool如何用在WebClient UI问题的排错
https://blogs.sap.com/2016/06/17/how-webui-passes-table-selected-row-information-to-abap-backend/
24. 每个BSP应用的字节大小
这个需求是一个德国同事提给我的,我写了一个工具来计算:
https://blogs.sap.com/2016/06/17/a-simple-tool-to-calculate-the-total-size-of-a-bsp-application/
25. 使用增强工具创建的扩展字段(extension field)是如何被WebClient UI绘制出来的。比如下面这种字段:

https://blogs.sap.com/2016/12/22/how-extension-field-created-by-aet-is-rendered-in-web-client-ui/
26. WebClient UI扩展字段的原理讲解
https://blogs.sap.com/2014/02/21/insight-into-calculated-fields-created-by-aet/
27. 用ABAP代码给WebClient UI扩展字段添加自定义行为
https://blogs.sap.com/2017/01/11/define-your-extension-field-with-custom-behavior-in-aet/
28. 如何创建下下拉列表类型的WebClient UI扩展字段

https://blogs.sap.com/2017/01/12/create-extension-field-with-type-code-list-via-aet/
29. 自己写的小工具: 能快速找出一些WebClient UI component, 这些component里至少包含一个Context node, 绑定到了某个指定名称的Genil model节点, 比如"Product".
我在做CRM Addon的开发时,会有很多这种查找的需求,用工具实现查找能节省大量时间。
https://blogs.sap.com/2017/03/01/repository-information-system-for-webclient-ui-component/
30. 白屏问题的又一分析案例
点击WebClient UI里某个超链接之后,就看到了这个白屏:

https://blogs.sap.com/2017/03/20/an-example-to-analyze-webclient-ui-empty-screen-issue/
31. Fiori and CRM WebClient UI – Stateless and Stateful, but how?
https://blogs.sap.com/2017/03/30/fiori-and-crm-webclient-ui-stateless-and-stateful-but-how/
32. Stateless and Stateful – Different behavior in application side
介绍这个选择字段选中和取消会有什么不同的效果:

https://blogs.sap.com/2017/03/31/stateless-and-stateful-different-behavior-in-application-side/
33. 在WebClient UI里显示PDF的又一种做法
https://blogs.sap.com/2017/05/01/add-table-line-item-preview-functionality-in-webclient-ui/
34. 将WebClient UI里的表格导出成PDF
如图:

https://blogs.sap.com/2017/05/03/export-webclient-ui-table-to-pdf/
35. 介绍WebClient UI的会话重启实现原理, 讲述这个Memory Threshold字段背后的故事

https://blogs.sap.com/2017/05/24/webui-session-restart-logic/
36. 在WebClient UI里显示带动画效果的倒数计时
如图:

https://blogs.sap.com/2017/05/27/dipslay-count-down-in-webclient-ui/
37. 自开发的WebClient UI 仓库信息系统(Repository Information System)
SE80里的仓库信息系统不支持WebClient UI的查询, 我自己写了一个,至少能满足我自己项目的需要。
38. 介绍WebClient UI workbench里Context node的属性文件夹下面这些字段具体是从哪里带出来的

https://blogs.sap.com/2017/08/21/the-logic-how-the-field-list-under-attributes-folder-is-populated/
39. 通过transaction launcher把ABAP Webdynpro UI嵌入到WebClient UI里

40. 如何实现one hit navigation
我不知道怎么把这个概念译成中文,其行为就是:如果搜索的结果只有一条记录,会自动进入这条记录的明细界面,而不会停留在搜索结果的UI上。
https://blogs.sap.com/2017/10/14/how-to-implement-one-hit-navigation/
41. 如何用WebClient UI的增强工具AET创建表格类型的增强字段

42. WebClient UI, Fiori和Cloud for Customer的Direct Navigation(直接导航)实现讲解
https://blogs.sap.com/2017/11/05/direct-navigation-in-crm-webui-crm-fiori-and-c4c/
43. WebClient UI和Cloud for Customer里表格宽度自定义的实现原理讲解

https://blogs.sap.com/2017/11/21/how-table-column-resize-works-in-crm-and-cloud-for-customer/
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:


Jerry的WebClient UI 42篇原创文章合集的更多相关文章
- SAP成都研究院2018年总共87篇技术文章合集
2018年很快就要结束了.Jerry在2017年年底准备开始写这个公众号时,给自己定的目标是:2018年至少保证每周发布一篇高质量的文章.如今2018年就快过去了,高质量与否需要大家来反馈,至少从量上 ...
- Jerry的Fiori原创文章合集
我曾经于2014年10月到2016年5月工作于SAP CRM Fiori应用的开发团队, 我所在的团队负责下列这8个Fiori应用的维护和持续开发: My Opportunities My Tasks ...
- dotnet 从入门到放弃的 500 篇文章合集
本文是记录我从入门到放弃写的博客 博客包括 C#.WPF.UWP.dotnet core .git 和 VisualStudio 和一些算法,所有博客使用 docx 保存 下载:dotnet 从入门到 ...
- Android 文章合集 200+ 篇
code小生 一个专注大前端领域的技术平台 公众号回复Android加入安卓技术群 镇楼 2017 文章合集 2017 年度文章分类整理 下面是 2018 年公众号所发表的文章分类整理 面经 一年经验 ...
- [原创]Machine Learning/机器学习 文章合集
转载请注明出处:https://www.codelast.com/ ➤ 用人话解释机器学习中的Logistic Regression(逻辑回归) ➤ 如何防止softmax函数上溢出(overflow ...
- 2018-8-10-dotnet-从入门到放弃的-500-篇文章合集
title author date CreateTime categories dotnet 从入门到放弃的 500 篇文章合集 lindexi 2018-08-10 19:16:52 +0800 2 ...
- php大力力 [025节] 来不及学习和分类的,大力力认为有价值的一些技术文章合集(大力力二叔公)(2015-08-27)
php大力力 [025节] 来不及学习和分类的,大力力认为有价值的一些技术文章合集(大力力二叔公)(2015-08-27) 比较好的模版 免费模板网,提供大量DIV+CSS布局网页模板下载及后台管理 ...
- .Net 2014 Connect() 相关文章合集
微软在11月中旬的Connect()研讨会中公布了一系列 2015年的发展规划,今天在MSDN Blog上看到了一篇比较全的相关文章合集,这里转录一下,感兴趣的朋友可以看看. Announcement ...
- SpringBoot文章合集
SpringBoot文章合集 SpringBoot合集为<尚硅谷雷神SpringBoot2零基础入门(spring boot2)>的学习以及项目中使用知识点进行整理. SpringBoot ...
随机推荐
- Oracle "set define off" 关闭替代变量功能
set define off关闭替代变量功能 在SQL*Plus中默认的"&"表示替代变量,也就是说,只要在命令中出现该符号,SQL*Plus就会要你输入替代值.这就意味着 ...
- Q859 亲密字符串
给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true :否则返回 false . 示例 1: 输入: A = "ab& ...
- RMQ、POJ3264
这里说几篇博客,建议从上到下看 https://blog.csdn.net/qq_31759205/article/details/75008659 https://blog.csdn.net/sgh ...
- Flutter FormatException: Bad UTF-8 encoding 0xc3 (at offset 172)
是文件编码问题. 1,打开 Android Studio 进入设置界面 Ctrl + Alt + S 或 File --> Settings 打开如下界面: 2,将 Project Encode ...
- Knime读取Jason数据
Knime ETL 工具 Jason数据解析到DB 1. 下面例子是一段Jason代码 [{,,},{,,},{,,}] 2. 用文本文件存储上面代码. test_jason.txt 3. 用File ...
- 97 条 Linux 运维工程师常用命令总结[转]
1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出 ...
- Linux Nginx环境安装配置redmine3.1
作者博文地址:https://www.cnblogs.com/liu-shuai/ 环境: CentOS-6.5+Nginx-1.8.0+Redmine-3.1.1+Ruby-2.0 1.配置环境 1 ...
- 如何在vue && webpack 项目中的单文件组件中引入css
引入方式很简单,就是在script下使用require()即可. 因为import 是import...from 的形式,所以是不需要的. <script> import {mapStat ...
- Linux Tomcat 80端口 Port 80 required by Tomcat v8.5 Server at localhost is already in use.
Port 80 required by Tomcat v8.5 Server at localhost is already in use. The server may already be run ...
- IE6,IE7,IE8 css bug搜集及浏览器兼容性问题解决方法汇总
断断续续的在开发过程中收集了好多的bug以及其解决的办法,都在这个文章里面记录下来了!希望以后解决类似问题的时候能够快速解决,也希望大家能在留言里面跟进自己发现的ie6 7 8bug和解决办法! 1: ...
