我是APD中ABAP编码的新手。我如何在ABAP代码中编写这样的语句?
if ((ls_source-VHMODEL == 'M1' OR ls_source-VHMODEL == 'M2') AND (ls_source-CREATE_DATE <= '2016-01-01' AND ls_source-CREATE_DATE >= '2014-01-01'))
{
// do stuff
}
else if ((ls_source-VHMODEL == 'H1' OR ls_source-VHMODEL == 'C3') AND (ls_source-CREATE_DATE <= '2015-01-01' AND ls_source-CREATE_DATE >= '2014-02-01'))
{
// do stuff
}
我试过了:
if ( ( ls_source-VHMODEL EQ 'M1' OR ls_source-VHMODEL EQ 'M2') AND
(ls_source-CREATE_DATE > '20120122' AND ls_source-CREATE_DATE < '20120922')).
MOVE 'Segment 2' TO ls_target-SEGMENT.
else.
MOVE 'Other' TO ls_target-SEGMENT.
endif.
但那给了我错误
语法错误:不允许列出占用多行的元素。
答案 0 :(得分:3)
试试这个:
if ( ( ls_source-vhmodel eq 'M1' or ls_source-vhmodel eq 'M2' ) and
( ls_source-create_date le '20160101' and ls_source-create_date ge '20140101' )
).
* Do something
elseif (
( ls_source-vhmodel eq 'H1' or ls_source-vhmodel eq 'C3' ) and
( ls_source-create_date le '20150101' and ls_source-create_date ge '20140201' )
).
*Do something
endif.
请注意括号中它们在代码中的分隔方式。
希望它有所帮助。
答案 1 :(得分:2)
你能检查你的括号前面和后面是空格吗?
ABAP编译器对于这类事情是众所周知的,因为括号可能意味着其他东西(即数据中的偏移量)。
答案 2 :(得分:1)
您的问题是括号,也是(
和)
之前和之后的间距。
此代码编译:
if ( ls_source-vhmodel eq 'M1' or ls_source-vhmodel eq 'M2' ) and
( ls_source-create_date > '20120122' and ls_source-create_date < '20120922' ).
move 'Segment 2' to ls_target-segment.
else.
move 'Other' to ls_target-segment.
endif.
答案 3 :(得分:1)
问题是你没有在括号之间留下空格。与其他语言不同,ABAP在括号和语句的其余部分之间需要一个空格。
(ls_source-CREATE_DATE > '20120122' AND ls_source-CREATE_DATE < '20120922')).
^^^ ^^^