症状:
自开发程序和增强程序性能很差。当访问SAP MM/WM 表:MSEG,LTAP,EBAN,RSEG时,测量到效能很差。
理由和需求
然而,需要注意下面的警告:
在高效使用建议的替代方法之前,一定要检查程序的正确性。
注意下面的注释:
在下面的例子中,经常访问几个表
例如:
SELECT * FROM LEIN WHERE = ...
SELECT * FROM LTAP WHERE LGNUM = LEIN-LGNUM and TANUM = LEIN-BTANR
...
考虑到效能方面,这些方法可能会更受欢迎。为相应的表定义一个选择视图,在一次访问中同时访问两个表。
方案
1.访问传输请求
a)经由存储单元号
错误:SELECT FROM LTAP WHERE VLENR = .... oder
SELECT FROM LTAP WHERE NLENR = ...
正确:SELECT FROM LEIN WHERE LENUM = ...
SELECT FROM LTAP WHERE LGNUM = LEIN-LGNUM and
AND TANUM = LEIN-BTANR
AND TAPOS = LEIN-BTAPS.
b)经由SD发货记录
错误: SELECT FROM LTAP WHERE NLPLA = LIPS-VBELN
AND POSNR = LIPS-POSNR.
正确:SELECT FROM VBFA WHERE VBELV = LIPS-VBELN
AND POSNV = LIPS- POSNR
AND VBTYP_N = 'Q'.
SELECT FROM LTAP WHERE LGNUM = LIPS-LGNUM
AND TANUM = VBFA-VBELN
AND TAPOS = VBFA-POSNN.
备注:如果为了销售中的发货而建立的运输订单,那么这种访问模式才存在。
在这种情况中经由VBFA表的文档流,运输订单才能被检测到。LTAP-NLPLA字段
经由动态存储箱赋值,由发货号填充此字段。在WM自定义(参看WMS中的移动类型)
中自动赋值被取消激活。当NLPLA字段用作数据选择时,这个副作用必须考虑到
2.访问物料文档
a)经由采购订单号
错误: SELECT FROM MSEG WHERE EBELN = ... and EBELP = ...
正确: SELECT FROM EKBE WHERE EBELN = ..
AND EBELP = ...
AND VGABE IN (1,6,7,8,9).
SELECT FROM MSEG WHERE MBLNR = EKBE-BELNR
AND MJAHR = EKBE-GJAHR
AND ZEILE = EKBE-BUZEI.
备注:会计年度必须被声明,所以系统能尽可能高效的经由基本的索引访问。
如果会计年度丢失,数据库不再高效的使用条目数搜索(这是个问题,
特别对于多条目的物料文档。)如果操作类型VGABE被声明,这些值又
限制相关的货物移动。
b)经由运输订单号
错误: SELECT FROM MSEG WHERE TANUM = ...
正确: SELECT FROM LTAP WHERE TANUM = ...
SELECT FROM MSEG WHERE MBELN = LTAP-WENUM
AND MJAHR = <requested year>
AND ZEILE = LTAP-WEPOS.
c)经由转移需求
错误: SELECT MSEG WHERE TBNUM = ...
正确: SELECT LTBK WHERE TBNUM = ....
SELECT MSEG WHERE MBLNR = LTBK-MBLNR
AND MJAHR = LTBK-MJAHR.
备注:物料文档所有条目被返回。通过物料编码来限制一条物料文档条目。
d)经由供应商号码
错误:SELECT FROM MSEG WHERE LIFNR = ...
正确:SELECT EKKO WHERE LIFNR = ....
SELECT EKBE WHERE EBELN = EKKO-EBELN
AND VGABE = '1'.
SELECT MSEG WHERE MBLNR = EKBE-BELNR
AND MJAHR = EKBE-GJAHR
AND ZEILE = EKBE-BUZEI.
备注:在特定的环境中访问EKKO和EKBE返回多个数据集。在程序中必须考虑到。用操作类型VGABE=1,
只有采购订单的货物移动被选出。作为一个选择,可以用匹配代码对象M_MEKKL替代表EKKO(例如
SELECT FROM M_EKKL WHERE LIFNR = ...).访问可以通过声明附加限制加以改进。
对于采购组织EKORG,采购组EKGRP,文档日期BEDAT,采购文档目录BSTYP,
订单类型BSART能提供更多访问选择。
3.访问采购需求
a)经由预留数
错误:SELECT FROM EBAN WHERE EBELN = ....AND EBELP = ....
正确:SELECT FROM EKET WHERE EBELN = .... AND EBELP = ....
SELECT FROM EBAN WHERE BANFN = EKET-BANFN
AND BANFPO = EKET-BANFPO.
4.经由购货发票
a)经由采购订单数
错误:SELECT FROM RSEG WHERE EBELN = ...and EBELP = ...
正确:SELECT FROM EKBE WHERE EBELN = ...
AND EBELP = ...
AND VGABE IN (2,3,P).
SELECT FROM RSEG WHERE BELNR = EKBE-BELNR
AND GJAHR = EKBE-GJAHR
AND BUZEI = EKBE-BUZEI.
备注:通过声明事物类型VGABE,值限制到相关的移动类型。用GJAHR和BUZEI,基本索引被RSEG完全使用。