SAP Adobe Form 教程四 动态隐藏和显示字段
前文:
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.
YRAM_ADOBE_FORM_PROGRAM4
SAP Adobe Form 教程四 动态隐藏和显示字段的更多相关文章
- iOS UITableView动态隐藏或显示Item
通过改变要隐藏的item的高度实现隐藏和显示item 1.创建UITableView #import "ViewController.h" @interface ViewContr ...
- SAP ABAP编程 Table Control动态隐藏列
在SAP DIALOG设计中,有时候须要动态的隐藏某些列,以下是方法. ***数据定义 CONTROLS: table_control TYPE TABLEVIEW USING SCREEN 0100 ...
- JQuery动态隐藏和显示DIV
<head> <script language="javascript"> function HideWeekMonth() { $("#tt1& ...
- react中如何实现一个按钮的动态隐藏和显示(有效和失效)
初始准备工作 constructor(props) { super(props); /* * 构建导出数据的初始参数,结合用户下拉选择后动态设置参数值 * */ this.state = { btnS ...
- datagrid其中某列需要动态隐藏或显示的mvvm绑定方式,也可以用在其他表格类型控件上
版权归原作者所有. 引用地址 [WPF] HOW TO BIND TO DATA WHEN THE DATACONTEXT IS NOT INHERITED MARCH 21, 2011 THOMAS ...
- 无废话ExtJs 入门教程四[表单:FormPanel]
无废话ExtJs 入门教程四[表单:FormPanel] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在窗体里加了个表单.如下所示代码区的第28行位置,items:form. ...
- adobe form
Call Adobe Form through ABAP Program 2015-04-24 0个评论 来源:ChampaignWolf的专栏 收藏 我要投稿 Scenar ...
- NGUI系列教程四(自定义Atlas,Font)
今天我们来看一下怎么自定义NGUIAtlas,制作属于自己风格的UI.第一部分:自定义 Atlas1 . 首先我们要准备一些图标素材,也就是我们的UI素材,将其导入到unity工程中.2. 全选我们需 ...
- Nginx教程(四) Location配置与ReWrite语法
Nginx教程(四) Location配置与ReWrite语法 1 Location语法规则 1.1 Location规则 语法规则: location [=|~|~*|^~] /uri/ {- } ...
- Quartz教程四:Trigger
原文链接 | 译文链接 | 翻译:nkcoder 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正:有兴趣 ...
随机推荐
- #分块,二分#洛谷 5356 [Ynoi2017] 由乃打扑克
题目 支持区间加和区间查询第 \(k\) 小 分析 分块之后给每个整块排序,这样修改的时候整块打标记,散块直接分开把需要加的部分暴力加之后归并,就是 \(O(\sqrt{n})\) 的 查询的话,如果 ...
- Spring反序列化JNDI分析
漏洞原理 Spring框架的JtaTransactionManager类中重写了readObject方法,这个方法最终会调用到JNDI中的lookup()方法,关键是里面的参数可控,这就导致了攻击者可 ...
- pip提示升级pip版本
今天在进行pip安装库的时候发现下面出现一段黄色的字体,如下图: 自由翻译: 大概意思就是说我现在安装的pip的版本是 20.0.2,最新版本是 20.1,希望我可以更新到最新的版本,并告诉了我怎么安 ...
- Unity 检测FPS工具
检测FPS工具 public class FPS : MonoBehaviour { public float f_UpdateInterval = 0.5F; private float f_Las ...
- 如何在HarmonyOS对数据库进行备份,恢复与加密
数据库备份与恢复 场景介绍 当应用在处理一项重要的操作,显然是不能被打断的.例如:写入多个表关联的事务.此时,每个表的写入都是单独的,但是表与表之间的事务关联性不能被分割. 如果操作的过程中出现问题, ...
- HDC2021技术分论坛:HarmonyOS本地模拟器重磅来袭!
作者:longjiangyun,模拟器开发工程师 HarmonyOS模拟器是应用开发者使用IDE进行代码开发.调试.测试等活动中必不可少的工具,它分为本地模拟器和远程模拟器,其中远程模拟器又分为单设备 ...
- WEB 版的报表工具有没有意义?
这个问题得从两个方面看. 如果这个 web 版的报表工具指的是现在的自助报表,也就是 BI.多维分析,那它是有意义的, 而且各厂商们都已经做的挺好,可以让业务人员通过简单的拖拽进行各种数据分析,生成自 ...
- js中“??“和“?.“怎么用?
??:空值合并操作符 逻辑操作符,左侧为null和undefined时,才返回右侧的数const sum = null ?? 12console.log(sum);//输出12const sum1 = ...
- D365调试进入系统类方法
在生成InventDIMID时,虽然设置了InventDIMID的Number sequence为自定义的Format,但是总是不按指定的Number sequence产生InventDIMID Di ...
- JVM简明笔记4:垃圾回收
1 垃圾回收相关算法 垃圾回收器首先要做的就是,判断一个对象是存活状态还是死亡状态,死亡的对象将会被标识为垃圾数据并等待收集器进行清除. 判断一个对象是否为死亡状态的常用算法有两个:引用计数器算法 . ...