美文网首页SAP ABAP开发指南SAP ABAP
《SAP ABAP 开发指南》第五单元第二课时

《SAP ABAP 开发指南》第五单元第二课时

作者: 46b61a5f089d | 来源:发表于2018-08-20 13:21 被阅读4次
翱翔云天的SAP 技术网校

程序源代码

Employee

*选择数据
CLASS zcl_c5u2_employee DEFINITION
  PUBLIC
  ABSTRACT
  CREATE PUBLIC .

PUBLIC SECTION.
    METHODS:
* 构造器方法
      constructor IMPORTING firstname TYPE string
                            lastname  TYPE string,
*  取得全名
      get_printname RETURNING VALUE(fullname) TYPE string,
*  返回员工的收入
      earnings ABSTRACT RETURNING VALUE(earn) TYPE f,
*打印输出
      print ABSTRACT.
PROTECTED SECTION.
PRIVATE SECTION.
    DATA: first_name TYPE string,
          last_name  TYPE string.
ENDCLASS.



CLASS zcl_c5u2_employee IMPLEMENTATION.
  METHOD constructor.
    first_name = firstname.
    last_name = lastname.
  ENDMETHOD.

  METHOD get_printname.
    CONCATENATE last_name first_name INTO fullname SEPARATED BY space.
  ENDMETHOD.
ENDCLASS.

Sales

CLASS zcl_c5u2_sales DEFINITION
  PUBLIC
  INHERITING FROM zcl_c5u2_employee
  FINAL
  CREATE PUBLIC .

PUBLIC SECTION.
    METHODS:
        constructor IMPORTING fn TYPE string
            ln TYPE string
            sal TYPE float
            comm TYPE float
            quan TYPE i,
       setsalary IMPORTING sal TYPE f,
       setcomm IMPORTING comm TYPE f,
       setquantity IMPORTING qu TYPE i,
       earnings REDEFINITION,
       print REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
    DATA: salary TYPE f,
          commission TYPE f,
          quantity TYPE i.
ENDCLASS.



CLASS zcl_c5u2_sales IMPLEMENTATION.
    METHOD constructor.
        CALL METHOD super->constructor
          EXPORTING
            firstname = fn
            lastname  = ln
          .
          salary = sal.
          commission = comm.
          quantity = quan.
    ENDMETHOD.
    METHOD setsalary.
    salary = sal.
    ENDMETHOD.
    METHOD setcomm.
        commission = comm.
    ENDMETHOD.
    METHOD setquantity.
        quantity = qu.
    ENDMETHOD.
    METHOD earnings.
        earn = salary + commission * quantity.
    ENDMETHOD.
    METHOD print.
    WRITE: /, 'My name is:', get_printname( ).
    WRITE: /, 'My salary is:', me->earnings( ) DECIMALS 2 EXPONENT 0.
    ENDMETHOD.
ENDCLASS.

Boss

CLASS zcl_c5u2_boss DEFINITION
  PUBLIC
  INHERITING FROM zcl_c5u2_employee
  FINAL
  CREATE PUBLIC .

PUBLIC SECTION.
    METHODS:
        constructor IMPORTING fn TYPE string
            ln TYPE string
            wl TYPE f,
        set_weekly_salary IMPORTING ws TYPE f,
        earnings REDEFINITION,
        print REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
    DATA: weekly_salary TYPE f.
ENDCLASS.



CLASS zcl_c5u2_boss IMPLEMENTATION.
  METHOD constructor.
    CALL METHOD super->constructor
      EXPORTING
        firstname = fn
        lastname  = ln
      .
      weekly_salary = wl.
  ENDMETHOD.

  METHOD set_weekly_salary.
    weekly_salary = ws.
  ENDMETHOD.

  METHOD earnings.
    earn = weekly_salary * 4.
  ENDMETHOD.

  METHOD print.
    WRITE: /, 'My name is:', get_printname( ).
    WRITE: /, 'My salary is:', me->earnings( ) DECIMALS 2 EXPONENT 0.
  ENDMETHOD.
ENDCLASS.

Piece Worker

CLASS zcl_c5u2_pieceworker DEFINITION
  PUBLIC
  INHERITING FROM zcl_c5u2_employee
  FINAL
  CREATE PUBLIC .

PUBLIC SECTION.
   METHODS:
      constructor IMPORTING fn TYPE string
                            ln TYPE string
                            wg TYPE f
                            qu TYPE i,
      setwage IMPORTING wg TYPE f,
      setquan IMPORTING qu TYPE i,
      earnings REDEFINITION,
      print REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
    DATA: wage TYPE f,
          quan TYPE i.
ENDCLASS.



CLASS zcl_c5u2_pieceworker IMPLEMENTATION.
  METHOD constructor.
    CALL METHOD super->constructor
      EXPORTING
        firstname = fn
        lastname  = ln.
    wage = wg.
    quan = qu.
  ENDMETHOD.
  METHOD setwage.
    wage = wg.
  ENDMETHOD.
  METHOD setquan.
    quan = qu.
  ENDMETHOD.
  METHOD earnings.
    earn = wage * quan.
  ENDMETHOD.
  METHOD print.
    WRITE: /, 'My name is:', get_printname( ).
    WRITE: /, 'My salary is:', me->earnings( ) DECIMALS 2 EXPONENT 0.
  ENDMETHOD.
ENDCLASS.

主程序 - 测试程序

*&---------------------------------------------------------------------*
*& Report zaxyt_c5u2_all
*&---------------------------------------------------------------------*
*&  课程:ABAP 开发入门
*&  章节:第五单元第二课时
*&  作者:A_216 @ Aug 20, 2018
*&---------------------------------------------------------------------*
REPORT zaxyt_c5u2_all.

data: o_sales type ref to zcl_c5u2_sales.
create OBJECT o_sales
  EXPORTING
    fn   = 'Peter'
    ln   = 'ABC'
    sal  = '1234.56'
    comm = '0.2'
    quan = 120000
  .

o_sales->print( ).

data: o_emp type ref to zcl_c5u2_employee,
      o_boss type ref to zcl_c5u2_boss.

create OBJECT o_boss
  EXPORTING
    fn = 'Bob'
    ln = 'Xu'
    wl = '123.45'
  .

o_emp = o_boss.

o_emp->print( ).

运行结果展示

image

相关文章

网友评论

    本文标题:《SAP ABAP 开发指南》第五单元第二课时

    本文链接:https://www.haomeiwen.com/subject/swzkiftx.html