SAP Adobe Form 教程二 表


本文將介紹一些進階內容,前文:SAP Adobe Form 教程一 簡單示例

 

方法和對比

使用表對象(Table Object)創建表

優點:

它簡單易行。 當我們只有很少的字段單行時,我們可以使用它。
designer知道你正在使用表格。 designer允許選擇行或列,同時調整列的大小。
有選項允許可以在每頁上重復表格標題。

缺點:

如果我們停用context中的字段,則在form中任何地方需要時都將難以使用。 例如在腳本編輯器中(有一些條件打印等)。
很難處理嵌套表。
打印非標准表格時存在限制。

使用SubForm Method創建表

什么是SubForm?
SubForm是form的一部分,用於組織不同的元素,如輸入字段、表格、呈現正文頁面文本,很少用於主頁面。
換句話說,Subform 只不過是一組元素。如果我們要在布局上組的某些元素,我們可以使用subform,並將元素們包裝進去。

優點:

在布置表格時,subform為我們提供了更大的靈活性。
打印多行表格時,subform更有用
可以重新排列subform中的單元格(打印我們想要的任何地方)
打印嵌套表時,它非常有用。

沒有什么缺點,實際上在內部,表對象被作為subform結構處理。 如果在Designer中查看模板的XML源代碼,可以確認這一點。
如果希望在分頁的情況下重復標題,必須使用“Overflow Leaders”(Table Object是復選框)。 我們需要在對象面板的“分頁”選項卡上設置它們。

因此,根據我們想要實現的目標,我們可能必須使用subform而不是table object。但對於標准表,建議直接使用表table object。遵循KIS策略(Keep It Simple)。

步驟

共同步驟

首先構建兩種方法都需要的interface。

事務:SFP。

輸入接口名稱並創建(對於Adobe Form,interface是必需的)。

 

 

 

讓我們添加我們自己的自定義參數名稱。 選擇Form Interface下的Import選項(左側),然后按Create按鈕(右側)添加一個Importing Parameter

 

 

導入參數 IT_KNA1 的類型為CCRCTT_KNA1。CCRCTT_KNA1是KNA1的表類型。 在 Adobe Form的interface/function module中,需要使用表類型參數將表格數據從程序傳遞到form(Tables參數已過時)。

保存、檢查、激活interface。

回到事務SFP,創建form。

提供之前創建的描述和interface名稱,保存。

 

 

將 IT_KNA1從之前創建的Interface拖到 Context。

 

 

 

 

 

1,用Table Object創建表

反激活不需要打印的字段。選中它們,

 

右鍵選擇deactivate。

 

結果如下,

 

只有6個激活字段。

前往layout標簽,

 

插入文本變量,作為標題。

 

 

 

按需填入文本,

按上圖右下角修改字體。如果沒看到字體欄的話,按下圖添加,

前往Palettes -> Font。

接着前往Data view。

選擇 IT_KNA1,將其拖放到layout中。

 

 

可以通過拖放選項調整列的高度或寬度。 如果你想非常精確,也可以在右邊的屬性中調整寬度和高度。

保存,檢查和激活form。

請注意:如果 IT_KNA1 表中的數據超過1頁大小,則不會流到下一頁。 如果想查看所有數據,必須確保以下兩項。

subform必須是Flowed,

 

 

選擇 IT_KNA1 並選中“Allow Page Breaks within Content”復選框。

 

 

執行驅動程序:YRAM_ADOBE_FORM_PROGRAM2。 。輸出將顯示包含客戶主數據的表。

 1 *&---------------------------------------------------------------------*
 2 *======================================================================*
 3 * YRAM_ADOBE_FORM_PROGRAM2 *
 4 *======================================================================*
 5 * Project : SAP Adobe Forms Tutorial *
 6 * Author : Ramanjula Naidu DARURU (www.SAPYard.com) *
 7 * Description : Driver Program for Printing the Customer data *
 8 *======================================================================*
 9 REPORT yram_adobe_form_program2.
10 
11 **&&~~ Data Objects
12 DATA: gv_fm_name TYPE rs38l_fnam, " FM Name
13 gs_fp_docparams TYPE sfpdocparams,
14 gs_fp_outputparams TYPE sfpoutputparams,
15 gt_kna1 TYPE STANDARD TABLE OF kna1.
16 
17 CONSTANTS : gv_form_name TYPE fpname VALUE 'YRAM_ADOBE_FORM2'.
18 
19 *======================================================================*
20 * START of TREATMENT *
21 *======================================================================*
22 START-OF-SELECTION.
23 SELECT * FROM kna1 INTO TABLE gt_kna1 UP TO 50 ROWS.
24 *&---------------------------------------------------------------------*
25 **&&~~ Form Processing: Call Form - Open
26 *
27 CALL FUNCTION 'FP_JOB_OPEN'
28 CHANGING
29 ie_outputparams = gs_fp_outputparams
30 EXCEPTIONS
31 cancel = 1
32 usage_error = 2
33 system_error = 3
34 internal_error = 4
35 OTHERS = 5.
36 IF sy-subrc <> 0.
37 " Suitable Error Handling
38 ENDIF.
39 *&---------------------------------------------------------------------*
40 **&&~~ Get the Function module name based on Form Name
41 *
42 CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
43 EXPORTING
44 i_name = gv_form_name
45 IMPORTING
46 e_funcname = gv_fm_name.
47 IF sy-subrc <> 0.
48 " Suitable Error Handling
49 ENDIF.
50 *&---------------------------------------------------------------------*
51 **&&~~ Take the FM name by execuing the form - by using Pattern-
52 **&&~~ call that FM and replace the FM Name by gv_fm_name
53 *
54 **&&~~ Call the Generated FM
55 CALL FUNCTION gv_fm_name "'/1BCDWB/SM00000176'
56 EXPORTING
57 /1bcdwb/docparams = gs_fp_docparams
58 it_kna1 = gt_kna1
59 EXCEPTIONS
60 usage_error = 1
61 system_error = 2
62 internal_error = 3
63 OTHERS = 4.
64 IF sy-subrc <> 0.
65 * Implement suitable error handling here
66 ENDIF.
67 *&---------------------------------------------------------------------*
68 **&&~~ Form Processing: Call Form - Open
69 *
70 CALL FUNCTION 'FP_JOB_CLOSE'.
71 IF sy-subrc <> 0.
72 * Implement suitable error handling here
73 ENDIF.
74 *&---------------------------------------------------------------------*
75 *&---- Close the spool job
76 CALL FUNCTION 'FP_JOB_CLOSE'
77 EXCEPTIONS
78 usage_error = 1
79 system_error = 2
80 internal_error = 3
81 OTHERS = 4.
82 IF sy-subrc <> 0.
83 * <error handling>
84 ENDIF.
85 *&---------------------------------------------------------------------*
YRAM_ADOBE_FORM_PROGRAM2

 

2,用Sub Form創建表

通過使用此方法,我們可以以任意順序顯示字段,並以多行顯示字段。

 

前往layout,

 

默認情況下,每個form都有Master Page和Body Page(無標題Subform)(page1)。
在簡單場景中,可以使用Master Page來打印標題數據和用Body Page來打印行項目數據。 

內容區域用於打印Body Page中的數據。 我們可以更改Master Page中內容區域的長度或寬度。
我們將標題放在Master Page中。

 

提示:在開發過程中,如果想查看form的基本輸出,只需單擊Preview PDF選項卡。

 

前往design view。
要打印表數據,Subform必須是FLOWED。

 

 

這是非常重要的一步。 我們需要插入Subform。

 

可以在layout選項卡中更改窗口的高度或寬度。 也可以拖動和調整。

Subform可用作標題。 請注意Untitled SubForm已在左側重命名為 Header。

將表頭內容更改為Flowed,將Flow directio 更改為Western text,這樣字段將並排顯示。

 

選擇標題subform,nsert -> 0 – Standard -> Text field。

需要更改文本字段的屬性以獲得更好的顯示和外觀。

選擇 TextField1,將外觀從Sunken box改為Solid box。

 

將位置從改為left改為none,

 值類型從用戶輸入改為只讀,

 

 

邊框純色,

 

 

復用TextField1。

在標題sub from復制粘貼TextField1。(在本例中需要粘貼4次,因為我們要顯示5個字段)

 

 

修改字段名,

 

 

傳給它們固定值,

 

 

全部字段都改一下,

 

 

這樣就完成了標題的創建。下面是item數據。


再創建一個Subform並將其命名為 Items。

將items subform內容更改為Flowed,並將Flow direction更改為Western text,以便並排顯示字段。

 

 

復制五個字段 Customer No、Country、Name、Street 和 Telephone 並粘貼到 items subform下。
刪除所有字段的默認值。

將數據內表,即 IT_KNA1 綁定到 Items subform。

 

 

(綁定是Adobe Form中非常重要的一部分,要確保數據綁定正確)

綁定字段:
CustomerNo to KUNNR,
Country —— LAND1,
Name —— NAME1,
Street —— STRAS,
Telephone —— TELF1.

 

必須勾選Repeat Subform for each data item。

 

運行驅動程序:YRAM_ADOBE_FORM_PROGRAM2.(程序見上文)

輸出應該方法1是一樣的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM