如何在read table子句中使用较少或之间作为条件?

2020-08-14 09:42发布

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

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


我有两个内部表IT_ITAB和IT_ZAFS_FI_01。 在IT_ZAFS_FI_01中,有两个范围字段ZFIRAFR和ZFIRATO。 我想为IT_ITAB中的每个RACCT和RFAREA查找IT_ZAFS_FI_01中是否存在RACCT在范围内且RFAREA等于ZFIFUAR的信息。 我有下面的代码。 但是它有错误。 因此,在READ TABLE中的itab较少或之间,因为条件不允许? 我必须使用循环吗? 谢谢。

选择
     RACCT
     射频区域
     左室病毒
    插入表IT_ITAB
    从FAGLFLEXT
    RYEAR在哪里= P_YEAR
    AND RLDNR ='0L'
    AND RRCTY ='0'
    AND RBUKRS = P_BUKRS。
 通过racct rfarea排序it_itab。

   选择
            布克
            ZFIITEM
            ZFISUIT
            ZFITEXT
            ZFISIGN
            ZFITYPE
            菲拉夫
            ZFIRATO
            ZFIFUAR
            零配件
            菲菲托
    从ZTFI03
    表IT_ZAFS_FI_01的对应字段
    在哪里BUKRS = P_BUKRS。
 循环将IT_ITAB INTO数据(IT_ITAB_1)按(key1 = IT_ITAB_1-racct key2 = IT_ITAB_1-rfarea)分组。
      使用键ZFIFUAR = IT_ITAB_l-rfarea ZFIRAFR  IT_IT AB_l-racct读取表IT_ZAFS_FI_01。
 结局。
 

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

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


我有两个内部表IT_ITAB和IT_ZAFS_FI_01。 在IT_ZAFS_FI_01中,有两个范围字段ZFIRAFR和ZFIRATO。 我想为IT_ITAB中的每个RACCT和RFAREA查找IT_ZAFS_FI_01中是否存在RACCT在范围内且RFAREA等于ZFIFUAR的信息。 我有下面的代码。 但是它有错误。 因此,在READ TABLE中的itab较少或之间,因为条件不允许? 我必须使用循环吗? 谢谢。

选择
     RACCT
     射频区域
     左室病毒
    插入表IT_ITAB
    从FAGLFLEXT
    RYEAR在哪里= P_YEAR
    AND RLDNR ='0L'
    AND RRCTY ='0'
    AND RBUKRS = P_BUKRS。
 通过racct rfarea排序it_itab。

   选择
            布克
            ZFIITEM
            ZFISUIT
            ZFITEXT
            ZFISIGN
            ZFITYPE
            菲拉夫
            ZFIRATO
            ZFIFUAR
            零配件
            菲菲托
    从ZTFI03
    表IT_ZAFS_FI_01的对应字段
    在哪里BUKRS = P_BUKRS。
 循环将IT_ITAB INTO数据(IT_ITAB_1)按(key1 = IT_ITAB_1-racct key2 = IT_ITAB_1-rfarea)分组。
      使用键ZFIFUAR = IT_ITAB_l-rfarea ZFIRAFR  IT_IT AB_l-racct读取表IT_ZAFS_FI_01。
 结局。
 
付费偷看设置
发送
4条回答
CPLASF-自律
1楼-- · 2020-08-14 10:15

嗨,Ricky,

是的,您不能将read与GE,LE等运算符一起使用。 最好改用Loop。

同时支持ENDWHILE和ENDWHILE,您可以选中

致谢

jimmy。

骆驼绵羊
2楼-- · 2020-08-14 10:08

ricky luo

您不能使用 读取语句中的此类逻辑运算符。 如果您正在读取具有唯一键字段的内部表,则可能在READ语句后可以进行IF条件检查。

建议:为什么不在查询中使用FOR ALL ENTRIES并尝试使用小于条件的条件 使用WHERE关键字。

注意!

haha101010
3楼-- · 2020-08-14 10:15

您问:少读表itab或之间,因为条件不允许?

< p>您问:我必须改用循环吗?

编辑:如果您的内部表的类型为SORTED(或者是标准+ sort + BINARY,则不是LOOP AT) 搜索),您可以进行大概定位。

示例:

关键帧至有效值
 FR B D 1
 FR E G 2
 FR H J 3
 GB A Z 4 

代码:

数据itab类型,带有唯一键ty的ty_line表。
 ...
 读取带有密钥key ='FR'的表itab fr ='F'禁止运输任何字段。
 DATA(索引)= COND i(当sy-subrc <> 0则sy-tabix-1 ELSE sy-tabix)。
 ASSERT index =2。"只是为了说明对F的期望
 IF索引> 0。
   DATA(line)= itab [index]。
   IF line-key ='FR'。  "重要的是再次测试密钥的第一部分
     "找到了右行
   万一。
 ENDIF。
半个程序猿
4楼-- · 2020-08-14 10:14

尝试一下。

选择
     RACCT
     射频区域
     左室病毒
    插入表IT_ITAB
    从FAGLFLEXT
    RYEAR在哪里= P_YEAR
    AND RLDNR ='0L'
    AND RRCTY ='0'
    AND RBUKRS = P_BUKRS。
 通过racct rfarea排序it_itab。

   选择
            布克
            ZFIITEM
            ZFISUIT
            ZFITEXT
            ZFISIGN
            ZFITYPE
            菲拉夫
            ZFIRATO
            ZFIFUAR
            零配件
            菲菲托
    从ZTFI03
    表IT_ZAFS_FI_01的对应字段
    在哪里BUKRS = P_BUKRS。
 循环将IT_ITAB INTO数据(IT_ITAB_1)按(key1 = IT_ITAB_1-racct key2 = IT_ITAB_1-rfarea)分组。
 在ZFIFUAR = IT_ITAB_1-rfaera的IT_ZAFS_FI_01处环
                         AND ZFIRAFR  IT_ITAB_1-racc。
 "填写所需的内容
退出。 结局。 ENDLOOP。

一周热门 更多>