在循环中读取表。

2020-09-12 05:33发布

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

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


我知道指令读取表只读取一行,但是如果将其放入循环中,它将读取多行吗?

请参阅下面的代码:

 从vbap选择vbpa〜parvw kna1〜kunnr vbap〜netwr

     vbap〜vbeln上的内部连接vbpa = vbpa〜vbeln

     vbpa〜kunnr上的内部连接kna1 = kna1〜kunnr

     到表gt_local的对应字段中

     其中(vbpa〜parvw ='AG')和

     s_kunnr中的kna1〜kunnr。



   在gt_local循环到gs_local。

     将gs_local收集到gt_local2中。

   尾环。



   选择  *

   从vbpa作为内部连接vbap作为b on(a〜vbeln = b〜vbeln)

      内部连接vbfa as c on(c〜vbelv = b〜vbeln)

     内连接唇为d on(d〜vbeln = c〜vbeln和d〜posnr = c〜posnn)

     到表gt_local3的对应字段中

   其中(a〜parvw ='WE')

   并且c〜vbtyp_n ='J'或c〜vbtyp_n ='R'。



   清除gt_local。

   清除gs_local。

   在gt_local3处循环进入gs_local3,其中vbtyp_n ='J'。

     将gs_local3收集到gt_local中。

   结束循环。

 *

   在gt_local2循环到gs_local2。

     将sy-tabix移至lv_index。

     使用密钥kunnr = gs_local2-kunnr将表gt_local读入gs_local。

     gs_local2-lfimg = gs_local-lfimg。

     从gs_local2索引lv_index修改gt_local2。

   结束循环。

 *

   清除gt_local。

   清除gs_local。



     在gt_local3循环到gs_local3,其中vbtyp_n ='R'。

     将gs_local3收集到gt_local中。

   结束循环。





   在gt_local2循环到gs_local2。

     将sy-tabix移到idx。

     使用密钥kunnr = gs_local2-kunnr将表gt_local读入gs_local。

     gs_local2-rfmng = gs_local-rfmng。

     从gs_local2索引idx修改gt_local2。

   结束循环。

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

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


我知道指令读取表只读取一行,但是如果将其放入循环中,它将读取多行吗?

请参阅下面的代码:

 从vbap选择vbpa〜parvw kna1〜kunnr vbap〜netwr

     vbap〜vbeln上的内部连接vbpa = vbpa〜vbeln

     vbpa〜kunnr上的内部连接kna1 = kna1〜kunnr

     到表gt_local的对应字段中

     其中(vbpa〜parvw ='AG')和

     s_kunnr中的kna1〜kunnr。



   在gt_local循环到gs_local。

     将gs_local收集到gt_local2中。

   尾环。



   选择  *

   从vbpa作为内部连接vbap作为b on(a〜vbeln = b〜vbeln)

      内部连接vbfa as c on(c〜vbelv = b〜vbeln)

     内连接唇为d on(d〜vbeln = c〜vbeln和d〜posnr = c〜posnn)

     到表gt_local3的对应字段中

   其中(a〜parvw ='WE')

   并且c〜vbtyp_n ='J'或c〜vbtyp_n ='R'。



   清除gt_local。

   清除gs_local。

   在gt_local3处循环进入gs_local3,其中vbtyp_n ='J'。

     将gs_local3收集到gt_local中。

   结束循环。

 *

   在gt_local2循环到gs_local2。

     将sy-tabix移至lv_index。

     使用密钥kunnr = gs_local2-kunnr将表gt_local读入gs_local。

     gs_local2-lfimg = gs_local-lfimg。

     从gs_local2索引lv_index修改gt_local2。

   结束循环。

 *

   清除gt_local。

   清除gs_local。



     在gt_local3循环到gs_local3,其中vbtyp_n ='R'。

     将gs_local3收集到gt_local中。

   结束循环。





   在gt_local2循环到gs_local2。

     将sy-tabix移到idx。

     使用密钥kunnr = gs_local2-kunnr将表gt_local读入gs_local。

     gs_local2-rfmng = gs_local-rfmng。

     从gs_local2索引idx修改gt_local2。

   结束循环。

付费偷看设置
发送
4条回答
spaceman01
1楼 · 2020-09-12 06:08.采纳回答

在循环内或循环外使用的读取语句将仅提供1条记录。 读取语句永远不会返回多条记录。

如果要访问多个记录,请进行循环。

路亽曱_Ryan
2楼-- · 2020-09-12 06:05

此问题的原因是什么? ABAP的语句可以从内部表中读取多行。

您的问题的答案是"也许",因为如果读取条件不变,则可能有一个100000000个循环而仍然可以读取 相同的记录。

huskylover
3楼-- · 2020-09-12 06:03

编辑了我的问题。

SAP小菜
4楼-- · 2020-09-12 06:06

从我的观点来看,除了吓人的命名约定外 视图(G ...代表全局名称,名称为local,local2,local3),这让我很难理解您要实现的目标,我遇到的第一个问题是:您是否在读取和调试上设置了断点

一周热门 更多>