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 ...
随机推荐
- 大数据性能调优之HBase的RowKey设计
1 概述 HBase是一个分布式的.面向列的数据库,它和一般关系型数据库的最大区别是:HBase很适合于存储非结构化的数据,还有就是它基于列的而不是基于行的模式. 既然HBase是采用KeyValue ...
- leveldb源码笔记
关于KV数据库leveldb的介绍,网上已经太多了,这里只是自己再学习源码过程中,整理的笔记,磁盘存储和内存存储的结构用了伪代码表示出来了,首先是内存中存储结构,然后是log文件存储结构和磁盘数据ss ...
- 学习笔记 - 深究Bitmap压缩避免OOM的核心inSampleSize的最佳取值
/** * 测试代码,通过在SDCard根目录放置几种不同大小的图片, 来自动测试压缩方式是否有效同时看是否会内存不够. * * @since * By:AsionTang * At:2014年3月2 ...
- Gridview数据导出到ExcelWord 防止出现乱码
1.页面中添加绿色字体代码<%@ Page Language="C#" CodeFile="111.aspx.cs" Inherits="111 ...
- Chapter3:字符串、向量和数组
C++11新特性:范围for(range for) for (declaration: expression) statement vector和数组都是对象的集合,而引用不是对象. vector对象 ...
- Codevs No.1163 访问艺术馆
2016-05-31 20:48:47 题目链接: 访问艺术馆 (Codevs No.1163) 题目大意: 一个贼要在一个二叉树结构的艺术馆中偷画,画都处于叶子节点处,偷画和经过走廊都需要时间,求在 ...
- 详解 jupyter notebook 集成 spark 环境安装
来自: 代码大湿 代码大湿 1 相关介绍 jupyter notebook是一个Web应用程序,允许你创建和分享,包含活的代码,方程的文件,可视化和解释性文字.用途包括:数据的清洗和转换.数值模拟.统 ...
- asp.net mvc 实体类成员变量标识示例
检查不能为空 [Required] public string ID { get; set; } 检查最大长度 [StringLength(36, ErrorMessage = "长度不可超 ...
- Android问题-打开DelphiXE8与DelphiXE10编译空工程提示“[Exec Error] The command exited with code 1.”
问题情况:开发了半天的D2007代码,想测试一个安桌程序,发现新建空工程,提示失败. 提示如下 Exec Error] The command PATH C:\Program Files (x86)\ ...
- BAT-使用BAT方法删除目录下0KB文件
@Echo Off For /f "tokens=*" %%i in ('dir /a-d /b /s "*.*"') do ( If " (Del ...