ABAP FIELD-SYMBOLS 有大作用- 将没有可改參数的增强出口变得也能改主程序的值了
看下图代码:
report z_xul_test2 中 定义了 全局变量 G_DATA1 , 分别调用了 z_xul_tes1 中的 form 和 function zbapi_test , 这两个调用都没有将
G_DATA1 作为參数,但在两个子程序中通过 field-symbol 成功改动了其值。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmFuZ2thaWxvdmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">
打印结果例如以下:
假设直接把 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 , 这两 ...
- 【ABAP系列】SAP 销售订单的行项目里条件的增强
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 销售订单的行项目里条件的 ...
- 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(对象关系映射,通俗点就是将数据 ...
- mybatis完美的实战教程
文件夹(? )[-] (读者注:事实上这个应该叫做非常基础的入门一下下,假设你看过Hibernate了那这个就非常的简单) 文章来源:http://blog.csdn.net/techbirds_ba ...
- JVM系列文章(三):Class文件内容解析
作为一个程序猿,只知道怎么用是远远不够的.起码,你须要知道为什么能够这么用.即我们所谓底层的东西. 那究竟什么是底层呢?我认为这不能一概而论.以我如今的知识水平而言:对于Web开发人员,TCP/IP. ...
- RTF 格式 说明
摘要: 本文对RTF文件格式进行分析研究,对RTF文件结构及特性进行了阐述,并分别列举了几个有用性的样例进行具体分析, 终于通过VB程序代码实现了一个RTF书写器(不具有所见即所得特性).本文对软件开 ...
随机推荐
- POJ 2132
我早上调了一个早上,下午才发现把e=edge[e].next写成edge[e].next了... 这题直接DFS,一个剪枝是,当当前的最大质因数是最小公倍数的因数时,不用搜索 #include < ...
- Qunie——自我生成程序
Qunie是一段没有输入.但输出和它本身源代码同样的程序.本文无不论什么高深技术,纯属娱乐! 近期看到wikipedia的一个词条--Quine,简单介绍部分摘录于此,并简要翻译: A quine i ...
- Web Service学习-CXF开发Web Service实例demo(一)
Web Service是什么? Web Service不是框架.更甚至不是一种技术. 而是一种跨平台,跨语言的规范 Web Service解决什么问题: 为了解决不同平台,不同语言所编写的应用之间怎样 ...
- mysqlbinlog高速遍历搜索记录
目标,开发者说有个数据莫名其妙加入了.可是不知道是从哪里加入的.并且应用功能里面不应该加入这种数据,为了查清楚来源,所以我就准备去binlog里面找了.可是binlog有好几个月的数,我这样一个个my ...
- bzoj2806: [Ctsc2012]Cheat(SAM+DP)
2806: [Ctsc2012]Cheat 题目:传送门 题解: 感觉这题考的更多的就是DP啊... 看完题目的第一反应就是广义SAM...(然而并不会) 再YY一会儿想起来可以直接将作文库连成一个母 ...
- 转:Java修改Excel单元格的数据及格式
https://blog.csdn.net/aking21alinjuju/article/details/6001153?locationNum=2 继前两节的Java读取.写入Excel后,本期将 ...
- 院校-美国:美国国立卫生研究院(NIH)
ylbtech-院校-美国:美国国立卫生研究院(NIH) 美国国立卫生研究院(简称NIH)位于美国马里兰州贝塞斯达(Bethesda),是美国最高水平的医学与行为学研究机构,初创于1887年,任务是探 ...
- init&initWithFrame&initWithCoder
//当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化 - (id)initWithFrame:(CGRect)frame { if (se ...
- Web前端必须规避的8个误区
现在,有越来越多所谓的“教程”来帮助我们提高网站的易用性.下面收集了一些在Web开发中容易出错和被忽略的小问题,并且提供了参考的解决方案,以便于帮助Web开发者更好的完善网站. 通过避免下面这些小错误 ...
- javascript一个重要知识点:事件。
javascript是事件驱动的,那什么是事件?事件就是在javascript中被侦测到DOM元素行为,就称之为javascript事件. 2.事件的三个阶段 事件的三个阶段分别为: 1.捕获阶段 2 ...