ABAP RFC SQL 模糊查询和多个区间条件

对于非选择屏幕的情况,RFC接口输入数据后,如何处理字符串模糊查询、日期区间查询、数字区间查询:

一、所有字符支持模糊查询,在SAP SQL中,使用 %S%来实现。

二、区间查询有3种情况:

1、没有值输入,程序需要填入最大上下限

BETWEEN  20200101  TO  99991231

2、输入单个值,如20240930,代码中在BETWEEN,TO两个字段填入

BETWEEN  20240930  TO  20240930

3、输入两个值,如20240901-20240930代码中在BETWEEN,TO两个字段填入

BETWEEN  20240901  TO  20240930

FUNCTION ZSAP_LIGHT_ADS_GET.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(ZSAVEDATE) TYPE  CHAR8
*"     VALUE(ZSAVETIME) TYPE  CHAR6
*"     VALUE(ZTYPE) TYPE  CHAR10
*"     VALUE(ZSPNUMBER) TYPE  CHAR20
*"     VALUE(ZDATE_FROM) TYPE  CHAR8
*"     VALUE(ZDATE_TO) TYPE  CHAR8
*"     VALUE(ZFPNUMBER) TYPE  CHAR50
*"     VALUE(VIN) TYPE  CHAR20
*"     VALUE(ZFPTYPE) TYPE  CHAR50
*"     VALUE(ZMONEY_FROM) TYPE  J_1BEXBASE
*"     VALUE(ZMONEY_TO) TYPE  J_1BEXBASE
*"     VALUE(TTNAME) TYPE  CHAR50
*"     VALUE(SHNUMBER) TYPE  CHAR30
*"     VALUE(ZEMAIL) TYPE  CHAR50
*"     VALUE(ZBZ) TYPE  CHAR50
*"  TABLES
*"      OT_LIST STRUCTURE  ZTLIGHT_ADS
*"----------------------------------------------------------------------DATA:lv_ZTYPE TYPE string,lv_ZSPNUMBER TYPE string,lv_ZFPNUMBER TYPE string,lv_VIN TYPE string,lv_ZFPTYPE TYPE string,lv_TTNAME TYPE string,lv_SHNUMBER TYPE string,lv_ZEMAIL TYPE string,lv_ZBZ TYPE string.CONCATENATE '%' ZTYPE       '%' INTO lv_ZTYPE.CONCATENATE '%' ZSPNUMBER   '%' INTO lv_ZSPNUMBER.CONCATENATE '%' ZFPNUMBER   '%' INTO lv_ZFPNUMBER.CONCATENATE '%' VIN         '%' INTO lv_VIN.CONCATENATE '%' ZFPTYPE     '%' INTO lv_ZFPTYPE.CONCATENATE '%' TTNAME      '%' INTO lv_TTNAME.CONCATENATE '%' SHNUMBER    '%' INTO lv_SHNUMBER.CONCATENATE '%' ZEMAIL      '%' INTO lv_ZEMAIL.CONCATENATE '%' ZBZ         '%' INTO lv_ZBZ.IF ( ZDATE_from is INITIAL  AND  ZDATE_to is INITIAL ) .ZDATE_from = '20200101'.ZDATE_to = '99991231'.ENDIF.IF ( ZDATE_from is not INITIAL  AND  ZDATE_to is INITIAL ) .ZDATE_to = ZDATE_from.ENDIF.IF ( ZDATE_from is  INITIAL  AND  ZDATE_to is not INITIAL ) .ZDATE_from  = ZDATE_to.ENDIF.IF ( ZMONEY_from = 0  AND  ZMONEY_to = 0 ) .ZMONEY_from = '-99999999'.ZMONEY_to = '99999999999'.ENDIF.IF ( ZMONEY_from <> 0  AND  ZMONEY_to = 0 ) .ZMONEY_to = ZMONEY_from.ENDIF.IF ( ZMONEY_from = 0  AND  ZMONEY_to <> 0 ) .ZMONEY_from  = ZMONEY_to.ENDIF.SELECT *  FROM ZTLIGHT_ADSWHERE ZTYPE      like  @lv_ZTYPEAND   ZSPNUMBER  like  @lv_ZSPNUMBERAND   ZFPNUMBER  like  @lv_ZFPNUMBERAND   VIN        like  @lv_VINAND   ZFPTYPE    like  @lv_ZFPTYPEAND   TTNAME     like  @lv_TTNAMEAND   SHNUMBER   like  @lv_SHNUMBERAND   ZEMAIL     like  @lv_ZEMAILAND   ZBZ        like  @lv_ZBZAND   ZDATE      BETWEEN @ZDATE_from AND @ZDATE_toAND   ZMONEY     BETWEEN @ZMONEY_from AND @ZMONEY_toINTO TABLE @OT_LIST.ENDFUNCTION.

注意,在UI端要检查一下日期是否合法,数字区间要规范成0

 Get_InputParameters inputpara = new Get_InputParameters(){ZTYPE = toolStripTextBox1.Text,ZSPNUMBER = toolStripTextBox2.Text,VIN = toolStripTextBox3.Text,ZFPNUMBER = toolStripTextBox4.Text,ZDATE_FROM = MT.DATE_CHECK(toolStripTextBox5.Text),ZDATE_TO = MT.DATE_CHECK(toolStripTextBox6.Text),ZMONEY_FROM = MT.num_from(toolStripTextBox7.Text),ZMONEY_TO = MT.num_to(toolStripTextBox8.Text)};

using ClosedXML.Excel;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Drawing.Diagrams;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;//MyTools   MT
namespace Light
{internal class MT{public static double num_from(string s){double tmp = 0;if (s.Count() > 0) { tmp = double.Parse(s); }return tmp;}public static double num_to(string s){double tmp = 0;if (s.Count() > 0) { tmp = double.Parse(s); }return tmp;}public static string DATE_CHECK (string s){string tmp = "";if (s.Count()>0){ if (IsValidDate(s)){tmp = s;}else {MessageBox.Show("注意:这个日期是错误的!" + s );tmp = "20240930";}}return tmp;}public static string PickBox(ClosedXML.Excel.IXLCell cell){string tmp = "";if (!cell.IsEmpty() & cell.Value.IsText) { tmp = cell.Value.GetText(); }            else if (!cell.IsEmpty() & cell.Value.IsNumber) { tmp = cell.Value.GetNumber().ToString(); }return tmp;}//ClosedXML可能会把日期认成字符串public static string PickDate(ClosedXML.Excel.IXLCell cell){string tmp = "";if (cell.Value.IsDateTime){System.DateTime dateValue = cell.GetValue<System.DateTime>();tmp = dateValue.ToString("yyyyMMdd");}else{tmp = System.DateTime.Parse(cell.Value.GetText()).ToString("yyyyMMdd");}/*if (cell.DataType == XLDataType.DateTime){System.DateTime dateValue = cell.GetValue<System.DateTime>();tmp = dateValue.ToString("yyyyMMdd");}else{tmp = System.DateTime.Parse(cell.GetString()).ToString("yyyyMMdd");}*/return tmp;}public static bool IsValidDate(string dateString){if (dateString == null || dateString.Length != 8)return false;int year = int.Parse(dateString.Substring(0, 4));int month = int.Parse(dateString.Substring(4, 2));int day = int.Parse(dateString.Substring(6, 2));// 检查年份是否在1-9999范围内if (year < 1 || year > 9999)return false;// 检查月份是否在1-12范围内if (month < 1 || month > 12)return false;// 根据年份和月份判断天数的合法范围int daysInMonth = DateTime.DaysInMonth(year, month);// 检查日期是否在1-最大日数范围内if (day < 1 || day > daysInMonth)return false;return true;}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/461227.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python通过pyperclip库操作剪贴板

pyperclip介绍 pyperclip是一个python库用于操作剪贴板&#xff0c;可以非常方便地将文本复制到剪贴板或从剪贴板获取文本。 通过pip进行安装&#xff1a;pip install pyperclip pyperclip的github地址 pyperclip使用 复制到剪贴板 import pypercliptext "Hello, Wo…

Golang | Leetcode Golang题解之第516题最长回文子序列

题目&#xff1a; 题解&#xff1a; func longestPalindromeSubseq(s string) int {n : len(s)dp : make([][]int, n)for i : range dp {dp[i] make([]int, n)}for i : n - 1; i > 0; i-- {dp[i][i] 1for j : i 1; j < n; j {if s[i] s[j] {dp[i][j] dp[i1][j-1] …

Virtuoso使用layout绘制版图、使用Calibre验证DRC和LVS

1 绘制版图 1.1 进入Layout XL 绘制好Schmatic后&#xff0c;在原理图界面点击Launch&#xff0c;点击Layout XL进入版图绘制界面。 1.2 导入元件 1、在Layout XL界面左下角找到Generate All from Source。 2、在Generate Layout界面&#xff0c;选中“Instance”&#…

摩科智能化一体化防盗门(物联网)项目

一&#xff0c;选题依据及意义 ①理论意义 目前国内外学者对智能门锁的研究取得了一些成果&#xff0c;但都局限于猫眼和门锁设计上。本课题在产品设计、服务设计等理论基础上&#xff0c;深入研究在安全与防护的背景下简约化即智能应用的门锁创新。在理论与实际探索上建立了…

记录一下方便的条件编译

1. 需要准备&#xff1a; 1-1、npm i cross-env -D 是跨平台的自定义编译 1-2、构造工具&#xff1a;vite/webpack > vite: import.meta.env.VITE_NODE_ENV > webpack:process.env.NODE_ENV这里使用vite为例子 1-3、 package.json 2. 思路与步骤 首先我们知道 axio…

企业数据泄露安全演练(分享)

该文章主要分享作者在XXX企业内部做的一次【数据泄露安全演练】&#xff0c;涉及演练背景、目的、演练流程、剧本设定、预期行为、结果等等。 以下是完整的演练方案&#xff0c;有不足的地方希望大家指出&#xff01;&#xff01; 需要原版方案电子版的可以联系作者获取。 演练…

[前端面试]计算机网络

TCP/IP 与OSI TCP/IP TCP/IP 四层模型是一个分层网络通信模型&#xff0c; 它将网络通信过程分为四个层次&#xff0c;这四层分别是&#xff1a;网络接口层、互联网层、传输层和应用层。 网络接口层负责在计算机和网络硬件之间传输数据&#xff0c;负责在物理网络上发送和接…

Conmi的正确答案——在Kibana中进入Elasticsearch的索引管理页面

Elasticsearch版本&#xff1a;7.17.25 Kibana版本&#xff1a;7.17.25 注&#xff1a;索引即类似mysql的表。 0、进入首页 1、未创建任何“索引模式”时&#xff1a; 1.1、点击左边的三横菜单&#xff1b; 1.2、点击“Discover”&#xff0c;进入“发现”页面&#xff1b; 2…

Marin说PCB之电源的Surface Current Density知多少?

小编我是一位资深的国漫迷&#xff0c;像什么仙逆&#xff0c;斗破&#xff0c;斗罗&#xff0c;完美世界&#xff0c;遮天&#xff0c;凡人修仙传&#xff0c;少年歌行等&#xff0c;为了可以看这些视频小编我不惜花费了攒了很多年的私房钱去开了这个三个平台的会员啊&#xf…

安卓开发之数据库的创建与删除

目录 前言&#xff1a;基础夯实&#xff1a;数据库的创建数据库的删除注意事项 效果展示&#xff1a;遇到问题&#xff1a;如何在虚拟机里面找到这个文件首先&#xff0c;找到虚拟机文件的位置其次&#xff0c;找到数据库文件的位置 核心代码&#xff1a; 前言&#xff1a; 安…

UV紫外相机

在产业设备领域&#xff0c;运用相机进行检测的需求很大&#xff0c;应用也很多样&#xff0c;对于图像传感器性能的期望逐年提升。在这样的背景下&#xff0c;可拍摄紫外线&#xff08;UV&#xff1a;Ultra Violet&#xff09;图像的相机拥有越来越广泛的应用场景。将UV照明和…

Python学习的自我理解和想法(22)

学的是b站的课程&#xff08;千锋教育&#xff09;&#xff0c;跟老师写程序&#xff0c;不是自创的代码&#xff01; 今天是学Python的第22天&#xff0c;学的内容是正则表达式&#xff0c;明天会出一篇详细实例介绍。电脑刚修好&#xff01;开学了&#xff0c;时间不多&…

ARM base instruction -- bfi

Bitfield Insert copies a bitfield of <width> bits from the least significant bits of the source register to bit position <lsb> of the destination register, leaving the other destination bits unchanged. 位域插入将<width>位的位域从源寄存器的…

Python实现深度学习模型预测控制(tensorflow)DL-MPC(Deep Learning Model Predictive Control

链接&#xff1a;深度学习模型预测控制 &#xff08;如果认为有用&#xff0c;动动小手为我点亮github小星星哦&#xff09;&#xff0c;持续更新中…… 链接&#xff1a;WangXiaoMingo/TensorDL-MPC&#xff1a;DL-MPC&#xff08;深度学习模型预测控制&#xff09;是基于 P…

ubuntu交叉编译expat库给arm平台使用

1.下载expat库源码: https://github.com/libexpat/libexpat/release?page=2 wget https://github.com/libexpat/libexpat/release/download/R_2_3_0/expat-2.3.0.tar.bz2 下载成功: 2.解压expat库,并进入解压后的目录: tar xjf expat-2.3.0.tar.bz2 cd expat-2.3.0 <…

C# 编程语言学习教程

C# 编程语言学习教程 目录 C# 简介 1.1 什么是 C#1.2 C# 的特点1.3 C# 的应用领域 环境搭建 2.1 安装 Visual Studio2.2 创建第一个 C# 项目 基础语法 3.1 数据类型3.2 控制结构3.3 数组与字符串 面向对象编程 4.1 类与对象4.2 继承与多态4.3 接口与抽象类 常用库与框架 5.1 .…

文件上传知识梳理:原理、工具、绕过、利用与防御

文章简介&#xff1a; 本文全面梳理了文件上传相关知识&#xff0c;包括文件上传漏洞的原理及危害&#xff0c;介绍了 Webshell 相关工具&#xff08;如冰蝎、哥斯拉、蚁剑&#xff09;&#xff0c;详细阐述了文件上传绕过检测的多种方法&#xff08;前端检测、服务端检测的各…

学Linux的第六天

目录 账户和组管理 工作组管理 创建工作组groupadd 修改工作组groupmod 添加/删除组成员gpasswd 删除工作组groupdel 查看用户登录系统的情况 users查看当前登录系统的用户 last命令 lastlog命令 w命令 显示登录到系统的用户信息 who命令 Linux文件系统权限 文件…

KKFileView v4.4.0文件预览服务 编译和window运行和nginx代理设置

目录 一、拉取代码 二、编译打包 三、测试使用 四、实际使用 五、其他问题 本文记录&#xff0c;使用最新v4.4.0版本KKFileView源代码&#xff0c;在本地window上搭建文件预览服务&#xff0c;并通过nginx反向代理实现https访问。 一、拉取代码 从官网github上下载源代码…

树莓派基础设置--1.更新和升级操作系统

注意&#xff1a;使树莓派保持最新状态可以提高系统的安全性&#xff0c;但对于开发人员并不建议随意更新&#xff01; 一、图像化界面 一般桌面的右上角也会显示树莓派系统更新的提示&#xff0c;可以点击相应选项进行更新&#xff01; 二、使用APT 用来管理软件安装、升级…