请告诉我如何做:有一个桌子。我有法语中的maktx(spras ='fr'),但是如果法语不在这里,则需要用英语显示maktx。如何正确执行?
IF MAKT-SPRAS='FR'.
SELECT SINGLE MAKT-MAKTX FROM MAKT WHERE SPRAS='FR'.
ELSE.
SELECT SINGLE MAKT-MAKTX FROM MAKT WHERE SPRAS='EN'.
ENDIF.
您可以按顺序获得。
select * from MAKT where SPRAS = 'FR' or SPRAS = 'EN' order by SPRAS descending.
exit.
endselect.
我个人不建议在这种情况下使用SELECT...EXIT ENDSELECT.
使用CC_1!
这是一种更简洁的方式,可以完全控制您想对数据库做什么:
DATA: ls_makt TYPE makt.
SELECT SINGLE * FROM makt
INTO ls_makt
WHERE matnr EQ <your-matnr>
AND ( spras EQ 'FR'
OR ( spras EQ 'EN'
AND NOT EXISTS ( SELECT * FROM makt
WHERE matnr EQ <your-matnr>
AND spras EQ 'FR' ) ) ).
这将以法语或英语选择您的材料文本,但是如果不存在法语文本。
根据第一个评论进行编辑。您是对的,...单曲...在选择语句中缺少。
您可以创建一个动态,其中abap中的子句。
DATA wherecond TYPE String.
IF MAKT-SPRAS='FR'.
CONCATENATE 'SPRAS = ''' FR '''' INTO wherecond.
ELSE.
CONCATENATE 'SPRAS = ''' EN '''' INTO wherecond.
ENDIF.
SELECT SINGLE MAKT-MAKTX FROM MAKT WHERE (wherecond).