SAP ABAP 点滴记录
*****************************************************************************************
系統字段篇——STRUCT:SYST(2007.09.24<U...>2007.10.11)
*****************************************************************************************
SY-SUBRC:語句執行后的返回值,0表示成功
SY-DATUM:當前服務器日期
SY-UZEIT:當前服務器時間
SY-ULINE:255長度的水平線
SY-VLINE:垂直線
SY-INDEX:循環說執行的次數
SY-TABIX:內表循環的次數
SY-DYNNR:當前Screen號
SY-MANDT:當前登錄的Client號
SY-STEPL:返回當前操作的屏幕行號(Table Control)
SY-LOOPC:當前表格控件在屏幕中的總行數(Table Control)
SY-UCOMM:PAI所出發的功能代碼
SY-DYNNR:當前屏幕號
SY-MSGID:Message Class
SY-MSGNR:Message Number
SY-MSGTY:Message Type
SY-MSGV1~4:Message Variant
SY-LINCT:REPROT語句中設定的LINE-COUNT
SY-LINSZ:REPROT語句中設定的LINE-SIZE
SY-SROWS:當前窗口的列表行數
SY-SCOLS:當前窗口的列表欄目數
SY-PAGNO:當前頁的頁碼
SY-LINNO:當前選定行的行號
SY-COLNO:當前選定列的列號
SY-LSIND:當前列表索引,第一級列表為1
SY-LILLI:選擇某行時光標行位置
SY-CUROW:選擇某行時光標列位置
*****************************************************************************************
Dynpro篇——SE80(2007.09.25<U...>2007.10.08)
*****************************************************************************************
1. 在PAI中,ok_code需要及時賦值給另外一個變量,并立即clear,隨后對新的那個變量來case
2. 屏幕調用
??? (1) SET SCREEN next_screen_number: 指定當前屏幕的后續屏幕,在PAI中靜態指定的后續屏幕將暫時被覆蓋
??? (2) CALL SCREEN screen_number:掛起當前屏幕,進入新的屏幕或事務(即插入新的屏幕流)。
????????? CALL TRANSACTION tcode????? 在新的屏幕中,通過LEAVE SCREEN TO SCREEN 0即可返回掛起的屏幕序列上
???? (3) LEAVE SCREEN:未完成當前屏幕控制流就要轉入后續屏幕
??? (4) LEAVE TO SCREEN screen_number:未完成當前屏幕即進入指定的屏幕或事務
???????? LEAVE TO TRANSACTION tcode
???? (5) SET SCREEN 0, LEAVE SCREEN或LEAVE TO SCREEN 0:終止當前屏幕
3. MODULE module_name AT EXIT-COMMAND:只能在PAI中使用,會由于以"/E"開頭或者E型的function而觸發(一般就是Back、Exit、Cancel)
4. FIELD field_name MODULE module_name:可以對field執行所指定的module
5. Table Control的數據源如果來自多張表則可以自定義一個work area
6. 要讓Table Control能夠擁有行選擇的能力,可以在導航中指定,需要work area中有一個沒有被選擇顯示的列
*****************************************************************************************
報表(1)——系統報表篇(2007.10.08)
*****************************************************************************************
1. 報表類型:SAP核心系統及定制過程中已經存在的報表
???????????????? 使用ABAP開發的報表
???????????????? 使用其他系統工具(如SQP Query)開發的報表
2. Quick Viewer——SQVI:提供形式不固定的Adhoc報表(非日常性的業務報表),是SAP提供給用戶的最終系統中的一個簡易報表生成工具
??? (1) 每個系統用戶只能定義自己的QuickViews,其他系統用戶不能共享該列表。因為它不是SAP傳輸系統中的一個組件
3. SAP Query——SQ01:較為復雜,涉及到用戶組和功能區域。
??? (1) 開始查詢后,SAP系統內部將根據Queryies中定義的列表字段自動生成一個內部程序,該程序讀取數據源,處理并輸出數據
??? (2) SAP Query具有管理功能,主要指數據源和用戶組的分配,即設定功能區域和用戶組,并將功能區域分配給各個用戶組。其中功能區域代表查詢數據源,即數據庫表和其中的字段,往往參照邏輯數據庫生成;而一個系統用戶如果需要創建Queries,則該用戶必須隸屬于至少某一個由系統管理員預設定的用戶組,并可以使用屬于該用戶組的功能區域。一個SAP系統用戶可以使多個用戶組的成員,功能區域和用戶組是多對多的關系。Queries總是隸屬于特定的用戶組中特定的功能區域生成的,因而只有該用戶組內部用戶才能訪問其中的Queries。
???????? 如果某用戶被分配置多個用戶組,則該用戶可以在用戶組之間切換。因為Queries總是與相應的功能區域相關,所以,如果兩個用戶組都包含同一個功能區域而且某授權用戶同時屬于這兩個用戶組,這該用戶可以將其中的Queries從一個用戶組拷貝至另外一個用戶組。
??? (3) SAP Query可以生成多種類型的列表:
????????? 基本列表:可以為單行或多行,多行的基本類表還可以進行壓縮
???????? 統計列表、排序列表:要求列表中至少包含一個數值字段,且數據行數可能被壓縮
????????? 局部列表:一個Query中包含多個局部列表,而在打印過程中可以單獨打印
??? (4) 不能有用戶提供執行設計生成交互式列表,但在列表過程中提供一些標準的交互功能:如將生成列表傳遞至系統內部或外部的其他工具(Excel、ABC Analysis等),并以圖形的形式或者以交互表格的形式顯示列表。
4. Quick Viewer和SAP Query的區別
??? (1) SAP Query可以創建基本、統計和排序等格式的列表;而QuckViewer只能創建基本列表,不包含統計、排序等交互性
??? (2) SAP Query可以被多個用戶共享,需要進行用戶組和功能區域的設置,并可以在系統間傳輸;而QuickViewer是具有用戶相關性的
*****************************************************************************************
報表(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<!Q!>)
*****************************************************************************************
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(*)
???????? 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<n<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 [<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. 被選中的行將被存儲至全局區域(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.11<U...>2007.10.11)
*****************************************************************************************
1. SAPscript是SP開發的文字處理系統,由五大部件構成:
??? ·一個以行為單位的文本編輯器。在格式創建過程中,如果需要給某個頁窗口添加文本,則系統將自動進入該編輯器
??? ·打印布局中的體例和格式設定
??? ·一個作為中心輸出處理模塊的設計器。用于準備文本向打印裝置輸出,并同時格式化信息應用于文本,這些信息來自Styles和Forms工具中的設定。該設計器位于系統內部,用戶不可見。
??? ·程序接口,將SAPscript組件與SAP應用程序整合,并在程序中對格式輸出進行進一步的控制
??? ·一些存儲文本、體例和格式的數據庫表
2. 在元素的創建過程中,應該按照從基本元素到復雜元素逐步進行,即設定字體和段落->窗口->將窗口添加到頁面。
3. 字符格式命名規則:
??? ·字符格式名稱最多只能包含兩個字符
??? ·首字母必須是字幕,第二個字符可為字幕、數字或空格,不能為其他特殊符號
*****************************************************************************************
報表(9)——Smart Forms篇——SMARTFORMS(2007.10.11<U...>2007.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字段,則輸出控制器重新發出答應請求之前,系統不會將輸出請求發送到打印機
??? ·檢查輸出請求的狀態,查看是否已經打印
*****************************************************************************************
Message篇——SE91(2007.10.08)
*****************************************************************************************
1. SAP消息存放于T100表中,包含SPRSL(語言代碼)、ARBGB(消息類)、MSGNR(三位的消息序號)、TEXT(文本,最長72個字符)
2. 消息格式:
??? (1) MESSAGE <t>num(id). 若REPORT rep MESSAGE-ID id已經指定了消息類,則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 消息參數
4. 消息類型
????????????????? PBO????????????????????????????? PAI
??? (1) I 型:與S型一致?????????????????????? 彈出對話框,關閉后繼續
??? (2) S 型:同PAI??????????????????????????? 在狀態欄顯示消息,并同時執行后續語句
??? (3) E 型:程序中止并顯示對話框??????? 當前屏幕被終止,并再次跳過PBO被輸出
????????????????? 確認后退出????????????????????? 只有在FIELD和CHAIN語句中的字段可以被重新輸入
??? (4) W型:程序不被終止,類似S型??????? 不退出該消息屏幕,確認該消息屏幕后系統執行消息語句后的代碼
??? (5) A 型:同PAI??????????????????????????? 以對話框形式出現,確認后程序中止,回到調用點
??? (6) X 型:同PAI??????????????????????????? 消息不顯示,以short dump(運行時錯誤)形式中止,基本不用
*****************************************************************************************
邏輯數據庫(LDB)篇——SE36(2007.10.10<!Q!>2007.10.11)
*****************************************************************************************
1. 除去OPEN SQL和NATIVE SQL,LDB提供了第三種方法來從數據庫提取數據。注:LDB不是用來存儲數據的數據庫,僅僅是一種方式。
2. 同傳統的SQL讀取相比,優點:
??? (1) 預設定的選擇屏幕(這有什么用?)
??? (2) 在使用邏輯數據庫的程序中,開發人員可以忽略具體的數據表之間通過外部關鍵字設定的關系,而是使用GET事件按照節點層次逐級獲取數據
??? (3) 提高篩選效率并在數據篩選的同時進行用戶數據庫訪問權限檢查
??? (4) 邏輯數據庫的維護和設定可以獨立于程序進行,如果數據源發生變化,也可以直接修改邏輯數據庫,無需對所有程序進行修改
3. 結構
??? (1) 子對象(LDB節點)
???????? ·表(T類型節點),數據庫表,節點名稱需為數據庫表明,其名稱須符合節點名要求(14字節以內),不能為縱深結構
???????? ·DDIC類型(S類型節點),是數據字典中的結構類型或者表類型,類型和節點名稱不需要一致,且可以為縱深結構
???????? ·類型組(C類型節點),節點類型在類型注重定義,其名稱必須為Type group字段值。一般情況下,應參照DDIC類型生成,以便其他使用邏輯數據庫的應用可以訪問該節點(如 SAP Query)
???????? ·動態節點(A類型節點),這種節點沒有固定類型,只有在運行時才被確定
??? (2) 選集和數據庫程序(不懂,P283)
4. 事件
??? (1) GET
??????? ·需要在程序屬性中進行指定LDB名稱,將其鏈接至程序
??????? ·NODES node:邏輯庫節點在程序防偽之前需要聲明
???????????? 聲明之后,系統將創建一個與該節點同名且結構相同的工作區,并通過GET事件循環對該事件進行填充
??????? ·GET事件在邏輯數據庫程序從數據庫表中讀取了一行數據時被觸發:GET node | table [FIELDS f1 f2 ... ]
???????????? 觸發事件后,表工作區中提供了該行數據,在處理快內部程序代碼中,可對數據庫表的當前行進行處理。FIELDS選項則可以指定從邏輯數據庫讀取的表字段(同時還必須讀取表關鍵字)。
??????? ·GET ... LATE事件在某表格循環結束,返回上一層數據庫表格時觸發:GET node | table LATE [FIELDS f1 f2 ...],可以實現該節數據庫節點中的數據總計功能
??????? ·就效率來說,不要使用FIELDS選項指定需要的字段,以改善程序的性能
??????? ·如果程序沒有指定所有的邏輯節點,這執行到指定的最低一節節點后將返回上一級節點,其下方的所有節點中的數據將無法被選出
??? (2) 中止LDB事件
???????? LDB是一個循環數據庫的過程,在GET事件中可以隨時對當前處理的數據進行檢查,如果不滿足這可以中止當前數據或者整個事件
??? (3) 無條件中止LDB事件
??????? ·轉向END-OF-SELECTION:STOP
??????? ·轉向輸出屏幕:EXIT
??????? ·轉向當前節點的下一行:REJECT
??????? ·轉向dbtab節點的下一行:REJECT dbtab
??? (4) 條件中止LDB事件
???????? CHECK xxxx
???????? CHECK SELECT-OPTIONS.(完全不懂這玩意干嘛的)
*****************************************************************************************
ABAP范例程序篇(2007.09.26)
*****************************************************************************************
1、在SE38環境下的程序名輸入欄輸入'DEMO*'后按F4,你可以查到SAP所有的DEMO示例程序,好好看看,你會學到很多ABAP功能的實現方法。
2、運行“ABAPDOCU”T-cdoe,你可以看到ABAP DOCUMENT及示例程序。
3、在SE38環境下的程序名輸入欄輸入'BCALV*'后按F4,你可以查到很多ALV示例程序,慢慢看吧。
轉載于:https://www.cnblogs.com/caizjian/archive/2013/03/07/2947252.html
總結
以上是生活随笔為你收集整理的SAP ABAP 点滴记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Javascript Prototype
- 下一篇: 在线音乐电台Pandora股价暴涨20%