abap中查询条件的数据类型不同,通过创建新内表来完成查询的话速度会很慢,怎么修改
SELECTbkpf~awkeybkpf~xblnrINTOCORRESPONDINGFIELDSOFTABLEit_bkpfFROMbkpfFORALLENTRIESI...
SELECT
bkpf~awkey
bkpf~xblnr
INTO CORRESPONDING FIELDS OF TABLE it_bkpf
FROM bkpf
FOR ALL ENTRIES IN it_vbrk1
WHERE bkpf~awkey = it_vbrk1-vbeln.
此为例子 展开
bkpf~awkey
bkpf~xblnr
INTO CORRESPONDING FIELDS OF TABLE it_bkpf
FROM bkpf
FOR ALL ENTRIES IN it_vbrk1
WHERE bkpf~awkey = it_vbrk1-vbeln.
此为例子 展开
4个回答
展开全部
对于FOR ALL ENTRIES IN it_vbrk1
内表 it_vbrk1如果只使用字段vbeln的话,完全可以定义一个RANGE表来替代该语句。
rt_awkey type range of bkpf-awkey.
rw_awkey like line of rt_awkey.
loop at it_vbrk1 into wa_vbrk1.
rw_awkey -sign = 'I'.
rw_awkey -option = 'EQ'.
rw_awkey -low = wa_vbrk1-vbeln
append rw_awkey to rt_awkey.
endloop.
该SQL语句就可以这样写了:
SELECT
bkpf~awkey
bkpf~xblnr
INTO CORRESPONDING FIELDS OF TABLE it_bkpf
FROM bkpf
WHERE bkpf~awkey in rt_awkey.
另:corredponding 最好不要使用,直接INTO TABLE it_bkpf(注意内表定义字段的顺序和个数,要和SELECT语句后面的想匹配)
内表 it_vbrk1如果只使用字段vbeln的话,完全可以定义一个RANGE表来替代该语句。
rt_awkey type range of bkpf-awkey.
rw_awkey like line of rt_awkey.
loop at it_vbrk1 into wa_vbrk1.
rw_awkey -sign = 'I'.
rw_awkey -option = 'EQ'.
rw_awkey -low = wa_vbrk1-vbeln
append rw_awkey to rt_awkey.
endloop.
该SQL语句就可以这样写了:
SELECT
bkpf~awkey
bkpf~xblnr
INTO CORRESPONDING FIELDS OF TABLE it_bkpf
FROM bkpf
WHERE bkpf~awkey in rt_awkey.
另:corredponding 最好不要使用,直接INTO TABLE it_bkpf(注意内表定义字段的顺序和个数,要和SELECT语句后面的想匹配)
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
我做了一个测试,发现我的想法是可行的。
你可以再定义内表it_vbrk1时,将vbeln 定义成 bkpf-awkey。那就可以正常的使用for all entries in 了。
代码如下:
DATA: BEGIN OF it_vbrk OCCURS 0,
vbeln TYPE bkpf-awkey,"发票
fkart TYPE vbrk-fkart,"
END OF it_vbrk.
DATA: BEGIN OF it_bkpf OCCURS 0,
awkey TYPE bkpf-awkey,
xblnr TYPE bkpf-xblnr,
END OF it_bkpf.
SELECT vbeln
fkart
INTO TABLE it_vbrk
FROM vbrk.
SELECT bkpf~awkey
bkpf~xblnr
INTO TABLE it_bkpf
FROM bkpf
FOR ALL ENTRIES IN it_vbrk
WHERE bkpf~awkey = it_vbrk-vbeln.
你试试看可不可以!
你可以再定义内表it_vbrk1时,将vbeln 定义成 bkpf-awkey。那就可以正常的使用for all entries in 了。
代码如下:
DATA: BEGIN OF it_vbrk OCCURS 0,
vbeln TYPE bkpf-awkey,"发票
fkart TYPE vbrk-fkart,"
END OF it_vbrk.
DATA: BEGIN OF it_bkpf OCCURS 0,
awkey TYPE bkpf-awkey,
xblnr TYPE bkpf-xblnr,
END OF it_bkpf.
SELECT vbeln
fkart
INTO TABLE it_vbrk
FROM vbrk.
SELECT bkpf~awkey
bkpf~xblnr
INTO TABLE it_bkpf
FROM bkpf
FOR ALL ENTRIES IN it_vbrk
WHERE bkpf~awkey = it_vbrk-vbeln.
你试试看可不可以!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以另外定义一个一个内表,将it_vbrk1-vbeln赋值过去,类型定义为与bkpf~awkey 一致,应该效果好一点。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没看明白
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询