原文:Small Fire · SAP Adobe 使用 · ABAP 子专栏 · Small Fire 技术笔记

Adobe Form 程序调用

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

SFPOUTPUTPARAMS 参数介绍

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

程序内容

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.