转自http://wiki.sdn.sap.com/wiki/display/ABAP/Call+Adobe+Form+through+ABAP+Program
Scenario
Create an Adobe Form and call it through an ABAP Program
Pre-request:
1) In the Front End System Adobe Life Cycle Designer has to install. Then only the Adobe Form Layout and Adobe form will open in the SAP system
2) Adobe Reader 8.0 and above version has to installed
Steps to Create and Call the adobe form
1) Create a Table Type for a Table
2) Create the Interface for the Adobe Form
3) Create the Adobe Form and design the layout
4) Write a Program to Call the Adobe Form
Step by Step Approach
1) Create a Table Type for a Table
Go to the Transaction Code "SE11" and give the Table Type name as "ZMARI_TBL"
Then click "Create" and a popup will appear as shown below.
Select the radio button "Table Type" and press enter
Enter the Table Name 'MARI' in the line type.
Then save it as Local Object and activate it.
Activate the Table Type.
2) Create the Interface for the Adobe Form
Go to Transaction code 'SFP' and create the Interface for the ADOBE FORM
Enter the Interface Name as 'ZSUR_ADOBE_INTR' and click "Create"
Give the Description and click save.
Give Description and press enter
Save as Local Object
Then the below screen will appear.
Then Click "Append Row" icon as indicated below.
Then as new row will inserted and assign the Table Type ZMARI_TBL value as shown below.
Then activate it.
Then go back and Give the Adobe Form name click Create.
3) Create Adobe Form and design the layout in the Same Transaction Code "SFP"
Give the Description and the Interface name, which just created as indicated below.
Then Save as Local Object.
Then the below Screen will appear.
Expand the import button and you can find the Table Parameter ZMARI.
Then Drag and drop it to the Context as shown below.
After Drag and Drop the Table type to Context, then below screen will appear.
Then Click the "Layout" Tab and the Below Screen will appear.
Drag and Drop the table type "ZMARI" to Design View Layout as indicated below.
Then adjust the Table in the Top center of the layout as shown below.
Select the 'Text' from the Library and drop it the Layout 'Design" View and give a description to the Table as shown below.
4) Write a Program to Call the Adobe Form
Go to Transaction code SE38 and Create a Test Program "ZCALL_ADOBE_FORM".
Save it as local Object.
Then enter the Below Code.
REPORT zcall_adobe_form. &-----------------------------------------------------------------------& *& Author : P Surjith Kumar *& Purpose : Call the Adobe form in the ABAP Program *&------------------------------------------------------------------------ DATA: fm_name TYPE rs38l_fnam, " CHAR 30 0 Name of Function Module fp_docparams TYPE sfpdocparams, " Structure SFPDOCPARAMS Short Description Form Parameters for Form Processing fp_outputparams TYPE sfpoutputparams, " Structure SFPOUTPUTPARAMS Short Description Form Processing Output Parameter it_mari TYPE zmari_tbl. " Table Type ZMARI_TBL MARI Table Tyoe * Sets the output parameters and opens the spool job CALL FUNCTION 'FP_JOB_OPEN' "& Form Processing: Call Form CHANGING ie_outputparams = fp_outputparams EXCEPTIONS cancel = 1 usage_error = 2 system_error = 3 internal_error = 4 OTHERS = 5. IF sy-subrc <> 0. *ENDIF. *&---- Get the name of the generated function module CALL FUNCTION 'FP_FUNCTION_MODULE_NAME' "& Form Processing Generation EXPORTING i_name = 'ZSUR_ADOBE_FORM' IMPORTING e_funcname = fm_name. IF sy-subrc <> 0. * ENDIF. *-- Fetch the Data and store it in the Internal Table SELECT * FROM mari INTO TABLE it_mari UP TO 15 ROWS. * Language and country setting (here US as an example) fp_docparams-langu = 'E'. fp_docparams-country = 'US'. *&--- Call the generated function module CALL FUNCTION fm_name EXPORTING /1bcdwb/docparams = fp_docparams zmari = it_mari * IMPORTING * /1BCDWB/FORMOUTPUT = EXCEPTIONS usage_error = 1 system_error = 2 internal_error = 3. IF sy-subrc <> 0. * ENDIF. *&---- Close the spool job CALL FUNCTION 'FP_JOB_CLOSE' * IMPORTING * E_RESULT = EXCEPTIONS usage_error = 1 system_error = 2 internal_error = 3 OTHERS = 4. IF sy-subrc <> 0. * ENDIF.
Then activate and Execute (F8) it.
Then the printer screen will appear.
Click the Print Preview
Then the Output will shown as below.