SAP必备基础语法Word格式.docx
《SAP必备基础语法Word格式.docx》由会员分享,可在线阅读,更多相关《SAP必备基础语法Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
HHMMSS如:
14:
03:
00'
X:
16进制数如:
1A03'
*-------------------------------------------------------------------------------------*变数宣告DATA[][][decimals]变数名称变数类型及长度初值小数位数exp:
DATA:
COUNTERTYPEPDECIMALS3.NAME(10)TYPECVALUE'
DELTA'
.S_DATETYPEDVALUE'
19991203'
.exp:
BEGINOFPERSON,NAME(10)TYPEC,AGETYPEI,WEIGHTTYPEDECIMALS2,ENDOFPERSON.另外,有關DATA宣告的指令還有:
CONSTANTS(宣告常數)、STATICS(臨時變數宣告).exp:
CONSTANTSPITYPEPDECIMALS5VALUE'
3.14159'
.STATICS敘述宣告的變數僅在目前的程式中利用,結束後會自動釋放語法:
STATICS[][][]系統專用變數說明系統內部專門創建了SYST這個STRUCTURE,里面的欄位寄存系統變數,经常使用的系統變數有:
SY-SUBRC:
系統執行某指令后,表示執行成功与否的變數,'
0'
表示成功SY-UNAME:
當前利用者登入SAP的USERNAME;
SY-DATUM:
當前系統日期;
SY-UZEIT:
當前系統時間;
SY-TCODE:
當前執行程式的TransactioncodeSY-INDEX:
當前LOOP循環過的次數SY-TABIX:
當前處理的是internaltable的第几筆SY-TMAXL:
Internaltable的總筆數SY-SROWS:
屏幕總行數;
SY-SCOLS:
屏幕總列數;
SY-MANDT:
CLIENTNUMBERSY-VLINE:
畫豎線SY-ULINE:
畫橫線TYPE敘述用來指定資料型態或宣告自定資料型態Example:
TYPES:
BEGINOFMYLIST,NAME(10)TYPEC,NUMBERTYPEI,ENDOFMYLIST.DATALISTTYPEMYLIST.LIKE敘述跟TYPE敘述利用格式相同,如DATATRANSCODELIKESY-TCODE.不同的是LIKE用在已有值的資料項,如系統變數,而TYPE敘述則是用在指定資料型態。
*-------------------------------------------------------------------------------------*输出一.WRITE語句ABAP/4用來在屏幕上輸出資料的指令是WRITE指令,例如:
WRITE:
'
USERNAMEIS:
SY-UNAME.二.指定屏幕輸出位置指定輸出位置的語句格式為:
[AT][/][][()]資料項[]其中:
/:
在下一行輸出:
指定輸出的行號;
():
指定輸出位數(長度):
指定顯示格式參數,參數有:
LEFT-JUSTIFIED資料*左對齊CENTERED資料*中間對齊RIGHT-JUSTIFIED資料*右對齊UNDER正對在資料項的下面顯示NO-GAP緊接著顯示,不留空格USINGEDITMASK:
利用內嵌子元顯示,如12:
20USINGNOEDITMASK:
不利用內嵌子元NO-ZER數字前面0的部份不顯示NO-SIGN:
不顯示正負號DECIMALS:
顯示位小數EXPOENT:
F(浮點數)指數的值ROUND:
四舍五入至小數點后位CURRENCY:
幣別顯示DD/MM/YY:
日期顯示格式MM/DD/YY:
YY/MM/DD:
YY/DD/MMMM/DD/YYYY:
DD/MM/YYYYYYYY/MM/DD:
YYYY/DD/MM:
例如1:
WRITE:
/10(6)'
ABCDEFGHIJK'
.輸出結果為:
ABCDEF例如2:
DATA:
XTYPEIVALUE'
11:
20:
30'
A(5)TYPECVALUE'
ABCDE'
.WRITE:
/XUSINGEDITMASK'
__:
__'
$___,___'
/YNO-GAP.輸出結果為:
30$112,030ABCDEF例如3:
LENTYPEIVALUE10,POSTYPEIVALUE11,TEXT(10)VALUE'
1234567890'
WRITE'
Thetext------------appearsinthetext.'
.WRITEATPOS(LEN)TEXT.WRITETO语句的大体形式要将值(文字)或源字段内容写入目标字段,能够利用WRITETO语句:
语法WRITETO[].DATA:
NUMBERTYPEFVALUE'
4.3'
TEXT(10),FLOATTYPEF,PACKTYPEPDECIMALS1.WRITENUMBER.WRITENUMBERTOTEXTEXPONENT2.WRITE/TEXT.WRITENUMBERTOFLOAT.WRITE/FLOAT.WRITENUMBERTOPACK.WRITE/PACK.MOVENUMBERTOPACK.WRITE/PACK.exp:
DATA:
NAME(10)VALUE'
SOURCE'
SOURCE(10)VALUE'
Antony'
TARGET(10)....WRITE(NAME)TOTARGET.WRITE:
TARGET.exp:
COUNTERTYPEI.COMPUTECOUNTER=COUNTER+1.COUNTER=COUNTER+1.ADD1TOCOUNTER.在此,三条运算语句进行相同算术运算输出屏幕上的线和空行用以下语法,能够在输出屏幕上生成水平线:
语法ULINE[AT[/][][()]].它等同于WRITE[AT[/][][()]]SY-ULINE.AT后的格式规范,与在在屏幕上定位WRITE输出(页28)中为WRITE语句说明的格式标准完全一样。
若是没有格式标准,系统那么开始新的一行,并用水平线填充该行。
否那么,只按指定输出水平线。
生成水平线的另一种方法,是在WRITE语句中键入适当数量的连字符,如下所示:
WRITE[AT[/][][()]]'
-----...'
.垂直线用以下语法,能够在输出屏幕上生成垂直线:
语法WRITE[AT[/][]]SY-VLINE.或WRITE[AT[/][]]'
|'
.空行用以下语法,能够在输出屏幕上生成空行:
语法SKIP[].该语句从当前行开始,在输出屏幕上生成个空行。
如果没有指定的值,就输出一个空行。
要将输出定位在屏幕的指定行上,请利用:
语法SKIPTOLINE.该语句许诺将输出位置向上或向下移动。
2.利用條件式語法:
UPDATESET<
f1>
=…WHERE根據條件式異動符合條件式的記錄Example:
UPDATESPFLISETNO='
34051920'
COMPANY='
WHERETEL='
4526107'
.*-------------------------------------------------------------------------------------*3.MODIFY語法MODIFY[FROM].根據PrimaryKey尋找資料檔中符合的記錄,假设找到則更新異動,假设找不到則新增記錄語法:
MODIFYFROMExample:
WA-NO='
.WA-COMPANY='
.MODIFYSPFLIFROMWA.4.DELETE語法DELETE[FROM].或:
DELETE[WHERE]刪除資料檔的記錄1.利用PrimaryKey語法:
DELETEFROMExample:
TABLESSPFLI.DATAWALIKESPFLI.WA-NO='
.DELETESPFLIFROMWA.如SPFLI的PrimaryKey是NO,則會找到NO='
的記錄,找到後將此筆刪除2.利用條件式語法:
DELETEFROMWHERE根據條件式刪除符合條件式的記錄Example:
DELETEFROMSPFLIWHEREAREA='
AMERICAN'
.*-------------------------------------------------------------------------------------*5.DATABASECURSORDatabaseCursor是一個資料庫暫存區,將經SELECT指令讀取的記錄寄存至此暫存區,再由此暫存區放至WorkArea中,可減少資料庫讀取的次數.1.開啟DatabaseCursor語法:
OPENCURSORFORSELECT…WHEREExample:
TABLESSPFLI.DATA:
WALIKESPFLI,C1TYPECURSOR.OPENCURSORC1FORSELECT*FROMSPFLIWHEREAREA='
TAIWAN'
.2.讀取DatabaseCursor的資料存入WorkArea語法:
FETCHNEXTCURSORINTOExample:
FETCHNEXTCURSORC1INTOWA.讀取下一筆Cursor位置的資料存入WA,若是已無資料可讀,SY-SUBRC<
>
0.關閉DatabaseCursor語法:
CLOSECURSORExample:
CLOSECURSORC1.*-------------------------------------------------------------------------------------*COMMITWORK&
ROLLBACKWORK要確定資料成功寫入資料庫,可利用COMMITWORK指令,如:
COMMITWORK.相反的,若是反悔要復原,可利用ROLLBACKWORK,可復原在上個COMMITWORK指令之後的資料,如:
ROLLBACKWORK.*-------------------------------------------------------------------------------------*利用NATIVESQL指令語法格式:
EXECSQL[PERFORMING
窗体顶端
].ENDEXEC.舉例一.EXECSQL.CREATETABLEAVERI_CLNT(CLIENTCHAR(3)NOTNULL,ARG1CHAR(3)