先上效果图:

1,新建类:ZCL_FPM_TREE,并添加接口:IF_FPM_GUIBB,IF_FPM_GUIBB_TREE。激活所有方法

2.定义tree结构,在class的public section里添加:

  types:
"add by ly 20190919 for data structure
BEGIN OF ty_tree.
INCLUDE TYPE fpmgb_s_tree_master_column.
TYPES:
land1 TYPE land1,
landx TYPE landx,
bland TYPE regio,
bezei TYPE bezei,
END OF ty_tree . data GT_TREE type TABLE OF TY_TREE .
data GW_TREE TYPE TY_TREE .

3.定义TREE字段目录:在方法GET_DEFINITION中:

  METHOD if_fpm_guibb_tree~get_definition.
DATA:ls_field TYPE fpmgb_s_treefield_descr.
eo_field_catalog ?= cl_abap_tabledescr=>describe_by_data( gt_tree ). "tree
ls_field-name = 'PARENT_KEY'.
ls_field-column_type = if_fpm_guibb_constants=>gc_guibb_tree_columns-parent_key.
APPEND ls_field TO et_field_description. ls_field-name = 'ROW_KEY'.
ls_field-column_type = if_fpm_guibb_constants=>gc_guibb_tree_columns-row_key.
APPEND ls_field TO et_field_description. ls_field-name = 'EXPANDED'.
ls_field-column_type = if_fpm_guibb_constants=>gc_guibb_tree_columns-expanded.
APPEND ls_field TO et_field_description. ls_field-name = 'IS_LEAF'.
ls_field-column_type = if_fpm_guibb_constants=>gc_guibb_tree_columns-is_leaf.
APPEND ls_field TO et_field_description. ls_field-name = 'TEXT'.
ls_field-column_type = if_fpm_guibb_constants=>gc_guibb_tree_columns-text.
APPEND ls_field TO et_field_description. ls_field-name = 'CHILDREN_LOADED'.
ls_field-column_type = if_fpm_guibb_constants=>gc_guibb_tree_columns-child_load.
APPEND ls_field TO et_field_description. ls_field-name = 'IMAGE_SRC'.
ls_field-column_type = if_fpm_guibb_constants=>gc_guibb_tree_columns-img_src.
APPEND ls_field TO et_field_description. ENDMETHOD.

4.在GET_DATA中添加初始化tree结构的内表代码:

  METHOD if_fpm_guibb_tree~get_data.
DATA:gt_t005t TYPE TABLE OF t005t,
gw_t005t LIKE LINE OF gt_t005t,
gt_t005u TYPE TABLE OF t005u,
gw_t005u LIKE LINE OF gt_t005u.
IF io_event->mv_event_id = 'FPM_START'.
SELECT * INTO TABLE gt_t005t FROM t005t WHERE spras = 'E'.
SELECT * INTO TABLE gt_t005u FROM t005u WHERE spras = 'E'. LOOP AT gt_t005t INTO gw_t005t.
MOVE-CORRESPONDING gw_t005t TO gw_tree.
gw_tree-row_key = gw_t005t-land1.
gw_tree-is_leaf = abap_false.
gw_tree-expanded = abap_false.
gw_tree-text = gw_t005t-landx.
APPEND gw_tree TO gt_tree. ENDLOOP. LOOP AT gt_t005u INTO gw_t005u.
CLEAR:gw_tree.
MOVE-CORRESPONDING gw_t005u TO gw_tree.
gw_tree-row_key = gw_t005u-bland.
gw_tree-is_leaf = abap_true.
gw_tree-parent_key = gw_t005u-land1.
gw_tree-text = gw_t005u-bezei.
APPEND gw_tree TO gt_tree.
ENDLOOP. ct_data = gt_tree.
ev_data_changed = 'X'.
ENDIF.
ENDMETHOD.

5.打开FPM工作台,点击新建空的FPM程序:

6.输入程序名称,选择VOP类型,选择本地包,保存。

7.保存之后会出现两个链接的页面,选择编辑配置:

8.输入配置描述,进入配置主界面,在UIBB中选择添加TREE类型UIBB。

9.输入一个配置编号,回车,然后选择当前行,点击配置UIBB。

10.在新开的配置页面中,输入描述,保存。这时候会进入配置UIBB页面,提示输入FEEDER CLASS,输入上面上面创建的类。

11.在配置列里添加需要展示的字段。保存,测试即可。

FPM八:FPM TREE的更多相关文章

  1. Nginx与Lua利用fpm打成rpm包

    1.下载相关软件 需要软件有:Nginx,LuaJIT,ngx_devel_kit,ngx_lua等安装文件 安装Lua或者LuaJIT都是可以的,但是出于效率的考虑,推荐安装LuaJITshell& ...

  2. FPM定制RPM包实践

    1.1 快速部署方案 ✔ 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案. 解答: 1.tar 打包 先编译安装 打包-->分发-->解包(比如 ...

  3. 基于FPM制作nginx RPM包

    目录 环境 配置 FPM安装 环境 系统 其它 CentOS 7.5 需提前配置好epel 配置 [root@localhost ~]# yum clean all && yum ma ...

  4. fpm制作rpm包

    一.前言 在企业中我们有事安装软件包.部分都是源码安装,如nginx安装路径都已经固化了,但实际业务中,我们都是把软件包安装到固定目录下,不满足需要,这是其一.其二,编译安装很耗时,比如mysql,特 ...

  5. centos6上使用fpm打python2.7 rpm包并兼容python2.6

    centos6上使用fpm打python2.7 rpm包并兼容python2.6 作者 运维小兵_加油 关注 2016.09.22 00:28 字数 501 阅读 45评论 0喜欢 1 工作中我们常常 ...

  6. FPM工具 实战定制nginx包

    FPM主要特点: 把一种包打包成另一种包的格式 支持的源类型包 DIR 将目录打包成所需要的类型,可以用于源码编译的安装包. RPM    对rpm进行转换 gem    对rubygem包进行转换. ...

  7. Linux基于FPM制作RPM包(以Nginx为例)

    1.搭建Epel  Yum源  安装在线yum源 [root@localhost ~]# rpm -ivh epel-release-latest-.noarch.rpm //安装扩展源 [root@ ...

  8. FPM简介(定制rpm包)

    FPM简介 fpm是生成rpm包的工具.rpm包的制作,采用fpm工具完成,FPM非常易用,此命令可以把rpm包的安装.卸载做得更加优雅,在安装前可以做一些准备工作,安装后可以做一些收尾工作,在卸载前 ...

  9. 基于FPM制作RPM软件包!

    工作中有如下情况需要将文件打包rpm: 避免重复工作,将源码程序打包为rpm 使用yum发布项目,项目打包为rpm 将自己写好的程序打包为rpm,提供给用户下载 其他 以前打包rpm是一个非常复杂的一 ...

随机推荐

  1. 莫烦TensorFlow_04 placeholder

    import tensorflow as tf input1 = tf.placeholder(tf.float32) input2 = tf.placeholder(tf.float32) outp ...

  2. Linux下的SVN服务器搭建(八)

    1. 通过yum命令安装svnserve yum -y install subversion #查看svn安装位置 rpm -ql subversion 2. 创建版本库目录(此仅为目录,为后面创建版 ...

  3. 每天一道Rust-LeetCode(2019-06-05)

    每天一道Rust-LeetCode(2019-06-05) 最长回文子串 坚持每天一道题,刷题学习Rust. 接续昨天,最长会问字符串的另一种解法 题目描述 解题过程 //leetcode最快解法 / ...

  4. linux pkgsrc 学习(一) 安装pkgsrc

    使用pkgsrc.joyent.com 提供的linux 包 下载包 # # Copy and paste the lines below to install the 64-bit EL 7.x s ...

  5. 实现 Cloneable 需要注意

    产品Product里面包含BaseInfo对象:Product(productName,companyName,baseinfo)如果implement Cloneable  需要实现   注意强转类 ...

  6. [LeetCode] 79. Word Search 词语搜索

    Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from l ...

  7. 第09组 Beta冲刺(4/5)

    队名:观光队 链接 组长博客 作业博客 组员实践情况 王耀鑫 过去两天完成了哪些任务 文字/口头描述 学习 展示GitHub当日代码/文档签入记录 无 接下来的计划 完成短租车,页面美化 还剩下哪些任 ...

  8. @PostConstruct、@Autowired以及构造函数的执行顺序

    结论先行:构造函数 -> PostConstruct -> @Autowired 依次执行 由于项目需要启动时加载一个配置信息,所以想到了用@PostConstruct,如下所示: @Co ...

  9. snowflake ID生成器

    背景 Snowflake 是 Twitter 内部的一个 ID 生算法, 可以通过一些简单的规则保证在大规模分布式情况下生成唯一的 ID 号码. 其组成为: 第一个 bit 为未使用的符号位. 第二部 ...

  10. intellij idea 解决2019年4月到期延期问题

    56ZS5PQ1RF-eyJsaWNlbnNlSWQiOiI1NlpTNVBRMVJGIiwibGljZW5zZWVOYW1lIjoi5q2j54mI5o6I5p2DIC4iLCJhc3NpZ25lZ ...