ABAP如何调用OCX

举报
汪子熙 发表于 2022/02/27 16:17:00 2022/02/27
【摘要】 网上有很多的open OCX控件,down下来之后可以集成到ABAP后台,借助OCX实现很多强大的功能.这是一个LED显示的例子.Run这个report之前,首先要把ocx文件注册到系统里去:(1) 以administrator的role运行cmd:打开注册表,搜ledtest.ocx,找到ocx对应的clsid:(2) 把clsid hard code到report里去就ok了。(1) U...

网上有很多的open OCX控件,down下来之后可以集成到ABAP后台,借助OCX实现很多强大的功能.

这是一个LED显示的例子.



Run这个report之前,首先要把ocx文件注册到系统里去:
(1) 以administrator的role运行cmd:

打开注册表,搜ledtest.ocx,找到ocx对应的clsid:

(2) 把clsid hard code到report里去就ok了。

(1) UI上我们可以看到Category AB里面有一个indicator叫”Base Category”.

(2)在GenIL这层我们也可以看到Product有两个relation,一个”ProductBaseCategory”,一个”ProductCategory”. 这两个relation共享的一个object(表),也就是”COMM_PRPRDCATR”.

(3)但是我们发现其实这张表里面并没有存”Is_Base_Category”这个字段。也就是这个字段是在runtime时候determine出来的。

(4)从下图可以看出这个字段是在MAP_TO_UI_STRUCTURE这个接口里面实现的,这个接口在GenIL API里面用来实现将Native API layer的数据转换成GenIL layer的数据格式的作用。(由此可以看出这个接口可以用来实现一个GenIL layer的transformation field的功能)

(5) 从上面的代码中可以看出一个category assignment是不是base category,是通过看这个category对应的hierarchy id是不是与product的hierarchy id相同来判断的。而在建立Product时候,第一次选择的category的hierarchy id将会赋给product的hierarchy id。
而之后在选择category的时候就不能选择与第一个category相同的hierarchy了。

上图可以看出当你选择category时候,已有的category对应的hierarchy将会被作为”Is Not”的查询参数被默认生成出来。
如果你强行删除这些限制条件,选择一个不正确的category,如下error message将会触发。

Social media 在SP0开发的时候,建了CL_SOC_UTIL和CL_CRM_SOC_SMC_UIU_UTIL 两个util class。

这两个class里面有的方法是通过method name一眼就能看出用途,有的method取的不是很好,需要结合source code才能明白用途。
某些方法的实现逻辑比较复杂
某些方法是为了解决某些特殊的issue而引入的。

Social media开发时,在method source code内部写了注释,对于method 本身的用途和输入输出参数定义没有写注释。

其实ABAP也能和JAVA一样,通过维护特定格式的注释,最后自动生成文档。

Class level的注释:

Method level的注释:

用tcode CLASS_DOCUGEN生成文档,点这个button查看文档:



如果文档写的好, developer B在修改developer A实现的method之前,不用所有的细节都跑去问developerA了,直接看文档理解。

不知道你们正式开发开始后这个用得上不。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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