版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、ABAP語法完整版SAPABAP/4基礎(chǔ)知識(shí)學(xué)習(xí)數(shù)據(jù)類型C:字符串D:日期型格式為YYYYMMDD例:1999/12/03'F:浮點(diǎn)數(shù)長(zhǎng)度為8I:整數(shù)N:數(shù)值組成的字符串如:011,'302'P:PACKED數(shù)用于小數(shù)點(diǎn)數(shù)值女口:12.00542T:時(shí)間格式為:HHMMSS女口:'14:03:00'X:16進(jìn)制數(shù)如:'1A03'*變量聲明DATA<F><Length><type><value>decimals<F>變量名稱<length><type>變量類
2、型及長(zhǎng)度<value>初值<decimals>小數(shù)位數(shù)exp:DATA:COUNTERTYPEPDECIMALS3.NAME(10)TYPECVALUE'DELTA'.S_DATETYPEDVALUE'19991203'.exp:DATA:BEGINOFPERSON,NAME(10)TYPEC,AGETYPEI,WEIGHTTYPEDECIMALS2,ENDOFPERSON.另外,有關(guān)DATA聲明的指令還有:CONSTANTS(聲明常數(shù))、STATICS(臨時(shí)變量聲明).exp:CONSTANTSPITYPEPDECIMALS5VALUE
3、314159'.STATICS關(guān)鍵字聲明的變量?jī)H在目前的程序中使用,結(jié)束后會(huì)自動(dòng)釋放語法:STATICS<c><length><type><value><decimals>系統(tǒng)專用變量說明系統(tǒng)內(nèi)部專門創(chuàng)建了SYST這個(gè)STRUCTURE,里面的欄位存放系統(tǒng)變量,常用的系統(tǒng)變量有SY-SUBRC:系統(tǒng)執(zhí)行某指令后,表示執(zhí)行成功與否的變量,'0'表示成功SY-UNAME:當(dāng)前使用者登入SAP的USERNAME;SY-DATUM:當(dāng)前系統(tǒng)日期;SY-UZEIT:當(dāng)前系統(tǒng)時(shí)間;SY-TCODE:當(dāng)前執(zhí)行程序的Trans
4、actioncodeSY-INDEX:當(dāng)前LOOP循環(huán)過的次數(shù)SY-TABIX:當(dāng)前處理的是internaltable的第幾筆SY-TMAXL:Internaltable的總筆數(shù)SY-SROWS:屏幕總行數(shù);SY-SCOLS:屏幕總列數(shù);SY-MANDT:CLIENTNUMBERSY-VLINE:畫豎線SY-ULINE:畫橫線TYPE關(guān)鍵字用來指定資料型態(tài)或聲明自定資料型態(tài)Example:TYPES:BEGINOFMYLIST,NAME(10)TYPEC,NUMBERTYPEI,ENDOFMYLIST.DATALISTTYPEMYLIST.LIKE關(guān)鍵字跟TYPE關(guān)鍵字使用格式相同,女口DAT
5、ATRANSCODELIKESY-TCODE.不同的是LIKE用在已有值的資料項(xiàng),如系統(tǒng)變量,而TYPE關(guān)鍵字則是用在指定資料型態(tài)。TABLES關(guān)鍵字用來聲明TableWorkArea的數(shù)據(jù),對(duì)應(yīng)至ABAP/4資料文件(DictionaryObject),由SQL指令加載所需數(shù)據(jù)語法:TABLES<dbtab>Example:TABLES:SPFL.SELECT*輸出一. WRITE語句ABAP/4用來在屏幕上輸出資料的指令是WRITE指令,例如:WRITE:'USERNAMEIS:',SY-UNAME.二. 指定屏幕輸出位置指定輸出位置的語句格式為:WRITE:A
6、T/<pos>(<len>)資料項(xiàng)<par>FROMSPFL.WRITE:SPFL-MANDT,SPFL-CARRID,SPFL-CONNECTION.ENDSELECT.從ABAP/4Dictionary的SPFL檔載入MANDT,CARRID,CONNECTION三個(gè)字段至SPFL此TableWorkArea其中:/:在下一行輸出<pos>:指疋輸出的行號(hào)(<len>):指定輸出位數(shù)(長(zhǎng)度)<par>:指定顯示格式參數(shù),參數(shù)有:LEFT-JUSTIFIED資料*左對(duì)齊CENTERED資料*中間對(duì)齊RIGHT-JUSTI
7、FIED資料*右對(duì)齊UNDER<g>正對(duì)在資料項(xiàng)g的下面顯示NO-GAP緊接著顯示,不留空格USINGEDITMASKm:使用內(nèi)嵌子元顯示,女口12:03:20USINGNOEDITMASK:不使用內(nèi)嵌子元NO-ZER數(shù)子前面0的部分不顯示NO-SIGN:不顯示正負(fù)號(hào)DECIMALS<d>:顯示d位小數(shù)EXPOENT<e>:F(浮點(diǎn)數(shù))指數(shù)的值ROUND<r>:四舍五入至小數(shù)點(diǎn)后r位CURRENCY<c>:幣別顯示DD/MM/YY:日期顯示格式MM/DD/YY:YY/MM/DD:YY/DD/MMMM/DD/YYYY:DD/MM/YYY
8、YYYYY/MM/DD:YYYY/DD/MM:例如1:WRITE:/10(6)'ABCDEFGHIJK'.輸出結(jié)果為:ABCDEF例如2:DATA:XTYPEIVALUE'11:20:30',A(5)TYPECVALUE'ABCDE'.WRITE:/XUSINGEDITMASK'_:_:_'WRITE:/XUSINGEDITMASK'$_,_'.WRITE:/YNO-GAP.輸出結(jié)果為:11:20:30$112,030ABCDEF例如3:DATA:LENTYPEIVALUE10,POSTYPEIVALUE11,TE
9、XT(10)VALUE'1234567890'WRITE'Thetextappearsinthetext.'.WRITEATPOS(LEN)TEXT.WRITETO語句的基本形式語句:語句:要將值(文字)或源字段內(nèi)容寫入目標(biāo)字段,可以使用WRITETO語法WRITE<F1>TO<F2><option>.DATA:NUMBERTYPEFVALUE'4.3',TEXT(10),FLOATTYPEF,PACKTYPEPDECIMALS1.WRITENUMBER.WRITENUMBERTOTEXTEXPONENT2.W
10、RITE/TEXT.WRITENUMBERTOFLOAT.WRITE/FLOAT.WRITENUMBERTOPACK.WRITE/PACK.MOVENUMBERTOPACK.WRITE/PACK.exp:DATA:NAME(10)VALUE'SOURCE',SOURCE(IO)VALUE'Antony',TARGET(10).WRITE(NAME)TOTARGET.WRITE:TARGET.exp:DATA:COUNTERTYPEI.COMPUTECOUNTER=COUNTER+1.COUNTER=COUNTER+1.ADD1TOCOUNTER.在此,三條運(yùn)算語
11、句進(jìn)行相同算術(shù)運(yùn)算輸出屏幕上的線和空行用下列語法,可以在輸出屏幕上生成水平線:語法ULINEAT/<pos>(<len>).它等同于WRITEAT/<pos>(<len>)SY-ULINE.AT后的格式規(guī)范,與在在屏幕上定位WRITE輸出(頁28)中為WRITE語句說明的格式規(guī)范完全一樣。如果沒有格式規(guī)范,系統(tǒng)則開始新的一行,并用水平線填充該行。否則,只按指定輸出水平線。生成水平線的另一種方法,是在WRITE語句中鍵入恰當(dāng)數(shù)量的連字符,如下所示:WRITEAT/<pos>(<len>)'-.'.垂直線用下列
12、語法,可以在輸出屏幕上生成垂直線:語法WRITEAT/<pos>SY-VLINE.或WRITEAT/<pos>'|'.空行用下列語法,可以在輸出屏幕上生成空行:語法SKIP<n>.該語句從當(dāng)前行開始,在輸出屏幕上生成<n>個(gè)空行。如果沒有指定<n>的值,就輸出一個(gè)空行。要將輸出定位在屏幕的指定行上,請(qǐng)使用:語法SKIPTOLINE<n>.該語句允許將輸出位置向上或向下移動(dòng)。四.顯示圖示:語法:WRITE:vsymbol-nameASSYMBOL.WRITE:<icon-name>ASICON.例
13、女口:INCLUDE<SYMBOL>.INCLUDE<ICON>.WRITE:/'Phonesymbol:',SYM_PHONEASSYMBOL.WRITE:/'AlarmIcon:',ICON_VOICE_OUTPUTASICON.要查看系統(tǒng)所提供有那些符號(hào)及圖示,可選擇'EDIT'下的'InsertStatement',選擇'Write',接下來選擇要查看的群組,如SYMBOL或ICON,接下來按'Display'即可.*一.InternalTable的聲明ABAP/4中
14、的InternalTable是一種DataStructure,類似于其他語言中的STRUTURE,它可以由幾個(gè)不同類型的欄位(field)組成,用來表示具有不同屬性的某一事物,單獨(dú)一筆資料表示某個(gè)事物,多筆資料表示具有相同屬性的多個(gè)事物.Internaltable的定義有以下幾種格式:格式一.DATA:BEGINOF<internaltable>OCCURS<n>.vfield1>TYPE<type1>,vfield2>TYPE<type2>,<field3>TYPE<type3>,ENDOF<inter
15、naltable>.語法:DATA<f><type>OCCURS<n>WITHHEADERLINEExample:LINE.DATAVECTORTYPEIOCCURS10WITHHEADER格式二.TYPES:BEGINOF<workarea,<field1>TYPE<type1>,<field2>TYPE<type2>,<field3>TYPE<type3>,ENDOF<workarea>.TYPES<internaltable>TYPE<wo
16、rkarea>OCCURS<n>.格式三.DATA:BEGINOF<workarea>.INCLUDESTRUCTURE<tablename>.DATA:ENDOF<workarea>.DATA:<internaltable>LIKE<workarea>OCCURS<n>.exp:TYPESVECTORTYPEIOCCURS10.TYPES:BEGINOFLINE,COLUMN1TYPEI,COLUMN2TYPEI,C0LUMN3TYPEI,ENDOFLINE.TYPESITABTYPELINEOCCUR
17、S10.TYPES:BEGINOFDEEPLINE,TABLE1TYPEVECTOR,TABLE2TYPEITAB,ENDOFDEEPLINE.TYPESDEEPTABLETYPEDEEPLINEOCCURS10.本示例創(chuàng)建與上例相同的內(nèi)表數(shù)據(jù)類型(VECTOR和ITAB)。然后創(chuàng)建數(shù)據(jù)類型DEEPLINE作為字段串,包含這些內(nèi)表作為組件。通過該字段串,數(shù)據(jù)類型DEEPTABLE被創(chuàng)建為內(nèi)表。因此該內(nèi)表的元素本身就是內(nèi)表。exp:TYPES:BEGINOFLINE,COLUMN1TYPEI,COLUMN2TYPEI,COLUMN3TYPEI,ENDOFLINE.TYPESITABTYPELIN
18、EOCCURS10.DATATAB1TYPEITAB.DATATAB2LIKETAB1WITHHEADERLINE.同創(chuàng)建內(nèi)表數(shù)據(jù)類型(頁99)中所示,該示例創(chuàng)建數(shù)據(jù)類型ITAB作為內(nèi)表。通過使用DATA語句的TYPE參數(shù)引用ITAB,使數(shù)據(jù)對(duì)象TAB1與ITAB結(jié)構(gòu)相同。通過使用DATA語句的LIKE參數(shù)引用TAB1,使數(shù)據(jù)對(duì)象TAB2結(jié)構(gòu)相同。創(chuàng)建的TAB2帶表頭行。因此,可以在程序中使用TAB2-COLUMN1、TAB2-COLUMN2和TAB2-COLUMN3等定位表格工作區(qū)域TAB2。exp:DATAFLIGHT_TABLIKESFLIGHTOCCURS10.本示例創(chuàng)建數(shù)據(jù)對(duì)象FLI
19、GHT_TAB,其結(jié)構(gòu)與數(shù)據(jù)庫(kù)表格SFLIGHT相同。本示例介紹如何采用兩種不同的步驟創(chuàng)建同一內(nèi)表。TYPESVECTOR_TYPETYPEIOCCURS10.DATAVECTORTYPEVECTOR_TYPEWITHHEADERLINE.在此創(chuàng)建一個(gè)內(nèi)表數(shù)據(jù)類型VECTOR_TYPE,其行包含首先創(chuàng)建的基本類型I字段。然后,通過引用VECTOR。VECTOR。VECTOR_TYPE創(chuàng)建數(shù)據(jù)對(duì)象VECTOR。通過使用WITHHEADERLINE選項(xiàng)還創(chuàng)建表格工作區(qū)域在這種情況下,表格工作區(qū)域包含一種類型I字段,可以通過名稱VECTOR定位。DATAVECTORTYPEIOCCURS10WITH
20、HEADERLINE.在這種情況下,通過直接在DATA語句中使用OCCURS選項(xiàng)創(chuàng)建完全一樣的數(shù)據(jù)類型VECTOR。*TYPEStype.1. TYPEStype(len).2. TYPES:BEGINOFstructype.ENDOFstructype.3. TYPESitabtypeTYPEtabkindOFlinetypeLIKEtabkindOFlineobjWITHUNIQUE|NON-UNIQUEkeydefINITIALSIZEn.4. TYPESitabtypeTYPERANGEOFtype.TYPESitabtypeLIKERANGEOFf.5. TYPESitabtypeT
21、YPElinetype|LIKElineobjOCCURSn.*APPENDLINE格式:APPEND<workarea>TO<internaltable>舉例一:(使用WORKAREA)DATA:BEGINOFLINE,COL1TYPEI,COL2TYPEI,ENDOFLINE.DATAITABLIKELINEOCCURS10.DO2TIMES.LINE-COL1=SY-INDEX.LINE-COL2=SY-INDEX*2.APPENDLINETOITAB.ENDDO.LOOPATITABINTOLINE.WRITE:/LINE-COL1,LINE-COL2.ENDL
22、OOP.舉例二(不使用WORKAREA)DATA:BEGINOFITABOCCURS10,COL1TYPEI,COL2TYPEI,ENDOFITAB.DO2TIMES.ITAB-COL1=SY-INDEX.ITAB-COL2=SY-INDEX*2.APPENDITAB.ENDDO.LOOPATITAB.WRITE:/ITAB-COL1,ITAB-COL2.ENDLOOP.exp:DATA:BEGINOFITABOCCURS10,COL1TYPEC,COL2TYPEI,ENDOFITAB.DO3TIMES.APPENDINITIALLINETOITAB.ITAB-COL1=SY-INDEX.IT
23、AB-COL2=SY-INDEX*2.APPENDITAB.ENDDO.LOOPATITAB.WRITE:/ITAB-C0L1,ITAB-C0L2.ENDLOOP.舉例三.(加入另一個(gè)Internaltable的元素)格式:APPENDLINESOF<itab1>FROM<n1>TO<n2>TO<itab2>.將<itab1>的元素加入至<itab2>中,可選取自<n1>至<n2>的范圍.APPENDLINESOFITABTOJTAB.中,與APPEND的區(qū)別是:COLLECT指令在非數(shù)值欄位相同的
24、COLLECTLINECOLLECT指令也是將元素加入Internaltable情況下,將數(shù)值欄位匯總.格式:COLLECT<workarea>INTO<itab>DATA:BEGINOFITABOCCURS3,COL1(3)TYPEC,此時(shí),internaltable此時(shí),internaltable中放的是2筆數(shù)據(jù),分別為:ITAB-COL1'ABC''XYZ'ITAB-COL29020INSERTLINEINSERTLINE將元素插入在指定的internaltable位置之前格式:INSERT<wa>INTOINITIAL
25、LINEINTO<itab>INDEX<idx>或者:INSERTLINESOF<itab1>FROM<n1>TO<n2>INTO<itab2>INDEX<idx>COL2TYPEI,ENDOFITAB.ITAB-COL1:='ABC'.ITAB-COL2=10.COLLECTITAB.ITAB-COL1:='XYZ'.ITAB-COL2=20.COLLECTITAB.ITAB-COL1:='ABC'.ITAB-COL2=80.COLLECTITAB.其中:<
26、;wa>即workarea,工作區(qū)中的元素.INITIALLINEINTO:插入一筆初始化的記錄.<itab>:internaltableINDEX<idx>:internaltable的記錄號(hào).(新加入的元素放在此記錄前面)Example:DATA:BEGINOFLINE,COL1TYPEI,COL2TYPEI,ENDOFLINE.DATAITABLIKELINEOCCURS10.DO3TIMES.LINE-COL1=SY-INDEX*10.LINE-COL2=SY-INDEX*20.APPENDLINEINTOITAB.ENDDO.LINE-COL1=100.
27、LINE-COL2=200.INSERTLINEINTOITABINDEX2."插入在位置2之前LOOPATITABINTOLINE.WRITE:/SY-TABIX,LINE-COL1,LINE-COL2."SY-TABIX為Table位置ENDLOOP.執(zhí)行結(jié)果:110202100200"插入的元素3204043060插入另一InternalTable元素語法:INSERTLINESOF<itab1>FROM<n1>TO<n2>TO<itab2>INDEX<idx>將<itab1>的元素插入
28、至<itab2>中,位置在<idx>之前,可選取自<n1>至<n2>的范圍Example:APPENDLINESOFITABTOJTABINDEX3.將ITAB所有元素插入JTAB中,位置在第三個(gè)元素之前*讀取internaltable格式一:LOOPAT<itab>INTO<wa>FROM<n1>TO<n2>WHERE<conditions>vstatement>ENDLOOP.Example:LOOPATITABINTOLINEWHERECOL1>100.WRITE:/S
29、Y-TABIX,LINE-COL1.ENDLOOP.僅讀取COL1>100的元素格式二:READTABLE<itab>INTO<wa>INDEX<idx>/WITHKEY<conditions>舉例(格式二)DATA:BEGINOFITABOCCURS10,COL1TYPEI,COL2TYPEI,ENDOFITAB.DO10TIMES.ITAB-COL1=SY-INDEX.ITAB-COL2=SY-INDEX*2.APPENDITAB.ENDDO.READTABLEITABINDEX3.(或者:READTABLEITABWITHKEYC0L
30、1=3.)WRITE:/'ITAB-C0L1=',ITAB-C0L1,'ITAB-C0L2=',ITAB-C0L2.執(zhí)行結(jié)果同樣是:ITAB-C0L1=3ITAB-C0L2=6.Example:READTABLEITABINTOLINEINDEX5讀取ITAB的第5個(gè)元素資料,放入LINE的欄位中根據(jù)欄位內(nèi)容尋找語法:READTABLE<itab>INTO<wa>Example:ITAB-COL1='ABC'.READTABLEITABINTOLINE.找出ITAB中COL1欄位內(nèi)容是ABC的元素,找到的值放入LINE中若
31、找到SY-SUBRC傳回0,找不到則傳回4,<itab>必須聲明有workarea*修改internaltable中的值格式:MODIFY<itab>FROM<wa>INDEX<idx>TRANSPORTING<f1><f2>WHERE<conditions>舉例一.READTABLEITABINDEX3.LINE-COL1=29.MODIFYITABFROMLINETRANSPORTINGCOL1.將第三筆記錄的COL1欄位的值修改為29.舉例二.T_SALARY-salary=50.MODIFYT_SALA
32、RYTRANSPORTINGsalaryWHEREbirthday='1999/12/06'.DELETEinternaltable中的欄位格式:DELETE<itab>INDEX<idx>.或:DELETE<itab>FROM<n1>TO<n2>WHERE<conditions>Internaltable排序SORT<itab><orderway>BY<f1><f2>其中:<orderway>有DESCENDING和ASCENDING,Defau
33、lt為ASCENDING.<f1>:為指定排序的欄位.Example:SORTITABDESCENDINGBYCOL2.將ITAB根據(jù)COL2欄位遞減排序*確定內(nèi)表屬性如果在處理過程中想知道內(nèi)表一共包含多少行,或者想知道定義的OCCURS參數(shù)的大小,請(qǐng)使用DESCRIBE句,用法如下:語法DESCRIBETABLE<itab>LINES<lin>OCCURS<occ>.如果使用LINES參數(shù),則將填充行的數(shù)量寫入變量<lin>。如果使用OCCURS參數(shù),則將行的初始號(hào)寫入變量<occ>。DATA:BEGINOFLINE,C
34、OL1TYPEI,COL2TYPEI,ENDOFLINE.DATAITABLIKELINEOCCURS10.DATA:LINTYPEI,OCCTYPEI.DESCRIBETABLEITABLINESLINOCCURSOCC.WRITE:/LIN,OCC.DO1000TIMES.LINE-COL1=SY-INDEX.LINE-COL2=SY-INDEX*2.APPENDLINETOITAB.ENDDO.DESCRIBETABLEITABLINESLINOCCURSOCC.WRITE:/LIN,OCC.其輸出為:0101.00010在此創(chuàng)建內(nèi)表ITAB。在填充表格前后執(zhí)行在此創(chuàng)建內(nèi)表ITAB。在填
35、充表格前后執(zhí)行DESCRIBE語句。更改當(dāng)前行號(hào),但無法更改初始行號(hào)。加總SUM.總和計(jì)算存放與workarea中,但只能在LOOP中使用.例:LOOPATITABINTOLINE.SUM.ENDLOOP.WRITE:/LINE-COL1,LINE-COL2.LINE-COL1和LINE-COL2存數(shù)值總和初始化internaltableREFRESH<itab>.REFRESH<itab>.清空<itab>中的值.使用在沒有HEADERLINE的InternalTable中,清除所有元素CLEAR素CLEAR素<itab>.清空<itab
36、>的HeaderLine.使用在有HEADERLINE的InternalTable中,清除所有元FREE<itab>.釋放內(nèi)存空間.釋放(Release)InternalTable所占的內(nèi)存空間,用在REFRESH和CLEAR指令之后將值重置為默認(rèn)值可以用CLEAR語句重置任何數(shù)據(jù)對(duì)象值,如下所示:語法CLEAR<f>.exp:DATANUMBERTYPEIVALUE'10'.WRITENUMBER.CLEARNUMBER.WRITE/NUMBER.輸出為:100CLEAR語句將字段NUMBER的內(nèi)容從10重置為默認(rèn)值0。*添加字段順序并將結(jié)果賦給
37、另一個(gè)字段語法ADD<n1>THEN<n2>UNTIL<nz>GIVING<m>.<m>如果<n1>、<n2>、<nz>是在內(nèi)存中相同類型和長(zhǎng)度的等距字段序列,則進(jìn)行求和計(jì)算并將結(jié)果賦給添加字段順序并將結(jié)果添加到另一個(gè)字段的內(nèi)容中語法ADD<n1>THEN<n2>UNTIL<nz>TO<m>.該語句除了將字段總和添加到<m>的舊內(nèi)容中之外,與上面語句的工作方式相同。有關(guān)其它相似變體的信息,參見有關(guān)ADD語句的關(guān)鍵字文檔。DATA:BEGIN
38、OFSERIES,N1TYPEIVALUE10,N2TYPEIVALUE20,N3TYPEIVALUE30,N4TYPEIVALUE40,N5TYPEIVALUE50,N6TYPEIVALUE60,ENDOFSERIES.DATASUMTYPEI.ADDSERIES-N1THENSERIES-N2UNTILSERIES-N5GIVINGSUM.WRITESUM.ADDSERIES-N2THENSERIES-N3UNTILSERIES-N6TOSUM.WRITE/SUM.輸出如下:150350在此,將N1到N5組件內(nèi)容求和并將其值賦給字段SUM。然后,將N2到N6組件求和并將其添加到SUM的值中
39、。*屏幕輸入命令在ABAP/4中要從屏幕輸入變量,使用的命令是PARAMETERS及SELECTION-OPTIONS:1. PARAMETER:輸入一個(gè)變量或欄位內(nèi)容2. SELECTION-OPTIONS:使用條件篩選畫面來輸入數(shù)據(jù)PARAMETERS指令基本的輸入命令,類似如BASIC的INPUT命令,但無法使用F格式(浮點(diǎn)數(shù))語法:PARAMETERS<p>DEFAULT<f>LOWERCASEOBLIGATORYASCHECKBOXRADIOBUTTONGROUP<rad>Example:PARAMETERS:NAME(8),AGETYPEI,BI
40、RTHTYPED.執(zhí)行結(jié)果:在日期的輸入格式上為MM/DD/YY,MM/DD/YYYY,MMDDYY或MMDDYYYY,如輸入020165表1965年02月01日,與02/01/65的輸入是一樣的,日期輸入范圍為西元1950年至2049年1. DEFAULT設(shè)定輸入的預(yù)設(shè)值Example:PARAMETERS:COMPANY(20)DEFAULT'DELTA',BIRTHTYPEDDEFAULT'19650201'.2. LOWERCASEABAP/4預(yù)設(shè)是將字串輸入值自動(dòng)轉(zhuǎn)換為大寫,加上此參數(shù)會(huì)將輸入的資料轉(zhuǎn)成小寫OBLIGATORY強(qiáng)制要求輸入,屏幕上會(huì)出現(xiàn)
41、一個(gè)?,使用者必須要輸入才可ASCHECKBOX輸入CHECKBOX的格式Example:PARAMETERS:TAXASCHECKBOXDEFAULTX,NTDASCHECKBOX.執(zhí)行結(jié)果:3. RADIOBUTTONGROUP<rad>輸入RADIOBUTTONGROUP的方式Example:PARAMETERS:BOYRADIOBUTTONGROUPSEXDEFAULT'X',GIRLRADIOBUTTONGROUPSEX.exp:TABLESSPLFI.PARAMETERS:LOWLIKESPFLI-CARRID,HIGHLIKESPFLI-CARRID.
42、SELECT*FROMSPLFIWHERECARRIDBETWEENLOWANDHIGH.ENDSELECT.*SELECTION-OPTIONSSELECTION-OPTIONS所輸入的值實(shí)際上是放在internaltable中的,該Internaltable有四個(gè)欄位,分別是:SIGN,OPTION,LOW,HIGH.條件篩選檢查條件輸入畫面指令,輸入條件后可配合SELECT指令自TABLE讀取符合條件的資料,直接執(zhí)行或放入InternalTable中,條件有四個(gè)參數(shù):1. SIGN:I:表篩選條件符合的資料E:表篩選條件不符合的資料OPTION:比較的條件符號(hào)EQ(等于),NE(不等于)
43、,GT(大于),LE(小于),CP(包含),NP(不包含)LOW:最小值2. HIGH:最大值語法:SELECTION-OPTIONS<check-option>FOR<table-field>Example:TABLESSPFLI.SELECT-OPTIONSAIRLINEFORSPFLI-CONNID.將條件的輸入值存放入AIRLINE,篩選選擇為SPFLI中的CONNID欄位改變條件輸入格式1. DEFAULT<begin>TO<end>設(shè)定開始結(jié)束范圍輸入預(yù)設(shè)值Example:'4555'.SELECT-OPTIONSAI
44、RLINEFORSPFLI-CONNIDDEFAULT'2042'TONO-EXTENSION設(shè)定不要Multi-Option輸入畫面NOINTERVALS設(shè)定不要區(qū)間范圍輸入畫面LOWERCASE輸入轉(zhuǎn)換成大寫OBLIGATORY強(qiáng)制要求輸入*配合SELECT命令1. 使用WHERE條件式Example:TABLESSPFLI.SELECT-OPTIONSAIRLINEFORSPFLI-CONNID.SELECT*FROMSPFLIWHERECONNIDINAIRLINE.WRITE:/SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO.ENDS
45、ELECT.2. 使用CHECK參數(shù)Example:TABLESSPFLI.SELECT-OPTIONSAIRLINEFORSPFLI-CONNID.SELECT*FROMSPFLI.CHECKAIRLINE.WRITE:/SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO.ENDSELECT.*exp:TABLESSPFLI.SELECT-OPTIONS:S_CARRIDFORSPFLI-CARRID,S_CITYFRFORSPFLI-CITYFROM,S_CITYTOFORSPFLI-CITYTO,S_CONNIDFORSPFLI-CONNID.SELECT*
46、FROMSPFLI.CHECK:SPFLI-CARRIDINS_CARRID,SPFLI-CITYFRINS_CITYFR,SPFLI-CITYTOINS_CITYTO,SPFLI-CONNIDINS_CONNID.WRITE:/SPFLI-CARRID,SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO.ENDSELECT.3. 使用IFIN關(guān)鍵字Example:SELECT-OPTIONSAIRLINEFORSPFLI-CONNID.SELECT*FROMSPFLI.IFSPFLI-CONNIDINAIRLINE.WRITE:/SPFLI-CONNID,SPF
47、LI-CITYFROM,SPFLI-CITYTO.ENDIF.ENDSELECT.*SELECTION-SCREEN1.產(chǎn)生空白列語法:SELECTION-SCREENSKIP<n>Example:SKIP2./<pos>(length)ULINE/10(30).30的底線SELECTION-SCREEN產(chǎn)生兩列空白列2.產(chǎn)生底線語法:SELECTION-SCREENULINEExample:SELECTION-SCREEN自第10格開始產(chǎn)生長(zhǎng)度3. 印出備注說明語法:SELECTION-SCREENSELECTION-SCREENCOMMENT/<pos>
48、(length)<name>Example:REMARK='Plsenteryourname'.SELECTION-SCREENCOMMENT/10(30)REMARK.4. 同一列中輸入數(shù)個(gè)資料項(xiàng)語法:SELECTION-SCREENBEGINOFLINE.SELECTION-SCREENENDOFLINE.Example:SELECTION-SCREENBEGINOFLINE.SELECTION-SCREENPOSITION20.PARAMETERSNAME(10).SELECTION-SCREENPOSITION40.PARAMETERSBIRTHTYPED.
49、SELECTION-SCREENENDOFLINE.在20格輸入NAME內(nèi)容,40格輸入BIRTH的內(nèi)容5. 繪出BLOCKPANEL語法:SELECTION-SCREENBEGINOFBLOCK<block>WITHFRAMETITLE<title>.SELECTION-SCREENENDOFBLOCK<block>.Example:SELECTION-SCREENWITHFRAME.PARAMETERR1RADIOBUTTONGROUPGR1.PARAMETERR2RADIOBUTTONGROUPGR1.PARAMETERR3RADIOBUTTONGRO
50、UPGR1.BEGINOFBLOCKRADIOSELECTION-SCREENENDOFBLOCKRADIO.*SQL語法我們?cè)诰帉慉BAP4程序的時(shí)候,經(jīng)常需要從TABLE中根據(jù)某些條件讀取數(shù)據(jù),讀取數(shù)據(jù)最常用的方法就是通過SQL語法實(shí)現(xiàn)的。ABAP/4中可以利用SQL語法創(chuàng)建或讀取TABLE,SQL語法分為DDL(DATADEFINELANGUAGE)語言和DML(DATAMULTIPULATIONLANGUAGE)語言,DDL語言是指數(shù)據(jù)定義語言,例如CREATE等,DML語言是數(shù)據(jù)操作語言,例如SELECT,INSERT等語句。SQL語句有OPENSQL語句和NATIVESQL語句。O
51、PENSQL語句不是標(biāo)準(zhǔn)SQL語句,是ABAP/4語言,利用OPENSQL語句能在Databases和Command之間產(chǎn)生一個(gè)BUFFER,所以它有一個(gè)語言轉(zhuǎn)換的過程。而NATIVESQL語句則是標(biāo)準(zhǔn)的SQL語句,它直接針對(duì)Databases操作。OPENSQLSELECT語句語法格式:SELECT<result>INTO<target>FROM<source>WHERE<condition>GROUPBY<fields>ORDERBY<sortorder>其中:<result>指定要抓取的欄位<tar
52、get>將讀取的記錄存放在workarea中<source>指定從那個(gè)TABLE中讀取資料<condition>抓取資料的條件<fields>指定按那些欄位分組<sortorder>排序的欄位及方式相關(guān)的系統(tǒng)變量:SY-SUBRC=0表示讀取數(shù)據(jù)成功<>0表示未找到符合條件的記錄SY-DBLNT:被處理過的記錄的筆數(shù).相關(guān)的命令:EXIT.退出循環(huán).CHECK<logisticstatement>.如果邏輯表達(dá)式成立,則繼續(xù)執(zhí)行,否則,開始下一次循環(huán)。利用循環(huán)方式讀取所有記錄SELECT.ENDSELECT.是循環(huán)方
53、式讀取記錄的。例如:TABLESMARD.SELECTDISTINCT*FROMMARDWHEREMATNR='3520421700'.<Statements>.ENDSELECT.(從MARD中抓取所有料號(hào)=3520421700的資料)讀取一筆資料Example:TABLESSPFLI.SELECTSINGLE*FROMSPFLIWHEREPLANT='CHUNGLI'ANDTEL='4526174'.WRITE:/SPFLI-COMPANY,SPFLI-PLANT,SPFLI-TEL.將讀取的記錄放在workarea中,并且加入I
54、nternaltable中.格式有:.INTO<workarea>.INTOCORRESPONDINGFIELDSOF<workarea>.INTO(f1,.,fn)變量組.INTOTABLE<internaltable>.INTOCORRESPONDINGFIELDSOFTABLE<internaltable>.APPENDINGTABLE<internaltable>.APPENDINGCORRESPONDINGFIELDSOFTABLE<internaltable>舉例一:TABLESMARD.DATA:BEGINO
55、FITABOCCURS10,MATNRLIKEMARD-MATNR,WERKSLIKEMARD-WERKS,LGORTLIKEMARD-LGORT,LABSTLIKEMARD-LABST,ENDOFITAB.SELECTMATNRWERKSLGORTLABSTINTOCORRESPONDINGFIELDSOFITABFROMMARDWHEREMATNR='3520421700'.APPENDITAB.CLEARITAB.ENDSELECT.(將讀取的結(jié)果放在InternaltableITAB中)DATA:BEGINOFWA,LINE(240),ENDOFWA.DATANAME(
56、10).NAME='SPFLI'.SELECT*FROM(NAME)INTOWA.WRITE:/WA-LINE.ENDSELECT.數(shù)據(jù)庫(kù)表名稱SPFLI被賦給字符字段NAME。SELECT語句將所有的行從SPFLI中讀到目標(biāo)區(qū)WA中。在該示例中,WA與SPFLI的結(jié)構(gòu)并不相同,每一行都將自動(dòng)地轉(zhuǎn)換成字符字段舉例二TABLESMARD.SELECTMATNRMTARTMAKTXINTO(t_matnr,t_mtart,maktx)FROMMARDWHEREMATNR='3520421700'.<Statements>.ENDSELECT.(從MARD
57、中抓取料號(hào)=3520421700的料號(hào)、類型和描述,放在變量t_matnr,t_mtart,maktx中)。Example:TABLESSPFLI.DATAWALIKETABLES.SELECT*FROMSPFLIINTOWA.WRITE:/WA-COMPANY,WA-PLANT.ENDSELECT.逐筆寫入WA工作區(qū)中舉例三.將讀取的資料寫入InitialTable中語法:SELECT.INTOTABLE<itab>Example:TABLESSPFLI.DATAITABLIKESPFLIOCCURS10WITHHEADERLINE.SELECT*FROMSPFLIINTOITA
58、B.一次讀10筆(InitialTable的長(zhǎng)度)記錄存入ITAB中SELECT.INTOTABLE<itab>PACKAGESIZE<n>一次讀取<n>筆記錄至<itab>中Example:TABLESSPFLI.DATAITABLIKESPFLIOCCURS10WITHHEADERLINE.SELECT*FROMSPFLIINTOITABPACKAGESIZE5.一次讀取5筆記錄exp:TABLESSPFLI.DATA:BEGINOFWA,NUMBERTYPEIVALUE1,CITYFROMLIKESPFLI-CITYFROM,CITYTOL
59、IKESPFLI-CITYTO,ENDOFWA.SELECT*FROMSPFLIINTOCORRESPONDINGFIELDSOFWA.WRITE:/WA-NUMBER,WA-CITYFROM,WA-CITYTO.ENDSELECT.輸出如下所示:在該示例中,系統(tǒng)只將數(shù)據(jù)庫(kù)表SPFLI中選定行的列CITYFROM和CITYTO傳送到WA中。WA中的組件NUMBER保持不變。*按指定的欄位排序TABLESSBOOK.SELECT*FROMSBOOKWHERECARRID='LH'ANDCONNID='0400'ANDFLDATE='19950228'ORDERBYBOOKIDASCENDING.WRITE:/SBOOK-BOOKID,SBOOK-CUSTOMID,SBOOK-CUSTTYPE,SBOOK-SMOKER,SBOOK-LUGGWEIGHT,SBOOK-WUNIT,SBOOK-INVOICE.ENDSELECT.(利用參數(shù)ORDERBY所指定的欄位排序)*抓取數(shù)據(jù)的條件關(guān)鍵字(1)BETWEEN<g1>AND<g2>例女口:WHEREYEARBETWEEN1995AND2000.LIKE<g>例如:WHERENAME
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛南科技學(xué)院《農(nóng)業(yè)標(biāo)準(zhǔn)化概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛東學(xué)院《中國(guó)古代文學(xué)專題》2023-2024學(xué)年第一學(xué)期期末試卷
- 甘孜職業(yè)學(xué)院《影視廣告創(chuàng)意與策劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 甘肅中醫(yī)藥大學(xué)《邏輯與邏輯思維》2023-2024學(xué)年第一學(xué)期期末試卷
- 科室醫(yī)療質(zhì)量與安全管理制度范文(4篇)
- 2025年1月日歷表(含農(nóng)歷-周數(shù)-方便記事備忘)
- 藥房服務(wù)培訓(xùn)課件
- 信息安全事件課件
- 小學(xué)生起床圖片課件
- 益陽定點(diǎn)月嫂培訓(xùn)課件
- 裝配式鋼筋混凝土簡(jiǎn)支T梁設(shè)計(jì)
- COMMERCIAL INVOICE 商業(yè)發(fā)票
- 大氣課程設(shè)計(jì)-—袋式除塵器
- 普天超五類檢測(cè)報(bào)告
- 會(huì)計(jì)師事務(wù)所業(yè)務(wù)培訓(xùn)制度
- CMM2-18錨桿機(jī)(新)說明書
- 12噸汽車起重機(jī)基本技術(shù)規(guī)格資料
- WEB開發(fā)基礎(chǔ)-2021秋本-計(jì)算機(jī)科學(xué)與技術(shù)本復(fù)習(xí)資料-國(guó)家開放大學(xué)2022年1月期末考試復(fù)習(xí)資料
- 安徽省政協(xié)機(jī)關(guān)文件材料歸檔范圍
- 本質(zhì)安全理論綜述研究
- 代建項(xiàng)目管理工作大綱
評(píng)論
0/150
提交評(píng)論