zoukankan      html  css  js  c++  java
  • SAP ABAP AT NEW 和AT END OF的用法

    1 使用binary search之前,需要sort,并且sort by ascending(系统默认的顺序也是ascending)。而且read table with key的顺序同sort的顺序相同,否则出错,常会找不到纪录。Delete adjacent duplicates之前一定要sort。

    2 关于内部表示和外部表示:调用BAPI和Update DB的时候,一定要使用内部形式(物料号有前导零的时候被认为是内部形式;单位一般也有内部形式外部形式之分)。在se11浏览数据的时候,显示数据的画面是使用内部形式,当detail overview的时候,则是外部形式。

    3 使用at new, at first, at last, at end of的时候要注意:loop的时候不能加条件;at和endat之间不能使用loop into的working area。手动实现at new, at end of的时候,需要注意,容易出错,尤其是在at end of的时候。

    4 一般情况下,更新数据库需要commit,但debug会自动commit,程序结束也会自动commit。

    5 对于选择界面上的select-options,clear s_lifnr[]是指clear body part,clear s_lifnr是指clear header part。一般不直接编辑界面上的select-options。

    ---------------------------------------------------------------
    come from : http://blog.csdn.net/CompassButton/archive/2007/03/08/1524491.aspx
    ---------------------------------------------------------------
    1、AT New事件触发说明
    如 AT New f.
    f 是内表的一个字段,当f字段或者f字段左边的字段内容发生变化是该事件后面的语句都会执行。
    TYPES: BEGIN OF COMPANIES_TYPE,
    NAME(30),
    PRODUCT(20),
    SALES TYPE I,
    END OF COMPANIES_TYPE.

    DATA: COMPANIES TYPE STANDARD TABLE OF COMPANIES_TYPE WITH
    NON-UNIQUE DEFAULT KEY INITIAL SIZE 20,
    WA_COMPANIES TYPE COMPANIES_TYPE.

    ...

    LOOP AT COMPANIES INTO WA_COMPANIES.
    AT NEW PRODUCT.
    NEW-PAGE.
    WRITE / WA_COMPANIES-NAME WA_COMPANIES-PRODUCT.
    ENDAT.
    WRITE: / WA_COMPANIES-PRODUCT, WA_COMPANIES-SALES.
    AT END OF NAME.
    SUM.
    WRITE: / WA_COMPANIES-NAME, WA_COMPANIES-SALES.
    ENDAT.
    ENDLOOP.
    这个样例当name变化时,AT new事件也会执行。

    2、AT New 发生时工作区的字段的值

    All character type fields (on the right) are filled with "*" after the current control level key.

    All other fields (on the right) are set to their initial values after the current control level key.

    AT NEW 和AT END OF的用法
    http://www.sapclub.org/blog/nyf425/archive/2008/01/07/67689.html
    -------------------------------------------------------------------
    使用 AT NEW f. 和 .AT END OF f 时需要注意:

    1,f 必须是内表的第一个字段。

    2,内表中f 之后的字段的值都会变成 *。

    例:

    REPORT Z_TEST.

    DATA: BEGIN OF TH_LIFNR,
    LIFNR TYPE LFA1-LIFNR,
    ITEM TYPE C,
    END OF TH_LIFNR.

    DATA: TD_LIFNR LIKE TABLE OF TH_LIFNR.

    SELECT LIFNR FROM EKKO
    INTO TABLE TD_LIFNR
    WHERE EBELN > 4500006374
    AND EBELN < 4500006390.

    SORT TD_LIFNR ASCENDING BY LIFNR.

    LOOP AT TD_LIFNR INTO TH_LIFNR.
    AT NEW LIFNR.
    WRITE:/10 TH_LIFNR-LIFNR.
    WRITE:/ 'The next is new lifnr.'.
    ENDAT.
    ENDLOOP.

    ----------------------------------------------------------------
    http://www.chinavalue.net/Article/Archive/2007/1/18/54443_2.html
    在写abap 的过程中,可能需要统计,求和等那么如何实现呢?其实在loop ... endloop 中间,有个AT <LEVEL>,<…>,ENDAT循环. 其中的<LEVEL>包括: FRIST, LAST, NEW , END OF.这些可以用来进行内表中按某个字段进行分组统计.
    FIRST 内 表的第一行
    LAST 内 表的最后一 行
    NEW <f> 行组 的开头,与 字段 <f> 和 <f> 剩余字段中 的内容相同
    END Of <f> 行组 的结尾,与 字段 <f> 和 <f> 剩余字段中 的内容相同

    AT - ENDAT 块中的语句 块使用这些 行条件代表 预定义的控 制结构。用 户可以使用 它们处理内 表中的控制 断点,而不 必使用 编程分支和循环 中所述的控 制语句自己 编程。
    在 AT - ENDAT 语句块中, 工作区域没 有用当前表 格行进行填 充。初始化 所有不是标 准关键字部 件的字段( 参见
    标识表格行 )。对于行 条件 FIRST 和 LAST, 系统用星号 (*) 改写所有标 准关键字段 。对于行条 件 NEW <f> 和 END OF <f>,系 统用星号 (*) 改写所有出 现在工作区 域中指定字 段 <f> 右边的标准 关键字段。 用户可根据 自己的需求 在 AT - ENDAT 语句块中填 充工作区域 。

    DATA: BEGIN OF LINE,
    COL1 TYPE C,
    COL2 TYPE I,
    COL3 TYPE I,
    END OF LINE.
    DATA ITAB LIKE LINE OCCURS 10.
    LINE-COL1 = A.
    DO 3 TIMES.
    LINE-COL2 = SY-INDEX.
    LINE-COL3 = SY-INDEX ** 2.
    APPEND LINE TO ITAB.
    ENDDO.
    LINE-COL1 = B.
    DO 3 TIMES.
    LINE-COL2 = 2 * SY-INDEX.
    LINE-COL3 = ( 2 * SY-INDEX ) ** 2.
    APPEND LINE TO ITAB.
    ENDDO.
    LOOP AT ITAB INTO LINE.
    WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
    AT END OF COL1.
    SUM."按Col1 求和.
    ULINE.
    WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
    SKIP.
    ENDAT.

    AT LAST.
    SUM."总求和.
    ULINE.
    WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
    ENDAT.
    ENDLOOP.
    其输出为:
    A 1 1
    A 2 4
    A 3 9
    ________________________________
    A 6 14

    B 2 4
    B 4 16
    B 6 36
    ________________________________
    B 12 56

    ________________________________
    * 18 70

    http://blog.163.com/fuwa_beijing/blog/static/504675142010613215021/
  • 相关阅读:
    vue环境搭建
    'vue' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
    文件上传
    json字符串解析为java对象
    自定义登录控制类Demo
    分页后台代码Demo
    主键回显
    angularjs变量的三种表示方式
    js往后台传参的方式
    同一路径下jsp能访问到,html不能访问到
  • 原文地址:https://www.cnblogs.com/cnlmjer/p/4099831.html
Copyright © 2011-2022 走看看