前文:
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’ 或空白。
我们的 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代码了。
写下如下简单代码:
检查,保存和激活。
下面是测试部分,
Case 1 : When IV_FLAG = ‘X’.
用F8执行form,输入参数,
再F8执行,预览,
因为当我们传递IV_FLAG=X时,隐藏元素的脚本没有被触发。因此元素不会隐藏。
Case 2 : When IV_FLAG = ‘ ’.
这次测试时让IV_FLAG为空,
可以看到结果,满足隐藏的条件,因此输出是空白的。
单独用驱动程序调用的话,代码如下,
YRAM_ADOBE_FORM_PROGRAM4