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. LeetCode 21. Merge Two Sorted Lists合并两个有序链表 (C++)

    题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splici ...

  2. LeetCode 110. Balanced Binary Tree平衡二叉树 (C++)

    题目: Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced bin ...

  3. JDOJ 1139 水仙花数

    JDOJ 1139: 水仙花数 https://neooj.com/oldoj/problem.php?id=1139 Description 打印出所有"水仙花数",所谓&quo ...

  4. spring cloud fegin传递request header

    本文链接:https://blog.csdn.net/zhongzunfa/article/details/82791903 1.概述 今天一个朋友, 遇到一个如何在使用spring cloud fe ...

  5. numpy cookbook

    1.第一章 import numpy as np import matplotlib.pyplot as plt import scipy import PIL import scipy.misc l ...

  6. Node.js 入门篇

    Node.js 使用C++开发的. Node.js是一个事件驱动服务端JavaScript环境,只要能够安装相应的模块包,就可以开发出需要的服务端程序,如HTTP服务端程序.Socket程序等. No ...

  7. cf1207解题报告

    cf1207解题报告 A 模拟 #include <bits/stdc++.h> #define ll long long using namespace std; ll T,a,b,c, ...

  8. [LeetCode] 377. Combination Sum IV 组合之和之四

    Given an integer array with all positive numbers and no duplicates, find the number of possible comb ...

  9. [LeetCode] 327. Count of Range Sum 区间和计数

    Given an integer array nums, return the number of range sums that lie in [lower, upper] inclusive.Ra ...

  10. DVWA Command Injection 通关教程

    Command Injection 介绍 命令注入(Command Injection),对一些函数的参数没有做过滤或过滤不严导致的,可以执行系统或者应用指令(CMD命令或者bash命令)的一种注入攻 ...