随时随地记笔记之ABAP篇

2021-07-23 13:30:55 浏览数 (1)

作为程序员,相信大家都有很好的记笔记的好习惯,也有很多很多很多的笔记产品。

然后呢,针对ABAP语言,大家已经看到之前公众号有一个云代码库,这里对之前云代码库做进一步相当于插件式的优化方案设计(没打算完成,只是验证下)。

先看下设计效果,再解释原理和实现:

效果如下:

比如,你在写代码的时候,在之前只能通过TR请求或者临时请求进行管理。

现在呢,可以增加一个右键操作“上传源代码到笔记”,可以看到,效果如图所示;

然后点击后:因为没有对我们自定义的UCOMM ‘UPLOAD_NOTE’进行处理逻辑增强,所以目前只是一个提示;

如果把代码写好,也可以一键到之前的云服务器。

不过之前的云代码库是属于加密的,然后呢,其实考虑还有一个思路,那么就是不对内容加密,而对执行加密(打开笔记需要验证密码),这样也是可以的,也同样是B/S架构,可以支持云部署,如下:

好了,说了结果,那么实际上我们需要执行的是2个技术实现点:

  1. 首先是要有自己的云代码库(我公众号的内容加密,或者我上面一个图片的支持笔记加密的),这个就不介绍说明了,大家自己研究下;
  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.

0 人点赞