sap ABAP "?"和"?=" 的涵义(Casting)
来源:互联网 发布:云计算对个人的影响 编辑:程序博客网 时间:2024/05/21 18:00
首先个人理解这个“?”和指针Field Symbol里的Casting有着相同的意思。
所以,先来看这个Casting是什么。
Casting在英语词典有“铸造;铸件;投掷;角色分配;扔掉”的意思,那么在ABAP里可以这样理解Casting——“舍弃之前的自己,改造自己以适应新环境”。
而Catsing分为隐式型变化和显示型变化两种,下面看看Casting在Field Symbol中起的作用:
1.隐式变化:
ASSSIGN <var> TO <fs> CASTING.
例子:
TYPES: BEGIN OF t_line, col1 TYPE char5, col2 TYPE char10, col3 TYPE char15, END OF t_line.DATA: gv_addr(30) TYPE c VALUE 'CHINA BEIJING TWIN BUILDING'.FIELD-SYMBOLS: <fs> TYPE t_line.ASSIGN gv_addr TO <fs> CASTING.WRITE: <fs>-col1, <fs>-col2, <fs>-col3.
运行结果:
CHINA BEIJING T WIN BUILDING
其中 <fs>-col1=CHINA, <fs>-col2= BEIJING T,<fs>-col3=WIN BUILDING
在这个例子中,若不使用Casting,则会产生数据类型不一致的错误,因为是结构类型,gv_addr是字符类型。
2.显式变化
若将上述例子中的FIELD SYMBOLS 定义为Generic Type(不指定类型)即
将:
FIELD-SYMBOLS: <fs> TYPE t_line.
改为:
FIELD-SYMBOLS: <fs> TYPE ANY.
则
ASSIGN gv_addr TO <fs> CASTING.
要改为
ASSIGN gv_addr TO <fs> CASTING TYPE t_line.
且输出语句不能再用
WRITE: <fs>-col1, <fs>-col2, <fs>-col3.
也得改成:
WRITE: <fs>.
而这个”?”即Casting符号,更多是用于面向对象的,意思是参照其它类的对象创建新对象。
**这个其他类指的是父类和从父类继承的子类,子类可重新定义,或追加父类的属性及方法。
从父类衍生的对象和子类衍生的对象类型可能不同,但此时可用casting符号“?”来使程序正常执行。**
例子:
*---------------------------------------------------------------------** CLASS vehicle DEFINITION*---------------------------------------------------------------------** ........ **---------------------------------------------------------------------*CLASS vehicle DEFINITION INHERITING FROM object. PUBLIC SECTION. METHODS: create, drive. PROTECTED SECTION. DATA speed TYPE i VALUE '100'.ENDCLASS.*---------------------------------------------------------------------** CLASS plane DEFINITION*---------------------------------------------------------------------** ........ **---------------------------------------------------------------------*CLASS plane DEFINITION INHERITING FROM vehicle. PUBLIC SECTION. METHODS: fly.ENDCLASS.*---------------------------------------------------------------------** CLASS vehicle IMPLEMENTATION*---------------------------------------------------------------------** ........ **---------------------------------------------------------------------*CLASS vehicle IMPLEMENTATION. METHOD create. ENDMETHOD. METHOD drive. speed = speed + 100. WRITE: 'Driving is possible,','Current Speed:',speed. ENDMETHOD.ENDCLASS.*---------------------------------------------------------------------** CLASS plane IMPLEMENTATION*---------------------------------------------------------------------** ........ **---------------------------------------------------------------------*CLASS plane IMPLEMENTATION. METHOD fly. speed = speed + 1000. ENDMETHOD.ENDCLASS.DATA : car TYPE REF TO vehicle, air TYPE REF TO vehicle.START-OF-SELECTION. CREATE OBJECT : car. air ?= car. CALL METHOD: air->drive.
运行结果:
Driving is possible, Current Speed: 200
**调试过很多次,感觉?=和=的用法在面向对象中差不多,不过?=是专门用于引用类型的,有兴趣的可以自行调试,
往后再有此符号的不同用法我会再更新。**
0 0
- sap ABAP "?"和"?=" 的涵义(Casting)
- Casting 和Casting type的区别
- SAP和ABAP内存的区别
- SAP和ABAP内存的区别
- SAP和ABAP内存的区别
- SAP MEMORY 和ABAP MEMORY的区别
- SAP ABAP的替代和校验
- #define中#和##的涵义
- SAP ABAP游标的使用(示例)
- SAP ABAP游标的使用(示例)
- SAP的Abap培训
- SAP ABAP 加锁和解锁
- SAP ABAP 加锁和解锁
- ABAP--SAP的SYSTEM的函数列表和代码示例
- ABAP--SAP的SYSTEM的函数列表和代码示例
- ABAP--SAP的SYSTEM的函数列表和代码示例
- SAP ABAP -----ABAP 有用的日期FUNCTION
- Invoke 和 BeginInvoke 的真正涵义
- 流媒体直播防盗链安全控制
- 分页JQuery插件
- 【简明】To learn Redux
- iOS 关于AppDelegate中的各种委托的使用 状态更改通知
- javascript类型检测
- sap ABAP "?"和"?=" 的涵义(Casting)
- 域名间的session共享
- Java定时总结(Rx一行代码解决orz)
- file_get_contents 无法采集 https 网站
- css和html综合小案例
- 中文乱码处理
- 【学术篇】洛谷1550——打井Watering Hole
- ABAP ~ 常用Tcode大全
- 提高ROI?2017内容营销趋势详解!