一、循環(huán)結(jié)構(gòu)
*&---------------------------------------------------------------------*
*& Report ZDEMO_LIMING01
*&---------------------------------------------------------------------*
*&作者:黎明
*&---------------------------------------------------------------------*
REPORT zdemo_liming01.
*1、while循環(huán)實(shí)現(xiàn)輸出0-7
DATA lv_a TYPE i.
lv_a = 0.
WHILE lv_a < 8. "條件
WRITE: / 'This is line:',lv_a. "執(zhí)行的語(yǔ)句
lv_a = lv_a + 1.
ENDWHILE.
*2、do循環(huán)實(shí)現(xiàn)輸出0-7
lv_a = 0.
DO 8 TIMES. "指定循環(huán)的次數(shù)
WRITE: / 'Do this is line:',lv_a.
lv_a = lv_a + 1.
ENDDO.
*3、嵌套循環(huán)
DATA: lv_a1 TYPE i VALUE 0,
lv_a2 TYPE i VALUE 0.
DO 2 TIMES.
lv_a1 = lv_a1 + 1.
WRITE: / 'Outer',lv_a1.
DO 5 TIMES.
lv_a2 = lv_a2 + 1.
WRITE: / 'Inner',lv_a2.
ENDDO.
ENDDO.
*跳出循環(huán)三個(gè)條件
DO 15 TIMES.
IF sy-index = 5.
CONTINUE."終止當(dāng)前循環(huán),跳到下次循環(huán)
EXIT."終止所有循環(huán)
ENDIF.
CHECK sy-index = 4."有條件的執(zhí)行后面的語(yǔ)句
WRITE: / 'Hello',sy-index.
ENDDO.
二、條件判斷
*1、條件判斷
DATA lv_title1 TYPE c LENGTH 20.
lv_title1 = 'abap'.
IF lv_title1 = 'abap'.
WRITE: / 'true'.
ELSE.
WRITE: / 'false'.
ENDIF.
*2、復(fù)雜的條件判斷(方式一)
DATA: lv_c1 TYPE c LENGTH 20 VALUE '2023',
lv_c2 TYPE c LENGTH 20 VALUE 'ABAP',
lv_c3 TYPE c LENGTH 20 VALUE '35'.
IF lv_c1 = '2023'.
IF lv_c2 = 'ABAP'.
IF lv_c3 = '35'.
WRITE: / '今天不上班'.
ENDIF.
ENDIF.
ENDIF.
*復(fù)雜的條件判斷(方式二 and or)
IF lv_c1 = '2023' AND lv_c2 = 'ABAP' AND lv_c3 = '35'.
WRITE: / '今天不上班'.
ENDIF.
*3、if elseif else
*4、case when
**如果b1 = 36 今天上班
**如果b1 = 35 今天不上班
**如果都不滿足,今天肯定不上班
DATA lv_b1 TYPE i VALUE 36.
CASE lv_b1.
WHEN 36.
WRITE: / '今天上班'.
WHEN 35.
WRITE: / '今天不上班'.
WHEN OTHERS.
WRITE: / '今天肯定不上班'.
ENDCASE.
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-580521.html
三、異常處理(cx-root)
*異常處理(cx-root)
DATA: lv_i1 TYPE i VALUE 2,
lv_i2 TYPE i VALUE 0,
lv_i3 TYPE i,
lv_msg TYPE string.
TRY.
lv_i3 = lv_i1 / lv_i2.
WRITE: / lv_i3.
CATCH cx_root INTO DATA(lo_exref).
lv_msg = lo_exref->get_text( ).
WRITE: / lv_msg.
ENDTRY.
四、結(jié)構(gòu)體,工作區(qū)
*結(jié)構(gòu)體,工作區(qū)
**方法一 定義一個(gè)變量
DATA:
BEGIN OF ls_student1,
name TYPE c LENGTH 10,
age TYPE i,
END OF ls_student1.
DATA: ls_student2 LIKE ls_student1.
ls_student2-name = '學(xué)生1'.
ls_student2-age = 18.
WRITE: / ls_student2-name,ls_student2-age.
**方法二 定義一個(gè)類型
TYPES: BEGIN OF lty_student,
name TYPE c LENGTH 10,
age TYPE i,
END OF lty_student.
DATA: ls_stu1 TYPE lty_student.
ls_stu1-name = '學(xué)生2'.
ls_stu1-age = 19.
WRITE: / ls_stu1-name,ls_stu1-age.
*給結(jié)構(gòu)體賦值三種方式
DATA: ls_stu2 TYPE lty_student,
ls_stu3 TYPE lty_student,
ls_stu4 TYPE lty_student.
**用=賦值
ls_stu2 = ls_stu1.
**用move to
MOVE ls_stu1 TO ls_stu3.
**用MOVE-CORRESPONDING...to(建議使用)
MOVE-CORRESPONDING ls_stu1 TO ls_stu4.
*結(jié)構(gòu)體繼承
TYPES: BEGIN OF lty_xxs,
name TYPE c LENGTH 10,
age TYPE i,
END OF lty_xxs.
DATA: ls_xxs TYPE lty_xxs.
ls_xxs-name = '學(xué)生1'.
ls_xxs-age = 6.
WRITE: / '小學(xué)生信息:', ls_xxs-name, ls_xxs-age.
TYPES: BEGIN OF lty_dxs,
zy TYPE string.
INCLUDE STRUCTURE ls_xxs.
TYPES: END OF lty_dxs.
DATA: ls_dxs TYPE lty_dxs.
ls_dxs-zy = 'ABAP'.
WRITE: / '大學(xué)生信息:', ls_dxs-name,ls_dxs-age,ls_dxs-zy.
五、內(nèi)表
*內(nèi)表
**結(jié)構(gòu)-》一個(gè)學(xué)生的信息
**內(nèi)表-》一群學(xué)生的信息
**1、內(nèi)表的定義
TYPES: BEGIN OF lty_xxs,
name TYPE c LENGTH 10,
age TYPE i,
END OF lty_xxs.
DATA: ls_xxs TYPE lty_xxs,
lt_xxs TYPE STANDARD TABLE OF lty_xxs.
ls_xxs-name = '學(xué)生1'.
ls_xxs-age = 6.
APPEND ls_xxs TO lt_xxs.
ls_xxs-name = '學(xué)生2'.
ls_xxs-age = 6.
APPEND ls_xxs TO lt_xxs.
ls_xxs-name = '學(xué)生3'.
ls_xxs-age = 6.
APPEND ls_xxs TO lt_xxs.
DO 3 TIMES.
ls_xxs-name = '循環(huán)相互來(lái)的'.
ls_xxs-age = sy-index.
APPEND ls_xxs TO lt_xxs. "append:追加
ENDDO.
ls_xxs-name = '插班生'.
ls_xxs-age = 7.
INSERT ls_xxs INTO lt_xxs INDEX 3. "在內(nèi)表中間插入一條數(shù)據(jù),在3前面插入
cl_demo_output=>display( lt_xxs )."打印輸出
*讀取內(nèi)表數(shù)據(jù)
**根據(jù)索引讀取數(shù)據(jù)
READ TABLE lt_xxs INTO ls_xxs INDEX 1.
WRITE: / '根據(jù)索引讀取index 1 的學(xué)生',ls_xxs-name,ls_xxs-age.
**根據(jù)一些關(guān)鍵字讀取數(shù)據(jù)
READ TABLE lt_xxs INTO ls_xxs WITH KEY name = '插班生'.
WRITE: / '根據(jù)關(guān)鍵字讀取學(xué)生信息',ls_xxs-name,ls_xxs-age.
**二分查找法
**排序
SORT lt_xxs BY name ASCENDING.
READ TABLE lt_xxs INTO ls_xxs WITH KEY name = '插班生' BINARY SEARCH.
WRITE: / '根據(jù)二分查找讀取學(xué)生信息',ls_xxs-name,ls_xxs-age.
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-580521.html
到了這里,關(guān)于SAP/ABAP(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!