Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Abap &引用;不允许列出占用多行的元素”;复杂IF语句出错_Abap - Fatal编程技术网

Abap &引用;不允许列出占用多行的元素”;复杂IF语句出错

Abap &引用;不允许列出占用多行的元素”;复杂IF语句出错,abap,Abap,我是APDs中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_so

我是APDs中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='M1'或ls_source-VHMODEL=='M2')和(ls_source-CREATE_DATE='2014-01-01'))
{
//做事
}
否则如果((ls_source-VHMODEL='H1'或ls_source-VHMODEL=='C3')和(ls_source-CREATE_DATE='2014-02-01'))
{
//做事
}
我试过这个:

  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.
if((ls_震源-VHMODEL EQ'M1'或ls_震源-VHMODEL EQ'M2')和
(ls_source-CREATE_DATE>'20120122'和ls_source-CREATE_DATE<'20120922'))。
将“段2”移动到ls_目标段。
其他的
将“其他”移动到ls_目标段。
恩迪夫。
但这给了我一个错误

语法错误:不允许使用占用多行的列表元素

试试这个:

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.
请注意括号在代码中是如何分隔的


希望能有所帮助。

您能检查一下括号的前后是否有空格吗


众所周知,ABAP编译器对这类事情非常敏感,因为括号可能意味着其他东西(即数据中的偏移量)。

您的问题是括号以及
前后的间距(

此代码编译:

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.
if(ls_震源-vhmodel eq'M1'或ls_震源-vhmodel eq'M2')和
(ls_source-create_date>'20120120122'和ls_source-create_date<'20120922')。
将“段2”移动到ls_目标段。
其他的
将“其他”移动到ls_目标段。
恩迪夫。

问题在于括号之间没有空格。与其他语言不同,ABAP在括号和语句的其余部分之间需要一个空格

(ls_source-CREATE_DATE > '20120122' AND ls_source-CREATE_DATE < '20120922')).
^^^                                                                       ^^^
(ls_source-CREATE_DATE>'20120120122'和ls_source-CREATE_DATE<'20120922')。
^^^                                                                       ^^^

我已经读过了,但它没有给出如何对多个变量执行求值的示例。我读了一遍又一遍,它并没有给出如何对多个变量执行求值的示例。我尝试了
if((ls_source-VHMODEL EQ'M1'或ls_source-VHMODEL EQ'M2')和(ls_source-CREATE_DATE='2014-01-01')).
但我得到了
语法错误:不允许列出占用多行的元素。
即使所有内容都在一行上。谢谢,但我得到了错误
语法错误:不允许列出占用多行的元素
是否可以发布您的代码以准确检查错误?是的,我已经查过了。在我的例子中,你可以在我的代码中看到,括号之间用空格隔开,在开始时,开括号和变量之间也是这样。试一试:如果((ls_source-VHMODEL EQ'M1'或ls_source-VHMODEL EQ'M2')和(ls_source-CREATE_DATE>'20120120122'和ls_source-CREATE_DATE<'20120922'))。将“段2”移动到ls_目标段。其他的将“其他”移动到ls_目标段。恩迪夫。