on 11-25-2008 4:24 AM
Hello Experts,
Here is the scenario, standard program RFFOUS_C will call the sapscript FORM1 which in turn has a custom program
that contains the subroutines. In one of those subroutines, I need to call another sapscript form which is FORM2.
Below is a rough logic:
RFFOUS_C->FORM1->SUBROUTINES->FORM2
Here is the code in the subroutine which is called by FORM1. I need to call FORM2.
FORM write_line_items TABLES im_input STRUCTURE itcsy
ex_output STRUCTURE itcsy.
CONSTANTS: lcc_laufd TYPE char11 VALUE 'REGUH-LAUFD',
lcc_laufi TYPE char11 VALUE 'REGUH-LAUFI',
lcc_xvorl TYPE char11 VALUE 'REGUH-XVORL',
lcc_zbukr TYPE char11 VALUE 'REGUH-ZBUKR',
lcc_lifnr TYPE char11 VALUE 'REGUH-LIFNR',
lcc_vblnr TYPE char11 VALUE 'REGUH-VBLNR'.
DATA: ltyd_laufd TYPE reguh-laufd,
ltyc_laufi TYPE reguh-laufi,
ltyc_xvorl TYPE reguh-xvorl,
ltyc_zbukr TYPE reguh-zbukr,
ltyc_lifnr TYPE reguh-lifnr,
ltyc_vblnr TYPE reguh-vblnr.
DATA: ltyc_date TYPE char10.
LOOP AT im_input INTO gw_input.
CASE gw_input-name.
WHEN lcc_laufd.
ltyc_date = gw_input-value.
REPLACE ALL OCCURRENCES OF '.' IN ltyc_date WITH space.
CONCATENATE ltyc_date+4(4) ltyc_date+2(2) ltyc_date+0(2)
INTO ltyc_date.
ltyd_laufd = ltyc_date.
WHEN lcc_laufi.
ltyc_laufi = gw_input-value.
WHEN lcc_xvorl.
ltyc_xvorl = gw_input-value.
WHEN lcc_zbukr.
ltyc_zbukr = gw_input-value.
WHEN lcc_lifnr.
ltyc_lifnr = gw_input-value.
WHEN lcc_vblnr.
ltyc_vblnr = gw_input-value.
ENDCASE.
ENDLOOP.
SELECT *
FROM regup
INTO TABLE gt_regup
WHERE laufd = ltyd_laufd
AND laufi = ltyc_laufi
AND xvorl = ltyc_xvorl
AND zbukr = ltyc_zbukr
AND lifnr = ltyc_lifnr
AND vblnr = ltyc_vblnr.
IF gt_regup[] IS NOT INITIAL.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
* APPLICATION = 'TX'
* ARCHIVE_INDEX =
* ARCHIVE_PARAMS =
* DEVICE = 'PRINTER'
* DIALOG = 'X'
form = 'Z2574FFI_RA_CIMB'
* LANGUAGE = SY-LANGU
* OPTIONS =
* MAIL_SENDER =
* MAIL_RECIPIENT =
* MAIL_APPL_OBJECT =
* RAW_DATA_INTERFACE = '*'
* SPONUMIV =
* IMPORTING
* LANGUAGE =
* NEW_ARCHIVE_PARAMS =
* RESULT =
EXCEPTIONS
canceled = 1
device = 2
form = 3
OPTIONS = 4
unclosed = 5
mail_options = 6
archive_error = 7
invalid_fax_number = 8
more_params_needed_in_batch = 9
spool_error = 10
codepage = 11
OTHERS = 12.
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 'START_FORM'
EXPORTING
* ARCHIVE_INDEX =
form = 'Z2574FFI_RA_CIMB'
* LANGUAGE = ' '
* STARTPAGE = ' '
* PROGRAM = ' '
* MAIL_APPL_OBJECT =
* IMPORTING
* LANGUAGE =
EXCEPTIONS
form = 1
format = 2
unended = 3
unopened = 4
unused = 5
spool_error = 6
codepage = 7
OTHERS = 8.
IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT gt_regup INTO regup.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'LINE_ITEMS'
function = 'APPEND'
type = 'BODY'
window = 'MAIN'
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
element = 1
function = 2
type = 3
unopened = 4
unstarted = 5
window = 6
bad_pageformat_for_print = 7
spool_error = 8
codepage = 9
OTHERS = 10.
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.
CALL FUNCTION 'END_FORM'
* IMPORTING
* RESULT =
EXCEPTIONS
unopened = 1
bad_pageformat_for_print = 2
spool_error = 3
codepage = 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.
CALL FUNCTION 'CLOSE_FORM'
* IMPORTING
* RESULT =
* RDI_RESULT =
* TABLES
* OTFDATA =
EXCEPTIONS
unopened = 1
bad_pageformat_for_print = 2
send_error = 3
spool_error = 4
codepage = 5
OTHERS = 6.
IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDFORM. "write_line_items
Hi,
Understood your requirement and providing pseudo code as folows:
perform main_form_open. "Main subroutine
form main_form_open.
perform get_data.
perform data_validations.
perform open_form. "calling FORM1
perform call_windows. "calling differen windows in FORM1
perform special_data_print. "calling FORM2
perform close_form. "closing FORM1
endform.
form open_form.
call function 'OPEN_FORM'
exporting
form = 'FORM1'.
endform.
form special_data_print. "Special data to be printed using FORM2
call function 'START_FORM'
exporting
form = 'FORM2'.
print the data to be printed in FORM2
call function 'END_FORM'. "FORM2 will be closed
endform.
from close_form.
call function 'CLOSE_FORM'. "FORM1 will be closed
endform.
Hope it might clarifies your doubts.
Regards,
Prasanth
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
93 | |
10 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.