ABAP: SQL 多值查询

基础查数据

问题举例:例如查物料类型为ZFRT、ZROH和ZRSA的物料编码。

1、直接查询,三种不同类型的物料类型是或的关系。

  SELECT DISTINCT ma~matnr  ma~mtart
   FROM mara AS ma
  INNER JOIN mbewh AS mb
    ON ma~matnr = mb~matnr
  INTO CORRESPONDING FIELDS OF TABLE gt_tab
  WHERE ma~mtart EQ 'ZFRT' OR
        ma~mtart EQ 'ZROH' OR
        ma~mtart EQ 'ZRSA'.

2、如果对1进行优化,三种物料类型放在列表项中,使用关键字IN,这样查询等价于1.

  SELECT DISTINCT ma~matnr  ma~mtart
   FROM mara AS ma
  INNER JOIN mbewh AS mb
    ON ma~matnr = mb~matnr
  INTO CORRESPONDING FIELDS OF TABLE gt_tab
  WHERE ma~mtart IN ( 'ZFRT' , 'ZROH', 'ZRSA' ).

3、定义区间函数,RANGE 内表

https://www.cnblogs.com/buduzhiren/p/13131483.html

SAP ABAP编程 Ranges用法_m15188153014的博客-CSDN博客

定义区间结构:

 TYPES: BEGIN OF ty_sign,
           sign   TYPE sign,
           option TYPE option,
           low    TYPE mtart,
           high   TYPE mtart,
         END OF ty_sign.           "定义区间结构


(1)直接赋值,不建议这种直接堆叠赋值方式,代码量比较多。


  DATA: lt_mtart TYPE TABLE OF ty_sign WITH HEADER LINE.  "定义区间表
  
  lt_mtart-sign = 'I'.    "赋值
  lt_mtart-option = 'EQ'.
  lt_mtart-low = 'ZFRT'.
  APPEND lt_mtart TO lt_mtart.
  lt_mtart-sign = 'I'.
  lt_mtart-option = 'EQ'.
  lt_mtart-low = 'ZROH'.
  APPEND lt_mtart TO lt_mtart.
  lt_mtart-sign = 'I'.
  lt_mtart-option = 'EQ'.
  lt_mtart-low = 'ZRSA'.
  APPEND lt_mtart TO lt_mtart.
  CLEAR lt_mtart.

(2) 优化:使用VALUE#() 进行赋值,建议这种方式,代码量会大大减少。

  DATA: lt_mtart TYPE TABLE OF ty_sign .

 lt_mtart = VALUE #( sign = 'I' option = 'EQ'  ( low = 'ZFRT' high = '' )
                                               ( low = 'ZROH' high = '' )
                                               ( low = 'ZRSA' high = '' )
                    ).

(3)或者用APPEND VALUE#() TO ITAB. 与(2)二者等同。

DATA: lt_mtart TYPE TABLE OF ty_sign . 

APPEND  VALUE #( sign = 'I' option = 'EQ'  low = 'ZFRT' high = '' ) TO lt_mtart.
APPEND  VALUE #( sign = 'I' option = 'EQ'  low = 'ZROH' high = '' ) TO lt_mtart.
APPEND  VALUE #( sign = 'I' option = 'EQ'  low = 'ZRSA' high = '' ) TO lt_mtart.

对RANGE内表 赋值完成后的,以上三种方式的查询语句均相同。

  SELECT DISTINCT ma~matnr  ma~mtart
  FROM mara AS ma
  INNER JOIN mbewh AS mb
    ON ma~matnr = mb~matnr
  INTO CORRESPONDING FIELDS OF TABLE gt_tab
  WHERE ma~mtart IN lt_mtart.

总结: 1、如果是多个字符,使用第二种,IN +列表项,查询最为简洁;

2、如果有多个区间,可以使用VALUE#()方式进行赋值。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EmbedPress Pro 在WordPress网站中嵌入任何内容

EmbedPress Pro可让您通过高级自定义、自定义品牌、延迟加载和更多惊人功能嵌入源。为古腾堡块和Elementor编辑器提供支持的一体化 WordPress 嵌入解决方案。使用 EmbedPress 在古腾堡创建交互式内容。使用 EmbedPress 的古腾堡块立即将任何内容嵌入到您的网站。 网址: EmbedP…

最强自动化测试框架Playwright(29)-文件选择对象

FileChooser对象通过page.on("filechoose")事件监听。 如下代码实现点击百度搜图按钮,上传文件进行搜索。 from playwright.sync_api import Playwright, sync_playwright, expectdef run(playwright: Playwright) -> None:browser playwright.chro…

linux 学习————LNMP之分布式部署

目录 一、概述 二、LNMP环境部署 三、配置nginx 四、 配置php使nginx能够解析.php 五、配置mysql 六、配置discuz进行登录论坛访问测试 一、概述 LNMP代表 Linux、Nginx、MySQL、PHP,是一种常用的服务器架构。它由以下组件组成: Linux:作…

docker的数据管理

目录 一.如何管理docker容器中的数据 二.数据卷 2.1数据卷原理 2.2数据卷作用 2.3数据卷案例 三.数据卷容器 3.1数据卷容器的作用 3.2端口映射 一.如何管理docker容器中的数据 管理Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器( DataVolumes Contain…

查看 Linux 内核版本的几种方法

uname -a uname -srm uname -r 分拆:Linux 5.13.0-19-generic x86 64 5-内核版本 13-主修订版本 0-19 -次要修订版本 过查看 /proc/version 文件确认 /proc 目录包含虚拟文件,其中包含有关系统内存,CPU内核,已安装文件系统等的信…

详解零售行业供应链管理核心KPI指标(四)

现在零售行业的供应链管理越来越复杂了,复杂的原因是因为市场的变化、商业模式、销售模式的变化。 比如在以往传统的线上电商平台、线下渠道,现在线上电商还增加直播带货,线下渠道又增加了O2O模式。从一线城市的供应链还是做到供应链下沉到二…

开源数据库Mysql_DBA运维实战 (修改root密码)

MySQL——修改root密码的4种方法 本文以windows为例为大家详细介绍下MySQL修改root密码的4种方法,大家可以可以根据的自己的情况自由选择,希望对大家有所帮助 方法1: 用SET PASSWORD命令 首先登录MySQL。 格式:mysql> set pass…

Linux命令200例:ps用于查看当前系统中运行的进程信息(常用)

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…

Linux安装Nginx

Linux安装Nginx 下载Nginx上传文件至服务器编译启动 下载Nginx 官网下载地址:https://nginx.org/en/download.html 或者关注wx公众号:一颗星宇宙,发送:Linux服务部署获取下载地址 上传文件至服务器 使用rz命令进行选择文件上传…

拉丁方设计资料的方差分析(SPSS版+SAS版)

拉丁方设计(Latin square design):实验研究中涉及一个处理因素和两个控制因素,每个因素的类别数或水平数相等,此时可采用拉丁方设计,将两个控制因素分别安排在拉丁方设计的行和列上。该设计类型仍为单因素方…

爬虫逆向实战(十五)--阿某某营登录

一、数据接口分析 主页地址:阿某某营 1、抓包 通过抓包可以发现登录接口是Users/Login 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个s加密参数 请求头是否加密? 无响应是否加密? 无cookie是…

工程项目管理系统源码+功能清单+项目模块+spring cloud +spring boot em

​ 工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

APP内嵌小游戏,全面提升用户活跃、留存

开发者想要提高APP的用户活跃度可以通过拉新的方式完成,但目前拉新的成本较高,而且新的目标用户一般很难留住,流失率也比较高。 此时,可以通过植入小游戏的方式来提高用户活跃度,游戏的优势在于可以快速吸引用户&…

Stephen Wolfram:那么…ChatGPT 在做什么,为什么它有效呢?

So … What Is ChatGPT Doing, and Why Does It Work? 那么…ChatGPT在做什么,为什么它有效呢? The basic concept of ChatGPT is at some level rather simple. Start from a huge sample of human-created text from the web, books, etc. Then train…

时序预测 | MATLAB实现EEMD-GRU、GRU集合经验模态分解结合门控循环单元时间序列预测对比

时序预测 | MATLAB实现EEMD-GRU、GRU集合经验模态分解结合门控循环单元时间序列预测对比 目录 时序预测 | MATLAB实现EEMD-GRU、GRU集合经验模态分解结合门控循环单元时间序列预测对比效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 1.MATLAB实现EEMD-GRU、GRU时…

Linux系统的历史记录添加时间和IP信息

1 系统history记录优化 默认情况下,系统是不会记录我们执行命令的时间等相关信息的。 1.1 HISTCONTROL 介绍 使用HISTCONTROL变量,您可以控制 bash 如何存储您的命令历史记录。您可以告诉它忽略重复的命令和/或忽略具有前导空格的命令。 在命令行工作…

2023国考(地市级)判断推理

题目 黑白块 例题 例题 例题 例题

Unity用NPOI创建Exect表,保存数据,和修改删除数据。以及打包后的坑——无法打开新创建的Exect表

先说坑花了一下午才找到解决方法解决, 在Unity编辑模式下点击物体创建对应的表,获取物体名字与在InputText填写的注释数据。然后保存。创建Exect表可以打开,打包PC后,点击物体创建的表,打不开文件破损 解决方法&#…

jeecgboot-vue3 查询区 label 文字居左实现

以系统管理中的系统角色界面为例 操作步骤 1. 通过路由或者工具找到当前代码所在的文件 src/views/system/role/index.vue 2. 找到 useListPage 调用,fromConfig 对象加入 labelWidth 和 rowProps 属性 formConfig: {labelWidth: 65, // 设置所有的label宽rowPr…

RISC-V在快速发展的处理器生态系统中找到立足点

原文:RISC-V Finds Its Foothold in a Rapidly Evolving Processor Ecosystem 作者:Agam Shah 转载自:https://thenewstack.io/risc-v-finds-its-foothold-in-a-rapidly-evolving-processor-ecosystem/ 以下是正文 But the open source pr…