前文:
SAP Adobe Form 教程三 日期,時間,floating field
在本文中,我們將演示在FormCalc中使用SUM,然后在SAP Adobe forms中使用JavaScript動態更改文本樣式。
使用腳本的主要優點是,我們可以改進功能,並且可以在運行期間動態地控制表單。
SAP Adobe Form 支持2種腳本語言:
- FormCalc
- JavaScript
這兩種腳本語言各有優缺點,可以根據需要決定使用哪種。本文將提供兩種腳本語言的一些常見業務場景。
注意,之前已經有一篇涉及Javascript的文章,可以參考:SAP Adobe Form 教程四 動態隱藏和顯示字段
本文鏈接:https://www.cnblogs.com/hhelibeb/p/15522710.html
原文標題:SAP Adobe Form Tutorial. Part XVI. Practical Use Case of FormCalc and JavaScript
前提
- SAP Adobe Form的table相關的基礎知識
- 對JavaScript和FormCalc基本功能的了解
- ABAP編碼能力
業務需求
1. 在發送給客戶的詳細報表中,我們希望在所有行項目末尾顯示總金額和總單位小計。
2. 在語句的描述部分,我們希望以粗體和不同的樣式顯示層次結構的標題產品,以便很容易在整個語句中識別標題產品。
解決方案
我們需要創建一個Adobe Form和與全局數據的interface。我們將在interface的“code initialization”中的全局數據內表中添加一些測試數據,然后將這些全局內表與adobe form layout中的UI表綁定。
另外,我們還可以通過在驅動程序中編寫處理邏輯並將所需的內部表作為adobe form的導入參數傳遞來實現這一點。因為這個博客更多的是關於腳本的使用,所以沒有考慮數據處理的最佳方法。
步驟
1,在事務代碼SFP創建interface ZPB_TEST_SCRIPTS。
2,創建2個全局變量內表,details和descriptions。
3,表類型ZPB_TEST_DESCR、ZPB_TEST_DETAILS的結構如下,
4,前往code initialization,為內表填入測試數據,
5,前往事務SFP,創建新form,添加interface ZPB_TEST_SCRIPTS。
6,拖放全局變量到context。
7,前往Layout用這兩個全局變量創建表格。
a, 前往Data View,
b,選擇GT_DETAILS,拖放到Layout的Detail頁,
c,你會看到表格自動創建,並綁定了GT_DETAILS。
d,為小計創建頁腳行。前往Hierarchy,展開GT_DETAILS,在DATA后創建一個新的行。前往新行的Object,變更行類型為Footer。
請注意,如果我們使用“表格助手”創建表格,則會自動創建頁腳。因為前往是通過Data View創建的表格,所以必須手動創建頁腳。
下一步是寫Formcalc腳本的步驟。
8, 在“NET_UNITS”下的頁腳中選擇文本字段,然后轉到腳本編輯器,
9,現在轉到“Show Events”下拉列表,你會發現所有事件都顯示為灰色。為什么?
這是因為對於少數UI元素類型,不允許編寫腳本,這就是為什么所有事件都僅處於顯示模式。要啟用事件並編寫腳本邏輯,我們需要將UI元素的類型從“Text”更改為“Text Field”。
10,修改NET UNITS和TOTAL ROYALTIES的頁腳字段為“Text Field”。
可以注意到,對於上面高亮顯示的字段,邊框顏色已更改為紅色,而對於其他字段,邊框顏色仍為藍色。顏色是標識文本用戶界面或文本字段用戶界面的指示器
接着,重復步驟8和9,選擇合適的事件來編寫腳本。
需求是求和、顯示小計。
11,選擇Calculate事件,語言選擇為Formcalc。
寫入SUM代碼。sum (DATA[*].NET_UNITS)
12,創建一個測試驅動程序以生成結果pdf(請參閱以前的博客以創建用於測試Adobe forms的驅動程序),並生成一個包含小計的pdf:
通過使用FormCalc本的一個求和函數,我們可以在Adobe forms中計算表中行項目的和,不需要使用任何ABAP邏輯。
FormCalc文檔:https://helpx.adobe.com/pdf/aem-forms/6-2/formcalc-reference.pdf
JS的使用例子
13,重復步驟7的a-c部分,在Data View為description創建另一個表,使用全局變量GT_DESCRIPTION。
還記得另一個業務需求嗎?我們需要在運行期間根據粗體/斜體設置將描述字段中的標題產品設置為粗體,並使用不同的文本樣式和項目設置為斜體。
14,在Hierarchy中選擇GT_DESCRIPTION的DATA行,前往腳本編輯器。
15,選擇“form : ready”事件,語言為Javascript,寫入代碼,
代碼如下,
輸出結果,