有表头行与无表头行的内表在模块化中的应用(ABAP)

初学ABAP,写的不好的地方请多指教
先看这样一个程序:

 

PROGRAM SAPMZTST.

TYPES: BEGIN OF LINE,
         COL1 TYPE I,
         COL2 TYPE I,
       END OF LINE.

DATA: ITAB TYPE LINE OCCURS 10 WITH HEADER LINE,
      JTAB TYPE LINE OCCURS 10.

PERFORM FILL TABLES ITAB.
MOVE ITAB[] TO JTAB.
PERFORM OUT  TABLES JTAB.

FORM FILL TABLES F_ITAB LIKE ITAB[].
   DO 3 TIMES.
      F_ITAB-COL1 = SY-INDEX.
      F_ITAB-COL2 = SY-INDEX ** 2.
      APPEND F_ITAB.
   ENDDO.
ENDFORM.

FORM OUT TABLES F_ITAB LIKE JTAB.
   LOOP AT F_ITAB.
      WRITE: / F_ITAB-COL1, F_ITAB-COL2.
   ENDLOOP.
ENDFORM.

启动 SAPMZTST 后,输出如 下:

         1          1

         2          4

         3          9

详细解释:WITH HEADER LINE 指明了ITAB要带表头行,
先解释下表头行的作用吧:

内表是按行 进行访问的 。必须使用 某个工作区 域作为与表 格互相传输 数据的接口 。在先前的

 

学习中我们都又看见这样一个访问内表的句子: LOOP AT F_ITAB INTO F_LINE. F_LINE就是

 

这样一个接口。那么如果有表头行的话,你就可以省略F_LINE,直接LOOP AT F_ITAB,因为表头行就

 

是这样一个系统帮你创建的一个表格工作区域(只要你声明时加上WITH HEADER LINE ),那ITAB[]

 

中的[]是用来做什么的?这个其实是因为如果在语句中使用内表名称,系统将其解释为表格工作区域

 

的名称,也就是ITAB其实代表 表头行、表格工作区域、访问内表的接口。这样应该理解了吧。有表

 

头行的内表在运用时要带个中括号,这样才是我们平时用的内表

重点理解: FORM OUT TABLES F_ITAB LIKE JTAB.

注意,在这种情况下, 将无表头行 的实表格传递给有表头行的形式表 格,并在子程序中使用了表格工作 F_ITAB

这是因为如果传递无表头行的内表,则在子程序中自动创建作为局部数据对象的表头行,也就是说F_ITAB是带表头行的,所以LOOP AT F_ITAB.的后面不用指明表格工作区域
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值