当前位置: 首页 > news >正文

ABAP: SQL 多值查询

基础查数据

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

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

  SELECT DISTINCT ma~matnr  ma~mtartFROM mara AS maINNER JOIN mbewh AS mbON ma~matnr = mb~matnrINTO CORRESPONDING FIELDS OF TABLE gt_tabWHERE ma~mtart EQ 'ZFRT' ORma~mtart EQ 'ZROH' ORma~mtart EQ 'ZRSA'.

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

  SELECT DISTINCT ma~matnr  ma~mtartFROM mara AS maINNER JOIN mbewh AS mbON ma~matnr = mb~matnrINTO CORRESPONDING FIELDS OF TABLE gt_tabWHERE 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~mtartFROM mara AS maINNER JOIN mbewh AS mbON ma~matnr = mb~matnrINTO CORRESPONDING FIELDS OF TABLE gt_tabWHERE ma~mtart IN lt_mtart.

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

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

http://www.lryc.cn/news/119416.html

相关文章:

  • 分布式学习最佳实践:从分布式系统的特征开始
  • 第三章 图论 No.8最近公共祖先lca, tarjan与次小生成树
  • [Kubernetes]Kubeflow Pipelines - 基本介绍与安装方法
  • Sui网络的稳定性和高性能
  • RabbitMQ 安装教程
  • STM32F429IGT6使用CubeMX配置GPIO点亮LED灯
  • DOM的节点操作+事件高级+DOM事件流+事件对象
  • 云端剪切板,让你的数据同步无界
  • Location匹配与Rewrite重写
  • Docker源码阅读 - goland环境准备
  • 数据库信息速递 -- MariaDB 裁员后,前景不确定 (翻译)
  • 4.1 Windows终端安全
  • win10强制卸载奇安信天擎
  • npm常用命令
  • (一)创建型设计模式:4、原型模式(Prototype Pattern)
  • 【算法学习】高级班九
  • 数据安全加固:深入解析滴滴ES安全认证技术方案
  • Typescript第九/十章 前后端框架,命名空间和模块
  • LLM - argparse 解析脚本参数
  • 谈一谈在两个商业项目中使用MVI架构后的感悟
  • ApacheCon - 云原生大数据上的 Apache 项目实践
  • Git 代码分支规范
  • ATFX汇评:美7月通胀率数据基本符合预期,美指仍无法站稳103关口
  • 系统架构设计专业技能 · 软件工程(一)【系统架构设计师】
  • C语言 指针的运算
  • 【JAVA基础】- 同步非阻塞模式NIO详解
  • dingding机器人
  • 6.6 实现卷积神经网络LeNet训练并预测手写体数字
  • Django路由Router
  • 蜜蜂路线 P2437