ABAP 程序优化

[复制链接]
查看11 | 回复3 | 2011-4-28 11:28:49 | 显示全部楼层 |阅读模式
将CKMLCR需要的数据一次性读取到内表里,再对该内表进行相关操作,减少数据表查询次数。
LOOP AT IMBEW1.
SELECT SINGLE PVPRS INTO PVPRS FROM CKMLCR WHERE KALNR = IMBEW1-KALNR

ANDBDATJ = YEAR

ANDPOPER = MONTH

ANDVPRSV = 'V'.

IF SY-SUBRC0 AND SJDJ = 'X'.

MESSAGE I012 WITH '无实际单价,请选择管理单价'.

STOP.

ELSE.

ITABDJ-WERKS = IMBEW1-BWKEY.

ITABDJ-MATNR = IMBEW1-MATNR.

ITABDJ-PVPRS = PVPRS.

ENDIF.

APPEND ITABDJ.

CLEAR ITABDJ.
ENDLOOP.

回复

使用道具 举报

千问 | 2011-4-28 11:28:49 | 显示全部楼层
对于楼上的用法,如果IMBEW1内表中的数据庞大的话,这个方法不一定奏效,因为对于FOR ALL ENTRIES IN 如果内表数据多的话,速度会很慢,有的时候可能还不如直接不加这个IMBEW1-KALNR条件,直接取出所有的数,在循环中去read 那个表,在筛选,所以可以根据实际情况来选择用哪种方式。
回复

使用道具 举报

千问 | 2011-4-28 11:28:49 | 显示全部楼层
楼上 tdzbq
正解~~不过再加个二分法就更好了!
回复

使用道具 举报

千问 | 2011-4-28 11:28:49 | 显示全部楼层
deleted
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行