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 ...
随机推荐
- How to enable DateTimePicker to use both date and time z
Recently in one of my project I needed to have an option to display the DateTimePicker allowing user ...
- Cutting Sticks
题意: l长的木棒,给出n个切割点,每切一次的费用为切得木棒的长度,完成切割的最小费用. 分析: 区间dp入门,区间dp的特点,一个大区间的解可以转换成小区间的解组合起来,每个切割点的标号代表边界. ...
- Oracle数据库管理之创建和删除数据库
转自:http://supportopensource.iteye.com/blog/678898 一.数据库管理概述 在完成Oracle软件安装后,DBA就应该对组织和管理数据库负责任,其主要任务是 ...
- MVC & MVVM
什么是MVC,什么是MVVM? 面向过程 --> 面向对象 --> MVC --> MV* 面向过程: 开发人员按照需求逻辑顺序开发代码逻辑,主要思维模式在于如何实现.先细节,后整体 ...
- (转载)OC学习篇之---类的初始化方法和点语法的使用
昨天介绍了OC中类的定义和使用,今天我们来继续学习类的初始化方法和点语法的使用. 一.首先来看一下类的初始化方法 在Java中我们知道一个每个类都有构造方法,这里的初始化方法就是和构造方法一个概念的, ...
- 【恒天云技术分享系列11】Sheepdog简介
sheepdog是近几年开源社区新兴的分布式块存储文件系统,采用完全对称的结构,没有类似元数据服务的中心节点.这种架构带来了线性可扩展性,没有单点故障和容易管理的特性.对于磁盘和物理节点,SheepD ...
- python日志输出
import logging logger = logging.getLogger() #生成一个日志对象,()内为日志对象的名字,可以不带,名字不给定就是root,一般给定名字,否则会把其他的日志输 ...
- J2EE到底是什么
目前所有的B/S系统应用可以分为:有状态(statefull)和无状态(stateless)两大类别. 有状态是指在整个系统的处理过程中要保留记住一些信息,而无状态则相反,每次request都是独立的 ...
- World’s Smallest h.264 Encoder
转载 http://www.cardinalpeak.com/blog/worlds-smallest-h-264-encoder/ View from the Peak World’s Smalle ...
- 第三百零五天 how can I 坚持
今天去E世界拿抽的奖品,白去了 一趟,结果已经被拿过去了,明天还得去另一个地拿,太折腾了,今天走了1万4千多步. 哎,徐斌啊,出去见个面,这个折腾啊,受不了,想干他.开个玩笑. 黄东月,为什么打字莫名 ...