ABAP開發(fā)培訓(xùn)教材課件_第1頁
ABAP開發(fā)培訓(xùn)教材課件_第2頁
ABAP開發(fā)培訓(xùn)教材課件_第3頁
ABAP開發(fā)培訓(xùn)教材課件_第4頁
ABAP開發(fā)培訓(xùn)教材課件_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

ABAP開發(fā)培訓(xùn)

SAPABAP顧問余裕輝

2007年10月22日ABAP開發(fā)培訓(xùn)

SAPABAP顧問余裕輝

2007ABAP開發(fā)培訓(xùn)目標讓開發(fā)人員對SAPABAP的開發(fā)流程、ABAP語法及開發(fā)的基本技術(shù)有深入的了解和認識ABAP開發(fā)培訓(xùn)目標培訓(xùn)方式知識講解實例演示練習(xí)&QAèèè培訓(xùn)方式知識講解èèè培訓(xùn)內(nèi)容ABAP開發(fā)過程中常用的TCODEABAP開發(fā)的簡要流程ABAP報表開發(fā)Query的使用èèèè培訓(xùn)內(nèi)容èèèèABAP開發(fā)過程中常用的TCODESE80 ABAP開發(fā)平臺SE11 數(shù)據(jù)字典SE16 查看表數(shù)據(jù)SE38 程序編輯器SE37 函數(shù)編輯器ST05 執(zhí)行跟蹤SE10 傳輸組織器SE93 事務(wù)碼維護SE30 ABAP運行時間分析ABAPDOCU ABAP文檔SHDB 屏幕錄制SMARTFORMS 表單維護ABAP開發(fā)過程中常用的TCODESE80 ABAP開發(fā)平ABAP開發(fā)的簡要流程Keyuser提出需求Add-on與keyuser商討需求Add-on開發(fā)程序Keyuser測試傳輸Add-on修改程序FunctionalSpec(書面&電子)UAT(書面&電子)TransportrequestModifySpecABAP開發(fā)的簡要流程Keyuser提出需求Add-on與kABAP開發(fā)的簡要流程1.創(chuàng)建程序(SE80)2.編寫代碼(SE80)3.激活程序(SE80)4.創(chuàng)建事務(wù)碼(SE93)5.維護Requestnumber(SE10)ABAP開發(fā)的簡要流程1.創(chuàng)建程序(SE80)練習(xí)一練習(xí)create程序和requestnumber.(5’)練習(xí)一練習(xí)create程序和requestnumber.(報表程序分類普通報表程序輸出結(jié)果格式固定,不能對其進行交互式操作;交互式報表程序通過特定的觸發(fā)事件,比如雙擊、菜單、按鈕和功能鍵等,可以對報表結(jié)果進行操作;報表程序分類普通報表程序報表程序結(jié)構(gòu)報表程序結(jié)構(gòu)處理塊的類型處理塊的類型事件塊組成報表程序的基本單位;原則上每個事件塊由各自的關(guān)鍵字為起始,不同的事件塊執(zhí)行不同的任務(wù);事件塊由ABAP運行時環(huán)境調(diào)用,其調(diào)用順序固定,與程序編碼順序無關(guān);缺省的事件塊START-OF-SELECTION事件塊事件塊INITIALIZATIONATSELECTION-SCREENSTART-OF-SELECTIONGETEND-OF-SELECTIONTOP-OFEND-OF事件塊INITIALIZATION事件塊詳細講解事件塊的簡單處理過程:ABAP程序運行的時候,INITIALIZATION首先被調(diào)用;經(jīng)過初始化的輸入屏幕會顯示在表示服務(wù)器;用戶離開輸入屏幕的時候,START-OF-SELCTION事件會被自動調(diào)用;結(jié)果數(shù)據(jù)會以列表的形式顯示在第二個屏幕上;事件塊詳細講解事件塊的簡單處理過程:事件塊的語法源代碼中的事件塊順序不影響它們的執(zhí)行順序事件塊的語法源代碼中的事件塊順序不影響它們的執(zhí)行順序事件塊編碼規(guī)則(1)INITIALIZATION

通常在此事件塊中設(shè)定輸入屏幕字段的初始值

例如:INITIALIZATION.P_DATE=‘20030201’.

效果:輸入屏幕的日期字段初始顯示值為2003年2月1日事件塊編碼規(guī)則(1)INITIALIZATION例如:I事件塊編碼規(guī)則(2)ATSELECTION-SCREEN

通常在此事件塊中進行用戶輸入數(shù)據(jù)的合法性檢查,發(fā)現(xiàn)錯誤則以消息的形式給出警示,直到用戶輸入正確的數(shù)值

例如:ATSELECTION-SCREEN.IFP_DATE=SPACE.MESSAGEE001.ENDIF.

效果:如果字段P_DATE為空,則程序會用消息001“日期字段不能為空!”來提示用戶必須輸入一個日期。而且輸入屏幕會等待用戶輸入,知道該字段數(shù)值合法事件塊編碼規(guī)則(2)ATSELECTION-SCREEN例事件塊編碼規(guī)則(3)START-OF-SELCTION

通常在此事件中針對業(yè)務(wù)需求進行系統(tǒng)數(shù)據(jù)的查詢例如:

start-of-selection.performget_data_for_oil.效果:在輸入屏幕用戶按下執(zhí)行按鈕后,子程序get_data_for_oil被執(zhí)行,在其中獲得業(yè)務(wù)相關(guān)的數(shù)據(jù)存放到內(nèi)表或者其它變量,這些數(shù)據(jù)在END-OF-SELECTION事件塊中被輸出事件塊編碼規(guī)則(3)START-OF-SELCTION例如:事件塊編碼規(guī)則(4)END-OF-SELCTION

通常在此事件中進行結(jié)果清單的輸出例如:

end-of-selection.write:23(1)sy-vline,24(20)tab-gas_planright-justified,效果:數(shù)據(jù)以清單的形式輸出事件塊編碼規(guī)則(4)END-OF-SELCTION例如:事件塊編碼規(guī)則(5)GET

從邏輯數(shù)據(jù)庫中得到數(shù)據(jù)(較少用)TOP-OF

在此事件塊中設(shè)計輸出清單的頁頭

例如:TOP-OFwrite:/1(240)'汽柴油日出廠情況表'centered.write:/20(8)'日期:',29(10)s_date,180(6)'單位:',190(10)'噸'.事件塊編碼規(guī)則(5)GET例如:TOP-OF事件塊編碼規(guī)則(6)END-OF

在此事件中設(shè)定輸出清單的頁腳報表編程模板:例如:

END-OF.Write:‘制作人’,p_name.事件塊編碼規(guī)則(6)END-OF例如:練習(xí)二建立報表程序事件塊(5’)練習(xí)二建立報表程序事件塊(5’)程序名REPORTrep.Additions:

1....NOSTANDARDPAGEHEADING

2....LINE-SIZEcol

3....LINE-COUNTn(m)

表單輸出每頁由n行,其中的m行作為頁腳;

4....MESSAGE-IDmid

消息對象5....DEFININGDATABASEldb使用邏輯數(shù)據(jù)庫,自動產(chǎn)生程序名REPORTrep.Tables語句基本格式TABLESdbtab.Dbtab是指ABAP字典的一個數(shù)據(jù)庫對象,可以是透明表格、視圖和結(jié)構(gòu);該語句的作用是聲明了一個表工作區(qū),類似于C語言里面的STRUCTURE和PASCAL語言里面的RECORD;這個表工作區(qū)由多個字段組成,其名稱、類型和dbtab的字段完全相同;ABAP字典對象中字段的類型自動的轉(zhuǎn)換為ABAP程序的類型;表工作區(qū)通常是一個全局變量。Tables語句基本格式ABAP數(shù)據(jù)類型ABAP數(shù)據(jù)類型Types語句定義自定義數(shù)據(jù)類型語法:types<f>[<length>]<type>.定義簡單數(shù)據(jù)類型:

TYPESname(10)typec.Types語句定義自定義數(shù)據(jù)類型DATA語句定義數(shù)據(jù)變量語法:

DATA<f>[<length>]<type>[<value>][<decimals>]

定義一個簡單類型的變量

DATA:COUNTERTYPEIVALUE1,

FLAGTYPEClength10, Flag(10),WEIGHTTYPEPDECIMALS2VALUE‘1.25’.

DATANAMELIKEFLAG.DATA語句定義數(shù)據(jù)變量InternalTable

內(nèi)表ABAP中的內(nèi)表相當于其他語言中的矩陣,在操作上有復(fù)制、刪除、插入、修改等功能,分為標準表、排序表和哈希表三種類型。使用DATA定義

若使用DATA來定義InternalTable,可分成要不要有HEADERLINE,HEADERLINE就是所謂的WORKAREA,用在數(shù)據(jù)的存取上.

語法:

DATA<f><type>OCCURS<n>[WITHHEADERLINE]

Example:DATAVECTORTYPEIOCCURS10WITHHEADERLINE.

DATA:beginofwaoccurs0,col1(10),col2typeI,endofwa.DATAitabliketableofwawithheaderline.InternalTable內(nèi)表ABAP中的內(nèi)表相當于其他定義輸入屏幕用SELECTION-SCREEN語句來定義輸入屏幕定義輸入屏幕用SELECTION-SCREEN語句來定義輸入SELECTION-SCREEN語法特殊效果SELECTION-SCREEN語法特殊效果輸入字段設(shè)計PARAMETERS語句SELECT-OPTIONS語句輸入字段設(shè)計PARAMETERS語句PARAMETERS語法PARAMETERS語法Select-options語法Select-options語法WRITE語句按照指定的格式把變量里面的數(shù)據(jù)輸出到屏幕語法:WRITE語句按照指定的格式把變量里面的數(shù)據(jù)輸出到屏幕WRITE語句的選項根據(jù)選項的不同,WRITE語句可以輸出到屏幕、輸出到變量、以復(fù)選框的形式輸出、以圖標的格式輸出WRITE語句的選項根據(jù)選項的不同,WRITE語句可以輸出到練習(xí)三編寫一支簡單的報表程序,選擇屏幕上創(chuàng)建一parameters,并設(shè)置必須輸入,之后將輸入的值賦給已定義好的字符變量,最后輸出該變量的值,同時換行輸出自己的姓名(20’)練習(xí)三編寫一支簡單的報表程序,選擇屏幕上創(chuàng)建一parametOPENSQL

語法R/3對於存放在RelationDatabase的資料可使用SQL指令讀取或處理,指令種類可分成DDL(DataDefinitionLanguage)指令,如CREATE,及DML(DataManipulationLanguage),如SELECT及INSERT等。處理方式分成OPENSQL及NATIVESQL,前者在處理時,Database與CommandInterpreter間有一Buffer區(qū),如SELECT*FROM…,後者則直接處理資料庫,如EXCESQLSELECT…等。兩個重要的系統(tǒng)變數(shù):SY-SUBRC:傳回0表成功執(zhí)行指令,4表未找到符合條件資料

SY-DBCNT:正處理的資料筆數(shù)OPENSQL語法R/3對於存放在RelationDa內(nèi)表的操作內(nèi)表操作:AppendCollectReadModifyDeleteLoopSort內(nèi)表的操作內(nèi)表操作:APPENDITAB語法:APPENDLINESOF<itab1>[FROM<n1>][TO<n2>]TO<itab2>

將<itab1>的元素加入至<itab2>中,可選取自<n1>至<n2>的範圍

Example:APPENDLINESOFITABTOJTAB.

ITAB-COL1=1. ITAB-COL2=2. APPENDITAB.APPENDITAB語法:COLLECTITAB在加入新值時將有相同的standardkey(非數(shù)值字段)的數(shù)值字段內(nèi)容進行匯總語法:COLLECT[<wa>INTO]<itab>Example:DATA:BEGINOFITABOCCURS3,COL1(3)TYPEC,COL2TYPEI,ENDOFITAB.ITAB-COL1=‘ABC’.ITAB–COL2=10.COLLECTITAB.ITAB-COL1=‘XYZ’.ITAB-COL2=20.COLLECTITAB.

ITAB-COL1=‘ABC’.ITAB-COL2=30.COLLECTITAB.

“匯總COL2至COL1=ABC的元素上

執(zhí)行結(jié)果:ABC40XYZ20COLLECTITAB在加入新值時將有相同的standarREADITAB語法:READTABLE<itab>[INTO<wa>]INDEX<idx>

自指定位置<idx>讀取元素資料

Example:READTABLEITABINTOLINEINDEX5

讀取ITAB的第5個元素資料,放入LINE的欄位中READITAB語法:MODIFYITAB語法:MODIFY<itab>[FROM<wa>][INDEX<idx>][TRANSPORTING<f1>…<f2>][WHERE<condition>]TRANSPORTING<f1>..<f2>:指定異動的欄位名稱

Example:LINE-COL1=4.LINE-COL2=100.MODIFYITABFROMLINE.

將目前位置元素以LINE的內(nèi)容異動

Example:LINE-COL1=10.MODIFYITABFROMLINEINDEX3TRANSPORTINGCOL1.

將第三個元素的COL1欄位異動為10MODIFYITAB語法:DELETEITAB語法:DELETE<itab>INDEX<idx>Example:DELETE

ITABINDEX4

刪除第四個元素加上刪除條件:DELETE<itab>[FROM<n1>TO<n2>][WHERE<condition>Example:DELETEITABFROM3TO10.

刪除第3至第10個元素DELETEITAB語法:LOOPATITAB語法:LOOPAT<itab>[INTO<wa>][FROM<n1>TO<n2>][WHERE<condition>]<loopexpression>ENDLOOP.

根據(jù)設(shè)定的範圍選取原素資料,讀完後自動移往下一筆

Example:LOOPATITABINTOLINEWHERECOL1>100.WRITE:/SY-TABIX,LINE-COL1.ENDLOOP.

僅讀取COL1>100的元素LOOPATITAB語法:SORTITAB語法:SORT<itab>[<order>][BY<f1>]….[<order>]:可分成遞減(DESCENDING)和遞增(ASCENDING),空白表ASCENDING<f1>:為指定的欄位

Example:SORTITABDESCENDINGBYCOL2.

將ITAB根據(jù)COL2欄位遞減排序SORTITAB語法:查表的方法1.用F1直接查看表名與字段名2.用ST05跟蹤表名查表的方法報表完成1.維護選擇文本2.創(chuàng)建事務(wù)碼3.維護RequestNumber報表完成練習(xí)四創(chuàng)建一支含數(shù)據(jù)查詢的報表程序并輸出結(jié)果,創(chuàng)建tcode,維護requestnumber.(30’)練習(xí)四創(chuàng)建一支含數(shù)據(jù)查詢的報表程序并輸出結(jié)果,創(chuàng)建tcode調(diào)試程序如果調(diào)試程序?F5—單步執(zhí)行F6—跨過程執(zhí)行F7—返回F8—直接執(zhí)行到斷點處調(diào)試程序如果調(diào)試程序?練習(xí)五練習(xí)調(diào)試程序(10’)練習(xí)五練習(xí)調(diào)試程序(10’)子程序(1)子程序類似于C、PASCAL等語言的函數(shù)/過程子程序在事件塊中被調(diào)用子程序(1)子程序類似于C、PASCAL等語言的函數(shù)/過程子程序(2)-語法子程序(2)-語法子程序-接口定義行參-實參傳遞方式值調(diào)用地址調(diào)用子程序-接口定義行參-實參傳遞方式子程序調(diào)用(1)語法:PERFORM<subroutinename><interface>.

子程序調(diào)用(1)語法:子程序調(diào)用(2)子程序調(diào)用(2)結(jié)構(gòu)作為子程序參數(shù)結(jié)構(gòu)作為子程序參數(shù)內(nèi)表作為子程序參數(shù)內(nèi)表作為子程序參數(shù)函數(shù)模塊與子程序(form)相比,函數(shù)模塊是在程序外部定義的,而且能夠在全系統(tǒng)范圍內(nèi)被調(diào)用的子程序;而子程序(form)一般來說只在本程序內(nèi)定義和調(diào)用。函數(shù)模塊具有透明的接口,它的接口與代碼分開定義。函數(shù)模塊都隸屬于某一個函數(shù)組函數(shù)模塊由函數(shù)制作器(FunctionBuilder)創(chuàng)建函數(shù)模塊可以被本系統(tǒng)的程序調(diào)用,而且可以被其它的R/3系統(tǒng)、R/2系統(tǒng)甚至是非R/3系統(tǒng)調(diào)用(RFC)函數(shù)模塊與子程序(form)相比,函數(shù)模塊是在程序外部定義的函數(shù)模塊的調(diào)用函數(shù)模塊是程序外部模塊,不在程序內(nèi)編碼函數(shù)模塊的調(diào)用函數(shù)模塊是程序外部模塊,不在程序內(nèi)編碼函數(shù)組每個函數(shù)模塊都屬于一個函數(shù)組每個函數(shù)組里面的函數(shù)模塊都有相同的主題,實現(xiàn)的功能相互聯(lián)系函數(shù)組實際上是一個類型為F的ABAP程序,它本身不能夠被執(zhí)行當一個函數(shù)模塊被調(diào)用的時候,與它同一個函數(shù)組的函數(shù)都被調(diào)到內(nèi)存區(qū)域里面;函數(shù)組每個函數(shù)模塊都屬于一個函數(shù)組函數(shù)模塊的組成函數(shù)模塊的組成函數(shù)模塊的調(diào)用語法函數(shù)模塊可以設(shè)置對異常的處理,以防出現(xiàn)運行時錯誤函數(shù)模塊的調(diào)用語法函數(shù)模塊可以設(shè)置對異常的處理,以防出現(xiàn)運行QUERY的使用創(chuàng)建一QUERY并進行查詢(SQ01)QUERY的使用創(chuàng)建一QUERY并進行查詢(SQ01)授人以魚不如授人以漁授人以魚演講完畢,謝謝觀看!演講完畢,謝謝觀看!ABAP開發(fā)培訓(xùn)

SAPABAP顧問余裕輝

2007年10月22日ABAP開發(fā)培訓(xùn)

SAPABAP顧問余裕輝

2007ABAP開發(fā)培訓(xùn)目標讓開發(fā)人員對SAPABAP的開發(fā)流程、ABAP語法及開發(fā)的基本技術(shù)有深入的了解和認識ABAP開發(fā)培訓(xùn)目標培訓(xùn)方式知識講解實例演示練習(xí)&QAèèè培訓(xùn)方式知識講解èèè培訓(xùn)內(nèi)容ABAP開發(fā)過程中常用的TCODEABAP開發(fā)的簡要流程ABAP報表開發(fā)Query的使用èèèè培訓(xùn)內(nèi)容èèèèABAP開發(fā)過程中常用的TCODESE80 ABAP開發(fā)平臺SE11 數(shù)據(jù)字典SE16 查看表數(shù)據(jù)SE38 程序編輯器SE37 函數(shù)編輯器ST05 執(zhí)行跟蹤SE10 傳輸組織器SE93 事務(wù)碼維護SE30 ABAP運行時間分析ABAPDOCU ABAP文檔SHDB 屏幕錄制SMARTFORMS 表單維護ABAP開發(fā)過程中常用的TCODESE80 ABAP開發(fā)平ABAP開發(fā)的簡要流程Keyuser提出需求Add-on與keyuser商討需求Add-on開發(fā)程序Keyuser測試傳輸Add-on修改程序FunctionalSpec(書面&電子)UAT(書面&電子)TransportrequestModifySpecABAP開發(fā)的簡要流程Keyuser提出需求Add-on與kABAP開發(fā)的簡要流程1.創(chuàng)建程序(SE80)2.編寫代碼(SE80)3.激活程序(SE80)4.創(chuàng)建事務(wù)碼(SE93)5.維護Requestnumber(SE10)ABAP開發(fā)的簡要流程1.創(chuàng)建程序(SE80)練習(xí)一練習(xí)create程序和requestnumber.(5’)練習(xí)一練習(xí)create程序和requestnumber.(報表程序分類普通報表程序輸出結(jié)果格式固定,不能對其進行交互式操作;交互式報表程序通過特定的觸發(fā)事件,比如雙擊、菜單、按鈕和功能鍵等,可以對報表結(jié)果進行操作;報表程序分類普通報表程序報表程序結(jié)構(gòu)報表程序結(jié)構(gòu)處理塊的類型處理塊的類型事件塊組成報表程序的基本單位;原則上每個事件塊由各自的關(guān)鍵字為起始,不同的事件塊執(zhí)行不同的任務(wù);事件塊由ABAP運行時環(huán)境調(diào)用,其調(diào)用順序固定,與程序編碼順序無關(guān);缺省的事件塊START-OF-SELECTION事件塊事件塊INITIALIZATIONATSELECTION-SCREENSTART-OF-SELECTIONGETEND-OF-SELECTIONTOP-OFEND-OF事件塊INITIALIZATION事件塊詳細講解事件塊的簡單處理過程:ABAP程序運行的時候,INITIALIZATION首先被調(diào)用;經(jīng)過初始化的輸入屏幕會顯示在表示服務(wù)器;用戶離開輸入屏幕的時候,START-OF-SELCTION事件會被自動調(diào)用;結(jié)果數(shù)據(jù)會以列表的形式顯示在第二個屏幕上;事件塊詳細講解事件塊的簡單處理過程:事件塊的語法源代碼中的事件塊順序不影響它們的執(zhí)行順序事件塊的語法源代碼中的事件塊順序不影響它們的執(zhí)行順序事件塊編碼規(guī)則(1)INITIALIZATION

通常在此事件塊中設(shè)定輸入屏幕字段的初始值

例如:INITIALIZATION.P_DATE=‘20030201’.

效果:輸入屏幕的日期字段初始顯示值為2003年2月1日事件塊編碼規(guī)則(1)INITIALIZATION例如:I事件塊編碼規(guī)則(2)ATSELECTION-SCREEN

通常在此事件塊中進行用戶輸入數(shù)據(jù)的合法性檢查,發(fā)現(xiàn)錯誤則以消息的形式給出警示,直到用戶輸入正確的數(shù)值

例如:ATSELECTION-SCREEN.IFP_DATE=SPACE.MESSAGEE001.ENDIF.

效果:如果字段P_DATE為空,則程序會用消息001“日期字段不能為空!”來提示用戶必須輸入一個日期。而且輸入屏幕會等待用戶輸入,知道該字段數(shù)值合法事件塊編碼規(guī)則(2)ATSELECTION-SCREEN例事件塊編碼規(guī)則(3)START-OF-SELCTION

通常在此事件中針對業(yè)務(wù)需求進行系統(tǒng)數(shù)據(jù)的查詢例如:

start-of-selection.performget_data_for_oil.效果:在輸入屏幕用戶按下執(zhí)行按鈕后,子程序get_data_for_oil被執(zhí)行,在其中獲得業(yè)務(wù)相關(guān)的數(shù)據(jù)存放到內(nèi)表或者其它變量,這些數(shù)據(jù)在END-OF-SELECTION事件塊中被輸出事件塊編碼規(guī)則(3)START-OF-SELCTION例如:事件塊編碼規(guī)則(4)END-OF-SELCTION

通常在此事件中進行結(jié)果清單的輸出例如:

end-of-selection.write:23(1)sy-vline,24(20)tab-gas_planright-justified,效果:數(shù)據(jù)以清單的形式輸出事件塊編碼規(guī)則(4)END-OF-SELCTION例如:事件塊編碼規(guī)則(5)GET

從邏輯數(shù)據(jù)庫中得到數(shù)據(jù)(較少用)TOP-OF

在此事件塊中設(shè)計輸出清單的頁頭

例如:TOP-OFwrite:/1(240)'汽柴油日出廠情況表'centered.write:/20(8)'日期:',29(10)s_date,180(6)'單位:',190(10)'噸'.事件塊編碼規(guī)則(5)GET例如:TOP-OF事件塊編碼規(guī)則(6)END-OF

在此事件中設(shè)定輸出清單的頁腳報表編程模板:例如:

END-OF.Write:‘制作人’,p_name.事件塊編碼規(guī)則(6)END-OF例如:練習(xí)二建立報表程序事件塊(5’)練習(xí)二建立報表程序事件塊(5’)程序名REPORTrep.Additions:

1....NOSTANDARDPAGEHEADING

2....LINE-SIZEcol

3....LINE-COUNTn(m)

表單輸出每頁由n行,其中的m行作為頁腳;

4....MESSAGE-IDmid

消息對象5....DEFININGDATABASEldb使用邏輯數(shù)據(jù)庫,自動產(chǎn)生程序名REPORTrep.Tables語句基本格式TABLESdbtab.Dbtab是指ABAP字典的一個數(shù)據(jù)庫對象,可以是透明表格、視圖和結(jié)構(gòu);該語句的作用是聲明了一個表工作區(qū),類似于C語言里面的STRUCTURE和PASCAL語言里面的RECORD;這個表工作區(qū)由多個字段組成,其名稱、類型和dbtab的字段完全相同;ABAP字典對象中字段的類型自動的轉(zhuǎn)換為ABAP程序的類型;表工作區(qū)通常是一個全局變量。Tables語句基本格式ABAP數(shù)據(jù)類型ABAP數(shù)據(jù)類型Types語句定義自定義數(shù)據(jù)類型語法:types<f>[<length>]<type>.定義簡單數(shù)據(jù)類型:

TYPESname(10)typec.Types語句定義自定義數(shù)據(jù)類型DATA語句定義數(shù)據(jù)變量語法:

DATA<f>[<length>]<type>[<value>][<decimals>]

定義一個簡單類型的變量

DATA:COUNTERTYPEIVALUE1,

FLAGTYPEClength10, Flag(10),WEIGHTTYPEPDECIMALS2VALUE‘1.25’.

DATANAMELIKEFLAG.DATA語句定義數(shù)據(jù)變量InternalTable

內(nèi)表ABAP中的內(nèi)表相當于其他語言中的矩陣,在操作上有復(fù)制、刪除、插入、修改等功能,分為標準表、排序表和哈希表三種類型。使用DATA定義

若使用DATA來定義InternalTable,可分成要不要有HEADERLINE,HEADERLINE就是所謂的WORKAREA,用在數(shù)據(jù)的存取上.

語法:

DATA<f><type>OCCURS<n>[WITHHEADERLINE]

Example:DATAVECTORTYPEIOCCURS10WITHHEADERLINE.

DATA:beginofwaoccurs0,col1(10),col2typeI,endofwa.DATAitabliketableofwawithheaderline.InternalTable內(nèi)表ABAP中的內(nèi)表相當于其他定義輸入屏幕用SELECTION-SCREEN語句來定義輸入屏幕定義輸入屏幕用SELECTION-SCREEN語句來定義輸入SELECTION-SCREEN語法特殊效果SELECTION-SCREEN語法特殊效果輸入字段設(shè)計PARAMETERS語句SELECT-OPTIONS語句輸入字段設(shè)計PARAMETERS語句PARAMETERS語法PARAMETERS語法Select-options語法Select-options語法WRITE語句按照指定的格式把變量里面的數(shù)據(jù)輸出到屏幕語法:WRITE語句按照指定的格式把變量里面的數(shù)據(jù)輸出到屏幕WRITE語句的選項根據(jù)選項的不同,WRITE語句可以輸出到屏幕、輸出到變量、以復(fù)選框的形式輸出、以圖標的格式輸出WRITE語句的選項根據(jù)選項的不同,WRITE語句可以輸出到練習(xí)三編寫一支簡單的報表程序,選擇屏幕上創(chuàng)建一parameters,并設(shè)置必須輸入,之后將輸入的值賦給已定義好的字符變量,最后輸出該變量的值,同時換行輸出自己的姓名(20’)練習(xí)三編寫一支簡單的報表程序,選擇屏幕上創(chuàng)建一parametOPENSQL

語法R/3對於存放在RelationDatabase的資料可使用SQL指令讀取或處理,指令種類可分成DDL(DataDefinitionLanguage)指令,如CREATE,及DML(DataManipulationLanguage),如SELECT及INSERT等。處理方式分成OPENSQL及NATIVESQL,前者在處理時,Database與CommandInterpreter間有一Buffer區(qū),如SELECT*FROM…,後者則直接處理資料庫,如EXCESQLSELECT…等。兩個重要的系統(tǒng)變數(shù):SY-SUBRC:傳回0表成功執(zhí)行指令,4表未找到符合條件資料

SY-DBCNT:正處理的資料筆數(shù)OPENSQL語法R/3對於存放在RelationDa內(nèi)表的操作內(nèi)表操作:AppendCollectReadModifyDeleteLoopSort內(nèi)表的操作內(nèi)表操作:APPENDITAB語法:APPENDLINESOF<itab1>[FROM<n1>][TO<n2>]TO<itab2>

將<itab1>的元素加入至<itab2>中,可選取自<n1>至<n2>的範圍

Example:APPENDLINESOFITABTOJTAB.

ITAB-COL1=1. ITAB-COL2=2. APPENDITAB.APPENDITAB語法:COLLECTITAB在加入新值時將有相同的standardkey(非數(shù)值字段)的數(shù)值字段內(nèi)容進行匯總語法:COLLECT[<wa>INTO]<itab>Example:DATA:BEGINOFITABOCCURS3,COL1(3)TYPEC,COL2TYPEI,ENDOFITAB.ITAB-COL1=‘ABC’.ITAB–COL2=10.COLLECTITAB.ITAB-COL1=‘XYZ’.ITAB-COL2=20.COLLECTITAB.

ITAB-COL1=‘ABC’.ITAB-COL2=30.COLLECTITAB.

“匯總COL2至COL1=ABC的元素上

執(zhí)行結(jié)果:ABC40XYZ20COLLECTITAB在加入新值時將有相同的standarREADITAB語法:READTABLE<itab>[INTO<wa>]INDEX<idx>

自指定位置<idx>讀取元素資料

Example:READTABLEITABINTOLINEINDEX5

讀取ITAB的第5個元素資料,放入LINE的欄位中READITAB語法:MODIFYITAB語法:MODIFY<itab>[FROM<wa>][INDEX<idx>][TRANSPORTING<f1>…<f2>][WHERE<condition>]TRANSPORTING<f1>..<f2>:指定異動的欄位名稱

Example:LINE-COL1=4.LINE-COL2=100.MODIFYITABFROMLINE.

將目前位置元素以LINE的內(nèi)容異動

Example:LINE-COL1=10.MODIFYITABFROMLINEINDEX3TRANSPORTINGCOL1.

將第三個元素的COL1欄位異動為10MODIFYITAB語法:DELETEITAB語法:DELETE<itab>INDEX<idx>Example:DELETE

ITABINDEX4

刪除第四個元素加上刪除條件:DELETE<itab>[FROM<n1>TO<n2>][WHERE<condition>Example:DELETEITABFROM3TO10.

刪除第3至第1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論