ABAP((Advanced Business Application Programming))是一種高級企業(yè)應(yīng)用編程語言,起源于20世紀(jì)80年代。經(jīng)過不斷的發(fā)展,現(xiàn)在的版本為ABAP/4,SAP R/3的應(yīng)用程序就是用ABAP/4編寫的。
綜述
ABAP/4是面向?qū)ο笳Z言。它支持封裝性和繼承性。封裝性是面向?qū)ο蟮幕A(chǔ),而繼承性則是建立在封裝性基礎(chǔ)上的重要特性。ABAP/4具有事件驅(qū)動(dòng)的特性。
ABAP/4和COBOL具有類似之處。
ABAP/4適合生成報(bào)表。
ABAP/4支持對數(shù)據(jù)庫的操作。
SAP系統(tǒng)最初開發(fā)ABAP/4(高級商業(yè)應(yīng)用程序設(shè)計(jì))語言僅為內(nèi)部使用,為應(yīng)用程序員提供優(yōu)化的工作環(huán)境。經(jīng)過不斷的改進(jìn)和修改以滿足商業(yè)領(lǐng)域的需要。ABAP/4已成為SAP開發(fā)所有自己的應(yīng)用程序的僅有工具。
SAP客戶用ABAP/4進(jìn)行其自身開發(fā)。這樣的開發(fā)對R/3標(biāo)準(zhǔn)解決方案適應(yīng)特殊問題非常重要。ABAP/4開發(fā)工作平臺(tái)包含所有用于創(chuàng)建和維護(hù)ABAP/4程序的工具。
ABAP/4的可解釋特性使其易于生成、測試并運(yùn)行程序的中級版本,以便將來生成最終版本。此過程也叫做早期原形處理,意味著您不必丟棄中級版本。
ABAP/4是第四代支持結(jié)構(gòu)化程序設(shè)計(jì)的語言。它合并了所有通常的控制結(jié)構(gòu)和模塊化概念。
- 帶有各種類型和結(jié)構(gòu)的聲明數(shù)據(jù)的聲明元素
- 數(shù)據(jù)制作的操作元素
- 控制程序流的控制元素
- 反應(yīng)外部事件的事件元素
· ABAP/4支持多種語言。文本摘要(例如,標(biāo)題、頁眉和其他文本)將根據(jù)程序代碼分別存儲(chǔ)。您可以隨時(shí)在不改變程序代碼的情況下更改、轉(zhuǎn)換和維護(hù)這些文本摘要。
· ABAP/4支持商業(yè)數(shù)據(jù)類型和操作。您可以用特殊日期和時(shí)間字段進(jìn)行計(jì)算。系統(tǒng)會(huì)自動(dòng)執(zhí)行必需的類型轉(zhuǎn)換。
· ABAP/4提供一系列功能處理字符串。
· ABAP/4包含一個(gè)叫OpenSQL的SQL子集。用OpenSQL,您可以讀取和訪問數(shù)據(jù)庫表,與所用的數(shù)據(jù)庫系統(tǒng)無關(guān)。
· ABAP/4允許您定義和處理內(nèi)部表,該表只在運(yùn)行程序時(shí)存在。內(nèi)部表使其更容易處理數(shù)據(jù)表,并幫助使用程序中的復(fù)雜數(shù)據(jù)結(jié)構(gòu)。
· ABAP/4允許您定義和調(diào)用子程序。也可以調(diào)用其他程序的子程序。參數(shù)能夠以各種方式從子程序傳遞或傳遞到子程序。
· ABAP/4包含一種特殊子程序,叫做功能模塊。您可以在中央庫中創(chuàng)建和維護(hù)功能模塊。在調(diào)用程序和子程序之間功能模塊有一個(gè)明確定義的數(shù)據(jù)接口。它們能夠以調(diào)用程序的獨(dú)立模式進(jìn)行分別測試。
這里有兩種主要的ABAP/4程序類型:
· 報(bào)表程序
報(bào)表程序用于分析數(shù)據(jù)庫表中的數(shù)據(jù)。這種分析的結(jié)果可以顯示在屏幕上或發(fā)送到打印機(jī)上。邏輯數(shù)據(jù)庫支持報(bào)表程序。邏輯數(shù)據(jù)庫是特殊的ABAP/4程序,使開發(fā)者不必編碼所有的數(shù)據(jù)庫訪問。
· 對話程序
將對話程序組織為包含對話模塊的模塊池。每個(gè)動(dòng)態(tài)程序(由一個(gè)屏幕及其流邏輯組成的“動(dòng)態(tài)程序”)都基于一個(gè)ABAP/4對話程序。流邏輯包含對ABAP/4對話模塊的調(diào)用和熟練操作。
發(fā)展歷史
了解一下ABAP的發(fā)展歷史是必要的,ABAP產(chǎn)生的最初的目的是用以生成簡單打印報(bào)表程序,我們知道SAP系統(tǒng)最初是為解決財(cái)務(wù)實(shí)時(shí)數(shù)據(jù)處理問題的,ABAP(Advanced Business Application Programming->;高級業(yè)務(wù)應(yīng)用編程語言)用于編寫SAP AG的幾乎全部產(chǎn)品源代碼。嚴(yán)格地講,ABAP/4不僅僅是一個(gè)開發(fā)工具,而且是一套完整的client/server開發(fā)環(huán)境,這很好理解,微軟的Visiual Studio是一開發(fā)環(huán)境,VB,VC++等是開發(fā)工具.ABAP開發(fā)環(huán)境包含支持程序開發(fā)的一些函數(shù)和包等。
SAP系統(tǒng)開發(fā)環(huán)境的三層(多層)概念也不新鮮,比如在安裝SAP時(shí)也可將DB instance安在一臺(tái)server,Central instance在另一臺(tái)所謂的Application server(我想這應(yīng)是相關(guān)SAP基礎(chǔ)系統(tǒng)包括各種應(yīng)用程序所在),而通常客戶端安裝的SAP Logon Front End,SAP會(huì)話管理器等是所謂的表示層,它通過TCP/IP,SAP演示協(xié)議或RFC和應(yīng)用服務(wù)器進(jìn)行數(shù)據(jù)傳輸,用戶看到的只是處理后的數(shù)據(jù)返回。
和Delphi的三層邏輯相近,在應(yīng)用層包含多個(gè)組件象ABAP開發(fā)平臺(tái),身份驗(yàn)證,系統(tǒng)管理維護(hù)等用以處理會(huì)話,更新,排隊(duì),網(wǎng)關(guān),數(shù)據(jù)層處理native和Open SQL等(這是從內(nèi)部機(jī)制方面看),SAP系統(tǒng)各模塊應(yīng)用的業(yè)務(wù)邏輯都在應(yīng)用層被處理(從用戶角度)然后結(jié)果被返回。
SAP Logon,表示應(yīng)用服務(wù)器(通常企業(yè)為了節(jié)省成本和方便管理可能會(huì)將應(yīng)用服務(wù)器和數(shù)據(jù)庫安裝在同一起),System number,舉個(gè)實(shí)例,開發(fā)和測試服務(wù)共用一臺(tái)服務(wù)器,開發(fā)使用system number00,而測試使用system number 01,通過system number邏輯地將一臺(tái)physical server邏輯地分成了兩臺(tái)application server。
特征
1.和SAP系統(tǒng)緊密結(jié)合,尤其在開發(fā)報(bào)表方面,坦率地講,除了和SAP集成的好處,.我認(rèn)為ABAP在報(bào)表開發(fā)上比Crystal report Tool要高效簡單。
2.和VB一樣,ABAP是解釋型的,如讀者精通VB,學(xué)習(xí)ABAP應(yīng)該毫不費(fèi)力,倒是既然SAP是企業(yè)管理解決方案,ABAPer必須對企業(yè)管理流程熟悉。
解釋型的另一好處是可以很好跟蹤程序邏輯(使用/H),這對了解業(yè)務(wù)邏輯的實(shí)時(shí)追蹤錯(cuò)誤很有效. 和VB不同的是,VB跟蹤時(shí)允許程序運(yùn)行指針隨意往回或往全拉而ABAP程序卻不行,但是ABAP程序允許在運(yùn)行時(shí)修改變量的值,這是編譯程序不能做到的。當(dāng)然通常編譯比解釋執(zhí)行的速度會(huì)更快。
ABAP程序執(zhí)行并不直接讀取源代碼,而是執(zhí)行內(nèi)部經(jīng)過“生成”的描述,對于ABAP/4字典的修改激活后將觸發(fā)內(nèi)部描述的重新生成,如程序并沒激活就執(zhí)行原版本,或者出現(xiàn)錯(cuò)誤(程序沒激活可能造成ABAP Dumping ABAP)。
3.在對數(shù)據(jù)庫處理方面,除了可直接執(zhí)行SQL(使用native sql,缺點(diǎn)是錯(cuò)誤處理很難控制,相當(dāng)于有開發(fā)環(huán)境將SQL語句直接傳給DB去執(zhí)行),SAP系統(tǒng)在ABAP開發(fā)環(huán)境層還提供了一套Open SQL訪問底層數(shù)據(jù)庫。
4. 程序員都知道Windows平臺(tái)下開發(fā)都支持事件驅(qū)動(dòng),Windows系統(tǒng)本身也支持事件驅(qū)動(dòng),ABAP也提供了事件驅(qū)動(dòng),這表DIALOG編程方面,但是ABAP在此方面并不強(qiáng),而且相對講也比較難于掌握(在后面會(huì)討論)。
5.基于面向?qū)ο蟮娘L(fēng)靡,ABAP在此方面也有相當(dāng)反應(yīng),在SAP強(qiáng)大的軟件包中提供了大量可重復(fù)使用的程序,讀者也可定義類并使用它快速建立新的對象。
6.類似Java,ABAP開發(fā)的程序能運(yùn)行于任何操作系統(tǒng)(Java有Java虛擬機(jī),ABAP也有ABAP processor),多種數(shù)據(jù)庫(比如在ABAP字典中實(shí)現(xiàn)了透明表對各種底層數(shù)據(jù)庫表的映射,這樣在ABAP層看到的透明表就和具體數(shù)據(jù)庫無關(guān)),各種網(wǎng)絡(luò)系統(tǒng)。
命名規(guī)則
當(dāng)創(chuàng)建程序名稱時(shí)請遵循如下規(guī)則:
- 使用至少1個(gè)但不超過8個(gè)字符。
- 不要使用下列字符
- 句點(diǎn)(.)
- 逗號(,)
- 空格()
- 括號'('')'
- 單引號(')
- 雙引號(")
- 等號(=)
- 星號(*)
- 元音變音(_,_,_,_,_,_)和'_'
-百分號(%)和下劃線(_):因?yàn)檫@些符號是SQL的通配符,所以也會(huì)導(dǎo)致問題(參見為在程序中選定行指定條件)。SAP系統(tǒng)建議在程序名稱中不要使用它們。
創(chuàng)建程序名稱時(shí)請遵守這些命名約定:
_ 報(bào)表程序(以列表格式輸出數(shù)據(jù)分析):Yaxxxxxx或Zaxxxxxx。用應(yīng)用程序區(qū)的分類字母替換a。用任何有效字符替換x。注意SAP報(bào)表程序遵守相似的命名約定:Raxxxxxx。
_ 任何其它ABAP/4程序(培訓(xùn)程序或事務(wù)程序):SAPMYxxx或SAPMZxxx。用有效字符替換x。注意標(biāo)準(zhǔn)SAPABAP/4程序遵守相似的命名約定:SAPMaxxx,其中a代表某應(yīng)用程序區(qū)。
程序?qū)傩?/h2>簡介
程序?qū)傩詻Q定程序?qū)儆谀姆N應(yīng)用程序以及程序所鏈接的邏輯數(shù)據(jù)庫。必須謹(jǐn)慎輸入屬性以便系統(tǒng)能正確處理程序(有關(guān)程序?qū)傩缘脑敿?xì)信息,參見重要的程序?qū)傩裕?59))。
已經(jīng)將名稱分配給程序并選擇“ABAP/4編輯器初始屏幕”上的“創(chuàng)建”時(shí),出現(xiàn)“ABAP/4:程序?qū)傩浴逼聊弧?/p>
操作
1. 在字段“標(biāo)題”中輸入程序標(biāo)題。選擇描述程序功能的標(biāo)題。系統(tǒng)自動(dòng)將標(biāo)題與文本摘要合并。如果以后要更改標(biāo)題,請按如下操作進(jìn)行:
- 選擇“ABAP/4編輯器初始屏幕”上的“文本摘要”或“屬性”。
- 選擇“更改”。
2. 完成兩個(gè)強(qiáng)制字段:
- 如果創(chuàng)建報(bào)表程序,則在“類型”字段中輸入1,如果創(chuàng)建模塊存儲(chǔ),則在“類型”字段中輸入M。關(guān)于可能類型的列表,請單擊可能條目態(tài)射。
- 在“應(yīng)用程序”字段中為應(yīng)用程序輸入分類字母,如財(cái)務(wù)會(huì)計(jì)輸入F。
3. 如果創(chuàng)建報(bào)表(類型=1),請選擇“確定”。
系統(tǒng)將特定報(bào)表屬性自動(dòng)插入輸入字段。然后看見附加字段“邏輯數(shù)據(jù)庫”、“從應(yīng)用程序”和“選擇屏幕”(版本)。
4. 指定與程序相關(guān)的所有其他屬性(有關(guān)程序?qū)傩缘脑敿?xì)信息,參見重要的程序?qū)傩裕?59))。
5. 選擇“保存”以保存屬性。
6. 出現(xiàn)“維護(hù)對象目錄條目”窗口。
7. 輸入開發(fā)類。
如果為培訓(xùn)或測試目的創(chuàng)建程序(如某私有對象),則輸入開發(fā)類$TMP或選擇“邏輯對象”。
8. 選擇“保存”以保存開發(fā)類。
這將關(guān)閉“維護(hù)對象目錄條目”窗口并返回“ABAP/4:程序?qū)傩浴逼聊弧?/p>
9. 選擇“后退”離開屏幕。如果要直接轉(zhuǎn)到ABAP/4編輯器,請選擇“轉(zhuǎn)向->;源代碼”。
如果通過預(yù)定義開發(fā)類在“對象瀏覽器”中創(chuàng)建程序,則跳過步驟6到8。
最重要的程序如下所述。關(guān)于其它屬性的詳細(xì)信息(或關(guān)于此處描述的屬性的詳細(xì)信息),請選擇相關(guān)的輸入字段,并單擊可能的條目態(tài)射。
注意下述某些屬性只適用于報(bào)表程序并不適用于其他ABAP/4程序。
1. 在“SAPR/3”初始屏幕上選擇“工具->ABAP/4工作臺(tái)”。
出現(xiàn)“ABAP/4開發(fā)工作臺(tái)”屏幕
2. 選擇“ABAP/4編輯器”
“ABAP/4編輯器初始屏幕”如下所示:
3. 為在“程序”字段中創(chuàng)建的程序輸入名稱(關(guān)于創(chuàng)建程序名稱的詳細(xì)信息,參見命名程序規(guī)則(頁455))。
4. 選擇“創(chuàng)建”。
不論在“對象組件”下選擇什么,都出現(xiàn)“ABAP/4:程序?qū)傩浴逼聊弧?/p>
當(dāng)命名并創(chuàng)建程序后,可以定義其屬性(關(guān)于定義程序?qū)傩缘脑敿?xì)信息,參見指定程序?qū)傩裕?57))。
創(chuàng)建ABAP/4程序還有其它過程。例如,可以:
1. 選擇“ABAP/4開發(fā)工作臺(tái)”屏幕上的“對象瀏覽”。
2. 選擇“對象列表”下的“程序”。
3. 選擇“單一對象”下的“程序?qū)ο蟆薄?/p>
4. 輸入程序名并單擊“顯示”。
類型
除了類型1(如同報(bào)表的獨(dú)立程序)和M(模塊存儲(chǔ)),還應(yīng)該注意類型I(包含程序)。包含程序是個(gè)獨(dú)立的程序,它有兩個(gè)主要特征。首先,它包含程序代碼,不同程序都可使用該代碼。其次,它用于模塊化程序源代碼,該代碼分成邏輯相關(guān)部分。其中每個(gè)部分都存儲(chǔ)在不同的包含程序中。包含程序改善源代碼的可讀性并有助于維護(hù)。(有關(guān)包含程序的詳細(xì)信息,參見包含程序)。
應(yīng)用程序
“應(yīng)用程序”字段包括應(yīng)用程序的縮寫,如,財(cái)務(wù)會(huì)計(jì)縮寫為F。該必需條目使系統(tǒng)能將程序分配給適當(dāng)?shù)臉I(yè)務(wù)區(qū)。
開發(fā)類
開發(fā)類對系統(tǒng)之間進(jìn)行傳輸非常重要。執(zhí)行傳輸時(shí),可以將分配給某個(gè)開發(fā)類的工作臺(tái)對象組合起來。
如果用戶在某組中工作,也許要將程序分配給現(xiàn)有開發(fā)類或創(chuàng)建新的開發(fā)類。分配給開發(fā)類$TMP的程序是私有對象并且不能傳輸?shù)狡渌到y(tǒng)。
但是,也可以通過選擇“ABAP/4編輯器初始屏幕”上的“計(jì)算機(jī)程序>重新分配...”更改分配給程序的開發(fā)類。
應(yīng)用程序中的邏輯數(shù)據(jù)庫(僅報(bào)表程序)
這些屬性決定報(bào)表使用哪個(gè)邏輯數(shù)據(jù)庫檢索數(shù)據(jù),以及邏輯數(shù)據(jù)庫屬于哪個(gè)應(yīng)用程序。應(yīng)用程序中數(shù)據(jù)庫名稱必須是唯一的。但是,整個(gè)系統(tǒng)可以包括數(shù)個(gè)同名數(shù)據(jù)庫。因此指定應(yīng)用程序很重要。關(guān)于邏輯數(shù)據(jù)庫的詳細(xì)信息,參見邏輯數(shù)據(jù)庫的特性和維護(hù)。
如果報(bào)表程序直接讀取數(shù)據(jù),而未使用邏輯數(shù)據(jù)庫(關(guān)于此主題的詳細(xì)信息,參見訪問帶邏輯數(shù)據(jù)庫的數(shù)據(jù)庫表),則應(yīng)該象通常一樣指定應(yīng)用程序,但將“邏輯數(shù)據(jù)庫”字段置空。
選擇屏幕版本(僅報(bào)表程序)
如果沒有指定選擇屏幕版本,則系統(tǒng)在邏輯數(shù)據(jù)庫選擇標(biāo)準(zhǔn)、報(bào)表特定參數(shù)及選擇選項(xiàng)的基礎(chǔ)上自動(dòng)創(chuàng)建選擇屏幕(關(guān)于選擇屏幕的詳細(xì)信息,參見使用選擇屏幕)。
如果想使用自己的選擇屏幕,請?jiān)诖俗侄沃休斎胩柎a。該號碼必須小于1000。可以通過按F4或在DBxxxSEL程序中找到現(xiàn)有選擇屏幕號碼(詳細(xì)信息,參見邏輯數(shù)據(jù)庫選擇)。
大寫/小寫
顯示和存儲(chǔ)時(shí),如果要讓ABAP/4編輯器將程序代碼與輸入時(shí)保持相同,則請將該字段置空。如果選擇該字段,則所有的程序代碼(除了引號中的文本及注釋外)都轉(zhuǎn)換成大寫字母。屏幕顯示依賴于所使用的編輯器模式(詳細(xì)信息,參見文檔ABAP/4工作臺(tái)工具。
編輯器鎖定
如果設(shè)置此屬性,則其他用戶則不能修改、改名或刪除程序。只有用戶可以更改程序、維護(hù)屬性、文本摘要及文檔;或者解除鎖定。
定點(diǎn)算術(shù)
如果設(shè)置此屬性,系統(tǒng)則根據(jù)小數(shù)點(diǎn)位數(shù)將類型P字段四舍五入,或用零填補(bǔ)(關(guān)于類型P字段的詳細(xì)信息,參見數(shù)字?jǐn)?shù)據(jù)類型(頁3-4))。這種情況下,無論在用戶主記錄中指定了什么,小數(shù)點(diǎn)字符總是句點(diǎn)(.)。
通過變式啟動(dòng)(僅報(bào)表程序)
如果設(shè)置該屬性,則用戶只可以使用變式啟動(dòng)報(bào)表程序。在啟動(dòng)程序之前,必須創(chuàng)建至少一個(gè)報(bào)表變式(關(guān)于創(chuàng)建變式的詳細(xì)信息,參見使用變式預(yù)設(shè)置選擇)。
程序應(yīng)用
概述
在ABAP/4編輯器中編寫ABAP/4程序。
可以直接從“ABAP/4程序?qū)傩浴逼聊磺袚Q到編輯器,也可以從“ABAP/4編輯器初始屏幕”中調(diào)用編輯器。
編寫程序操作
1. 在“ABAP/4程序?qū)傩浴逼聊簧线x擇“轉(zhuǎn)向->;源代碼”或“源代碼”。
選定“源代碼”并選擇“ABAP/4編輯器初始屏幕”上的“更改”。
出現(xiàn)“ABAP/4編輯器編輯程序”屏幕。
系統(tǒng)自動(dòng)輸入第一個(gè)ABAP/4語句,如
REPORT
對于
語句REPORT和PROGRAM實(shí)際上具有相同功能。它們使系統(tǒng)能識(shí)別報(bào)表程序或任何其他ABAP/4程序并允許為輸出列表指定一定的標(biāo)準(zhǔn):
REPORT或PROGRAM語句可以有不同的參數(shù),如LINE-開本、LINE-計(jì)數(shù)或NO STANDARD PAGE HEADING。這些參數(shù)主要適用于報(bào)表程序,用來分析數(shù)據(jù)并輸出結(jié)果列表。
關(guān)于列表的詳細(xì)信息,參見[ See also: 第六章 創(chuàng)建列表
2. 輸入程序代碼。
3. 選擇“檢查”進(jìn)行語法檢查。然后系統(tǒng)掃描程序代碼尋找語法錯(cuò)誤及不相容處。如果檢查出錯(cuò)誤,則出現(xiàn)消息報(bào)告它并且有可能的話將建議解決方案或更正。將光標(biāo)放在適當(dāng)?shù)奈恢蒙稀?/p>
4. 選擇“保存”保存代碼。
源文本存儲(chǔ)在程序庫中。
測試程序
測試程序檢查代碼是否正確工作。
為測試目的要運(yùn)行程序,選擇“ABAP/4編輯器編輯程序”屏幕上的“計(jì)算機(jī)程序>;執(zhí)行”。
系統(tǒng)執(zhí)行該程序,如同從“ABAP/4編輯器初始屏幕”中啟動(dòng)的一樣。例如,創(chuàng)建報(bào)表程序之后,則首先出現(xiàn)從中輸入條件的選擇屏幕,然后是結(jié)果列表。
如果正創(chuàng)建ABAP/4程序模塊,則必須在運(yùn)行程序之前創(chuàng)建事務(wù)代碼(關(guān)于創(chuàng)建事務(wù)代碼的詳細(xì)信息,參見對話編程簡介)。
出于測試目的,可以先不進(jìn)行保存,直接運(yùn)行某個(gè)不是模塊存儲(chǔ)部件的程序。編輯器保留一個(gè)包含更改的臨時(shí)版本。但是,測試結(jié)束后必須返回編輯器以確保所有更改都已保存。
程序的顯示更改
本節(jié)主要說明如何顯示或更改現(xiàn)有程序。此處相關(guān)的是技術(shù)步驟而不是實(shí)際代碼更改。
要顯示或更改程序,請進(jìn)行如下操作:
1. 在“ABAP/4編輯器初始屏幕”上的“程序”字段中輸入要更改的程序名稱。
2. 選擇“源代碼”并選擇“顯示”或“更改”。
如果選擇“更改”則繼續(xù)步驟3。
如果選擇“顯示”,則看到“ABAP/4編輯器顯示程序”屏幕。此處也顯示源代碼,但不能進(jìn)行更改。可以通過選擇“顯示->;更改”切換到更改模式。
3. 如果其他用戶鎖定該程序?qū)?a href="/hebeideji/3382258480047259800.html">編輯器的訪問,則系統(tǒng)顯示下列消息:
User <人名> forbade all changes.
在這種情況下,不能更改程序。要更改程序,必須將它復(fù)制到新程序中并用新程序名再開始步驟1。否則,繼續(xù)步驟5。
4. 輸入對程序代碼的更改。
5. 選擇“檢查”檢查語法。
6. 保存程序的更改版本。
如果更改程序的私有版本(開發(fā)類$TMP),則立即保存更改版本。
如果從$TMP之外的開發(fā)類更改程序,則會(huì)出現(xiàn)一個(gè)窗口,從中可以指定更正請求號(Change Request Number)。
7. 運(yùn)行程序測試它(關(guān)于測試的詳細(xì)信息,參見測試程序(頁11))。
配給程序
介紹
可以將事務(wù)代碼分配給類型1的單獨(dú)程序,以后就將這些程序作為事務(wù)代碼處理。在[ See also: 第三部分 編寫ABAP/4事務(wù)
運(yùn)用
1. 按照本節(jié)上述主題所述,創(chuàng)建單獨(dú)程序。
2. SAP菜單樹:工具 -> ABAP 工作臺(tái) -> 開發(fā) -> 其他工具 -> 事務(wù),事務(wù)代碼:SE93。
3. 填入事務(wù)代碼并選擇“維護(hù)事務(wù)”屏幕上的“創(chuàng)建”
4. 在下列對話屏幕上選擇“報(bào)表事務(wù)”;
5. 在下列“創(chuàng)建報(bào)表事務(wù)”屏幕上填入所需條目“事務(wù)說明”和“程序”。
6. 將事務(wù)代碼保存在開發(fā)類中。
開發(fā)類可以用事務(wù)代碼SM30維護(hù)視圖V_TDEVC來創(chuàng)建或修改。
快速入門
首先、ABAP是技術(shù)開發(fā),想要快速入門,或是遇到問題想要解決,可以找個(gè)質(zhì)量高一點(diǎn)的技術(shù)交流論壇,比如ABAP大坑網(wǎng)。
想快速培訓(xùn)出師,你必須得有編程基 礎(chǔ)。從這點(diǎn)考察培訓(xùn)機(jī)構(gòu),你就看看他們有沒有筆試,如果 啥條件都不要求,那肯定是不能參加的。編程基礎(chǔ)不是一天 兩天都鍛煉出來的。
其二、打聽定向委培的公司,是否真正有項(xiàng)目。這個(gè)很好辦,招聘求職的網(wǎng)上一搜就知道了。
其三、看培訓(xùn)機(jī)構(gòu)的老師水平和課程安排如何。這個(gè)沒辦法 從網(wǎng)上了解太多,只能實(shí)地考察了。
其四、做好這方面的求職準(zhǔn)備。培訓(xùn)機(jī)構(gòu)推薦是一回事,你自 己找機(jī)會(huì)也不能忽略。
其五、ABAP職位需求非常旺盛,有點(diǎn)譜,學(xué)到了其實(shí)是蠻 容易找工作的。培訓(xùn)帶你入門,修行看個(gè)人嘛 我見到過很好 的培訓(xùn)機(jī)構(gòu),里面有的學(xué)員照樣學(xué)不出來,為啥?不努力唄!
最后,市 面上做這方面培訓(xùn)的,叫的出來的有達(dá)沃旗,sap私塾和91abap,賽跑網(wǎng)ABAP。選擇比較好的培訓(xùn)機(jī)構(gòu)至關(guān)重要。建議考慮口碑,價(jià)格,就業(yè)率等等各方面的因素。
展示報(bào)表
ABAP是SAP的基石,入門SAP,首先學(xué)好ABAP至關(guān)重要,ABAP中ALV部分也很重要,展示一個(gè)例子:
TABLES:marav. "MARA&MAKT 視圖
*---------------------------------------------------------------------*
數(shù)據(jù):BEGIN OF gt_tab OCCURS 100,
matnr LIKE marav-matnr,
maktx LIKE marav-maktx,
matkl LIKE marav-matkl,
ntgew LIKE marav-ntgew,
gewei LIKE marav-gewei,
END OF gt_tab.
DATA i_repid LIKE sy-repid.
***ALV設(shè)定
TYPE-POOLS: slis.
數(shù)據(jù) gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA is_layout TYPE slis_layout_alv.
***選擇屏幕制作
SELECT-OPTIONS:
s_matnr FOR marav-matnr MATCHCODE OBJECT mat1.
START-OF-SELECTION.
***取數(shù)據(jù)
SELECT * FROM marav
INTO CORRESPONDING FIELDS OF TABLE gt_tab
WHERE
matnr IN s_matnr.
END-OF-SELECTION.
i_repid = sy-repid.
*使用函數(shù)得到gt_fieldcat內(nèi)表
CALL 函數(shù) 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_人名 = i_repid
i_internal_tabname = 'GT_TAB' "capital letters!
i_inclname = i_repid
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_接口 = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
ENDIF.
***layout設(shè)定
is_layout-zebra = 'X'.
is_layout-colwidth_optimize = 'X'. "優(yōu)化列寬選項(xiàng)是否設(shè)置
***單擊彈出明細(xì)設(shè)定
* is_layout-f2code = '&ETA'.
* is_layout-detail_popup = 'X'.
* is_layout-detail_initial_lines = 'X'.
* 展示數(shù)據(jù)
CALL 函數(shù) 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = i_repid
it_fieldcat = gt_fieldcat
i_save = 'A'
i_callback_user_command = 'FRM_UCOMM' "實(shí)現(xiàn)雙擊事件
is_layout = is_layout
t_outtab = gt_tab
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
ABAP中的指針
1. 什么是ABAP指針:
在ABAP里面,field symbol就相當(dāng)于c語言的指針。如果你定義并且分配了相應(yīng)的結(jié)構(gòu)或者變量給它,其實(shí)它就指向這個(gè)結(jié)構(gòu)或者變量的地址,如果修改了field symbol的值,則相應(yīng)結(jié)構(gòu)或者變量的值也隨之更改。
2. 如何定義指針:
基本形式:領(lǐng)域SYMBOLS .
附加信息:
1. ... TYPE :定義一個(gè)數(shù)據(jù)類型,然后定義指針
2. ... TYPE REF TO :指針指向類或者接口
3. ... TYPE REF TO :指針指向數(shù)據(jù)結(jié)構(gòu)
4. ... TYPE LINE OF :指針內(nèi)表的行項(xiàng)目
5. ... LIKE :指針為數(shù)據(jù)庫表類型
6. ... LIKE LINE OF :指針類型為數(shù)據(jù)庫表的行項(xiàng)目
參考資料 >