ABAP FIELD-SYMBOLS 有大作用- 将没有可改参数的增强出口变得也能改主程序的值了
看下图代码:
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
测试代码,大家可以自己试试。
- 源代码:
- *&---------------------------------------------------------------------*
- *& Report Z_XUL_TEST2
- *&
- *&---------------------------------------------------------------------*
- *&
- *&
- *&---------------------------------------------------------------------*
- REPORT Z_XUL_TEST2.
- DATA:G_DATA1(100). "定义全局变量
- G_DATA1 = '111111111111'. "初始值
- WRITE: / , '\ REPORT Z_XUL_TEST2 初始值:' ,G_DATA1.
- PERFORM TEST1_FORM1 IN PROGRAM ('Z_XUL_TEST1') . "调用其它程序的 FORM
- WRITE: / , '\ 经过Z_XUL_TEST1.TEST1_FORM1修改后:' ,G_DATA1.
- CALL FUNCTION 'ZBAPI_TEST' . "调用 function module
- WRITE: / , '\ 经过 ZBAPI_TEST修改后:' ,G_DATA1.
- *&---------------------------------------------------------------------*
- *& Report Z_XUL_TEST1
- *&
- *&---------------------------------------------------------------------*
- *& 没有任何参数,却改变了主程序里的变量。
- *&
- *&---------------------------------------------------------------------*
- REPORT Z_XUL_TEST1.
- form test1_form1 .
- "(Z_XUL_TEST2)G_DATA1 = '尝试1'.
- "G_DATA1 = '尝试1'.
- FIELD-SYMBOLS:<f1> TYPE any.
- data fieldname(50).
- fieldname = '(Z_XUL_TEST2)G_DATA1' .
- ASSIGN (fieldname) to <f1> .
- <f1> = '2222222222222222'.
- ENDFORM.
- FUNCTION ZBAPI_TEST .
- FIELD-SYMBOLS:<f1> TYPE any.
- data fieldname(50).
- fieldname = '(Z_XUL_TEST2)G_DATA1' .
- ASSIGN (fieldname) to <f1> .
- <f1> = '333333333'.
- ENDFUNCTION.
ABAP FIELD-SYMBOLS 有大作用- 将没有可改参数的增强出口变得也能改主程序的值了的更多相关文章
- ABAP FIELD-SYMBOLS 有大作用- 将没有可改參数的增强出口变得也能改主程序的值了
看下图代码: report z_xul_test2 中 定义了 全局变量 G_DATA1 , 分别调用了 z_xul_tes1 中的 form 和 function zbapi_test , 这两 ...
- Top 15 不起眼却有大作用的 .NET功能集
目录 1. ObsoleteAttribute2. 设置默认值属性: DefaultValueAttribute3. DebuggerBrowsableAttribute4. ??运算符5. Curr ...
- 不起眼却有大作用的 .NET功能集(转发)
http://www.cnblogs.com/powertoolsteam/p/top15features.html 目录 1. ObsoleteAttribute2. 设置默认值属性: Defaul ...
- ABAP Field+offset字符串截取
*删除字符串末尾的字符 DATA:str TYPE string VALUE 'abc,defg,', sub_str TYPE string, num TYPE i. WRITE:/ str. nu ...
- ibatis集成Sqlite:小数据库也有大作用
作者:Vinkn 来自http://www.cnblogs.com/Vinkn/ 一.简介 Ibatis简介: Ibatis是一个类似于Hibernate的数据库ORM(对象关系映射,通俗点就是将数据 ...
- SAP ABAP exporting list to memory ...SUBMIT 程序传输屏幕参数
SUBMIT report EXPORTING LIST TO MEMORY AND RETURN. submit 关键字的作用就是在程序内部调用一个程序,and retur ...
- Local Response Normalization作用——对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力
AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中.AlexNet主要使用到的新技术点如下. (1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过 ...
- C++引用的作用和用法
引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样. 引用的声明方法:类型标识符&引用名=目标变量名: 例如: int q; int &ra=a; 说明: &am ...
- C++引用详解
引用的概念 引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样. 引用的声明方法:类型标识符 &引用名=目标变量名: 如下:定义引用ra,它是变量a的引用,即别名. i ...
随机推荐
- android左右滑动加载分页以及动态加载数据
android UI 往右滑动,滑动到最后一页就自动加载数据并显示 如图: package cn.anycall.ju; import java.util.ArrayList; import java ...
- CGAffineTransformScale
[UIViewbeginAnimations:nilcontext:nil]; [UIViewsetAnimationDuration:0.5]; _imgView.transform = CGAff ...
- Asp.Net中文本换行
Asp.Net中文本换行 VB.NET Function HtmlCode(ByVal fString) If fString <> "" Then ...
- Hadoop2.0新特性-持续追加【干货】
1.NAME NODE HA 2.NAME NODE Federation 3.HDFS 快照(目录快照) 4.HDFS 缓存 5.HDFS ACL 6.异构层级存储结构 -------------- ...
- New full duplex HTTP tunnel implementation (client and server)
https://issues.jboss.org/browse/NETTY-246?page=com.atlassian.jirafisheyeplugin:fisheye-issuepanel —— ...
- POJ 2031 Building a Space Station (最小生成树)
Building a Space Station 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/C Description Yo ...
- Spring Named Parameters examples in SimpleJdbcTemplate
In JdbcTemplate, SQL parameters are represented by a special placeholder "?" symbol and bi ...
- js获取服务端IP及端口及协议
alert("location:"+window.location); alert("href: "+window.location.href); alert( ...
- mvc annotation-driven作用
会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter两个bean,是spring MVC为Controller分发请求 ...
- 【JDBC】百万数据插入
使用JDBC连接数据库时,如果插入的数据量大,一条一条地插入数据会变得非常缓慢.此时,我们需要用到预处理. 查阅Java开发文档,我们可以看到: 接口 PreparedStatement 表示预编译的 ...