1.在RESULT的Feeder class里添加点击单号事件:

  method IF_FPM_GUIBB_LIST~GET_DEFINITION.
DATA:GW_ACTION TYPE FPMGB_S_ACTIONDEF.
EO_FIELD_CATALOG ?= CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_NAME( 'ZLY_RESULT01T' )."获取查询参数结构
GW_ACTION-ID = 'LINK_TO_DETAIL'.
GW_ACTION-ENABLED = 'X'.
APPEND GW_ACTION TO ET_ACTION_DEFINITION.
endmethod.

2.进入Detail的配置页面:

修改字段类型为LINK TO ACTION,然后事件选择定义的事件。

到这里,界面的单号就变成链接了,而且点击也会触发事件进入PROCESS_EVENT。

下面写跳转的一些东西。

3.程序做跳转处理:在PROCESS_EVENT中接受事件,并做跳转。这里有个PAGE_2的页面,是要做明细界面的,这里可以先用上,后面再配置。

  METHOD IF_FPM_GUIBB_LIST~PROCESS_EVENT.
DATA:GT_FPM_SEARCH_CRITERIA TYPE FPMGB_T_SEARCH_CRITERIA,
GV_MAX_NUM TYPE I,
GV_INDEX TYPE I,
GT_WHERE TYPE RSDS_WHERE_TAB. CASE IO_EVENT->MV_EVENT_ID.
WHEN IF_FPM_GUIBB_LIST=>GC_EVENT_LIST_FILTER.
IO_EVENT->MO_EVENT_DATA->GET_VALUE(
EXPORTING
IV_KEY = 'SEL_TAB'
IMPORTING
EV_VALUE = GT_FPM_SEARCH_CRITERIA ). IO_EVENT->MO_EVENT_DATA->GET_VALUE(
EXPORTING
IV_KEY = 'MAX_NUM'
IMPORTING
EV_VALUE = GV_MAX_NUM ). TRY .
CALL METHOD CL_FPM_GUIBB_SEARCH_CONVERSION=>TO_ABAP_SELECT_WHERE_TAB
EXPORTING
IT_FPM_SEARCH_CRITERIA = GT_FPM_SEARCH_CRITERIA
IV_TABLE_NAME = 'ZLY_SEARCH01'
* IO_FIELD_CATALOG = MO_CATALOG
IMPORTING
ET_ABAP_SELECT_TABLE = GT_WHERE.
SELECT GUID
OBJECT_ID
DESCRIPTION
PROCESS_TYPE
POSTING_DATE
SALES_ORG
PROVIDER
END_USER
RETAILER
STAT_USER
TXT30
PRODUCT_ID
ZZCHARG_TYPE
INTO TABLE GT_RESULT
FROM ZHSB_ORDER_INDEX
UP TO GV_MAX_NUM ROWS WHERE (GT_WHERE).
CATCH CX_FPMGB.
ENDTRY.
WHEN 'LINK_TO_DETAIL'.
DATA:LR_FPM TYPE REF TO IF_FPM,
LO_EVENT TYPE REF TO CL_FPM_EVENT,
LR_EVENT_DATA TYPE REF TO CL_FPM_PARAMETER.
IO_EVENT->MO_EVENT_DATA->GET_VALUE(
EXPORTING
IV_KEY = IF_FPM_GUIBB_LIST=>GC_EVENT_PAR_ROW
IMPORTING
EV_VALUE = GV_INDEX ).
READ TABLE GT_RESULT INTO GW_RESULT INDEX GV_INDEX.
IF SY-SUBRC = .
LO_EVENT ?= CL_FPM_EVENT=>CREATE_BY_ID( 'FPM_CHANGE_CONTENT_AREA' ). LO_EVENT->MO_EVENT_DATA->SET_VALUE(
EXPORTING
IV_KEY = 'TARGET_CONTENT_AREA'
IV_VALUE = 'PAGE_2' ). LO_EVENT->MO_EVENT_DATA->SET_VALUE("将查询参数添加对参数对象里
IV_KEY = 'DETAIL'
IV_VALUE = GW_RESULT ).
LR_FPM ?= CL_FPM=>GET_INSTANCE( ). LR_FPM->RAISE_EVENT( LO_EVENT ).
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDMETHOD.

4.新建明细的Feeder class:ZLY_FPM_DETAIL01

继承接口:

IF_FPM_GUIBB
IF_FPM_GUIBB_FORM_CFG_GL2
IF_FPM_GUIBB_FORM_CFG_READ_GL2
IF_FPM_GUIBB_FORM

激活所有方法,以防dump。

4.1 添加节点属性,这个结构就用前面创建的了,不想再创建了。

4.2 实现GET_DEFINITION方法,确认明细界面字段。

  METHOD IF_FPM_GUIBB_FORM~GET_DEFINITION.
EO_FIELD_CATALOG ?= CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_DATA( GW_RESULT ).
ENDMETHOD.

4.3 在GET_DATA中接受数据,并做明细界面的初始化:

  METHOD IF_FPM_GUIBB_FORM~GET_DATA.
IF IO_EVENT->MV_EVENT_ID = 'FPM_CHANGE_CONTENT_AREA'.
IO_EVENT->MO_EVENT_DATA->GET_VALUE(
EXPORTING
IV_KEY = 'DETAIL'
IMPORTING
EV_VALUE = GW_RESULT ).
CS_DATA = GW_RESULT.
EV_DATA_CHANGED = ABAP_TRUE.
ELSE.
CS_DATA = GW_RESULT.
ENDIF.
ENDMETHOD.

4.4 界面数据更新到结构:直接放到FLUSH里了。

  METHOD IF_FPM_GUIBB_FORM~FLUSH.
DATA:GW_CHANGE TYPE FPMGB_S_CHANGELOG.
FIELD-SYMBOLS:<FS> TYPE ANY,
<DATA> TYPE DATA.
LOOP AT IT_CHANGE_LOG INTO GW_CHANGE.
ASSIGN COMPONENT GW_CHANGE-NAME OF STRUCTURE GW_RESULT TO <FS>.
IF <FS> IS ASSIGNED.
ASSIGN GW_CHANGE-NEW_VALUE->* TO <DATA>.
<FS> = <DATA>.
ENDIF.
ENDLOOP.
ENDMETHOD.

至于其他的事件,这里就暂时不写了。

5.配置明细界面:

FPM_WB:

进入配置,输入FORM的组件FPM_FORM_UIBB_GL2,和配置ID:ZLY_DETAIL01,点击创建。

5.1 添加2个GROUP,分左右两边:

如此两次,然后配置GROUP属性

第一个GROUP配置ROW 1,列就从A到H,占左半边。

第二个GROUP配置ROW 1,列从I到P,占右半边。

然后在每个GROUP里添加字段,效果如图:

这时候明细界面配置结束,保存。

然后到OVP界面配置。

6.VOP后续配置。

6.1 新增主页面:PAGE_2(这名字随意,但是要和跳转那里对应)

6.2 增加UIBB配置:

用前面配置好的配置ID。

转到按钮配置页签,添加两个按钮,一个保存,一个返回:

SAVE是标准的,不用管,BACK按钮要注意加描述目标页:

好了,到这里,跳转明细,保存,返回基本完成了。

试下效果:

FPM六:接五,跳转到明细的更多相关文章

  1. WDA-FPM-4-用OVP做查询跳转到明细

    转载:https://www.cnblogs.com/sapSB/p/10100697.html   FPM四:用OVP做查询跳转到明细 前面做了查询的UIBB配置,在这边可以直接复用,查询的feed ...

  2. 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询

    第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...

  3. Gradle 1.12用户指南翻译——第六十五章. Maven 发布(新)

    其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上的地址:https://gith ...

  4. “全栈2019”Java第六十五章:接口与默认方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. 孤荷凌寒自学python第六十五天学习mongoDB的基本操作并进行简单封装4

    孤荷凌寒自学python第六十五天学习mongoDB的基本操作并进行简单封装4 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十一天. 今天继续学习mongoDB的简单操作 ...

  6. OpenCV开发笔记(六十五):红胖子8分钟带你深入了解ORB特征点(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  7. 《手把手教你》系列技巧篇(六十五)-java+ selenium自动化测试 - cookie -下篇(详细教程)

    1.简介 今天这一篇,宏哥主要讲解:利用WebDriver 提供可以读取.添加和删除cookie 信息的相关操作方法.验证浏览器中是否存在某个cookie.原因是:因为基于真实的cookie 的测试是 ...

  8. FPM四:用OVP做查询跳转到明细

    前面做了查询的UIBB配置,在这边可以直接复用,查询的feeder class也就自动复用了. 1.给查询的feeder class添加接口,继续继承form的接口. 2.挨个实现每个方法,即使是用不 ...

  9. Swift实战-豆瓣电台(六)视图跳转,传参及回跳

    youku观看地址:http://v.youku.com/v_show/id_XNzMxMzQ3MDcy.html 要点 在ChannelController里面声明一个代理 这个代理遵循我们自定义的 ...

随机推荐

  1. work-7.2

    安装ubuntu,jdk ,git,maven,Intellij. 配置GIT时,需要将在本地生成的公钥粘贴到服务端. 先占个座,具体过程待补充. -------------------------- ...

  2. IT题库3-线程实现的方式

    1.继承Thread类创建线程 Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例.启动线程的唯一方法就是通过Thread类的start()实例方法.start()方法是一 ...

  3. C# 获取 串口 设备名称 与 串口号 ManagementObjectSearcher类

    1.效果图: 2.代码 class Program { static void Main(string[] args) { GetComList(); } private static void Ge ...

  4. C# rtsp 转码rtmp nginx踩下的坑

    最近有一个项目, 进行步态识别的时候,同时需要显示摄像的实时画面.对于 Winform 显示画面,之前针对 rtmp 流的时候,是先写一个HTML 网页加载视频流,然后在IIS上发布,将地址直接赋值给 ...

  5. 2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165305 Exp1 PC平台逆向破解 实验1-1直接修改程序机器指令,改变程序执行流程 先输入objdump -d 20165305pwn2查看反汇编代码 ...

  6. drools kie-server和kie-workbench安装手册

    Drools规则引擎可以直接在项目中编写drl文件,后调用. 也可以搭建kie-server和kie-workbench来进行远程调用. 关系: 在kie-workbench通过页面配置规则,发布到执 ...

  7. 问题 1690: 算法4-7:KMP算法中的模式串移动数组

    题目链接:https://www.dotcpp.com/oj/problem1690.html 题目描述 字符串的子串定位称为模式匹配,模式匹配可以有多种方法.简单的算法可以使用两重嵌套循环,时间复杂 ...

  8. github收藏夹

    技术面试必备基础知识 https://github.com/CyC2018/CS-Notes 程序员简历模板列表 https://github.com/geekcompany/ResumeSample ...

  9. 彻底清除 Windows 服务

    如果服务已经停止, 或从注册表中删除, 但是在任务管理器中仍能看到服务躺在列表里面. 只需要找到服务的PID, 然后运行命令: taskkill /PID 服务的PID /f 即可.

  10. openwrt如何关掉防火墙?

    答: 1.  阻止防火墙服务开机自动启动 /etc/init.d/firewall disable 2. 关闭防火墙 /etc/init.d/firewall stop