看下图代码:

report  z_xul_test2 中 定义了 全局变量 G_DATA1 , 分别调用了 z_xul_tes1 中的 form  和 function zbapi_test , 这两个调用都没有将

G_DATA1 作为参数,但在两个子程序中通过 field-symbol 成功修改了其值。

打印结果如下:

如果直接把 G_DATA1 作为一个普通变量来改,在语法检查时就通不过的,但如果利用 field-symbol 在运行期来修改就可以成功修改。

同样在 function 中也可以修改。 这个function 没有任何参数。

很有意思,如果碰到增强出口都是不带修改功能的,没法实现通过出口来改程序中的值,这时候,利用这个特点,说不定将不可能变成可能。。。

http://blog.csdn.net/fangkailove/article/details/39695519

测试代码,大家可以自己试试。

  1. 源代码:
  2. *&---------------------------------------------------------------------*
  3. *& Report  Z_XUL_TEST2
  4. *&
  5. *&---------------------------------------------------------------------*
  6. *&
  7. *&
  8. *&---------------------------------------------------------------------*
  9. REPORT  Z_XUL_TEST2.
  10. DATA:G_DATA1(100).  "定义全局变量
  11. G_DATA1 = '111111111111'. "初始值
  12. WRITE: / , '\ REPORT  Z_XUL_TEST2 初始值:' ,G_DATA1.
  13. PERFORM TEST1_FORM1 IN PROGRAM ('Z_XUL_TEST1')  . "调用其它程序的 FORM
  14. WRITE: / , '\ 经过Z_XUL_TEST1.TEST1_FORM1修改后:' ,G_DATA1.
  15. CALL FUNCTION 'ZBAPI_TEST' . "调用 function module
  16. WRITE: / , '\ 经过 ZBAPI_TEST修改后:' ,G_DATA1.
  17. *&---------------------------------------------------------------------*
  18. *& Report  Z_XUL_TEST1
  19. *&
  20. *&---------------------------------------------------------------------*
  21. *& 没有任何参数,却改变了主程序里的变量。
  22. *&
  23. *&---------------------------------------------------------------------*
  24. REPORT  Z_XUL_TEST1.
  25. form  test1_form1  .
  26. "(Z_XUL_TEST2)G_DATA1 = '尝试1'.
  27. "G_DATA1 = '尝试1'.
  28. FIELD-SYMBOLS:<f1> TYPE any.
  29. data fieldname(50).
  30. fieldname = '(Z_XUL_TEST2)G_DATA1' .
  31. ASSIGN (fieldname) to <f1>  .
  32. <f1> = '2222222222222222'.
  33. ENDFORM.
  34. FUNCTION ZBAPI_TEST .
  35. FIELD-SYMBOLS:<f1> TYPE any.
  36. data fieldname(50).
  37. fieldname = '(Z_XUL_TEST2)G_DATA1' .
  38. ASSIGN (fieldname) to <f1>  .
  39. <f1> = '333333333'.
  40. ENDFUNCTION.

ABAP FIELD-SYMBOLS 有大作用- 将没有可改参数的增强出口变得也能改主程序的值了的更多相关文章

  1. ABAP FIELD-SYMBOLS 有大作用- 将没有可改參数的增强出口变得也能改主程序的值了

    看下图代码: report  z_xul_test2 中 定义了 全局变量 G_DATA1 , 分别调用了 z_xul_tes1 中的 form  和 function zbapi_test , 这两 ...

  2. Top 15 不起眼却有大作用的 .NET功能集

    目录 1. ObsoleteAttribute2. 设置默认值属性: DefaultValueAttribute3. DebuggerBrowsableAttribute4. ??运算符5. Curr ...

  3. 不起眼却有大作用的 .NET功能集(转发)

    http://www.cnblogs.com/powertoolsteam/p/top15features.html 目录 1. ObsoleteAttribute2. 设置默认值属性: Defaul ...

  4. ABAP Field+offset字符串截取

    *删除字符串末尾的字符 DATA:str TYPE string VALUE 'abc,defg,', sub_str TYPE string, num TYPE i. WRITE:/ str. nu ...

  5. ibatis集成Sqlite:小数据库也有大作用

    作者:Vinkn 来自http://www.cnblogs.com/Vinkn/ 一.简介 Ibatis简介: Ibatis是一个类似于Hibernate的数据库ORM(对象关系映射,通俗点就是将数据 ...

  6. SAP ABAP exporting list to memory ...SUBMIT 程序传输屏幕参数

    SUBMIT report EXPORTING LIST TO MEMORY              AND RETURN. submit 关键字的作用就是在程序内部调用一个程序,and retur ...

  7. Local Response Normalization作用——对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力

    AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中.AlexNet主要使用到的新技术点如下. (1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过 ...

  8. C++引用的作用和用法

    引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样. 引用的声明方法:类型标识符&引用名=目标变量名: 例如: int q; int &ra=a; 说明: &am ...

  9. C++引用详解

    引用的概念 引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样. 引用的声明方法:类型标识符 &引用名=目标变量名: 如下:定义引用ra,它是变量a的引用,即别名. i ...

随机推荐

  1. SELECT样式,兼容IE6

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Asp.Net中的获取Web.config中设置的参数!(前后台的代码示例)

    一.Web.config中设置代码     <appSettings>         <add key="deleted" value="1" ...

  3. java Ant 的使用

    Apache Ant 1.7.0 is the best available version的下载地址:http://ant.apache.org/bindownload.cgi 部署: 参考JAVA ...

  4. 关于jQuery中,animate、slide、fade等动画的连续触发、滞后反复执行的bug的个人解决办法

    照例,现在开头讲个这个问题发生的背景吧: 因为最近要做个操作选项的呼出,然后就想到了用默认隐藏,鼠标划过的时候显示的方法. 刚开始打算添加一个class="active",直接触发 ...

  5. bzoj1150

    haha,贪心,边界条件折腾了我一会儿 #include<cstdio> #include<cctype> #include<queue> #include< ...

  6. 导入CSV文件之后出现换行符问题

    在用sqlldr导入数据之后,出现数据无法匹配的情况 在用plsql点击的时候,发现出现换行符的情况,从而使用下面的方法进行匹配 select q.comments from q where repl ...

  7. POJ No.3680 Intervals

    2016-06-01 22:01:39 题目链接: POJ No.3680 Intervals 题目大意: 给定N个带权区间,最多可以重复选一个点M次,求出一种选法使得所得权最大 解法: 费用流 建模 ...

  8. homework-05

    经过这几天的深思熟虑我和小明同学将这次作业基本的完整了,可能界面略丑陋,但是基本功能均已实现.我们的服务器端采用python编写,因为服务器端是这次作业的难点,而python中有一个叫做web.py的 ...

  9. ocp 1Z0-042 1-60题解析

    1. Because of a power outage,instance failure has occurred. From what point in the redo log does rec ...

  10. Linux下的内核测试工具——perf使用简介

    Perf是Linux kernel自带的系统性能优化工具.Perf的优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature.pef可以用于查看热点函数, ...