ABAP4入门.docx
- 文档编号:23103634
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:78
- 大小:1.26MB
ABAP4入门.docx
《ABAP4入门.docx》由会员分享,可在线阅读,更多相关《ABAP4入门.docx(78页珍藏版)》请在冰豆网上搜索。
ABAP4入门
1.ABAP/4Introduction
Introduction
ABAP/4(AdvancedBusinessApplicationProgramming)是SAP/R3目前唯一的系統發展工具,
屬4GL,語法比較近似VisualBasic或JAVA,和傳統third-generation語言,如C,PASCAL
有很大不同,在程式模組(ProgramStructureModule)可分以
下三個部分:
1.Sequentialcodingwithinprocessingblock
與一般語言語法近似,如IF,WHILE等,但並沒有GOTO敘述
2.Reports
呼叫一個獨立的事件(DependingEvent),讀取database產生資料列表
3.Dialog
螢幕參數輸入的對話框,專門處理database讀取或異動的tranactionprocess
BasicLanguangeOverview
1.dataelement宣告方式,如數值,字元資料變數宣告
2.運算元(operate)使用,如+-*/
3.Controlelement使用,如Boolean值
4.特殊資料格式,如日期與時間
5.字串字料處理function,如部分字串的截取
6.副程式或自定函數的呼叫
7.SQL語法使用
8.資料結構的使用,如processinternaltable的宣告與使用
ReportsOverview
1.ReportsTask,如報表螢幕預覽或印表機列印的選擇
2.Reports模組是一個Stand-along程式,
3.database讀取方式,如可定義logicaldatabase(與磁碟的physicalstorage對映)
4.報表資料的計算與產生
5.報表的輸出
DialogOverview
1.專處理database的讀取與異動,如使用SQL指令
2.Dialog不是一個Stand-AlongProgarm,使用transactioncode來產生螢幕對話框
3.由flowlogic控制,flowlogic分成PBO(ProcessBeforeOutput)與PAI(ProcessAfterInput)
2.BeginToProgramming
2.1ABAP/4Editor
CreatingABAP/4Program
使用ABAPWorkbench撰寫程式(ChooseTools->ABAP/4Workbench,TransactionCode:
S001),螢
幕如下:
可分成:
1.ABAP/4Editor:
針對簡單的報表或程式,僅使用幾個元件或不使用
2.ObiectBrowser:
針對複雜的報表或程式,如DialogTransactionModule撰寫
使用ABAP/4Editor撰寫程式
1.ABAP/4Editor畫面如下(TransactionCode:
SE38):
2.輸入程式名稱,如果是新程式,按下”Create”,如果修改已存在程式,則按下”Change”或F6鍵。
在命名規則上,Reports程式為Yaxxxxxx或Zaxxxxxx,a表applicationmodule簡稱,如s表SD
Dialog程式為SAPMYxxx或SAPMZxxx
3.輸入程式Attribute
(1).Title:
程式描述或功能說明
(2).Type:
Executemode:
1:
Stand-alongProgram如Reports
I:
IncludeProgram
M:
ModulePool
F:
FunctionGroup
S:
SubroutinePool
(3).Status:
Programdevelopmentstatus:
P:
SAPstandardproductionprogram
K:
Customerproductionprogram
S:
Systemprogram
T:
Testprogram
(4).Application:
程式所屬的applicationmodule,如F表Financeialacounting
(5).Developmentclass:
用於同一系統中各個program,如果不屬任一class,可使用$TMP
4.撰寫SourceCode
Program之後接的是程式名稱,Write是顯示的意思,會將所接的字串在螢幕上顯示,注意每一
行最後要有一個.(點),表示敘述的結束,儲存後回ABAP/4Editor畫面
5.執行程式
按”Execute”或F8鍵,螢幕可見執行所得的結果
重要的編輯鍵
key
Function
F8
F5
F11
CTRL+F11
執行程式
複製游標所在列的內容
儲存檔案
刪除游標所在列
2.2ABAP/4DataElement
DataType
ABAP/4的資料型態可分成:
TypeLengthRangeInitialValueDescription
C11-65535ByteSpace字串資料,如’Program’
D88Byte‘00000000’日期資料,格式為YYYYMMDD
F88Byte0浮點數
I4-2^31至2^31-10整數
N11-65535Byte‘00…0’數值所組成的字串
P81-16Byte0Packed數,用在小數點數
T66Byte‘000000’時間資料,格式為HHMMSS
X11-65535ByteX’00’16進位數
變數宣告
變數宣告包含name,type,length和structure四個部分,使用DATA指令,如
DATA:
S1TYPEI,
SUMTYPEI.
常數宣告
常數宣告使用CONSTANTS指令,如宣告PI是一個小數點5位的值3.14159,
CONSTANTSPITYPEPDECIMALS5VALUE‘3.14159’.
系統所定義資料
這是由系統所定義的專有名辭,如
SPACE空白字串
SY-SUBRC系統執行傳回值,0表示成功
SY-UNAMElogon帳號
SY-DATUM系統日期
SY-UZEIT系統時間
SY-TCODE目前的transactioncode
TYPE敘述
用來指定資料型態或宣告自定資料型態
Example:
TYPES:
BEGINOFMYLIST,
NAME(10)TYPEC,
NUMBERTYPEI,
ENDOFMYLIST.
DATALISTTYPEMYLIST.
LIKE敘述
跟TYPE敘述使用格式相同,如
DATATRANSCODELIKESY-TCODE.
不同的是LIKE用在已有值的資料項,如系統變數,而TYPE敘述則是用
在指定資料型態。
DATA敘述
語法:
DATA
變數名稱,最長30個字元,不可含有+.,:
()等字元
資料型態及長度,如LINE(20)TYPEC.MYNAMELIKESY-UNAME.
初值
小數位數
Example:
DATA:
COUNTERTYPEPVALUE1,
FLAGTYPECVALUEISINITIAL,
WEIGHTTYPEPDECIMALS2VALUE‘1.25’.
欄位變數的宣告:
DATA:
BEGINOFADDRESS,
NAME(10)TYPEC,
NUMBERTYPEP,
ENDOFADDRESS.
使用時用欄位變數加上元件名稱,如ADDRESS-NAME
CONSTANTS敘述
用來宣告常數
語法:
CONSTANTS
Example:
CONSTANTS:
CNAME(10)VALUE‘周慶日’,
BIRTH_DAYTYPEDVALUE‘19650201’.
STATICS敘述
宣告的變數僅在目前的程式中使用,結束後會自動釋放
語法:
STATICS
TABLES敘述
用來宣告TableWorkArea的資料,對映至ABAP/4資料檔(DictionaryObject),
由SQL指令載入所需資料
語法:
TABLES
Example:
TABLES:
SPFL.
SELECT*FROMSPFL.
WRITE:
SPFL-MANDT,SPFL-CARRID,SPFL-CONNECTION.
ENDSELECT.
從ABAP/4Dictionary的SPFL檔載入MANDT,CARRID,CONNECTION三個欄位至
SPFL此TableWorkArea
2.3OutputtingDatatoScreen
Write敘述
ABAP/4用來在螢幕上輸出資料的指令是Write指令
語法:
Write資料項
資料項可以是常數或變數,如:
WRITE‘Thisissample’.
WRITE:
‘COMPANY:
’,STFL-CARRID.
指定螢幕位置顯示
語法:
WriteAT[/][
/:
先往下一列
pos:
螢幕X軸座標
(len):
顯示資料的長度
Example:
WRITE‘FirstLine’.
WRITE/6‘SecondLine’.
輸出結果:
FirstLine
SecondLine
DATA:
NUMBERTYPEIVALUE‘1234567890’.
TEXT(10)VALUE‘ABCDEFGHIJ’.
WRITE:
(5)NUMBER,/(6)TEXT.
輸出結果:
*7890
ABCDEF
指定顯示格式
語法:
WRITE資料項<顯示格式參數>
顯示格式參數:
LEFT-JUSTIFIED資料靠左顯示
CENTERED資料靠中間顯示
RIGHT-JUSTIFIED資料靠右顯示
UNDER
NO-GAP緊接著顯示,不留空格
USINGEDITMASK
20:
30
USINGNOEDITMASK不使用內嵌字元
NO-ZERO數字前面0的部分不顯示
NO-SIGN不顯示正負號
DECIMALS
EXPONENT
ROUND
CURRENCY
DD/MM/YY日期顯示格式
MM/DD/YY
DD/MM/YYYY
MM/DD/YYYY
DDMMYY
MMDDYY
YYMMDD
Example:
DATA:
XTYPEIVALUE‘112030’,
A(5)VALUE’ABCDE’.
WRITEXUSINGEDITMASK‘__:
__:
__’.
輸出結果為11:
20:
30
WRITEXUSINGEDITMASK‘$___,___’
輸出結果為$112,030
產生空白列
產生n個空白列
語法:
SKIP[
Example:
WRITE‘PASS1’.
SKIP.
WRITE‘PASS2’.
輸出結果為:
PASS1
PASS2
顯示圖示
可以顯示R/3系統所提供的符號或圖示
語法:
WRITE
WRITE
Example:
INCLUDE
INCLUDE
WRITE:
/‘PhoneSymbol:
’,SYM_PHONEASSYMBOL.
WRITE:
/‘AlarmIcon:
’,ICON_ALARMASICON.
執行結果:
要查看系統所提供有那些符號及圖示,可選擇“Edit”下的“InsertStatement”,選擇
“WRITE”
接下來選擇要查的群組,如SYMBOL或ICON,按下“Display”即可.
跳至指定列座標
將座標跳至指定的Y軸列座標
語法:
SKIPTOLINE[
Example:
SKIPTOLINE5.
WRITE‘PASS1’.
顯示CHECKBOX資料
以字串資料內容的第一個字元為CHECKBOX的輸出,如果是空白,CHECKBOX顯示
為空白,相反則顯示X,可用在邏輯判斷檢查
語法:
WRITE<資料項>ASCHECKBOX.
Example:
DATA:
FLAG1VALUE‘‘.
FLAG2VALUE‘X’.
WRITE:
/‘CHECKFLAG1:
’,FLAG1ASCHECKBOX.
WRITE:
/‘CHECKFLAG2:
’,FLAG2ASCHECKBOX.
執行結果:
2.4ProcessingData
AssignValue
語法:
MOVE
將F1的值存至變數F2中,也可寫成F2=F1
Example:
M_NAME=‘CHER’.
使用Offset
語法:
MOVE
Example:
DATA:
F1(10)VALUE‘ABCDEFGHIJ’.
F2(5).
F2=F1+3(5).“自第4個位置開始取出5個字元
F2的內容會變成DEFGH
FieldString元件的複製
語法:
MOVE–CORRESPONDING
將Strings1中的field元件的資料複製至String2中,僅複製相同名稱的元件
Example:
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.
NAME-FIRSTNAME變成‘LULU’,NAME-LASTNAME變成‘CHOU’,
而NAME-E_MAIL則不變
變數CALLBYVALUE的使用
在變數的使用上,可以使用類似CallByValue的方法
語法:
WRITE(
Example:
DATA:
NAME(20)VALUE‘SOURCE’,
SOURCE(10)VALUE‘LILY’,
TARGET(10).
WRITE(NAME)TOTARGET.
WRITE/TARGET.
螢幕可印出LILY
清除變數內容
語法:
CLEAR
清除變數現在內容,恢復成初值
Example:
DATANTYPEIVALUE100.
CLEARN.
變數N的內容變成0
算術符號
**乘冪
*乘
/除
+加
-減
DIV整數除法
MOD餘數除法
數值函數
1.ABS(N):
傳回數值N的絕對值
2.SIGN(N):
1ifN>0
1ifN=0
-1ifN<0
3.CEIL(N):
傳回大於數值N的最小整數
Example:
WRITECEIL(-5.65)印出–5.00
WRITECELL(4.54)印出5.00
4.FLOOR(N):
傳回小於數值N的最大整數
Example:
WRITEFLOOR(-5.65)印出–6.00
WRITEFLOOR(4.54)印出4.00
5.TRUNC(N):
傳回數值N的整數部分
Example:
WRITETRUNC(5.65)印出5.00
6.FRAC(N):
傳回數值N的小數部分
Example:
WRITEFRAC(5.65)印出0.65
7.COS(A),SIN(A),TAN(A):
傳回三角函數cosA,sinA,tanA的值,A為弳度量
8.EXP(N):
傳回e^N值
8.LOG(N):
傳回logeN值
9.LOG10(N):
傳回logN值
10.SQRT(N):
傳回N的平方根值
日期與時間運算
1.日期資料的運算
日期資料可以直接運算,如加法與減法的運算
Example:
DATA:
MdataTYPED.
Mdate=SY-DATUM.“如傳回19971015
Mdate+6
(2)=‘01’“Mdate變成19971001
Mdate=Mdate-1“Mdate變成19970931
2.時間資料的運算
時間格式為‘hhmmss’,如‘212030’表’21:
20:
30’
Example:
DATA:
HOURSTYPEI,
MINUTESTYPEI,
T2TYPETVALUE‘200000’,
T1TYPETVALUE‘183000’.
HOURS=(T2-T1)/3600.“計算有幾小時
MINUTES=(T2–T1)/60.“計算幾分鐘
字串資料處理
1.字串移位
語法:
SHIFT
(1).空白,字串往左移一位
(2).LEFT,字串往左移n位
(3).RIGHT,字串往右移n位
(4).CIRCULAR:
字串以環狀方式移位
Example:
DATASTRING(10)VALUE‘ABCDEFGHIJ’.
SHIFTSTRING.“得到BCDEFGHI’
SHIFTSTRINGBY2PLACESRIGHT.“得到ABCDEFGH
2.取代字串內容
語法:
REPLACE
將字串
Example:
DATA:
STRING(10)VALUE‘ABCDEFGHI’,
STR1(3)VALUE‘DEF’,
STR2(3)VALUE‘123’.
REPLACESTR1WITHSTR2INTOSTRING.
WRITE/STRING.“得到ABC123GHI
3.大小寫的轉換
語法:
TRANSLATE
TRANSLATE
4.在字串中尋找部分字串
語法:
SEARCH
Example:
DATASTRING(10)VALUE‘ABCDEFGHIJ’.
會回存至兩個變數,SY-SUBRC和SY-FDPOS,若找到則SY-SUBRC為0
SY-FDPOS存開始位疊,若找不到則SY-SUBRC為4,SY-FDPOS為0
5.字串長度
STRLEN(
Example:
INT=STRLEN(‘XYZABC’).“得到6
INT=STRLEN(‘ABC’).“得到3
6.取部分字串
Example:
DATAT(10)VALUE‘ABCDEFGHIJ’.
WRITE/T+2(4).“得到CDEF
2.5FlowControlling
比較符號
1.=或EQ:
等於
2.<>或><或NE:
不等於
3.<或LT:
小於
4.<=或LE:
小於等於
5.>或GT:
大於
6.>=或GE:
大於等於
7.AND:
且
8.OR:
或
9.NOT:
非
條件述敘
1.IF述敘
語法:
IF
ELSEIF
ELSEIF
…..
ELSE.
ENDIF.
(1).在每個判斷敘述之後要加上.
(2).在巢狀迥圈之中無法使用ELSE敘述,ELSE敘述屬IF敘述
Example:
IF3>8.
WRITE/‘3islessthan8’.
ENDIF.
2.CASE敘述
語法:
CASE<變數f>.
WHEN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ABAP4 入门