作者简介:Pete 从事 SAP 技术工作已超过 10 年。他最初是一名 ABAP 顾问,然后转到 BW,在那里他与涵盖各个行业的许多不同客户合作过。 "我喜欢向新客户介绍 SAP 技术(尤其是 BI),并向他们展示如何在极短的时间内实现业务从零到一的转变"。
原文标题:Steps To Create A Simple SAP ADOBE Form And Calling It In A Web Dynpro ABAP Application
在本分步指南中,我们将创建一个简单的 SAP Adobe 表单,显示员工地址,然后在我们的 Web Dynpro ABAP 应用程序中调用此表单。要开发 SAP Adobe 表单,您需要在系统中安装 Adobe Life Cycle Designer,并在服务器上安装和配置 Adobe Document Services (ADS)。
步骤1: 创建表单界面 Interface
转至事务代码 SFP
。选择单选按钮"接口",为您的接口命名,然后单击创建按钮。
在"创建界面"弹出窗口中提供描述,然后单击"保存"按钮。
接着,提供运输包和运输请求详细信息。
双击表单界面的导入参数,创建一个类型为 PERNR-PERNR
的新导入参数 PERNR
。
同样,双击全局定义中的全局数据并创建一个 PA0006 类型的新变量 PA0006
。
现在,双击初始化中的"代码初始化(Code Initialization )",指定 PERNR
作为导入参数,指定 PA0006
作为输出参数,然后复制并粘贴以下代码行以从信息类型 0006 读取员工的永久地址。
ini
DATA : lt_p0006 TYPE TABLE OF pa0006.
REFRESH lt_p0006.
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
tclas = 'A'
pernr = pernr
infty = '0002'
begda = '18000101'
endda = '99991231'
TABLES
infty_tab = lt_p0006
EXCEPTIONS
infty_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
READ TABLE lt_p0006 INTO pa0006 WITH KEY subty = '2' .
保存并激活您的表单界面。
步骤 2: 创建和设计表单 Form
返回交易 SFP
的主屏幕,选择单选按钮"表单 Form",为表单命名,然后单击创建按钮。
在"创建表单"弹出框中输入描述和在步骤 1 中创建的接口名称,然后单击"保存"按钮。
接着,提供运输包 Pakcge 和传输请求详细信息。
现在将全局数据的结构"PA0006"从左侧的界面拖放到右侧的上下文窗口。
单击"布局"选项卡转至"表单生成器"。
将所有必填字段从数据视图拖放到正文页面,然后根据您的要求设置字段属性。
保存并激活您的表单。
步骤 3:创建 Web Dynpro 应用程序
转到事务 SE80
,在对象列表中选择 Web-Dynpro-Comp./Intf 并提供新名称 (Y_WDA_ADOBE_FORM
),然后按 Enter 键。
在创建对象弹出窗口中,单击"是"按钮创建新的 Web Dynpro 应用程序。输入描述并选择"类型"单选按钮作为 Web Dynpro 组件。
接着,提供传输包和传输请求详细信息。
双击 MAIN 视图并选择 Context 选项卡,然后创建一个名为 PERNR
的新上下文属性,类型为 PERNR-PERNR
。
现在转到"布局"选项卡,并在 ROOTELEMENTCONTAINER 中插入新的 Label UI、输入字段 UI 和 Button UI 元素。
将输入字段 UI 元素的 value 属性与上下文属性 PERNR
绑定。
创建一个新的 Action SHOW_FORM,并将其分配给按钮 UI 元素的 OnAction 属性。
将下面的代码复制并粘贴到事件处理程序 ON ACTION -- SHOW_FORM
。
ABAP
METHOD ONACTIONSHOW_FORM .
DATA :
lv_pernr TYPE persno,
formoutput TYPE fpformoutput,
lo_el_context TYPE REF TO if_wd_context_element,
ls_context TYPE wd_this->element_context,
lv_w_cx_root TYPE REF TO cx_root,
gv_fmname TYPE rs38l_fnam, " function module name
lv_mesg TYPE string,
gs_fpoutparams TYPE sfpoutputparams.
* get element via lead selection
lo_el_context = wd_context->get_element( ).
* get single attribute
lo_el_context->get_attribute(
EXPORTING
name = `PERNR`
IMPORTING
value = lv_PERNR ).
gs_fpoutparams-nodialog = 'X'. " suppress printer dialog popup
gs_fpoutparams-getpdf = 'X'.
* gs_fpoutparams-getxml = 'X'.
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
ie_outputparams = gs_fpoutparams
EXCEPTIONS
cancel = 1
usage_error = 2
system_error = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
TRY.
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
i_name = 'Y_FORM'
IMPORTING
e_funcname = gv_fmname.
CATCH cx_root INTO lv_w_cx_root.
lv_mesg = lv_w_cx_root->get_text( ).
* MESSAGE e201(hrpadin01) WITH lv_formname3 lv_mesg.
ENDTRY.
CALL FUNCTION gv_fmname
EXPORTING
pernr = lv_pernr
IMPORTING
/1bcdwb/formoutput = formoutput.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'FP_JOB_CLOSE'
* IMPORTING
* E_RESULT =
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3
OTHERS = 4.
cl_wd_runtime_services=>attach_file_to_response(
i_filename = 'SAP_ADOBE_FORM.pdf'
i_content = formoutput-pdf
i_mime_type = 'application/pdf' ).
ENDMETHOD.
通过右键单击 Web Dynpro 组件来创建 Web Dynpro 应用程序。为您的应用程序提供名称和描述。
保存并激活您的 Web Dynpro 应用程序。
最终输出
右键单击 Web Dynpro 应用程序,然后单击"测试"以在 Web 浏览器中测试您的应用程序。
结束语:
您还可以使用 UI 元素 Interactive-Form 在 Web Dynpro 应用程序中调用 Adobe 表单。但是,最好在事务代码 SPF
中单独设计 ADOBE 表单,如本教程所示。这样您也可以在报告和其他应用程序中调用相同的表单。
另外,我们没有在网络浏览器中打开 Adobe 表单,而是使用 cl_wd_runtime_services
类的方法 Attach_file_to_response( )
通过下载弹出窗口打开 ADOBE 表单,这也是一个好方法,因为很多时候用户在使用时会遇到性能问题。在网络浏览器中显示表单。