技术开发 频道

OO模式的ABAP Report

    【IT168 技术文章】

    首先我们创建本地类lcl_main,并用本地类的公共方法来代替以前ABAP报表的FORM,模式中创建了传统ABAP报表的三个方法:get_data,process_data,write_data,然后在私有部分创建我们以前的全局变量,常量,并为该类创建事件以处理无法找到数据等情形,然后定义处理该事件的类,然后就可以在主程序中通过定义对象实现这些类了。*---------------------------------------------------------------------*

    * C.L.A.S.S  lcl_main  D.E.F.I.N.I.T.I.O.N

    *---------------------------------------------------------------------*

    CLASS lcl_main DEFINITION.

    PUBLIC SECTION.

    METHODS: get_data,

    process_data,

    write_data.

    EVENTS: no_data.

    PRIVATE SECTION.

    *----------------------------------

    * C.O.N.S.T.A.N.T.S

    *----------------------------------

    constants : tno(4)     value 'No',

    tpernr(8)  value 'Pers.No',

    tcname(23) value 'Name',

    ttrfst(5)  value 'Level',

    tbtrtl(6)  value 'Dept',

    tbegda(10) value 'Date',

    tbeguz(7)  value 'Time',

    tawart(4)  value 'Type',

    tatext(23) value 'Description'.

    *---------------------------------

    * L.O.C.A.L  D.A.T.A.

    *---------------------------------

    DATA: nomer type i,

    begin of WA_RESULT,

    pernr type pa0001-pernr,

    cname type pa0002-cname,

    trfst type pa0008-trfst,

    btrtl type pa0001-btrtl,

    begda type pa2001-begda,

    beguz type pa2001-beguz,

    awart type pa2001-awart,

    atext type t554t-atext,

    BEGEN(10),

    end of WA_RESULT,

    begin of wa_pa0001,

    pernr type pa0001-pernr,

    werks type pa0001-werks,

    btrtl type pa0001-btrtl,

    trfst type pa0008-trfst,

    end of wa_pa0001,

    begin of wa_pa0002 ,

    pernr type pa0002-pernr,

    cname type pa0002-cname,

    end of wa_pa0002,

    begin of wa_pa2001 ,

    pernr type pa2001-pernr,

    begda type pa2001-begda,

    endda type pa2001-endda,

    awart type pa2001-awart,

    beguz type P2001-BEGUZ,

    enduz type P2001-ENDUZ,

    end of wa_pa2001,

    wa_t554t   type t554t,

    IT_RESULT  like standard table of WA_RESULT,

    IT_pa0001  like standard table of WA_pa0001,

    IT_pa0002  like standard table of WA_pa0002,

    IT_pa2001  like standard table of WA_pa2001,

    IT_t554t   like standard table of WA_t554t.

    ENDCLASS. *---------------------------------------------------------------------*

    * C.L.A.S.S  lcl_handler  D.E.F.I.N.I.T.I.O.N

    *---------------------------------------------------------------------*

    CLASS lcl_handler DEFINITION.

    PUBLIC SECTION.

    METHODS handle_event FOR EVENT no_data OF lcl_main.

    ENDCLASS.

    *---------------------------------------------------------------------*

    * C.L.A.S.S  lcl_main  I.M.P.L.E.M.E.N.T.A.T.I.O.N

    *---------------------------------------------------------------------*

    CLASS lcl_main IMPLEMENTATION.

    *----------------------------------------------*

    * METHOD get_data                              *

    *----------------------------------------------*

    METHOD get_data.

    ENDMETHOD.

    *----------------------------------------------*

    * METHOD process_data                          *

    *----------------------------------------------*

    METHOD process_data.

    ENDMETHOD.

    *----------------------------------------------*

    * METHOD write_data                            *

    *----------------------------------------------*

    METHOD write_data.

    ENDMETHOD.

    ENDCLASS.*-----------------------------------------------------------------------

    * M.A.I.N.  .P.R.O.G.R.A.M.

    *-----------------------------------------------------------------------

    START-OF-SELECTION.

    DATA: o_main           TYPE REF TO lcl_main,

    o_handler        TYPE REF TO lcl_handler.

    CREATE OBJECT: o_main, o_handler.

    SET HANDLER o_handler->handle_event FOR ALL INSTANCES.

    CALL METHOD o_main->get_data.

    CALL METHOD o_main->process_data.

    CALL METHOD o_main->write_data.

 

0
相关文章