*****************************************************************************************
系統欄位篇——STRUCT:SYST(2007.09.242007.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 ClassSY-MSGNR:Message NumberSY-MSGTY:Message TypeSY-MSGV1~4:Message VariantSY-LINCT:REPROT語句中設定的LINE-COUNTSY-LINSZ:REPROT語句中設定的LINE-SIZESY-SROWS:當前視窗的列表行數SY-SCOLS:當前視窗的列表欄目數SY-PAGNO:當前頁的頁碼SY-LINNO:當前選定行的行號SY-COLNO:當前選定列的列號SY-LSIND:當前清單索引,第一級列表為1SY-LILLI:選擇某行時游標行位置SY-CUROW:選擇某行時游標列位置*****************************************************************************************
Dynpro篇——SE80(2007.09.252007.10.08)*****************************************************************************************1. 在PAI中,ok_code需要及時賦值給另外一個變數,並立即clear,隨後對新的那個變數來case2. 螢幕調用(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執行所指定的module5. Table Control的資料來源如果來自多張表則可以自訂一個work area6. 要讓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)*****************************************************************************************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<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和F43. 螢幕的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-COMMAND3. 不能再次級列表中使用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 RETURN5. 已經規劃的作業在釋放之前不能運行。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 OFF4. 檢查列印狀態(System->Service->Output Controller)輸出控制器用來檢查輸出請求·發送輸出請求時沒有標記Output Immediately欄位,則輸出控制器重新發出答應請求之前,系統不會將輸出請求發送到印表機·檢查輸出請求的狀態,查看是否已經列印*****************************************************************************************
Message篇——SE91(2007.10.08)*****************************************************************************************1. SAP訊息存放於T100表中,包含SPRSL(語言代碼)、ARBGB(訊息類)、MSGNR(三位的訊息序號)、TEXT(文本,最長72個字元)2. 訊息格式:(1) MESSAGE 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 cRAISING 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.102007.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樣本程式,慢慢看吧。