Adobe Form 程序调用

画好了对应的 Form 格式与数据绑定,就可以在 Report 程序中通过具体代码进行调用了。

SFPOUTPUTPARAMS 参数介绍

Parameter Desc Parameter Desc
nodialog 是否弹出打印对话框 dest 打印终端指定
noprint 不打印,能预览 copies 打印多少份
nopdf 不会产生PDF文档 reqnew 新开启一个SPOOL请求
getpdf 得到PDF文档 reqfinal SPOOL请求结束
xfp 外部程序可以调用,得到只有内容的xml文件(没有layout) connection ADSRFC的

程序内容

Data define

* Define Adobe Form Name
DATA: lv_form_name TYPE FPWBFORMNAME.
* Define Function Name
DATA: lv_fm_name TYPE RS381_FNAM.
* Define Print parameter
DATA: lwa_fp_params TYPE SFPOUTPUTPARAMS.
* Define Form Parameters for Form Processing
DATA: lwa_fp_docparams TYPE SFPDOCPARAMS.
* Define Result
DATA: lv_result TYPE SFPJOBOUTPUT.
DATA: lv_matnr TYPE matnr.

START-OF-SELECTION.
* Fetch the Data and store it in the Internal Table
  lv_matnr = '3011223452'.

Open spool job

* Sets the output parameters and opens the spool job
CLEAR lwa_fp_params.
lwa_fp_params-connection ='ADS'. 
CALL FUNCTION 'FP_JOB_OPEN'    "& Form Processing: Call Form"
  CHANGING
    ie_outputparams = lwa_fp_params
  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.

Get function name

* Get the name of the generated function module
CLEAR lv_form_name.
lv_form_name = 'ZSFP_FORM'.
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'  "Form Processing Generation"
  EXPORTING
    i_name     = lv_form_name
  IMPORTING
    e_funcname = lv_fm_name.
IF sy-subrc <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Language and country setting (Chinese)
CLEAR lwa_fp_docparams.
lwa_fp_docparams-langu   = 'D'.
lwa_fp_docparams-country = 'CN'.
* Call the generated function module
CALL FUNCTION lv_fm_name
  EXPORTING
    /1bcdwb/docparams     = lwa_fp_docparams
    matnr                 = lv_matnr
*  IMPORTING
*   /1BCDWB/FORMOUTPUT    =
  EXCEPTIONS
    usage_error           = 1
    system_error          = 2
    internal_error        = 3.
IF sy-subrc <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

Close spool job

* Close the spool job
CALL FUNCTION 'FP_JOB_CLOSE'
  IMPORTING
    E_RESULT         = lv_result
  EXCEPTIONS
    usage_error      = 1
    system_error     = 2
    internal_error   = 3
    others           = 4.
IF sy-subrc <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
	WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.