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

2020-08-14 09:42发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有两个内部表IT_ITAB和I...

         点击此处--->   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条回答
haha101010
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。

一周热门 更多>