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

  • 相关阅读:
    【发现】visualvm是jdk自带的一款监控工具
    【java】使用jsp命令查看系统中java运行的程序及进程号
    使用软件FileZilla, 通过sftp协议实现windows与linux系统传输文件
    学习spring源码-可参考的资料
    [JS]截取字符,中英文都可以
    ubuntu中在线升级python
    Python中NumPy基础使用
    Web Deploy发布网站一条龙解决方案
    C# lazy<T>的用法
    asp.net 验证正则表达式
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157156.html
Copyright © 2011-2022 走看看