我将主表EKPO作为外部联接连接到表MLGN和MLGT。
我在信息集中创建了一个额外的字段BINALOC
,并希望它在某些情况下从表MLGT返回一个值:
当前,我可以执行前2个条件,但由于与数字2冲突,因此无法适合第3个条件。
我尝试了各种IF语句和IF条件的各种顺序以及不同的联接类型。
这是我在额外字段BINALOC
编码部分中拥有的当前代码:
IF MLGN-LTKZE = 'R1'.
select LGPLA as LGPLA
from *MLGT into BINALOC
where *MLGT~LGTYP eq '006'.
ENDSELECT.
else.
select LGPLA as LGPLA
from *MLGT into BINALOC
where *MLGT~LGTYP eq MLGN-LTKZE.
endselect.
endif.
当我之前提到的字段不匹配时,我希望该字段返回空白。
当前,它返回其上方字段的副本。
答案 0 :(得分:0)
这个?
IF MLGN-LTKZE = 'R1'.
select LGPLA as LGPLA
from *MLGT into BINALOC
where *MLGT~LGTYP eq '006'.
ENDSELECT.
else.
select LGPLA as LGPLA
from *MLGT into BINALOC
where *MLGT~LGTYP eq MLGN-LTKZE.
endselect.
if sy-subrc ne 0.
select LGPLA as LGPLA
from *MLGT into BINALOC
where *MLGT~LGTYP ne MLGN-LTKZE.
endselect.
endif.
endif.
答案 1 :(得分:0)
首先,很难回答,因为这三个功能规则具有重叠条件,因此需要解释。
如果它们与此真值表相对应:
MLGN-LTKZE Exists MLGN-LTKZE/MLGT-LGTYP BINALOC
---------- ---------------------------- -------------------------------
=R1 true or false MLGT-LGPLA for LGTYP='006'
<>R1 true MLGT-LGPLA for LGTYP=MLGN-LTKZE
<>R1 false blank
然后程序应如下所示:
if MLGN-LTKZE = 'R1'.
select LGPLA as LGPLA
from *MLGT into BINALOC
where *MLGT~LGTYP eq '006'.
endselect.
else.
select LGPLA as LGPLA
from *MLGT into BINALOC
where *MLGT~LGTYP eq MLGN-LTKZE.
endselect.
if sy-subrc ne 0.
clear BINALOC.
endif.
endif.
您遇到的问题可能是,如果一行符合第三个条件,则BINALOC不会被清除,因此将在处理前一行时计算出的值保持不变。