如何计算并测量ABAP及Java代码的环复杂度Cyclomatic complexity

2018-04-06
阅读 2 分钟
2k
代码的环复杂度(Cyclomatic complexity,有的地方又翻译成圈复杂度)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出。

使用ABAP Push Channel(APC)开发的乒乓球游戏,可双打

2018-04-06
阅读 1 分钟
2.4k
url: [链接];host>:<port>/sap/bc/apc_test/ping_pong/game 或者事务码SICF, 输入ping_pong, 按F8: 选中搜索结果,点右键选择Test,即可打开url。 两个玩家分别通过执行report RS_APC_PING_PONG加入游戏。通过Up和Down上下移动球拍。

使用Excel调用ABAP系统的函数

2018-04-06
阅读 2 分钟
1.8k
效果:在excel里创建一个按钮,开发一些VB script,可以连接指定的ABAP系统并执行系统里的ABAP function module。

C4C和CRM里获取当前登录用户分配的Organization Unit信息

2018-04-06
阅读 4 分钟
1.9k
C4C 如何查看某个用户分配的组织单元ID: 在Employee的Organization Data区域内看到分配的组织名称,如下图红色下划线所示: 现在的需求就是使用ABSL获取当前登录用户分配的Organization Unit信息,例如用WANGJERRY37登录,则取出下图显示的Department name PMLS: 具体实现:新建一个custom BO,使用字段DepartmentName...

Association, Composition and Aggregation in UI5, CRM, S/4HANA

2018-04-06
阅读 2 分钟
1.6k
When a ManagedObject is destroyed, all aggregated objects are destroyed as well and the object itself is removed from its parent. That is, aggregations won't contain destroyed objects or null/undefined.

SAP UI5和CRM WebUI的View和Controller是如何绑定的

2018-04-05
阅读 3 分钟
2k
在XML view里只定义了controller的名称和事件处理函数的名称。那么按钮被点击之后,controller的onShowHello被触发。但是,这个controller的实例是什么时候被创建, 并且关联到这个申明它的XML view里呢?

S/4HANA和CRM Fiori应用的搜索分页实现

2018-03-31
阅读 3 分钟
2.4k
在我的博客Paging Implementation in S/4HANA for Customer Management 我介绍了S/4HANA for Customer Management里采用WebClient UI技术实现的UI上的搜索分页实现。

SAP Fiori里的List是如何做到懒加载Lazy load的

2018-03-31
阅读 4 分钟
2.1k
今天一同事问我这个问题:S/4HANA Fiori应用里的列表,一旦Scroll到底部就会自动向后台发起新的请求把更多的数据读取到前台显示。

S/4HANA for Customer Management里的搜索分页处理

2018-03-31
阅读 3 分钟
1.9k
这篇文章的英文版我发在了SAP Community上:Paging Implementation in S/4HANA for Customer Management

SAP S4CRM和C4C的技术比较

2018-03-31
阅读 1 分钟
3.3k
在 SAP 项目实施中,Brownfield 场景是一种迁移策略,尤其用于从 SAP ERP 系统升级到 SAP S/4HANA 的过程中。Brownfield 方法可以理解为“系统转换”模式,它是指在现有系统基础上进行优化和转换,而不是从头开始构建一个全新系统。这种策略可以让企业保留现有的业务流程和系统配置,最大程度地降低业务中断风险,同时利用...

那些年我用过的SAP IDE

2018-03-26
阅读 1 分钟
3.3k
Python 中的 class 体内定义方法时,如果没有显式地包含 self 参数,有时候依然可以被调用。这是一个非常有趣的话题,因为它涉及到对 Python 中类与对象之间关系的更深理解。要理解为什么这种情况下方法依然能够被调用,我们需要逐步拆解 Python 类的构造方式以及方法绑定的原理。

会说话的ABAP report

2018-03-26
阅读 2 分钟
1.8k
{代码...} 用的也是很老的OLE技术: report代码直接call的MS的sound engine,通过sapi.dll暴露出来, 这个report只是call了dll里其中一个speak方法:

如何使用ABSL代码调用Web service

2018-03-26
阅读 3 分钟
2.6k
需求:在C4C UI里创建web service(maintain ticket),然后通过ABSL代码消费。1. 创建一个新的Communication Arrangement

如何给VirtualBox虚拟机的ubuntu LVM分区扩容

2018-03-18
阅读 3 分钟
3.7k
我在VirtualBox安装的ubuntu里安装Cloud Foundry时遇到错误信息,磁盘空间不够了: 使用这三个命令做了清理之后,结果依然不够理想: (1) sudo apt-get autoclean(已卸载软件的安装包) (2) sudo apt-get clean(未卸载软件的安装包) (3) 清理系统不再需要的孤立的软件包。sudo apt-get autoremove 于是我决定将ubuntu...

如何使用Putty登录安装在VirtualBox里的ubuntu

2018-03-18
阅读 2 分钟
3.6k
在VirtualBox里操作ubuntu的终端不是很方便,比如我想在Windows里复制一些命令到ubuntu的终端执行。而Putty默认即可支持这个跨系统的复制粘贴操作。VirtualBox无法调整console里字体大小,而Putty可以很方便的修改console里的字体。

ABAP的语法高亮是如何在浏览器里显示的

2018-03-18
阅读 3 分钟
2.2k
(1). 在浏览器里敲个ABAP的关键字,比如data。发现被高亮了。通过Chrome开发工具发现高亮是通过一个叫ace_keyword的css类实现的。

CRM, C4C和Hybris的工作流简介

2018-03-18
阅读 2 分钟
2.8k
Automatically send an Email notification to line manager via Workflow in Account application)

ABAP宏的调试

2018-03-15
阅读 1 分钟
3.2k
我们都知道高级语言宏一般是无法调试的。但是ABAP的宏例外。 比如我写了下面一段宏,名为insert_table. 执行这段代码,调试器会在第23行停下来。 ABAP调试器里有个工具可以用于宏的调试,如下图: 双击之后,可看到如下调试界面: 按F5即可开始单步调试。 上图的22,23行STRLEN,IF,CHECK就对应了ABAP代码第15行:CHECK...

如何将iso文件安装到VirtualBox里的ubuntu去

2018-03-15
阅读 1 分钟
2.8k
我在Window的virtualbox里安装了一个ubuntu: 默认情况下IDE Secondary Master是空的。 方法1:Devices->Insert Guest Additions CD Image: 成功之后IDE Secondary Master刷新如下: 如下遇到错误VERR_PDM_MEDIA_LOCKED, 可以试试方法2: 方法2:新建一个文件夹 GuestAdditionISO: 使用命令 sudo mount -o loop /usr/sh...

如何在ubuntu上安装virtualbox的driver module vboxdrv

2018-03-14
阅读 2 分钟
3.5k
干净的ubuntu安装完毕之后是没有vboxdrv这个driver module的。 新建一个folder jerry_virtualbox: 使用wget下载virtualbox安装包:[链接] 下载完毕: 使用sudo dpkg -i <package name>安装. 之后apt-get update. 如果遇到Could not get lock /var/lib/apt/lists/lock - open: Resource temporarily unavailable - ...

如何使用腾讯云提供的云主机

2018-03-14
阅读 1 分钟
3.4k
腾讯云网址:[链接] 点击立即前往: 操作系统选择Ubuntu: 选择重置密码: 用户名默认是ubuntu: 下载PuTTY这个远程登录软件,host name输入腾讯云自动分配的IP地址,端口号22: 使用重置之后的用户名和密码即可登陆: 要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

SAPGUI里实现自定义的语法检查

2018-03-14
阅读 1 分钟
2k
如果需要实现SAPGUI里自定义的语法检查,比如,某团队强制要求应用程序类的每个方法的实现代码不能超过100行。如果超过,报下列的警告信息。

ABAP git客户端

2018-03-14
阅读 1 分钟
3.4k
跨模态编码器(Cross-Modal Encoder):跨模态编码器的作用是将文本和图像的特征进行对齐。GPT 可以将用户输入的文本描述转换为文本特征表示,然后利用跨模态编码器将这些特征映射到图像特征空间。这种方式确保模型能够理解描述性语言中不同细节是如何与图像特征对应的。

ABAP和Java里关于DEFAULT(默认)机制的一些语言特性

2018-03-14
阅读 2 分钟
1.7k
由此可见新语法比较简洁,能少写3行代码。但是这样有一个缺陷,在新语法下如果it_data内表内不存在object_ext的值为cl_crm_prodil_bo_names=>gc_prod_root的记录,就会终止程序执行,抛出异常CX_SY_ITAB_LINE_NOT_FOUND.

如何在Chrome development tool里查看C4C前台发送的请求细节

2018-03-11
阅读 1 分钟
1.6k
我们可以在Chrome development tool的network tab里观察到从前台UI发送到后台的HTTP请求: 更多Chrome Development Tool的使用工具请查看我的博客Chrome Development Tool tips used in my daily work 但是直接查看到的是经过gzip之后的内容。如何查看压缩之前的请求体内容呢? 鼠标放在HttpRequest-dbg.js上, 会显示出...

CRM订单状态的Open, In process和Completed这些条目是从哪里来的

2018-03-11
阅读 1 分钟
2k
Service Order的状态字段里的这些字段从哪里带出来的?我们可能会想当然的认为是从后台配的Status profile里带出来的。事实并非如此。

如何证明CRM WebClient UI上的应用是有状态(Stateful)的

2018-03-11
阅读 1 分钟
1.6k
随便找一个在CRM WebClient UI里会被频繁调用到的函数,在函数里创建一个隐式增强,打印当前的会话ID。 不关闭浏览器,在浏览器里不断做操作,可以观察到不管做任何操作,每次断点出发后,打印出来的会话ID都相同。 每次触发打印出的会话ID都相同: 00015255FA163EE40FA21ED6A898F0FA67B01B77

观察者模式在One Order回调函数中的应用

2018-03-11
阅读 2 分钟
1.4k
例如需求是搞清楚function module CRM_PRODUCT_I_A_CHANGE_ORGM_EC在什么样的场景下会被调用。当然最费时间的做法是设一个断点,然后跑对应的场景,观察断点何时被触发。也有另一种不通过调试的分析方法:

如何使用代码获得一个function module的Where Used List

2018-03-10
阅读 1 分钟
2.3k
如果要获得一个function module的Where Used List,我们通常用的办法是使用ABAP workbench里提供的功能。

如何从ERP下载Sales BOM到CRM

2018-03-10
阅读 1 分钟
2.6k
在ERP使用事务码CS01创建一个BOM,类型选择5 - Sales BOM: BOM的抬头维护material 1419,在BOM的component部分维护另外两个material 1421和1422。 保存BOM,会自动生成ID 2974,可以通过表MAST的字段STLAN查询。 在CRM创建一个下载请求: 成功下载到CRM之后,在CRM UI里打开ERP BOM抬头的product1419,能在assignment blo...

ABAP OPEN SQL里OPEN CURSOR和SELECT的比较

2018-03-10
阅读 3 分钟
3.6k
After the OPEN CURSOR statement, the database cursor is positioned in front of the first line of the result set.

CRM product UI里assignment block的显示隐藏逻辑

2018-03-10
阅读 2 分钟
2.1k
我们在product overview page里能看到很多的assignment block。但是runtime的时候真正显示出来的内容只是configuration里面看到内容的一个子集。

在浏览器里使用SAPGUI里的SE80

2018-03-10
阅读 2 分钟
2.1k
效果如图:点击Fiori launchpad的SE80对应的tile: 即可在浏览器里打开SE80 具体步骤 (1). 在后台找到Fiori catalog page ID: SAP_FIORI_EXTENSIBILITY (2). 打开Open Fiori Launchpad Designer, 根据前一步找到的ID搜索出catalog. 创建一个新的tile: 维护如下数据: 保存,如下url会自动生成。 (3). 创建一个新的目标映...

One Order行项目里Item Category是怎么计算出来的

2018-03-10
阅读 1 分钟
907
One Order的行项目里有个字段叫Item Category,我们在行项目里加入一个product后,就会自动带出Item Category来。这个值是怎么计算出来的?

如何从ERP将Material的Batch信息下载到CRM并存储在settype COMM_PR_BATCH里

2018-03-10
阅读 1 分钟
1.5k
前提条件:必须先确保三个对象ATTRIBUTE, CLASS和OBJCL成功下载。可以到事物码R3AM1里查看,确保状态全部为Done。 (1) 在事物码MM02里,切换到视图classification,将class 023_03分配给Material: 在warehouse management视图中,确保Batch management处于选中状态。 (2) 将该material下载到CRM。在下载的BDOC里能观察到...