‎2007 Apr 10 10:04 AM
When i am trying to execute a print program, it is giving an error message close_form is invalid,open_form is missing.I have called these 2 function modules.
I am trying to print address using address endaddress command.
‎2007 Apr 10 10:13 AM
Hi
It seems you have not called the OPEN_FORM fun module in the program first.
If you call Close_form without OPEN_FORM it gives that error.
First Call OPEN_FORM and pass Script Form name to it
then use START_FORM and WRITE_FORM, then
END_FORM and lastly CLOSE_FORM.
START_FORM and END_OFR
are not mandatory but Open,write and CLOSE are must.
check and correct the code.
reward points if useful
regards,
ANJI
‎2007 Apr 10 12:03 PM
‎2007 Apr 10 12:10 PM
hi
follow the sequence for open_form, write_form,close_form as in the sample code below.
it should help u out....
TABLES :vbrk , kna1 , adrc ,vbrp.
SELECT-OPTIONS : s_vbeln FOR vbrk-vbeln.
TYPES: BEGIN OF st_itab,
vbeln TYPE vbrk-vbeln,
fkdat TYPE vbrk-fkdat,
kunrg TYPE vbrk-kunrg,
xblnr TYPE vbrk-xblnr,
netwr TYPE vbrk-netwr ,
waerk TYPE vbrk-waerk,
END OF st_itab.
DATA: itab TYPE STANDARD TABLE OF st_itab,
wa_itab TYPE st_itab.
DATA :adr_no TYPE kna1-adrnr,
v_kunrg TYPE vbrk-kunrg.
TYPES : BEGIN OF st_itab1,
name1 TYPE adrc-name1,
street TYPE adrc-street ,
city1 TYPE adrc-city1 ,
post_code1 TYPE adrc-post_code1 ,
country TYPE adrc-country ,
tel_number TYPE adrc-tel_number ,
END OF st_itab1.
DATA: itab1 TYPE STANDARD TABLE OF st_itab1,
wa_itab1 TYPE st_itab1.
TYPES:BEGIN OF st_itab3,
matnr TYPE vbrp-matnr,
arktx TYPE vbrp-arktx,
fkimg TYPE vbrp-fkimg,
vrkme TYPE vbrp-vrkme,
netwr TYPE vbrp-netwr,
END OF st_itab3.
DATA: itab3 TYPE STANDARD TABLE OF st_itab3,
wa_itab3 TYPE st_itab3,
v_total TYPE vbrp-netwr value 0.
data : s1(3) type p decimals 1, "Box Y position
s2(3) type p decimals 1 value '0.5'. "Box Height
***************
***OPEN FORM
*****************
CALL FUNCTION 'OPEN_FORM'
EXPORTING
APPLICATION = 'TX'
ARCHIVE_INDEX =
ARCHIVE_PARAMS =
DEVICE = 'PRINTER'
DIALOG = 'X'
form = 'Z_CHALLENGE'
language = sy-langu
OPTIONS =
MAIL_SENDER =
MAIL_RECIPIENT =
MAIL_APPL_OBJECT =
RAW_DATA_INTERFACE = '*'
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.
******************
*PAGE NUMBER
******************
SELECT vbeln
fkdat
kunrg
xblnr
netwr
waerk
FROM vbrk
INTO TABLE itab
WHERE vbeln IN s_vbeln .
LOOP AT itab INTO wa_itab.
clear : s1.
s1 = '0.5'.
CLEAR V_TOTAL.
CALL FUNCTION 'START_FORM'
EXPORTING
ARCHIVE_INDEX =
form = 'Z_CHALLENGE'
language = sy-langu
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.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'HEADER'
FUNCTION = 'SET'
TYPE = 'BODY'
window = 'HEADER'
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.
SELECT SINGLE kunrg INTO v_kunrg FROM vbrk WHERE vbeln = wa_itab-vbeln.
SELECT SINGLE adrnr FROM kna1 INTO adr_no WHERE kunnr = v_kunrg.
SELECT SINGLE name1
street
city1
post_code1
country
tel_number
INTO wa_itab1
FROM adrc WHERE addrnumber = adr_no
AND date_from <= sy-datum AND date_to >= sy-datum.
*****************
INVOICE DIPLAY
****************
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'INVOICE'
function = 'APPEND'
type = 'BODY'
window = 'INVOICE'
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.
*********************
*ADDRESS
*******************
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'ADDRESS'
function = 'APPEND'
type = 'BODY'
window = 'ADDRESS'
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.
*****************
MAIN HEADER
*****************
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'HEADER_MAIN'
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.
***********************
*DISPLAYING DATA
***********************
SELECT matnr
arktx
fkimg
vrkme
netwr
INTO CORRESPONDING FIELDS OF TABLE itab3
FROM vbrp
WHERE vbeln = wa_itab-vbeln.
LOOP AT itab3 INTO wa_itab3 .
compute v_total = v_total + wa_itab3-netwr .
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'DATA'
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.
****************************
*FOOTER
****************************
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'FOOTER'
FUNCTION = 'SET'
TYPE = 'BODY'
window = 'FOOTER'
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.
s1 = s1 + '0.4' .
ENDLOOP.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'TOTAL'
FUNCTION = 'SET'
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.
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.
ENDLOOP.
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.
<b>plz reward pts if helpful.</b>
regards
vijay