看下图代码:

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

測试代码,大家能够自己试试。

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

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

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

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

  2. 【ABAP系列】SAP 销售订单的行项目里条件的增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 销售订单的行项目里条件的 ...

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

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

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

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

  5. ABAP Field+offset字符串截取

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

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

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

  7. mybatis完美的实战教程

    文件夹(? )[-] (读者注:事实上这个应该叫做非常基础的入门一下下,假设你看过Hibernate了那这个就非常的简单) 文章来源:http://blog.csdn.net/techbirds_ba ...

  8. JVM系列文章(三):Class文件内容解析

    作为一个程序猿,只知道怎么用是远远不够的.起码,你须要知道为什么能够这么用.即我们所谓底层的东西. 那究竟什么是底层呢?我认为这不能一概而论.以我如今的知识水平而言:对于Web开发人员,TCP/IP. ...

  9. RTF 格式 说明

    摘要: 本文对RTF文件格式进行分析研究,对RTF文件结构及特性进行了阐述,并分别列举了几个有用性的样例进行具体分析, 终于通过VB程序代码实现了一个RTF书写器(不具有所见即所得特性).本文对软件开 ...

随机推荐

  1. 【Android 应用开发】 ActionBar 样式具体解释 -- 样式 主题 简单介绍 Actionbar 的 icon logo 标题 菜单样式改动

    作者 : 万境绝尘 (octopus_truth@163.com) 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/3926916 ...

  2. 前端 自定义format函数

    为字符串创建format方法,用于字符串格式化  {# 前端没有字符串占位符%s的替代方法,以下是自定义字符串替换的方法,以后前端拓展方法都可以使用下面的形式 #} String.prototype. ...

  3. robot framework框架selenium API

    RIDE面板认识 selenium API 关键字 语法 参数 备注 Open Browser url Chrome 用不同的浏览器打开url,需要下载不同的浏览器驱动,默认火狐 Close Brow ...

  4. Access restriction: The method createJPEGEncoder(OutputStream) from the type JPEGCodec is not access

    准备使用Java进行图片压缩的时候,使用 import com.sun.image.codec.jpeg.*; 结果出现错误: Access restriction: The method creat ...

  5. 用jquery ajax做的select菜单,选中的效果

    //用server端语言赋值给js变量     var departmentId = '<%=提交的值 %>', deviceId='<%=提交的值 %>'     $(fun ...

  6. dnscat使用——整体感觉这个工具不完善,失败率很高,传文件时候没有完整性校验,我自己测试时通过域名转发失败,可能是其特征过于明显导致

    git clone https://github.com/iagox86/nbtool make 然后就可以按照下面的官方说明进行操作了. 我的感受:整体感觉这个工具不完善,失败率很高,传文件时候没有 ...

  7. http协议以及防盗链技术

    http协议,又称为超文本传输协议,顾名思义,http协议不仅能传输文本,还能传输图片,视频,压缩包等文件,http协议是建立在tcp/ip协议的基础之上的,http协议对php程序员来讲可以说是重中 ...

  8. 关于getElementsByTagName的遍历顺序

    关于getElementsByTagName的遍历顺序是怎么样的呢? getElementsByTagName的遍历顺序是从HTML的页面从上到下遍历还是按照标签的嵌套顺序层层遍历的呢? 来做个小小的 ...

  9. ng-repeat 中的 track by $index

    用ng-repeat指令遍历一个javascript数组,当数组中有重复元素的时候,angularjs会报错,这是因为ng-Repeat不允许collection中存在两个相同Id的对象. 对于数字或 ...

  10. 01《UML大战需求分析》阅读笔记之一

    在大二的时候就已经在课堂上对UML也就是统一建模语言有了初步的了解,但是却不怎么明白,虽然可以画图可以完成任务,但是有些糊里糊涂.所以特地把这门书作为精读书籍,想要更加深度地学习UML.很多内容只用语 ...