【正文】
subr [USING f1 f2…] [CHANGING f1…]PERFORM subr [USING f1 f2…] [CHANGING f1…]Using 之后接在子程序中不會(huì)改變的變量,CHANGING 接會(huì)改變值的變量但實(shí)際上 USING 之后的參數(shù)在子程序中也可將值改變示例:SUM = 0.NUM1 = 100. NUM2=200.PERFORM ADD USING NUM1 NUM2 CHANGING SUM.WRITE: / NUM1, NUM2, SUM 39。.CALL FUNCTION 39。3. OBLIGATORY強(qiáng)制要求輸入,屏幕上會(huì)出現(xiàn)一個(gè) ,使用者必須要輸入才可以。 條件輸入選擇界面1. 自表中選取按下輸入項(xiàng)的右邊表選擇按鈕 ,調(diào)出表中數(shù)據(jù)項(xiàng),選取開(kāi)始和結(jié)束的范圍。 配合SELECT命令條件輸入完后要將符合條件的數(shù)據(jù)篩選出來(lái),可配合使用 SELECT 命令1. 使用WHERE 條件式示例:SELECTOPTIONS AIRLINE FOR SPFLICONNID.SELECT * FROM SPFLI WHERE CONNID IN AIRLINE. WRITE: / CONNID, FROMCITY, TOCITY.ENDSELECT.2. 使用 CHECK 參數(shù)示例:SELECTOPTIONS AIRLINE FOR SPFLICONNID.SELECT * FROM SPFLI. CHECK AIRLINE. WRITE: / CONNID, FROMCITY, TOCITY.ENDSELECT.3. 使用 IF … IN 語(yǔ)句示例:SELECTOPTIONS AIRLINE FOR SPFLICONNID.SELECT * FROM SPFLI. IF SPFLICONNID IN AIRLINE. WRITE: / CONNID, FROMCITY, TOCITY. ENDIFENDSELECT.amp。455539。 SELECTOPTIONS條件篩選檢查條件輸入界面命令,輸入條件后可配合 SELECT 命令自 TABLE 讀取符合條件的數(shù)據(jù),直接執(zhí)行或放入內(nèi)表中,條件有四個(gè)參數(shù):1. SIGN:I: 表篩選條件符合的資料E: 表篩選條件不符合的資料2. OPTION: 比較的條件符號(hào)EQ(等于),NE(不等于),GT(大于),LE(小于),CP(包含),NP(不包含)3. LOW: 最小值4. HIGH: 最大值語(yǔ)法:SELECTOPTIONS checkoption FOR tablefield示例:TABLES SPFLI.SELECTOPTIONS AIRLINE FOR SPFLICONNID.將條件的輸入值存放入 AIRLINE,篩選選擇為 SPFLI 表中的 CONNID 字段執(zhí)行結(jié)果:可直接輸入起始范圍或按下選擇界面,輸入完后按下左上角的執(zhí)行鍵 。1965020139。1. 調(diào)用已存在的Function Module(1). 在ABAP/4 開(kāi)發(fā)工作臺(tái)界面中選擇函數(shù)編制器(事務(wù)碼SE37)可見(jiàn)以下界面:(2). 選擇菜單“Utility”中的“Find”(快捷鍵Ctrl+F)中輸入要尋找的函數(shù)模塊名稱,如輸入 STRING*,為找出前五個(gè)字符為 STRING 的函數(shù)模塊:(3). 輸入后按下左上的“Execute”按鈕 ,可見(jiàn)以下界面:(4). 選擇要查詢或修改的函數(shù)名稱,如選擇 STRING_LENGTH,如要查詢可選擇“Display”按鈕,可見(jiàn)函數(shù)模塊之各項(xiàng)參數(shù)設(shè)定:1.Import: 傳入的參數(shù)名稱, 但實(shí)際在程序中使用時(shí)剛好與Export 相顛們2.Export: 傳回的參數(shù)名稱, 程序中變成 Import 的使用3.Changing:使用Call By Value and Return Result 方法的參數(shù)4.Tables: 使用的內(nèi)表參數(shù)5.Exceptions: 錯(cuò)誤處理參數(shù)如 STRING_LENGTH 為一傳回字符串長(zhǎng)度的函數(shù),其設(shè)定的參數(shù)如下:Import: String 傳入一個(gè)字符串?dāng)?shù)據(jù)Export: Length 傳回的字符串長(zhǎng)度值(5). 要查看程序內(nèi)容可按下“Source Code”,顯示其程序內(nèi)容如下:function string_length.length = strlen(string).endfunction.(6). 函數(shù)的調(diào)用語(yǔ)法:CALL FUNCTION moduleIMPORTING F1=a1….EXPORTING F1=a1….CHANGING F1=a1…TABLES F1=a1…EXCEPTIONS F1=a1…示例:DATA: TEXT(20), LEN TYPE I.TEXT = 39。.PERFORM (SUBNAME) IN PROGRAM (PROGNAME) IF FOUNDamp。, SYUNAME.ENDFORM.在程序中調(diào)用 HEADER 子程序PROGRAM YTEST1.PERFORM HEADER(FORMPOOL) IF FOUND.(3). 外部調(diào)用另一專存放子程序的程序文件語(yǔ)法:PERFORM (fsubr) [IN PROGRAM (fprog) [pass] [IF FOUND]示例:存放子程序的程序文件PROGRAM FORMPOOL.FORM SUB1. WRITE: / 39。, SYUNAME.WRITE: / 39。2. WRITE: / 39。 COMMIT WORK與ROLLBACK WORK要確定數(shù)據(jù)成功寫(xiě)入數(shù)據(jù)庫(kù),可使用 COMMIT WORK 命令,如:COMMIT WORK.相反的,如果反悔要復(fù)原,可使用 ROLLBACK WORK,可復(fù)原在上個(gè)COMMIT WORK命令之后的數(shù)據(jù),如:ROLLBACK WORK.amp。3405192039。.WACOMPANY = 39。3405192039。.APPEND ITAB.….INSERT SPFLI FROM TABLE ITABACCEPTING DUPLICATE KEY.amp。.INSERT SPFLI VALUES WA.將 ITAB 數(shù)據(jù)加入 SPFLI 中,也可寫(xiě)成 INSERT SPFLI FROM ITAB.SPFLINO = 39。CHUNGLI39。452617439。 計(jì)算數(shù)值字段總和語(yǔ)法:SUM計(jì)算得總和存在工作區(qū)中,但只能存在 LOOP 語(yǔ)句中示例:LOOP AT ITAB INTO LINE. SUM.ENDLOOP.WRITE: / LINECOL1, LINECOL2.LINECOL1 和 LINECOL2 存數(shù)值總和amp。 內(nèi)表行數(shù)據(jù)的讀取語(yǔ)法:LOOP AT itab [INTO wa] [FROM n1 TO n2] [WHERE condition]loop expressionENDLOOP.根據(jù)設(shè)定的范圍選取行記錄,讀完后自動(dòng)移往下一行示例:LOOP AT ITAB INTO LINE WHERE COL1 100. WRITE: / SYTABIX, LINECOL1.ENDLOOP.僅讀取 COL1 100 的行amp。ABC39。 無(wú)窮循環(huán)DO .Statement BlockENDDO.無(wú)窮循環(huán)必須配合 EXIT 語(yǔ)句來(lái)執(zhí)行 處理內(nèi)表amp。 循環(huán)語(yǔ)句語(yǔ)法:DO [n TIMES] [VARYING f FROM start NEXT end [RANGE range]].循環(huán)塊ENDDO.示例1:DO 2 TIMES. WRITE / 39。A39。ABCDEFGHIJ39。12339。.HOURS = (T2 T1) / 3600. 計(jì)算有幾小時(shí)MINUTES = (T2 – T1) / 60. 計(jì)算幾分鐘amp。如 39。, TARGET(10).WRITE (NAME) TO TARGET.WRITE / TARGET. 屏幕可印出 LILY (NAME的值是SOURCE,SOURCE的值是LILY)執(zhí)行結(jié)果:LILYamp。LULU39。.MOVE F1+3(5) TO F2+2. 自第4個(gè)位置開(kāi)始取出5個(gè)字符, 從F2的第三個(gè)位置開(kāi)始替換WRITE / F2. F2的內(nèi)容會(huì)變成12DEF執(zhí)行結(jié)果:12DEFamp。CHER39。, FLAG2 VALUE 39。Alarm Icon:39。 產(chǎn)生空白列產(chǎn)生n個(gè)空白列語(yǔ)法:SKIP [n]示例:WRITE 39。__:__:__39。, TEXT(10) VALUE 39。COMPANY:39。,BIRTH_DAY TYPE D VALUE 39。 TYPE聲明用來(lái)指定數(shù)據(jù)類型或聲明自定數(shù)據(jù)類型示例:TYPES: BEGIN OF MYLIST, NAME(10) TYPE C, NUMBER TYPE I, END OF MYLIST.DATA LIST TYPE MYLIST.amp。時(shí)間數(shù)據(jù),格式為HHMMSSX1165535字節(jié)X39。 數(shù)據(jù)類型ABAP/4的數(shù)據(jù)類型可分成:類型長(zhǎng)度范圍初始值說(shuō)明C1165535字節(jié)空格字符串?dāng)?shù)據(jù),如39。 使用ABAP/4編輯器撰寫(xiě)程序1. ABAP/4編輯器界面如下(事務(wù)碼SE38):2. 輸入程序名稱,如果是新程序,按下“創(chuàng)建”,如果修改已存在程序,則按下“修改”或F6鍵。 簡(jiǎn)介ABAP/4(Advanced Business Application Programming) 是 SAP/R3 目前唯一的系統(tǒng)開(kāi)發(fā)工具,屬 4GL(第四代語(yǔ)言),語(yǔ)法比較近似 Visual Basic 或 JAVA,和傳統(tǒng)的第三代語(yǔ)言,如C、PASCAL有很大不同,在程序模塊(Program Structure Module)可分以下三個(gè)部分:1. 過(guò)程塊內(nèi)的順序編碼與一般語(yǔ)言語(yǔ)法近似,如IF,WHILE等,但并沒(méi)有 GOTO 語(yǔ)法2. 報(bào)表調(diào)用一個(gè)獨(dú)立的事件(Depending Event),讀取數(shù)據(jù)庫(kù)產(chǎn)生數(shù)據(jù)列表3. 對(duì)話框屏幕參數(shù)輸入的對(duì)話框,專門處理數(shù)據(jù)庫(kù)讀取或更改的事務(wù)過(guò)程amp。4. 選擇開(kāi)發(fā)類開(kāi)發(fā)類:用于同一系統(tǒng)中各個(gè)程序,如果不屬任一類,可使用 $TMP5. 撰寫(xiě)源代碼 REPORT之后接的是程序名稱,WRITE 是顯示的意思,會(huì)將所接的字符串在屏幕上顯示,注意每一行最后要有一個(gè)39。0000000039。 變量聲明變量聲明包含 name, type, length 和 structure 四個(gè)部分,使用 DATA 命令,如DATA: S1 TYPE I, SUM TYPE I.amp。 DATA聲明語(yǔ)法:DATA f [length] type [value] [decimals]f:變量名稱,最長(zhǎng)30個(gè)字符,不可含有 + . , : ( ) 等字符lengthtype:數(shù)據(jù)類型及長(zhǎng)度,如LINE(20) TYPE C. MYNAME LIKE SYUNAME.value:初值decimals:小數(shù)位數(shù)示例:DATA: COUNTER TYPE P VALUE 1, FLAG TYPE C VALUE IS INITIAL, WEIGHT TYPE P DECIMALS 2 VALUE 39。 STATICS聲明聲明的變量?jī)H在目前的程序中使用,結(jié)束后會(huì)自動(dòng)釋放語(yǔ)法:STATICS c [length] type [value] [decimals]amp。First Line39。 指定顯示格式語(yǔ)法:WRITE 數(shù)據(jù)項(xiàng) 顯示格式參數(shù)顯示格式參數(shù):LEFTJUSTIFIED 數(shù)據(jù)靠左顯示CENTERED 數(shù)據(jù)靠中間顯示RIGHTJUSTIFIED 數(shù)據(jù)靠右顯示UNDER g 在數(shù)據(jù)項(xiàng)g的 X 軸開(kāi)始坐標(biāo)顯示NOGAP 緊接著顯示,不留空格USING EDIT MASK m 使用內(nèi)嵌字符顯示,如 11:20:30USING NO EDIT MASK 不使用內(nèi)嵌字符NOZERO 數(shù)字前面 0 的部分不顯示NOSIGN 不顯示正負(fù)號(hào)DECIMALS d 顯示d位小數(shù)字?jǐn)?shù)EXPONENT e F(浮點(diǎn)數(shù)) exponent 的值ROUND r 四舍五入至小數(shù)位數(shù)下 r 位CURRENCY c 幣別顯示DD/MM/YY 日期顯示格式MM/DD/YY 日期顯示格式DD/MM/YYYY 日期顯示格式MM/DD/YYYY 日期顯示格式DDMMYY 日期顯示格式MMDDYY 日期顯示格式Y(jié)YMMDD 日期顯示格式示例1:DATA: X TYPE I VALUE 39。, A(5) VALUE 39。PASS239。PASS139。CHECK FLAG 1:39。ABCDEFGHIJ39。, LASTNAME(10) VALUE 39。而 NAMEE_MAIL 則不變執(zhí)行結(jié)果:LULU C