ABAP語法概述解析課件_第1頁
ABAP語法概述解析課件_第2頁
ABAP語法概述解析課件_第3頁
ABAP語法概述解析課件_第4頁
ABAP語法概述解析課件_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、ABAPl 了解ABAPl ABAP語法概述l ABAP語言的數(shù)據(jù)類型l ABAP的語法格式l 結(jié)構(gòu)類型和結(jié)構(gòu)體l 內(nèi)表l 數(shù)據(jù)庫操作ABAP ABAP(Advanced business application program),是一種高級企業(yè)應用編程語言,它支持封裝性和繼承性,封裝性是面向?qū)ο蟮幕A,而繼承性是建立在封裝性基礎上的重要特性。它適合生成報表,支持對數(shù)據(jù)庫的操作,如:Sqlserver,Oracle,DB2等主流數(shù)據(jù)庫系統(tǒng)。 語法概述ABAP基本語法特點由各自獨立的語句構(gòu)成。 每個語句的第一個單詞必須是ABAP關鍵字。單詞之間至少要用一個空格分隔。每個語句結(jié)束必須要用句號。一個

2、語句可以跨多行,只要不遇到句號,就認為是一個延續(xù) 的語句??梢园讯鄠€語句放在一行。ABAP基本語法特點(持續(xù)) ABAP不區(qū)分大小寫,關鍵字和用戶操作數(shù)都一樣,為了便于閱讀,一般把關鍵字大寫,而操作數(shù)小寫。如果連續(xù)多行的第一個關鍵字相同,可以使用鏈語句方式減少輸入data: id type I.data: name type c.可寫為:data: id type I , name type c.注釋:注釋行由第一列的星號(*)開頭,并且必須寫在第一 列,前面不能有空格。在行末的注釋用雙引號(”)作為前導。data: id type i. “ 定義一個對象num數(shù)據(jù)類型為IABAP的命名規(guī)則使

3、用至少1個但不超過8個字符。不要使用下列字符:句點(.);逗號(,);空格( );括號();單引號();雙引號(“);等號(=);星號(*);百分號(%);ABAP數(shù)據(jù)類型(八種基本數(shù)據(jù)類型)D :日期類型,格式為YYYYMMDD,長度為8T : 時間類型,格式為HHMMSS,長度為6I : 整數(shù)類型,默認長度為4,初始值為0F : 浮點類型,默認長度為8,初始值為0,常用于計算C :字符串類型,定義變量時指定字符個數(shù)N :數(shù)字字符串類型,定義變量時指定數(shù)值字符個數(shù)X :字節(jié)序列類型,定義變量時指定字節(jié)數(shù)P(壓縮號) :允許的長度為1 到16 個字節(jié),系統(tǒng) 會指定默認值8 個字節(jié)(也就是15

4、位數(shù)字)和0 個小數(shù)位常用:大小,長度,重量,貨幣等單位的場合.定義方法:f1 type I.f2 type p decimals num.f3 type f.如:DATA number(10) type p value 9.876543210 decimals 9. 輸出:9.876543210如果decimals 8輸出: 9.87654321ABAP數(shù)據(jù)類型ABAP運算數(shù)值運算(在ABAP中數(shù)學表達式可以任意多層嵌套)算術(shù)運算 二元操作符包括: + :加法 :減法 * :乘法 / :除法 * :乘方DIV :整除忽略余數(shù)MOD :取模 需要注意,圓括號和操作符都是關鍵字,需要跟操作數(shù)之間

5、 至少用一個空格分開。 (1+2)*3 應該寫成( 1 + 2 ) * 3注:ABAP中不能使用”&”或”+”做連接(詳參見computer語句的關鍵字文檔數(shù)學函數(shù)時間日期運算ABAP運算邏輯表達式通用邏輯運算符 EQ( = ) NE( ) LT( ) LE( ) GE( = )IS操作符IS INITIAL 檢查字段是否為初始值IS ASSIGNED 檢查字段是否被分配BETWEEN操作符組合邏輯表達式 AND 與 OR 或 NOT 非ABAP程序的關健字 關健字是語句的第一個詞,它決定整個語句的意義,有四種不同類型的關健字1.說明性關健字TYPES,DATA,TABLES,這些關健字說明定

6、義數(shù)據(jù)類型或者說明程序可以訪問的數(shù)據(jù)對象2.事件關健字AT SELECTION SCREEN,START-OF-SELECTIONEnd-of-selection 這些關健字在ABAP中定義處理塊,處理塊是當特定事件發(fā)生時進行處理的語句組ABAP程序的關健字3.控制關健字IF ,WHILE,CASE4.操作關健字WRITE,MOVE,ADD用于處理數(shù)據(jù)在聲明語句中定義對象的數(shù)據(jù)類型有兩種直接的: type 可直接將數(shù)據(jù)類型分配給已聲明的數(shù)據(jù)對象DATA number type I.間接的: like 將另一個數(shù)據(jù)對象的數(shù)據(jù)類型分配給當前聲明的對象,間接引用DATA num like numbe

7、r.語法格式Constants語句:用于創(chuàng)建常量Tables語句:用于創(chuàng)建表工作區(qū)Types語句:1.用于創(chuàng)建用戶自定義的數(shù)據(jù)類型 2.結(jié)構(gòu)化數(shù)據(jù)類型 3.一個內(nèi)表形式的數(shù)據(jù)類型DATA語句:1.用于創(chuàng)建一個簡單類型的變量 2.定義一個結(jié)構(gòu)化的數(shù)據(jù)對象 3.定義內(nèi)表語法格式語法格式定義數(shù)據(jù)對象DATAname TYPE type_name 例: DATA number TYPE I. DATA num TYPE I value 18.TYPES:addressTYPE C.注:TYPES語句用來創(chuàng)建用戶定義的基本數(shù)據(jù)類型和結(jié)構(gòu)化的數(shù)據(jù)類型,通過TYPES定義的類型不能直接使用,需要通過DATA

8、進行定義其對應的變量后才可使用如: DATA:address1 TYPE address語法格式賦值可以使用MOVE 關鍵字來對數(shù)據(jù)對象賦值,下面兩個語句具有相同的功效。DATA: var1 type I value 18, var2 type I. MOVE var1 TO var2. var2 = var1. 把var1的值賦給var2,如果var1 和var2 的數(shù)據(jù)類型不同,就存在類型沖突的可能 性,這時候如果存在轉(zhuǎn)換規(guī)則,則會進行自動類型轉(zhuǎn)換 關于類型沖突和自動轉(zhuǎn)換,可以查MOVE 的幫助。 CLEAR 語句根據(jù)類型清除數(shù)據(jù)對象,恢復成默認值。打印輸出格式(WRITE)WRITE F

9、irst line.WRITE Still first line.WRITE / Second line.WRITE /13 Third line.這在屏幕上 生成如下輸 出:First Line. Still first line. Second line. Third line.分支結(jié)構(gòu)(IF,CASE)使用IF的條件分支 IF . ELSEIF . ELSEIF . .ELSE. ENDIF.使用CASE的條件分支基本語法: CASE . WHEN . WHEN . WHEN . WHEN . . WHEN OTHERS. ENDCASE.循環(huán)結(jié)構(gòu)(DO,WHILE)使用DO的無條件循環(huán)

10、DO TIMES VARYING FROM NEXT . ENDDO.TIMES 循環(huán)次數(shù),可以是數(shù)字或變量。如果是0或負數(shù),系統(tǒng)不執(zhí)行該循環(huán)VARYING選項在每次循環(huán)中給變量重新賦值.第一次循環(huán)中,將分配給,第二次循環(huán)中,將分配給,以此類推??梢栽谝粋€DO語句中使用多個VARYING選項。使用 DO 語句時要避免死循環(huán)。 如果不使用 TIMES 選項,則在語句塊中至少應包含一個 EXIT、 STOP 或 REJECT 語句,以便系統(tǒng)能夠退出循環(huán)。使用WHILE的條件循環(huán)語法:WHILE VARY FROM NEXT . ENDWHILE.只要是真,或系統(tǒng)沒有發(fā)現(xiàn)EXIT、STOP或REJE

11、CT語句,系統(tǒng)將繼續(xù)執(zhí)行由WHILE語句引導、ENDWHILE結(jié)束的語句塊, VARY選項與DO循環(huán)的VARYING選項工作方式一樣循環(huán)終止(CONTINUE,CHECK,EXIT)無條件終止循環(huán):CONTINUE有條件終止循環(huán):CHECK 完全終止循環(huán):EXIT事件關健字 這些關健字在ABAP中定義處理塊,處理塊是當特定事件發(fā)生時進行處理的語句組AT SELECTION SCREEN:其實就像一個FORM,所以在這個事件里聲明的變量都是局部變量。用戶在選擇屏幕中執(zhí)行某些功能后被觸發(fā)。多用于權(quán)限判斷,給出警告信息START-OF-SELECTION:報表程序必須執(zhí)行的事件,在進入第二屏幕之前觸

12、發(fā)。選擇開始事件,如果報表中含有選擇屏幕,則在選擇屏幕的處理結(jié)束后觸發(fā),是報表程序的默認事件塊;End-of-selection:第二屏幕顯示完畢,結(jié)束處理。選擇結(jié)束事件,如果程序中使用邏輯數(shù)據(jù)庫,則在所有邏輯數(shù)據(jù)庫處理結(jié)束后觸發(fā),一般在該事件之中輸出列表。.結(jié)構(gòu)類型和結(jié)構(gòu)體結(jié)構(gòu)類型由多個數(shù)據(jù)元素作為組件構(gòu)成參照結(jié)構(gòu)類型生成的數(shù)據(jù)對象稱為結(jié)構(gòu)體定義方式 TYPES|DATA: BEGIN OF structure, k1 TYPE type | LIKE dobj , k2 TYPE type | LIKE dobj , kn TYPE type | LIKE dobj , END OF st

13、ructure.組件通過取組件運算符” - ”進行訪問 structure-k1Demo:TYPES: BEGIN OF address, name TYPE string, street(30) TYPE C, city TYPE String, END OF address.DATA my_ add TYPE address. my_ add-name = li li . my_ add-street = zhangjiang . my_ add-city = shanghai .write: my_ add-name , my_ add-street , my_ add-city.內(nèi) 表

14、內(nèi)表是可變長度的數(shù)據(jù)對象,在運行時內(nèi)表可保存多個相同結(jié)構(gòu)的數(shù)據(jù),行數(shù)是動態(tài)的,系統(tǒng)可實時增加內(nèi)表的大小。內(nèi)存中,數(shù)據(jù)是一行一行的存儲的,每行 都具有相同的結(jié)構(gòu)使用內(nèi)表是一個大量結(jié)構(gòu)化數(shù)據(jù)的簡單辦法,主要應用包括:1.保存數(shù)據(jù)庫的數(shù)據(jù)進行進一步的處理2.為屏幕和打印輸出格式化的數(shù)據(jù)內(nèi)表的屬性對數(shù)據(jù)表的訪問:分為索引訪問,鍵訪問表的類型(三種): 標準表,排序表,哈希表內(nèi)表的定義TYPES|DATA Itab TYPE|LIKE tabkind OF line type|line obj WITH unique | non-unique key INITIAL SIZE n . Tabkind 內(nèi)

15、表種類Linetype 行類型 key 表關鍵字n 初始內(nèi)存大小內(nèi) 表內(nèi)表類型(一)標準表 STANDARD TABLE 具有邏輯索引 尋址操作通過關鍵字或者索引排序表 SORTED TABLE 具有邏輯索引 按表關鍵字升序后存儲尋址操作通過關鍵字或者索引哈希表 HASHED TABLE 沒有邏輯索引 尋址操作只通過關鍵字DATA: BEGIN OF company, name(20) TYPE C, street(20) TYPE C, city(20) TYPE C, END OF company.DATA itab_company LIKE HASHED TABLE OF company

16、 WITH UNIQUE KEY name. 創(chuàng)建一個內(nèi)表內(nèi)表操作可以使用Append、Insert、Read、Modify、Delete 對內(nèi)表的一行或多行執(zhí)行操作。Append:往內(nèi)表的最后追加一條記錄,只用于標準表Insert:向內(nèi)表插入一條記錄,在標準表中跟append一樣,在排序表里就插入到鍵指定的位置,在哈希表則根據(jù)哈希算法插入。Read:把表的指定行拷貝到結(jié)構(gòu)中Modify:使用結(jié)構(gòu)的內(nèi)容重寫表的指定行Delete:刪除表的指定行內(nèi)表操作(一)操作內(nèi)表行插入行 INSERT語句 插入單行 INSERT line INTO itab INDEX idx . 插入多行 INSERT

17、lines OF itab1 FROM n1 TO n2 INTO TABLE itab2 INDEX idx. 內(nèi)表itab1 的從n1到n2的多行數(shù)據(jù)插入到itab2 中。內(nèi)表操作(二)附加行 APPEND語句 附加單行 APPEND line TO itab .附加多行 APPEND LINES OF itab1FROM n1 TO n2 TO itab .內(nèi)表操作讀取行 READ語句 利用索引讀取 READ TABLE itab INTO wa INDEX idx . 利用關鍵字讀取 READ TABLE itab FROM key INTO wa .內(nèi)表操作(三)修改行 MODIFY

18、語句 根據(jù)索引修改 MODIFY itab FROM wa index idx TRANSPORTING f1 f2 .來修改內(nèi)表的第n 行 根據(jù)關鍵字修改 MODIFY TABLE itab FROM wa TRANSPORTING f1 f2 .允許你修改內(nèi)表itab 的一行 修改多行 MODIFY itab FROM wa TRANSPORTING f1 f2 WHERE cond .在Transporting 后指定所有需要修改的字段,要把給這些字段 的值寫在wa 中,使用WHERE 子句指定行的條件。內(nèi)表操作(四)刪除行 DELETE語句 通過索引刪除 DELETE itab IND

19、EX idx .(刪除內(nèi)表中的第n 行) 通過關鍵字刪除 DELETE TABLE itab FROM wa . 把想要刪除的鍵字段值拷貝到工作區(qū)wa 中刪除多行 DELETE itab FROM n1 TO n2 WHERE循環(huán)處理結(jié)果集合使用 LOOP語句Loop語句一條條的讀出數(shù)據(jù)行,寫入INTO指定的結(jié)構(gòu)中,結(jié)構(gòu)內(nèi)容可用于輸出或?qū)懟貎?nèi)表.LOOP AT itab INTO wa FROM n1 TO n2 WHERE. ENDLOOP內(nèi)表操作(五)數(shù)據(jù)庫操作 可以使用OPEN SQL 或NATIVE SQL 語句來從數(shù)據(jù)庫讀取數(shù)據(jù)。Open sql 與Native sql 的區(qū)別:1.

20、open sql 只能使用DML, slelect,insert,update,delete,modifynotive sql 可以使用DML和DDL和DCL2.Open sql 是操作SAP數(shù)據(jù)庫的語言,notive sql 是SAP使用的數(shù)據(jù)庫本身的SQL語言Open SQL操作(一)只包括數(shù)據(jù)操縱(DML) SELECT INSERT UPDATE MODIFY DELETE不包括數(shù)據(jù)定義(DDL)和數(shù)據(jù)控制(DCL)Open SQL操作(二)提取數(shù)據(jù) SELECT 語句選擇單行數(shù)據(jù) SELECT SINGLE INTO FROM 選擇多行數(shù)據(jù):循環(huán)選擇 SELECT DISTINCT ENDSELECT.選擇多行數(shù)據(jù):選擇至內(nèi)表 SELECT INTO TABLE itab.Open SQL操作(三 )插入數(shù)據(jù) INSERT語句插入單行數(shù)據(jù) INSERT INTO dbtab VALUES wa .插入多行數(shù)據(jù) INSERT dbtab FROM TABL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論