SAP报表的性能优化SAP报表的性能优化
有时我们所能用的查询条件不是很理想,比如查询LIKP却必须用公司代码,而非销售组织。
此时普通做法是用表LIKP与TVKO根据VKORG进行联接,从而限制TVKO~BUKRS的值。
还有一种有效的办法是,通过TVKO查询到当期公司代码所对应的全部销售组织,从而组建一个RANGE出来,再根据此RANGE查询LIKP。
提示:DATA r_vkorg TYPE RANGE OF likp-vkorg.
SIGN = ‘I’, OPTION = ‘EQ’, LOW = ‘XXXX’ 即可往r_vkorg中放入多个单值。
假设我们有个内表代表销售订单的行项目,该内表有10万行。此时我们要根据LIPS的VGBEL和VGPOS,查询这些订单行项目对应的交货单行项目。
如果用SELECT SINGLE的话写法很简单:
LOOP AT it_vbap INTO wa_vbap.
SELECT SINGLE vbeln posnr
FROM lips INTO (wa_vbap-vbeln_vl, wa_vbap-posnr_vl)
WHERE vgbel = wa_vbap-vbeln AND
vgpos = wa_vbap-posnr AND
vgtyp = ‘C’.
MODIFY it_vbap FROM wa_vbap.
ENDLOOP.
如果用For All Entries则写法分2步:
SELECT vbeln posnr vgbel vgpos
FROM lips INTO TABLE it_lips
For All Entries IN it_vbap
WHERE vgbel = it_vbap-vbeln AND
vgpos = it_vbap-posnr AND
vgtyp = ‘C’. “此交货单是根据订单创建的
LOOP AT it_vbap INTO wa_vbap.
READ TABLE it_lips INTO wa_lips WITH KEY vgbel = wa_vbap-vbeln
vgpos = wa_vbap-vgpos.
IF sy-subrc = 0.
wa_vbap-vbeln_vl = wa_lips-vbeln.
wa_vbap-posnr_vl = wa_lips-posnr.
MODIFY it_vbap FROM wa_vbap.
ENDIF.
ENDLOOP.
对于SELECT SINGLE而言,由于LIPS有个VGB的SAP自带索引,每次查询都挺快,即便循环10万次,速度虽然快不了但也没什么大的危害。
对于For All Entries的第一步,的确比SELECT SINGLE快些,本来10万次的SELECT SINGLE,变成了1万次的查询(如果BASIS设置了参数为10),每次查询10个订单行项目。但是第二步就很慢了, 暂估it_lips为8万行,则每个READ TABLE语句平均需要4万次才能搜索到it_lips的目标行。由于it_vbap有10万个行项目,我们一共需要搜索40亿次,太慢了!
在此针对For All Entries的使用提出几点意见:
(1)如果是根据某数据量大的内表用For All Entries读取数据量小的配置表,比如TVAK/T006等,那不如把For All Entries直接去掉,把表里的几十条数据全部取出。
(2)使用For All Entries时,SELECT语句后面的字段必须包含所查表关键字段。比如上面的vbeln/posnr就是lips的关键字段。如果不含关键字段,比如SELECT lfimg FROM lips For All Entries ***,那么当LIPS中两个条目关键字段不同而lfimg相同时,会被SAP自动过滤掉一条。
SAP报表的性能优化SAP报表的性能优化相关推荐
- SAP WM初阶之TO报表LX12 - TOs Resident Documents(Detailed Overview)
SAP WM初阶之TO报表LX12 - TOs Resident Documents(Detailed Overview) SAP WM模块里的TO的报表LX12 – Detailed Overvie ...
- SAP WM初阶之TO报表LX10 - Evaluation of movements per storage type
SAP WM初阶之TO报表LX10 - Evaluation of movements per storage type SAP WM模块有比较有用的报表,可以用来按存储类型来统计货物移动数量(TO数 ...
- SAP RETAIL分配表的查询报表
SAP RETAIL分配表的查询报表 SAP零售系统针对分配表,也提供了报表查询功能.本文就SAP提供的2个常用的分配表查询报表做一个简单的说明. 1, 事务代码WA31 - Allocation T ...
- SAP MM ME81N PO Value Analysis报表中Net Value 为负数是怎么回事?
SAP MM ME81N PO Value Analysis报表中Net Value 为负数是怎么回事? ME81N 报表中,如下PO的net value为负数, 怎么回事? 经查这些PO都是退货采购 ...
- 【中亦安图】清算/报表/日终跑批程序之性能优化案例(5)
第一章 技术人生系列 · 我和数据中心的故事(第五期)-清算/报表/日终跑批程序之性能优化案例(一) 中亦安图 | 2016-02-18 21:40 前言 不知不觉,技术人生系列·我和数据中心的故事来 ...
- 深入源码探索:SAP 标准报表怎样实现不同「报表格式/清单类型」的输出?
深入源码探索:SAP 标准报表怎样实现不同「报表格式/清单类型」的输出? 简介: 我们知道 SAP 有 3 种常见的报表格式,分别是网格控制(Grid control).标准清单(Normal lis ...
- SAP MM模块常用的标准报表
MM模块常用的标准报表 一. 采购订单查询 采购订单的查询,可以根据供应商.物料号或者采购订单号码进行查询显示. 事务代码和路径: ME2L:后勤 -> 物料管理 -> 采购 -> ...
- SAP HANA插上32路CPU,性能多大飞跃?
ZD至顶网服务器频道 04月01日 新闻消息:随着大数据时代的来临,来源于生产.运营.研发.销售过程中的数据越来越大,不仅充分反映着企业当前的经营状况,也为企业未来的经营决策提供有力依据,但是要分析如 ...
- 40岁的报表工程师被“优化”:报表不会做,只能被淘汰
老规矩,好东西在文末! 最近在朋友圈里看到一位一线大厂的报表工程师被"辞职"了,这位老兄也算是公司里的老臣了,但是却在公司组织架构变动时首当其冲被优化掉了, 这十几年来他几乎每天都 ...
最新文章
- ●洛谷P3688 [ZJOI2017]树状数组
- python解释器的安装步骤-Python本地及虚拟解释器配置过程解析
- 技术盘点:消息中间件的过去、现在和未来
- java web 自定义标签_JavaWeb学习——自定义标签
- 前端学习(2839):swiper属性
- SQLite性能提升10倍的Web数据库
- 两周,好多人的帮助解决select空列不显示的function
- MariaDB ColumnStore一些限制和BUG总结
- 兄弟连视频教程下载地址汇总-2014
- Eviews6 7 软件安装包
- 红宝书(javascirpt高级程序设计)学习笔记(一)
- pb获取当月最后一天
- Python网络爬虫与信息提取——网络爬虫Scrapy框架
- win10 往vmware 黑苹果系统无法拖拽复制问题
- html年龄0-120岁正则,正则表达式
- AutoCAD WS for iPhone, iPod toch, and iPad
- 690-文件管理和文件系统
- 监督学习三要素——模型、参数、目标函数
- Android设备与外接U盘实现数据读取操作
- 猫眼电影爬取(woff 字体文件解析)
热门文章
- [转载]配置unp.h头文件环境
- Android—TableLayout自定义表格
- 【百度地图API1.1】修改文本标注的样式
- Oracle init.ora常用配置详解
- C#中readonly, const 和 in型参数使用
- 2011年度最佳10款免费的 WordPress 主题
- SNORT入侵检测系统
- bootstrap-table表格插件的使用案例
- Creating a custom ComboBox item renderer in Flex
- ArcGIS时态数据应用——动态展示3个月内犯罪案件数量变化