第一篇:ABAP知識(shí)總結(jié)
一. SAP在企業(yè)中的策略
On premise(前提)(知識(shí)庫—資源流程)完全面向?qū)ο蟮母拍?,通過面向服務(wù)的架構(gòu),解決核心業(yè)務(wù)。
On demand 通過創(chuàng)新進(jìn)行功能的擴(kuò)展并集成在業(yè)務(wù)的整個(gè)流程里。
On device(產(chǎn)品策略)通過擴(kuò)展消費(fèi)者的需求,以提供滿足消費(fèi)者的策略,擴(kuò)展SAP 的功能。
這三項(xiàng)完美結(jié)合,能確保數(shù)據(jù)的聯(lián)系性和流程的完整結(jié)合。并通過多層應(yīng)用對(duì)流程進(jìn)行管理。
二. Sap 提供各種產(chǎn)品類型給不同規(guī)模的公司。
三. Sap business suite 提供適應(yīng)不同企業(yè)需求的解決方案,還擁有大量針對(duì)特定行業(yè)的功能。Sap netweaver 的知識(shí)庫:
核心應(yīng)用(ERP/SRM/SCM)——工業(yè)應(yīng)用——補(bǔ)充應(yīng)用——SAP 應(yīng)用的增強(qiáng)包
四. Applications 和 components
不同的應(yīng)用可以包含相同的組件。
Components(sap ECC= sap central component)五. 逐步釋放給廣大用戶使用:
Beta 測(cè)試版——釋放給用戶(restricted)——無限制的釋放給用戶
六. 業(yè)務(wù)的生命周期(維護(hù)策略):
主流維護(hù)(從限制到非限制)——擴(kuò)展的維護(hù)——客戶自定義的維護(hù) 七. Sap netweaver的層次和主要功能: 應(yīng)用架構(gòu)
三個(gè)維度,三個(gè)集成:共三層
人的集成(多渠道—portal門戶和collaboration協(xié)作)——信息集成(主數(shù)據(jù)、知識(shí)、業(yè)務(wù))——流程集成 第四層:這三種集成的應(yīng)用平臺(tái)為java和abap 數(shù)據(jù)庫和系統(tǒng) DB、OS 八.
1、Sap netweaver 應(yīng)用服務(wù)提供了:多級(jí)架構(gòu);可靠的運(yùn)行環(huán)境(java和abap);很高的擴(kuò)展性;操作系統(tǒng)和數(shù)據(jù)庫獨(dú)立;方便擴(kuò)展環(huán)境;支持多種協(xié)議;對(duì)執(zhí)行企業(yè)流程有高的安全標(biāo)準(zhǔn)。、2、外部系統(tǒng):表現(xiàn)層(支持多種用戶接口,GUI 和browser)
應(yīng)用層(支持多種操作系統(tǒng))
數(shù)據(jù)庫層(支持多種數(shù)據(jù)庫)
3、應(yīng)用層——dispatcher,通過分發(fā)器對(duì)表現(xiàn)層直接進(jìn)行控制
通過ICM(內(nèi)部通訊)控制
九、/n 退出當(dāng)前
/nxxxx直接訪問xxxx /n打開overview of sessions /oxxxx打開一個(gè)新的頁面并訪問xxxx /nend 關(guān)閉窗口,有提示信息 /nex 直接關(guān)閉 /i 刪除當(dāng)前窗口
十、AS(應(yīng)用服務(wù)器)中ABAP Processes:三種
1.B/S
Message server(MS):處理信息在位于AS ABAP的分布式的觸發(fā)器之間。每個(gè)SAP系統(tǒng)只配置一次MS
2.gateway(GW):在SAP 系統(tǒng)之間或者在SAP 系統(tǒng)與外部應(yīng)用系統(tǒng)之間進(jìn)行交流。每個(gè)GW有一個(gè)觸發(fā)器
3.C/S
Internet communication manager(ICM):與SAP系統(tǒng)的交流利用web 協(xié)議(protocol),比如HTTP,ICM收到用戶請(qǐng)求并傳給SAP系統(tǒng)??梢耘渲靡粋€(gè)最大的ICM給每個(gè)應(yīng)用服務(wù)器
十一、用戶傳輸請(qǐng)求的過程
表現(xiàn)層(GUI):將屏幕上的GUI圖像展現(xiàn)給用戶,再將其轉(zhuǎn)化為內(nèi)部的格式傳遞給AS ABAP 系統(tǒng)。
應(yīng)用層:觸發(fā)器將用戶所有請(qǐng)求排列,遵循先進(jìn)先出的原則。處理用戶請(qǐng)求必須從abap數(shù)據(jù)庫中讀取數(shù)據(jù)。當(dāng)一個(gè)工作流程完成,結(jié)果就會(huì)通過觸發(fā)器返回給SAP GUI,SAP GUI通過對(duì)數(shù)據(jù)的編譯然后向用戶輸出屏幕。這個(gè)階段被稱為buffer(緩存),經(jīng)常被讀取的數(shù)據(jù)通過緩存,可直接被讀取,不用每次讀取數(shù)據(jù)庫中的。幫助加速處理用戶請(qǐng)求。
數(shù)據(jù)庫層:每一項(xiàng)工作流程都和ABAP數(shù)據(jù)庫直接相連 問題?應(yīng)用層和數(shù)據(jù)庫層之間如何進(jìn)行數(shù)據(jù)的傳輸? ABAP 編譯器通過專門的語言(OPEN SQL)訪問數(shù)據(jù)庫接口,DB interface 再通過Native SQL語言訪問數(shù)據(jù)庫層,或者直接在緩存中讀取 ABAP 編譯器直接通過Native SQL語言對(duì)數(shù)據(jù)庫層進(jìn)行訪問
十二、PBO和 PAI
十三、業(yè)務(wù)流程中的數(shù)據(jù)同步:
1、SAP系統(tǒng)中的CRM獲得訂單信息,并將其傳輸?shù)紼RP的后端backend
2、格式化數(shù)據(jù)成相同類型的數(shù)據(jù)
3、通過遠(yuǎn)程調(diào)用RFC 技術(shù)實(shí)現(xiàn)
4、傳輸類型,每隔六十秒同步一次
5、在網(wǎng)上提供產(chǎn)品和服務(wù) P135問題?
1. 哪些接口或交流選項(xiàng)是SAP 所支持的? HTTP;SMTP;RFC;BAPIs 2. BAPIs 的作用?
Requst data from an sap system
Pass data to an sap system
Access business processes in SAP system 在程序中用字典元素定義數(shù)據(jù)對(duì)象
DATA mycarried TYPE s_carr_id.獲得一個(gè)數(shù)據(jù)對(duì)象(變量)的類型指明在data element里是
DATA myconnid TYPE sbc400focc-connid.獲得一個(gè)數(shù)據(jù)對(duì)象(變量)有相同的類型的結(jié)構(gòu)體是sbc400focc-connid.PARAMENTERS_pa_carr TYPE spfli-carrid.獲得一個(gè)域自動(dòng)出現(xiàn)在屏上和spfli-carrid的變量類型相同。
DATA wa_focc TYPE sbc400fccc.其中data wa_focc type sbc400focc.是定義一個(gè)結(jié)構(gòu)體,定義結(jié)構(gòu)體的命名規(guī) 則通常是以wa_開頭加上變量名,代表是一個(gè)結(jié)構(gòu)體變量。
獲得一個(gè)和結(jié)構(gòu)體sbc400fccc有相同類型的結(jié)構(gòu)體變量。
DATA wa_spfli TYPE spfli.data wa_spfli type spfli.是用來定義一個(gè)透明表。
獲得與spfli表中一行具有相同類型的結(jié)構(gòu)體變量。
第二篇:ABAP學(xué)習(xí)總結(jié)
SAP學(xué)習(xí)總結(jié) 信管0911
楊釧
2011-12-2
SAP學(xué)習(xí)總結(jié)
立談之間,來集團(tuán)參加ERP項(xiàng)目已近四個(gè)月,通過集團(tuán)ERP項(xiàng)目組精心組織的培訓(xùn),經(jīng)過自己的努力學(xué)習(xí),我對(duì)ERP的認(rèn)識(shí)有了很大程度的轉(zhuǎn)變。從一開始的不了解,帶著對(duì)很多專業(yè)名詞及模塊功能的疑問,到現(xiàn)在融入到ERP項(xiàng)目組后,被SAP龐大的功能所震撼;從一開始認(rèn)為SAP僅僅是一種應(yīng)用軟件,跟其他公司的ERP差不多,到現(xiàn)在深刻的地體會(huì)到SAP在企業(yè)管理中的重要位置;從一開始對(duì)SAP可能帶來的不便以及人力、財(cái)力、時(shí)間成本產(chǎn)生抵觸情緒,到現(xiàn)在對(duì)SAP產(chǎn)生依賴心理。這些對(duì)SAP認(rèn)識(shí)的轉(zhuǎn)變,讓我意識(shí)到作為一名關(guān)鍵用戶和信息人員,為確保ERP的上線成功,應(yīng)該如何發(fā)揮自身的作用。
5月9日,初步接觸到了SAP軟件。五月份到七月份我初步學(xué)習(xí)SAP中ABAP語言,起初感覺這跟平時(shí)學(xué)校學(xué)習(xí)的語言差不多,但是接觸的越久,我就越深深 的震撼ABAP語言的嚴(yán)謹(jǐn)性,以及ABAP編輯語言在SAP中的重要的位置,對(duì)其他工作模塊工作有非常重要的影響。通過這段時(shí)間ABAP語言的學(xué)習(xí)后,我進(jìn)入技術(shù)組協(xié)助技術(shù)組中的各位老師,解決些小問題。工作一段時(shí)間之后,我才發(fā)覺,ERP前期項(xiàng)目的工作量大大超乎我的想像,它的重要性也讓人感到緊張。在每天的工作中,大家加班加點(diǎn),熱火朝天的討論業(yè)務(wù)流程問題,以及程序代碼如何實(shí)現(xiàn)業(yè)務(wù)需求,有時(shí)候?yàn)榱艘粋€(gè)觀點(diǎn)不同而爭(zhēng)論不休,有時(shí)候又為達(dá)成共識(shí)而言歡高興。大家良好的溝通交流,讓我們這些初識(shí)者更積極主動(dòng)地參與進(jìn)來。
在技術(shù)組組工作了近兩周之后,為了讓我們?nèi)嬲J(rèn)識(shí)SAP,從而更深入地開展工作,ERP項(xiàng)目組辦公室組織人員進(jìn)行了為期一周的SAP開發(fā)語言ABAP的培訓(xùn)。對(duì)于我們來說,掌握ABAP編程語言是深入理解SAP軟件知識(shí)要領(lǐng)的敲門磚。通過對(duì)ABAP的學(xué)習(xí),我對(duì)SAP的后臺(tái)有了更進(jìn)一步的了解,也為下一步深入接觸實(shí)際操作打下了基礎(chǔ)。在BASIS組織的講座和培訓(xùn)中,我對(duì)BASIS有了一定了解,意識(shí)到ABAP對(duì)做好SAP系統(tǒng)的后臺(tái)規(guī)劃、安裝、配置、管理、監(jiān)控、維護(hù)、調(diào)優(yōu)等工作的重要性。通過此次培訓(xùn),大家對(duì)SAP有了些許的初步了解,對(duì)應(yīng)該做好哪些工作有了初步的認(rèn)識(shí)。
接下來說說,近半年我所學(xué)到的一些ABAP知識(shí),報(bào)表顯示ALV ALV是系統(tǒng)的一種網(wǎng)格的顯示方式,這種方式帶有匯總排序篩選等功能,ALV格式的數(shù)據(jù)是以單元格為單位顯示,不象一般的寫屏方式拷出來或是導(dǎo)出成文件不同列的內(nèi)容粘在一塊,這種方式便于數(shù)據(jù)導(dǎo)出來放在電子表格里進(jìn)行加工.ALV: abap list view / Sap list view,在SAP報(bào)表數(shù)據(jù)輸出使用最廣泛的技術(shù)基于GUI,在展現(xiàn)層處理
操作簡單
較強(qiáng)的標(biāo)準(zhǔn)功能。排序、過濾、計(jì)算等
有三個(gè)版本的技術(shù)實(shí)現(xiàn)Function->grid->OM
BDC技術(shù)
首先簡單解釋一下BDC(Batch Data Conversion):
在SAP系統(tǒng)里,由于某種原因,可能需要重復(fù)輸入數(shù)據(jù),(數(shù)據(jù)不同,但是操作是相同的,典型的情形就是切換系統(tǒng)的時(shí)候,舊系統(tǒng)的數(shù)據(jù)需要導(dǎo)入SAP),大致過程不外乎是這樣: 輸入一個(gè)t-code,進(jìn)入一個(gè)某個(gè)屏幕,然后輸入一個(gè)值(有時(shí)還要加上一些附加的checkbox選項(xiàng)等),點(diǎn)執(zhí)行或者確定按鈕,進(jìn)入另一個(gè)屏幕,在某些字段輸入值(`也可能是標(biāo)注checkbox選中或者不選中)或者修改這些字段里的值。
然后按“Eneter”??
最后按“SAVE”??,一條記錄完成了,繼續(xù)下一條,如此循環(huán)
等等ABAP技術(shù),每當(dāng)接觸ABAP學(xué)習(xí)ABAP的新知識(shí),都感覺很震撼,ABAP語言的邏輯性真的很強(qiáng)。
在SAP的學(xué)習(xí)過程中,我認(rèn)識(shí)到只有系統(tǒng)地學(xué)習(xí)財(cái)務(wù)模塊、人資模塊、生產(chǎn)模塊和物資模塊才能對(duì)整個(gè)ERP系統(tǒng)功能和SAP的關(guān)鍵設(shè)置有整體的了解。不僅僅如此,系統(tǒng)學(xué)習(xí)這些模塊知識(shí),對(duì)ABAP語言的學(xué)習(xí)和程序報(bào)表的開發(fā)都有很大的用處的。雖然過去了半年,但是我并沒有覺得是在浪費(fèi)時(shí)間,反而覺得比在學(xué)校學(xué)的還要多,覺得很充實(shí),讓我找到了前進(jìn)的目標(biāo)。
第三篇:ABAP使用OLE方法總結(jié)
SAP ABAP OLE 操作EXCEL小結(jié)
ABAP直接操作EXCEL實(shí)現(xiàn)數(shù)據(jù)處理。這里是用OLE實(shí)現(xiàn)操作EXCEL的?,F(xiàn)在還有
DOI操作EXCEL等方法。以后用到再做介紹。此處不是直接生成EXCEL文件,而是從
服務(wù)器已經(jīng)上傳的EXCEL模板中下載模板然后打開修改實(shí)現(xiàn)數(shù)據(jù)保存。也可以直接創(chuàng)建
新的EXCEL文件往里面?zhèn)鬟f數(shù)據(jù)并設(shè)置格式。這里不做介紹。
1.采用模板文件實(shí)現(xiàn)。上傳EXCEL模板
T-code:SMW0 WebRFC 的二進(jìn)制數(shù)據(jù) 包:MI
點(diǎn)擊
模板數(shù)據(jù)保存在系統(tǒng)表004km.cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4.IF lc_fullpath = “".MESSAGE ”不能打開excel“ TYPE ”E“.ENDIF.IF sy-subrc = 0.p_dest = lc_fullpath.* concatenate p_objid ”.XLS“ into ls_objnam.CONDENSE ls_objnam NO-GAPS.SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF lo_objdata WHERE srtf2 = 0 AND relid = ”MI“ AND objid = p_objid.*檢查表wwwdata中是否存在所指定的模板文件
IF sy-subrc NE 0 OR lo_objdata-objid EQ space.“如果不存在,則給出錯(cuò)誤提示
CONCATENATE ”模板文件“ ls_objnam ”不存在“ INTO ls_errtxt.MESSAGE ls_errtxt TYPE ”I“.ENDIF.ls_destination = p_dest.”保存路徑
*如果存在,調(diào)用DOWNLOAD_WEB_OBJECT 函數(shù)下載模板到路徑下
CALL FUNCTION ”DOWNLOAD_WEB_OBJECT“ EXPORTING key = lo_objdata destination = ls_destination IMPORTING rc = li_rc.IF li_rc NE 0.CONCATENATE ”模板文件:“ ls_objnam ”下載失敗“ INTO ls_errtxt.MESSAGE ls_errtxt TYPE ”E“.ENDIF.fname = ls_destination.ENDIF.ENDFORM.”fm_excel
3.下載完模板后,打開模板文件,填入數(shù)據(jù)
CREATE OBJECT excel “EXCEL.APPLICATION”.“Create EXCEL OBJECT IF sy-subrc NE 0.EXIT.ENDIF.SET PROPERTY OF excel ”Visible“ = 0.”1/0 是否顯示EXCEL
CALL METHOD OF excel “Workbooks” = workbook.CALL METHOD OF workbook “Open” EXPORTING #1 = fname..“打開上面下載路徑下的excel文件
CALL METHOD OF excel ”Sheets“ = sheet EXPORTING #1 = 1.CALL METHOD OF sheet ”Select“.CALL METHOD OF sheet ”ACTIVATE“.“sheet 激活
SET PROPERTY OF sheet ”NAME“ = sheetname.“設(shè)定sheet名稱
*此處假設(shè)內(nèi)表itab 中已經(jīng)存在需要寫入excel中的數(shù)據(jù)
*并且假如從模板的第7行開始插入數(shù)據(jù)
LOOP AT itab INTO wa.tab = wa-tabix + 6.*在excel中插入一行
PERFORM excel_row_insert USING sheet tab 1.*填充所插入行的每個(gè)單元格的數(shù)據(jù)
PERFORM fill_range USING tab 1 wa-t01.PERFORM fill_range USING tab 2 wa-t02.PERFORM fill_range USING tab 3 wa-t03.PERFORM fill_range USING tab 4 wa-t04.PERFORM fill_range USING tab 5 wa-t05.PERFORM fill_range USING tab 6 wa-t06.ENDLOOP.*設(shè)置EXCEL中所插入的數(shù)據(jù)行邊框線格式為黑色有邊框
bod = tab.CONDENSE bod NO-GAPS.CONCATENATE ”A6:F“ bod INTO bod.PERFORM borderrange USING excel bod.PERFORM sub_excel_save.”保存excel數(shù)據(jù)
*&-------* *& Form sub_excel_save *&-------* * text *--------* FORM sub_excel_save.GET PROPERTY OF excel “ActiveSheet” = sheet.“獲取活動(dòng)SHEET
FREE OBJECT sheet.FREE OBJECT workbook.GET PROPERTY OF excel “ActiveWorkbook” = workbook.CALL METHOD OF workbook “SAVE”.SET PROPERTY OF excel “Visible” = 1.“是否顯示EXCEL 此處顯示不退出
* SET PROPERTY OF excel ”Visible“ = 1.* CALL METHOD OF workbook ”CLOSE“.* CALL METHOD OF excel ”QUIT“.注釋部分為不顯示直接退出
FREE OBJECT sheet.FREE OBJECT workbook.FREE OBJECT excel.ENDFORM.”save_book
*&-------* *& 向excel中的指定行插入N行
*&-------* FORM excel_row_insert USING lcobj_sheet lc_row lc_count.DATA lc_range TYPE ole2_object.DATA h_borders TYPE ole2_object.DO lc_count TIMES.CALL METHOD OF lcobj_sheet “Rows” = lc_range EXPORTING #1 = 6.CALL METHOD OF lc_range “Copy”.“COPY第6行插入一個(gè)新行
CALL METHOD OF lcobj_sheet “Rows” = lc_range EXPORTING #1 = lc_row.CALL METHOD OF lc_range “Insert”.CALL METHOD OF lc_range “ClearContents”.“是否需要清空Cell ENDDO.ENDFORM.”excel_row_insert
*&-------* *& Form fill_range *&-------* * text 填充EXCEL 單元格
*--------* *-->VALUE(F_ROW)text *-->VALUE(F_COL)text *-->VALUE(F_VALUE)text *--------* FORM fill_range USING value(f_row)value(f_col)value(f_value).DATA: row TYPE i, col TYPE i.row = f_row.col = f_col.CALL METHOD OF excel “CELLS” = cell EXPORTING #1 = row #2 = col.SET PROPERTY OF cell “VALUE” = f_value.ENDFORM.“fill_range
*&-------* *& Form borderrange *&-------* * text:設(shè)置EXCEL中所插入的數(shù)據(jù)行邊框線格式
*--------* *-->LCOBJ_EXCEL text *-->RANGE text *--------* FORM borderrange USING lcobj_excel range.DATA: lc_cell TYPE ole2_object , lc_borders TYPE ole2_object.CALL METHOD OF lcobj_excel ”RANGE“ = lc_cell EXPORTING #1 = range.DO 4 TIMES.CALL METHOD OF lc_cell ”BORDERS“ = lc_borders
EXPORTING #1 = sy-index.SET PROPERTY OF lc_borders ”LineStyle“ = ”1“.SET PROPERTY OF lc_borders ”WEIGHT“ = 2.”4=max SET PROPERTY OF lc_borders “ColorIndex” = “1”.ENDDO.FREE OBJECT lc_borders.FREE OBJECT lc_cell.ENDFORM."borderrange
暫時(shí)只用到了這么多,還有ABAP設(shè)置EXCEL字體,對(duì)齊方式等功能。什么時(shí)候用到了再
做研究。希望對(duì)大家有所幫助。
第四篇:ABAP 內(nèi)表用法小結(jié)
ABAP 內(nèi)表用法小結(jié)
ABAP中的內(nèi)表相當(dāng)于其他程序設(shè)計(jì)語言中的二維數(shù)組,存儲(chǔ)多行結(jié)構(gòu)相同的數(shù)據(jù) 不同于二維數(shù)組,內(nèi)表在創(chuàng)建后,列結(jié)構(gòu)與列數(shù)是固定不變的,而行數(shù)是動(dòng)態(tài)增長的
內(nèi)表支持循環(huán)對(duì)每行數(shù)據(jù)進(jìn)行操作,也支持整體操作
內(nèi)表是具有行和列的表結(jié)構(gòu),然而,不同于數(shù)據(jù)庫表,內(nèi)表僅在程序運(yùn)行期間在內(nèi)存中存儲(chǔ)數(shù)據(jù)
ABAP中有三種內(nèi)表類型:標(biāo)準(zhǔn)表,哈希表,排序表 – ABAP內(nèi)表數(shù)據(jù)類型
內(nèi)表數(shù)據(jù)對(duì)象是實(shí)際的內(nèi)表,可以用數(shù)據(jù)進(jìn)行填充
內(nèi)表數(shù)據(jù)類型是用于定義內(nèi)表數(shù)據(jù)對(duì)象的抽象數(shù)據(jù)類型(ADT)可以使用的內(nèi)表數(shù)據(jù)類型有: Structure 數(shù)據(jù)庫表
用戶自定義數(shù)據(jù)類型 –ABAP內(nèi)表聲明 1> TYPES: BEGIN OF line, field1 TYPE i, field2 TYPE i, END OF line.* 聲明一個(gè)數(shù)據(jù)類型
DATA: ITAB_WA TYPE(LIKE)line.“聲明一個(gè)內(nèi)表工作區(qū)
DATA: ITAB TYPE(LIKE)line OCCURS 0.“聲明一個(gè)無工作區(qū)的內(nèi)表 DATA: ITAB TYPE(LIKE)STANDARD TABLE OF line INITIAL SIZE 0.“聲明一個(gè)有工作區(qū)的內(nèi)表 DATA: ITAB TYPE(LIKE)line OCCURS 0 WITH HEADER LINE.DATA: ITAB TYPE(LIKE)STANDARD TABLE OF line INITIAL SIZE 0 WITH HEADER LINE.2> DATA: BEGIN OF line, field1 TYPE i, field2 TYPE i, END OF line.* 聲明一個(gè)line對(duì)象,該對(duì)象可以作為工作區(qū)使用
* 用DATA定義的line本身也是一個(gè)結(jié)構(gòu)類型,也可再聲明一個(gè)工作區(qū) DATA: ITAB_WA TYPE(LIKE)line.“聲明一個(gè)工作區(qū)
DATA: ITAB TYPE(LIKE)line OCCURS 0 WITH HEADER LINE.“聲明一個(gè)帶工作區(qū)的內(nèi)表
DATA: ITAB TYPE(LIKE)STANDARD TABLE OF line INITIAL SIZE 0 WITH HEADER LINE.“聲明一個(gè)帶工作區(qū)的內(nèi)表 3>直接定義內(nèi)表,這個(gè)內(nèi)表是有工作區(qū)的 DATA: BEGIN OF ITAB OCCURS 0 , CARR1 LIKE SPFLI-CARRID, CONN1 LIKE SPFLI-CONNID, END OF ITAB.* DATA: ITAB1 TYPE ITAB.(錯(cuò)誤的,實(shí)踐證明,定義出來的什么都不是)。正確方法:DATA: ITAB1 TYPE ITAB OCCURS 0.(這樣定義后的是一個(gè)無工作區(qū)的內(nèi)表)。
DATA: ITAB1 LIKE ITAB OCCURS 0 WITH HEADER LINE.“定義一個(gè)帶工作區(qū)內(nèi)表
4> type ref to 定義內(nèi)表
type ref to 屬于ABAP中面向?qū)ο蟮木幊獭K嵌x一個(gè)類的對(duì)象。5>通過數(shù)據(jù)庫表定義
data itab1 type table of sflight.“定義一個(gè)不帶內(nèi)表的工作區(qū) data wa1 like line of sflgit.“定義一個(gè)內(nèi)表工作區(qū)
data itab1 type table of sflight with header line.“定義一個(gè)帶內(nèi)表的工作區(qū)
–兩種內(nèi)表定義方式的主要區(qū)別在于是否有隱式表頭行
內(nèi)表是按行進(jìn)行訪問的,然而,程序?qū)?nèi)表的行操作不能直接進(jìn)行,必須使用一種接口來傳輸,這個(gè)接口就是工作區(qū)(Work Area)–內(nèi)表操作 填充內(nèi)表行
append
insert
insert
read
modify
Loop at
–循環(huán)體的MODIFY,DELETE等語句不必指定INDEX項(xiàng),系統(tǒng)默認(rèn)處理當(dāng)前行.–如果不需要讀取所有的內(nèi)表行,可以使用WHERE選項(xiàng)進(jìn)行限制 – LOOP AT
clear
SORT
–AS TEXT影響字符字段的排序方式,如果不使用該選項(xiàng),系統(tǒng)將按字符平臺(tái)相應(yīng)內(nèi)部編碼進(jìn)行排序,否則,系統(tǒng)根據(jù)當(dāng)前語言按字母順序排序字符字段 刪除重復(fù)行
DELETE ADJACENT DUPLICATES FROM
DESCRIBE TALBE
INSERT LINES OF
APPEND LINES OF
DELETE
整體復(fù)制內(nèi)表,目標(biāo)內(nèi)表原有內(nèi)容被覆蓋
MOVE
MOVE
MOVE-CORRESPONDING
第五篇:SAP ABAP OLE操作EXCEL小結(jié)
ABAP直接操作EXCEL實(shí)現(xiàn)數(shù)據(jù)處理。這里是用OLE實(shí)現(xiàn)操作EXCEL的?,F(xiàn)在還有 DOI操作EXCEL等方法。以后用到再做介紹。此處不是直接生成EXCEL文件,而是從 服務(wù)器已經(jīng)上傳的EXCEL模板中下載模板然后打開修改實(shí)現(xiàn)數(shù)據(jù)保存。也可以直接創(chuàng)建 新的EXCEL文件往里面?zhèn)鬟f數(shù)據(jù)并設(shè)置格式。這里不做介紹。
1.采用模板文件實(shí)現(xiàn)。上傳EXCEL模板 T-code:SMW0
注意選擇的是binary data(對(duì)于EXCEL模版上傳)如果是HTML上傳,對(duì)于存于004km.cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4.IF lc_fullpath = ''.MESSAGE '不能打開excel' TYPE 'E'.ENDIF.IF sy-subrc = 0.p_dest = lc_fullpath.* concatenate p_objid '.XLS' into ls_objnam.CONDENSE ls_objnam NO-GAPS.SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF lo_objdata WHERE srtf2 = 0 AND relid = 'MI' AND objid = p_objid.“先嘗試取一下,接著檢查是否取到制定模版問件 *檢查表wwwdata中是否存在所指定的模板文件
IF sy-subrc NE 0 OR lo_objdata-objid EQ space.“如果不存在,則給出錯(cuò)誤提示
CONCATENATE '模板文件' ls_objnam '不存在' INTO ls_errtxt.MESSAGE ls_errtxt TYPE 'I'.ENDIF.ls_destination = p_dest.”保存路徑
*如果存在,調(diào)用DOWNLOAD_WEB_OBJECT 函數(shù)下載模板到路徑下
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' EXPORTING key = lo_objdata destination = ls_destination IMPORTING rc = li_rc.IF li_rc NE 0.CONCATENATE '模板文件:' ls_objnam '下載失敗' INTO ls_errtxt.MESSAGE ls_errtxt TYPE 'E'.ENDIF.fname = ls_destination.ENDIF.ENDFORM.“fm_excel
3.下載完模板后,打開模板文件,填入數(shù)據(jù) DATA: EXCEL TYPE ole2_object, WORKBOOK TYPE ole2_object, SHEET TYPE ole2_object.CREATE OBJECT excel 'EXCEL.APPLICATION'.”Create EXCEL OBJECT IF sy-subrc NE 0.EXIT.ENDIF.SET PROPERTY OF excel 'Visible' = 0.“1/0 是否顯示EXCEL CALL METHOD OF excel 'Workbooks' = workbook.CALL METHOD OF workbook 'Open' EXPORTING #1 = fname..”打開上面下載路徑下的excel文件
CALL METHOD OF excel 'Sheets' = sheet EXPORTING #1 = 1.CALL METHOD OF sheet 'Select'.CALL METHOD OF sheet 'ACTIVATE'.“sheet 激活 DATA SHEETNAME TYPE STRING.SHEETNAME = 'TESTTESTTEST'.SET PROPERTY OF sheet 'NAME' = sheetname.“設(shè)定sheet名稱 *此處假設(shè)內(nèi)表itab 中已經(jīng)存在需要寫入excel中的數(shù)據(jù) *并且假如從模板的第7行開始插入數(shù)據(jù) DATA ITAB LIKE STANDARD TABLE OF SFLIGHT.DATA WA LIKE SFLIGHT.DATA: TAB TYPE I,BOD(5)TYPE C.SELECT * INTO TABLE ITAB FROM SFLIGHT UP TO 8 ROWS.LOOP AT itab INTO wa.tab = sy-tabix + 6.*在excel中插入一行
PERFORM excel_row_insert USING sheet tab 1.*填充所插入行的每個(gè)單元格的數(shù)據(jù)
PERFORM fill_range USING tab 1 wa-t01.PERFORM fill_range USING tab 2 wa-t02.PERFORM fill_range USING tab 3 wa-t03.PERFORM fill_range USING tab 4 wa-t04.PERFORM fill_range USING tab 5 wa-t05.PERFORM fill_range USING tab 6 wa-t06.ENDLOOP.*設(shè)置EXCEL中所插入的數(shù)據(jù)行邊框線格式為黑色有邊框
bod = tab.CONDENSE bod NO-GAPS.CONCATENATE 'A6:F' bod INTO bod.PERFORM borderrange USING excel bod.PERFORM sub_excel_save.“保存excel數(shù)據(jù)
*&-------* *& Form sub_excel_save *&-------* * text *--------* FORM sub_excel_save.GET PROPERTY OF excel 'ActiveSheet' = sheet.“獲取活動(dòng)SHEET FREE OBJECT sheet.FREE OBJECT workbook.GET PROPERTY OF excel 'ActiveWorkbook' = workbook.CALL METHOD OF workbook 'SAVE'.SET PROPERTY OF excel 'Visible' = 1.”是否顯示EXCEL 此處顯示不退出 * SET PROPERTY OF excel 'Visible' = 1.* CALL METHOD OF workbook 'CLOSE'.* CALL METHOD OF excel 'QUIT'.注釋部分為不顯示直接退出 FREE OBJECT sheet.FREE OBJECT workbook.FREE OBJECT excel.ENDFORM.“save_book
*&-------* *& 向excel中的指定行插入N行
*&-------* FORM excel_row_insert USING lcobj_sheet lc_row lc_count.DATA lc_range TYPE ole2_object.DATA h_borders TYPE ole2_object.DO lc_count TIMES.CALL METHOD OF lcobj_sheet 'Rows' = lc_range EXPORTING #1 = 6.CALL METHOD OF lc_range 'Copy'.“COPY第6行插入一個(gè)新行
CALL METHOD OF lcobj_sheet 'Rows' = lc_range EXPORTING #1 = lc_row.CALL METHOD OF lc_range 'Insert'.CALL METHOD OF lc_range 'ClearContents'.”是否需要清空Cell ENDDO.ENDFORM.“excel_row_insert *&-------* *& Form fill_range *&-------* * text 填充EXCEL 單元格
*--------* *-->VALUE(F_ROW)text *-->VALUE(F_COL)text *-->VALUE(F_VALUE)text *--------* FORM fill_range USING value(f_row)value(f_col)value(f_value).DATA: row TYPE i, col TYPE i.row = f_row.col = f_col.CALL METHOD OF excel 'CELLS' = cell EXPORTING #1 = row #2 = col.SET PROPERTY OF cell 'VALUE' = f_value.ENDFORM.”fill_range *&-------* *& Form borderrange *&-------* * text:設(shè)置EXCEL中所插入的數(shù)據(jù)行邊框線格式 *--------* *-->LCOBJ_EXCEL text *-->RANGE text *--------* FORM borderrange USING lcobj_excel range.DATA: lc_cell TYPE ole2_object , lc_borders TYPE ole2_object.CALL METHOD OF lcobj_excel 'RANGE' = lc_cell EXPORTING #1 = range.DO 4 TIMES.CALL METHOD OF lc_cell 'BORDERS' = lc_borders EXPORTING #1 = sy-index.SET PROPERTY OF lc_borders 'LineStyle' = '1'.SET PROPERTY OF lc_borders 'WEIGHT' = 2.“4=max SET PROPERTY OF lc_borders 'ColorIndex' = '1'.ENDDO.FREE OBJECT lc_borders.FREE OBJECT lc_cell.ENDFORM.”borderrange
暫時(shí)只用到了這么多,還有ABAP設(shè)置EXCEL字體,對(duì)齊方式等功能。什么時(shí)候用到了再 做研究。希望對(duì)大家有所幫助。