ABAP range 用法
转自http://www.sapjx.com/abap-range-table.html
1. Range Table 概述
Range Table 为 SAP R/3系统标准内表的一种,结构与 Selection Table 一致,
由 SIGN, OPTION, LOW 和 HIGH字段组成;
可以通过 TYPE RANGE OF 语句或 RANGES 关键字定义 Range Table。
Range Table 常用于Open SQL语句中的条件筛选,可以优化取数效率与程序性能。
2.定义Range Table
可以通过两种方式定义:
1) TYPE RANGE OF…
DATA rtab {TYPE RANGE OF type}|{LIKE RANGE OF dobj}
[INITIAL SIZE n]
[WITH HEADER LINE]
[VALUE IS INITIAL]
[READ-ONLY].
2) RANGES
语法:
RANGES rtab FOR dobj [OCCURS n].
* 全局变量
DATA: gt_marc TYPE STANDARD TABLE OF marc.
*-------------------------------------------
* 通过 RANGE OF 定义
*-------------------------------------------
DATA: gr_werks TYPE RANGE OF werks_d,
gw_werks LIKE LINE OF gr_werks.
* 宏定义
DEFINE set_range.
gw_werks-sign = 'I'.
gw_werks-option = 'EQ'.
gw_werks-low = &1.
append gw_werks to gr_werks.
END-OF-DEFINITION.
set_range '1000'.
set_range '1010'.
SELECT *
FROM marc
INTO CORRESPONDING FIELDS OF TABLE gt_marc
WHERE werks IN gr_werks.
*-------------------------------------------
* 通过 RANGES 定义
*-------------------------------------------
TABLES:marc.
RANGES: gr_matnr FOR marc-matnr.
这里需要注意,For后面字段必须为参考表的字段,不能使用 Data Element 来定义,否则系统会报出错误。
3. 在 Subroutine 中传输 Range Table
TABLES: mara.
* 全局变量
DATA: gt_mara TYPE STANDARD TABLE OF mara.
DATA: gr_matnr TYPE RANGE OF mara-matnr WITH HEADER LINE,
gl_matnr LIKE LINE OF gr_matnr.
*&---------------------------------------------------------------------*
*& Form frm_get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_MARA text
* -->PR_MATNR text
*----------------------------------------------------------------------*
FORM frm_get_data TABLES pt_mara STRUCTURE mara
pr_matnr STRUCTURE gr_matnr.
SELECT matnr mtart matkl
FROM mara
INTO CORRESPONDING FIELDS OF TABLE pt_mara
WHERE matnr IN pr_matnr.
ENDFORM. " F_GET_DATA
4. 在 Function Module 中传输 Range Table
当需要在 Function Module 中传输Range Table 时,可以直接参考预定义类型 Table:
FIELD-SYMBOLS < fs_line > TYPE ANY.
FIELD-SYMBOLS < fs_value > TYPE ANY.
DATA lv_value TYPE char40.
LOOP AT t_selection ASSIGNING < fs_line >.
ASSIGN COMPONENT 'LOW' OF STRUCTURE < fs_line > TO < fs_value >.
lv_value = < fs_value >.
…
ENDLOOP.
本人常年接收SAP运维和远程项目,ECC,S/4HANA,CRM,WDA.
远程人天可谈,终身售后,有活请联系V信:18925782767(问问题免费,欢迎交流!)
!!请关注本人技术分享公众号:SAP翔子(可扫头像二维码)
每天分享新知识,博客文章也会陆续整理并迁移至公众号,与您一起共同学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2014-02-21 ABAP 关键字(1)
2014-02-21 晚 安
2014-02-21 八卦桐华小说里的那些逆天的原型