zoukankan      html  css  js  c++  java
  • ABAP通过Fieldsymbols修改内表(ABAP新手)

    report demo_field_symbols_assign_comp .

    DATA: BEGIN OF gs_itab,
          drph(10) ,
          cmsl01(17),
          cmsl02(17),
          sl01(17),
          sl02(17),
          END OF gs_itab.
    DATA: gt_ita1 LIKE gs_itab OCCURS 0 WITH HEADER LINE.

    data gv_zd(15).

    FIELD-SYMBOLS <sl> TYPE c.
    FIELD-SYMBOLS <cmsl> TYPE c.
    FIELD-SYMBOLS <fs> LIKE LINE OF gt_ita1.

    DO 15 TIMES.
      gt_ita1-drph =  SY-INDEX .
      gt_ita1-cmsl01 = 2.
      append gt_ita1.
    enddo.

    write 'Before Modify:'.
    write:/ 'cmsl01','cmsl02','sl01','sl02'.
    loop at gt_ita1.
      write:/ '|',gt_ita1-cmsl01,'|',gt_ita1-cmsl02,'|',gt_ita1-sl01,'|' ,gt_ita1-sl02,'|'.
    endloop.
    loop at gt_ita1 aSSIGNING <fs>.
      ASSIGN COMPONENT 'CMSL01' OF STRUCTURE <fs> TO <cmsl>.
      ASSIGN COMPONENT 'SL01' OF STRUCTURE <fs> TO <sl>.
      move <cmsl>  to  <sl>.
      ASSIGN COMPONENT 'SL02' OF STRUCTURE <fs> TO <sl>.
      move <cmsl>  to  <sl>.
      <fs>-CMSL02 = 'A' .
    endloop.

    write / 'After Modify:'.
    loop at gt_ita1.
      write:/ '|',gt_ita1-cmsl01,'|',gt_ita1-cmsl02,'|',gt_ita1-sl01,'|' ,gt_ita1-sl02,'|'.
    endloop. 

    注意:ASSIGN TABLE FIELD (f) TO <fs>. 只能用TABLES定义的变量
    An important, but frequently misunderstood aspect of ABAP, is the "Field Symbol". But you'll find they aren't mysterious. In fact, they may remind you of some features in popular general-purpose programming languages.
    Field symbols allow you to:
    ** Assign an alias to a data object(for example, a shortened name for data objects structured through several hierarchies
            For Example: <fs>-f instead of rec1-rec2-rec3-f)
    ** Set the offset and length for a string variably at runtime
    ** Set a pointer to a data object that you determine at runtime (dynamic ASSIGN)
    ** Adopt or change the type of a field dynamically at runtime
    ** Access components of a structure (from Release 4.5A) Point to lines of an internal table (process internal tables without a separate work area)

    Field symbols in ABAP are similar to pointers in other programming languages. However, pointers (as used in PASCAL or C) differ from ABAP field symbols in their reference syntax.

    The statement ASSIGN f to <fs> assigns the field f to field symbol <fs>. The field symbol <fs> then "points" to the contents of field f at runtime. This means that all changes to the
    contents of f are visible in <fs> and vice versa. You declare the field symbol <fs> using the statement FIELD-SYMBOLS: <fs>.

    Reference syntax
    Programming languages such as PASCAL and C use a dereferencing symbol to indicate the difference between a reference and the object to which it refers; so PASCAL would use p^ for a pointer instead of p, C would use *p instead of p. ABAP does not have any such dereferencing symbol.
    ** In PASCAL or C, if you assign a pointer p1 to a pointer p2, you force p1 to point to the object to which p2 refers (reference semantics).
    ** In ABAP, if you assign a field symbol <fs1> to a field  symbol <fs2>, <fs1> takes the value of the data object to which <fs2> refers (value semantics).
    ** Field symbols in ABAP are always dereferenced, that is, they always access the referenced data object. If you want to change the reference yourself in ABAP, you can use the ASSIGN statement
    to assign field symbol <fs1> to field symbol <fs2>.

    参考链接:http://blog.csdn.net/CompassButton/archive/2007/06/15/1653907.aspx
    http://blog.csdn.net/CompassButton/archive/2007/06/15/1653157.aspx

  • 相关阅读:
    list1AndCompile
    pickle序列化2
    Servlet简单例子:输出当前日期
    Servlet简单例子:前后端通信
    Java 继承的简单例子
    Java 一个简单的距离工具类
    Java 私有静态成员变量的简单使用
    mysql数据类型
    使用Bootstrap简单案例——导航条+轮播图+模态框+表单
    K-means 聚类
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157156.html
Copyright © 2011-2022 走看看