ƒRƒ“ƒeƒ“ƒcƒtƒŒ[ƒ€‹N“ź

ABAP ƒIƒuƒWƒFƒNƒg‚̃ƒ\ƒbƒh - —á •¶‘‚đ SAP ƒ‰ƒCƒuƒ‰ƒŠƒXƒgƒ‰ƒNƒ`ƒƒ‚É‘g‚ʍž‚Ț

ˆÈ‰ș‚Ì—á‚Ƃ́AABAP ƒIƒuƒWƒFƒNƒg‚̃ƒ\ƒbƒh‚đéŒŸAŽÀ‘•AŽg—p‚·‚é•û–@‚đŽŠ‚”‚Ü‚·B

ŠT—v

‚±‚Ì—á‚Ƃ́A3 ‚‚̃Nƒ‰ƒX C_TEAM AC_BIKER AC_BICYCLE ‚đŽg—p‚”‚Ü‚·Bƒ†[ƒU ( ƒvƒƒOƒ‰ƒ€) ‚́AƒNƒ‰ƒX C_TEAM ‚̃IƒuƒWƒFƒNƒg‚đ“o˜^‚·‚邱‚Æ‚Ș‚Ć‚«‚Ü‚·B‘I‘đ‰æ–Ê‚ĆAƒNƒ‰ƒX C_TEAM ‚©‚çŠeƒ`[ƒ€‚̃ƒ“ƒo”‚đŽw’è‚·‚邿‚€‚ÉŽwŽŠ‚ł‚ê‚Ü‚·B 

ƒNƒ‰ƒX C_TEAM “à‚ÌŠeƒIƒuƒWƒFƒNƒg‚́AƒNƒ‰ƒXC_BIKER ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚đƒ`[ƒ€“à‚̃ƒ“ƒo‚Æ“Ż‚¶”‚Ÿ‚Ż“o˜^‚·‚邱‚Æ‚Ș‚Ć‚«‚Ü‚·BƒNƒ‰ƒX C_BIKER ‚ÌŠeƒCƒ“ƒXƒ^ƒ“ƒX‚́AƒNƒ‰ƒX C_BICYCLE ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚đ“o˜^‚”‚Ü‚·B

ƒNƒ‰ƒX C_TEAM ‚ÌŠeƒCƒ“ƒXƒ^ƒ“ƒX‚́A‘ΘbŽźˆê——‚đ‰î‚”‚ăvƒƒOƒ‰ƒ€ƒ†[ƒU‚ƒʐM‚·‚邱‚Æ‚Ș‚Ć‚«‚Ü‚·BƒvƒƒOƒ‰ƒ€ƒ†[ƒU‚́AƒAƒNƒVƒ‡ƒ“‚̑ΏۂƂȂéŒÂX‚̃`[ƒ€ƒƒ“ƒo‚đ‘I‘đ‚·‚é‚±‚Æ‚Ș‚Ć‚«‚Ü‚·BƒNƒ‰ƒX C_BIKER ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚É‚æ‚Á‚āAƒvƒƒOƒ‰ƒ€ƒ†[ƒU‚͒ljÁ‚Ì‘I‘đ‰æ–Ê‚ĆƒAƒNƒVƒ‡ƒ“‚đ‘I‘đ‚·‚é‚±‚Æ‚Ș‚Ć‚«‚Ü‚·B

‚±‚̃Oƒ‰ƒtƒBƒbƒN‚Í“Y•t‚̃eƒLƒXƒg‚Éà–Ÿ‚ł‚ê‚Ä‚ą‚Ü‚·

§–ńŽ–€

’ˆÓ

ˆê——ˆ—‚ÉŽg—p‚ł‚ê‚é ABAP –œ—߂́AABAP ƒIƒuƒWƒFƒNƒg‚Ƃ܂ŸŠź‘S‚É—˜—p‰Â”\‚ƂȂÁ‚Ä‚ą‚Ü‚č‚ńB‚œ‚Ÿ‚”A’Pƒ‚ȃeƒXƒgo—Í‚đ¶Ź‚·‚éê‡‚́AˆÈ‰ș‚Ì–œ—ß‚đŽg—p‚·‚邱‚Æ‚Ș‚Ć‚«‚Ü‚·B

·         WRITE [AT] /<offset>(<length>) <f>

·         ULINE

·         SKIP

·         NEW-LINE

’‹L: ‘ŽźĘ’è‚Æ‘ΘbŽźˆê——‹@”\‚ÌŒ»ó‚Ì“źì‚Í•ÛŰ‚ł‚ê‚Ä‚ą‚Ü‚č‚ńBĄŒă‚ÌƒŠƒŠ[ƒX‚ƁAŒĘŠ·«‚̂Ȃą•ύX‚Șs‚í‚ê‚é‰Â”\«‚Ș‚ ‚è‚Ü‚·B

éŒŸ

 

‚±‚Ì—á‚́Aƒ[ƒJƒ‹ƒNƒ‰ƒX‚đŽg‚Á‚ÄŽÀ‘•‚ł‚ê‚Ü‚·B‚±‚ê‚́A‘I‘đ‰æ–Ê‚Ș ABAP ƒvƒƒOƒ‰ƒ€‚ɑꂔ‚Ä‚ą‚āAƒOƒ[ƒoƒ‹ƒNƒ‰ƒX‚Ć’è‹`‚Ü‚œ‚ÍŒÄ‚Ńo‚·‚±‚Æ‚Ș‚Ć‚«‚È‚ą‚œ‚߂Ƃ·BˆÈ‰ș‚ÉŽŠ‚·‚̂́A2 ‚‚̑I‘đ‰æ–Ê‚Æ 3 ‚‚̃Nƒ‰ƒX‚Ì’è‹`‚Ć‚·B

*******************************************************************
*
ƒOƒ[ƒoƒ‹‘I‘đ‰æ–Ê
*******************************************************************

SELECTION-SCREEN BEGIN OF: SCREEN 100 TITLE TIT1, LINE.
   PARAMETERS MEMBERS TYPE I DEFAULT 10.
SELECTION-SCREEN END OF: LINE, SCREEN 100.

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

SELECTION-SCREEN BEGIN OF SCREEN 200 TITLE TIT2.
   PARAMETERS: DRIVE    RADIOBUTTON GROUP ACTN,
              STOP     RADIOBUTTON GROUP ACTN,
              GEARUP   RADIOBUTTON GROUP ACTN,
              GEARDOWN RADIOBUTTON GROUP ACTN.

SELECTION-SCREEN END OF SCREEN 200.

*******************************************************************
*
ƒNƒ‰ƒX’è‹`
*******************************************************************

CLASS: C_BIKER DEFINITION DEFERRED,
       C_BICYCLE DEFINITION DEFERRED.

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

CLASS C_TEAM DEFINITION.

   PUBLIC SECTION.

   TYPES: BIKER_REF TYPE REF TO C_BIKER,
         BIKER_REF_TAB TYPE STANDARD TABLE OF BIKER_REF
                                           WITH DEFAULT KEY,

         BEGIN OF STATUS_LINE_TYPE,
           FLAG(1)  TYPE C,
           TEXT1(5) TYPE C,
           ID       TYPE I,
           TEXT2(7) TYPE C,
           TEXT3(6) TYPE C,
           GEAR     TYPE I,
           TEXT4(7) TYPE C,
           SPEED    TYPE I,
         END OF STATUS_LINE_TYPE.

   CLASS-METHODS: CLASS_CONSTRUCTOR.

   METHODS: CONSTRUCTOR,
           CREATE_TEAM,
           SELECTION,
           EXECUTION.

   PRIVATE SECTION.

   CLASS-DATA: TEAM_MEMBERS TYPE I,
              COUNTER TYPE I.

   DATA: ID TYPE I,
        STATUS_LINE TYPE STATUS_LINE_TYPE,
        STATUS_LIST TYPE SORTED TABLE OF STATUS_LINE_TYPE
                                      WITH UNIQUE KEY ID,

         BIKER_TAB TYPE BIKER_REF_TAB,
        BIKER_SELECTION LIKE BIKER_TAB,
        BIKER LIKE LINE OF BIKER_TAB.

   METHODS: WRITE_LIST.

ENDCLASS.

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

CLASS C_BIKER DEFINITION.

   PUBLIC SECTION.

   METHODS: CONSTRUCTOR IMPORTING TEAM_ID TYPE I MEMBERS TYPE I,
           SELECT_ACTION,
           STATUS_LINE EXPORTING LINE
                       TYPE C_TEAM=>STATUS_LINE_TYPE.

   PRIVATE SECTION.

   CLASS-DATA COUNTER TYPE I.

   DATA: ID TYPE I,
        BIKE TYPE REF TO C_BICYCLE,
        GEAR_STATUS  TYPE I VALUE 1,
        SPEED_STATUS TYPE I VALUE 0.

   METHODS BIKER_ACTION IMPORTING ACTION TYPE I.

ENDCLASS.

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

CLASS C_BICYCLE DEFINITION.

   PUBLIC SECTION.

   METHODS: DRIVE EXPORTING VELOCITY TYPE I,
           STOP  EXPORTING VELOCITY TYPE I,
           CHANGE_GEAR IMPORTING CHANGE TYPE I
                       RETURNING VALUE(GEAR) TYPE I
                       EXCEPTIONS GEAR_MIN GEAR_MAX.

   PRIVATE SECTION.

   DATA: SPEED TYPE I,
        GEAR  TYPE I VALUE 1.

   CONSTANTS: MAX_GEAR TYPE I VALUE 18,
             MIN_GEAR TYPE I VALUE 1.

ENDCLASS.

*******************************************************************

3 ‚‚̃Nƒ‰ƒX‚ɂ́A‚ą‚ž‚ê‚àƒpƒuƒŠƒbƒN‘ꐫ‚Ș‚È‚ą‚Ì‚Ć’ˆÓ‚”‚Ä‚­‚Ÿ‚ł‚ąBƒNƒ‰ƒX‚̏ó‘Ԃ́A‚»‚ꂌ‚ê‚̃ƒ\ƒbƒh‚É‚æ‚Á‚Ä‚Ì‚Ę•ÏX‚·‚邱‚Æ‚Ș‚Ć‚«‚Ü‚·BƒNƒ‰ƒX C_TEAM ‚ɂ́AĂ“IƒRƒ“ƒXƒgƒ‰ƒNƒ^ CLASS_CONSTRUCTOR ‚ȘŠÜ‚Ü‚ê‚Ä‚ą‚Ü‚·BC_TEAM ‚Æ C_BIKER ‚ɂ́AƒCƒ“ƒXƒ^ƒ“ƒXƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ȘŠÜ‚Ü‚ê‚Ä‚ą‚Ü‚·B

ŽÀ‘•

ƒNƒ‰ƒX‚ÌŽÀ‘••”•Ș‚ɂ́A‘Ήž‚·‚ééŒŸ•”•Ș‚ĆéŒŸ‚ł‚ꂜ‚·‚Ś‚Ä‚Ìƒƒ\ƒbƒh‚ÌŽÀ‘•‚ȘŠÜ‚Ü‚ê‚Ä‚ą‚Ü‚·Bƒƒ\ƒbƒh‚̃Cƒ“ƒ^ƒtƒF[ƒX‚́A‚·‚Ć‚ÉéŒŸ‚Ć’è‹`‚ł‚ê‚Ä‚ą‚Ü‚·BŽÀ‘•‚Ƃ́AƒCƒ“ƒ^ƒtƒF[ƒXƒpƒ‰ƒ[ƒ^‚Șƒ[ƒJƒ‹ƒf[ƒ^‚̂悀‚É“źì‚”‚Ü‚·B

ƒNƒ‰ƒX C_TEAM ‚̃ƒ\ƒbƒh

ˆÈ‰ș‚ÉŽŠ‚·ƒƒ\ƒbƒh‚́AŽŸ‚̃ZƒNƒVƒ‡ƒ“‚ĆŽÀ‘•‚ł‚ê‚Ü‚·B

CLASS C_TEAM IMPLEMENTATION.

...

ENDCLASS.

CLASS_CONSTRUCTOR

  METHOD CLASS_CONSTRUCTOR.
     TIT1 = 'Team members ?'.
     CALL SELECTION-SCREEN 100 STARTING AT 5 3.
    IF SY-SUBRC NE 0.
      LEAVE PROGRAM.

     ELSE.
       TEAM_MEMBERS = MEMBERS.
     ENDIF.
   ENDMETHOD.

ƒNƒ‰ƒX C_TEAM ‚ȘƒvƒƒOƒ‰ƒ€‚ƍƏ‰‚ÉŽg—p‚ł‚ê‚é‘O‚ɁAĂ“IƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ȘŽÀs‚ł‚ê‚Ü‚·B‚±‚̃Rƒ“ƒXƒgƒ‰ƒNƒ^‚É‚æ‚Á‚āA‘I‘đ‰æ–Ê 100 ‚ȘŒÄ‚яo‚ł‚êAĂ“I‘ꐫ TEAM_MEMBERS ‚ȘƒvƒƒOƒ‰ƒ€ƒ†[ƒU‚É‚æ‚Á‚Ä“ü—Í‚ł‚ꂜ’l‚ÉĘ’è‚ł‚ê‚Ü‚·B‚±‚Ì‘ź«‚Ì’l‚́AƒNƒ‰ƒX C_TEAM ‚Ì‚·‚Ś‚Ä‚ÌƒCƒ“ƒXƒ^ƒ“ƒX‚Ó݂¶‚Ć‚·B

 

CONSTRUCTOR

   METHOD CONSTRUCTOR.
     COUNTER = COUNTER + 1.
    ID = COUNTER.

   ENDMETHOD.

ƒNƒ‰ƒX C_TEAM ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ș“o˜^‚ł‚ê‚邜‚тɁAƒCƒ“ƒXƒ^ƒ“ƒXƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ȘŽÀs‚ł‚ê‚Ü‚·B‚»‚ê‚đŽg—p‚”‚Ä C_TEAM ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚̐”‚ȘĂ“I‘ꐫ COUNTER ‚ĆƒJƒEƒ“ƒg‚ł‚êA‘Ήž‚·‚鐔’l‚ȘƒNƒ‰ƒX‚ÌŠeƒCƒ“ƒXƒ^ƒ“ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‘ꐫ ID ‚ÉŠ„‚è“–‚Ä‚ç‚ê‚Ü‚·B

CREATE_TEAM

   METHOD CREATE_TEAM.
     DO TEAM_MEMBERS TIMES.
       CREATE OBJECT BIKER EXPORTING TEAM_ID = ID
                                    MEMBERS = TEAM_MEMBERS.

       APPEND BIKER TO BIKER_TAB.
      CALL METHOD BIKER->STATUS_LINE IMPORTING LINE = STATUS_LINE.

       APPEND STATUS_LINE TO STATUS_LIST.
     ENDDO.
   ENDMETHOD.

ƒpƒuƒŠƒbƒNƒCƒ“ƒXƒ^ƒ“ƒXƒƒ\ƒbƒh CREATE_TEAM ‚́AƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌŽQÆ‚ȘĘ’è‚ł‚ꂜŽQÆ•ϐ”‚đŠÜ‚ń‚Ć‚ą‚éƒNƒ‰ƒX‚Ì‚·‚Ś‚Ä‚Ìƒ†[ƒU‚ȘŒÄ‚яo‚·‚±‚Æ‚Ș‚Ć‚«‚Ü‚·B‚±‚̃ƒ\ƒbƒh‚́AƒNƒ‰ƒX C_BIKER ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚đ“o˜^‚·‚邜‚߂Ɏg—p‚ł‚êA‚»‚̍ۂɃNƒ‰ƒX C_TEAM ‚̃vƒ‰ƒCƒx[ƒgŽQÆ•ϐ” BIKER ‚ȘŽg—p‚ł‚ê‚Ü‚·BCREATE OBJECT –œ—߂Ƃ́AƒNƒ‰ƒX C_BIKER ‚̃Cƒ“ƒXƒ^ƒ“ƒXƒRƒ“ƒXƒgƒ‰ƒNƒ^‚Ì“ü—̓pƒ‰ƒ[ƒ^‚đ—Œ•û‚Æ‚à“n‚·•K—v‚Ș‚ ‚è‚Ü‚·BV‚œ‚É“o˜^‚ł‚ꂜƒCƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌŽQÆ‚́Aƒvƒ‰ƒCƒx[ƒg“à•”ƒe[ƒuƒ‹ BIKER_TAB ‚É‘}“ü‚ł‚ê‚Ü‚·Bƒƒ\ƒbƒh‚ȘŽÀs‚ł‚ê‚邯A‚±‚Ì“à•”ƒe[ƒuƒ‹‚ÌŠes‚ɃNƒ‰ƒX C_BIKER ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌŽQÆ‚ȘŠi”[‚ł‚ê‚Ü‚·B‚±‚ê‚ç‚ÌŽQÆ‚́AƒNƒ‰ƒX C_TEAM ‚Ì’†‚Ć‚Ì‚Ę‰ÂŽ‹‚ƂȂè‚Ü‚·BŠO•”ƒ†[ƒU‚́AƒNƒ‰ƒX C_BIKER ‚̃IƒuƒWƒFƒNƒg‚đƒAƒhƒŒƒX‚·‚邱‚Æ‚Ș‚Ć‚«‚Ü‚č‚ńB

CREATE_TEAM ‚́AV‚œ‚É“o˜^‚ł‚ꂜƒIƒuƒWƒFƒNƒg‚Č‚Æ‚Éƒƒ\ƒbƒh STATUS_LINE ‚đŒÄ‚яo‚”Aì‹Æ—̈æSTATUS_LINE ‚đŽg—p‚”‚Ä‚»‚̏o—̓pƒ‰ƒ[ƒ^ LINE ‚đƒvƒ‰ƒCƒx[ƒg“à•”ƒe[ƒuƒ‹STATUS_LIST ‚ɃAƒyƒ“ƒh‚”‚Ü‚·B

SELECTION

   METHOD SELECTION.
     CLEAR BIKER_SELECTION.
     DO.
      READ LINE SY-INDEX.

       IF SY-SUBRC <> 0. EXIT. ENDIF.
      IF SY-LISEL+0(1) = 'X'.

         READ TABLE BIKER_TAB INTO BIKER INDEX SY-INDEX.
         APPEND BIKER TO BIKER_SELECTION.
       ENDIF.
     ENDDO.
     CALL METHOD WRITE_LIST.
   ENDMETHOD.

ƒpƒuƒŠƒbƒNƒCƒ“ƒXƒ^ƒ“ƒXƒƒ\ƒbƒh SELECTION ‚́AƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌŽQÆ‚ȘĘ’è‚ł‚ꂜŽQÆ•ϐ”‚đŠÜ‚ń‚Ć‚ą‚éƒNƒ‰ƒX‚Ì‚·‚Ś‚Ä‚Ìƒ†[ƒU‚ȘŒÄ‚яo‚·‚±‚Æ‚Ș‚Ć‚«‚Ü‚·B‚±‚̃ƒ\ƒbƒh‚É‚æ‚Á‚āAŒ»Ę‚̈ꗗ‚Ć 1 —ń–ڂ̃`ƒFƒbƒNƒ{ƒbƒNƒX‚Ș‘I‘đ‚ł‚ê‚Ä‚ą‚é‚·‚Ś‚Ä‚Ìs‚Ș‘I‘đ‚ł‚ê‚Ü‚·B‚±‚ê‚ç‚̍s‚ɂ‚ą‚ẮA‘Ήž‚·‚éŽQÆ•ϐ”‚Șƒe[ƒuƒ‹BIKER_TAB ‚©‚ç’ljÁ‚̃vƒ‰ƒCƒx[ƒg“à•”ƒe[ƒuƒ‹ BIKER_SELECTION ‚ɃRƒs[‚ł‚ê‚Ü‚·B‚»‚Ì‚ ‚ƂɁAˆê——‚đ•\ŽŠ‚·‚éƒvƒ‰ƒCƒx[ƒgƒƒ\ƒbƒh WRITE_LIST ‚Ș SELECTION ‚É‚æ‚Á‚ÄŒÄ‚Ńo‚ł‚ê‚Ü‚·B 

EXECUTION

   METHOD EXECUTION.
     CHECK NOT BIKER_SELECTION IS INITIAL.
     LOOP AT BIKER_SELECTION INTO BIKER.
       CALL METHOD BIKER->SELECT_ACTION.
       CALL METHOD BIKER->STATUS_LINE IMPORTING LINE = STATUS_LINE.
       MODIFY TABLE STATUS_LIST FROM STATUS_LINE.
     ENDLOOP.
     CALL METHOD WRITE_LIST.
   ENDMETHOD.

ƒpƒuƒŠƒbƒNƒCƒ“ƒXƒ^ƒ“ƒXƒƒ\ƒbƒh EXECUTION ‚́AƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌŽQÆ‚ȘĘ’è‚ł‚ꂜŽQÆ•ϐ”‚đŠÜ‚ń‚Ć‚ą‚éƒNƒ‰ƒX‚Ì‚·‚Ś‚Ä‚Ìƒ†[ƒU‚ȘŒÄ‚яo‚·‚±‚Æ‚Ș‚Ć‚«‚Ü‚·B‚±‚̃ƒ\ƒbƒh‚́Aƒe[ƒuƒ‹BIKER_SELECTION ‚ÉŽQÆ‚Ș‘¶Ę‚·‚éƒNƒ‰ƒX C_BIKER ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Č‚Æ‚ÉA2 ‚‚̃ƒ\ƒbƒh SELECT_ACTION ‚Æ STATUS_LINE ‚đŒÄ‚яo‚”‚Ü‚·Bì‹Æ—̈æ STATUS_LINE ‚̃Rƒ“ƒ|[ƒlƒ“ƒg ID ‚Æ“Ż‚¶ƒL[‚đŽ‚Âƒe[ƒuƒ‹STATUS_LIST ‚̍s‚ȘAƒvƒ‰ƒCƒx[ƒgƒƒ\ƒbƒh WRITE_LIST ‚É‚æ‚Á‚Äă‘‚«‚ł‚êA•\ŽŠ‚ł‚ê‚Ü‚·B

WRITE_LIST

   METHOD WRITE_LIST.
     SET TITLEBAR 'TIT'.
     SY-LSIND = 0.
    SKIP TO LINE 1.
    POSITION 1.
    LOOP AT STATUS_LIST INTO STATUS_LINE.

       WRITE: / STATUS_LINE-FLAG AS CHECKBOX,
               STATUS_LINE-TEXT1,
               STATUS_LINE-ID,
               STATUS_LINE-TEXT2,
               STATUS_LINE-TEXT3,
               STATUS_LINE-GEAR,
               STATUS_LINE-TEXT4,
               STATUS_LINE-SPEED.

     ENDLOOP.
   ENDMETHOD.

ƒvƒ‰ƒCƒx[ƒgƒCƒ“ƒXƒ^ƒ“ƒXƒƒ\ƒbƒh WRITE_LIST ‚́AƒNƒ‰ƒX C_TEAM ‚̃ƒ\ƒbƒh‚©‚ç‚”‚©ŒÄ‚яo‚·‚±‚Æ‚Ș‚Ć‚«‚Ü‚č‚ńB‚±‚̃ƒ\ƒbƒh‚́AƒvƒƒOƒ‰ƒ€‚ÌŠî–{ˆê——(SY_LSIND = 0) ă‚Ƀvƒ‰ƒCƒx[ƒg“à•”ƒe[ƒuƒ‹ STATUS_LIST ‚đ•\ŽŠ‚·‚邜‚߂Ɏg—p‚ł‚ê‚Ü‚·B

ƒNƒ‰ƒX C_BIKER ‚̃ƒ\ƒbƒh

ˆÈ‰ș‚ÉŽŠ‚·ƒƒ\ƒbƒh‚́AŽŸ‚̃ZƒNƒVƒ‡ƒ““à‚ĆŽÀ‘•‚ł‚ê‚Ü‚·B

CLASS C_BIKER IMPLEMENTATION.

...

ENDCLASS.

CONSTRUCTOR

   METHOD CONSTRUCTOR.
     COUNTER = COUNTER + 1.
    ID = COUNTER - MEMBERS * ( TEAM_ID - 1).

     CREATE OBJECT BIKE.
   ENDMETHOD.

ƒNƒ‰ƒX C_BIKER ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ș“o˜^‚ł‚ê‚邜‚тɁAƒCƒ“ƒXƒ^ƒ“ƒXƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ȘŽÀs‚ł‚ê‚Ü‚·B‚»‚ê‚đŽg—p‚”‚āAC_BIKER ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚̐”‚ȘĂ“I‘ꐫ COUNTER ‚ĆƒJƒEƒ“ƒg‚ł‚êA‘Ήž‚·‚鐔’l‚ȘƒNƒ‰ƒX‚ÌŠeƒCƒ“ƒXƒ^ƒ“ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‘ꐫ ID ‚ÉŠ„‚è“–‚Ä‚ç‚ê‚Ü‚·B‚±‚̃Rƒ“ƒXƒgƒ‰ƒNƒ^‚ɂ́A2 ‚‚̓ü—̓pƒ‰ƒ[ƒ^ TEAM_ID ‚š‚æ‚Ń MEMBERS ‚Ș‚ ‚è‚Ü‚·B‚±‚ê‚ç‚̃pƒ‰ƒ[ƒ^‚́AC_BIKER ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚đ“o˜^‚·‚éÛ‚É CREATE OBJECT –œ—߂Ɠn‚·•K—v‚Ș‚ ‚è‚Ü‚·B

‚Ü‚œA‚±‚̃Cƒ“ƒXƒ^ƒ“ƒXƒRƒ“ƒXƒgƒ‰ƒNƒ^‚É‚æ‚Á‚āAƒNƒ‰ƒX C_BIKER ‚̐V‚”‚ąƒCƒ“ƒXƒ^ƒ“ƒX‚Č‚Æ‚ÉAƒNƒ‰ƒXC_BICYCLE ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ș“o˜^‚ł‚ê‚Ü‚·BC_BIKER ‚ÌŠeƒCƒ“ƒXƒ^ƒ“ƒX‚̃vƒ‰ƒCƒx[ƒgŽQÆ•ϐ” BIKE ‚ÉĘ’è‚ł‚ê‚Ä‚ą‚éŽQÆ‚́A‘Ήž‚·‚éƒNƒ‰ƒXC_BICYCLE ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚đŽw‚”‚Ä‚ą‚Ü‚·BŠO•”ƒ†[ƒU‚́AƒNƒ‰ƒX C_BICYCLE ‚Ì‚±‚ê‚ç‚̃Cƒ“ƒXƒ^ƒ“ƒX‚đƒAƒhƒŒƒX‚·‚邱‚Æ‚Ș‚Ć‚«‚Ü‚č‚ńB

SELECT_ACTION

   METHOD SELECT_ACTION.
     DATA ACTIVITY TYPE I.
    TIT2 = 'Select action for BIKE'.

     TIT2+24(3) = ID.
    CALL SELECTION-SCREEN 200 STARTING AT 5 15.
    CHECK NOT SY-SUBRC GT 0.
    IF GEARUP = 'X' OR GEARDOWN = 'X'.

       IF GEARUP = 'X'.
         ACTIVITY = 1.
      ELSEIF GEARDOWN = 'X'.

         ACTIVITY = -1.
      ENDIF.

     ELSEIF DRIVE = 'X'.
       ACTIVITY = 2.
    ELSEIF STOP = 'X'.

       ACTIVITY = 3.
    ENDIF.

     CALL METHOD BIKER_ACTION( ACTIVITY).
   ENDMETHOD.

ƒpƒuƒŠƒbƒNƒCƒ“ƒXƒ^ƒ“ƒXƒƒ\ƒbƒh SELECT_ACTION ‚́AƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌŽQÆ‚ȘĘ’è‚ł‚ꂜŽQÆ•ϐ”‚đŠÜ‚ń‚Ć‚ą‚éƒNƒ‰ƒX‚Ì‚·‚Ś‚Ä‚Ìƒ†[ƒU‚ȘŒÄ‚яo‚·‚±‚Æ‚Ș‚Ć‚«‚Ü‚·B‚±‚̃ƒ\ƒbƒh‚́A‘I‘đ‰æ–Ê 200 ‚đŒÄ‚яo‚”Aƒ†[ƒU‚Ì“ü—Í‚đ•ȘÍ‚”‚Ü‚·B‚»‚Ì‚ ‚ƂɁA“Ż‚¶ƒNƒ‰ƒX‚̃vƒ‰ƒCƒx[ƒgƒƒ\ƒbƒh BIKER_ACTION ‚đŒÄ‚яo‚”‚Ü‚·B‚±‚̃ƒ\ƒbƒh‚̌ďo‚Ƃ́A’Z‚ąŒ`Žź‚đŽg‚Á‚ÄŽÀƒpƒ‰ƒ[ƒ^ ACTIVITY ‚Ș‰Œƒpƒ‰ƒ[ƒ^ ACTION ‚É“n‚ł‚ê‚Ü‚·B

BIKER_ACTION

   METHOD BIKER_ACTION.
     CASE ACTION.
       WHEN -1 OR 1.
        CALL METHOD BIKE->CHANGE_GEAR
                          EXPORTING CHANGE = ACTION
                          RECEIVING GEAR = GEAR_STATUS
                          EXCEPTIONS GEAR_MAX = 1
                                     GEAR_MIN = 2.
        CASE SY-SUBRC.

           WHEN 1.
            MESSAGE I315(AT) WITH 'BIKE' ID
                                  ' is already at maximal gear!'.

           WHEN 2.
            MESSAGE I315(AT) WITH 'BIKE' ID
                                  ' is already at minimal gear!'.

         ENDCASE.
       WHEN 2.
        CALL METHOD BIKE->DRIVE IMPORTING VELOCITY = SPEED_STATUS.

       WHEN 3.
        CALL METHOD BIKE->STOP IMPORTING VELOCITY = SPEED_STATUS.

     ENDCASE.
   ENDMETHOD.

ƒvƒ‰ƒCƒx[ƒgƒCƒ“ƒXƒ^ƒ“ƒXƒƒ\ƒbƒh BIKER_ACTION ‚́AƒNƒ‰ƒXC_BIKER ‚̃ƒ\ƒbƒh‚©‚ç‚”‚©ŒÄ‚яo‚·‚±‚Æ‚Ș‚Ć‚«‚Ü‚č‚ńB‚±‚̃ƒ\ƒbƒh‚́AŽQÆ•ϐ” BIKE “à‚ÌŽQÆ‚ȘŽw‚”‚Ä‚ą‚éƒNƒ‰ƒX C_BICYCLE ‚̃Cƒ“ƒXƒ^ƒ“ƒX“à‚ƁA“ü—̓pƒ‰ƒ[ƒ^ ACTION ‚Ì’l‚ɏ]‚Á‚Ä‘Œ‚̃ƒ\ƒbƒh‚đŒÄ‚яo‚”‚Ü‚·B 

STATUS_LINE

  METHOD STATUS_LINE.
    LINE-FLAG = SPACE.
     LINE-TEXT1 = 'Biker'.
     LINE-ID = ID.
    LINE-TEXT2 = 'Status:'.

     LINE-TEXT3 = 'Gear = '.
     LINE-GEAR  = GEAR_STATUS.
     LINE-TEXT4 = 'Speed = '.
     LINE-SPEED = SPEED_STATUS.
   ENDMETHOD.

ƒpƒuƒŠƒbƒNƒCƒ“ƒXƒ^ƒ“ƒXƒƒ\ƒbƒh STATUS_LINE ‚́AƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌŽQÆ‚ȘĘ’è‚ł‚ꂜŽQÆ•ϐ”‚đŠÜ‚ń‚Ć‚ą‚éƒNƒ‰ƒX‚Ì‚·‚Ś‚Ä‚Ìƒ†[ƒU‚ȘŒÄ‚яo‚·‚±‚Æ‚Ș‚Ć‚«‚Ü‚·B‚±‚̃ƒ\ƒbƒh‚́A\‘ą‰»‚ł‚ꂜo—̓pƒ‰ƒ[ƒ^ LINE ‚ɁA‘Ήž‚·‚éƒCƒ“ƒXƒ^ƒ“ƒX‚ÌŒ»Ę‚Ì‘ź«’l‚đ‘‚«ž‚ʂ܂·B

ƒNƒ‰ƒXC_BICYCLE ‚̃ƒ\ƒbƒh

ˆÈ‰ș‚ÉŽŠ‚·ƒƒ\ƒbƒh‚́AŽŸ‚̃ZƒNƒVƒ‡ƒ“‚ĆŽÀ‘•‚ł‚ê‚Ü‚·B

CLASS C_BICYCLE IMPLEMENTATION.

...

ENDCLASS.

DRIVE

   METHOD DRIVE.
     SPEED = SPEED  + GEAR * 10.
    VELOCITY = SPEED.

   ENDMETHOD.

ƒpƒuƒŠƒbƒNƒCƒ“ƒXƒ^ƒ“ƒXƒƒ\ƒbƒh DRIVE ‚́AƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌŽQÆ‚ȘĘ’è‚ł‚ꂜŽQÆ•ϐ”‚đŠÜ‚ń‚Ć‚ą‚éƒNƒ‰ƒX‚Ì‚·‚Ś‚Ä‚Ìƒ†[ƒU‚ȘŒÄ‚яo‚·‚±‚Æ‚Ș‚Ć‚«‚Ü‚·B‚±‚̃ƒ\ƒbƒh‚́Aƒvƒ‰ƒCƒx[ƒg‘ꐫ SPEED ‚Ì’l‚đ•ύX‚”Ao—̓pƒ‰ƒ[ƒ^ VELOCITY ‚đŽg‚Á‚Ä‚»‚Ì’l‚đŒÄoŒł‚É“n‚”‚Ü‚·B

STOP

   METHOD STOP.
     SPEED = 0.
    VELOCITY = SPEED.

   ENDMETHOD.

ƒpƒuƒŠƒbƒNƒCƒ“ƒXƒ^ƒ“ƒXƒƒ\ƒbƒh STOP ‚́AƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌŽQÆ‚ȘĘ’è‚ł‚ꂜŽQÆ•ϐ”‚đŠÜ‚ń‚Ć‚ą‚éƒNƒ‰ƒX‚Ì‚·‚Ś‚Ä‚Ìƒ†[ƒU‚ȘŒÄ‚яo‚·‚±‚Æ‚Ș‚Ć‚«‚Ü‚·B‚±‚̃ƒ\ƒbƒh‚́Aƒvƒ‰ƒCƒx[ƒg‘ꐫ SPEED ‚Ì’l‚đ•ύX‚”Ao—̓pƒ‰ƒ[ƒ^ VELOCITY ‚đŽg‚Á‚Ä‚»‚Ì’l‚đŒÄoŒł‚É“n‚”‚Ü‚·B

CHANGE_GEAR

   METHOD CHANGE_GEAR.
     GEAR = ME->GEAR.
     GEAR = GEAR + CHANGE.
     IF GEAR GT MAX_GEAR.
       GEAR = MAX_GEAR.
       RAISE GEAR_MAX.
    ELSEIF GEAR LT MIN_GEAR.

       GEAR = MIN_GEAR.
       RAISE GEAR_MIN.
    ENDIF.

     ME->GEAR = GEAR.
   ENDMETHOD.

ƒpƒuƒŠƒbƒNƒCƒ“ƒXƒ^ƒ“ƒXƒƒ\ƒbƒh CHANGE_GEAR ‚́AƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌŽQÆ‚ȘĘ’è‚ł‚ꂜŽQÆ•ϐ”‚đŠÜ‚ń‚Ć‚ą‚éƒNƒ‰ƒX‚Ì‚·‚Ś‚Ä‚Ìƒ†[ƒU‚ȘŒÄ‚яo‚·‚±‚Æ‚Ș‚Ć‚«‚Ü‚·B‚±‚̃ƒ\ƒbƒh‚́Aƒvƒ‰ƒCƒx[ƒg‘ꐫ GEAR ‚Ì’l‚đ•ύX‚”‚Ü‚·B“Ż‚¶–ŒÌ‚̉Œƒpƒ‰ƒ[ƒ^‚É‚æ‚Á‚ăƒ\ƒbƒh“à‚Ì‘ź«‚Ș•s–Ÿ—ĉ»‚ł‚ê‚邜‚߁A‘ꐫ‚ÍŽ©ŒÈŽQÆ ME->GEAR ‚đŽg‚Á‚ăAƒhƒŒƒX‚·‚é•K—v‚Ș‚ ‚è‚Ü‚·B

 

ƒvƒƒOƒ‰ƒ€‚Ć‚ÌƒNƒ‰ƒX‚ÌŽg—p

ŽŸ‚̃vƒƒOƒ‰ƒ€‚́Aă‹L‚̃Nƒ‰ƒX‚ȘƒvƒƒOƒ‰ƒ€‚Ć‚Ç‚Ì‚æ‚€‚ÉŽg—p‚ł‚ê‚é‚©‚đŽŠ‚”‚Ä‚ą‚Ü‚·B‚±‚̃vƒƒOƒ‰ƒ€‚ɂ́A‘I‘đ‰æ–Ê‚Æƒ[ƒJƒ‹ƒNƒ‰ƒX‚̐錟A‚š‚æ‚Ńƒƒ\ƒbƒh‚ÌŽÀ‘•‚à‘g‚ʍž‚Ț•K—v‚Ș‚ ‚è‚Ü‚·B 

REPORT OO_METHODS_DEMO NO STANDARD PAGE HEADING.

*******************************************************************
*
éŒŸ‚ÆŽÀ‘•
*******************************************************************

...

*******************************************************************
*
ƒOƒ[ƒoƒ‹ƒvƒƒOƒ‰ƒ€ƒf[ƒ^
*******************************************************************

TYPES TEAM TYPE REF TO C_TEAM.

DATA: TEAM_BLUE  TYPE TEAM,
      TEAM_GREEN TYPE TEAM,
      TEAM_RED   TYPE TEAM.

DATA  COLOR(5).

*******************************************************************
*
ƒvƒƒOƒ‰ƒ€ƒCƒxƒ“ƒg
*******************************************************************

START-OF-SELECTION.

  CREATE OBJECT: TEAM_BLUE,
                 TEAM_GREEN,
                 TEAM_RED.

   CALL METHOD: TEAM_BLUE->CREATE_TEAM,
               TEAM_GREEN->CREATE_TEAM,
               TEAM_RED->CREATE_TEAM.

   SET PF-STATUS 'TEAMLIST'.

   WRITE '                   Select a team!             ' COLOR = 2.

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

AT USER-COMMAND.
   CASE SY-UCOMM.
     WHEN 'TEAM_BLUE'.
       COLOR = 'BLUE '.
       FORMAT COLOR = 1 INTENSIFIED ON INVERSE ON.
       CALL METHOD TEAM_BLUE->SELECTION.
     WHEN 'TEAM_GREEN'.
       COLOR = 'GREEN'.
       FORMAT COLOR = 5 INTENSIFIED ON INVERSE ON.
       CALL METHOD TEAM_GREEN->SELECTION.
     WHEN 'TEAM_RED'.
       COLOR = 'RED '.
       FORMAT COLOR = 6 INTENSIFIED ON INVERSE ON.
       CALL METHOD TEAM_RED->SELECTION.
     WHEN 'EXECUTION'.
       CASE COLOR.
         WHEN 'BLUE '.
           FORMAT COLOR = 1 INTENSIFIED ON INVERSE ON.
           CALL METHOD TEAM_BLUE->SELECTION.
           CALL METHOD TEAM_BLUE->EXECUTION.
         WHEN 'GREEN'.
           FORMAT COLOR = 5 INTENSIFIED ON INVERSE ON.
           CALL METHOD TEAM_GREEN->SELECTION.
           CALL METHOD TEAM_GREEN->EXECUTION.
         WHEN 'RED '.
           FORMAT COLOR = 6 INTENSIFIED ON INVERSE ON.
           CALL METHOD TEAM_RED->SELECTION.
           CALL METHOD TEAM_RED->EXECUTION.
       ENDCASE.
   ENDCASE.

*******************************************************************

ƒvƒƒOƒ‰ƒ€‚Ƃ́AƒNƒ‰ƒX C_TEAM ‚đŽQÆ‚·‚é 3 ‚‚̃Nƒ‰ƒXŽQÆ•ϐ”‚ȘŽg—p‚ł‚ê‚Ä‚ą‚Ü‚·B‚±‚̃vƒƒOƒ‰ƒ€‚É‚æ‚Á‚ăNƒ‰ƒX‚©‚ç 3 ‚‚̃IƒuƒWƒFƒNƒg‚Ș“o˜^‚ł‚êA‚»‚ê‚ç‚̃IƒuƒWƒFƒNƒg‚đŽQÆ•ϐ”“à‚ÌŽQÆ‚ȘŽw‚·‚æ‚€‚ɂȂè‚Ü‚·BŠeƒIƒuƒWƒFƒNƒg‚ƁAƒƒ\ƒbƒhCREATE_TEAM ‚ȘŒÄ‚яo‚ł‚ê‚Ü‚·BĆ‰‚̃IƒuƒWƒFƒNƒg‚Ș“o˜^‚ł‚ê‚é‘O‚ɁAƒNƒ‰ƒX C_TEAM ‚̃ƒ\ƒbƒh CLASS_CONSTRUCTOR ‚ȘŽÀs‚ł‚ê‚Ü‚·BŠî–{ˆê——‚̃Xƒe[ƒ^ƒXTEAMLIST ‚É‚æ‚Á‚āAƒ†[ƒU‚ÍŽŸ‚Ì 4 ‚‚̋@”\‚©‚ç 1 ‚‚đ‘I‘đ‚·‚é‚±‚Æ‚Ș‚Ć‚«‚Ü‚·B

‚±‚̃Oƒ‰ƒtƒBƒbƒN‚Í“Y•t‚̃eƒLƒXƒg‚Éà–Ÿ‚ł‚ê‚Ä‚ą‚Ü‚·

ƒ†[ƒU‚Ș‹@”\‚đ‘I‘đ‚·‚é‚ÆA‚»‚Ì‘I‘đ‚ɉž‚¶‚Ä C_TEAM ‚Ì 3 ‚‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ì‚ą‚ž‚ê‚©‚ĆƒCƒxƒ“ƒgAT USER-COMMAND ‚ȘƒgƒŠƒK‚ł‚êAƒpƒuƒŠƒbƒNƒƒ\ƒbƒh‚ȘŒÄ‚яo‚ł‚ê‚Ü‚·Bƒ†[ƒU‚́AƒXƒe[ƒ^ƒXˆê——‚̑Ήž‚·‚és‚đ‘I‘đ‚·‚é‚±‚Æ‚ĆAƒIƒuƒWƒFƒNƒg‚̏ó‘Ô‚đ•ύX‚·‚邱‚Æ‚Ș‚Ć‚«‚Ü‚·B

 

 

 

 

 

 

 

ƒRƒ“ƒeƒ“ƒcƒtƒŒ[ƒ€I—č