*****************************************************************************************
*****************************************************************************************
1. 報表類型:SAP核心系統及定製過程中已經存在的報表
2. Quick Viewer——SQVI:提供形式不固定的Adhoc報表(非日常性的業務報表),是SAP提供給用戶的最終系統中的一個簡易報表生成工具
3. SAP Query——SQ01:較爲複雜,涉及到用戶組和功能區域。
4. Quick Viewer和SAP Query的區別
*****************************************************************************************
報表(2)——報表設計概述篇(2007.10.10)
*****************************************************************************************
1. 報表事件:
INITIALIZATION:程序初始化,類似於C#中的窗體構造函數
START-OF-SELECTION:選擇開始事件(默認事件),在選擇屏幕的處理結束後觸發
END-OF-SELECTION:選擇結束事件,在所有邏輯數據庫處理結束後觸發,一般用於輸出列表
2. 選擇屏幕事件(在INITIALIZATION和START-OF-SELECTION之間觸發):
AT SELECTION-SCREEN OUTPUT:選擇屏幕的PBO事件
AT SELECTION-SCREEN ... :選擇屏幕的PAI事件,有多個附加項
3. 邏輯數據庫事件(在START-OF-SELECTION事件結束以後觸發,用於選擇並整理數據):
GET node ... 選擇邏輯數據庫中當前級別數據中的數據
GET node LATE 選擇邏輯數據庫中上一級別數據源中的數據
4. 列表事件(在所有報表過程事件和選擇屏幕事件結束之後,開始觸發列表事件)
TOP-OF-PAGE:頁眉,每個新頁面開始時觸發
END-OF-PAGE:頁腳,當前頁面結束前觸發
AT-LINE-COMMAND:行選擇控制,當用戶選擇某列表行時觸發
AT-USER-COMMAND:用戶交互控制
5. 一般報表的觸發過程:
(1) 1型程序開始時,LOAD-OF-PROGRAM觸發,運行時環境將爲該程序在應用服務器中分配程序上下文以及相關內存區域存儲內表數據對象,接下來的程序流程將由ABAP運行時環境控制(ABAP處理器)
(2) INITIALIZATION事件觸發
(3) 如果有選擇屏幕,則在每次屏幕輸出之前觸發AT SELECTION-SCREEN OUTPUT,運行時環境將選擇屏幕發送至顯示服務器
如果用戶在選擇屏幕中輸入某些值後執行某些功能,系統將觸發AT SELECTION-SCREEN事件,爲用戶提示消息信息等。
整個過程由屏幕處理器和ABAP處理器交互處理,系統自動在其中進行切換
(4) 當用戶按下Execute按鈕後,系統回收對程序的控制,觸發START-OF-SELECTION
(5) 如果有邏輯數據庫,則觸發GET和GET LATE。
(6) 最後將觸發END-OF-SELECTION事件,此後系統運行時環境將控制交給顯示服務器
(7) 列表輸出過程中將觸發TOP-OF-PAGE和END-OF-PAGE。當用戶點擊Back返回選擇屏幕時,LOAD-OF-PROGRAM和INITIALIZATION不會觸發
(8) 如果列表存在交互事件,則會在滿足交互條件的時候觸發。
6. 事件塊的終止(以下語句除STOP外若存在於循環中,則僅跳出該循環)
(1) STOP. 終止當前事件塊並跳轉至END-OF-SELECTION;若在END-OF-SELECTION中有STOP則直接退出。
(2) EXIT. 離開所有事件塊並轉到列表輸出頁面(即EXIT之前已經被輸出的內容)
(3) CHECK. 如果CHECK條件爲假,則轉到下一個事件塊
*****************************************************************************************
報表(3)——選擇屏幕篇(2007.10.10)
*****************************************************************************************
1. 屏幕參數
(1) INITIALIZATION事件處理之後,屏幕布局將被髮送至顯示服務器,初始化的值將被傳送至同名字段
(2) PARAMETERS name TYPE|LIKE type|dobj 參數變量長度不超過8個字符
參數格式:
DEFAULT value:默認值,INITIALIZATION事件前填充,因此只有在此事件前已經確定的值才能作爲默認值
OBLIGATORY:設置爲必須項
LOW CASE:將參數設置爲小寫進行傳遞
VISIBLE LENGTH len:設置可見顯示長度,但可以輸入超過所顯示的長度的值
MATCHCODE OBJECT s_help:分配查詢幫助。s_help必須在數據字典中已經定義
VALUE CHECK:值檢查。檢查用戶輸入值是否符合該字段的約束表(Check Table,一定要有)。
NO-DISPLAY:隱藏顯示。在SUBMIT調用過程中,可以通過該字段傳遞參數或在自定義選擇屏幕被調用之前,對該字段賦值。但該字段已經不是屏幕字段,即使使用MODIFY SCREEN修改其屬性,也不能在屏幕中顯示
MODIF ID key:
MEMORY ID pid:使用內存默認值。從SAP內存(用戶相關的共有內存)中給參數字段分配默認值,SPA/GPA參數是SAP將屏幕元素填充初始數據的一種通用基本技術。其中pid是公用的SAP內存ID,最多20字節,可以使用SET/GET來設定和讀取
AS CHECKBOX:複選框。不可使用附加選項TYPE和LIKE,參數是長度爲1的C類型,值爲'X'(選中)或' '(未選中)
RADIOBUTTON GROUP radi:單選按鈕組,參數是長度爲1的C類型,radi組名長度最大爲4
(3) SELECT-OPTIONS seltab FOR f 變量格式爲ABBC(*)D(*):可以設定比較複雜的選擇標準,選擇標準是比選擇參數更爲複雜的一種用戶輸入形式。可以接受單值,多值以及各種形式的範圍輸入,並可以將輸入的多行選擇條件以內標的形式存儲。參見課本P268
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字段,定義上界
參數格式:除PARAMETER的參數外,還有一些其他的參數
NO-EXTENSION:限定單行數據,移除多選按鈕
NO INTERVALS:單值選擇,但用戶仍然可以通過多選按鈕來選擇多值
DEFAULT g [TO h] [OPTION op] [SIGN s]:設定默認值,但只可指定一次
(4) 其他屏幕元素
SELECTION-SCREEN SKIP [n]:空n行(0<10)
SELECTION-SCREEN ULINE [[/]pos(len)] [MODIF ID key]:給一行或行中的一部分加下劃線。pos可以使用POS_LOW和POS_HIGH這兩個系統常量之一,分別代表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)時,系統會顯示字段
f的幫助文本。
(5) 組合選擇屏幕元素(暫略,P277,屏幕塊、位置等)
2. 屏幕事件
(1) AT SELECTION-SCREEN OUTPUT:選擇屏幕PBO事件,每次選擇屏幕被調用之前觸發,每次屏幕調用都會執行
(2) AT SELECTION-SCREEN:選擇屏幕PAI事件,檢查用戶數據正確性和全部字段一致性,發生錯誤所有元素可重新輸入
(3) AT SELECTION-SCREEN ON field:針對某字段的PAI事件。若發生錯誤,該字段可重新輸入,其他元素成灰色
(4) AT SELECTION-SCREEN ON BLOCK block:針對某元素區域的PAI事件。域內任一元素髮生錯誤,重新輸入域內所有元素,域外元素成灰色
(5) AT SELECTION-SCREEN ON RADIOBUTTON GROUP radi:單選按鈕整體檢查,不可單獨使用ON field
(6) AT SELECTION-SCREEN ON [END OF] seltab:使用多行選擇對話框時觸發,ON seltab用於用戶逐行輸入後的檢查,而ON END OF seltab用於整個表輸入結束後各行的檢查。
(7) AT SELECTION-SCREEN ON [HELP|VALUE]-REQUEST FOR field:POH和POV事件,定義F1和F4
3. 屏幕的PAI事件如果沒有發生任何錯誤,將執行後續事件,如F8、打印、保存變量等。
*****************************************************************************************
報表(4)——標準列表篇(2007.10.11)
*****************************************************************************************
1. 輸出語句:WRITE [AT /pos(len)] f [ ].
2. 輸出符號:WRITE some_name AS [SYMBOL | ICON | LINE | CHECKBOX].
之前需要使用INCLUDE
或者INCLUDE INCLUDE
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 [/][
]] SY-VLINE. <=> WRITE [AT [/][
]] '|'.
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. 被選中的行將被存儲至全局區域(hide area),可以通過對Hide區域的檢查來判斷用戶時候選擇了正確的行。
*****************************************************************************************
報表(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:網頁文檔
*****************************************************************************************
報表(7)——格式化報表基本概念篇(2007.10.15)
*****************************************************************************************
1. 格式化報表基本步驟:
(1) 通過SAP的格式生成工具定義Form格式
(2) 創建ABAP程序負責整理輸出過程中所需數據,該程序稱爲數據提取程序
(3) 在程序內調用定義好的格式,產生具體文本內容。如果需要打印的數據集不止一份,該調用可以循環進行,實現批量輸出;或者以內表的形式Form接口直接傳遞批量數據,通過例如發送給許多客戶相同格式但不同數據信息的訂單
(4) 將每一分文檔通過Form的格式化功能一特定形式打印輸出。
2. 頁面是窗口的畫板,窗口是具體文字的容器,具體的數據及文本應放置於窗口中,而不能直接在頁面中輸出。每個版式都包括一個起始頁面及其任一數量的後續頁面,版式的不同頁面中包含不同的輸出區域,即頁面窗口
3. 窗口是格式化文檔中文本和數據的輸出區域,有主窗口和子窗口兩種類型。一個定義好的窗口不隸屬於某頁面,因而可以放在格式文檔的任意頁中。每一個格式文檔中均含有一個主窗口,即正文數據的主要輸出窗口,該窗口如果需要的文本過多,當前頁面無法容納,其他文本將在後續頁面中輸出,也會自動觸發分頁符。
·並非每一個頁面都需要包含該窗口
·每一個格式文檔中只能含有一個主窗口
·所有頁面中的主窗口必須具有相同的寬度,但高度可以不同
·一個不包含主窗口的頁面不可以調用其本身作爲後續頁面,因爲這將觸發無限循環,在這種情況下,系統將在處理三頁後自動結束。
·在除主窗口外的其他窗口中,數據和文本在預設定好的區域內輸出,如果將這些窗口放置在多個頁面中,其顯示的內容是相同的。如果數據或文本內容超出了窗口區域,則將被截斷而無法全部顯示
5. 文本和數據是窗口輸出的具體內容,定位在頁窗口中進行顯示。
·如果輸出內容在設計Form時已經可以確定,這可直接在Form中輸入文字
·如果輸出數據只能在運行時確定,則需要使用符號作爲佔位符等方式現在格式中進行說明,應用格式調用時用從程序傳遞進來的實際數據信息進行替代。
6. 段落字符體例,類似於網頁設計中的CSS,可以標準化該段落和相關字體,應用於所有類似格式的不同頁面。
·段落格式——控制整個段落,每一段文本內容都必須屬於某個段落格式。整個Form應該有一個默認的段落格式
·字符格式——控制段落中具體文字的字體和字號等性質,字符格式不能控制整個段落,但是可以用於格式化段落內部的具體文本塊。
*****************************************************************************************
報表(8)——SAPscript篇——SE71、SE72、SO10(2007.10.112007.10.11)
*****************************************************************************************
1. SAPscript是SP開發的文字處理系統,由五大部件構成:
·一個以行爲單位的文本編輯器。在格式創建過程中,如果需要給某個頁窗口添加文本,則系統將自動進入該編輯器
·打印佈局中的體例和格式設定
·一個作爲中心輸出處理模塊的設計器。用於準備文本向打印裝置輸出,並同時格式化信息應用於文本,這些信息來自Styles和Forms工具中的設定。該設計器位於系統內部,用戶不可見。
·程序接口,將SAPscript組件與SAP應用程序整合,並在程序中對格式輸出進行進一步的控制
·一些存儲文本、體例和格式的數據庫表
2. 在元素的創建過程中,應該按照從基本元素到複雜元素逐步進行,即設定字體和段落->窗口->將窗口添加到頁面。
3. 字符格式命名規則:
·字符格式名稱最多隻能包含兩個字符
·首字母必須是字幕,第二個字符可爲字幕、數字或空格,不能爲其他特殊符號
*****************************************************************************************
報表(9)——Smart Forms篇——SMARTFORMS(2007.10.112007.10.11)
*****************************************************************************************
1. Smart Forms與SAPscript類似,其輸出媒介可以是Internet頁、打印機、傳真或e-mail等。還附帶了核心的商業處理過程等(P399)
2. Smart Forms與SAPscript存在接口,可以在Smart Forms中引用SAPscript也可以進行格式轉換。設計過程包括版面邏輯和邏輯設計兩部分。相比SAPscript,Smart Forms新特徵:
·允許使用簡易的圖形化工具對格式和格式邏輯進行修改
·具有相當完整的流程控制機制,因此應用數據的提取和格式的邏輯處理是相對獨立的。Form激活時,將生成一個功能模塊,在運行期間,程序通過該模塊的參數接口調用格式,並傳遞輸出的數據。
·設計可以通過圖形化的工具進行,而且其輸出邏輯通過一個屬性體系結構顯示。
·系統在處理Form過程中提供創建XML輸出的功能,從而實現了Web publishing
·可以插入靜態或動態表格,表格功能包括循環讀取單元內容、觸發標題行和總計時間以及數據排序等功能
·可以檢查某個節點或者整個Form時候存在錯誤;數據流程分析功能檢查所有的字段在輸出時是否已經有確定的值
·可以在Form的輸出文檔中加入背景圖片
·提供標準的國家相關的郵政地址輸出功能
3. Smart Forms格式化並輸出步驟:
(1) 提取應用數據
(2) 應以Form格式及相關數據接口
(3) 將數據傳遞到Form中,並批量輸出
4. 一個Form需要定義一或多個頁面以及一個處理從程序中傳遞過來的數據接口,每個頁面中可以包含窗口、標準地址和圖片等。(P428)
*****************************************************************************************
後臺處理篇——SM36、37(2007.10.11)
*****************************************************************************************
1. 後臺處理中,R/3可以自動運行1類型的報表程序(自定義屏幕除外)或外部程序。
2. 後臺處理步驟:
(1) 用戶通過規劃後臺處理系統中的作業,通知R/3系統所需要進行的工作。設定事件、程序、變式、打印等。
(2) 到達指定時間後,後臺處理系統將啓動作業並運行指定的程序
(3) 稍後,用戶可以檢查工作是否完成,顯示跟蹤該作業執行的日誌,查看後臺作業的狀態。
3. 優點:
(1) 可實現並行,不影響用戶操作
(2) 可定期自動重複作業,節省人力
(3) 晚上執行可降低系統負載
4. 在ABAP中提交作業,將列表發送至Spool(假脫機)系統
(1) 通過功能模塊JOB_SUBMIT將程序直接發送至後臺
(2) 使用SUBMIT語句中的VIA JOB附加項,WITH附加項則可以提交選擇屏幕參數或USING SELECTION-SET可指定變式,同時,必須指定AND RETURN選項
SUBMIT rep ... USER user VIA JOB job NUMBER n [... WITH p1 = f1... | USING SELECTION-SET vari] ... AND RETURN
5. 已經規劃的作業在釋放之前不能運行。
6. 顯示作業狀態——SM37
*****************************************************************************************
打印篇(2007.10.11)
*****************************************************************************************
1. 只有通過WRITE語句生成的列表才能夠被SAP的Spool系統進行打印,ALV打印時也會被轉換成傳統列表
2. (具體的打印配置見P319~320)
3. 程序控制打印請求設定,
(1)下列語句將生成的列表直接發送到Spool系統進行打印處理,並不在屏幕上顯示
NEW-PAGE PRINT ON [NEW-SECTION] [params | PARAMETERS pripar] [ARCHIVE PARAMETERS arcpar] [NO DIALOG].
PARAMETERS:參數變量,需符合PRI_PARAMS數據字典
ARCHIVE PARAMETERS:參數變量,需符合ARC_PARAMS數據字典,只有列表被存儲於SAP ArchiveLink時才能使用
(可使用GET_PRINT_PARAMETERS功能模塊來設定上述參數)
NO DIALOG:不顯示打印機配置畫面
(2) 下列語句取消對Spool的輸出,重新在屏幕上輸出頁面
NEW-PAGE PRINT OFF
4. 檢查打印狀態(System->Service->Output Controller)
輸出控制器用來檢查輸出請求
·發送輸出請求時沒有標記Output Immediately字段,則輸出控制器重新發出答應請求之前,系統不會將輸出請求發送到打印機
·檢查輸出請求的狀態,查看是否已經打印
*****************************************************************************************