问题描述
我是ABAP新手请各位高手指点下下面这道题帮忙改错和优化谢谢REPORTZ_PP.TYPES:BEGINOFTY_DATA,MATNRTYPEMARA-MATNR,MAKTXTYPEMAKT-MAKTX,ENDOFTY_DATA.DATAIT_DATATYPESTANDARDTABLEOFTY_DATA.DATAIS_DATATYPETY_DATA.DATAIT_MARATYPESTANDARDTABLEOFMARA.DATAIS_MARATYPEMARA.DATAIT_MAKTTYPESTANDARDTABLEOFMAKT.DATAIS_MAKTTYPEMAKT.SELECT*INTOCORRESPONDINGFIELDSOFTABLEIT_MARAFROMMARA.SELECT*INTOCORRESPONDINGFIELDSOFTABLEIT_MAKTFROMMAKT.LOOPATIT_MARAINTOIS_MARA.READTABLEIT_MAKTINTOIS_MAKTWITHKEYMATNR=IS_MARA-MATNRBINARYSEARCH.IS_DATA-MATNR=IS_MAKT-MATNR.IS_DATA-MAKTX=IS_MAKT-MAKTX.APPENDIS_DATATOIT_DATA.WRITE:/IS_MAKT-MATNR,IS_MAKT-MAKTX,IS_DATA-MATNR,IS_DATA-MAKTX.ENDLOOP.
解决方案
解决方案二:
晕,这点东西还指导啥呀,就是代码懒了点
解决方案三:
该回复于2011-08-12 16:20:38被版主删除
解决方案四:
蛮好的呀,怎么啦?
解决方案五:
跪求,严重了吧,
解决方案六:
http://www.cnblogs.com/mengxin523/一起进步
解决方案七:
挺难在,还要不会
解决方案八:
该回复于2011-09-06 17:52:57被版主删除
解决方案九:
1、在SELECT语句中尽量写出你需要选择的字段,减少数据检索量,你这两个选择语句可以合并成一条,至于是leftjoin还是innerjoin就要看你的需要了。leftjoin,innerjoin在一次select中最好不要超过三个表2、就算按你这个写法,选取makt的时候,可以用forallentriesIT_MARA3、在使用BINARYSEARCHReadTable时,先对内表按条件进行排序
解决方案十:
还是要自己多动手,不过河,怎么知道水的深浅?
解决方案十一:
1.可以表连接,合并两次DB操作为一次。速度会大大提升,请用se30性能分析验证。2.二分查找之前请对内表排序。3.readtable之后,编辑数据之前请判断sy-subrc。4.在循环里面使用工作区后请clear。
解决方案十二:
没有看有什么问题!!
解决方案十三:
SQL查数据,可以使用join关键字,还有最好不要使用这样的SELECT*FROMTABLE的语句。
解决方案十四:
MARA表太大了,最好先用forallentrisein
解决方案十五:
使用BINARYSEARCHReadTable时,先对内表按条件进行排序
其他方案:
用SAP标准的功能MM60或自己学习一下SAPquery,这个代码写得可行不可取,除非sapbasis是你家亲戚。
其他方案:
1、SELECT语句写出你需要选择的字段;2、就算按你这个写法,先查询MAKT到IT_MAKT中,可以用forallentries:selct。。。。。。fromMARAforallentriesinit_maktwheremara~matnr=it_makt-matnr.3、在使用BINARYSEARCHReadTable时,先对内表按条件进行排序:SORTit_marabymatnr
其他方案:
data:beginofIT_DATAoccurs0,matnrlikemara-matnr,maktxlikemakt-maktx,endofIT_DATA.你这个功能直接从MAKT中取数就行了,不用MARA表。selectmatnrmaktxINTOCORRESPONDINGFIELDSOFTABLEIT_DATAfrommakt.如果一定要从MARA关联,可以使用JOINselecta~matnrb~maktxINTOCORRESPONDINGFIELDSOFTABLEIT_DATAfrommaraasainnerjoinmaktasbona~matnreqb~matnrandb~langu=sy-langu.loopatit_data."write:.......endloop.
其他方案:
一般少用模糊查询
其他方案:
条件设置范围太大
其他方案:
引用19楼u011527422的回复:
条件设置范围太大
+1
其他方案:
整体思路和语法没有问题,就是你写的select语句有问题,在查询物料主数据和对应物料名称时,可以写做左连接查询(leftjoin)这样速度会大幅提升的。
其他方案:
哥们,你READTABLEIT_MAKTINTOIS_MAKTWITHKEYMATNR=IS_MARA-MATNRBINARYSEARCH.READ之前不排序?
其他方案:
是要取物料號及其對應的描述吧?不知以下代碼效率如何,你可以參考下。SELECTa~matnrb~maktxINTOCORRESPONDINGFIELDSOFTABLEIT_dataFROMMARAasainnerjoinmaktasbonb~matnr=a~matnrwhereb~spras=sy-langu.