on 02-08-2008 9:53 AM
can we call multiple forms in a smartform?
in script we do so by calling start_form FM from driver program
in smartform how to achieve this?
Hi ,
Check the following code . I have done it a couple of weeks back.
Reward points if useful
&---------------------------------------------------------------------*
& Report ZLOK_TEST_SMARTF_SPOOL
&
&---------------------------------------------------------------------*
&
&
&---------------------------------------------------------------------*
REPORT zlok_test_smartf_spool.
TABLES: imrg.
CONSTANTS : c_x TYPE c VALUE 'X'.
DATA: v_ssf_name TYPE tdsfname,
v_func_mod_name TYPE rs38l_fnam.
TYPES: BEGIN OF ty_mdocm,
mdocm TYPE imrg-mdocm,
point TYPE imrg-point,
codgr TYPE imrg-codgr,
vlcod TYPE imrg-codgr,
END OF ty_mdocm,
tt_mdocm TYPE STANDARD TABLE OF ty_mdocm.
DATA: wa_mdocm TYPE ty_mdocm.
DATA: it_mdocm TYPE tt_mdocm.
DATA: v_formname TYPE tdsfname.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 NO INTERVALS .
PARAMETERS : p_ssfnam TYPE tdsfname OBLIGATORY.
PARAMETERS: p_copy TYPE ssfcompop-tdcopies DEFAULT '001'. " No. of copies
PARAMETERS: p_prtr TYPE ssfcompop-tddest DEFAULT 'LOCL'. " Printer name
PARAMETERS: p_pv AS CHECKBOX DEFAULT 'X'. " Print Preview
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002 .
SELECT-OPTIONS: so_mdocm FOR imrg-mdocm OBLIGATORY. " Measuring Document
SELECT-OPTIONS: so_point FOR imrg-point OBLIGATORY. " Measuring Point
PARAMETERS:p_mdocm TYPE imrc_mdocm OBLIGATORY,
p_point TYPE imrc_point OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK RAD1
WITH FRAME TITLE TEXT-003.
PARAMETERS icdcloop RADIOBUTTON GROUP GR1.
PARAMETERS snub RADIOBUTTON GROUP GR1.
PARAMETERS Rts RADIOBUTTON GROUP GR1.
SELECTION-SCREEN END OF BLOCK RAD1.
START-OF-SELECTION.
IF so_mdocm[] IS NOT INITIAL.
SELECT mdocm point codgr vlcod INTO TABLE it_mdocm
FROM imrg WHERE mdocm IN so_mdocm
AND point IN so_point.
ENDIF.
call Generated Fun module
PERFORM call_smartform.
&---------------------------------------------------------------------*
& Form call_smartform
&---------------------------------------------------------------------*
text
----------------------------------------------------------------------*
--> p1 text
<-- p2 text
----------------------------------------------------------------------*
FORM call_smartform .
DATA: v_form_type(15) TYPE c.
DATA: wa_ssfctrl TYPE ssfctrlop.
DATA: v_lines TYPE i.
DATA:x_output_options TYPE ssfcompop.
x_output_options-tdimmed = space.
x_output_options-tdnewid = c_x.
x_output_options-tdreceiver = sy-uname.
x_output_options-tdcopies = p_copy. " No. of copies
x_output_options-tddest = p_prtr. " Printer name
DESCRIBE TABLE it_mdocm LINES v_lines.
LOOP AT it_mdocm INTO wa_mdocm.
IF sy-tabix EQ 1.
wa_ssfctrl-no_open = space.
wa_ssfctrl-no_close = c_x.
ELSEIF sy-tabix EQ v_lines.
wa_ssfctrl-no_open = c_x.
wa_ssfctrl-no_close = space.
ELSE.
wa_ssfctrl-no_open = c_x.
wa_ssfctrl-no_close = c_x.
ENDIF.
if v_lines eq 1.
wa_ssfctrl-no_open = space.
wa_ssfctrl-no_close = space.
endif.
IF p_pv = c_x.
wa_ssfctrl-preview = c_x. " printpreview required
ENDIF.
wa_ssfctrl-device = 'PRINTER'. " Device
wa_ssfctrl-no_dialog = c_x. " Dialog
wa_ssfctrl-langu = sy-langu. " langauage
CLEAR: v_form_type.
CONCATENATE wa_mdocm-codgr '-' wa_mdocm-vlcod INTO v_form_type.
IF ( wa_mdocm-codgr EQ 'RTS' ) .
v_form_type = 'RTS-01'.
ELSEIF ( wa_mdocm-codgr EQ 'SNIB' ).
v_form_type = 'SNUB-01'.
ENDIF.
CASE v_form_type.
WHEN 'ICDC-01'.
MOVE 'ZPM1_ICDC01' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
WHEN 'ICDC-02'.
MOVE 'ZPM1_ICDC02' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
WHEN 'ICDC-03'.
MOVE 'ZPM1_ICDC03' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
WHEN 'ICDC-04'.
MOVE 'ZPM1_ICDC04' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
WHEN 'ICDC-05'.
MOVE 'ZPM1_ICDC05' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
WHEN 'ICDC-06'.
MOVE 'ZPM1_ICDC06' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
WHEN 'ICDC-07'.
MOVE 'ZPM1_ICDC07' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
WHEN 'ICDC-08'.
MOVE 'ZPM1_ICDC08' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
WHEN 'ICDC-09'.
MOVE 'ZPM1_ICDC09' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
WHEN 'ICDC-LOOP'.
MOVE 'ZPM1_ICDCLOOP' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name "'/1BCDWB/SF00000134'
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
WHEN 'IST-BTO' OR 'IST-BTC' OR 'IST-AT' OR 'IST-AJ' OR 'IST-ILRT' OR 'IST-PUMP'.
MOVE 'ZPM1_IST' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name " '/1BCDWB/SF00000138'
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 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.
WHEN 'RTS-01'.
MOVE 'ZPM1_RTS' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
WHEN 'SNUB-01'.
MOVE 'ZPM1_SNUB' TO v_formname. " move form name into the v_formname variable
PERFORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION v_func_mod_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = wa_ssfctrl
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = x_output_options
user_settings = space
mdocm = wa_mdocm-mdocm
point = wa_mdocm-point
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 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.
ENDCASE.
ENDLOOP.
ENDFORM. " call_smartform
*... Genate Smartform Fun module name
FORM call_generate_fm USING v_formname
CHANGING v_func_mod_name.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = v_formname
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
fm_name = v_func_mod_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 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.
ENDFORM. "call_generate_fm
Regards,
Nageswar
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
hi
you can call mulltiple forms by calling FM that is calling your smartform inside the loop.
it will display the forms one by one.
here is the sample print program
_________________________________________________________________
report z_smartform.
tables vbrk.
data : lt_vbrk type standard table of vbrk ,
lt_vbrp type standard table of vbrp,
wa_vbrk type vbrk,
lt_adrc type standard table of adrc,
wa_vbrp type vbrp,
lv_adrnr type kna1-adrnr,
wa_adrc type adrc.
data: var_fmname type rs38l_fnam .
select-options so_vbeln for vbrk-vbeln.
select vbeln
fkdat
kunrg
xblnr
waerk
from vbrk
into corresponding fields of table lt_vbrk
where vbeln in so_vbeln.
loop at lt_vbrk into wa_vbrk.
select single adrnr from kna1 into lv_adrnr where kunnr = wa_vbrk-kunrg .
if sy-subrc = 0.
select single name1
street
city1
post_code1
country
tel_number
from adrc
into corresponding fields of wa_adrc
where addrnumber = lv_adrnr and date_from <= sy-datum and date_to >= sy-datum.
endif.
select matnr
arktx
fkimg
vrkme
netwr
from vbrp
into corresponding fields of table lt_vbrp
where vbeln = wa_vbrk-vbeln .
call function 'SSF_FUNCTION_MODULE_NAME'
exporting
formname = 'ZASG12_SMARTFORMS1'
VARIANT = ' '
DIRECT_CALL = ' '
importing
fm_name = var_fmname
exceptions
no_form = 1
no_function_module = 2
others = 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.
call function var_fmname
exporting
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS =
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS =
USER_SETTINGS = 'X'
wa_invoice = wa_vbrk
wa_header = wa_adrc
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
tables
it_main = lt_vbrp
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 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.
endloop .
_________________________________________________________________
regards
vijay
reward points if helpful
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
98 | |
11 | |
11 | |
10 | |
10 | |
8 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.