我們一起學ABAP(05) 流程控制

2021-08-11 15:07:25 字數 3619 閱讀 3171

1、abap-流程控制

sap的資料流程控制中,有很多複雜的邏輯操作。因此也開發有相應的管理和組織專案的語法,如:abap的分支結構: if、case 。迴圈操作:do、while等。

1.1、if 分支結構(選擇結構)

用法:當程式需要在乙個二叉路口做出選擇時,需要用if語句,控制程式在某種情況下,執行某種選擇。當第乙個語句的結果不成立(為false)時,執行下乙個語句。

if語句實現分支有三種型別:

a、若發生了某情況該怎麼處理

if  x = 5.

write:  /  'the value  of  x is 5'.

endif.

b、若發生了某種情況,該怎麼處理,否則有該怎麼處理

if x = 5.

write:  / 'the value of x is 5'.

else.

write: / 'the value of x is 6'.

endif.

c、若發生某種情況怎麼處理,否則又該怎麼處理,還可以怎麼處理(巢狀n個選擇條件)

if x = 5.

write:  / 'the value of x is 5'.

elseif x = 6.

write:  / 'the value of  x is  6'.

......

else.

write:  / 'the value of x is 7 '.

endif.

1.2、case 語句實現分支

用法:當程式面臨多個交叉條件時,就可以使用case語句進行分支。

data: num type i.

......對num賦值

case num.

when 1.

write:  / 'the number is one'.

when 2.

write:  / 'the number is two'.

......

when others.                          

write:  / 'others number'.

endcase.

注意:也許小夥伴們會有疑惑了,if語句和case語句的功能類似啊,該怎麼區分使用呢?

if語句 最好使用 在3種以內的選擇條件的程式中。超過3種 的選擇條件,最好使用 case語句 更簡潔高效。因為過多的使用if巢狀語句,**會顯得十分臃腫,可讀性差。

2、迴圈控制

2.1  do語句(無條件迴圈)

語法: 

do [times] [varying from  ] next ].

"**塊

enddo.

注意:可以使用times選項限制迴圈次數。可以是文字或變數。如果是0或負數,系統不執行該迴圈。系統字段 sy-index 中包含已處理過的迴圈次數。

栗子: 

do 15 times.

str_a  =  sy-index.

enddo.

栗子2:do語句內部也可以實現多層巢狀迴圈,但是為了程式的可讀性,建議最多不超過6層。

do 5 times.

write:  / ' the index is ', sy-index.

do 2 times.

write: / 'the next index is', sy-index.

enddo.

enddo.

2.2、while語句(條件迴圈)

語法:while [vary from next ].

endwhile.

注意:使用while語句時,要注意避免死迴圈。死迴圈就是迴圈條件一直成立(true),一直執行,不會自動停止。嚴重的會造成記憶體溢位,系統崩潰! 所以,在迴圈達到目的後,應該使while語句的條件變為假(不成立 = false)的,或使用 exit、stop、reject語句退出迴圈。

栗子:

while  i < 10.

i = i + 1.

a = a + 10. 

endwhile. 

2.3 loop ...endloop語句

用法:loop語句通常用來迴圈讀取和操作內錶。

loop  at  .

write: itab.

endloop.

2.4 on  change(迴圈內部資料管控)

用法:當迴圈中的資料值發生變動時,可以使用on  change表示式來觸發數值變動事件。

栗子:do 5 times.

on  change of sy-index.

write: / 'the index is',sy-index.

endon.

enddo.

2.6 迴圈終止語句

a、continue 語句(用於結束當前迴圈進行下一步迴圈)

b、exit 語句 (用於結束當前整個迴圈)

栗子:do 100 times.

if   sy-index  >=  10   and   sy-index  <=  20.

continue.        "結束當前迴圈,進入迴圈下個語句,所以不會輸出 10~20 間的資料

elseif sy-index = 50.

exit.                   "當前迴圈到第50次時,結束整個迴圈,輸出的最大資料 49

endif.

enddo.

c、check語句 

用法:check語句後面會跟乙個表示式,表示式值為假(false)時,check語句被啟用,會退出迴圈(loop)或處理程式(statementblock).

1、當check語句用在迴圈中時,被啟用後會退出當前迴圈,進行下一次迴圈,類似於continue的作用;

2、當check語句出現在迴圈之外,被啟用後退出的是當前執行的 processing block(程式塊),像方法、事件等**塊。

栗子:

do 10 times.

check sy-index  <= 4.

write:  / sy-index.

enddo.

3、比較運算子

表達中比較常用的比較運算子:

4、用迴圈控制語句,輸出乘法口訣表

栗子:data: x  type  i,

y   type  i,

z   type i.

data:  xs(2)   type  c,

ys(2)   type  c,  

zs(2)    type  c.

x = 0.

y = 0.

do 9 times .

write /  .

x = x + 1.

y = 0.

do 9 times.

y = y + 1.

z = x * y.

xs = x. 

ys = y.

zs = z.

write :  xs, 'x' , ys , ' = ' , zs , ' , ' .

enddo.

enddo.

我們一起學python

直接上乾貨,這裡主要介紹一下python與c語言在基本語法上的不同 1 字串既可以被 包圍還可以被 包圍,效果一樣。2 有兩種除法 和 前者的用法和c一樣,整數相除為整數 後一種結果可能為小數。3 python中語句結束沒有分號,douhao。4 冒號後表示縮排的是 塊,並且縮排只能是4個空格 我也...

與孩子一起學程式設計05章

python內建了乙個輸入函式 raw input 與孩子一起學程式設計05章 2013年8月21日16 03 04 學習raw input 輸入函式 print enter your name name raw input print hi name,how are you today.如果在pr...

與孩子一起學程式設計05章

動手試一試 1.2.兩個變數的程式設計 coding utf 8 輸入,你姓什麼?記住要有字串,這是很好的 first raw input enter you first name last raw input enter you last name print hello,first,last,h...