`
Jack Wu
  • 浏览: 887482 次
  • 来自: ...
社区版块
存档分类
最新评论

ABAP--通过Field-symbols修改内表(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

分享到:
评论

相关推荐

    ABAP FIELD-SYMBOLS 学习资料

    在ABAP编程中,FIELD-SYMBOLS是一个非常重要的概念,它允许我们动态地引用数据结构,无需预先声明具体的变量。这在处理多种不同类型的变量或处理结构化数据时非常有用,可以提高代码的灵活性和可维护性。下面将详细...

    sap_ABAP-动态内表

    SAP ABAP 动态内表详解 SAP ABAP 中的动态内表是一种特殊的内表结构,它可以根据实际情况动态地生成和赋值。本文将详细介绍动态内表的创建、赋值和读取显示。 动态内表的创建 动态内表的创建主要分为两步:首先...

    ABAP动态内表使用的例子

    ### ABAP动态内表使用的例子 #### 一、引言 在ABAP编程语言中,动态内表(Dynamic Internal Tables)是一种非常灵活的数据结构,它允许程序员在运行时定义和操作内表。与静态内表相比,动态内表提供了更多的灵活性...

    SAP ABAP动态内表构建与例子

    4. **填充内表**:使用`FIELD-SYMBOLS`来动态定义字段并赋值,然后通过`APPEND`或`INSERT`将数据添加到内表。例如: ```abap DATA: ls_data LIKE LINE OF lt_table. FIELD-SYMBOLS: &lt;ls_field&gt; TYPE any. &lt;ls_...

    SAP ABAP动态内表总结

    field-symbols: &lt;dyn_table&gt; type standard table, ” 内表结构 , ” 表头 &lt;dyn_field&gt;. ” 项 data: dy_table type ref to data, dy_line type ref to data, ” 行 xfc type lvc_s_fcat, ” 列结构 ifc ...

    abap新手边练边学

    ### ABAP新手边练边学知识点详解 #### 一、ABAP 参数传递方式详解 **1. CallByReference (按引用传递)** - **概念**:在传递参数时,实际上是将变量的地址传递到参数中,这意味着子程序中的参数变量与外部的实际...

    BI中的abap使用

    - **FIELD-SYMBOLS**:用于处理未知结构的数据。 - **READ**:用于读取数据行。 - **SORT**:用于排序数据。 ##### 示例代码:使用SELECT检索数据 ```abap SELECT * FROM &lt;table_name&gt;. ``` ##### 示例代码:使用...

    ABAP调优-代码优化.docx

    4. **字段符号Field Symbols**:在循环或读取内表时,使用字段符号代替表工作区,可以减少数据拷贝,提高执行速度。 5. **避免嵌套循环**:尽可能减少嵌套循环,如果无法避免,将循环次数少的放在外层,减少循环层...

    ABAP经典教学-PPT

    ABAP的工作区(WORK AREAS)和字段符号(FIELD-SYMBOLS)也是重要的概念。工作区用于临时存储数据,而字段符号则可以用来间接引用任何类型的变量或表,增加了代码的灵活性。 此外,ABAP还支持模块化编程,通过定义...

    ABAP源代码-初学者参考 abap source codes.rar

    学习点可能包括:使用TABLE CONTROL组件、定义字段符号(Field-Symbols)、动态表头生成和事件处理。 3. **S_GUI_CONTROLS.txt**:此文件可能涵盖ABAP中的图形用户界面(GUI)控件使用,比如按钮、输入框等。学习者...

    SAP-ABAP培训总结-v0.4.doc

    - 用户可以使用`TYPES`声明自定义数据类型,`DATA`定义变量,`CONSTANTS`定义常量,`STATICS`定义局部静态变量,`FIELD-SYMBOLS`则用于通过地址访问变量。 4. **内表操作** - 内表是ABAP中的动态数组,可以用于...

    ABAP 个人笔记-我的SAP学习

    ABAP 的两种动态数据对象:Field symbols 与 Data reference。 十三、内表形式 内表有三种形式:standard table、sorted table、hashed table。后一种不能进行索引查找, 只能通过关键字搜索。 十四、子程序定义 ...

    ABAP Table表或结构的总结

    - ABAP中定义Structure的基本语法为:`TYPES: BEGIN OF s_structure, field1 TYPE f_type1, field2 TYPE f_type2, END OF s_structure.` 其中,`s_structure`是Structure的名称,`field1`和`field2`等是该Structure...

    非常全的 S4 ABAP 新语法(适用S4不适用ECC等老系统)

    2. **FIELD-SYMBOL**: FIELD-SYMBOLs是ABAP中的一个强大工具,它们代表其他变量或数据结构的引用,而不是实际存储数据。在S4中,FIELD-SYMBOLs可以用于处理动态数据或在不直接知道数据类型的场景下,如:`FIELD-...

    ABAP_100_道面试题

    本文总结了 ABAP 100 道面试题,涵盖了 ABAP 程序的结构、 Field Symbols 和 Field Groups、BDC 程序、Batch Input Session 等方面的知识点。 一、ABAP 程序的结构 ABAP 程序的典型结构包括 HEADER、BODY 和 ...

    ABAP学习手册归类.pdf

    ABAP 中的内表可以分为标准表、排序表、哈希表等。 六、ABAP 数据定义 6.1 直接定义 ABAP 中可以直接定义数据类型,例如 Data int_a type I。 6.2 参照自己定义的数据类型定义 ABAP 中可以参照自己定义的...

    SAP abap实例大全

    3. **屏幕处理**:学习如何使用ABAP Screen Painter创建用户界面,并通过事件处理(如ACTION,FIELD-SYMBOLS)进行交互。 4. **数据库操作**:掌握数据库表的读写操作,如SELECT, INSERT, UPDATE, DELETE语句,以及...

    SAP ABAP 动态语句详解

    SAP ABAP 动态语句详解 SAP ABAP 动态语句是 ABAP 编程语言中的一种特殊语句,用于在运行时动态地分配数据对象给字段符号。字段符号是指向数据对象的指针,通过使用 ASSIGN 语句可以将数据对象分配给字段符号。 ...

    sap批量删除、添加、修改透明表数据

    本文将详细介绍如何通过ABAP编程语言实现对SAP透明表数据的批量删除、添加以及修改操作。 #### 一、批量删除透明表数据 在进行批量删除之前,需要确保理解此操作的潜在风险。如果错误地执行了删除操作,可能会导致...

Global site tag (gtag.js) - Google Analytics