为什么不最初不工作

2020-08-18 20:48发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我使用下面的代码循环执行itab,但是if条件不能排除任何东西。

在gt_data INTO DATA(gs_data)中循环。
      如果gs_data-rfarea不是初始的。
           ...
       万一。
 结束循环。

但是如果我将代码更改为

将gt_data循环放入INTO DATA(gs_data)。
      如果gs_data-rfarea <>''。
           ...
       万一。
 结束循环。

它奏效了。 那是什么原因呢? 这是因为将数据选择到itab的SQL吗?

下面是SQL。

选择
         faglflext〜rbukrs,
         faglflext〜rfarea,
         faglflext〜rcntr,
         cskt〜ltext,
         faglflext〜racct,
         skat〜txt50,
         faglflext〜hsl01,faglflext〜hsl02,faglflext〜hsl03,faglflext〜hsl04,faglflext〜hsl05,faglflext〜hsl06,faglflext〜hsl07,faglflext〜hsl08,faglflext〜hsl09,
     faglflext〜hsl10,faglflext〜hsl11,faglflext〜hsl12,faglflext〜hsl13,faglflext〜hsl14,faglflext〜hsl15,faglflext〜hsl16
   插入表@DATA(gt_data)
   从faglflext
   在faglflext〜racct = skat〜saknr上左加入skat
   在faglflext〜rcntr = cskt〜kostl和cskt〜datbi ='99991231'上左加入cskt
  在@ company1上的faglflext〜rbukrs
    AND faglflext〜ryear = @pyear
    和faglflext〜rcntr IN @costc
    和faglflext〜racct IN @acct
    和@CostP中的FAGLFLEXT〜rfarea。
 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我使用下面的代码循环执行itab,但是if条件不能排除任何东西。

在gt_data INTO DATA(gs_data)中循环。
      如果gs_data-rfarea不是初始的。
           ...
       万一。
 结束循环。

但是如果我将代码更改为

将gt_data循环放入INTO DATA(gs_data)。
      如果gs_data-rfarea <>''。
           ...
       万一。
 结束循环。

它奏效了。 那是什么原因呢? 这是因为将数据选择到itab的SQL吗?

下面是SQL。

选择
         faglflext〜rbukrs,
         faglflext〜rfarea,
         faglflext〜rcntr,
         cskt〜ltext,
         faglflext〜racct,
         skat〜txt50,
         faglflext〜hsl01,faglflext〜hsl02,faglflext〜hsl03,faglflext〜hsl04,faglflext〜hsl05,faglflext〜hsl06,faglflext〜hsl07,faglflext〜hsl08,faglflext〜hsl09,
     faglflext〜hsl10,faglflext〜hsl11,faglflext〜hsl12,faglflext〜hsl13,faglflext〜hsl14,faglflext〜hsl15,faglflext〜hsl16
   插入表@DATA(gt_data)
   从faglflext
   在faglflext〜racct = skat〜saknr上左加入skat
   在faglflext〜rcntr = cskt〜kostl和cskt〜datbi ='99991231'上左加入cskt
  在@ company1上的faglflext〜rbukrs
    AND faglflext〜ryear = @pyear
    和faglflext〜rcntr IN @costc
    和faglflext〜racct IN @acct
    和@CostP中的FAGLFLEXT〜rfarea。
 
付费偷看设置
发送
3条回答
Climb_Ma
1楼 · 2020-08-18 21:39.采纳回答

您的代码

选择
         faglflext〜rbukrs,
         faglflext〜rfarea,
         ...
   插入表@DATA(gt_data)
   从faglflext
   ...
 循环至gt_data INTO DATA(gs_data)。
 

这意味着GT_DATA中的RFAREA类型为FAGLFLEXT-RFAREA,因此为CHAR 16。

结论:这意味着:

如果gs_data-rfarea为 

完全等同于:

 IF gs_data-rfarea <>''。

且该错误在您的分析或错误表示中。

Nan4612
2楼-- · 2020-08-18 21:26

所有这些文字/常量在ABAP中都完全相同:

''
 ''
 空格

NB 1:"不是空字符文字,因为类型C的文字的最小值为一个字符,因此表示一个空格。

NB 2 :这里我不是在谈论反引号(`),它用于STRING类型的文字,它具有不同的含义和行为。

SAP德到
3楼-- · 2020-08-18 21:45

ricky luo

如果不是NOT NULL,请尝试代替IS NOT INITIAL。 检查程序的行为,然后我们可以了解数据的存储方式。

此外,您的代码也不正确,如下所述:

 IF gs_data-rfarea <>''。  ->不礼
           ...
       万一。


 ***试试这个
      如果gs_data-rfarea <>空间。
           ...
        

致谢!

一周热门 更多>