SAP ABAP循环内循环到7.40语法

问题描述

使用7.40语法是否还有更好的方法?由于正在使用范围表,因此无法使用READ语句。

lr_vstel = VALUE #( sign = 'I' option = 'EQ'
                  ( low = '5161' ) ( low = '5361' ) ).
lr_lgort = VALUE #( sign = 'I' option = 'EQ'
                  ( low = '4004' ) ( low = '9013' )
                  ( low = '9014' ) ).

LOOP AT xvbap(] ASSIGNING FIELD-SYMBOL (<lfs_vbap>)
  WHERE
        werks = '5161'
    AND vstel IN Ir_vstel
    AND lgort NOT IN lr_lgort.

  LOOP AT xlips[] ASSIGNING FIELD-SYMBOL(<lfs_lips>)
    WHERE
          posnr = <lfs_vbap>-posnr
      AND vtweg = '20'
      AND lgort NOT IN lr_lgort.

    MESSAGE |Storage location { <lfs_lips>-lgort } is not allowed|
       TYPE 'E'.
    EXIT.

  ENDLOOP.

ENDLOOP.

我想避免使用7.40语法的循环。

解决方法

是的,还有其他方法,但是老实说,您的解决方案看起来可以接受。

如果要获得其他建议,则应该在要改进的方面更加精确:可读性?性能?选择标准是否灵活?

然后,您还应该提供示例数据并更好地定义附带条件,例如,您的范围是否还需要涵盖更复杂的情况(例如,排除条目),或者接受低端和高端的真实范围,以及是否会可以修改内部表的内容。