ABAP4.docx

上传人:b****6 文档编号:7180162 上传时间:2023-01-21 格式:DOCX 页数:63 大小:109.03KB
下载 相关 举报
ABAP4.docx_第1页
第1页 / 共63页
ABAP4.docx_第2页
第2页 / 共63页
ABAP4.docx_第3页
第3页 / 共63页
ABAP4.docx_第4页
第4页 / 共63页
ABAP4.docx_第5页
第5页 / 共63页
点击查看更多>>
下载资源
资源描述

ABAP4.docx

《ABAP4.docx》由会员分享,可在线阅读,更多相关《ABAP4.docx(63页珍藏版)》请在冰豆网上搜索。

ABAP4.docx

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表SDDialog程式為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在資料項的X軸開始座標顯示

NO-GAP緊接著顯示,不留空格

USINGEDITMASK使用內嵌字元顯示,如11:

20:

30

USINGNOEDITMASK不使用內嵌字元

NO-ZERO數字前面0的部分不顯示

NO-SIGN不顯示正負號

DECIMALS顯示d位小數位數

EXPONENTF(浮點數)exponent的值

ROUND四捨五入至小數位數下r位

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系統所提供的符號或圖示

語法:

WRITEASSYMBOL

WRITEASICON

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

語法:

MOVETO

將F1的值存至變數F2中,也可寫成F2=F1

Example:

M_NAME=‘CHER’.

使用Offset

語法:

MOVE[+]TO[+]

Example:

DATA:

F1(10)VALUE‘ABCDEFGHIJ’.

F2(5).

F2=F1+3(5).“自第4個位置開始取出5個字元

F2的內容會變成DEFGH

FieldString元件的複製

語法:

MOVE–CORRESPONDINGTO.

將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()TO

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[BYPLACES][]

:

(1).空白,字串往左移一位

(2).LEFT,字串往左移n位

(3).RIGHT,字串往右移n位

(4).CIRCULAR:

字串以環狀方式移位

Example:

DATASTRING(10)VALUE‘ABCDEFGHIJ’.

SHIFTSTRING.“得到BCDEFGHI’

SHIFTSTRINGBY2PLACESRIGHT.“得到ABCDEFGH

2.取代字串內容

語法:

REPLACEWITHINTO

將字串中的來取代

Example:

DATA:

STRING(10)VALUE‘ABCDEFGHI’,

STR1(3)VALUE‘DEF’,

STR2(3)VALUE‘123’.

REPLACESTR1WITHSTR2INTOSTRING.

WRITE/STRING.“得到ABC123GHI

3.大小寫的轉換

語法:

TRANSLATETOUPPERCASE.“轉成大寫

TRANSLATETOLOWERCASE.“轉成小寫

4.在字串中尋找部分字串

語法:

SEARCHFOR

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.

WHEN.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1