Fork me on GitHub

SAP Adobe Form 教程一 简单示例

马上需要用到adobe form,这里搬运一篇教程学习下。

 

英文原文:SAP Adobe Interactive Form Tutorial. Part I. First Adobe Form

本文链接:https://www.cnblogs.com/hhelibeb/p/15493324.html

准备

前提:系统中有Adobe life cycle designer,并且在服务器中配置过。

事务代码:SFP。可以用这个关键词来记住它:Smart Form PDF🙂。

创建interface

输入一个interface并创建(interface对于adobe form是必填项):

interface有什么用?

1,在form interface中,你可以指定和应用程序交互的数据(表、结构、工作区)。

2,使用全局定义,定义你的字段、变量等。

3,系统字段包含预定义的数据,比如date。

 

填入描述并保存,

 

 选择包,保存,

 检查interface属性,浏览面板的左侧和右侧,点击自动生成的parameter name,

 

让我们添加自己的parameter name。选择form interface(在左侧)下的import选项,点击创建按钮(在右侧)。增加一个importing parameter IV_TEXT.

 

在本教程中,IV_TEXT是CHAR30类型,可选。

检查,保存,激活form interface.

 

创建form

回到事务代码SFP。这次我们需要创建form.

 

 

 

 

 

这是form的界面。左侧有interface右侧有context。

 

 

展开import parameter并拖放需要的变量到context。

 

Form builder中的context的意义是什么?

在context(也称为form context)中,指定将哪些数据从interface复制到form。还可以将此数据作为节点包含在层次结构中。在此层次结构中,还可以通过指定处理节点的条件来决定form逻辑。

Form Builder中的context函数是将interface绑定到布局的链接。可以从现有interface构造form context。

如果上面的解释让你觉得很模糊,那就先忘掉它。只需将context记作全局区域的数据声明,可能就像TOP Include程序一样。

简而言之,如果你希望参数,即内表、工作区或变量等从程序传递到interface,然后传递到form,那么你需要在表单的context中定义该内表、工作区或变量 。

form context中定义的任何内容都可以在要显示或操作的form中使用。 如果在form Interface中定义了一个变量但没有在context中创建它,那么该Interface变量将不会在form中可用。

如果你不喜欢快捷方式(拖放)或希望上下文参数名称与表单界面中的名称不同,则需要自己在上下文元素的属性中指定数据字段。 例如,如果你想创建一个上下文P_TEXT但想用 IV_TEXT绑定它,那么数据字段应该是IV_TEXT,如下所示。

提示:从interface拖放到context,然后更改context元素的名称/描述。 这会节省时间,并且不需要显式维护属性。

查看样式标签页,

 

 

左侧有Hierarchy, Tab Order, Data View等,右侧有Design, Mater和PDF Preview options.

 

 

 

 

 

让我们选择Data View并将我们想要在表单上打印的字段拖放到设计视图。 可以将此文件放置在布局中的任何位置。 对于我们的示例,只有一个元素IV_TEXT。 原因很简单, 我们在context中只创建了一个元素。 你可以添加更多context元素,它们将在此处可用,以传递给布局。 在接下来的内容中,我们将增加需求的复杂性,你将能够看到如何处理多个元素。

 

 

 可以将标题从 IV_TEXT更改为所需的标题。 例如:Text。 单击元素并更改右侧对象的属性。

检查,保存和激活form。

使用接口对Adobe窗体进行独立测试

 

 

 

 

 

注意:与smartform一样,adobe form也会在后端生成一个Function Module。

F8运行,

 

按“打印预览”按钮。检查输入参数是否成功地从接口传递到布局。

 

与SAP Script和Smartform一样,Adobe Form 也需要一个驱动程序。 如果Form单独存在,它们就没有效用。 他们需要一个合作伙伴来完成。 🙂让我们来看看这方面。

 

如果你之前曾用过Smartform,你会发现没有任何区别。 我们只需要使用接口参数将数据传递给表单。 并且调试也和Smartform类似。

*&---------------------------------------------------------------------*
*======================================================================*
*                     YRAM_ADOBE_FORM_PROGRAM1                           *
*======================================================================*
* Project     : SAP Adobe Forms Tutorial                               *
* Author      : Ramanjula Naidu DARURU                                 *
* Description : Driver Program to Print Adobe form                     *
*======================================================================*
REPORT yram_adobe_form_program1.

TABLES : apb_lpd_otr_keys.

**&&~~ Data Objects
DATA: gv_fm_name         TYPE rs38l_fnam,      " FM Name
      gs_fp_docparams    TYPE sfpdocparams,
      gs_fp_outputparams TYPE sfpoutputparams.

CONSTANTS : gv_form_name TYPE fpname VALUE 'YRAM_ADOBE_FORM1'.

**&&~~ Selection Screen
*
PARAMETERS : p_text TYPE char30.
*&---------------------------------------------------------------------*
**&&~~ Form Processing: Call Form - Open
*
CALL FUNCTION 'FP_JOB_OPEN'
  CHANGING
    ie_outputparams = gs_fp_outputparams
  EXCEPTIONS
    cancel          = 1
    usage_error     = 2
    system_error    = 3
    internal_error  = 4
    OTHERS          = 5.
IF sy-subrc <> 0.
  " Suitable Error Handling
ENDIF.
*&---------------------------------------------------------------------*
**&&~~ Get the Function module name based on Form Name
*
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
  EXPORTING
    i_name     = gv_form_name
  IMPORTING
    e_funcname = gv_fm_name.
IF sy-subrc <> 0.
  " Suitable Error Handling
ENDIF.
*&---------------------------------------------------------------------*
**&&~~ Take the FM name by executing the form - by using Pattern-
**&&~~ call that FM and replace the FM Name by gv_fm_name
*
**&&~~ Call the Generated FM
CALL FUNCTION gv_fm_name   "'/1BCDWB/SM00000176'
  EXPORTING
    /1bcdwb/docparams = gs_fp_docparams
    iv_text           = p_text
* IMPORTING
*   /1BCDWB/FORMOUTPUT       =
  EXCEPTIONS
    usage_error       = 1
    system_error      = 2
    internal_error    = 3
    OTHERS            = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
*&---------------------------------------------------------------------*
**&&~~ Form Processing: Call Form - Open
*
CALL FUNCTION 'FP_JOB_CLOSE'
* IMPORTING
*   E_RESULT             =
* EXCEPTIONS
*   USAGE_ERROR          = 1
*   SYSTEM_ERROR         = 2
*   INTERNAL_ERROR       = 3
*   OTHERS               = 4
  .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
*&---------------------------------END----------------------------------*

 

让我们通过SE38使用驱动程序测试输出:

 

 执行驱动程序并选择打印预览选项。输入字段在表单布局中正确显示,

希望你喜欢这篇简单的文章。 这只是Adobe Form的基础知识。 在下一篇文章(Adobe  Form中的Form)中,我们将学习单词,然后开始使用这些ABC来构建句子🙂。 

配置

读者提问:在哪里配置驱动程序和关联的Adobe Form名称,从而事务中触发?
答案:t-code NACE==>选择应用程序。 例如:V3 ==> 按“Output type”按钮 ==> 选择输出类型。 例如:RD00 ==> 按“Processing Routines” ==> 在这里我们可以配置Medium / Program / Form Routine / Form / PDF-SmartForm Form。

在PDF-Smartform表单下,我们可以配置 adobe form。

在PP模块中——我们可以在事务OPK8中进行配置。

posted @ 2021-11-01 18:25  氢氦  阅读(7619)  评论(0编辑  收藏  举报