MB5B在HDB上的性能调优

背景

MB5B是用于查询物料的收发以及现有库存。日常业务查询,通常会按照月份查看某片地区物料的库存以及收发状态。

  1. 调优思路
    1. 按照客户日常操作的习惯,得到日常操作的数据范围,选出数据量最为突出最有代表性的地区和物料;
    2. 利用SE30分别运行不同数量级的数据,比如20个门店、50个门店、100个门店,乃至全部门店,找出原有程序运行中的瓶颈取数点。在MB5B里,最为突出的取数问题集中在MKPF、MSEG、MBEW、BSIM和BSEG的取数,以及ALV LIST这种输出方式的展示时间上。分别占到了总运行时间的60%~15%不等。通常情况下主数据表对运行影响不大,暂不做考虑优化;

建立HDB和ECC的连接,通过SLT,将这几个表的数据传递到HDB;

TCODE:DBCO设置连接配置

    1. 将MB5B整体拷贝出来,变成ZMB5B;
    2. CNPC采用的方法是ADBC的方法,不像直接构筑在HDB之上,所以需要对代码进行修改。将以前SELECT的取数方法,重新设定取数的来源来自HDB数据库。如果系统是NW7.4的话就可以不用写NEGATIVE SQL语句了,直接用DDIC的对象访问HANA的数据库对象。

      1. 打开HDB的数据库链接

DATA: con_name TYPE dbcon-con_name value 'HDB'.

  TRY.
      con_ref = cl_sql_connection=>get_connection( con_name ).
      stmt_ref = con_ref->create_statement( ).


* get the stock tables
      PERFORM                    AKTUELLE_BESTAENDE.
      
PERFORM TABELLEN_LESEN.

      
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'             
        EXPORTING                                           
          TEXT = TEXT-064.     

      
PERFORM                    F1000_SELECT_MSEG_MKPF_NEW.
      
PERFORM                    BELEGSELEKTION.
      con_ref->close( ).


    CATCH cx_sql_exception INTO sqlerr_ref.
      
CALL METHOD sqlerr_ref->get_text
        RECEIVING
          result = g_error_text.
      
MESSAGE E895 WITH g_error_text.
  ENDTRY.

      1. 注销以前的取数语句,改用NEGATIVE SQL的语句拼接,注意要把from table改成from HDB.table;

move 'select  ' to pa_sql.
  
CONCATENATE pa_sql 'MKPF.MBLNR, MKPF.MJAHR, MKPF.VGART,MKPF.BLART,MKPF.BUDAT,MKPF.CPUDT,MKPF.CPUTM,MKPF.USNAM,MKPF.XABLN,mkpf.BFWMS as LBBSA,'
  'mkpf.BFWMS as BWAGR,mseg.BUKRS,mseg.mblnr as BELNR,mkpf.MJAHR as gjahr,MSEG.WAERS,MSEG.ZEILE,MSEG.BWART,MSEG.MATNR,MSEG.WERKS,MSEG.LGORT,MSEG.CHARG,MSEG.BWTAR,'
  'MSEG.KZVBR,MSEG.KZBEW,MSEG.SOBKZ,MSEG.KZZUG,MSEG.BUSTM,MSEG.BUSTW,MSEG.MENGU,MSEG.WERTU,MSEG.SHKZG,MSEG.MENGE,MSEG.MEINS,MSEG.DMBTR,MSEG.DMBUM,'
  'MSEG.XAUTO,MSEG.KZBWS,mseg.OIASTBW as reail,mseg.oiglcalc,mseg.oiglsku,mseg.insmk,MSEG.SMBLN,MSEG.SJAHR,MSEG.SMBLP,mseg.OIINVREC as DUMMY ' into pa_sql
  
SEPARATED BY space.

  
CONCATENATE pa_sql 'FROM SLT_SRP_300_2.mkpf as mkpf inner join SL

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

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

相关文章

利用sklearn 实现线性回归、非线性回归

代码: import pandas as pd import numpy as np import matplotlib import random from matplotlib import pyplot as plt from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression# 创建虚拟数据 x np.array(r…

DAY3,Qt(完成闹钟的实现,定时器事件处理函数的使用)

1.完成闹钟的实现&#xff0c;到点播报文本框的内容&#xff1b; ---alarm.h---头文件 #ifndef ALARM_H #define ALARM_H#include <QWidget> #include <QTimerEvent> //定时器处理函数类 #include <QTime> //时间类 #include <QPushButton> //按钮…

蓝牙技术|智能照明市场蓬勃发展,蓝牙技术助力市场发展

照明控制系统在商业和工业领域的应用广泛。例如&#xff0c;智能办公楼、商场、工厂等场所&#xff0c;可以通过照明控制系统实现节能和舒适性的提升。预计将从2023年的74亿美元增长到2032年的108亿美元&#xff0c;复合年增长率(CAGR)为4.3%。 随着LED照明技术在市场上的逐渐普…

QT DAY3

1.思维导图 2.完成闹钟的实现 头文件 #include <QTextToSpeech> #include <QTextEdit> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTQLineEdit *edit1new QLineEdit;// QTextEdit *edit2new QTe…

java版企业工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

新手小白学习SWAT模型【建模方法、实例应用、高级进阶】

目录 第一部分&#xff1a;SWAT模型实践部分 第二部分&#xff1a;SWAT模型【进阶部分】 更多推荐 【专家】&#xff1a;刘老师【副教授】&#xff0c;北京重点高校资深专家&#xff0c;和美国SWAT软件开发方长期合作&#xff0c;拥有丰富的科研及工程技术经验&#xff0c;长…

【双指针优化DP】CF985E

Problem - 985E - Codeforces 题意&#xff1a; 思路&#xff1a; 首先肯定需要排个序&#xff0c;然后分段DP 但是平常写的分段DP都是n^2的&#xff0c;这里的可以发现单调性&#xff0c;因此考虑双指针转移 这里两个指针都代表两个段的右端点 Code&#xff1a; #includ…

MySQL-MHA高可用配置及故障切换

MySQL-MHA 一、MHA概述&#xff1a;1.概述&#xff1a;2.MHA的组成&#xff1a;3.MHA的特点&#xff1a;4.MHA的工作原理&#xff1a; 二、搭建MySQL MHA&#xff1a;1.配置主从复制&#xff1a;2.配置MHA&#xff1a;3.manager与node工具使用&#xff1a;4.在 manager 节点上配…

Redis优惠券秒杀超卖问题

Redis秒杀超卖问题 前言一、出现秒杀超卖的原因二、超卖解决方案使用乐观锁解决超卖问题程序中进行解决 前言 这是我认为b站上最好的redis教程&#xff0c;各方面讲解透彻&#xff0c;知识点覆盖比较全。 黑马redis视频链接&#xff1a;B站黑马redis教学视频 本文参考黑马redi…

vue使用qrcodejs2-fix或者qrcodejs2插件生成二维码

1. vue2安装 npm i qrcodejs2 1.1. vue3安装 npm install qrcodejs2-fix 2. 组件中引入并封装成公共组件&#xff0c;vue3版 <template><!-- 二维码生成 --><div class"body-div"><div style"width: 100%;height: 100%;" :id&quo…

入门Linux基本指令(2)

这篇文章主要提供一些对文件操作的Linux基本指令&#xff0c;希望对大家有所帮助&#xff0c;三连支持&#xff01; 目录 cp指令(复制) mv指令(剪切) nano指令 cat指令(打印文件内容) > 输出重定向 >> 追加重定向 < 输入重定向 more指令 less指令(推荐) …

Ueditor 百度强大富文本Springboot 项目集成使用(包含上传文件和上传图片的功能使用)简单易懂,举一反三

Ueditor 百度强大富文本Springboot 项目集成使用 首先如果大家的富文本中不考虑图片或者附件的情况下&#xff0c;只考虑纯文本且排版的情况下我们可以直接让前端的vue来继承UEditor就可以啦。但是要让前端将那几个上传图片和附件的哪些功能给阉割掉&#xff01; 然后就是说如…

Spring Batch教程(三)示例:从mysql中读取数据写入文本和从多个文本中读取内容写入mysql

Spring batch 系列文章 Spring Batch教程&#xff08;一&#xff09; 简单的介绍以及通过springbatch将xml文件转成txt文件 Spring Batch教程&#xff08;二&#xff09;示例&#xff1a;将txt文件转成xml文件以及读取xml文件内容存储到数据库mysql Spring Batch教程&#xff…

elasticsearch IK分词器

说明&#xff1a;es默认的分词器对中文的识别不是特别好&#xff0c;一段话的分词是一个一个汉字&#xff0c;这显然没有达到想要的结果。 可以安装IK分词器&#xff0c;兼容中文的分词&#xff1b; IK分词器 安装 安装IK分词器&#xff0c;例如elasticsearch的容器名为es&a…

MATLAB与ROS联合仿真——控制类功能模块介绍

1、Keyboard Control &#xff08;1&#xff09;输入参数&#xff1a;无 &#xff08;2&#xff09;输出参数&#xff1a;Speed Factor为输出的速度系数&#xff08;1代表前行&#xff0c;0停止&#xff0c;-1代表后退&#xff09;&#xff0c;Turn Factor为输出的舵机系数&am…

webpack联邦模块介绍及在dumi中使用问题整理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ModuleFederationPlugin参数含义&#xff1f;二、如何在dumi中使用及问题整理1. 如何在dumi中使用(这个配置是好使的)2.相关问题整理2.1 问题12.2 问题2 总…

【LeetCode-中等】剑指 Offer 67. 把字符串转换成整数(详解)

题目 写一个函数 StrToInt&#xff0c;实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先&#xff0c;该函数会根据需要丢弃无用的开头空格字符&#xff0c;直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时&#…

【浩鲸科技】济南Java后端面经

本文目录 写在前面试题总览题目解析1.说一下SpringBoot中常用的注解2.Redis中的基本数据类型3.TCP的网络协议4.java中常见的锁5.Hashmap的底层数据结构、底层源码、扩容机制源码6.java面向对象的特点 写在前面 关于这个专栏&#xff1a; 本专栏记录一些互联网大厂、小厂的面试实…

华为HCIP第二节-------------------------ISIS

IS-IS&#xff08;Intermediate System to Intermediate System&#xff0c;中间系统到中间系统&#xff09;是ISO &#xff08;International Organization for Standardization&#xff0c;国际标准化组织&#xff09;为它的CLNP&#xff08;ConnectionLessNetwork Protocol&…

Vue 常用指令 v-on 自定义参数和事件修饰符

自定义参数就是可以在触发事件的时候传入自定义的值。 文本框&#xff0c;绑定了一个按钮事件&#xff0c;对应的逻辑是sayhi&#xff0c;现在无论按下什么按钮都会触发这个sayhi。但是实际上不是所有的按钮都会触发&#xff0c;只会限定某一些按钮&#xff0c;最常见的按钮就…