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. android主流开源自动化框架(monkeyrunner,robotium,uiautomator)转载

    摘要: android自动化框架小结:monkey,monkeyrunner,cts,robotium,uiautomator android自动化框架: Uiautomator: 优点:可以对所有操 ...

  2. 洛谷P1706 全排列问题

    题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入输出格式 输入格式: n(1≤n≤9) 输出格式: 由1-n组成的所有不重复的数字序列, ...

  3. Cookie 技术

    Cookie 学习: 问题: HTTP 协议是没有记忆功能的,一次请求结束后,相关数据会被销毁.如果第二次的请求需要使用相同的请求数据怎么办呢?难道是让用户再次请求书写吗? 解决:使用 Cookie ...

  4. MySQL单表查询 条件查询,分组

    目录 1 where 条件查询 between like not in 2 group by 分组 聚合函数:max min sum avg count 3 having 过滤 4 distinct ...

  5. Codechef August Challenge 2019 Division 2

    Preface 老年菜鸡终于开始打CC了,由于他太弱了所以只能打Div2 因为台风的原因challenge并没有写,所以水了个Rank7 A Football SB模拟题不解释 #include< ...

  6. oracle 错误 TNS-01190与oracle 登入没反应操作

    1,问题描述 [oracle@node2 ~]$ lsnrctl stop LSNRCTL - Production on -MAY- :: Copyright (c) , , Oracle. All ...

  7. Failed to start LSB: Bring up/down networking 另外一个偏方

    之前网卡启动不了,会是配置不对,或者是移动了虚拟机导致hwaddr发生了变化. 但是今天没改动什么,突然用不了,一直报错Failed to start LSB: Bring up/down .... ...

  8. 2 datax mysql 和 mysql之间相互导入

    插件文档: https://github.com/alibaba/DataX/blob/master/hdfswriter/doc/hdfswriter.md   1,参照第1篇日记,安装好datax ...

  9. odoo action

    动作的加载: 刷新视图页面执行load_views方法 /web/dataset/call_kw/model_name/load_views 在odoo/models.py的BaseModel中有一个 ...

  10. PyCharm创建Django项目并连接mysql数据库

    0. 安装Django pip install django 1. 新建项目 注:我的Pycharm为社区版,创建项目时,File->New Project- 显示为: ​ 注意勾选内容. 如果 ...