2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論