cancel
Showing results for 
Search instead for 
Did you mean: 

smart forms

Former Member
0 Kudos

hello all,

can any one tell me the various methods of calling a smartform in the driver program...in detail

thank you.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Sandeep,

<b>Integrating the Smart Form into the Application</b>

You trigger form printing by calling only two function modules. The first module uses the name of the form to determine the name of the generated function module. Then you call this module.

The name of the generated function module is unique only within one system.

Therefore, you must always call the function module first that uses the form name to determine the current name of the generated module.

Prerequisites

You defined the form interface in your form and activated the form.

Procedure

1. In the Form Builder call the function Environment -> Name of the function module and use

STRG-Y and STRG-C to copy its name.

2. In the data retrieval program define a variable of type rs281_fnam for the name of the generated function module:

data fm_name type rs38l_fnam.

You can call the Smart Form in other parts of the application program as well.

However, in this case you must make sure that the system can access the data to be passed from that place. We recommend to encapsulate the data retrieval in a

function module as well.

3. If desired, you can call the function module SSF_FIELD_LIST. It returns a list of the form parameters actually used in the form. You can use this information to limit data selection, if necessary.

4. Call function module SSF_FUNCTION_MODULE_NAME. It returns the name of the generated

function module:

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = '<form name>'

IMPORTING

FM_NAME = fm_name

EXCEPTIONS

NO_FORM = 1

NO_FUNCTION_MODULE = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

<error handling>

ENDIF.

5. Call the generated function module. To do this, use the Insert statement function for CALL FUNCTION in the ABAP Editor and use the name you copied in step 1. (to avoid having to copy all interface parameters manually). Then replace the function module name with the

variable fm_name defined in step 2.

CALL FUNCTION fm_name

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_PARAMETERS =

  • CONTROL_PARAMETERS =

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

  • OUTPUT_OPTIONS =

  • USER_SETTINGS = 'X'

G_CARRID = <variable>

G_CONNID = <variable>

G_FLDATE = <variable>

  • IMPORTING

  • DOCUMENT_OUTPUT_INFO =

  • JOB_OUTPUT_INFO =

  • JOB_OUTPUT_OPTIONS =

TABLES

GT_SBOOK = <internal table>

EXCEPTIONS

FORMATTING_ERROR = 1

INTERNAL_ERROR = 2

SEND_ERROR = 3

USER_CANCELED = 4

OTHERS = 5.

IF SY-SUBRC <> 0.

<error handling>

ENDIF.

In this example, three variables and an internal table are passed. The parameters

G_CARRID, G_CONNID, G_FLDATA, and GT_SBOOK have been defined before in the form interface.

6. In the interface pass all data you want to transfer to the form.

Result

The generated function module processes the form logic defined in the Smart Form. Its output is sent to the printer spool for processing.

As long as you do not change the form interface, you can make any changes to the form. When you activate it again, the system generates the current version of the form as soon as you call the function module. Only if you change the form interface, you must adapt the interface in the data retrieval program.

i think it will useful for u.

Reward points if useful.

Thanks,

Usha

Answers (2)

Answers (2)

Former Member
0 Kudos

hi,

1)first after activating the smartform you can get a function module if you execute that smartforms copy that function module and go to the driver programs

2)Select the pattern and provide the function module and go with enter now you can pass all the input parameters and output parameters.

3)now you can activate your driver program and execute it displays the output

ii)

1)first after activating the smartform you can get a function module if you execute that smartforms copy that function module and go to the driver programs

2)Select the pattern and provide the function module and go with enter now you can pass all the input parameters and output parameters.

3)now remove the function module name after the call function and replace with a variable like this.

DATA: G_FMNAME TYPE RS38L_FNAM.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = P_SMNAME

IMPORTING

FM_NAME = G_FMNAME

EXCEPTIONS

NO_FORM = 1

NO_FUNCTION_MODULE = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

MESSAGE E001.

ENDIF.

CALL FUNCTION G_FMNAME

TABLES

I_EBAN = ITAB

EXCEPTIONS

FORMATTING_ERROR = 1

INTERNAL_ERROR = 2

SEND_ERROR = 3

USER_CANCELED = 4

OTHERS = 5.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

Thanks,

Nethaji.

Former Member
0 Kudos

CAN YOU EXPLAIN ME WAHT IS THIS G_FNAME ETC MEANS...

THANK YOU.

Former Member
0 Kudos

hi sandeep,

it is name of generated function module.when u activate the smartform it will give one function module.here it is .it encapsulate all the smartform logic.

Thanks,

usha

Former Member
0 Kudos

hi sandeep,

We can call smartform in driver program using the FM <b>'SSF_FUNCTION_MODULE_NAME'</b>

In this pass the smartform name and after this just call the function module which gets generated by activating the smartform.

Reward points if helpful.