作为程序员,相信大家都有很好的记笔记的好习惯,也有很多很多很多的笔记产品。
然后呢,针对ABAP语言,大家已经看到之前公众号有一个云代码库,这里对之前云代码库做进一步相当于插件式的优化方案设计(没打算完成,只是验证下)。
先看下设计效果,再解释原理和实现:
效果如下:
比如,你在写代码的时候,在之前只能通过TR请求或者临时请求进行管理。
现在呢,可以增加一个右键操作“上传源代码到笔记”,可以看到,效果如图所示;
然后点击后:因为没有对我们自定义的UCOMM ‘UPLOAD_NOTE’进行处理逻辑增强,所以目前只是一个提示;
如果把代码写好,也可以一键到之前的云服务器。
不过之前的云代码库是属于加密的,然后呢,其实考虑还有一个思路,那么就是不对内容加密,而对执行加密(打开笔记需要验证密码),这样也是可以的,也同样是B/S架构,可以支持云部署,如下:
好了,说了结果,那么实际上我们需要执行的是2个技术实现点:
- 首先是要有自己的云代码库(我公众号的内容加密,或者我上面一个图片的支持笔记加密的),这个就不介绍说明了,大家自己研究下;
- 就是在ABAP代码编写的时候,能够右键随时方便的做自己的设计操作;
今天讲的就是这第2点了,也就是第一个图片是如何实现的:
大家可能知道,可以通过注册表regedit增加shell的dword,或者是第三方工具等方式在我们的桌面右键上增加新的指令,那么同样的,能不能在SAP的Gui中增加右键的菜单条,补充我们的指令,答案是可以的:
首先,在SAP GUI中右键也是对象方式的调用,关键字
Context Menu
这个是针对SAP GUI的client端的,对html并不适用
SHIFT F10,或者右键,就可以调出SE38中的菜单,菜单位置和鼠标指针位置一致:选择菜单某一项,就是选择了这一项的相关功能。
类:CL_CTMENU
可以参考结构CNTL_SIMPLE_EVENTS 进行事件注册
代码语言:javascript复制CALL METHOD my_control->set_registered_events
EXPORTING events = events
EXCEPTIONS cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
接着说一下,功能实现部分是通过以下关键字实现
Event Handling
具体方法:CALL METHOD cl_gui_cfw=>flush
对event handing的影响基本上在同步执行之后
处理事件时,最好获取触发事件的控件的属性,然后同步自动化队列
:安全的解决方案是查询子例程中的控件属性,该子例程在末尾和每个出口处同步自动化队列。
代码语言:javascript复制FORM GET_CONTROL_PROPERTIES.
DATA: tree_selected_node, combobox_selected_node.
CALL METHOD tree->GET_SELECTED_NODE
IMPORTING
NODE_KEY = tree_selected_node
<Error handling>
CALL METHOD textedit-> GET_SELECTION_POS
IMPORTING
FROM_LINE = from_line
FROM_POS = from_pos
TO_LINE = to_line
TO_POS = to_pos.
<Error handling>
CALL METHOD CL_GUI_CFW=>FLUSH
<Error handling>
ENDFORM.