SAP-ABAP-實用培訓(xùn)教程_第1頁
SAP-ABAP-實用培訓(xùn)教程_第2頁
SAP-ABAP-實用培訓(xùn)教程_第3頁
SAP-ABAP-實用培訓(xùn)教程_第4頁
SAP-ABAP-實用培訓(xùn)教程_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、 SAPSAP基本知識培訓(xùn)基本知識培訓(xùn)-ABAP-ABAP培訓(xùn)內(nèi)容培訓(xùn)內(nèi)容ABAP簡介1ABAP基礎(chǔ)2ALV報表 3Function4Smartforms5Enhancement6BDC7ABAPABAP簡介簡介ABAPABAP簡介簡介ABAPABAP簡介簡介ABAPABAP簡介簡介謝謝!謝謝!ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)客戶端客戶端物料物料工廠工廠調(diào)度員調(diào)度員操作人操作人日期日期MANDTMATNRWERKSFEVOR自定義BLDATABAP基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)謝謝!謝謝!ABAPABAP基礎(chǔ)基礎(chǔ)16進位數(shù)X001-65535Byte1X時

2、間數(shù)據(jù), 格式為HHMMSS0000006Byte6TPacked 數(shù), 用在小數(shù)點數(shù)01-16Byte8P數(shù)值0001-65535Byte1N整數(shù)0-231至231-14I浮點數(shù)08Byte8F日期數(shù)據(jù), 格式為YYYYMMDD000000008Byte8D字符串?dāng)?shù)據(jù), 如ProgramSpace1-65535Byte1CDescriptionInitial ValueRangeLengthTypeABAPABAP基礎(chǔ)基礎(chǔ)名稱作用SPACE空白字符串SY-SUBRC系統(tǒng)執(zhí)行返回值,0表示執(zhí)行成功SY-UNAME登陸帳號名稱SY-DATUM系統(tǒng)日期SY-UZEIT系統(tǒng)時間SY-TCODE目前的

3、事務(wù)代碼ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)謝謝!謝謝!ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)符號功能* 乘冪* 乘/ 除+ 加- 減DIV 整數(shù)除法MOD余數(shù)除法ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)批量重復(fù)操作的時候,可以定義sap宏來進行操作語法:DEFINE . . &1 . &9 . END-OF-DEFINITION.DATA: x TYPE i

4、, y TYPE i, l TYPE i. DEFINE write_frame. x = sy-colno. y = sy-linno. WRITE: | NO-GAP, &1 NO-GAP, | NO-GAP. l = sy-colno - x. y = y - 1. SKIP TO LINE y. POSITION x. ULINE AT x(l). y = y + 2. SKIP TO LINE y. POSITION x. ULINE AT x(l). y = y - 1. x = sy-colno. SKIP TO LINE y. POSITION x. END-OF-DE

5、FINITION. SKIP. write_frame In a frame!. 謝謝!謝謝!結(jié)語結(jié)語ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)實例:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT * FROM SPFLI WHERE CONNID IN AIRLINE.WRITE: / SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO. ENDSELECT.實例:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT * FROM SPFLI.CH

6、ECK AIRLINE.WRITE: / SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO.ENDSELECT.實例:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT * FROM SPFLI.IF SPFLI-CONNID IN AIRLINE.WRITE: / SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO.ENDIF.ENDSELECT. ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)語法語法: WRITE : WRITE 資料項

7、資料項 顯示格式參數(shù)顯示格式參數(shù): : LEFT-JUSTIFIED LEFT-JUSTIFIED 資料靠左顯示資料靠左顯示 CENTERED CENTERED 資料靠中間顯示資料靠中間顯示 RIGHT-JUSTIFIED RIGHT-JUSTIFIED 資料靠右顯示資料靠右顯示 UNDER UNDER 在資料項在資料項的的X X軸開始坐標(biāo)顯示軸開始坐標(biāo)顯示 NO-GAP NO-GAP 緊接著顯示緊接著顯示, , 不留空格不留空格 USING EDIT MASK USING EDIT MASK 使用內(nèi)嵌字符顯示使用內(nèi)嵌字符顯示, , 如如 11:20:3011:20:30 USING NO E

8、DIT MASK USING NO EDIT MASK 不使用內(nèi)嵌字符不使用內(nèi)嵌字符 NO-ZERO NO-ZERO 數(shù)字前面數(shù)字前面0 0 的部分不顯示的部分不顯示 NO-SIGN NO-SIGN 不顯示正負(fù)號不顯示正負(fù)號 DECIMALS DECIMALS 顯示顯示 d d 位小數(shù)字?jǐn)?shù)位小數(shù)字?jǐn)?shù) EXPONENT F(EXPONENT F(浮點數(shù)浮點數(shù)) )的科學(xué)計數(shù)法表示的科學(xué)計數(shù)法表示 ROUND ROUND 四舍五入至小數(shù)位數(shù)下四舍五入至小數(shù)位數(shù)下 r r 位位 CURRENCY CURRENCY 幣別顯示幣別顯示 DD/MM/YY DD/MM/YY 日期顯示格式日期顯示格式ABAP

9、ABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)ABAPABAP基礎(chǔ)基礎(chǔ)謝謝!謝謝!結(jié)語結(jié)語ABAPABAP基礎(chǔ)基礎(chǔ)n內(nèi)表 定義內(nèi)表ABAPABAP基礎(chǔ)基礎(chǔ)n內(nèi)表 APPEND指令A(yù)BAPABAP基礎(chǔ)基礎(chǔ)n內(nèi)表 COLLECT指令A(yù)BAPABAP基礎(chǔ)基礎(chǔ) Insert Line在指定的內(nèi)表位置之前插入新數(shù)據(jù)語法: INSERT INTO INITIAL LINE INTO INDEX 插入另一Internal Table元素語法: INSERT LINES OF FROM TO INTO INDEX 將中自至的范圍的數(shù)據(jù)插入至中, 位置在 之前。n內(nèi)表 INSERT指令A(yù)BAPABAP基礎(chǔ)基礎(chǔ)循環(huán)讀取

10、Internal Table元素數(shù)據(jù)語法: LOOP AT INTO FROM TO WHERE ENDLOOP.根據(jù)設(shè)定的范圍選取數(shù)據(jù), 讀完后自動移往下一筆。讀取Internal Table指定位置的元素語法: READ TABLE INTO INDEX 自指定位置 讀取元素數(shù)據(jù)。根據(jù)字段內(nèi)容尋找語法: READ TABLE INTO COMPARING .n內(nèi)表 讀取內(nèi)表數(shù)據(jù)ABAPABAP基礎(chǔ)基礎(chǔ) 更新數(shù)據(jù)內(nèi)容語法: MODIFY FROM INDEX TRANSPORTING WHERE TRANSPORTING . : 指定更新的字段名稱。 Delete Lines刪除Intern

11、al Table 的數(shù)據(jù)語法: DELETE INDEX 加上刪除條件:DELETE FROM TO WHERE n內(nèi)表 修改內(nèi)表數(shù)據(jù)ABAPABAP基礎(chǔ)基礎(chǔ)內(nèi)表數(shù)據(jù)排序語法: SORT BY . : 可分成遞減(DESCENDING)和遞增(ASCENDING)。 : 為指定的字段 。計算數(shù)值字段總和語法: SUMSUM只能在 LOOP 中使用,計算所得總和存在工作區(qū)中。REFRESH 使用在有 HEADER LINE 的 Internal Table中, 清除所有元素CLEAR 使用在沒有 HEADER LINE 的 Internal Table中, 清除所有元素FREE 釋放(Relea

12、se) Internal Table所占的內(nèi)存空間, 用在 REFRESH 和 CLEAR指令之后n內(nèi)表 內(nèi)表操作謝謝!謝謝!結(jié)語結(jié)語ABAPABAP基礎(chǔ)基礎(chǔ)自數(shù)據(jù)庫讀取記錄語法: SELECT DISTINCT FROM INTO WHERE GROUP BY ORDER BY 加上DISTINCT會自動去除重復(fù)的記錄。以循環(huán)方式讀取所有記錄(這種方法效率不高,不建議使用) 語法: SELECT * ENDSELECT.讀取單筆記錄語法:SELECT SINGLE * FROM WHERE.將讀取的記錄存放至指定的工作區(qū)語法: SELECT INTO WHERE 將讀取的數(shù)據(jù)寫入內(nèi)表中 m語

13、法: SELECT INTO TABLE WHERE 語法: SELECT INTO TABLE PACKAGE SIZE SELECT UP TO ROWS INTO TABLE 一次讀取 筆記錄至 中n數(shù)據(jù)庫指令SELECT 指令 ABAPABAP基礎(chǔ)基礎(chǔ)條件敘述語法: WHERE (1).BETWEEN AND 在 至 之間的條件范圍 (2).LIKE 表示條件包含的字符串 _ : 表示一個字符 % : 表示一個字符串 (3).IN (.) 包含在 的條件ORDER BY 敘述根據(jù)關(guān)鍵字排序 (1). .ORDER BY PRIMARY KEY.根據(jù)指定的字段順序排序 (2)ORDER

14、BY DESCENDING DESCENDING/不建議用ORDER語句句關(guān)聯(lián)多個表查詢數(shù)據(jù)語法: SELECT AAF1 AAF2 BBF1 BBF2 CCF1 CCF2 INTO CORRESPONDING FIELDS OF TABLE ITAB_NAME(INTO CORRESPONDING FIELDS OF TABLE ITAB_NAME(INTO CORRESPONDING FIELDS OF TABLE ITAB_NAME表示按匹配數(shù)據(jù)字段保存進去表示按匹配數(shù)據(jù)字段保存進去) ) FROM TABLE1 AS A INNER JOIN TABLE2 AS B ON AAF1 =

15、 BBF1 AND AAF2 = BBF2 INNER JOIN TABLE3n數(shù)據(jù)庫指令SELECT 指令 ABAPABAP基礎(chǔ)基礎(chǔ) 自工作區(qū)加入一筆記錄至數(shù)據(jù)庫語法: INSERT INTO VALUES 自內(nèi)表加入一筆記錄至數(shù)據(jù)庫語法: INSERT FROM TABLE ACCEPTING DUPLICATE KEY將 中非 NULL的數(shù)據(jù)加入 中。 ACCEPTING DUPLICATE KEY檢查是否有關(guān)鍵字重復(fù)的記錄, 若有則此關(guān)鍵字重復(fù)的記錄不插入。n數(shù)據(jù)庫指令I(lǐng)NSERT 指令 ABAPABAP基礎(chǔ)基礎(chǔ) 使用Primary Key更新已存在的記錄內(nèi)容語法: UPDATE FR

16、OM 使用條件式更新已存在的記錄內(nèi)容語法: UPDATE SET = WHERE 根據(jù)條件式更新符合條件式的記錄n數(shù)據(jù)庫指令UPDATE 指令 ABAPABAP基礎(chǔ)基礎(chǔ)根據(jù) Primary Key 尋找數(shù)據(jù)文件中符合的記錄, 若找到則更新, 若找不到則新增記錄語法: MODIFY FROM Example: WA-NO = 34051920. WA-COMPANY = DELTA. MODIFY SPFLI FROM WA.n數(shù)據(jù)庫指令MODIFY 指令 ABAPABAP基礎(chǔ)基礎(chǔ) 刪除數(shù)據(jù)文件的記錄使用 Primary Key語法: DELETE FROM 使用條件式語法: DELETE FR

17、OM WHERE 根據(jù)條件式刪除符合條件式的記錄n數(shù)據(jù)庫指令DELETE 指令 ABAPABAP基礎(chǔ)基礎(chǔ)要確定數(shù)據(jù)成功寫入數(shù)據(jù)庫, 可使用COMMIT WORK 指令, 如: COMMIT WORK.相反的, 如果反悔要復(fù)原, 可使用 ROLLBACK WORK, 可復(fù)原在上個COMMIT WORK 指令之后更新的數(shù)據(jù), 如: ROLLBACK WORK.n數(shù)據(jù)庫指令COMMIT WORK 與 ROLLBACK WORK謝謝!謝謝!結(jié)語結(jié)語ABAPABAP基礎(chǔ)基礎(chǔ)= 或 EQ 等于 或 或 NE 不等于 或 LT 小于 或 GT 大于= 或 GE 大于等于AND 且OR 或NOT 非n邏輯控制

18、指令比較符號ABAPABAP基礎(chǔ)基礎(chǔ)IF 敘述語法: IF . ELSEIF . ELSEIF . . ELSE. ENDIF. (1).在每個判斷敘述之后要加上 .。 (2).在巢狀循環(huán)之中無法使用 ELSE 敘述, ELSE 敘述屬 IF 敘述CASE 敘述語法: CASE . WHEN . WHEN . . WHEN OTHERS. ENDCASE.n邏輯控制指令條件敘述ABAPABAP基礎(chǔ)基礎(chǔ) 計次循環(huán)語法: DO . VARYING dobj FROM dobj1 NEXT dobj2 RANGE range. statement_block ENDDO. 條件循環(huán)語法: WHILE

19、 . ENDWHILEn邏輯控制指令循環(huán)敘述ABAPABAP基礎(chǔ)基礎(chǔ) CONTINUE:跳至循環(huán)的下一次 CHECK CHECK 之后條件成立才繼續(xù)往下執(zhí)行循環(huán),否則調(diào)到下一次循環(huán)中。 EXIT:結(jié)束循環(huán)敘述 無窮循環(huán)。DO . ENDDO.無窮循環(huán)必須配合 EXIT 敘述來執(zhí)行。n邏輯控制指令循環(huán)控制敘述ABAPABAP基礎(chǔ)基礎(chǔ) 在ABAP/4中可以使用 Include 加載另一個程序, 通常用于共享數(shù)據(jù)項的定義,與C 中Include header file 的做法很類似。語法: INCLUDE Global 變量定義應(yīng)用。語法: DATA: BEGIN OF COMMON PART ,

20、END OF COMMON PART .此常使用在 Include 的檔案中 n程序模塊簡介Include ProgramABAPABAP基礎(chǔ)基礎(chǔ) 在ABAP/4中子程序的調(diào)用可分成內(nèi)部調(diào)用和外部調(diào)用, 前者編寫在程序中, 后者存在另一程序中, 通常為專存放子程序的公用程序集,可提供結(jié)不同的子程序調(diào)用。 Subroutine 的定義 FORM . ENDFORM.n程序模塊簡介Subroutine ProcedureABAPABAP基礎(chǔ)基礎(chǔ)Call By Reference:(引用調(diào)用傳參數(shù)時將數(shù)據(jù)的存放地址傳至參數(shù)中, 也就是子程序中的參數(shù)變量與外部實際變量共享地址內(nèi)的值, 又稱為Call

21、By Address, 若在子程序中地址中的值改變了, 外部實際變量的值也會跟著改變。語法: FORM USING CHANGING PERFORM USING CHANGING Using 之后接在子程序中不會改變的變量, CHANGING接會改變值的變量但實際上USING之后的參數(shù)在子程序中也可將值改變。Call By Value(值調(diào)用傳參數(shù)時將數(shù)據(jù)的值復(fù)制一份至另一地址中, 所以在子程序中參數(shù)變量值改變, 并不會影響外部實際變數(shù)的值.語法: FORM USING VALUE() CHANGING 使用 VALUE()表示只使用的值但不改變的值PERFORM USING Call By

22、Value and Return Result傳入?yún)?shù)值的方式同Call By Value相同, 但在子程序結(jié)束執(zhí)行時會將傳入的參數(shù)值復(fù)制一份傳回給外部實際變數(shù)。語法: FORM CHANGING VALUE() PERFORM CHANGING n程序模塊簡介參數(shù)值的傳遞ABAPABAP基礎(chǔ)基礎(chǔ) CHECK CHECK 之后條件成立才繼續(xù)向下執(zhí)行子程序 EXIT強迫結(jié)束子程序執(zhí)行, 返回上一層程序敘述。n程序模塊簡介Subroutine 的控制ABAPABAP基礎(chǔ)基礎(chǔ) INITIALIZATION在選擇屏幕出現(xiàn)之前執(zhí)行,在這里可以給選擇屏幕中的字段和備注中的字段賦值 AT SELECTION

23、-SCREEN在這個事件里響應(yīng)的是屏幕上選擇條件中的事件 START-OF-SELECTION報表程序必須執(zhí)行的事件,在進入第二屏幕之前觸發(fā)。 END-OF-SELECTION選擇屏幕結(jié)束處理。n事件介紹謝謝!謝謝!結(jié)語結(jié)語ALVALV什么是什么是ALVALV在在R/3 4.6CR/3 4.6C之前之前ALVALV列表全稱為列表全稱為ABAP List ViewerABAP List Viewer,在其,在其后的版本中,已經(jīng)更名為后的版本中,已經(jīng)更名為SAP List ViewerSAP List Viewer。簡單來說就是。簡單來說就是一種一種SAPSAP列表輸出的方式。在列表輸出的方式。在

24、SAPSAP系統(tǒng)中,系統(tǒng)中,ALVALV是以表格控是以表格控件的形式出現(xiàn)在用戶屏幕中實現(xiàn)的,具體還有兩種情況:件的形式出現(xiàn)在用戶屏幕中實現(xiàn)的,具體還有兩種情況:作為整個屏幕輸出,是唯一的屏幕元素。作為整個屏幕輸出,是唯一的屏幕元素。作為屏幕元素之一與其他屏幕元素結(jié)合出現(xiàn)。作為屏幕元素之一與其他屏幕元素結(jié)合出現(xiàn)。ALVALV的特點的特點ALVALV列表是列表是SAPSAP系統(tǒng)中新的列表標(biāo)準(zhǔn),可以在系統(tǒng)中新的列表標(biāo)準(zhǔn),可以在ABAPABAP程序或者程序或者SAP QuerySAP Query等報表中輸?shù)葓蟊碇休敵?,除了傳統(tǒng)列表出,除了傳統(tǒng)列表輸出時可以顯示數(shù)據(jù)和少量的交互功能(退出,下翻頁等)之外

25、,還提供了大量的其輸出時可以顯示數(shù)據(jù)和少量的交互功能(退出,下翻頁等)之外,還提供了大量的其他交互功能,包括他交互功能,包括排序,匯總等。相對于排序,匯總等。相對于SAPSAP的傳統(tǒng)列表輸出形式,的傳統(tǒng)列表輸出形式,ALVALV列表有以下優(yōu)點:列表有以下優(yōu)點:ALVALV是獨立的二進制軟件元素。是獨立的二進制軟件元素。安裝在系統(tǒng)的前臺(即安裝在系統(tǒng)的前臺(即SAPGUISAPGUI中),將列表處理功能從應(yīng)用服務(wù)器移至顯示層,中),將列表處理功能從應(yīng)用服務(wù)器移至顯示層,因而因而提高了相應(yīng)速度。提高了相應(yīng)速度。可以通過可以通過ABAP ObjectsABAP Objects中的系統(tǒng)全局類實現(xiàn)。中的

26、系統(tǒng)全局類實現(xiàn)。nALV列表概述ALVALV 目前為止,最常用的ALV有以下兩種類型: LIST型與GRID型 LISTLIST型型ALVALV列表列表LIST型的ALV列表與傳統(tǒng)WRITE輸出的列表樣式更為相近,只是除標(biāo)準(zhǔn)菜單欄之外,在工具欄上還有許多功能按鈕。 GRIDGRID型型ALVALV列表列表GRID型ALV列表比較類似EXCEL的樣子,與LIST一致的是它也有很多功能按鈕。n兩種簡單的ALV列表類型ALVALV ALV列表可以比較自由的調(diào)整欄位的寬度,直接通過拖拽來調(diào)整欄位的順序,通過使用Optimum width功能自動優(yōu)化欄位寬度為最優(yōu)寬度這些基本功能 .nALV列表最常用的

27、功能顯示明細(xì)排序篩選列匯總列打印列表使用EXCEL打開使用WORD打開下載至文件使用SAP郵寄圖表和ABC分析表改變布局最終用戶文檔ALVALV LISTLIST列表型顯示函數(shù)列表型顯示函數(shù)REUSE_ALV_LIST_DISPLAY: 輸出LIST型列表REUSE_ALV_POPUP_TO_SELECT:在彈出的對話框中顯示LIST列表 GRIDGRID列表型顯示函數(shù)列表型顯示函數(shù)REUSE_ALV_GRID_DISPLAYREUSE_ALV_GRID_DISPLAY:輸出:輸出GRIDGRID型列表型列表 nALV常用函數(shù)介紹ALVALV調(diào)用ALV的函數(shù),除了輸出使用的內(nèi)表是之外,還有兩個

28、部分是必需確認(rèn)的列欄位屬性和布局屬性。顧名思義列欄位屬性就是設(shè)置輸出中列的位置,列的參照,列的標(biāo)題等信息;同樣布局屬性是設(shè)置輸出ALV列表的整體布局的屬性。之前的示例中,沒有調(diào)用列欄位屬性是因為輸出表是某個系統(tǒng)結(jié)構(gòu)表,直接輸入系統(tǒng)結(jié)構(gòu)名函數(shù)可參照此結(jié)構(gòu)創(chuàng)建列屬性,從而輸出。沒有調(diào)用布局屬性時,系統(tǒng)按默認(rèn)布局輸出,不做任何調(diào)整。針對這兩個屬性對應(yīng)的輸入,下面分別對IT_FIELDCAT與IT_LAYOUT的參數(shù)值做簡單介紹,學(xué)員可據(jù)此進行練習(xí)。IT_FIELDCATIT_FIELDCAT中常用參數(shù),函數(shù)中,中常用參數(shù),函數(shù)中,IT_FIELDCATIT_FIELDCAT參照參照SLIS_T_FI

29、ELDCAT_ALVSLIS_T_FIELDCAT_ALV,IT_LAYOUTIT_LAYOUT常用參數(shù),函數(shù)中常用參數(shù),函數(shù)中IT_LAYOUTIT_LAYOUT參照參照SLIS_LAYOUT_ALVSLIS_LAYOUT_ALV,nALV常用參數(shù)ALVALVALV列表包含一些預(yù)定義的功能,之前講過的篩選,匯總等都是ALV列表設(shè)置好的標(biāo)準(zhǔn)功能。ALV列表如果需要打印表頭是否能處理呢?如果需要在標(biāo)準(zhǔn)的ALV中增加功能是否能處理呢?答案當(dāng)然是可以的。ALVALV輸出標(biāo)題函數(shù),輸出標(biāo)題函數(shù), REUSE_ALV_COMMENTARY_WRITE: 是在ALV中輸出表頭的函數(shù),應(yīng)在ALV的TOP-O

30、P-PAGE事件中調(diào)用。 nALV事件謝謝!謝謝!結(jié)語結(jié)語FunctionFunctionFunction中文翻譯為功能模塊是存儲在中央庫內(nèi)的特殊外部子程序. R/3系統(tǒng)提供大量預(yù)定義的功能模塊,可以從ABAP/4程序中進行調(diào)用,而且可以創(chuàng)建自己的功能模塊。每個功能模塊都有其獨立的功能,調(diào)用功能模塊時通過輸入輸出參數(shù)進行數(shù)據(jù)的傳遞實現(xiàn)其本身的功能.n Function的基本組件 FunctionFunction輸入?yún)?shù):用于將數(shù)據(jù)從調(diào)用程序傳遞到功能模塊; 輸出參數(shù):用于將數(shù)據(jù)從功能模塊傳遞回調(diào)用程序; 更改參數(shù):既是輸入?yún)?shù)又是輸出參數(shù),更改傳遞給功能模塊的值,并將其返回給調(diào)用程序; 表格參

31、數(shù):是通過內(nèi)表進行參數(shù)傳遞,處理方式與更改參數(shù)一樣; 例外:用于處理功能模塊中可能發(fā)生錯誤的情況,調(diào)用程序檢查是否發(fā)生了錯誤,然后采取相應(yīng)的措施. n Function簡介FunctionFunction使用語句:CALL FUNCTION EXPORTING f1 = a1 . fn = an IMPORTING f1 = a1 . fn = an CHANGING f1 = a1 . fn = an TABLES f1 = a1 . fn = an EXCEPTIONS e1 = r1 . en = rn OTHERS = ro.nFunction的調(diào)用 使用TCODE:SE37nFunc

32、tion的創(chuàng)建 創(chuàng)建實例:創(chuàng)建一個取物料描述的function。輸入物料代碼,輸出物料描述,最后寫report調(diào)用。需要支持批量查詢。PS:物料表MARA,物料描述表MAKT。nFunction的創(chuàng)建 謝謝!謝謝!結(jié)語結(jié)語SMARTFORM 當(dāng)需要從系統(tǒng)中打印出一張單據(jù)的時候,需要用到form這種開發(fā)工具。例如:系統(tǒng)中針對某一筆交易開了發(fā)票,那客戶付款后也應(yīng)該收到一張收款證明,寫明購買的商品信息以及價格信息,購買日期等,這樣雙方都對這筆交易的歷史保留了一定的依據(jù),那這張給客戶的紙制發(fā)票就是取了系統(tǒng)中的交易數(shù)據(jù)打印出來的發(fā)票.nSmartform簡介SMARTFORMnSmartform界面SM

33、ARTFORM 制作Smartform時是在form編輯器里面設(shè)置,我們在編輯器里用到的工具分為三部分: 最左邊是導(dǎo)航樹:導(dǎo)航樹里面包含了設(shè)計smartform時用到的所有元素,包括頁,窗口,文本等; 中間是主屏幕,在這個屏幕里,被選中的元素都會有對應(yīng)的幾個頁面去設(shè)置元素的屬性,例如可以設(shè)置窗口的寬度/高度等;最右邊是form畫板,在這里一般都會設(shè)置頁面的布局,如窗口的位置大小等,可以通過單擊工具欄的表格繪制器按鈕,設(shè)置form畫板的顯示/不顯示狀態(tài); 如果需要設(shè)置某個元素的屬性,可以在左邊的導(dǎo)航樹中選中該元素雙擊,中間的主屏幕中會出現(xiàn)該元素的屬性設(shè)置頁面;Form編輯器的組成SMARTFOR

34、M Smartform中所有的元素都在左邊的導(dǎo)航樹中以節(jié)點的形式表示; 子節(jié)點繼承上層節(jié)點的屬性,例如格式.如果一個節(jié)點沒有被執(zhí)行,那么它下面所有的子節(jié)點將都不被執(zhí)行.但是子節(jié)點是獨立的,它在父節(jié)點執(zhí)行完之后開始執(zhí)行; 如果一個節(jié)點包含有子節(jié)點,可以在左邊導(dǎo)航樹單擊三角形符號展開它的結(jié)構(gòu)看到子節(jié)點; 在最上層的節(jié)點中,有兩個默認(rèn)存在的節(jié)點:全局設(shè)置;頁和窗口. n導(dǎo)航樹SMARTFORM 菜單:工具-打印表格-SMRTFORMS-智能表格;(T-CODE:SMARTFORMS) 雙擊進入表格繪制器 輸入事務(wù)代碼:SMARTFORMS,點執(zhí)行按鈕進入表格繪制器; 輸入一個名稱,此名稱必須以Z/Y

35、開頭,點創(chuàng)建按鈕進入開發(fā)界面; 輸入一個短描述; 表格屬性-輸出選項:這里設(shè)置全局的表格屬性,例如紙張大小,默認(rèn)頁面的行間距,字間距等; 表格接口是用來定義輸入輸出參數(shù)的; 系統(tǒng)會自動創(chuàng)建一個PAGE,為這個PAGE修改容易識別的短描述; 一般屬性中設(shè)置PAGE的屬性; 在PAGE下面,系統(tǒng)自動創(chuàng)建了一個MAIN WINDOW; 如需創(chuàng)建其他窗口,可將光標(biāo)定位在PAGE上,右鍵-創(chuàng)建-窗口.n創(chuàng)建SMARTFORMS步驟SMARTFORM在窗口的輸出選項中可以設(shè)置窗口的一些屬性,如邊距,高度,寬度等;單擊工具欄中的按鈕表格繪制器,可以在彈出的窗口中,使用鼠標(biāo)拖動窗口,設(shè)置窗口布局,再次單擊按鈕

36、表格繪制器,可將繪制窗口暫時關(guān)閉,進行其他設(shè)置;在窗口下面創(chuàng)建一個模板:選中窗口,右鍵-創(chuàng)建-模板;為模板輸入一個短描述;單擊編輯按鈕,可以為行繪制列,需要幾列就繪制幾列;要添加行,點細(xì)節(jié)按鈕,插入一行,這里也可以設(shè)置列寬;模板下面創(chuàng)建一個文本,用來輸出內(nèi)容;文本的輸出選項中,可以設(shè)置此文本的內(nèi)容是在表格的第幾行、第幾列中輸出文本的一般屬性中可以輸入要輸入的內(nèi)容,如果是變量,可以在工具欄選擇按鈕,在左下角彈出的對話框中有所有的數(shù)據(jù)來源,選擇所要輸出的變量名,拖到文本中的相應(yīng)位置(變量輸出時要放在兩個&符號之間).nSMARTFORMS操作SMARTFORM 選中樣式按鈕 輸入一個以Z/

37、Y開頭的程序名稱,單擊創(chuàng)建按鈕; 進入Style編輯器,選中段落格式-右鍵-創(chuàng)建節(jié)點; 在彈出的對話框中輸入段落格式名,如P1,點確定; 給段落格式輸入一個短描述,然后就可以設(shè)置段落格式的屬性了; 在表頭數(shù)據(jù)標(biāo)準(zhǔn)設(shè)置選項頁的標(biāo)準(zhǔn)設(shè)置選擇一個已設(shè)置好的段落格式作為標(biāo)準(zhǔn)段落格式,該格式在SMARTFORMS中是被默認(rèn)引用的.即SMARTFORMS的表格屬性中選擇該樣式,則文本中的字體默認(rèn)使用樣式中的標(biāo)準(zhǔn)格式. 設(shè)置好之后保存并激活,此格式便可在Form中被調(diào)用; 字符格式的創(chuàng)建方法同段落格式.nSMARTFORMS樣式SMARTFORM 這個Function主要是用來取你要調(diào)用的Smartform

38、對應(yīng)的Function Module的名字然后賦值給FM_NAME,因為SMARTFORM對應(yīng)的Function Module名字很長,并且難以記憶;可以通過Call function SSF_FUNCTION_MODULE_NAME 獲取.獲取完后同樣以Call Function的方式調(diào)用已經(jīng)設(shè)計好的Smartform. Smartforms同F(xiàn)unction Module一樣有輸入?yún)?shù),輸出參數(shù),更改參數(shù),表格參數(shù),異常等支持同其它程序的交互.n調(diào)用SMARTFORMS謝謝!謝謝!結(jié)語結(jié)語Enhancement增強(enhancement)的概念其實很廣,SAP標(biāo)準(zhǔn)系統(tǒng)之上的所有二次開發(fā),

39、我們都可以理解為增強,做增強的目的就是標(biāo)準(zhǔn)的sap正常的業(yè)務(wù)系統(tǒng)不能滿足實際需求,所以我們在標(biāo)準(zhǔn)的系統(tǒng)基礎(chǔ)進行增加不同的功能來達到不同企業(yè)的要求,換句話說我們今天開發(fā)過程中所有的ADD-ON都可以說是增強開發(fā)。但作為開發(fā)人員所說的增強主要是標(biāo)準(zhǔn)系統(tǒng)事先預(yù)留好的接口,根據(jù)不同業(yè)務(wù)需求,進行開發(fā),我們稱為增強,又叫出口。nEnhancement介紹 Enhancement 出口就是一段程序執(zhí)行到最后必經(jīng)的一段程序。正常的業(yè)務(wù)系統(tǒng)不能滿足實際需求,這時可以在出口中增加一些功能,來達到要求,這也就是為什么它還叫增強。在Sap中出口就是標(biāo)準(zhǔn)程序最后要調(diào)用的一個函數(shù)或者功能模塊,這個函數(shù)或功能模塊的輸入已

40、經(jīng)由Sap定義好。 SAP目前有四種增強方式 1、 UserExit ; 2、 Ehancement exits; 3、 BADI; 4、 Enhancement Implementation 。nExits簡介EnhancementUserExit (基于源代碼的增強)是sap提供一個空代碼的子過程,在這個子過程中用戶可以添加自己的代碼,控制自己的需求。這類增強都需要修改sap的標(biāo)準(zhǔn)代碼,它們在發(fā)布的時候都是空的,集中在一些文件名倒數(shù)第二個字符為Z的包含程序中,由于在標(biāo)準(zhǔn)程序中,所以所有程序的全局?jǐn)?shù)據(jù)都可以使用,但同時系統(tǒng)升級時會被新版本覆蓋;這種源代碼增強和屏幕增強的說明可以從事務(wù)碼 spro 后臺配置中相關(guān)模塊的路徑里面找到;一般是以UserExit_打頭的子模塊。找到所要增強的的程序,查找UserExit關(guān)鍵字。n UserExit EnhancementEhancement exits (基于函數(shù)模塊的增強),用SMOD和CMOD維護;在SAP發(fā)布的版本中,使用Call customer-function xxx調(diào)用函數(shù)模塊的,所以你可以通過在程序中收cusomer

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論