版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1,ABAP學(xué)習(xí)之—SMARTFORM,2008年7月28號V1.0,2,前言,總結(jié)了一下SmartForm的知識,和大家一起共享,也希望以后大家能夠共同豐富這個PPT的內(nèi)容。 本次講解建立在大家都掌握SmartForm開發(fā)的基本知識的基礎(chǔ)之上。,3,目錄,我們主要通過SmartForm的開發(fā)流程逐次講解: 1.如何通過表單打印類型來判斷SmartForm的設(shè)計(jì)方式 2.如何選擇SmartForm與程序的接口方式
2、 3.Report中編程和SmartForm中編程的區(qū)別 4.SmartForm中常用的小技巧,4,1.如何通過表單類型來判斷SmartForm的設(shè)計(jì)方式,常見的幾種表單打印類型分為套打 例如:發(fā)票的打印非套打 1)有固定的格式,對其中的字?jǐn)?shù)和行數(shù)都有嚴(yán)格的規(guī)定。 例如:發(fā)票憑證的打印 2)只用按照一定的格式即可。 例如:工資單信息的打印 在這里,我們主要判斷是使用模
3、板,還是表來實(shí)現(xiàn)主數(shù)據(jù)的循環(huán)顯示。,5,2.如何選擇SmartForm與程序的接口方式,在SAP的ABAP編程中,一般開發(fā)過程都是在Report程序中取出所有需要的數(shù)據(jù),將數(shù)據(jù)進(jìn)行相應(yīng)的處理以后保存到輸出內(nèi)表中,再打印內(nèi)表中的數(shù)據(jù),但是SmartForms是一個獨(dú)立的外部Function Module,對于程序內(nèi)部定義的內(nèi)表數(shù)據(jù)不能直接傳遞,需要定義外部的數(shù)據(jù)結(jié)構(gòu)Structure或者使用標(biāo)準(zhǔn)的表結(jié)構(gòu),如果程序變更,需要傳遞的數(shù)據(jù)發(fā)生變
4、化,那么該Sturcture也需要修改,這是SmartForms中不方便的地方。,6,2.如何選擇SmartForm與程序的接口方式,2.1通過讀取數(shù)據(jù)庫數(shù)據(jù) 用SE11創(chuàng)建結(jié)構(gòu),通過設(shè)置SmartForm中的全局設(shè)置=〉表格借口=>表,來使用。2.2通過指針 不用在SE11中創(chuàng)建結(jié)構(gòu),需要在SmartForm中的全局設(shè)置=〉全局定義=〉類型 中定義。必須與Report中傳輸?shù)膬?nèi)表結(jié)構(gòu)一致。2.3
5、通過讀取內(nèi)存數(shù)據(jù) 1)在全局設(shè)置=〉表格借口=>導(dǎo)入 中定義內(nèi)表數(shù)據(jù)句柄。 2)不用在SE11中創(chuàng)建結(jié)構(gòu),需要在SmartForm中的全局設(shè)置=〉全局定義=〉類型 中定義。必須與Report中傳輸?shù)膬?nèi)表結(jié)構(gòu)一致。,7,2.1通過讀取數(shù)據(jù)庫數(shù)據(jù),結(jié)構(gòu):ZSDSM0001表單:ZSDSM0002 程序:ZSDSM0001,8,2.1通過讀取數(shù)據(jù)庫數(shù)據(jù),9,2.1通過讀取數(shù)據(jù)庫數(shù)據(jù),10,2.1
6、通過讀取數(shù)據(jù)庫數(shù)據(jù),11,2.1通過讀取數(shù)據(jù)庫數(shù)據(jù),12,2.1通過讀取數(shù)據(jù)庫數(shù)據(jù),行格式固定。,13,2.1通過讀取數(shù)據(jù)庫數(shù)據(jù),系統(tǒng):KF1參考Smartform:ZSDSM0001參考程序:YFIF0007_1,14,2.2通過指針,這種方法是通過在Smartform中建立指針,讓其指向程序中的內(nèi)表或工作區(qū),從而實(shí)現(xiàn)不需要建立結(jié)構(gòu)、不需要導(dǎo)入導(dǎo)出參數(shù)或內(nèi)表,Smartform即可展示程序中數(shù)據(jù)的效果。,15,2.2通過指針,我們
7、通常根據(jù)業(yè)務(wù)需求,會在程序中使用TYPE構(gòu)建用于Smartform展示的內(nèi)表或工作區(qū),然后通過 CALL FUNCTION FNAME EXPORTING …… TABLES …… 向Sm
8、artform傳入?yún)?shù),在Smartform中通過全局設(shè)置—表格接口定義接收參數(shù)。 使用指針,我們?nèi)匀恍枰赟martform中定義參數(shù),不過是在全局設(shè)置—全局定義中進(jìn)行設(shè)置。,16,2.2通過指針,步驟一:我們需要在全局定義的類型選項(xiàng)卡中進(jìn)項(xiàng)設(shè)置,這里把我們程序中定義的TYPE直接復(fù)制過來就行了,如圖:,直接復(fù)制程序中的type定義,17,2.2通過指針,步驟二:在全局定義的全局?jǐn)?shù)據(jù)選項(xiàng)卡中定義Smartform
9、中使用的內(nèi)表和工作區(qū)變量,參考的類型就是步驟一中定義的類型。 定義內(nèi)表使用TYPE TABLE OF 定義 工作區(qū)使用TYPE 如圖:,18,2.2通過指針,步驟三:在全局定義的初始化選項(xiàng)卡中定義指針指向程序中的內(nèi)表或工作區(qū)。 首先:在輸入?yún)?shù)填入步驟二中定義的內(nèi)表和工作區(qū)變量名稱。如圖:,19,2.2通過指針,然后在下面的文本框中加入如下代碼: *定義變量 DATA:
10、0;HEADER(50),BODY(50). *定義指針 FIELD-SYMBOLS: TYPE ANY, TYPE ANY. *將程序中的工作區(qū)和內(nèi)表賦值給變量 HEADER = ‘(YFIF0007_1)GWA_HEADER’.BODY = ‘(YFIF0007_1)GIT_BODY[]
11、’. *將變量賦給指針 ASSIGN (HEADER) TO .ASSIGN (BODY) TO . *將指針賦給在全局?jǐn)?shù)據(jù)中定義的內(nèi)表和工作區(qū)變量 GW_HEADER = .GT_BODY = .,20,2.2通過指針,那程序中需要做何事情嗎?看這個調(diào)用Smartform的FUNCTION:
12、; CALL FUNCTION FNAME * EXPORTING * TABLES EXCEPTIONS FORMATTING_ERROR &
13、#160;= 1 INTERNAL_ERROR = 2 SEND_ERROR =
14、3 USER_CANCELED = 4 OTHERS
15、 = 5. 答案是:什么都不用做,注釋掉EXPORTING和 TABLES,我們不需要他們了。,21,2.2通過指針,系統(tǒng):KF1參考Smartform:YFISM0001_1參考程序:YFIF0007_1,22,2.3通過讀取內(nèi)存數(shù)據(jù),我們是在Report程序中進(jìn)行取數(shù)邏輯,然后想辦法將數(shù)據(jù)傳遞到SMARTFORMS中。我們知道在SAP中可以將一個對象Export到內(nèi)存中的,我們就可以根據(jù)一個類似于
16、句柄的字符串再次取出該數(shù)據(jù),傳送一個字符串到SmartForms中是沒有任何問題的,所以我們只需要Export內(nèi)表到內(nèi)存中,將句柄傳遞到SmartForms中,在SmartForms中首先定義完全相同類型的內(nèi)表,再將數(shù)據(jù)Import到內(nèi)表中即可完全恢復(fù)數(shù)據(jù),這樣就完成的數(shù)據(jù)的傳遞工作。,23,2.3通過讀取內(nèi)存數(shù)據(jù),事例程序: *&-----------------------------------------
17、----------------------------**& Report ZFS_TEST001*&*&---------------------------------------------------------------------** 創(chuàng)建日期 : 2008/07/29
18、
19、0; ** 創(chuàng)建人 : DuanYulan
20、0; ** 功能說明 : 通過調(diào)用內(nèi)存才實(shí)現(xiàn)參數(shù)的傳遞
21、0; **-----------------------------------------------------------
22、-----------** 變更履歷
23、0; ** 變更日期 &
24、#160;變更者 管理序號 變更內(nèi)容
25、** YYYY/MM/DD CG X.XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX **----------------------------------------------------------------------*REPORT ZFS_TEST001.
26、INCLUDE ZINC_SF_HELPER.“創(chuàng)建內(nèi)表在內(nèi)存中的句柄的程序 DATA:GIT_OUTPUT_H TYPE TABLE OF SCARR,"傳入SmartForm的頭數(shù)據(jù) GWA_OUTPUT_H LIKE LINE OF GIT_OUTPUT
27、_H, GIT_OUTPUT_D TYPE TABLE OF SFLIGHT,"傳入SmartForm的明細(xì)數(shù)據(jù) GWA_OUTPUT_D LIKE LINE OF GIT_OUTPUT_D.,24,2.3通過讀取內(nèi)存數(shù)據(jù),DAT
28、A:HEADERNAME TYPE CHAR18,"頭內(nèi)表句柄 ITEMSNAME TYPE CHAR18,"明細(xì)內(nèi)表句柄 GC_CARRID TYPE S_CARR_ID."查詢條件SELECT-OPTIONS:S_CARR
29、ID FOR GC_CARRID.START-OF-SELECTION. PERFORM FRM_GETDATA."輸出數(shù)據(jù)的查詢 " 在句柄中加上服務(wù)器當(dāng)前時間作為句柄名稱,防止多人同時使用該程序,導(dǎo)致句柄名稱相同 CONCATENATE 'ZFSTEST001HD'
30、60;SY-UZEIT INTO HEADERNAME. CONCATENATE 'ZFSTEST001IT' SY-UZEIT INTO ITEMSNAME. "存輸出表單表頭數(shù)據(jù)的內(nèi)表 SAVEBUFFER GIT_OUTPUT_H HEADERNAME.
31、 "保存輸出數(shù)據(jù)明細(xì)的內(nèi)表,與表頭數(shù)據(jù)有關(guān)聯(lián)字段 SAVEBUFFER GIT_OUTPUT_D ITEMSNAME. PERFORM FRM_OUTPUT_TO_SMARTFORM. "調(diào)用完畢以后,刪除數(shù)據(jù) CLEARBUFFER HEADERNAME.&
32、#160; CLEARBUFFER ITEMSNAME.END-OF-SELECTION.,25,2.3通過讀取內(nèi)存數(shù)據(jù),*&---------------------------------------------------------------------**& Form FRM_OUTPUT_TO
33、_SMARTFORM*&---------------------------------------------------------------------** 輸出到smartform打印*----------------------------------------------------------------------*F
34、ORM FRM_OUTPUT_TO_SMARTFORM . "SMARTFORMS DATA:OPTIONS TYPE SSFCOMPOP. DATA:FM_NAME TYPE RS38L_FNAM, S_OUT
35、PUT_OPTIONS TYPE SSFCOMPOP, CONTROL TYPE SSFCTRLOP. S_OUTPUT_OPTIONS-TDDEST = 'LP01'.
36、"SMARTFORMS初始化定義 CONTROL-NO_DIALOG = ''. CONTROL-PREVIEW = ''. CONTROL-NO_OPEN = 'X'. CON
37、TROL-NO_CLOSE = 'X'. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING FORMNAME &
38、#160; = 'ZSF_TEST003' IMPORTING FM_NAME =
39、 FM_NAME EXCEPTIONS NO_FORM = 1 NO_FUNCTION
40、_MODULE = 2 OTHERS = 3.,26,2.3通過讀取內(nèi)存數(shù)據(jù),CALL FUNCTION 'SSF_OPEN'
41、0; EXPORTING CONTROL_PARAMETERS = CONTROL EXCEPTIONS FORMATTING_ERROR = 1 &
42、#160; INTERNAL_ERROR = 2 SEND_ERROR = 3
43、; USER_CANCELED = 4 OTHERS = 5. CALL FU
44、NCTION FM_NAME"打印會計(jì)憑證 EXPORTING PTR_HEADER = HEADERNAME
45、PTR_ITEMS = ITEMSNAME CONTROL_PARAMETERS = CONTROL OUTPUT_OPTIONS
46、60; = S_OUTPUT_OPTIONS USER_SETTINGS = '' EXCEPTIONS &
47、#160; FORMATTING_ERROR = 1 INTERNAL_ERROR = 2 SEND_ERROR &
48、#160; = 3 USER_CANCELED = 4 OTHERS
49、0; = 5.,27,2.3通過讀取內(nèi)存數(shù)據(jù),CALL FUNCTION 'SSF_CLOSE' EXCEPTIONS FORMATTING_ERROR = 1
50、; INTERNAL_ERROR = 2 SEND_ERROR = 3 OTHERS
51、60; = 4.ENDFORM. " FRM_OUTPUT_TO_SMARTFO *&-------
52、--------------------------------------------------------------**& Form FRM_GETDATA*&---------------------------------------------------------------------**
53、160;通過查詢條件得到查詢信息*----------------------------------------------------------------------*FORM FRM_GETDATA . "獲取數(shù)據(jù) SELECT * FROM SCARR INTO CO
54、RRESPONDING FIELDS OF TABLE GIT_OUTPUT_H WHERE CARRID IN S_CARRID. SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS
55、160;OF TABLE GIT_OUTPUT_D WHERE CARRID IN S_CARRID.ENDFORM. &q
56、uot; FRM_GETDATA,28,2.3通過讀取內(nèi)存數(shù)據(jù),以下是在Report程序中Import和Export的Include的程序:*&---------------------------------------------------------------------**& 包括
57、; ZINC_SF_HELPER*&---------------------------------------------------------------------** 創(chuàng)建日期 : 2008/07/29
58、60; &
59、#160; ** 創(chuàng)建人 : DuanYulan &
60、#160; ** 功能說明 : 通過調(diào)用內(nèi)存才實(shí)現(xiàn)參數(shù)的傳遞 &
61、#160; **----------------------------------------------------------------------**&
62、#160;變更履歷 &
63、#160; ** 變更日期 變更者 &
64、#160; 管理序號 變更內(nèi)容 **
65、 YYYY/MM/DD CG X.XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX **----------------------------------------------------------------------* TYPES BUFFER_ID(80) TYPE
66、C.DATA WA_INDX TYPE INDX.DEFINE SAVEBUFFER."定義存入內(nèi)存的句柄 PERFORM SAVE_TO_BUFFER USING &1 &2.END-OF-DEFINITION.DEFINE CLEARBUFFER."清空內(nèi)存 &
67、#160;PERFORM CLEAR_BUFFER USING &1.END-OF-DEFINITION.,29,2.3通過讀取內(nèi)存數(shù)據(jù),*&---------------------------------------------------------------------**& Form
68、160;save_to_buffer*&---------------------------------------------------------------------** 定義存入內(nèi)存的句柄*----------------------------------------------------------------------*FORM SAVE_T
69、O_BUFFER USING T TYPE TABLE TYPEID TYPE C. WA_INDX-AEDAT = SY-DATUM. WA_INDX-USERA = SY-UNAME. WA_INDX-PGMID = SY-REPID
70、. EXPORT T TO DATABASE INDX(HK) ID TYPEID FROM WA_INDX.ENDFORM.
71、160; "Save_To_Buffer *&---------------------------------------------------------------------**& Form clear_buffer*&---------------------------
72、------------------------------------------** 清空內(nèi)存*----------------------------------------------------------------------*FORM CLEAR_BUFFER USING BUFFID TYPE C.
73、60;DELETE FROM DATABASE INDX(HK) ID BUFFID.ENDFORM. "Clear_Buffer,30,2
74、.3通過讀取內(nèi)存數(shù)據(jù),創(chuàng)建SmartForm:步驟一:在“全局設(shè)置”-〉“表格接口”-〉“導(dǎo)入”設(shè)置兩個參數(shù): ptr_header , ptr_items 這兩個參數(shù)用來傳入我們在Report中Export內(nèi)表數(shù)據(jù)的句柄(ID key)。,31,2.3通過讀取內(nèi)存數(shù)據(jù),步驟二:在“全局設(shè)置”-〉“全局定義”中進(jìn)行多項(xiàng)設(shè)定 2.1)類型”設(shè)定,在這里需要定義4個類型,一個用來保存表頭數(shù)據(jù)的工作區(qū)和內(nèi)表,一個用來保存明細(xì)數(shù)據(jù)的
75、工作區(qū)和內(nèi)表,它們的結(jié)構(gòu)必須與Report中Export到數(shù)據(jù)庫中的內(nèi)表的結(jié)構(gòu)完全對應(yīng)一致,否則,我們將不能從傳入的句柄(ID key)中恢復(fù)內(nèi)表數(shù)據(jù)。,32,2.3通過讀取內(nèi)存數(shù)據(jù),2.2)全局?jǐn)?shù)據(jù)”中,定義全局的變量,我們需要定義如下幾個變量,33,2.3通過讀取內(nèi)存數(shù)據(jù),2.3)在“初始化”中,將數(shù)據(jù)句柄中的內(nèi)表恢復(fù)到剛設(shè)定的全局變量中,輸入?yún)?shù):PTR_HEADER,PTR_ITEMS,IT_HEADER,IT_ITEMS,G_
76、TOTALLINES,34,2.3通過讀取內(nèi)存數(shù)據(jù),2.4)在Freecode“格式化程序”中,定義Form Restor_buffer函數(shù) 至此,我們已經(jīng)得到了表頭和明細(xì)這2個內(nèi)表的數(shù)據(jù),下面就可以準(zhǔn)備畫報(bào)并輸出數(shù)據(jù)了。,35,2.3通過讀取內(nèi)存數(shù)據(jù),系統(tǒng):KF1參考SmartForm:ZSF_TEST003參考程序:ZSF_TEST001,36,學(xué)習(xí)SmartForm,謝謝觀看!,
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- abap面試大全
- abap基本語法匯總資料
- abap測試題
- abap報(bào)表編程模板
- abap4_debug
- abap alv列頭合并
- 如何提高abap程序運(yùn)行效率
- sap abap面試知識點(diǎn)總結(jié)
- 基于ABAP的酒店預(yù)訂系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 學(xué)習(xí)英語之閱讀篇
- 學(xué)習(xí)英語之寫作篇
- 學(xué)習(xí)英語之口語篇
- 黨校學(xué)習(xí)之黨性分析
- [學(xué)習(xí)]探索小組合作學(xué)習(xí)之方法
- 學(xué)習(xí)自由限度之研究.pdf
- 新課標(biāo)學(xué)習(xí)反饋單之五
- [學(xué)習(xí)]店鋪營銷之會員營銷
- 青少年學(xué)習(xí)動力之探析
- 英語學(xué)習(xí)資料之教育詞匯
- 讓自主學(xué)習(xí)之花綻放
評論
0/150
提交評論