前文:
SAP Adobe Form 教程三 日期,時間,floating field
本文鏈接:https://www.cnblogs.com/hhelibeb/p/15503859.html
條件(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.