SAP Adobe Form 教程四 動態隱藏和顯示字段


前文:

SAP Adobe Form 教程一 簡單示例

SAP Adobe Form 教程二 表

SAP Adobe Form 教程三 日期,時間,floating field

 

本文鏈接:https://www.cnblogs.com/hhelibeb/p/15503859.html

原文標題:SAP Adobe Interactive Form Tutorial. Part IV. Dynamically Hide and Display Fields using Javascript in Adobe Form Based on Conditions

 

條件(IF-ENDIF、CASE、WHILE 等)是常見的程序組成部分。

例如,客戶的所有員工都必須在他們從辦公室打印的表單簽名中將時區打印為GMT–6。 因此,98% 的客戶將使用 GMT–6 小時作為他們的時間,但會有2%的用戶居住在另一個州,他們將時間作為 GMT–7小時。 所以對於那些特定的用戶,你需要放置特殊的邏輯,讓他們的簽名顯示 GMT – 7。這里你必須處理條件並根據條件打印值。

(譯注:嚴格來說,邏輯處理和輸出混合在一起是不合適的,但這里我們只關注實現的過程)


假設,在您的驅動程序中,您已經確定了員工所在的時區,並且根據他們的工作地點設置了標志 v_regular_employee = ‘X’ 或空白。

IF v_regular_employee = abap_true.
v_time_sign = 'GMT - 6'.
ELSEIF v_regular_employee = abap_false.
v_time_sign = 'GMT - 7'.
ENDIF.


我們的 Adobe Form需要根據條件值動態打印“GMT – 6”或“GMT – 7”。注意,我們將編寫一個小的 Javascript 而不是 ABAP 代碼。

PS:可能有很多方法可以實現上述場景。 為了清楚起見,我們保持簡單。

本文假設讀者已經看過前序教程,否則建議在此處暫停,回到之前的教程。讀者至少需要了解Form, Interface, Context的概念。

事務代碼:SFP。

創建interface,

 

 

 添加importing參數IV_NAME和IV_FLAG,

 

 

檢查、保存和激活。

 

接着回到SFP創建form,

 

 

拖放2個參數到context區域,

 

 

 

 

 

 

前往Layout,

 

 

前往Data View並且拖放字段IV_NAME。

 

 

選擇字段IV_NAME並且前往Palettes->Script Editor.

 

 

可以看到下面屏幕,

 

 

前往Show選項,在下拉菜單中選擇form: ready。

這里就可以寫Javascript或者Form Calc代碼了。

寫下如下簡單代碼:

if($record.IV_FLAG.value != "X")
{
    this.presence = "hidden";
}

 

 

檢查,保存和激活。

 

下面是測試部分,

Case 1 : When IV_FLAG = ‘X’.

用F8執行form,輸入參數,

 

 

再F8執行,預覽,

 

 

 

因為當我們傳遞IV_FLAG=X時,隱藏元素的腳本沒有被觸發。因此元素不會隱藏。

Case 2 : When IV_FLAG = ‘ ’.

這次測試時讓IV_FLAG為空,

 

可以看到結果,滿足隱藏的條件,因此輸出是空白的。

 

單獨用驅動程序調用的話,代碼如下,

 1 *&---------------------------------------------------------------------*
 2 *======================================================================*
 3 * YRAM_ADOBE_FORM_PROGRAM4 *
 4 *======================================================================*
 5 * Project : SAP Adobe Forms Tutorial *
 6 * Author : Ramanjula Naidu DARURU (www.SAPYard.com) *
 7 * Description : Dynamically Hiding & Displaying a field on the Adobe Form 
 8 * Layout based on Condition *
 9 *======================================================================*
10 REPORT yram_adobe_form_program4.
11 
12 *======================================================================*
13 * Selection Screen
14 *======================================================================*
15 PARAMETERS: p_name TYPE name1,
16 p_flag TYPE char1.
17 
18 **&&~~ Data Objects
19 DATA: gv_fm_name TYPE rs38l_fnam, " FM Name
20 gs_fp_docparams TYPE sfpdocparams,
21 gs_fp_outputparams TYPE sfpoutputparams.
22 
23 CONSTANTS : gv_form_name TYPE fpname VALUE 'YRAM_ADOBE_FORM4'.
24 
25 *======================================================================*
26 * START of Calling the Form
27 *======================================================================*
28 *&---------------------------------------------------------------------*
29 **&&~~ Form Processing: Call Form - Open
30 *
31 CALL FUNCTION 'FP_JOB_OPEN'
32 CHANGING
33 ie_outputparams = gs_fp_outputparams
34 EXCEPTIONS
35 cancel = 1
36 usage_error = 2
37 system_error = 3
38 internal_error = 4
39 OTHERS = 5.
40 IF sy-subrc <> 0.
41 " Suitable Error Handling
42 ENDIF.
43 *&---------------------------------------------------------------------*
44 **&&~~ Get the Function module name based on Form Name
45 *
46 CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
47 EXPORTING
48 i_name = gv_form_name
49 IMPORTING
50 e_funcname = gv_fm_name.
51 IF sy-subrc <> 0.
52 " Suitable Error Handling
53 ENDIF.
54 *&---------------------------------------------------------------------*
55 **&&~~ Take the FM name by execuing the form - by using Pattern-
56 **&&~~ call that FM and replace the FM Name by gv_fm_name
57 **&&~~ Call the Generated FM
58 CALL FUNCTION gv_fm_name
59 EXPORTING
60 /1bcdwb/docparams = gs_fp_docparams
61 iv_name = p_name
62 iv_flag = p_flag
63 EXCEPTIONS
64 usage_error = 1
65 system_error = 2
66 internal_error = 3
67 OTHERS = 4.
68 IF sy-subrc <> 0.
69 * Implement suitable error handling here
70 ENDIF.
71 *&---------------------------------------------------------------------*
72 
73 *&---------------------------------------------------------------------*
74 *&---- Close the spool job
75 CALL FUNCTION 'FP_JOB_CLOSE'
76 EXCEPTIONS
77 usage_error = 1
78 system_error = 2
79 internal_error = 3
80 OTHERS = 4.
81 IF sy-subrc <> 0.
82 * <error handling>
83 ENDIF.
YRAM_ADOBE_FORM_PROGRAM4

 


免責聲明!

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



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