能不能优化下?
SELECT OBJECTIDUDATE
FROM CDHDR
INTO CORRESPONDING FIELDS OF TABLE ITAB2
WHERE OBJECTID = NTABLE-INFNR.
DESCRIBE TABLE ITAB2 LINES LD_LINES. "读出最新的修改日期
READ TABLE ITAB2 INDEX LD_LINES.
NTABLE-UDATE = ITAB2-UDATE.
读的太慢了,按条件可不可以直接读出最后的一条记录? --------------------编程问答-------------------- 1、INTO CORRESPONDING FIELDS OF TABLE 改成 INTO TABLE
2、条件多加几个主键:
MANDANT
OBJECTCLAS
OBJECTID
CHANGENR
因为CDHDR是改凭证抬头更改记录表所以数据量会非常大,所以CDHDR最好不要放在循环中去调用;
如果主键都加上了还是很慢,那就建议用内表索引; --------------------编程问答-------------------- 只要你的查询语句不是放在循环中使用,应该不会很慢,注:在SAP中只要不超过3分钟不能说很慢,最多也是比较慢而已,当然你的服务器是1000多万的例外。
INTO TABLE的前提条件是必须在定义itab2时把你所要读取的字段按读出来的次序逐个定义,否则是错误的。
检索这些大表尽可能用一切方法先取得关键字,宁可多转几个表。
实在不行,那做视图吧,这是最好的方法了。当然视图做多了会拖慢数据库的速度。 --------------------编程问答-------------------- 没遇到过这种情况. --------------------编程问答-------------------- 接分先! --------------------编程问答-------------------- 都是很好的建议! 值得学习 --------------------编程问答-------------------- 1, 首先你这段代码的效率问题是查询条件不够多, 应该加几个索引进行查找.
2, 其次是你的代码写得不够优化, 其实你只要读最大日期的那条记录而已.
SELECT MAX( UDATE )
FROM CDHDR
INTO NTABLE-UDATE
WHERE OBJECTID = NTABLE-INFNR.
3, 以你的程序逻辑取最后一条记录, 这个不一定是最近的一条记录, 因为你都没有排序. --------------------编程问答-------------------- 不回答人家的问题就接分阿,这不好吧,呵呵,不过我不会,要是会的话一定会告诉你的! --------------------编程问答-------------------- 博彦SAP顾问学院,是SAP公司正式授权的培训机构,现已在北京、上海、天津同步开课,正在招生中,当地授课。
FICO SD HR ABAP MM 等多个模块均开始了周末班及全日制班,课程灵活多选。
培训采用全球统一的教材和教学方式,通过正式的考试,合格者可获得德国SAP颁发的认证证书
公司将为缺少项目经验的学员提供实习的机会,并择优录用或推荐到大型IT企业
提前报名或三人以上报名均有优惠
详情请咨询 010-82826100-7455 010-82826580
http://www.beyondsoft.com.cn/cn/sapedu.htm
--------------------编程问答-------------------- 2楼的这个说法有问题呵:"INTO TABLE的前提条件是必须在定义itab2时把你所要读取的字段按读出来的次序逐个定义,否则是错误的",你没有注意到楼主用了CORRESPONDING吗? --------------------编程问答--------------------
就算自己定义一个和检索字段内容一致的内表.也比用CORRESPONDING要好的多.!
补充:企业软件 , ERP/CRM