FPM里的OVS用法基本和WDA一致。

1,将OVS类添加到SEARCH.(可以单独写个类,因为这里为了方便,就和SEARCH放一起了)

IF_FPM_GUIBB_OVS~HANDLE_PHASE_0   Phase 0 (OVS config, c.f. IF_WD_OVS->set_configuration( ))“设置显示字段
IF_FPM_GUIBB_OVS~HANDLE_PHASE_1   Phase 1 (initialize fields, c.f. set_input_structure( ))"设置输入查询条件
IF_FPM_GUIBB_OVS~HANDLE_PHASE_2    Phase 2 (search, c.f. query_parameters, set_output_table( ))"查询处理
IF_FPM_GUIBB_OVS~HANDLE_PHASE_3    Phase 3 (set return value, c.f. selection)"返回结果

先在SEARCH的定义里,定义使用OVS。

  METHOD if_fpm_guibb_search~get_definition.
DATA:gt_field TYPE TABLE OF fpmgb_s_searchfield_descr,
gw_field TYPE fpmgb_s_searchfield_descr,
gt_value TYPE fpmgb_t_namevalue,
gw_value TYPE fpmgb_s_namevalue. DEFINE setv.
gw_value-value = &.
gw_value-name = &.
APPEND gw_value TO gt_value.
END-OF-DEFINITION. eo_field_catalog_attr ?= cl_abap_structdescr=>describe_by_name( 'ZCRMJP002' ).
"品牌下拉
gw_field-name = 'ZZZBRAND'.
SELECT line_key AS value value1 AS name INTO CORRESPONDING FIELDS OF TABLE gt_value FROM zcrmt_domain_t WHERE tab_name = 'ZTVS_BRAND' AND spras = sy-langu.
gw_field-enumeration[] = gt_value[].
gw_field-is_of_type = 'EN'.
APPEND gw_field TO et_field_description_attr. "inprogress 下拉
CLEAR:gt_value[],gw_field.
gw_field-name = 'ZZDLYRSN'.
SELECT estat AS value text AS name INTO CORRESPONDING FIELDS OF TABLE gt_value FROM zdelay_reason WHERE spras = 'J'."sy-langu.
gw_field-enumeration[] = gt_value[].
gw_field-is_of_type = 'EN'.
APPEND gw_field TO et_field_description_attr. "inprogress 下拉
CLEAR:gt_value[],gw_field.
gw_field-name = 'DATE_RANGE'.
setv 'D+0' 'D+0 今日'.
setv 'D-1' 'D-1 昨日'.
setv 'M+0' 'M+0 今月'.
setv 'M-1' 'M-1 先月'.
* setv 'W+0' 'W+0 今週'.
* setv 'W-1' 'W-1 先週'.
setv 'Y+0' 'Y+0 今年'.
setv 'Y-1' 'Y-1 去年'.
gw_field-enumeration[] = gt_value[].
gw_field-max_1_value = 'X'.
gw_field-is_of_type = 'EN'.
APPEND gw_field TO et_field_description_attr. "CHARG TYPE 下拉
CLEAR:gt_value[],gw_field.
gw_field-name = 'ZZCHARG_TYPE'.
SELECT line_key AS value value1 AS name INTO CORRESPONDING FIELDS OF TABLE gt_value
FROM zcrmt_domain_t WHERE spras = 'J'"sy-langu.
AND tab_name = 'ZJP_REPAIR_CHARGETPYE'.
gw_field-enumeration[] = gt_value[].
gw_field-is_of_type = 'EN'.
APPEND gw_field TO et_field_description_attr. "Process Type 下拉
CLEAR:gt_value[],gw_field.
gw_field-name = 'PROCESS_TYPE'.
gw_field-ovs_name = 'ZCL_FPM_DEMO_SEARCH'.
APPEND gw_field TO et_field_description_attr.
ENDMETHOD.

定义结构:

  METHOD IF_FPM_GUIBB_OVS~HANDLE_PHASE_0.
DATA:LT_COL TYPE WDR_NAME_VALUE_LIST,
LS_COL TYPE WDR_NAME_VALUE.
IF IV_FIELD_NAME = 'PROCESS_TYPE'.
LS_COL-NAME = 'PROCESS_TYPE'.
LS_COL-VALUE = 'Porcess Type'.
APPEND LS_COL TO LT_COL.
LS_COL-NAME = 'P_DESCRIPTION_20'.
LS_COL-VALUE = 'Description'.
APPEND LS_COL TO LT_COL.
ENDIF. IO_OVS_CALLBACK->SET_CONFIGURATION(
WINDOW_TITLE = 'Process Type'
* GROUP_HEADER = GROUP_HEADER
* LABEL_TEXTS = LABEL_TEXTS
TABLE_HEADER = 'Process Type List'
COLUMN_TEXTS = LT_COL
* COL_COUNT = COL_COUNT
* ROW_COUNT = ROW_COUNT
* TABLE_MULTI_SELECT = TABLE_MULTI_SELECT
). ENDMETHOD.

定义查询字段:

  METHOD IF_FPM_GUIBB_OVS~HANDLE_PHASE_1.
TYPES:BEGIN OF TY_PROCE,
PROCESS_TYPE TYPE CRMT_PROCESS_TYPE,
DESCRIPTION TYPE CRMT_DESCRIPTION_20,
END OF TY_PROCE.
DATA:LS_INPUT TYPE TY_PROCE. IF IV_FIELD_NAME = 'PROCESS_TYPE'.
IO_OVS_CALLBACK->CONTEXT_ELEMENT->GET_ATTRIBUTE(
EXPORTING
NAME = IO_OVS_CALLBACK->CONTEXT_ATTRIBUTE
IMPORTING
VALUE = LS_INPUT-PROCESS_TYPE
).
IO_OVS_CALLBACK->SET_INPUT_STRUCTURE(
EXPORTING
INPUT = LS_INPUT
).
ENDIF.
ENDMETHOD.

查询及输出:

  METHOD IF_FPM_GUIBB_OVS~HANDLE_PHASE_2.
TYPES:BEGIN OF TY_PROCE,
PROCESS_TYPE TYPE CRMT_PROCESS_TYPE,
DESCRIPTION TYPE CRMT_DESCRIPTION_20,
END OF TY_PROCE.
DATA:GT_LIST TYPE TABLE OF TY_PROCE.
FIELD-SYMBOLS:<FS> TYPE TY_PROCE. ASSIGN IO_OVS_CALLBACK->QUERY_PARAMETERS->* TO <FS>.
IF <FS>-PROCESS_TYPE IS NOT INITIAL.
IF <FS>-PROCESS_TYPE CS '*'.
REPLACE ALL OCCURRENCES OF '*' IN <FS>-PROCESS_TYPE WITH '%'.
SELECT PROCESS_TYPE
P_DESCRIPTION_20 AS DESCRIPTION
INTO TABLE GT_LIST FROM CRMC_PROC_TYPE_T
WHERE LANGU = 'E' AND PROCESS_TYPE LIKE <FS>-PROCESS_TYPE.
ELSE.
SELECT PROCESS_TYPE
P_DESCRIPTION_20 AS DESCRIPTION
INTO TABLE GT_LIST FROM CRMC_PROC_TYPE_T
WHERE LANGU = 'E' AND PROCESS_TYPE = <FS>-PROCESS_TYPE.
ENDIF.
ELSE.
SELECT PROCESS_TYPE
P_DESCRIPTION_20 AS DESCRIPTION
INTO TABLE GT_LIST FROM CRMC_PROC_TYPE_T
WHERE LANGU = 'E'.
ENDIF.
IO_OVS_CALLBACK->SET_OUTPUT_TABLE(
EXPORTING
OUTPUT = GT_LIST
).
ENDMETHOD.

返回选择的值:

  METHOD IF_FPM_GUIBB_OVS~HANDLE_PHASE_3.
TYPES:BEGIN OF TY_PROCE,
PROCESS_TYPE TYPE CRMT_PROCESS_TYPE,
DESCRIPTION TYPE CRMT_DESCRIPTION_20,
END OF TY_PROCE.
FIELD-SYMBOLS:<FS> TYPE TY_PROCE. ASSIGN IO_OVS_CALLBACK->SELECTION->* TO <FS>. IO_OVS_CALLBACK->CONTEXT_ELEMENT->SET_ATTRIBUTE(
EXPORTING
VALUE = <FS>-PROCESS_TYPE
NAME = IV_WD_CONTEXT_ATTR_NAME
).
ENDMETHOD.

FPM Search里给查询条件加OVS搜索帮助的更多相关文章

  1. cassandra——可以预料的查询,如果你的查询条件有一个是根据索引查询,那其它非索引非主键字段,可以通过加一个ALLOW FILTERING来过滤实现

    cassandra的索引查询和排序 转自:http://zhaoyanblog.com/archives/499.html   cassandra的索引查询和排序 cassandra的查询虽然很弱,但 ...

  2. jeecg 扩展封装查询条件 时间段查询

    使用jeecg框架开发的小伙伴们知道,添加查询条件,通常是我们加一个配置(query="true")就可以将该字段设置为查询条件.简单方便.但是这样的配置查询条件仅适用于输入框输入 ...

  3. SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法

    本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫,不知道各种 ...

  4. Spring NamedParameterJdbcTemplate命名参数查询条件封装, NamedParameterJdbcTemplate查询封装

    Spring NamedParameterJdbcTemplate命名参数查询条件封装, NamedParameterJdbcTemplate查询封装 >>>>>> ...

  5. SolrJ查询条件组合查询实现——(十六)

    带查询条件的实现原理: 查询按钮被包在一个大表单,表单还有三个隐藏域,一个商品筛选,一个 价格,一个排序,每次点击查询时候清空三个隐藏域,就带着一个大条件去查询;点击下面的筛选条件时,给隐藏域的筛选条 ...

  6. django orm 的查询条件

    Django的ORM查询操作: 查询数据库操作是一个非常重要的技术.在Django中,查询一般就是使用filter.exclude.get三个方法来实现,在调用这些方法的时候传递不同的查询条件来实现复 ...

  7. mysql 特定查询条件下导致的大海捞针

    order表: order type  gmt_create type 取值: 0,1  其中0非常多,1非常少. 当查询条件里 select * from order where type=0 an ...

  8. mybatis-plus QueryWrapper自定义查询条件

    mybatis-plus QueryWrapper自定义查询条件 mybatis-plus框架功能很强大,把很多功能都集成了,比如自动生成代码结构,mybatis crud封装,分页,动态数据源等等, ...

  9. mybatis 使用记录(二) 动态拼接查询条件

    2016-12-16 阅读项目代码时,在项目的xml文件中发现如下写法: SELECT student_user_id FROM tbr_student_class WHERE 1=1 <if ...

随机推荐

  1. 201871010134-周英杰《面想对象程序设计(java)》第十一周学习总结

    项目 内容 <面向对象程序设计(java)> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/ ...

  2. Java高级——泛型

    本文主要讲述泛型的使用 1.在集合中的使用 2.自定义泛型类.泛型接口.泛型方法 3.泛型与继承的关系 4.通配符 由于第一点和第二点在平常的编码工作中已熟练,本文重点讲述后面两点. 直接show t ...

  3. LoadRunner Controller集合点策略灰色问题 解决

    1.脚本里已经添加了集合点,但是在Controller里集合点策略是灰色的无法点击 2.问题解决: 将下图的勾选项去掉即可(系统默认是勾选上的) 去掉勾选后可以选择了:

  4. SQL Server 迁移数据库 (一)导入和导出

    今天正好换服务器,记录一下迁移数据库的过程. 以前经常用备份还原法,今天试试‘SQL Server 2016 导入和导出数据’这个看怎么玩. 1. 建数据库结构 1.1 在需要迁移的数据库名字上右击, ...

  5. <matrix> 73 329

    73. Set Matrix Zeroes - 先扫描第一行第一列,如果有0,则将各自的flag设置为true- 然后扫描除去第一行第一列的整个数组,如果有0,则将对应的第一行和第一列的数字赋0- 再 ...

  6. 在 Asp.Net Core 中安装 MVC

    在 ASP.NET Core 中安装 MVC 到目前为止,我们在本系列视频中使用的 ASP.NET Core 项目是使用“空”项目模板生成的.目前这个项目没有设置和安装 MVC. 两个步骤学会在 AS ...

  7. 测开面试 | Python常问算法

    1.排序 从小到大排序:sorted(list) 从大到小排序:sorted(list, reverse=True) sort() 方法,改变原有数组的顺序 sort(reverse=True) #! ...

  8. MACbook安装WIN7后亮度调节的办法

     MACbook安装WIN7后亮度调节的办法:1.按WIN+X打开移动中心,第一个就是亮度调节.或者右击托盘区的电池,选择移动中心也可以.2.右击托盘区域的电池,选择电源管理,在界面中调节亮度. 3. ...

  9. MySQL实战45讲学习笔记:第三十讲

    一.复习一下加锁规则 在第20和21篇文章中,我和你介绍了 InnoDB 的间隙锁.next-key lock,以及加锁规则.在这两篇文章的评论区,出现了很多高质量的留言.我觉得通过分析这些问题,可以 ...

  10. CUDA编程学习笔记1

    CUDA编程模型是一个异构模型,需要CPU和GPU协同工作. host和device host和device是两个重要的概念 host指代CPU及其内存 device指代GPU及其内存 __globa ...