SAP ABAP 通过右键菜单完成Tree Control 节点的增删改功能

通过右键菜单完成Tree Control 节点的增删改功能

Tree 节点的增删改是很重要的功能,包括:增加本级节点,增加子节点,修改节点,删

除节点。完成后效果如下:

选择根节点,单击右键,弹出右键菜单,如选择“北京”节点,选择“增加本级节点”

菜单,如图9-5 所示。

在单击文本输入“广州”后,单击“更新”按钮,如图9-6 所示。

Tree 对象增加了“广州”节点,选择该节点,选右键菜单中“增加子节点”菜单,如图

9-7 所示。

输入“天河区”,单击“更新”按钮,如图9-8 所示。

增加节点后,输出结果如图9-9 所示。

除上述功能外,还有修改及删除节点等功能。

设计 Screen 界面如图9-10 所示。

主程序:

REPORT ytest35.
DATA: ok_code TYPE sy-ucomm,save_ok TYPE sy-ucomm.
DATA: wa_container        TYPE scrfname VALUE 'TREE1',wa_custom_container TYPE REF TO cl_gui_custom_container,wa_tree             TYPE REF TO cl_gui_simple_tree.
DATA: node_table  LIKE TABLE OF mtreesnode,anode_table LIKE TABLE OF mtreesnode,node1       TYPE mtreesnode,node2       TYPE mtreesnode.
DATA wa_spfli TYPE TABLE OF spfli.
DATA: nodekey(200)    VALUE 'NODE',nodetext(200)   VALUE 'NODE',nodekeyold(200) VALUE 'NODE',getkey(200).
DATA menustr(10) VALUE ''.
CLASS lcl_application DEFINITION DEFERRED.
*---------------------------------------------------------------------*
* CLASS lcl_application DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_application DEFINITION.PUBLIC SECTION.METHODS: handle_node_double_clickFOR EVENT node_double_clickOF cl_gui_simple_treeIMPORTING node_key.METHODS:handle_node_context_menu_reqFOR EVENT node_context_menu_requestOF cl_gui_simple_treeIMPORTING node_key menu,handle_node_context_menu_selFOR EVENT node_context_menu_selectOF cl_gui_simple_treeIMPORTING node_key fcode.
ENDCLASS. "LCL_APPLICATION DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_application IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_application IMPLEMENTATION.METHOD handle_node_double_click.nodekey = node_key.READ TABLE node_table WITH KEY node_key = node_key INTO node1.nodetext = node1-text.ENDMETHOD. "HANDLE_NODE_DOUBLE_CLICKMETHOD handle_node_context_menu_req.CALL METHOD menu->add_functionEXPORTINGtext  = '增加本级节点'fcode = 'CODE1'.CALL METHOD menu->add_functionEXPORTINGtext  = '增加子节点'fcode = 'CODE2'.CALL METHOD menu->add_functionEXPORTINGtext  = '修改当前节点'fcode = 'CODE3'.CALL METHOD menu->add_functionEXPORTINGtext  = '删除当前节点'fcode = 'CODE4'.ENDMETHOD. "handle_node_context_menu_reqMETHOD handle_node_context_menu_sel.DATA str1 TYPE tv_nodekey.CALL METHOD wa_tree->get_selected_nodeIMPORTINGnode_key = str1.IF sy-subrc = 0.menustr = fcode.nodekey = str1.nodekeyold = str1.READ TABLE node_table WITH KEY node_key = str1 INTO node1.nodetext = node1-text.IF fcode = 'CODE4'.CALL METHOD wa_tree->delete_nodeEXPORTINGnode_key = node1-node_key.DELETE node_table WHERE node_key = nodekey.ENDIF.ENDIF.ENDMETHOD. "handle_node_context_menu_sel
ENDCLASS. "lcl_application IMPLEMENTATION
*自定义定义对象实例
DATA: g_application TYPE REF TO lcl_application.START-OF-SELECTION.CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.IF wa_custom_container IS INITIAL.CREATE OBJECT g_application.PERFORM create_tree.ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.DATA str1 TYPE tv_nodekey.save_ok = ok_code.CLEAR ok_code.CASE save_ok.WHEN 'EXIT'.LEAVE PROGRAM.WHEN 'GETKEY'.CALL METHOD wa_tree->get_selected_nodeIMPORTINGnode_key = str1.IF sy-subrc EQ 0.getkey = str1.ENDIF.WHEN 'UPTREE'.IF ( menustr = 'CODE1' ) OR ( menustr = 'CODE2').READ TABLE node_tableWITH KEY node_key = nodekey INTO node1.IF sy-subrc EQ 0.MESSAGE e208(00) WITH '键值重复!'.ENDIF.ENDIF.CASE menustr.WHEN 'CODE1'.READ TABLE node_table WITH KEY node_key = nodekeyoldINTO node2.CLEAR node1.node1-node_key = nodekey.node1-relatkey = node2-relatkey.node1-relatship = cl_gui_simple_tree=>relat_last_child.node1-hidden = ''.node1-disabled = ''.node1-isfolder = 'X'.node1-n_image = '@G3@'.node1-exp_image = '@G3@'.CLEAR node1-expander.node1-text = nodetext.APPEND node1 TO node_table.CLEAR anode_table.APPEND node1 TO anode_table.CALL METHOD wa_tree->add_nodesEXPORTINGtable_structure_name = 'MTREESNODE'node_table           = anode_table.IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.WHEN 'CODE2'.CLEAR node1.node1-node_key = nodekey.node1-relatkey = nodekeyold..node1-relatship = cl_gui_simple_tree=>relat_last_child.node1-hidden = ''.node1-disabled = ''.node1-isfolder = 'X'.node1-n_image = '@G3@'.node1-exp_image = '@G3@'.CLEAR node1-expander.node1-text = nodetext.APPEND node1 TO node_table.CLEAR anode_table.APPEND node1 TO anode_table.CALL METHOD wa_tree->add_nodesEXPORTINGtable_structure_name = 'MTREESNODE'node_table           = anode_table.IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.WHEN 'CODE3'.node1-node_key = nodekeyold.CALL METHOD wa_tree->node_set_textEXPORTINGnode_key = node1-node_keytext     = nodetext.IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.ENDCASE.ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form CREATE_TREE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_tree .DATA: events TYPE cntl_simple_events,event1 TYPE cntl_simple_event.CREATE OBJECT wa_custom_containerEXPORTINGcontainer_name = wa_container.CREATE OBJECT wa_treeEXPORTINGparent              = wa_custom_containernode_selection_mode = cl_gui_simple_tree=>node_sel_mode_single.IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.CLEAR node1.node1-node_key = '国家'.CLEAR node1-relatkey.CLEAR node1-relatship.node1-hidden = ''.node1-disabled = ''.node1-isfolder = 'X'.CLEAR node1-n_image.CLEAR node1-exp_image.CLEAR node1-expander.node1-text = '中国'.APPEND node1 TO node_table.CLEAR node1.node1-node_key = '城市北京'.node1-relatkey = '国家'.node1-relatship = cl_gui_simple_tree=>relat_last_child.node1-hidden = ''.node1-disabled = ''.node1-isfolder = 'X'.CLEAR node1-n_image.CLEAR node1-exp_image.CLEAR node1-expander.node1-text = '北京'.APPEND node1 TO node_table.CLEAR node1.node1-node_key = '城市上海'.node1-relatkey = '国家'.node1-relatship = cl_gui_simple_tree=>relat_last_child.node1-hidden = ''.node1-disabled = ''.node1-isfolder = 'X'.CLEAR node1-n_image.CLEAR node1-exp_image.CLEAR node1-expander.node1-text = '上海'.APPEND node1 TO node_table.CLEAR node1.node1-node_key = 'KEY 崇文区'.node1-relatkey = '城市北京'.node1-relatship = cl_gui_simple_tree=>relat_last_child.node1-hidden = ''.node1-disabled = ''.node1-isfolder = ''.
*图标,可运行SHOWICON查阅node1-n_image = '@9Y@'.node1-exp_image = '@9Y@'.CLEAR node1-expander.node1-text = '崇文区'.APPEND node1 TO node_table.CLEAR node1.node1-node_key = 'KEY 西城区'.node1-relatkey = '城市北京'.node1-relatship = cl_gui_simple_tree=>relat_last_child.node1-hidden = ''.node1-disabled = ''.node1-isfolder = ''.node1-n_image = '@DF@'.node1-exp_image = '@DF@'.CLEAR node1-expander.node1-text = '西城区'.APPEND node1 TO node_table.CLEAR node1.node1-node_key = 'KEY 闵行区'.node1-relatkey = '城市上海'.node1-relatship = cl_gui_simple_tree=>relat_last_child.node1-hidden = ''.node1-disabled = ''.node1-isfolder = ''.node1-n_image = '@NL@'.node1-exp_image = '@NL@'.CLEAR node1-expander.node1-text = '闵行区'.APPEND node1 TO node_table.
*按照节得内容掏加节得CALL METHOD wa_tree->add_nodesEXPORTINGtable_structure_name = 'MTREESNODE'node_table           = node_table
* EXCEPTIONS
*     ERROR_IN_NODE_TABLE  = 1
*     FAILED               = 2
*     DP_ERROF             = 3
*     TABLE_STRUCTURE_NAME_NOT_FOUND = 4
*     OTHERS               = 5.IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.CALL METHOD wa_tree->expand_nodeEXPORTINGnode_key            = '国家'expand_subtree      = 'X'EXCEPTIONSfailed              = 1illegal_level_count = 2cntl_system_error   = 3node_not_found      = 4cannot_expand_leaf  = 5.IF sy-subrc NE 0.ENDIF.
*定义双击事件event1-eventid = cl_gui_simple_tree=>eventid_node_double_click.event1-appl_event = 'X'.APPEND event1 TO events.event1-eventid = cl_gui_simple_tree=>eventid_node_context_menu_req.event1-appl_event = ''.APPEND event1 TO events.CALL METHOD wa_tree->set_ctx_menu_select_event_applEXPORTINGappl_event = 'X'.
*添加事件内表CALL METHOD wa_tree->set_registered_eventsEXPORTINGevents = events
* EXCEPTIONS
*     CNTL_ERROR = 1
*     CNTL_SYSTEM_ERROR = 2
*     ILLEGAL_EVENT_COMBINATION = 3
*     OTHERS = 4.IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.
*将已定义的双击事件分配至树对象SET HANDLER g_application->handle_node_double_click FOR wa_tree.SET HANDLER g_application->handle_node_context_menu_req FOR wa_tree.SET HANDLER g_application->handle_node_context_menu_sel FOR wa_tree.
ENDFORM. " CREATE_TREE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

peertalk Usbmux 资料收集与整理

Usbmux - The iPhone Wiki Usbmux During normal operations, iTunes communicates with the iPhone using something called “usbmux” – this is a system for multiplexing several “connections” over one USB pipe. Conceptually, it provides a TCP-like system –…

高压功率放大器产品参数及优势有哪些

高压功率放大器是一种关键性能器件&#xff0c;常用于不同领域的应用&#xff0c;包括声音放大、通信系统、电力传输等。以下是关于高压功率放大器产品参数和优势的详细介绍。 一、高压功率放大器的产品参数 输入/输出电压范围&#xff1a;高压功率放大器通常能够承受较高的输入…

金融科技Q3增长密码:结构调优,质量增厚

来源 | 镭射财经&#xff08;leishecaijing&#xff09; 金融科技上市公司三季度交出规模突破、业绩稳增的答卷&#xff0c;为四季度审慎经营、风控优化创造了空间。 从三季度业绩数据看&#xff0c;金融科技行业延续了前两个季度的增长势头&#xff0c;主要金融科技上市公司…

每日汇评:由于美国ADP就业数据疲弱,黄金的反弹可能会延续

在美元全面回落的背景下&#xff0c;金价在2020美元附近跃跃欲试。&#xff1b; 黄金价格的上涨似乎受到美债正收益率的限制&#xff1b; 黄金价格等待美国ADP就业数据获得新的提振&#xff0c;因为技术支撑仍然存在&#xff1b; 周三早盘&#xff0c;金价在2020美元附近小幅反…

处理数据时注意事项

数据安全&#xff1a; 历史数据兼容 越权访问 数据量级 操作记录

完美解决:wget命令下载时遇到“错误 308:Permanent Redirect。”

目录 1 问题 2 解决方法 1 问题 使用wget命令下载时候遇到&#xff1a; --2023-12-02 20:36:08-- http://mirrors.jenkins.io/war-stable/latest/jenkins.war 正在解析主机 mirrors.jenkins.io (mirrors.jenkins.io)... 20.7.178.24, 2603:1030:408:5::15a 正在连接 mirror…

电子版简历模板精选5篇

电子版简历模板模板下载&#xff08;可在线编辑制作&#xff09;&#xff1a;做好简历&#xff0c;来幻主简历。 电子版简历1&#xff1a; 求职意向 求职类型&#xff1a;全职 意向岗位&#xff1a;ERP咨询顾问 意向城市&#xff1a;北京市 薪资要求&#xff1a;…

ROS 欧拉角

在ROS中&#xff0c;欧拉角&#xff08;Euler angles&#xff09;通常用于描述一个物体相对于参考坐标系的旋转。这种表示方法基于三个连续的旋转角度&#xff0c;每个角度对应于绕着特定轴线&#xff08;通常是XYZ轴或ZYZ轴等不同顺序&#xff09;的旋转。 ROS中&#xff0c;…

波长和陡度 现货黄金强弱分析中yyds

按照强势的那一方做交易&#xff0c;不和弱势的一方为伍&#xff0c;这是我们做现货黄金投资的哲学&#xff0c;顺势交易也是建立在这样的基础之上的。要判断现货黄金是强势还是弱势&#xff0c;除了借助技术指标以外&#xff0c;通过看走势本身也可以实现&#xff0c;下面我们…

python 协程asyncio详解

协程 协程就是告诉Cpython解释器&#xff0c;你不是nb吗&#xff0c;不是搞了个GIL锁吗&#xff0c;那好&#xff0c;我就自己搞成一个线程让你去执行&#xff0c;省去你切换线程的时间&#xff0c;我自己切换比你切换要快很多&#xff0c;避免了很多的开销。 协程的本质就是…

【Docker】从零开始:13.Docker安装tomcat

Docker】从零开始&#xff1a;13.Docker安装Tomcat 下载Tomcat镜像启动Tomcat镜像新版本Tomcat修改访问Tomact首页 下载Tomcat镜像 [rootdocker ~]# docker pull tomcat Using default tag: latest latest: Pulling from library/tomcat 0e29546d541c: Pull complete 9b829c7…

uniapp横向滚动示例

目录 插件市场案例最后 插件市场 地址 案例 地址 最后 感觉文章好的话记得点个心心和关注和收藏&#xff0c;有错的地方麻烦指正一下&#xff0c;如果需要转载,请标明出处&#xff0c;多谢&#xff01;&#xff01;&#xff01;

简述IO流的使用以及使用时需要注意的事项

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍介绍IO流的使用以及使用时需要注意的事项以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题可…

程序员都在收藏的免费好用API接口

AI绘画-Mid Journey&#xff1a;使用 Midjourney 目前全球领先的图片大模型&#xff0c;其能根据输入文字提供极其优秀的AI绘画作品。AI绘画-Stable Diffusion&#xff1a;通过AI 生成图片&#xff0c;包括图生文、文生图等。IP归属地-IPv4区县级&#xff1a;根据IP地址查询归属…

11月榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年11月飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数、带货数据等维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站U…

Linux Console快捷键

Ctrl C&#xff1a;终止当前正在运行的程序。 Ctrl D&#xff1a;关闭当前终端会话。 Ctrl Z&#xff1a;将当前程序放入后台运行。 Ctrl L&#xff1a;清除当前屏幕并重新显示命令提示符。 Ctrl R&#xff1a;在历史命令中进行逆向搜索。 Ctrl A&#xff1a;将光标移动到…

java--泛型方法、通配符、上下限

1.泛型方法 2.通配符 就是"?"&#xff0c;可以在"使用泛型"的时候代表一切类型&#xff1b;E T K V是在定义泛型的时候使用。 3.泛型的上下限 ①泛型上限&#xff1a;? extends Car&#xff1a;? 能接收的必须是Car或者其子类 ②泛型下限&#xff1…

ubuntu安装MySQL8

1.下载mysql8 MySQL :: Download MySQL Installer (Archived Versions) 选择对应的mysql版本和对应的ubuntu版本图即可 2.下载后上传到sftp文件夹中&#xff0c;然后通过以下命令解压 tar -xvf mysql-server_8.0.29-1ubuntu20.04_amd64.deb-bundle.tar 3.依次安装即可 &#…

Auth的使用、缓存

auth 是什么&#xff0c;有什么作用 auth就是django 的一个app&#xff0c;做用户管理 Auth模块是Django自带的用户认证模块&#xff1a; 我们在开发一个网站的时候&#xff0c;无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销…

Sql Server 2017主从配置之:AlwaysOn高可用

AlwaysOn高可用功能&#xff0c;真正实现了数据库的灾备切换、高可用。 AlwaysOn通过Windows Server故障转移群集&#xff0c;部署高可用数据库组。 在故障转移群集基础上完成部署读写分离&#xff0c;只读负载平衡最多3个写入节点实现故障转移最多3个数据实时同步节点 环境…