• abap 简单的本地类操作


    作业:

    1、创建程序,用于本地类测试。

    2、创建本地类LCL_AIRPLANE,用于对飞机的名称及型号的管理。

    3、创建1个私有实例类型GTY_PLANE,包含2个字段:

    name(飞机的名称),类型为string,

    TYPE(飞机的类型),参考SAPLANE-PLANETYPE.

    4、创建一个私有实例内表GT_PLANE,一个私有实例GS_PLANE,均使用上面的私有实例类型。

    5、创建一个私有静态属性,GV_N_O_AIRPLANES(计算数量),类型为I

    6、创建一个公有实例方法,记录飞机名称,飞机类型及录入飞机数量。

    7、创建一个公有实例方法,显示内表。

    8、创建公有静态方法,显示飞机数量。

    9、创建对象,对方法调用显示。

      1 TYPE-POOLS:SILS.
      2 "定义ALV结构
      3 DATA:IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
      4      WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
      5      WA_LAYOUT   TYPE SLIS_LAYOUT_ALV.
      6 "定义类
      7 CLASS LCL_AIRPLAN DEFINITION.
      8   PUBLIC SECTION.
      9     METHODS:SET_ATTRIBUTES,
     10     "有参数传入的方法
     11       SET_ATTRIBUTES1 IMPORTING P_NAME TYPE STRING
     12                                 P_TYPE TYPE STRING,
     13       DISPLAY_ATTRIBUTES,
     14       DISPLAY_ATTRIBUTES1.
     15     CLASS-METHODS:DISPLAY_N_O_AIRPLANES.
     16   PRIVATE SECTION.
     17     TYPES: BEGIN OF GTY_PLANE,
     18              BOX  TYPE BCD,
     19              NAME TYPE STRING,
     20              TYPE TYPE SAPLANE-PLANETYPE,
     21            END OF GTY_PLANE.
     22     DATA:GT_PLANE TYPE STANDARD TABLE OF GTY_PLANE,
     23          GS_PLANE TYPE GTY_PLANE.
     24 
     25     DATA:GT_PLANE1 TYPE STANDARD TABLE OF GTY_PLANE,
     26          GS_PLANE1 TYPE GTY_PLANE.
     27 
     28     CLASS-DATA: GV_N_O_AIRPLANES TYPE I.
     29     CLASS-DATA: GV_N_O_AIRPLANES1 TYPE I.
     30 ENDCLASS.
     31 "实现类
     32 CLASS LCL_AIRPLAN IMPLEMENTATION.
     33   METHOD:SET_ATTRIBUTES.
     34     GS_PLANE-NAME = '波音'.
     35     GS_PLANE-TYPE = '747'.
     36     APPEND GS_PLANE TO GT_PLANE.
     37     GV_N_O_AIRPLANES = 1.
     38     CLEAR:GS_PLANE.
     39     GS_PLANE-NAME = '国行'.
     40     GS_PLANE-TYPE = '123'.
     41     APPEND GS_PLANE TO GT_PLANE.
     42     GV_N_O_AIRPLANES = GV_N_O_AIRPLANES + 1.
     43     CLEAR:GS_PLANE.
     44     GS_PLANE-NAME = '欧航'.
     45     GS_PLANE-TYPE = '543'.
     46     APPEND GS_PLANE TO GT_PLANE.
     47     GV_N_O_AIRPLANES = GV_N_O_AIRPLANES + 1.
     48     CLEAR:GS_PLANE.
     49   ENDMETHOD.
     50   METHOD SET_ATTRIBUTES1.
     51     GS_PLANE1-NAME = P_NAME.
     52     GS_PLANE1-TYPE = P_TYPE.
     53     APPEND GS_PLANE1 TO GT_PLANE1.
     54     GV_N_O_AIRPLANES1 = GV_N_O_AIRPLANES + 1.
     55     CLEAR:GS_PLANE1.
     56   ENDMETHOD.
     57   METHOD:DISPLAY_ATTRIBUTES.
     58     PERFORM FIELDCAT USING:
     59            1 'NAME' '飞机的名称',
     60            2 'TYPE' '飞机的类型'.
     61     WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
     62     WA_LAYOUT-BOX_FIELDNAME = 'box'. "全选按钮“
     63     CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     64       EXPORTING
     65         I_CALLBACK_PROGRAM = SY-REPID
     66         IS_LAYOUT          = WA_LAYOUT
     67         IT_FIELDCAT        = IT_FIELDCAT
     68       TABLES
     69         T_OUTTAB           = GT_PLANE
     70       EXCEPTIONS
     71         PROGRAM_ERROR      = 1
     72         OTHERS             = 2.
     73     IF SY-SUBRC <> 0.
     74 * Implement suitable error handling here
     75     ENDIF.
     76   ENDMETHOD.
     77   METHOD DISPLAY_ATTRIBUTES1.
     78     CL_DEMO_OUTPUT=>DISPLAY_DATA( GT_PLANE1 ).
     79   ENDMETHOD.
     80 
     81   METHOD:DISPLAY_N_O_AIRPLANES.
     82     WRITE:/ '总计录入了', GV_N_O_AIRPLANES, '架飞机'.
     83   ENDMETHOD.
     84 ENDCLASS.
     85 
     86 FORM FIELDCAT  USING    P_COL_POS
     87                         P_FIELDNAME
     88                         P_SELTEXT_M.
     89   WA_FIELDCAT-COL_POS = P_COL_POS.
     90   WA_FIELDCAT-FIELDNAME = P_FIELDNAME.
     91   WA_FIELDCAT-SELTEXT_M = P_SELTEXT_M.
     92   APPEND WA_FIELDCAT TO IT_FIELDCAT.
     93   CLEAR:WA_FIELDCAT.
     94 ENDFORM.
     95 "创建实例并调用方法
     96 
     97 START-OF-SELECTION.
     98   "常规的定义参考类后创建实例
     99   DATA:RESULT TYPE REF TO LCL_AIRPLAN.
    100   CREATE OBJECT: RESULT.
    101   RESULT->SET_ATTRIBUTES( )."普通方法实例调用
    102   RESULT->DISPLAY_ATTRIBUTES( ).
    103   LCL_AIRPLAN=>DISPLAY_N_O_AIRPLANES( )."静态方法调用
    104   "new关键字创建实例
    105   RESULT = NEW LCL_AIRPLAN( ).
    106   RESULT->DISPLAY_N_O_AIRPLANES( ).
    107   "直接创建实例
    108   DATA(RESULT1) = NEW LCL_AIRPLAN( ).
    109   "调用是传入参数
    110   RESULT1->SET_ATTRIBUTES1( p_name = '春秋航空' P_TYPE = '747' ).
    111   RESULT1->SET_ATTRIBUTES1( p_name = '四川航空' P_TYPE = '333' ).
    112"另外一种导入参数的方法,上面是简写
      CALL METHOD RESULT1->SET_ATTRIBUTES1
        EXPORTING
          P_NAME '南方航空'
          P_TYPE '444'.
    113 RESULT1->DISPLAY_ATTRIBUTES1( ). 114 RESULT1->DISPLAY_N_O_AIRPLANES( ). 115 "更加直接 116 NEW LCL_AIRPLAN( )->DISPLAY_N_O_AIRPLANES( ).

     

     

  • 相关阅读:
    windows7使用(2)软件安装及系统优化
    Lucene.net搜索——初识lucene
    只好代码不好色,嫁人当嫁IT男!
    数据库生成word说明文档
    搬家到cnblogs,请多关照
    轻量级的数据交换格式——初识Json(上)
    Flex之Hello world
    Flex之Hello world
    Flex之Hello world
    在 Visual C++ 中控制全局对象的初始化顺序,#pragma init_seg(compiler)
  • 原文地址:https://www.cnblogs.com/BruceKing/p/12360813.html
Copyright © 2020-2023  润新知