草庐IT

SAP Adobe Form 教程四 动态隐藏和显示字段

氢氦 2023-03-28 原文

前文:

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

 

AdobeFormspan128style企业信息化

有关SAP Adobe Form 教程四 动态隐藏和显示字段的更多相关文章

  1. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 如何验证非模型(甚至非对象)字段 - 2

    我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss

  4. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  5. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  6. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  7. ruby-on-rails - 在 Rails 和 ActiveRecord 中查询时忽略某些字段 - 2

    我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr

  8. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  9. ruby-on-rails - 复数 for fields_for has_many 关联未显示在 View 中 - 2

    目前,Itembelongs_toCompany和has_manyItemVariants。我正在尝试使用嵌套的fields_for通过Item表单添加ItemVariant字段,但是使用:item_variants不显示该表单。只有当我使用单数时才会显示。我检查了我的关联,它们似乎是正确的,这可能与嵌套在公司下的项目有关,还是我遗漏了其他东西?提前致谢。注意:下面的代码片段中省略了不相关的代码。编辑:不知道这是否相关,但我正在使用CanCan进行身份验证。routes.rbresources:companiesdoresources:itemsenditem.rbclassItemi

  10. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

随机推荐