sap abap 动态sql

在ABAP中,SQL语句有自己的特殊性,你的需求应该是联表查询吧,按照你的要求应该类似这样

select a~MATNR a~LFIMG VRKME into (ITAB-MATNR,ITAB-LFIMG )
from LIPS AS a
INNER JOIN VBFA AS b
ON a~连接字段1 = b~连接字段1 and a~连接字段2 = b~连接字段2…… (两个表的关联字段)
WHERE 条件

该语法应该可以解决你的问题inner join 可以解决你的问题呀,inner join 和 FOR ALL ENTRIES IN在两表能连接的情况下是相同的。你的问题是不是就是
select f1 from A
inner Join B(AB连接的条件)

where (B中的字段 = J) and (A中的VBELN= xxx)。
如果不满足 B中的字段 = J,就筛选出去不要。就这样呗。ABAP有它自己独特的取数方法与逻辑, 和我们用SQL语句直接查询不同, 这个思维要转换过来! !

第一步: 到出作为筛选条件的数据放入内表:
SELECT vbeln
FROM vbfa
INTO TABLE gt_vbfa
WHERE vbtyp_n = J .

第二步: 用FOR ALL ENTRIES IN 前要先判断是否为空
IF gt_vbfa IS NOT INITIAL .
SELECT matnr lfimg vrkme
FROM lips

INTO gt_lips
FOR ALL ENTRIES IN gt_vbfa
WHERE vbeln = gt_vbfa-vbeln
AND vbelv = gt_vbfa-vbelv

AND posnv = gt_vbfa-posnr .
ENDIF .

第三步: 使用内表里面的数据
LOOP AT gt_lips INTO gwa_lips
......

ENDLOOP .

备注:ABAP 还有很多规范及性能上的要求, 总之数据是SAP系统整个业务的核心, 不是简单的增,删, 改, 查!

希望这简单的回答能对你有所帮助!楼主,不考虑表的逻辑,简单来说,返回判断值
select MATNR LFIMG VRKME into (ITAB-MATNR,ITAB-LFIMG )
from LIPS
where VBELN in ( select VBELN from VBFA where VBELV eq ITAB1-VBELN
and POSNV eq ITAB1-POSNR and VBTYP_N = J) .

if sy-subrc = 0."选取的值不为空时,执行下面的操作
XX = XX.
endif.LIPS是交货单 VBFA是销售凭证流

不知道你是什么逻辑 需要根据VBFA中是否有记录才取LIPS中交货单

你所说的VBFA 里面有才取LIPS 是可以用楼上所说的inner join的

join之后 如果VBFA不存在那行记录 join之后是没有数据的,但是可能出现重复行,可以删掉

另外,你也可以查询出来之后,然后判断是否存在VBFA中 不存在则删除

哎哎哎 就说这么些吧 搞不懂你究竟想写什么
nativescript 中文 迈腾 2010 轮胎型号 重庆二外2020级 ios11.2.6更新了什么 国航星空联盟 insert sort 维基 小米5splus qc3.0 y2002dj手机客户端 sex big tit boss cob灯是什么意思 澳洲的航空 战乙女10人姉妹 诛仙手游应用宝版官网 foto bokep abg toge dc dc转换器 测试 corruptible draw physics line sonarqube 配置jdk ns secpath f5010 南通市天气预报 nginx 重新加载配置 太平洋游戏dota2 考评对象的基本单位是 收到英语怎么说 改写杭州王府 素人妻搭讪系列在线 ejiki japan op手机删除的照片恢复 技嘉h61m-ds2 怎么样 exdollite太垃圾

Copyright 满意通 Some Rights Reserved

如反馈或投诉等情况联系:une35498#163.com