zoukankan      html  css  js  c++  java
  • ABAP

    疑惑了很久的at end of 算是弄明白了……哈哈

    TYPES: begin of ty_tab ,
    num(3) type i,
    str(3) type c,
    end of ty_tab.
    data: gw_tab TYPE ty_tab ,
    gt_tab TYPE TABLE OF ty_tab WITH HEADER LINE.
    data: gt_out TYPE TABLE OF ty_tab,
    gw_out TYPE ty_tab.
    gw_tab-num = 100.
    gw_tab-str = 'AAA'.
    append gw_tab to gt_tab.
    gw_tab-num = 100.
    gw_tab-str = 'BBB'.
    append gw_tab to gt_tab.
    gw_tab-num = 200.
    gw_tab-str = 'AAA'.
    append gw_tab to gt_tab.
    gw_tab-num = 200.
    gw_tab-str = 'BBB'.
    append gw_tab to gt_tab.
    gw_tab-num = 200.
    gw_tab-str = 'CCC'.
    append gw_tab to gt_tab.
    CLEAR gw_tab.
    sort gt_tab by num.
    loop at gt_tab .
    MOVE gt_tab to gw_tab.
    at END OF num.
    gw_out-num = gw_tab-num.
    gw_out-str = gw_tab-str.
    APPEND gw_out to gt_out.
    endat.
    CLEAR gw_tab.
    endloop.
    LOOP AT gt_out into gw_out.
    write:/ gw_out-num,gw_out-str.
    ENDLOOP.

    使用AT END OF语句,主要是抓取重复字段如num为100的最后一条记录 100 BBB。

    本实例定义的structure中 ,字段num在字段str前,这样在使用AT END OF语句后,内表中str会变为***。

    在loop循环之前 内表gt_tab中的数据为:

    100 AAA

    100 BBB

    200 AAA

    200 BBB

    200 CCC

    第一次循环,内表gt_tab中的数据为 100 AAA 在执行AT END OF语句后,内表gt_tab中的数据为 100 AAA

    第二次循环,内表gt_tab中的数据为 100 BBB 在执行AT END OF语句中,内表gt_tab中的数据为 100 ***,在执行AT END OF语句后,内表gt_tab中的数据为 100 BBB

    第三次循环,内表gt_tab中的数据为 200 AAA 在执行AT END OF语句后,内表gt_tab中的数据为 200 AAA

    第四次循环,内表gt_tab中的数据为 200 BBB 在执行AT END OF语句后,内表gt_tab中的数据为 200 BBB

    第五次循环,内表gt_tab中的数据为 200 CCC 在执行AT END OF语句中,内表gt_tab中的数据为 200 ***,在执行AT END OF语句后,内表gt_tab中的数据为 200 CCC

    为了得到我们想要的重复数据的最后一条,需要将内表的数据在执行AT END OF语句前,转移到另一个工作区gw_tab中保存,否则想要的数据中str均为***。

    最后得到的数据为:

    100 BBB

    200 CCC

    另外,同理 AT NEW 语句的使用 ,也是如此,本实例将AT END OF num,改为AT NEW num后,最后的结果为:

    100 AAA

    200 AAA

  • 相关阅读:
    Selenium2+python自动化30-引入unittest框架【转载】
    GitHub上整理的一些工具
    git使用教程2-更新github上代码【转载】
    git使用教程1-本地代码上传到github【转载】
    Selenium2+python自动化46-js解决click失效问题【转载】
    linux_常用命令_2
    linux_磁盘体系
    linux_定时任务
    yum错误,Cannot find a valid baseurl for repo: base 和 No more mirrors to try
    linux批量添加10个用户并将其随机密码和用户名写入文件
  • 原文地址:https://www.cnblogs.com/Sapbruce/p/4155764.html
Copyright © 2011-2022 走看看