FPM Search里给查询条件加OVS搜索帮助
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搜索帮助的更多相关文章
- cassandra——可以预料的查询,如果你的查询条件有一个是根据索引查询,那其它非索引非主键字段,可以通过加一个ALLOW FILTERING来过滤实现
cassandra的索引查询和排序 转自:http://zhaoyanblog.com/archives/499.html cassandra的索引查询和排序 cassandra的查询虽然很弱,但 ...
- jeecg 扩展封装查询条件 时间段查询
使用jeecg框架开发的小伙伴们知道,添加查询条件,通常是我们加一个配置(query="true")就可以将该字段设置为查询条件.简单方便.但是这样的配置查询条件仅适用于输入框输入 ...
- SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法
本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫,不知道各种 ...
- Spring NamedParameterJdbcTemplate命名参数查询条件封装, NamedParameterJdbcTemplate查询封装
Spring NamedParameterJdbcTemplate命名参数查询条件封装, NamedParameterJdbcTemplate查询封装 >>>>>> ...
- SolrJ查询条件组合查询实现——(十六)
带查询条件的实现原理: 查询按钮被包在一个大表单,表单还有三个隐藏域,一个商品筛选,一个 价格,一个排序,每次点击查询时候清空三个隐藏域,就带着一个大条件去查询;点击下面的筛选条件时,给隐藏域的筛选条 ...
- django orm 的查询条件
Django的ORM查询操作: 查询数据库操作是一个非常重要的技术.在Django中,查询一般就是使用filter.exclude.get三个方法来实现,在调用这些方法的时候传递不同的查询条件来实现复 ...
- mysql 特定查询条件下导致的大海捞针
order表: order type gmt_create type 取值: 0,1 其中0非常多,1非常少. 当查询条件里 select * from order where type=0 an ...
- mybatis-plus QueryWrapper自定义查询条件
mybatis-plus QueryWrapper自定义查询条件 mybatis-plus框架功能很强大,把很多功能都集成了,比如自动生成代码结构,mybatis crud封装,分页,动态数据源等等, ...
- mybatis 使用记录(二) 动态拼接查询条件
2016-12-16 阅读项目代码时,在项目的xml文件中发现如下写法: SELECT student_user_id FROM tbr_student_class WHERE 1=1 <if ...
随机推荐
- appium python demo
#coding=utf-8from appium import webdriverdesired_caps={}desired_caps["platformName"]=" ...
- 玩转淘宝SVN
http://guojun2sq.blog.163.com/blog/static/64330861201492965059142/(参考) 三步走: 1.注册账号http://code.taobao ...
- day32_8_14 并发编程三 线程的GIL
一.GIL 什么是GIL? GIL是一个全局排他锁,简单来说就是为了防止多线程并行操作的锁.这里有官方解释: In CPython, the global interpreter lock, or G ...
- VIJOS-P1325 桐桐的糖果计划
VIJOS-P1325 桐桐的糖果计划 JDOJ 1432 桐桐的糖果计划 https://neooj.com/oldoj/problem.php?id=1432 Description 桐桐很喜欢吃 ...
- 关于git设置多个账号的问题,ideal中clone项目
一.排坑 1.ping github.com超时.修改C:\Windows\System32\drivers\etc的hosts文件,添加 # GitHub地址 192.30.255.112 gith ...
- 线段树模板(无lazy优化)
区间修改与区间查询问题 模板: int ans; struct node{ int l,r,v; node(){v=;} }tree[LEN*]; int arr[LEN]; //建树 void bu ...
- mod35云掩膜产品用法
在网上一直没找到一个明确说怎么用MOD35产品的,都是说去看用户手册,第一次看了过一段时间我又忘记怎么搞了,赶紧记下来. 而且现在才发现第一次自己搞的都弄错了. 简单的判断是否是云,只要读取mod35 ...
- Spring security 知识笔记【入门】
一.生成spring boot项目文件 二.pom文件如下 <?xml version="1.0" encoding="UTF-8"?> <p ...
- ApplicationInsights的探测器尝鲜
通常我们可以依靠ApplicationInsights(以下简称ai)来收集比如请求(request),依赖项(dependencies),异常(exception)等信息,但是无法收集到比如一个方法 ...
- 【Struts】Struts框架配置详解
1.首先将所必须的Jar包放到项目的WebRoot/WEB-INF/lib目录下. 如果你没有这些Jar文件,你可以到Struts官网上下载:http://struts.apache.org/.因为经 ...