SAP ABAP 点滴记录
*****************************************************************************************
系統(tǒng)字段篇——STRUCT:SYST(2007.09.24<U...>2007.10.11)
*****************************************************************************************
SY-SUBRC:語句執(zhí)行后的返回值,0表示成功
SY-DATUM:當(dāng)前服務(wù)器日期
SY-UZEIT:當(dāng)前服務(wù)器時間
SY-ULINE:255長度的水平線
SY-VLINE:垂直線
SY-INDEX:循環(huán)說執(zhí)行的次數(shù)
SY-TABIX:內(nèi)表循環(huán)的次數(shù)
SY-DYNNR:當(dāng)前Screen號
SY-MANDT:當(dāng)前登錄的Client號
SY-STEPL:返回當(dāng)前操作的屏幕行號(Table Control)
SY-LOOPC:當(dāng)前表格控件在屏幕中的總行數(shù)(Table Control)
SY-UCOMM:PAI所出發(fā)的功能代碼
SY-DYNNR:當(dāng)前屏幕號
SY-MSGID:Message Class
SY-MSGNR:Message Number
SY-MSGTY:Message Type
SY-MSGV1~4:Message Variant
SY-LINCT:REPROT語句中設(shè)定的LINE-COUNT
SY-LINSZ:REPROT語句中設(shè)定的LINE-SIZE
SY-SROWS:當(dāng)前窗口的列表行數(shù)
SY-SCOLS:當(dāng)前窗口的列表欄目數(shù)
SY-PAGNO:當(dāng)前頁的頁碼
SY-LINNO:當(dāng)前選定行的行號
SY-COLNO:當(dāng)前選定列的列號
SY-LSIND:當(dāng)前列表索引,第一級列表為1
SY-LILLI:選擇某行時光標行位置
SY-CUROW:選擇某行時光標列位置
*****************************************************************************************
Dynpro篇——SE80(2007.09.25<U...>2007.10.08)
*****************************************************************************************
1. 在PAI中,ok_code需要及時賦值給另外一個變量,并立即clear,隨后對新的那個變量來case
2. 屏幕調(diào)用
??? (1) SET SCREEN next_screen_number: 指定當(dāng)前屏幕的后續(xù)屏幕,在PAI中靜態(tài)指定的后續(xù)屏幕將暫時被覆蓋
??? (2) CALL SCREEN screen_number:掛起當(dāng)前屏幕,進入新的屏幕或事務(wù)(即插入新的屏幕流)。
????????? CALL TRANSACTION tcode????? 在新的屏幕中,通過LEAVE SCREEN TO SCREEN 0即可返回掛起的屏幕序列上
???? (3) LEAVE SCREEN:未完成當(dāng)前屏幕控制流就要轉(zhuǎn)入后續(xù)屏幕
??? (4) LEAVE TO SCREEN screen_number:未完成當(dāng)前屏幕即進入指定的屏幕或事務(wù)
???????? LEAVE TO TRANSACTION tcode
???? (5) SET SCREEN 0, LEAVE SCREEN或LEAVE TO SCREEN 0:終止當(dāng)前屏幕
3. MODULE module_name AT EXIT-COMMAND:只能在PAI中使用,會由于以"/E"開頭或者E型的function而觸發(fā)(一般就是Back、Exit、Cancel)
4. FIELD field_name MODULE module_name:可以對field執(zhí)行所指定的module
5. Table Control的數(shù)據(jù)源如果來自多張表則可以自定義一個work area
6. 要讓Table Control能夠擁有行選擇的能力,可以在導(dǎo)航中指定,需要work area中有一個沒有被選擇顯示的列
*****************************************************************************************
報表(1)——系統(tǒng)報表篇(2007.10.08)
*****************************************************************************************
1. 報表類型:SAP核心系統(tǒng)及定制過程中已經(jīng)存在的報表
???????????????? 使用ABAP開發(fā)的報表
???????????????? 使用其他系統(tǒng)工具(如SQP Query)開發(fā)的報表
2. Quick Viewer——SQVI:提供形式不固定的Adhoc報表(非日常性的業(yè)務(wù)報表),是SAP提供給用戶的最終系統(tǒng)中的一個簡易報表生成工具
??? (1) 每個系統(tǒng)用戶只能定義自己的QuickViews,其他系統(tǒng)用戶不能共享該列表。因為它不是SAP傳輸系統(tǒng)中的一個組件
3. SAP Query——SQ01:較為復(fù)雜,涉及到用戶組和功能區(qū)域。
??? (1) 開始查詢后,SAP系統(tǒng)內(nèi)部將根據(jù)Queryies中定義的列表字段自動生成一個內(nèi)部程序,該程序讀取數(shù)據(jù)源,處理并輸出數(shù)據(jù)
??? (2) SAP Query具有管理功能,主要指數(shù)據(jù)源和用戶組的分配,即設(shè)定功能區(qū)域和用戶組,并將功能區(qū)域分配給各個用戶組。其中功能區(qū)域代表查詢數(shù)據(jù)源,即數(shù)據(jù)庫表和其中的字段,往往參照邏輯數(shù)據(jù)庫生成;而一個系統(tǒng)用戶如果需要創(chuàng)建Queries,則該用戶必須隸屬于至少某一個由系統(tǒng)管理員預(yù)設(shè)定的用戶組,并可以使用屬于該用戶組的功能區(qū)域。一個SAP系統(tǒng)用戶可以使多個用戶組的成員,功能區(qū)域和用戶組是多對多的關(guān)系。Queries總是隸屬于特定的用戶組中特定的功能區(qū)域生成的,因而只有該用戶組內(nèi)部用戶才能訪問其中的Queries。
???????? 如果某用戶被分配置多個用戶組,則該用戶可以在用戶組之間切換。因為Queries總是與相應(yīng)的功能區(qū)域相關(guān),所以,如果兩個用戶組都包含同一個功能區(qū)域而且某授權(quán)用戶同時屬于這兩個用戶組,這該用戶可以將其中的Queries從一個用戶組拷貝至另外一個用戶組。
??? (3) SAP Query可以生成多種類型的列表:
????????? 基本列表:可以為單行或多行,多行的基本類表還可以進行壓縮
???????? 統(tǒng)計列表、排序列表:要求列表中至少包含一個數(shù)值字段,且數(shù)據(jù)行數(shù)可能被壓縮
????????? 局部列表:一個Query中包含多個局部列表,而在打印過程中可以單獨打印
??? (4) 不能有用戶提供執(zhí)行設(shè)計生成交互式列表,但在列表過程中提供一些標準的交互功能:如將生成列表傳遞至系統(tǒng)內(nèi)部或外部的其他工具(Excel、ABC Analysis等),并以圖形的形式或者以交互表格的形式顯示列表。
4. Quick Viewer和SAP Query的區(qū)別
??? (1) SAP Query可以創(chuàng)建基本、統(tǒng)計和排序等格式的列表;而QuckViewer只能創(chuàng)建基本列表,不包含統(tǒng)計、排序等交互性
??? (2) SAP Query可以被多個用戶共享,需要進行用戶組和功能區(qū)域的設(shè)置,并可以在系統(tǒng)間傳輸;而QuickViewer是具有用戶相關(guān)性的
*****************************************************************************************
報表(2)——報表設(shè)計概述篇(2007.10.10)
*****************************************************************************************
1. 報表事件:
??? INITIALIZATION:程序初始化,類似于C#中的窗體構(gòu)造函數(shù)
??? START-OF-SELECTION:選擇開始事件(默認事件),在選擇屏幕的處理結(jié)束后觸發(fā)
??? END-OF-SELECTION:選擇結(jié)束事件,在所有邏輯數(shù)據(jù)庫處理結(jié)束后觸發(fā),一般用于輸出列表
2. 選擇屏幕事件(在INITIALIZATION和START-OF-SELECTION之間觸發(fā)):
??? AT SELECTION-SCREEN OUTPUT:選擇屏幕的PBO事件
??? AT SELECTION-SCREEN ... :選擇屏幕的PAI事件,有多個附加項
3. 邏輯數(shù)據(jù)庫事件(在START-OF-SELECTION事件結(jié)束以后觸發(fā),用于選擇并整理數(shù)據(jù)):
??? GET node ... 選擇邏輯數(shù)據(jù)庫中當(dāng)前級別數(shù)據(jù)中的數(shù)據(jù)
??? GET node LATE 選擇邏輯數(shù)據(jù)庫中上一級別數(shù)據(jù)源中的數(shù)據(jù)
4. 列表事件(在所有報表過程事件和選擇屏幕事件結(jié)束之后,開始觸發(fā)列表事件)
??? TOP-OF-PAGE:頁眉,每個新頁面開始時觸發(fā)
??? END-OF-PAGE:頁腳,當(dāng)前頁面結(jié)束前觸發(fā)
??? AT-LINE-COMMAND:行選擇控制,當(dāng)用戶選擇某列表行時觸發(fā)
??? AT-USER-COMMAND:用戶交互控制
5. 一般報表的觸發(fā)過程:
??? (1) 1型程序開始時,LOAD-OF-PROGRAM觸發(fā),運行時環(huán)境將為該程序在應(yīng)用服務(wù)器中分配程序上下文以及相關(guān)內(nèi)存區(qū)域存儲內(nèi)表數(shù)據(jù)對象,接下來的程序流程將由ABAP運行時環(huán)境控制(ABAP處理器)
??? (2) INITIALIZATION事件觸發(fā)
??? (3) 如果有選擇屏幕,則在每次屏幕輸出之前觸發(fā)AT SELECTION-SCREEN OUTPUT,運行時環(huán)境將選擇屏幕發(fā)送至顯示服務(wù)器
????????? 如果用戶在選擇屏幕中輸入某些值后執(zhí)行某些功能,系統(tǒng)將觸發(fā)AT SELECTION-SCREEN事件,為用戶提示消息信息等。
???????? 整個過程由屏幕處理器和ABAP處理器交互處理,系統(tǒng)自動在其中進行切換
??? (4) 當(dāng)用戶按下Execute按鈕后,系統(tǒng)回收對程序的控制,觸發(fā)START-OF-SELECTION
??? (5) 如果有邏輯數(shù)據(jù)庫,則觸發(fā)GET和GET LATE。
??? (6) 最后將觸發(fā)END-OF-SELECTION事件,此后系統(tǒng)運行時環(huán)境將控制交給顯示服務(wù)器
??? (7) 列表輸出過程中將觸發(fā)TOP-OF-PAGE和END-OF-PAGE。當(dāng)用戶點擊Back返回選擇屏幕時,LOAD-OF-PROGRAM和INITIALIZATION不會觸發(fā)
??? (8) 如果列表存在交互事件,則會在滿足交互條件的時候觸發(fā)。
6. 事件塊的終止(以下語句除STOP外若存在于循環(huán)中,則僅跳出該循環(huán))
??? (1) STOP. 終止當(dāng)前事件塊并跳轉(zhuǎn)至END-OF-SELECTION;若在END-OF-SELECTION中有STOP則直接退出。
??? (2) EXIT. 離開所有事件塊并轉(zhuǎn)到列表輸出頁面(即EXIT之前已經(jīng)被輸出的內(nèi)容)
??? (3) CHECK. 如果CHECK條件為假,則轉(zhuǎn)到下一個事件塊
*****************************************************************************************
報表(3)——選擇屏幕篇(2007.10.10<!Q!>)
*****************************************************************************************
1. 屏幕參數(shù)
??? (1) INITIALIZATION事件處理之后,屏幕布局將被發(fā)送至顯示服務(wù)器,初始化的值將被傳送至同名字段
??? (2) PARAMETERS name TYPE|LIKE type|dobj 參數(shù)變量長度不超過8個字符
??????? 參數(shù)格式:
???????? DEFAULT value:默認值,INITIALIZATION事件前填充,因此只有在此事件前已經(jīng)確定的值才能作為默認值
???????? OBLIGATORY:設(shè)置為必須項
???????? LOW CASE:將參數(shù)設(shè)置為小寫進行傳遞
???????? VISIBLE LENGTH len:設(shè)置可見顯示長度,但可以輸入超過所顯示的長度的值
???????? MATCHCODE OBJECT s_help:分配查詢幫助。s_help必須在數(shù)據(jù)字典中已經(jīng)定義
????????? VALUE CHECK:值檢查。檢查用戶輸入值是否符合該字段的約束表(Check Table,一定要有)。
????????? NO-DISPLAY:隱藏顯示。在SUBMIT調(diào)用過程中,可以通過該字段傳遞參數(shù)或在自定義選擇屏幕被調(diào)用之前,對該字段賦值。但該字段已經(jīng)不是屏幕字段,即使使用MODIFY SCREEN修改其屬性,也不能在屏幕中顯示
???????? MODIF ID key:
???????? MEMORY ID pid:使用內(nèi)存默認值。從SAP內(nèi)存(用戶相關(guān)的共有內(nèi)存)中給參數(shù)字段分配默認值,SPA/GPA參數(shù)是SAP將屏幕元素填充初始數(shù)據(jù)的一種通用基本技術(shù)。其中pid是公用的SAP內(nèi)存ID,最多20字節(jié),可以使用SET/GET來設(shè)定和讀取
???????? AS CHECKBOX:復(fù)選框。不可使用附加選項TYPE和LIKE,參數(shù)是長度為1的C類型,值為'X'(選中)或' '(未選中)
???????? RADIOBUTTON GROUP radi:單選按鈕組,參數(shù)是長度為1的C類型,radi組名長度最大為4
??? (3) SELECT-OPTIONS seltab FOR f 變量格式為ABBC(*)D(*)
???????? A:長度為1的C類型的SIGN字段,值為I(Include)或者E(Exclude)
???????? B:長度為2的C類型的OPTION字段,如果沒有HIGH字段,值為EQ、NE、GT、LE、LT、CP和NP,后兩者只有使用了通配符(*,+)才有效;如果有HIGH字段,則可使用BT(BETWEEN)和NB(NOT BETWEEN)
???????? C:F類型的LOW字段,定義下界
???????? D:F類型的HIGH字段,定義上界
??????? 參數(shù)格式:除PARAMETER的參數(shù)外,還有一些其他的參數(shù)
????????? NO-EXTENSION:限定單行數(shù)據(jù),移除多選按鈕
???????? NO INTERVALS:單值選擇,但用戶仍然可以通過多選按鈕來選擇多值
???????? DEFAULT g [TO h] [OPTION op] [SIGN s]:設(shè)定默認值,但只可指定一次
??? (4) 其他屏幕元素
????????? SELECTION-SCREEN SKIP [n]:空n行(0<n<10)
????????? SELECTION-SCREEN ULINE [[/]pos(len)] [MODIF ID key]:給一行或行中的一部分加下劃線。pos可以使用POS_LOW和POS_HIGH這兩個系統(tǒng)常量之一,分別代表SELECT-OPTIONS語句的from和to在屏幕上的位置,最后一個選項把下劃線分配給某個修改組key,該修改組可以用在AT SELECTION-SCREEN OUTPUT事件中用于修改屏幕屬性。
???????? SELECTION-SCREEN COMMENT[/]pos(len) comm [FOR FIELD f] [MODIF ID key]:comm不需要聲明,但需要在AT SELECTION-SCREEN OUTPUT中指定其中的值;如果使用了FOR FIELD f,這用戶在該元素f的注釋上請求幫助(F1)時,系統(tǒng)會顯示字段
f的幫助文本。
??? (5) 組合選擇屏幕元素(暫略,P277,屏幕塊、位置等)
2. 屏幕事件
??? (1) AT SELECTION-SCREEN OUTPUT:選擇屏幕PBO事件,每次選擇屏幕被調(diào)用之前觸發(fā),每次屏幕調(diào)用都會執(zhí)行
??? (2) AT SELECTION-SCREEN:選擇屏幕PAI事件,檢查用戶數(shù)據(jù)正確性和全部字段一致性,發(fā)生錯誤所有元素可重新輸入
??? (3) AT SELECTION-SCREEN ON field:針對某字段的PAI事件。若發(fā)生錯誤,該字段可重新輸入,其他元素成灰色
??? (4) AT SELECTION-SCREEN ON BLOCK block:針對某元素區(qū)域的PAI事件。域內(nèi)任一元素發(fā)生錯誤,重新輸入域內(nèi)所有元素,域外元素成灰色
??? (5) AT SELECTION-SCREEN ON RADIOBUTTON GROUP radi:單選按鈕整體檢查,不可單獨使用ON field
??? (6) AT SELECTION-SCREEN ON [END OF] seltab:使用多行選擇對話框時觸發(fā),ON seltab用于用戶逐行輸入后的檢查,而ON END OF seltab用于整個表輸入結(jié)束后各行的檢查。
??? (7) AT SELECTION-SCREEN ON [HELP|VALUE]-REQUEST FOR field:POH和POV事件,定義F1和F4
3. 屏幕的PAI事件如果沒有發(fā)生任何錯誤,將執(zhí)行后續(xù)事件,如F8、打印、保存變量等。
*****************************************************************************************
報表(4)——標準列表篇(2007.10.11)
*****************************************************************************************
1. 輸出語句:WRITE [AT /pos(len)] f [<options>].
2. 輸出符號:WRITE some_name AS [SYMBOL | ICON | LINE | CHECKBOX].
??? 之前需要使用INCLUDE <list>或者INCLUDE <symbol> INCLUDE <icon>
3. 查找Symbol或Icon:patter->write->F4(symbol或icon)
4. 線:
??? ULINE [AT /pos(len)]. <=> WRITE [AT /pos(len)] SY-ULINE.
??? WRITE [AT /pos(len)] '----'.
???? WRITE [AT [/][<pos>]] SY-VLINE. <=> WRITE [AT [/][<pos>]] '|'.
5. 空行:
??? SKIP [n].
??? SET BLANK LINES [ON|OFF]. WRITE / ' '.
6. 輸出位置:(暫略,P291)
7. 輸出格式:(暫略,顏色等,P291)
8. 頁面格式:(暫略,標題、頁面長寬、頁眉頁腳、固定欄、跳行等,P292)
*****************************************************************************************
報表(5)——交互式列表篇(2007.10.11)
*****************************************************************************************
1. TOP-OF-PAGE | END-OF-PAGE DURING LINE-SELECTION. 列表被選擇時輸出頁眉和頁腳
2. AT LINE-SELECTION和AT USER-COMMAND
3. 不能再次級列表中使用GET或GET...LATE這樣的其他事件塊
4. HIDE f. 被選中的行將被存儲至全局區(qū)域(hide area),可以通過對Hide區(qū)域的檢查來判斷用戶時候選擇了正確的行。
*****************************************************************************************
報表(6)——保存篇(2007.10.11)
*****************************************************************************************
1. 在報表輸出屏幕,依次List->Save->Office | Reprot tree | File ...
??? 也可通過System->List->Save在任何位置進行列表保存
2. 列表可以保存在SAPoffice、工作菜單、本機
3. 文件保存格式
??? Unconverted:ASCII文檔
??? Spreadsheet:MS Excel文檔
??? Rich Text Format:RTF文檔
??? HTML:網(wǎng)頁文檔
*****************************************************************************************
報表(7)——格式化報表基本概念篇(2007.10.15)
*****************************************************************************************
1. 格式化報表基本步驟:
??? (1) 通過SAP的格式生成工具定義Form格式
??? (2) 創(chuàng)建ABAP程序負責(zé)整理輸出過程中所需數(shù)據(jù),該程序稱為數(shù)據(jù)提取程序
??? (3) 在程序內(nèi)調(diào)用定義好的格式,產(chǎn)生具體文本內(nèi)容。如果需要打印的數(shù)據(jù)集不止一份,該調(diào)用可以循環(huán)進行,實現(xiàn)批量輸出;或者以內(nèi)表的形式Form接口直接傳遞批量數(shù)據(jù),通過例如發(fā)送給許多客戶相同格式但不同數(shù)據(jù)信息的訂單
??? (4) 將每一分文檔通過Form的格式化功能一特定形式打印輸出。
2. 頁面是窗口的畫板,窗口是具體文字的容器,具體的數(shù)據(jù)及文本應(yīng)放置于窗口中,而不能直接在頁面中輸出。每個版式都包括一個起始頁面及其任一數(shù)量的后續(xù)頁面,版式的不同頁面中包含不同的輸出區(qū)域,即頁面窗口
3. 窗口是格式化文檔中文本和數(shù)據(jù)的輸出區(qū)域,有主窗口和子窗口兩種類型。一個定義好的窗口不隸屬于某頁面,因而可以放在格式文檔的任意頁中。每一個格式文檔中均含有一個主窗口,即正文數(shù)據(jù)的主要輸出窗口,該窗口如果需要的文本過多,當(dāng)前頁面無法容納,其他文本將在后續(xù)頁面中輸出,也會自動觸發(fā)分頁符。
??? ·并非每一個頁面都需要包含該窗口
??? ·每一個格式文檔中只能含有一個主窗口
??? ·所有頁面中的主窗口必須具有相同的寬度,但高度可以不同
??? ·一個不包含主窗口的頁面不可以調(diào)用其本身作為后續(xù)頁面,因為這將觸發(fā)無限循環(huán),在這種情況下,系統(tǒng)將在處理三頁后自動結(jié)束。
??? ·在除主窗口外的其他窗口中,數(shù)據(jù)和文本在預(yù)設(shè)定好的區(qū)域內(nèi)輸出,如果將這些窗口放置在多個頁面中,其顯示的內(nèi)容是相同的。如果數(shù)據(jù)或文本內(nèi)容超出了窗口區(qū)域,則將被截斷而無法全部顯示
5. 文本和數(shù)據(jù)是窗口輸出的具體內(nèi)容,定位在頁窗口中進行顯示。
??? ·如果輸出內(nèi)容在設(shè)計Form時已經(jīng)可以確定,這可直接在Form中輸入文字
??? ·如果輸出數(shù)據(jù)只能在運行時確定,則需要使用符號作為占位符等方式現(xiàn)在格式中進行說明,應(yīng)用格式調(diào)用時用從程序傳遞進來的實際數(shù)據(jù)信息進行替代。
6. 段落字符體例,類似于網(wǎng)頁設(shè)計中的CSS,可以標準化該段落和相關(guān)字體,應(yīng)用于所有類似格式的不同頁面。
??? ·段落格式——控制整個段落,每一段文本內(nèi)容都必須屬于某個段落格式。整個Form應(yīng)該有一個默認的段落格式
??? ·字符格式——控制段落中具體文字的字體和字號等性質(zhì),字符格式不能控制整個段落,但是可以用于格式化段落內(nèi)部的具體文本塊。
*****************************************************************************************
報表(8)——SAPscript篇——SE71、SE72、SO10(2007.10.11<U...>2007.10.11)
*****************************************************************************************
1. SAPscript是SP開發(fā)的文字處理系統(tǒng),由五大部件構(gòu)成:
??? ·一個以行為單位的文本編輯器。在格式創(chuàng)建過程中,如果需要給某個頁窗口添加文本,則系統(tǒng)將自動進入該編輯器
??? ·打印布局中的體例和格式設(shè)定
??? ·一個作為中心輸出處理模塊的設(shè)計器。用于準備文本向打印裝置輸出,并同時格式化信息應(yīng)用于文本,這些信息來自Styles和Forms工具中的設(shè)定。該設(shè)計器位于系統(tǒng)內(nèi)部,用戶不可見。
??? ·程序接口,將SAPscript組件與SAP應(yīng)用程序整合,并在程序中對格式輸出進行進一步的控制
??? ·一些存儲文本、體例和格式的數(shù)據(jù)庫表
2. 在元素的創(chuàng)建過程中,應(yīng)該按照從基本元素到復(fù)雜元素逐步進行,即設(shè)定字體和段落->窗口->將窗口添加到頁面。
3. 字符格式命名規(guī)則:
??? ·字符格式名稱最多只能包含兩個字符
??? ·首字母必須是字幕,第二個字符可為字幕、數(shù)字或空格,不能為其他特殊符號
*****************************************************************************************
報表(9)——Smart Forms篇——SMARTFORMS(2007.10.11<U...>2007.10.11)
*****************************************************************************************
1. Smart Forms與SAPscript類似,其輸出媒介可以是Internet頁、打印機、傳真或e-mail等。還附帶了核心的商業(yè)處理過程等(P399)
2. Smart Forms與SAPscript存在接口,可以在Smart Forms中引用SAPscript也可以進行格式轉(zhuǎn)換。設(shè)計過程包括版面邏輯和邏輯設(shè)計兩部分。相比SAPscript,Smart Forms新特征:
??? ·允許使用簡易的圖形化工具對格式和格式邏輯進行修改
??? ·具有相當(dāng)完整的流程控制機制,因此應(yīng)用數(shù)據(jù)的提取和格式的邏輯處理是相對獨立的。Form激活時,將生成一個功能模塊,在運行期間,程序通過該模塊的參數(shù)接口調(diào)用格式,并傳遞輸出的數(shù)據(jù)。
??? ·設(shè)計可以通過圖形化的工具進行,而且其輸出邏輯通過一個屬性體系結(jié)構(gòu)顯示。
??? ·系統(tǒng)在處理Form過程中提供創(chuàng)建XML輸出的功能,從而實現(xiàn)了Web publishing
??? ·可以插入靜態(tài)或動態(tài)表格,表格功能包括循環(huán)讀取單元內(nèi)容、觸發(fā)標題行和總計時間以及數(shù)據(jù)排序等功能
??? ·可以檢查某個節(jié)點或者整個Form時候存在錯誤;數(shù)據(jù)流程分析功能檢查所有的字段在輸出時是否已經(jīng)有確定的值
??? ·可以在Form的輸出文檔中加入背景圖片
??? ·提供標準的國家相關(guān)的郵政地址輸出功能
3. Smart Forms格式化并輸出步驟:
??? (1) 提取應(yīng)用數(shù)據(jù)
??? (2) 應(yīng)以Form格式及相關(guān)數(shù)據(jù)接口
??? (3) 將數(shù)據(jù)傳遞到Form中,并批量輸出
4. 一個Form需要定義一或多個頁面以及一個處理從程序中傳遞過來的數(shù)據(jù)接口,每個頁面中可以包含窗口、標準地址和圖片等。(P428)
*****************************************************************************************
后臺處理篇——SM36、37(2007.10.11)
*****************************************************************************************
1. 后臺處理中,R/3可以自動運行1類型的報表程序(自定義屏幕除外)或外部程序。
2. 后臺處理步驟:
??? (1) 用戶通過規(guī)劃后臺處理系統(tǒng)中的作業(yè),通知R/3系統(tǒng)所需要進行的工作。設(shè)定事件、程序、變式、打印等。
??? (2) 到達指定時間后,后臺處理系統(tǒng)將啟動作業(yè)并運行指定的程序
??? (3) 稍后,用戶可以檢查工作是否完成,顯示跟蹤該作業(yè)執(zhí)行的日志,查看后臺作業(yè)的狀態(tài)。
3. 優(yōu)點:
??? (1) 可實現(xiàn)并行,不影響用戶操作
??? (2) 可定期自動重復(fù)作業(yè),節(jié)省人力
??? (3) 晚上執(zhí)行可降低系統(tǒng)負載
4. 在ABAP中提交作業(yè),將列表發(fā)送至Spool(假脫機)系統(tǒng)
??? (1) 通過功能模塊JOB_SUBMIT將程序直接發(fā)送至后臺
??? (2) 使用SUBMIT語句中的VIA JOB附加項,WITH附加項則可以提交選擇屏幕參數(shù)或USING SELECTION-SET可指定變式,同時,必須指定AND RETURN選項
????????? SUBMIT rep ... USER user VIA JOB job NUMBER n [... WITH p1 = f1... | USING SELECTION-SET vari] ... AND RETURN
5. 已經(jīng)規(guī)劃的作業(yè)在釋放之前不能運行。
6. 顯示作業(yè)狀態(tài)——SM37
*****************************************************************************************
打印篇(2007.10.11)
*****************************************************************************************
1. 只有通過WRITE語句生成的列表才能夠被SAP的Spool系統(tǒng)進行打印,ALV打印時也會被轉(zhuǎn)換成傳統(tǒng)列表
2. (具體的打印配置見P319~320)
3. 程序控制打印請求設(shè)定,
??? (1)下列語句將生成的列表直接發(fā)送到Spool系統(tǒng)進行打印處理,并不在屏幕上顯示
??????? NEW-PAGE PRINT ON [NEW-SECTION] [params | PARAMETERS pripar] [ARCHIVE PARAMETERS arcpar] [NO DIALOG].
??????? PARAMETERS:參數(shù)變量,需符合PRI_PARAMS數(shù)據(jù)字典
??????? ARCHIVE PARAMETERS:參數(shù)變量,需符合ARC_PARAMS數(shù)據(jù)字典,只有列表被存儲于SAP ArchiveLink時才能使用
??????? (可使用GET_PRINT_PARAMETERS功能模塊來設(shè)定上述參數(shù))
??????? NO DIALOG:不顯示打印機配置畫面
??? (2) 下列語句取消對Spool的輸出,重新在屏幕上輸出頁面
??????? NEW-PAGE PRINT OFF
4. 檢查打印狀態(tài)(System->Service->Output Controller)
??? 輸出控制器用來檢查輸出請求
??? ·發(fā)送輸出請求時沒有標記Output Immediately字段,則輸出控制器重新發(fā)出答應(yīng)請求之前,系統(tǒng)不會將輸出請求發(fā)送到打印機
??? ·檢查輸出請求的狀態(tài),查看是否已經(jīng)打印
*****************************************************************************************
Message篇——SE91(2007.10.08)
*****************************************************************************************
1. SAP消息存放于T100表中,包含SPRSL(語言代碼)、ARBGB(消息類)、MSGNR(三位的消息序號)、TEXT(文本,最長72個字符)
2. 消息格式:
??? (1) MESSAGE <t>num(id). 若REPORT rep MESSAGE-ID id已經(jīng)指定了消息類,則message可以省略id項;
???? (2) MESSAGE ID id TYPE c NUMBER num [WITH f1 ... f4].
???? (3) MESSAGE ... [WITH f1 ... f4].
??????? INTO msgtext 和 DISPLAY LIKE c選項對于以上3個都有效
???? (4) MESSAGE msgtext TYPE c
??????? RAISING exception 對于以上4個都有效,只可用于function或者method中
3. 消息變量
??? SY-MSGID???????????????????? 消息類
??? SY-MSGNR??????????????????? 消息號
??? SY-MSGTY??????????????????? 消息類型
??? SY-MSGV1 ... SY-MSGV4 消息參數(shù)
4. 消息類型
????????????????? PBO????????????????????????????? PAI
??? (1) I 型:與S型一致?????????????????????? 彈出對話框,關(guān)閉后繼續(xù)
??? (2) S 型:同PAI??????????????????????????? 在狀態(tài)欄顯示消息,并同時執(zhí)行后續(xù)語句
??? (3) E 型:程序中止并顯示對話框??????? 當(dāng)前屏幕被終止,并再次跳過PBO被輸出
????????????????? 確認后退出????????????????????? 只有在FIELD和CHAIN語句中的字段可以被重新輸入
??? (4) W型:程序不被終止,類似S型??????? 不退出該消息屏幕,確認該消息屏幕后系統(tǒng)執(zhí)行消息語句后的代碼
??? (5) A 型:同PAI??????????????????????????? 以對話框形式出現(xiàn),確認后程序中止,回到調(diào)用點
??? (6) X 型:同PAI??????????????????????????? 消息不顯示,以short dump(運行時錯誤)形式中止,基本不用
*****************************************************************************************
邏輯數(shù)據(jù)庫(LDB)篇——SE36(2007.10.10<!Q!>2007.10.11)
*****************************************************************************************
1. 除去OPEN SQL和NATIVE SQL,LDB提供了第三種方法來從數(shù)據(jù)庫提取數(shù)據(jù)。注:LDB不是用來存儲數(shù)據(jù)的數(shù)據(jù)庫,僅僅是一種方式。
2. 同傳統(tǒng)的SQL讀取相比,優(yōu)點:
??? (1) 預(yù)設(shè)定的選擇屏幕(這有什么用?)
??? (2) 在使用邏輯數(shù)據(jù)庫的程序中,開發(fā)人員可以忽略具體的數(shù)據(jù)表之間通過外部關(guān)鍵字設(shè)定的關(guān)系,而是使用GET事件按照節(jié)點層次逐級獲取數(shù)據(jù)
??? (3) 提高篩選效率并在數(shù)據(jù)篩選的同時進行用戶數(shù)據(jù)庫訪問權(quán)限檢查
??? (4) 邏輯數(shù)據(jù)庫的維護和設(shè)定可以獨立于程序進行,如果數(shù)據(jù)源發(fā)生變化,也可以直接修改邏輯數(shù)據(jù)庫,無需對所有程序進行修改
3. 結(jié)構(gòu)
??? (1) 子對象(LDB節(jié)點)
???????? ·表(T類型節(jié)點),數(shù)據(jù)庫表,節(jié)點名稱需為數(shù)據(jù)庫表明,其名稱須符合節(jié)點名要求(14字節(jié)以內(nèi)),不能為縱深結(jié)構(gòu)
???????? ·DDIC類型(S類型節(jié)點),是數(shù)據(jù)字典中的結(jié)構(gòu)類型或者表類型,類型和節(jié)點名稱不需要一致,且可以為縱深結(jié)構(gòu)
???????? ·類型組(C類型節(jié)點),節(jié)點類型在類型注重定義,其名稱必須為Type group字段值。一般情況下,應(yīng)參照DDIC類型生成,以便其他使用邏輯數(shù)據(jù)庫的應(yīng)用可以訪問該節(jié)點(如 SAP Query)
???????? ·動態(tài)節(jié)點(A類型節(jié)點),這種節(jié)點沒有固定類型,只有在運行時才被確定
??? (2) 選集和數(shù)據(jù)庫程序(不懂,P283)
4. 事件
??? (1) GET
??????? ·需要在程序?qū)傩灾羞M行指定LDB名稱,將其鏈接至程序
??????? ·NODES node:邏輯庫節(jié)點在程序防偽之前需要聲明
???????????? 聲明之后,系統(tǒng)將創(chuàng)建一個與該節(jié)點同名且結(jié)構(gòu)相同的工作區(qū),并通過GET事件循環(huán)對該事件進行填充
??????? ·GET事件在邏輯數(shù)據(jù)庫程序從數(shù)據(jù)庫表中讀取了一行數(shù)據(jù)時被觸發(fā):GET node | table [FIELDS f1 f2 ... ]
???????????? 觸發(fā)事件后,表工作區(qū)中提供了該行數(shù)據(jù),在處理快內(nèi)部程序代碼中,可對數(shù)據(jù)庫表的當(dāng)前行進行處理。FIELDS選項則可以指定從邏輯數(shù)據(jù)庫讀取的表字段(同時還必須讀取表關(guān)鍵字)。
??????? ·GET ... LATE事件在某表格循環(huán)結(jié)束,返回上一層數(shù)據(jù)庫表格時觸發(fā):GET node | table LATE [FIELDS f1 f2 ...],可以實現(xiàn)該節(jié)數(shù)據(jù)庫節(jié)點中的數(shù)據(jù)總計功能
??????? ·就效率來說,不要使用FIELDS選項指定需要的字段,以改善程序的性能
??????? ·如果程序沒有指定所有的邏輯節(jié)點,這執(zhí)行到指定的最低一節(jié)節(jié)點后將返回上一級節(jié)點,其下方的所有節(jié)點中的數(shù)據(jù)將無法被選出
??? (2) 中止LDB事件
???????? LDB是一個循環(huán)數(shù)據(jù)庫的過程,在GET事件中可以隨時對當(dāng)前處理的數(shù)據(jù)進行檢查,如果不滿足這可以中止當(dāng)前數(shù)據(jù)或者整個事件
??? (3) 無條件中止LDB事件
??????? ·轉(zhuǎn)向END-OF-SELECTION:STOP
??????? ·轉(zhuǎn)向輸出屏幕:EXIT
??????? ·轉(zhuǎn)向當(dāng)前節(jié)點的下一行:REJECT
??????? ·轉(zhuǎn)向dbtab節(jié)點的下一行:REJECT dbtab
??? (4) 條件中止LDB事件
???????? CHECK xxxx
???????? CHECK SELECT-OPTIONS.(完全不懂這玩意干嘛的)
*****************************************************************************************
ABAP范例程序篇(2007.09.26)
*****************************************************************************************
1、在SE38環(huán)境下的程序名輸入欄輸入'DEMO*'后按F4,你可以查到SAP所有的DEMO示例程序,好好看看,你會學(xué)到很多ABAP功能的實現(xiàn)方法。
2、運行“ABAPDOCU”T-cdoe,你可以看到ABAP DOCUMENT及示例程序。
3、在SE38環(huán)境下的程序名輸入欄輸入'BCALV*'后按F4,你可以查到很多ALV示例程序,慢慢看吧。
轉(zhuǎn)載于:https://www.cnblogs.com/caizjian/archive/2013/03/07/2947252.html
總結(jié)
以上是生活随笔為你收集整理的SAP ABAP 点滴记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Javascript Prototype
- 下一篇: 在线音乐电台Pandora股价暴涨20%