ABAP程序詳細介紹解讀課件_第1頁
ABAP程序詳細介紹解讀課件_第2頁
ABAP程序詳細介紹解讀課件_第3頁
ABAP程序詳細介紹解讀課件_第4頁
ABAP程序詳細介紹解讀課件_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

ABAP程序介紹

李國慶ABAP程序介紹1Sap發(fā)展歷史

1972年,五名IBM的員工離開了IBM,在德國曼海母創(chuàng)建了SAP公司.SAP的第一個產(chǎn)品是一個自動化財務(wù)和交易程序.命名RF,就是后來的R/11979年,SAP推出用于大型機的R/2.1992年,SAP推出了著名的R/3.它建立在SAPBASIS平臺的基礎(chǔ)上,包括大家非常熟悉的SD,MM,FI,CO,PP..等模塊.1996年,隨著互聯(lián)網(wǎng)的迅猛發(fā)展,SAP推出了支持Internet的新版R/33.1.1999年,SAP推出所謂的mySAPBusinessSuit.這其實又是新版的R/3,不過包含了CRM(Customer

Relationship

Management)和SCM(SupplyChainManagement)產(chǎn)品.ERP的版本變?yōu)?.6C,到后來的4.7.2004年,推出mySAPERP2004,技術(shù)平臺為SAPWAS6.4.2005年,推出mySAPERP2005,技術(shù)平臺為SAPWAS7.0.Sap發(fā)展歷史

1972年,五名IBM的員工離開了IBM,2

SAPRelease版本之間的差異和關(guān)系

版本4.6C以前是所謂傳統(tǒng)的R3系統(tǒng),建立在SAPBasis平臺的基礎(chǔ)上版本4.70以后,改為R3Enterprise,最大的變化是SAPWAS取代了傳統(tǒng)的Basis平臺,核心業(yè)務(wù)功能模塊也作了劃分;R3Enterprise之后改稱為mySAPERP2004-ECC5.0,推出了NetWeaver2004-集成應(yīng)用平臺.2005第4季度開始mySAPERP2005-ECC6.0的準(zhǔn)備,最大的變化將是全面轉(zhuǎn)向ESA體系(基于消息機制的企業(yè)應(yīng)用體系),并引入了新的功能模塊,比如PLM和SRM.

SAPRelease版本之間的差異和關(guān)系版本4.6C3應(yīng)用結(jié)構(gòu)應(yīng)用結(jié)構(gòu)4SAP的三層架構(gòu)體系SAP的三層架構(gòu)體系5ABAP開發(fā)和運行環(huán)境的圖例.ABAP開發(fā)和運行環(huán)境的圖例.6可用的工具可用的工具7傳輸傳輸8質(zhì)量保證質(zhì)量保證9運行過程運行過程10ABAP AdvancedBusinessApplicationProgramming的縮寫,是SAPR/2,R/3版本時期唯一的系統(tǒng)開發(fā)工具.目前的版本是ABAP/4。ABAP11ABAP介紹ABAP是SAPERP主要的開發(fā)軟件可以滿足企業(yè)的特定的需要,對通過系統(tǒng)配置不能實現(xiàn)的功能進行二次開發(fā)可以進行各種類型的程序、界面、業(yè)務(wù)流程設(shè)計,如企業(yè)報表、企業(yè)單據(jù)、與第三方系統(tǒng)的接口等ABAP介紹12ABAP程序分類可執(zhí)行程序:可分配事務(wù)代碼直接運行:報表、事務(wù)模塊化程序為其它程序提供模塊化支持不能單獨運行包括:功能模塊,include程序ABAP程序分類可執(zhí)行程序:13內(nèi)容報表基本語法內(nèi)表操作ABAP數(shù)據(jù)庫操作屏幕輸出Smartforms內(nèi)容報表14報表程序以report開頭不修改數(shù)據(jù)庫而從數(shù)據(jù)庫表格中讀取并分析數(shù)據(jù)的程序。結(jié)果通常是以列表的形式輸出到屏幕或發(fā)送到打印機上分為普通報表和交互式報表普通報表程序輸出結(jié)果格式固定,不能對其進行交互式操作;交互式報表程通過特定的觸發(fā)事件,比如雙擊,菜單,按鈕和功能鍵.可以對報表結(jié)果進行操作;報表程序15報表程序結(jié)構(gòu)ABAP是事件驅(qū)動的語言,程序的運行由事件引導(dǎo)由過程塊組成程序架構(gòu)事件關(guān)鍵字之間或事件關(guān)鍵字與form關(guān)鍵字之間的語句形成一個過程塊form和endform之間的語句形成一個子程序,子程序在過程塊中被調(diào)用報表程序結(jié)構(gòu)ABAP是事件驅(qū)動的語言,程序的運行由事件引導(dǎo)16報表程序組成全局申明過程塊子程序類型、變量、屏幕一個事件發(fā)生時執(zhí)行的模塊優(yōu)化程序的結(jié)構(gòu)報表程序組成全局申明類型、變量、屏幕一個事件發(fā)生時執(zhí)行的模塊17事件屬于某一特定事件關(guān)鍵字的語句形成一個過程塊原則上每個過程塊塊由各自的關(guān)鍵字為起始;事件塊的結(jié)束標(biāo)志為下一個事件塊的關(guān)鍵字;事件塊由ABAP運行時調(diào)用,其調(diào)用順序固定,與程序編碼順序無關(guān);缺省的事件塊START-OF-SELECTION事件屬于某一特定事件關(guān)鍵字的語句形成一個過程塊18主要事件塊關(guān)鍵字INITIALIZATIONATSELECTION-SCREENSTART-OF-SELECTIONTOP-OFEND-OFATLINE-SELECTION ATPFATUSER-COMMAND在選擇屏幕顯示前,對變量進行初始化賦值對選擇屏幕的數(shù)據(jù)輸入進行檢查選擇屏幕處理完后,數(shù)據(jù)的處理列表顯示啟動新頁,頁頭的輸出一頁結(jié)束時,頁尾的處理用戶雙擊選中某行觸發(fā)該事件當(dāng)用戶功能健時,觸發(fā)該事件設(shè)置自定義的菜單主要事件塊關(guān)鍵字INITIALIZATION在選擇屏幕顯示前19事件塊的簡單處理過程事件塊的簡單處理過程:ABAP程序運行的時候,INITIALIZATION首先被調(diào)用;經(jīng)過初始化的輸入屏幕會顯示在表示服務(wù)器;用戶離開輸入屏幕的時候,START-OF-SELCTION事件會被自動調(diào)用;結(jié)果數(shù)據(jù)會以列表的形式顯示在第二個屏幕上;事件塊的簡單處理過程事件塊的簡單處理過程:20事件塊的語法源代碼中的事件塊順序不影響事件的執(zhí)行順序事件塊的語法源代碼中的事件塊順序不影響事件的執(zhí)行順序21INITIALIZATION通常在此事件塊中設(shè)定輸入屏幕字段的初始值

例如:INITIALIZATION.P_DATE=‘20030201’.效果:輸入屏幕的日期字段初始顯示值為2003年2月1日事件塊編碼規(guī)則(1)INITIALIZATION例如:INITIALIZAT22ATSELECTION-SCREEN通常在此事件塊中進行用戶輸入數(shù)據(jù)的合法性檢查,發(fā)現(xiàn)錯誤則以消息的形式給出警示,直到用戶輸入正確的數(shù)值

例如:ATSELECTION-SCREEN.IFP_DATE=SPACE.MESSAGEE001.ENDIF.效果:如果字段P_DATE為空,則程序會用消息001“日期字段不能為空!”來提示用戶必須輸入一個日期。而且輸入屏幕會等待用戶輸入,知道該字段數(shù)值合法事件塊編碼規(guī)則(2)ATSELECTION-SCREEN例如:ATSELE23START-OF-SELCTION通常在此事件中針對業(yè)務(wù)需求進行系統(tǒng)數(shù)據(jù)的查詢例如:start-of-selection.performget_data_for_oil.效果:在輸入屏幕用戶按下執(zhí)行按鈕后,子程序get_data_for_oil被執(zhí)行,在其中獲得業(yè)務(wù)相關(guān)的數(shù)據(jù)存放到內(nèi)表或者其它變量,這些數(shù)據(jù)在END-OF-SELECTION事件塊中被輸出事件塊編碼規(guī)則(3)START-OF-SELCTION例如:事件塊編碼規(guī)則(3)24END-OF-SELCTION通常在此事件中進行結(jié)果清單的輸出例如:end-of-selection.write:23(1)sy-vline,24(20)tab-gas_planright-justified,效果:數(shù)據(jù)以清單的形式輸出事件塊編碼規(guī)則(4)END-OF-SELCTION例如:事件塊編碼規(guī)則(4)25事件塊編碼規(guī)則(5)ATLINE-SELECTION用于用戶交互,當(dāng)用戶雙擊頁面時,啟動該事件.例如:atline-selection.GETCURSORFIELDl_fieldLINEl_line.效果:獲取用戶點擊的行號和變量名事件塊編碼規(guī)則(5)ATLINE-SELECTION例如:26事件塊編碼規(guī)則(5)

SET

PF-STATUS<STATUS>設(shè)置用戶自定義菜單AT-USER-COMMAND設(shè)置功能碼的響應(yīng)操作事件塊編碼規(guī)則(5)

SET

PF-STATUS<STAT27ABAP程序詳細介紹解讀課件28選擇屏幕選擇屏幕29ABAP程序詳細介紹解讀課件30內(nèi)容報表基本語法內(nèi)表操作ABAP數(shù)據(jù)庫操作屏幕輸出Smartforms內(nèi)容報表31本小節(jié)包含內(nèi)容數(shù)據(jù)類型定義選擇屏幕基本數(shù)據(jù)操作WRITE語句控制語句本小節(jié)包含內(nèi)容數(shù)據(jù)類型32數(shù)據(jù)類型定義一個簡單的數(shù)據(jù)類型定義一個結(jié)構(gòu)化的數(shù)據(jù)類型定義一個內(nèi)表形式的數(shù)據(jù)類型數(shù)據(jù)類型定義一個簡單的數(shù)據(jù)類型33ABAP數(shù)據(jù)類型ABAP數(shù)據(jù)類型341,TYPES<t>[TYPE<type>|LIKE<obj>].2,TYPES<t>[(<length>)][TYPE<type>|

LIKE<obj>][DECIMALS<dec>].3,TYPES<t>.4,TYPES:BEGIN

OF<structure>,

<ti>...,

END

OF<structure>.5,TYPES<t>TYPE|LIKE<tabkind>OF<linetype>[WITH<key>].TYPES語句格式1,TYPES<t>[TYPE<type>|LIKE35通過系統(tǒng)標(biāo)準(zhǔn)類型定義通過數(shù)據(jù)庫表字段定義自定義結(jié)構(gòu)類型

TYPES語句實例TYPES:numberTYPEi,

lengthTYPEpDECIMALS2,code(3)TYPEc.TYPES:company

LIKEspfli-carrid.TYPES:BEGINOFaddress,

name

TYPEsurname,

street(30)TYPEc,

city

TYPEspfli_type-cityfrom,

ENDOFaddress.通過系統(tǒng)標(biāo)準(zhǔn)類型定義TYPES語句實例TYPES:numb36定義一個簡單類型的變量定義一個結(jié)構(gòu)化的數(shù)據(jù)對象定義一個內(nèi)表DATA語句—定義數(shù)據(jù)對象定義一個簡單類型的變量DATA語句—定義數(shù)據(jù)對象371,DATA<f>...[TYPE<type>|LIKE<obj>]...

[VALUE<val>].2,DATA<f>[(<length>)]TYPE<type>[DECIMALS<d>].3,DATA<f>.4,DATA:BEGINOF<structure>,

<fi>...,

ENDOF<structure>.DATA語句格式1,DATA<f>...[TYPE<type>|LI38DATA語句定義內(nèi)表DATA語句定義內(nèi)表39TYPES:BEGINOFstruct,

number_1TYPEi,

number_2TYPEpDECIMALS2,

ENDOFstruct.DATA:

wa_structTYPEstruct,

number

LIKEwa_struct-number_2,

date

LIKEsy-datum,

time

TYPEt.DATA:BEGINOFw_data,

number_3TYPEi,

number_4TYPEpDECIMALS2,

ENDOFw_data.DATA語句實例通過結(jié)構(gòu)類型定義結(jié)構(gòu)數(shù)據(jù)直接定義結(jié)構(gòu)數(shù)據(jù)TYPES:BEGINOFstruct,

40詳細見SYST表SY-SUBRC:ReturncodeforABAPstatements

(zeroifastatementisexecutedsuccessfully)SY-UNAME:logonnameoftheuserSY-REPID:CurrentABAPprogramSY-TCODE:currenttransactionSY-INDEX:NumberofthecurrentlooppassSY-DATUM系統(tǒng)日期SY-UZEIT系統(tǒng)時間預(yù)定義的數(shù)據(jù)對象詳細見SYST表預(yù)定義的數(shù)據(jù)對象41CONSTANTS:cns_piTYPEPDECIMALS10VALUE'3.1415926536‘,cns_flag(1)typecvalue‘X’.CONSTANTS:BEGINOFmyaddress,

name(20)

TYPEcVALUE'FredFlintstone',

street(20)

TYPEc

VALUE'CaveAvenue',

umber

TYPEp

VALUE

11,

postcode(5)TYPEn

VALUE

98765,

city(20)

TYPEc

VALUE

'Bedrock',

ENDOFmyaddress.常量定義CONSTANTS:cns_piTYPEPDECIM42選擇屏幕什么是選擇屏幕選擇屏幕是報表程序的一部分,通過設(shè)計選擇屏幕以便交互輸入字段值和選擇標(biāo)準(zhǔn)。在報表程序啟動之后,用戶在該屏幕中輸入值。選擇屏幕的實現(xiàn)方法通過簡單的語句創(chuàng)建字段、復(fù)選框、單選按鈕,并設(shè)計屏幕布局通過PARAMETERS語句,使用戶能夠給變量分配值通過SELECT-OPTIONS語句,使用戶能夠確定變量的區(qū)域選擇屏幕什么是選擇屏幕43PARAMETERS語句SELECT-OPTIONS語句選擇屏幕PARAMETERS語句選擇屏幕44SELECTION-SCREENBEGINOFBLOCK<block>

[WITHFRAME[TITLE<title>]]

PARAMETERS:…..SELECT-OPTIONS:…

SELECTION-SCREENENDOFBLOCK<block>.EXAMPLE:SELECTION-SCREENBEGINOFBLOCKRAD1

WITHFRAMETITLETEXT-002.

PARAMETERS:R1RADIOBUTTONGROUPGR1,

R2RADIOBUTTONGROUPGR1,

R3RADIOBUTTONGROUPGR1.

SELECTION-SCREENENDOFBLOCKRAD1.SELECTION-SCREEN語法SELECTION-SCREENBEGINOFBLOC45PARAMETERS<p>[(<length>)][TYPE<type>|LIKE<obj>][DECIMALS<d>][DEFAULT<f>][OBLIGATORY].PARAMETERS<p>ASCHECKBOXPARAMETERS<p>RADIOBUTTONGROUP<radi>

PARAMETERS語法EXAMPLE:PARAMETERSp_datumLIKEsy-datum.PARAMETERSp_checkboxTYPEcASCHECKBOX.PARAMETERSp_radioTYPECRADIOBUTTONGROUPradio1.PARAMETERS<p>[(<length>)][T46SELECT-OPTIONS語法SELECT-OPTIONS

<seltab>

FOR

<f>[DEFAULT

<g>

TO

<h>].SELECT-OPTIONSs_datumFORsy-datumDEFAULT‘20070101’TO‘20080101’.SELECT-OPTIONS語法SELECT-OPTIONS47PARAMETERS語法PARAMETERS語法48Write語句按照指定的格式把變量里邊的數(shù)據(jù)輸出到屏幕根據(jù)選項的不同,WRITE語句可以輸出到屏幕、輸出到變量、以復(fù)選框的形式輸出、以圖標(biāo)的格式輸出語法WritefWriteAT[/][<pos>][(<len>)]f.

SKIP[<n>].產(chǎn)生n個空白行SKIPTOLINE[<n>].跳到指定行

Writef<顯示格式參數(shù)>.ULINE{[AT][/][pos][(len)]}[NO-GAP]Write語句按照指定的格式把變量里邊的數(shù)據(jù)輸出到屏幕49LEFT-JUSTIFIED資料靠左顯示CENTERED資料靠中間顯示RIGHT-JUSTIFIED資料靠右顯示

UNDER<g>在資料項<g>的X軸開始坐標(biāo)顯示NO-GAP緊接著顯示,不留空格USINGEDITMASK<m>使用內(nèi)嵌字符顯示,如11:20:30USINGNOEDITMASK不使用內(nèi)嵌字符NO-ZERO數(shù)字前面0的部分不顯示NO-SIGN不顯示正負號DECIMALS<d>顯示d位小數(shù)字數(shù)EXPONENT<e>F(浮點數(shù))exponent的值ROUND<r>四舍五入至小數(shù)位數(shù)下r位CURRENCY<c>幣別顯示DD/MM/YY日期顯示格式顯示格式參數(shù)LEFT-JUSTIFIED資料靠左顯50

DATA:

X

TYPE

I

VALUE

'112030'.WRITE

X

USING

EDIT

MASK

'__:__:__'.WRITE

X

USING

EDIT

MASK

'$___,___'.

WRITE語句的例子一

WRITE

'First

Line'.

WRITE

/6

'Second

Line'.

DATA:

NUMBER

TYPE

I

VALUE

'1234',

TEXT(10)

VALUE

'ABCDEFGHIJ'.WRITE:

(5)

NUMBER,

/(6)

TEXT.DATA:

X

TYPE

I

VALUE

'11251WRITE語句的例子二ULINE

AT

10(10).

WRITE:

/10

sy-vline,

11(8)

'Text'

CENTERED,

19

sy-vline.

ULINE

AT

/10(10).WRITE語句的例子二ULINE

AT

10(10).

WR52基本數(shù)據(jù)操作數(shù)據(jù)賦值--使用MOVEMOVE<F1>TO<F2>MOVE<F1>[+<O1>]TO<F2>[+<O2>].MOVE-CORRESPODING<STRUCT1>TO<STRUCT2>.數(shù)據(jù)賦值—使用WRITE,將f1的值格式化至C型變量WRITE<F1>TO<F2>.WRITE(<F1>)TO<F2>.基本數(shù)據(jù)操作數(shù)據(jù)賦值--使用MOVE53基本數(shù)據(jù)操作DATA:

F1(10)

VALUE

'ABCDEFGHIJ',

F2(10)

,

F3(10).MOVE

F1

TO

F2.MOVE

F1+3(5)

TO

F3.WRITE:

/

F2

,

F3.DATA:BEGINOFADDRESS,FIRSTNAME(10)VALUE‘LULU’, LASTNAME(10)VALUE‘CHOU’,TEL(12)VALUE‘4660570’,ENDOFADDRESS.DATA:BEGINOFNAME,FIRSTNAME(10), LASTNAME(10),E_MAIL(30),ENDOFNAME.MOVE-CORRESPONDINGADDRESSTONAME.基本數(shù)據(jù)操作DATA:

F1(10)

VALUE

'ABCD54基本數(shù)據(jù)操作DATA:

int

TYPE

IVALUE

100,

ch(10)

TYPE

C.WRITE

int

TO

ch.DATA:

F1(10)

VALUE

'ABCDEFGHIJ',

F2(10)

,

F3(10).MOVE

F1

TO

F2.MOVE

F1+3(5)

TO

F3.WRITE:

/

F2

,

/

F3.基本數(shù)據(jù)操作DATA:

int

TYPE

IVALUE

55清除變量內(nèi)容CLEAR<f>清除變量現(xiàn)在內(nèi)容,恢復(fù)成初值Example:DATANTYPEIVALUE‘100’.WRITEN.“100CLEARN.WRITE/N.“0

基本數(shù)據(jù)操作清除變量內(nèi)容基本數(shù)據(jù)操作56算術(shù)操作**冪*乘/除+加-減DIV整數(shù)除法MOD余數(shù)除法基本數(shù)據(jù)操作算術(shù)操作基本數(shù)據(jù)操作57數(shù)值函數(shù)

ABS(N):傳回數(shù)值N的絕對值

SIGN(N):1ifN>0

0ifN=0-1ifN<0CEIL(N):傳回大于數(shù)值N的最小整數(shù)

FLOOR(N):傳回小于數(shù)值N的最大整數(shù)

TRUNC(N):傳回數(shù)值N的整數(shù)部分

FRAC(N):傳回數(shù)值N的小數(shù)部分

COS(A),SIN(A),TAN(A):傳回三角函數(shù)cosA,sinA,tanA的值,A為弳度量EXP(N):傳回e^N值

LOG(N):傳回

logeN值

LOG10(N):傳回

logN值SQRT(N):傳回

N的平方根值

基本數(shù)據(jù)操作數(shù)值函數(shù)基本數(shù)據(jù)操作58日期與時間運算

1.日期數(shù)據(jù)的運算.日期數(shù)據(jù)可以直接運算,如加法與減法

DATA:MdataTYPED.Mdate=SY-DATUM.“如傳回19971015

Mdate+6(2)=‘01’“Mdate變成19971001

Mdate=Mdate-1“Mdate變成19970931

2.時間數(shù)據(jù)的運算 時間格式為‘hhmmss’,如‘212030’表’21:20:30’ DATA:HOURSTYPEI, MINUTESTYPEI,

T2TYPETVALUE‘200000’,T1TYPETVALUE‘183000’.HOURS=(T2-T1)/3600.“計算有幾小時MINUTES=(T2–T1)/60.“計算幾分鐘

基本數(shù)據(jù)操作日期與時間運算 基本數(shù)據(jù)操作59字符串?dāng)?shù)據(jù)處理

1.字符串移位語法:SHIFT<c>[BY<n>PLACES][<modes>]<modes>:(1).空白,字符串往左移一位

(2).LEFT,字符串往左移n位(3).RIGHT,字符串往右移n位(4).CIRCULAR:字符串以環(huán)狀方式移位舉例:DATASTRING(10)VALUE‘ABCDEFGHIJ’SHIFTSTRING.“得到‘BCDEFGHI’SHIFTSTRINGBY2PLACESRIGHT.“得到‘BDCDEFGHI’基本數(shù)據(jù)操作字符串?dāng)?shù)據(jù)處理基本數(shù)據(jù)操作60基本數(shù)據(jù)操作字符串移位2.取代字符串內(nèi)容語法:REPLACE<string1>WITH<string2>INTO<c>舉例:DATA:STRING(10)VALUE‘ABCDEFGHI’,STR1(3)VALUE‘DEF’,STR2(3)VALUE‘123’.REPLACESTR1WITHSTR2INTOSTRING.WRITE/STRING.“得到ABC123GHI基本數(shù)據(jù)操作字符串移位61字符串?dāng)?shù)據(jù)處理3.大小寫的轉(zhuǎn)換語法:TRANSLATE<c>TOUPPERCASE.“轉(zhuǎn)成大寫TRANSLATE<c>TOLOWERCASE.“轉(zhuǎn)成小寫4.字符串長度語法STRLEN(<c>)Example:

INT=STRLEN(‘XYZABC’).“得到65.拆分字符串

語法

SPLITdobjATsepINTO{{result1result2...}|{TABLEresult_tab}}

基本數(shù)據(jù)操作字符串?dāng)?shù)據(jù)處理基本數(shù)據(jù)操作62比較符號

=或EQ:等于

<>或><或NE:不等于<或LT:小于<=或LE:小于等于>或GT:大于

>=或GE:大于等于AND:與OR:或

NOT:非控制語句(1)比較符號控制語句(1)63IF語句

IF<Condition1><Statement1>ELSEIF<Condition2><Statement2>ELSEIF<Condition3>

<Stetement……ENDIF.控制語句(2)條件語句CASE語句CASE<f>

WHEN<f11>OR<f12>OR..]<Statementblock>WHEN<f21>OR<f22>OR..]<Statementblock>…..ENDCASE.IF語句控制語句(2)條件語句CASE語句64循環(huán)語句

1.計次循環(huán)DO[nTIMES][VARYING<f>FROM<start>TO<end>.<StatementBlock>.ENDDO.

DO2TIMES.WRITE/‘X’.ENDDO.2.條件循環(huán)WHILE<Condition>.<StatementBlock>ENDWHILE.

I=1.S=0. WHILEI<=10.S=S+I.I=I+1.ENDWHILE.控制語句(3)循環(huán)語句控制語句(3)65控制循環(huán)語句

CONTINUE跳到下一次循環(huán)DO3TIMES.IFSY-INDEX=2.CONTINUEWRITESY-INDEX.

ENDDOCHECK<Condition>條件不滿足則跳到下一次循環(huán)DO5TIMES.CHECKSY-INDEXBETWEEN2AND4.WRITESY-INDEX.ENDDO

EXIT.結(jié)束循環(huán)

DO10TIMES.IFSY-INDEX=4.EXIT.ENDIFWRITESY-INDEX.ENDDO.

控制語句(4)控制循環(huán)語句控制語句(4)66內(nèi)容報表基本語法內(nèi)表操作ABAP數(shù)據(jù)庫操作屏幕輸出Smartforms內(nèi)容報表67什么是內(nèi)表在程序運行事件存在的表格,行數(shù)動態(tài)可以使用內(nèi)表在數(shù)據(jù)庫表格的子集上執(zhí)行表格計算根據(jù)程序需要重新組織數(shù)據(jù)庫表格的內(nèi)容什么是內(nèi)表在程序運行事件存在的表格,行數(shù)動態(tài)68定義內(nèi)表定義內(nèi)表類型

TYPES<t>TYPE|LIKE<tabkind>OF<linetype>[WITH<key>][INITIALSIZE<n>].定義內(nèi)表對象參考已經(jīng)聲明的內(nèi)表類型、DATA<itab>TYPE<type>|LIKE<obj>

[WITHHEADERLINE].聲明一個新的內(nèi)表

DATA<itab>TYPE|LIKE<tabkind>OF<linetype>WITH<key>[INITIALSIZE<n>][WITHHEADERLINE].定義內(nèi)表定義內(nèi)表類型69操作內(nèi)表操作內(nèi)表70內(nèi)表操作INSERTLINESOFitab1[FROMn1][TOn2]INTO[TABLE]itab2[INDEXidx]APPENDLINESOFitab1[FROMn1][TOn2]TOitab2READTABLEitabINTOwaINDEXidx.READTABLEitabWITHKEYk1=f1…ki=fi[INTOwa]MODIFYitab[FROMwa][INDEXidx][TRANSPORTINGf1f2..]MODIFYitabFROMWATRANSPORTINGf1f2…WHEREcond.DELETEitabINDEXidxDELETETABLEitabWITHTABLEKEYk1=f1…ki=fiDELETEitab[FROMn1][TOn2][WHEREcond]LOOPATitabINTOwa[FROMn1][TOn2][WHEREcond]ENDLOOP.內(nèi)表操作INSERTLINESOFitab1[FRO71內(nèi)表操作對整個內(nèi)表進行操作MOVE<itab1>[[]]TO<itab2>[[]].DATA:BEGINOFLINE,

COL1,

COL2,

ENDOFLINE.DATA:ETABLIKETABLEOFLINEWITHHEADERLINE,

FTABLIKETABLEOFLINE.LINE-COL1='A'.LINE-COL2='B'.APPENDLINETOETAB.MOVEETAB[]TOFTAB.LOOPATFTABINTOLINE.

WRITE:/LINE-COL1,LINE-COL2.ENDLOOP.

Theoutputis:AB內(nèi)表操作對整個內(nèi)表進行操作72操作內(nèi)表對內(nèi)表進行初始化CLEAR<itab>.CLEAR<itab>[].REFRESH<itab>.FREE<itab>.比較內(nèi)表

<itab1><operator><itab2>...<operator>:EQ,=,NE,<>,><,GE,>=,LE,<=,GT,>,LT,<

排序內(nèi)表

SORT<itab>[ASCENDING|DESCENDING][ASTEXT][STABLE].操作內(nèi)表對內(nèi)表進行初始化73內(nèi)容報表基本語法內(nèi)表操作數(shù)據(jù)庫操作屏幕輸出Smartforms內(nèi)容報表74OPENSQL目的:避免不同的數(shù)據(jù)庫表直接的不兼容性,使ABAP/4程序能在應(yīng)用中獨立于數(shù)據(jù)庫系統(tǒng)。OPENSQL目的:避免不同的數(shù)據(jù)庫表直接的不兼容性,使75SELECT語句SELECT

<result>

INTO

<target>

FROM

<source>

[WHERE

<condition>]

[GROUPBY<fields>]

[HAVING

<cond>]

[ORDERBY<fields>].數(shù)據(jù)庫操作數(shù)據(jù)庫操作76WHERE語句BETWEEN<g1>AND<g2>LIKE<g> _表示一個字符 %表示一個字符串IN(<g1>….<g2>)數(shù)據(jù)庫操作(4)--OPENSQLWHERE語句數(shù)據(jù)庫操作(4)--OPENSQL77多表結(jié)合查詢

LEFTOUTERJOIN

SELECT..FROMtableLEFT[OUTER]JOINdbtab[ASaliasA]ON<cond>INNORJOINSELECT…FROMtable[INNER]JOINjointable1[ASaliasA]ON<cond>SELECTp~carridp~connidf~fldateINTOCORRESPONDINGFIELDSOFTABLEitabFROM(spfliASpINNERJOINsflightASfONp~carrid=f~carridANDp~connid=f~connid)WHEREp~cityfrom='FRANKFURT'ANDp~cityto='NEWYORK'.數(shù)據(jù)庫操作(6)--

溫馨提示

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

評論

0/150

提交評論