abap中的casting及?=


REPORT AA.

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.
"若不使用Casting,则会产生数据类型不一致的错误,因为是结构类型,gv_addr是字符类型。
ASSIGN GV_ADDR TO <FS> CASTING.

WRITE:/ <FS>-COL1, <FS>-COL2, <FS>-COL3.

FIELD-SYMBOLS:<FS1> TYPE ANY.
ASSIGN GV_ADDR TO <FS1> CASTING TYPE T_LINE.
WRITE:/ <FS>-COL1, <FS>-COL2, <FS>-COL3.

CLASS VEHICLE DEFINITION .
  PUBLIC SECTION.
    METHODS:DRIVE.
  PROTECTED SECTION.
    DATA:SPEED TYPE I VALUE '100'.
ENDCLASS.

CLASS PLAN DEFINITION INHERITING FROM VEHICLE.
  PUBLIC SECTION.
    METHODS:FLY.
ENDCLASS.

CLASS VEHICLE IMPLEMENTATION.
  METHOD DRIVE.
    SPEED = SPEED + 100.
    WRITE:/ 'Driving is possible,','Current Speed:',SPEED.
  ENDMETHOD.
ENDCLASS.

CLASS PLAN IMPLEMENTATION.
  METHOD: FLY.
    SPEED = SPEED + 1000.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  DATA:CAR TYPE REF TO VEHICLE.
  DATA:AIR TYPE REF TO VEHICLE.
  DATA:AIR1 TYPE REF TO VEHICLE.
  DATA:AIR2 TYPE REF TO VEHICLE.
  CREATE OBJECT:CAR. "里面的初始speed是100
  CREATE OBJECT:AIR1."里面的初始speed是100
  AIR2 = CAR."里面的初始speed是200 ,相当于已经执行一遍的CAR
  AIR ?= CAR."里面的初始speed是100 相当于根据类创建了一个与CAR相同的实例
  CALL METHOD AIR->DRIVE( ).
  CALL METHOD AIR1->DRIVE( ).
  CALL METHOD AIR2->DRIVE( ).

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM