用 SAP ABAP 编写的俄罗斯游戏
生活随笔
收集整理的這篇文章主要介紹了
用 SAP ABAP 编写的俄罗斯游戏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1984年6月6日,《俄羅斯方塊》發布。因為由俄羅斯計算工程師,阿列克謝·帕基特諾夫發明而得名。 2007年,《電子游戲月刊》將該游戲列為史上最偉大的100個游戲中的第一位。 網上能找到各種編程語言實現的該游戲,當然少不了ABAP版本,源代碼鏈接:https://github.com/alejogonzaleze/SAP/blob/master/ABAP/Tetris/ZTETRIS
看下游戲畫面:
下面是具體創建方式。
主程序代碼:
REPORT ztetris NO STANDARD PAGE HEADING.INCLUDE ztetris_d. INCLUDE ztetris_f. INCLUDE ztetris_i. INCLUDE ztetris_o.START-OF-SELECTION.PERFORM init_figures.PERFORM init_stack.PERFORM put_next_fig.SET PF-STATUS 'STATUS_0'.CALL SCREEN 100.AT USER-COMMAND.CASE sy-ucomm.WHEN 'UP'OR 'EXIT'.LEAVE PROGRAM.ENDCASE.AT PF21.CLEAR: err, count.DO.PERFORM fig_move USING 'DOWN' CHANGING err.IF err EQ 'X'.EXIT.ENDIF.ADD 1 TO count.ENDDO.ADD count TO scores.PERFORM out.PERFORM f_call_rfc_wait.AT PF22.PERFORM fig_move USING 'LEFT' CHANGING err.PERFORM out.PERFORM f_call_rfc_wait.AT PF23.PERFORM fig_rotate.PERFORM out.PERFORM f_call_rfc_wait.AT PF24.PERFORM fig_move USING 'RIGHT' CHANGING err.PERFORM out.PERFORM f_call_rfc_wait.AT PF25.CALL METHOD cl_gui_cfw=>set_new_ok_codeEXPORTING new_code = 'PF21'.LEAVE LIST-PROCESSING.AT PF26.PERFORM fig_move USING 'DOWN' CHANGING err.PERFORM out.IF err = 'X'.PERFORM fig_append.PERFORM check_full_line.PERFORM put_next_fig.ENDIF.PERFORM f_call_rfc_wait.include ZTETRIS_D 代碼:
*----------------------------------------------------------------------* * INCLUDE ZTETRIS_D * *----------------------------------------------------------------------*TYPES: BEGIN OF outtype,line TYPE char20,END OF outtype.DATA outtab TYPE outtype OCCURS 1 WITH HEADER LINE.TYPES: BEGIN OF figure,name(10) TYPE c,width TYPE i,height TYPE i,body1 TYPE i,body2 TYPE i,body3 TYPE i,body4 TYPE i,old_body1 TYPE i,old_body2 TYPE i,old_body3 TYPE i,old_body4 TYPE i,END OF figure.DATA: w_1st(2) TYPE i,size_v TYPE i,size_h TYPE i,w1 TYPE i,w2 TYPE i,start TYPE i,shft TYPE i,shft1 TYPE i,rnd TYPE i,ini TYPE i,count_line TYPE i,cl TYPE i,n1 TYPE i,n2 TYPE i,ix TYPE i,s10 TYPE i,sw TYPE i,linct TYPE i,sini TYPE i,wini TYPE i,s TYPE i,w TYPE i,lc TYPE i,otstup TYPE i,row TYPE i,col TYPE i,st_width TYPE i VALUE 12,st_height TYPE i VALUE 20,count TYPE i,scores TYPE i.DATA: stack TYPE c OCCURS 0,w_col(2) TYPE c,w_typ(1) TYPE c,w_nxt(1) TYPE c,err1 TYPE c,result(20) TYPE c,answer(1) TYPE c,lv_mssg1(80) TYPE c,lv_mssg2(80) TYPE c,sz(1) TYPE c,st(1) TYPE c,sf(1) TYPE c,data0(1) TYPE c,data1(1) TYPE c,data2(1) TYPE c,data3(1) TYPE c,data4(1) TYPE c,data5(1) TYPE c,data6(1) TYPE c,data7(1) TYPE c,data8(1) TYPE c,data9(1) TYPE c,outst(20) TYPE c,err(1) TYPE c,fl_new(1) TYPE c,outstring(100) TYPE c,so(2) TYPE c.DATA: square TYPE figure,line1 TYPE figure,line2 TYPE figure,lzz1 TYPE figure,lzz2 TYPE figure,rzz1 TYPE figure,rzz2 TYPE figure,tri1 TYPE figure,tri2 TYPE figure,tri3 TYPE figure,tri4 TYPE figure,lgg1 TYPE figure,lgg2 TYPE figure,lgg3 TYPE figure,lgg4 TYPE figure,rgg1 TYPE figure,rgg2 TYPE figure,rgg3 TYPE figure,rgg4 TYPE figure,nxt_fig TYPE figure,cur_fig TYPE figure.DATA: nxt1(8) TYPE c,nxt2(8) TYPE c,nxt3(8) TYPE c,nxt4(8) TYPE c,nxt5(8) TYPE c,nxt6(8) TYPE c.DATA: stack_fig LIKE stack,stack_fig_old LIKE stack,stack_zad LIKE stack,stack_out LIKE stack,temp_fig1 LIKE cur_fig,temp_fig LIKE cur_fig.ZTETRIS_F 代碼:
*---------------------------------------------------------------------* * INCLUDE ZTETRIS_F *---------------------------------------------------------------------* *---------------------------------------------------------------------* * FORM out *---------------------------------------------------------------------* FORM out.CLEAR: lc, stack_out, so, otstup.REFRESH stack_out.otstup = st_width * 4.stack_out[] = stack[].CASE cur_fig-name+0(3).WHEN 'SQU'.w_typ ='1'.WHEN 'LIN'.w_typ ='2'.WHEN 'RZZ'.w_typ ='3'.WHEN 'LZZ'.w_typ ='4'.WHEN 'TRI'.w_typ ='5'.WHEN 'LGG'.w_typ ='6'.WHEN 'RGG'.w_typ ='7'.ENDCASE.MODIFY stack_out FROM w_typ INDEX cur_fig-body1.MODIFY stack_out FROM w_typ INDEX cur_fig-body2.MODIFY stack_out FROM w_typ INDEX cur_fig-body3.MODIFY stack_out FROM w_typ INDEX cur_fig-body4.WRITE: AT 30 '得分: ', scores.SKIP 1.WRITE /30 '下一個方塊'.SKIP 1.NEW-LINE.WRITE AT 30 nxt1.PERFORM draw_next_fig USING nxt1.NEW-LINE.WRITE AT 30 nxt2.PERFORM draw_next_fig USING nxt2.NEW-LINE.WRITE AT 30 nxt3.PERFORM draw_next_fig USING nxt3.SKIP TO LINE 3.CLEAR outstring.LOOP AT stack_out INTO st.IF sy-tabix LE otstup.CONTINUE.ENDIF.lc = sy-tabix MOD st_width.CASE st.WHEN ','. so = '::'.WHEN 'O'. so = '##'.WHEN '1'. so = '11'.WHEN '2'. so = '22'.WHEN '3'. so = '33'.WHEN '4'. so = '44'.WHEN '5'. so = '55'.WHEN '6'. so = '66'.WHEN '7'. so = '77'.ENDCASE.CONCATENATE outstring so INTO outstring.IF lc = 0.NEW-LINE.TRANSLATE outstring USING ': '.FORMAT COLOR 3 INTENSIFIED OFF.WRITE (24) outstring.DO 24 TIMES.FORMAT COLOR 3 INTENSIFIED ON.w_1st = syst-index + 1.CASE outstring+syst-index(1).WHEN '1'.WRITE AT w_1st '_' COLOR = '01'.WHEN '2'.WRITE AT w_1st '_' COLOR = '02'.WHEN '3'.WRITE AT w_1st '_' COLOR = '03'.WHEN '4'.WRITE AT w_1st '_' COLOR = '04'.WHEN '5'.WRITE AT w_1st '_' COLOR = '05'.WHEN '6'.WRITE AT w_1st '_' COLOR = '06'.WHEN '7'.WRITE AT w_1st '_' COLOR = '07'.ENDCASE.ENDDO.CLEAR outstring.ENDIF.ENDLOOP.ENDFORM. *---------------------------------------------------------------------* * FORM draw_next_fig *---------------------------------------------------------------------* FORM draw_next_fig USING nextfig.DATA: w_ind LIKE syst-index.DO 8 TIMES.w_1st = syst-index + 29.w_ind = syst-index - 1.CASE nextfig+w_ind(1).WHEN '1'.WRITE AT w_1st '_' COLOR = '01'.WHEN '2'.WRITE AT w_1st '_' COLOR = '02'.WHEN '3'.WRITE AT w_1st '_' COLOR = '03'.WHEN '4'.WRITE AT w_1st '_' COLOR = '04'.WHEN '5'.WRITE AT w_1st '_' COLOR = '05'.WHEN '6'.WRITE AT w_1st '_' COLOR = '06'.WHEN '7'.WRITE AT w_1st '_' COLOR = '07'.ENDCASE.ENDDO. ENDFORM. *---------------------------------------------------------------------* * Form F_CALL_RFC_WAIT *---------------------------------------------------------------------* FORM f_call_rfc_wait.DATA seconds TYPE i.seconds = '1'.CLEAR lv_mssg1.CALL FUNCTION 'KKPA_RFC_PING_AND_WAIT' STARTING NEW TASK '001'PERFORMING f_task_end ON END OF TASKEXPORTINGseconds = seconds "Refresh timeEXCEPTIONSRESOURCE_FAILURE = 1communication_failure = 2 MESSAGE lv_mssg1system_failure = 3 MESSAGE lv_mssg1OTHERS = 4.SET USER-COMMAND 'PF25'. ENDFORM. " F_CALL_RFC_WAIT *---------------------------------------------------------------------* * Form F_TASK_END *---------------------------------------------------------------------* FORM f_task_end USING u_taskname.CLEAR lv_mssg2.RECEIVE RESULTS FROM FUNCTION 'KKPA_RFC_PING_AND_WAIT'EXCEPTIONSRESOURCE_FAILURE = 1communication_failure = 2 MESSAGE lv_mssg2system_failure = 3 MESSAGE lv_mssg2OTHERS = 4.CHECK sy-subrc EQ 0.SET USER-COMMAND 'PF26'. " downENDFORM. " F_TASK_END *---------------------------------------------------------------------* * FORM init_figures * *---------------------------------------------------------------------* FORM init_figures.CLEAR: wini, sini.wini = st_width.sini = wini DIV 2.PERFORM init_square.PERFORM init_line.PERFORM right_zigzag.PERFORM left_zigzag.PERFORM init_t_piece.PERFORM init_right_leg.PERFORM init_left_leg.ENDFORM. *---------------------------------------------------------------------* * FORM init_square * *---------------------------------------------------------------------* FORM init_square.square-name = 'SQUARE'. "Squaresquare-body1 = sini.square-body2 = sini + 1.square-body3 = sini + wini.square-body4 = sini + wini + 1.square-width = 2.square-height = 2. ENDFORM. *---------------------------------------------------------------------* * FORM init_line * *---------------------------------------------------------------------* FORM init_line.line1-name = 'LINE1'. "Line1line1-body1 = sini - 2.line1-body2 = sini - 1.line1-body3 = sini .line1-body4 = sini + 1.line1-width = 4.line1-height = 1.line2-name = 'LINE2'. "line2line2-body1 = sini .line2-body2 = sini + wini.line2-body3 = sini + wini + wini.line2-body4 = sini + wini + wini + wini.line2-width = 1.line2-height = 4. ENDFORM. *---------------------------------------------------------------------* * FORM left_zigzag * *---------------------------------------------------------------------* FORM left_zigzag.lzz1-name = 'LZZ1'. "Left Zig Zag1lzz1-body1 = sini .lzz1-body2 = sini + wini.lzz1-body3 = sini + 1 + wini.lzz1-body4 = sini + 1 + wini + wini.lzz1-width = 2.lzz1-height = 3.lzz2-name = 'LZZ2'. "Left Zig Zag2lzz2-body1 = sini .lzz2-body2 = sini + 1.lzz2-body3 = sini + wini - 1.lzz2-body4 = sini + wini.lzz2-width = 3.lzz2-height = 2. ENDFORM. *---------------------------------------------------------------------* * FORM right_zigzag * *---------------------------------------------------------------------* FORM right_zigzag.rzz1-name = 'RZZ1'. "Right Zig Zag1rzz1-body1 = sini + 1.rzz1-body2 = sini + wini .rzz1-body3 = sini + wini + 1.rzz1-body4 = sini + wini + wini.rzz1-width = 2.rzz1-height = 3.rzz2-name = 'RZZ2'. "Right Zig Zag2rzz2-body1 = sini - 1.rzz2-body2 = sini .rzz2-body3 = sini + wini.rzz2-body4 = sini + 1 + wini.rzz2-width = 3.rzz2-height = 2. ENDFORM. *---------------------------------------------------------------------* * FORM init_t_piece * *---------------------------------------------------------------------* FORM init_t_piece.tri1-name = 'TRI1'. "T-Piece1tri1-body1 = sini .tri1-body2 = sini + wini - 1.tri1-body3 = sini + wini.tri1-body4 = sini + 1 + wini.tri1-width = 3.tri1-height = 2.tri2-name = 'TRI2'. "T-Piece2tri2-body1 = sini - 1.tri2-body2 = sini + wini - 1.tri2-body3 = sini + wini.tri2-body4 = sini - 1 + wini + wini.tri2-width = 2.tri2-height = 3.tri3-name = 'TRI3'. "T-Piece3tri3-body1 = sini - 1.tri3-body2 = sini .tri3-body3 = sini + 1.tri3-body4 = sini + wini.tri3-width = 3.tri3-height = 2.tri4-name = 'TRI4'. "T-Piece4tri4-body1 = sini .tri4-body2 = sini - 1 + wini.tri4-body3 = sini + wini.tri4-body4 = sini + wini + wini.tri4-width = 2.tri4-height = 3. ENDFORM. *---------------------------------------------------------------------* * FORM init_right_leg * *---------------------------------------------------------------------* FORM init_right_leg.rgg1-name = 'RGG1'. "Right Leg1rgg1-body1 = sini + 1.rgg1-body2 = sini + wini + 1.rgg1-body3 = sini + wini + wini .rgg1-body4 = sini + wini + wini + 1.rgg1-width = 2.rgg1-height = 3.rgg2-name = 'RGG2'. "Right Leg2rgg2-body1 = sini - 1.rgg2-body2 = sini + wini - 1.rgg2-body3 = sini + wini.rgg2-body4 = sini + wini + 1.rgg2-width = 2.rgg2-height = 3.rgg3-name = 'RGG3'. "Right Leg3rgg3-body1 = sini .rgg3-body2 = sini + 1.rgg3-body3 = sini + wini .rgg3-body4 = sini + wini + wini.rgg3-width = 2.rgg3-height = 3.rgg4-name = 'RGG4'. "Right Leg4rgg4-body1 = sini - 1.rgg4-body2 = sini .rgg4-body3 = sini + 1.rgg4-body4 = sini + wini + 1.rgg4-width = 2.rgg4-height = 3. ENDFORM. *---------------------------------------------------------------------* * FORM init_left_leg * *---------------------------------------------------------------------* FORM init_left_leg.lgg1-name = 'LGG1'. "Left Leg1lgg1-body1 = sini .lgg1-body2 = sini + wini.lgg1-body3 = sini + wini + wini.lgg1-body4 = sini + wini + wini + 1.lgg1-width = 2.lgg1-height = 3.lgg2-name = 'LGG2'. "Left Leg2lgg2-body1 = sini - 1.lgg2-body2 = sini .lgg2-body3 = sini + 1.lgg2-body4 = sini + wini - 1.lgg2-width = 2.lgg2-height = 3.lgg3-name = 'LGG3'. "Left Leg3lgg3-body1 = sini .lgg3-body2 = sini + 1.lgg3-body3 = sini + wini + 1.lgg3-body4 = sini + wini + wini + 1.lgg3-width = 2.lgg3-height = 3.lgg4-name = 'LGG4'. "Left Leg4lgg4-body1 = sini + 1.lgg4-body2 = sini - 1 + wini.lgg4-body3 = sini + wini.lgg4-body4 = sini + wini + 1.lgg4-width = 2.lgg4-height = 3. ENDFORM. *---------------------------------------------------------------------* * FORM init_stack * *---------------------------------------------------------------------* FORM init_stack.CLEAR: size_v, size_h.CLEAR: scores, result.size_v = st_height + 4 .size_h = st_width - 2.CLEAR stack.DO size_v TIMES.APPEND 'O' TO stack.DO size_h TIMES.APPEND ',' TO stack.ENDDO.APPEND 'O' TO stack.ENDDO.APPEND ',' TO stack.DO size_h TIMES.APPEND 'O' TO stack.ENDDO.APPEND ',' TO stack.ENDFORM. *---------------------------------------------------------------------* * FORM put_next_fig * *---------------------------------------------------------------------* FORM put_next_fig.CLEAR: rnd.CLEAR: err, result, answer.IF ini IS INITIAL.PERFORM random_integer USING ini cur_fig.PERFORM random_integer USING rnd nxt_fig.ELSE.cur_fig = nxt_fig.PERFORM random_integer USING rnd nxt_fig.ENDIF.PERFORM build_next_fig USING rnd.PERFORM fig_move USING 'INIT' CHANGING err.IF NOT err IS INITIAL.WRITE scores TO result.CONDENSE result.CONCATENATE 'You score:' result INTO result SEPARATED BY space.CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'EXPORTINGdefaultoption = 'Y'diagnosetext1 = resulttextline1 = 'Play again?'titel = 'GAME OVER'cancel_display = ''IMPORTINGanswer = answer.IF answer EQ 'N'.LEAVE PROGRAM.ELSE.PERFORM init_stack.PERFORM put_next_fig.ENDIF.ENDIF. ENDFORM. *---------------------------------------------------------------------* * FORM random_integer * *---------------------------------------------------------------------* FORM random_integer USING i_num i_fig.CALL FUNCTION 'QF05_RANDOM_INTEGER'EXPORTINGran_int_max = 7ran_int_min = 1IMPORTINGran_int = i_num.CASE i_num.WHEN '1'.i_fig = square.WHEN '2'.i_fig = line1.WHEN '3'.i_fig = rzz1.WHEN '4'.i_fig = lzz1.WHEN '5'.i_fig = tri1.WHEN '6'.i_fig = lgg1.WHEN '7'.i_fig = rgg1.ENDCASE. ENDFORM. *---------------------------------------------------------------------* * Form build_next_fig *---------------------------------------------------------------------* FORM build_next_fig USING p_fig.CLEAR: nxt1, nxt2, nxt3.CASE p_fig.WHEN '1'.nxt1+0(4) = '1111'.nxt2+0(4) = '1111'.WHEN '2'.nxt1+0(8) = '22222222'.WHEN '3'.nxt1+2(2) = '33'.nxt2+0(4) = '3333'.nxt3+0(2) = '33'.WHEN '4'.nxt1+0(2) = '44'.nxt2+0(4) = '4444'.nxt3+2(2) = '44'.WHEN '5'.nxt1+2(2) = '55'.nxt2+0(6) = '555555'.WHEN '6'.nxt1+0(2) = '66'.nxt2+0(2) = '66'.nxt3+0(4) = '6666'.WHEN '7'.nxt1+2(2) = '77'.nxt2+2(2) = '77'.nxt3+0(4) = '7777'.ENDCASE.ENDFORM. " build_next_fig *---------------------------------------------------------------------* * FORM fig_move * *---------------------------------------------------------------------* FORM fig_move USING dir TYPE char5 CHANGING error.CLEAR: temp_fig, shft1.error = ''.temp_fig = cur_fig.CASE dir.WHEN 'DOWN'.shft1 = st_width.WHEN 'LEFT'.shft1 = -1.WHEN 'RIGHT'.shft1 = 1.WHEN 'INIT'.shft1 = st_width * 4.ENDCASE.ADD shft1 TO cur_fig-body1.ADD shft1 TO cur_fig-body2.ADD shft1 TO cur_fig-body3.ADD shft1 TO cur_fig-body4.PERFORM check_pos CHANGING error.IF NOT error IS INITIAL.cur_fig = temp_fig.ENDIF. ENDFORM. *---------------------------------------------------------------------* * FORM check_pos *---------------------------------------------------------------------* FORM check_pos CHANGING error TYPE char1.DO 1 TIMES.READ TABLE stack INTO st INDEX cur_fig-body1.IF st NE ','.error = 'X'. EXIT.ENDIF.READ TABLE stack INTO st INDEX cur_fig-body2.IF st NE ','.error = 'X'. EXIT.ENDIF.READ TABLE stack INTO st INDEX cur_fig-body3.IF st NE ','.error = 'X'. EXIT.ENDIF.READ TABLE stack INTO st INDEX cur_fig-body4.IF st NE ','.error = 'X'. EXIT.ENDIF.ENDDO. ENDFORM. *---------------------------------------------------------------------* * FORM fig_rotate *---------------------------------------------------------------------* FORM fig_rotate.CLEAR: start, temp_fig1, err1, shft, w1, w2.w1 = st_width.w2 = st_width DIV 2.temp_fig1 = cur_fig.start = cur_fig-body1.CASE temp_fig1-name.WHEN 'LINE1'.cur_fig = line2.shft = - ( w1 * 2 + w2 - 2 ) .WHEN 'LINE2'.cur_fig = line1.shft = w1 * 2 - w2 .WHEN 'LZZ1'.cur_fig = lzz2.shft = w1 - w2 .WHEN 'LZZ2'.cur_fig = lzz1.shft = w2 - w1 - w1 .WHEN 'RZZ1'.cur_fig = rzz2.shft = w1 - w2 - 1 .WHEN 'RZZ2'.cur_fig = rzz1.shft = w2 - w1 - w1 + 1.WHEN 'TRI1'.cur_fig = tri2.shft = - w2 + 1 .WHEN 'TRI2'.cur_fig = tri3.shft = w1 - w2 .WHEN 'TRI3'.cur_fig = tri4.shft = - w1 - w2 + 1 .WHEN 'TRI4'.cur_fig = tri1.shft = - w2 .WHEN 'LGG1'.cur_fig = lgg2.shft = - w2 + 1 .WHEN 'LGG2'.cur_fig = lgg3.shft = - w2 .WHEN 'LGG3'.cur_fig = lgg4.shft = - w2 .WHEN 'LGG4'.cur_fig = lgg1.shft = - w2 - 1 .WHEN 'RGG1'.cur_fig = rgg2.shft = - w2 .WHEN 'RGG2'.cur_fig = rgg3.shft = - w2 .WHEN 'RGG3'.cur_fig = rgg4.shft = - w2 + 1 .WHEN 'RGG4'.cur_fig = rgg1.shft = - w2 .WHEN 'SQUARE'.cur_fig = square.shft = - st_width DIV 2 .ENDCASE.cur_fig-body1 = start + cur_fig-body1 + shft. "- temp_fig1-body1.cur_fig-body2 = start + cur_fig-body2 + shft. "- temp_fig1-body2.cur_fig-body3 = start + cur_fig-body3 + shft. "- temp_fig1-body3.cur_fig-body4 = start + cur_fig-body4 + shft. "- temp_fig1-body4.PERFORM check_pos CHANGING err1.IF err1 = 'X'.cur_fig = temp_fig1.ENDIF. ENDFORM. *---------------------------------------------------------------------* * FORM fig_append *---------------------------------------------------------------------* FORM fig_append.MODIFY stack FROM w_typ INDEX cur_fig-body1.MODIFY stack FROM w_typ INDEX cur_fig-body2.MODIFY stack FROM w_typ INDEX cur_fig-body3.MODIFY stack FROM w_typ INDEX cur_fig-body4.ENDFORM. *---------------------------------------------------------------------* * FORM check_full_line *---------------------------------------------------------------------* FORM check_full_line.CLEAR: cl, n1, n2, outst, ix, s10, sw, linct.sw = st_width - 2.CLEAR outst.LOOP AT stack INTO st.linct = sy-tabix MOD st_width .IF linct = 1.ix = sy-tabix.s10 = ix + st_width - 1.ENDIF.CONCATENATE outst st INTO outst.IF linct = 0.SEARCH outst FOR ','.IF sy-subrc NE 0.DELETE stack FROM ix TO s10.ADD 1 TO cl.ENDIF.CLEAR outst.ENDIF.ENDLOOP.CLEAR: n1, n2.DO cl TIMES.ADD 10 TO n1.ADD n1 TO n2.INSERT 'O' INTO stack INDEX 1.DO sw TIMES.INSERT ',' INTO stack INDEX 1.ENDDO.INSERT 'O' INTO stack INDEX 1.ENDDO.ADD n2 TO scores. ENDFORM.include ZTETRIS_I 代碼:
*---------------------------------------------------------------------* * INCLUDE ZTETRIS_I *---------------------------------------------------------------------* *---------------------------------------------------------------------* * MODULE exx INPUT *---------------------------------------------------------------------* MODULE exx INPUT.LEAVE PROGRAM. ENDMODULE.include ZTETRIS_O 代碼:
*---------------------------------------------------------------------* * INCLUDE ZTETRIS_O *---------------------------------------------------------------------* *---------------------------------------------------------------------* * MODULE status_0100 OUTPUT *---------------------------------------------------------------------* MODULE status_0100 OUTPUT.PERFORM out.LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 100.LEAVE SCREEN. ENDMODULE.新建一個 id 為 100 的 dynpro screen:
新建一個 PF STATUS:
function key 明細如下:
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的用 SAP ABAP 编写的俄罗斯游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 饱满的同义词近义词是什么
- 下一篇: RxJs combineLatest O