abap怎样抽取数据到内表?

abap怎样抽取数据到内表?,第1张

REPORT ZFIRSTEXAM1.tables:mard.data:begin of gt_data occurs 0, matnr like mard-matnr, werks like mard-werks, lgort like mard-lgort, labst like mard-labst, end of gt_data.select matnr werks lgort labstinto corresponding fields of table gt_data from mard where werks = '1100'.loop at gt_data. write: / gt_data-matnr,gt_data-werks,gt_data-lgort,gt_data-labst. endloop.这样写,能成。 这样写的效率,是不是比楼主的第一,第二种还要高呢。

选择屏幕上定义上传文件的输入框:

获取上传文件:

将获取的文件转换成内表数据

gt_excel具有如下结构:

处理gt_excel数据到输出ALV数据的内表中:

定义一个内表,然后按照内表中的字段进行select into到内表中。例如:

data:begin of gt_data occurs 0,

matnr like mard-matnr,

werks like mard-werks,

lgort like mard-lgort,

labst like mard-labst,

end of gt_data.

上面的表示一个内表gt_data定义出来了。然后我们在把对应的数据提取出来,

select matnr

werks

lgort

labst

into table gt_data

from mard

where werks = '1100'.

这样的话,数据就会按照物料号、工厂、库存地点、非限制库存 提取放到内表gt_data中了。

也可以写成:

select *

into corresponding fields of table gt_data

from mard

where werks = '1100'.

上面的这两种sql语句的区别在于: 第一种程序会只针对matnr werks lgort labst 这四个字段去提取数据,第二种,程序会提取mard表中所有字段,然后按照matnr werks lgort labst 来mapping上去。 相对效率而言,第一种效率好些。

至于程序优化上面,尽量减少对数据库的访问,尽量避开那几个大表,比如 mseg ,bseg 等这类的表。 尽量把数据放在内存中计算, 别的倒也没什么了,其实在内表上关于一些sort table 和 hash table 来说,虽然在速度上会快一些(“比如在处理几十万条数据”),如果在几万到十几万条数据的话,性能上其实没什么太大的变化,但是在后期程序修改上,会比较的麻烦一点,一般这种内表我们只是运用在比较大的表上用。OK。说完了。就这样吧。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6760338.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-27
下一篇2023-03-27

发表评论

登录后才能评论

评论列表(0条)

    保存