2013 Oct 25 7:12 AM
Dear all,
I have an issue in printing voucher for multiple docs through smartforms. Iam not able to print more than one voucher. My requirement is to print more than one doc
by giving the doc no "BELNR" in the select option. Below is the code used in the driver program. Can anybody help me in this regard.
*&---------------------------------------------------------------------*
*& Include ZVOUCHER_TOP
*&---------------------------------------------------------------------*
TABLES:bkpf.
DATA : fm_name TYPE rs38l_fnam,
fname TYPE tdsfname,
g_belnr TYPE bkpf-belnr.
PARAMETERS : co_code TYPE BKPF-bukrs OBLIGATORY .
*PARAMETERS : doc_no TYPE BKPF-belnr ." OBLIGATORY . commented on 03.10.2013 - Dennis.
PARAMETERS : s_yr TYPE BKPF-gjahr ."OBLIGATORY .
SELECT-options s_belnr for bkpf-belnr.
AT SELECTION-SCREEN .
* SELECT SINGLE belnr
* FROM bkpf
* INTO g_belnr
* WHERE bukrs = co_code
* AND belnr = doc_no
* AND gjahr = s_yr.
SELECT belnr
FROM bkpf
INTO g_belnr
WHERE belnr in s_belnr
AND bukrs = co_code
AND gjahr = s_yr.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE 'This document Number does not exist' TYPE 'E'.
EXIT.
ENDIF.
*************structure : zdoc***********************************
*************search help : zdoc*********************************
*************search help : zyear********************************
Regards,
Sam.
Dear all,
I have an issue in printing voucher for multiple docs through smartforms. Iam not able to print more than one voucher. My requirement is to print more than one doc
by giving the doc no "BELNR" in the select option. Below is the code used in the driver program. Can anybody help me in this regard.
*&---------------------------------------------------------------------*
*& Include ZVOUCHER_TOP
*&---------------------------------------------------------------------*
TABLES:bkpf.
DATA : fm_name TYPE rs38l_fnam,
fname TYPE tdsfname,
g_belnr TYPE bkpf-belnr.
PARAMETERS : co_code TYPE BKPF-bukrs OBLIGATORY .
*PARAMETERS : doc_no TYPE BKPF-belnr ." OBLIGATORY . commented on 03.10.2013 - Dennis.
PARAMETERS : s_yr TYPE BKPF-gjahr ."OBLIGATORY .
SELECT-options s_belnr for bkpf-belnr.
AT SELECTION-SCREEN .
* SELECT SINGLE belnr
* FROM bkpf
* INTO g_belnr
* WHERE bukrs = co_code
* AND belnr = doc_no
* AND gjahr = s_yr.
SELECT belnr
FROM bkpf
INTO g_belnr
WHERE belnr in s_belnr
AND bukrs = co_code
AND gjahr = s_yr.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE 'This document Number does not exist' TYPE 'E'.
EXIT.
ENDIF.
*************structure : zdoc***********************************
*************search help : zdoc*********************************
*************search help : zyear********************************
Regards,
Sam.
2013 Oct 25 7:15 AM
Simply fetch the data into internal table first. Are you passing one number at a time to smartform..? If yes then just loop on table and call samrtform.
2013 Oct 25 7:22 AM
Hi Nabheet ,
Should i loop in the driver program or in the smartform coding?
Regards,
Sam.
2013 Oct 25 7:25 AM
That depends on the business need. How do they want to print. For each voucher one page or multiple voucher on single page. If multiple voucher on one page then simple pass internal table to smartform and print via loop else if they want one voucher on one page then after every loop trigger a new page command and get it done.
2013 Oct 25 7:27 AM
2013 Oct 25 7:32 AM
choose any one of these
call your smartform in LOOP or pass all data at once and then in MAIN window after every loop trigger NEW-PAGE command.
2013 Oct 29 5:05 AM
Hello Samuel ,
The best and simple approach is using Multi forms in one Print request technique ,
http://help.sap.com/saphelp_nw04s/helpdata/en/71/9ccd9c8e0e11d4b608006094192fe3/content.htm
Collect all your data in an Internal table related to Selections made ( just the same you do while creating reports ) and for Printing purpose use the above technique , calling the SF in a Loop.
2013 Nov 06 7:00 AM
Hello Sijin,
Should i give the same internal table name as in smartform or should i declare another internal name for the driver prog?
Rgds,
Sam.
2013 Nov 11 9:00 AM
2013 Nov 06 7:53 AM
2013 Nov 06 11:12 AM
Dear Zahid,
Can you pls tell me how to pass itab from driver prog to smartforms. I tried but it din't work out.
Rgds,
Sam.
2013 Nov 06 11:57 AM
2013 Nov 06 3:36 PM
data: fm_name type rs38l_fnam.
data:itab1 type table of zstructure1, "make a data dictionary structure
data: wa type zstructure1.
your logic.
call function 'SSF_FUNCTION_MODULE_NAME'
exporting
formname = 'ZH_MM_REQUEST_QUOTATION_MILL' "your smartform name
importing
fm_name = fm_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.
call function fm_name
exporting
waquotation = wa "your structure if you are sending some header area values.(which has to be displayed only once)
tables
itab1 = itab1 "your Itab name
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.
Message was edited by: Matthew Billingham - removed forbidden site reference
2013 Nov 06 11:33 AM
Hi,
After fetching complete data into final internal table.
In driver program, call SSF_OPEN function module.
After that LOOP the final internal table and wirte AT END OF BELNR.
Call FM using funciton module from Smart form.
ENDAT.
ENDLOOP.
Close the form using SSF_CLOSE
Try this..
Regards
Kusuma
2013 Nov 18 4:41 AM
Hello,
Still my issue has not been solved.
Iam pasting the driver program for your kind ref.
REPORT zvoucher5.
tables: bkpf, bseg, ADRC, t001, t003t, pc207, t001w.
TYPES : BEGIN OF struct,
belnr type bkpf-belnr,
buzei TYPE bseg-buzei, "item no
bschl TYPE bseg-bschl, "credit/debit
shkzg TYPE bseg-shkzg, "s/h
acct(10) TYPE c, " ACCOUNT
desc(50) TYPE c, "PARTICULARS
debit TYPE bseg-wrbtr, "DEBIT amount
credit TYPE bseg-wrbtr, " CREDIT AMOUNT
SGTXT TYPE BSEG-SGTXT,"ITEM TEXT
g_belnr type bkpf-belnr,
* co_code type bkpf-bukrs,
* doc_no type bkpf-belnr,
* period type bkpf-gjahr,
END OF struct.
TYPES : new(250) TYPE c,
NEW1(15) TYPE C,
PHONE(6) TYPE C.
data:
DUM(2) TYPE C,
g_belnr TYPE bkpf-belnr,
co_code type bkpf-bukrs,
doc_no type bkpf-belnr,
period type bkpf-gjahr,
WA_ADRC TYPE ADRC,
G_ADRNR TYPE T001-ADRNR,
G_STREET1 TYPE ADRC-STREET,
G_STREET2 TYPE ADRC-STREET,
G_BLART TYPE BKPF-BLART,
G_LTEXT TYPE T003T-LTEXT,
G_DATE TYPE BKPF-BLDAT,
G_KUNNR TYPE BSEG-KUNNR,
G_CREDIT TYPE BSEG-WRBTR,
G_DEBIT TYPE BSEG-WRBTR,
AMT LIKE PC207-BETRG,
WORDS TYPE NEW,
CREDIT TYPE NEW1,
DEBIT TYPE NEW1,
G_XBLNR TYPE BKPF-XBLNR,
G_BKTXT TYPE BKPF-BKTXT,
PHONE TYPE PHONE,
G_KOART TYPE BSEG-KOART,
G_LIFNR TYPE BSEG-LIFNR,
G_ADRNR1 TYPE T001W-ADRNR,
WA_ADRC1 TYPE ADRC.
DATA : fm_name TYPE rs38l_fnam,
fname TYPE tdsfname,
it_main type table of struct,
wa_main type struct.
SELECT-options:
s_belnr for bkpf-belnr,
s_bukrs for bkpf-bukrs,
s_gjahr for bkpf-gjahr.
*SELECT-options s_bukrs for bkpf-bukrs.
*SELECT-options s_gjahr for bkpf-gjahr.
AT SELECTION-SCREEN.
* SELECT belnr
* FROM bkpf
* INTO wa_main-belnr
* WHERE "belnr = doc_no
** AND bukrs = co_code
** AND gjahr = period
* belnr in s_belnr.
* endselect.
SELECT belnr
FROM bkpf
INTO g_belnr
WHERE belnr in s_belnr
AND bukrs = co_code
AND gjahr = period"s_yr.
and belnr = doc_no.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE 'This document Number does not exist' TYPE 'E'.
EXIT.
ENDIF.
*SELECT belnr bukrs gjahr from bkpf
* into CORRESPONDING FIELDS OF TABLE it_main
* where belnr in s_belnr and bukrs in s_bukrs and gjahr in s_gjahr.
SELECT BUZEI BSCHL SHKZG
FROM BSEG
INTO (WA_MAIN-BUZEI, WA_MAIN-BSCHL ,WA_MAIN-SHKZG)
WHERE BUKRS = CO_CODE
AND BELNR = DOC_NO
AND GJAHR = PERIOD.
APPEND WA_MAIN TO IT_MAIN.
ENDSELECT.
LOOP AT IT_MAIN INTO WA_MAIN.
SELECT SINGLE SGTXT
FROM BSEG
INTO WA_MAIN-SGTXT
WHERE BUKRS = CO_CODE
AND BELNR = DOC_NO
AND GJAHR = PERIOD
AND BUZEI = WA_MAIN-BUZEI.
* TRANSLATE wa_main-sgtxt TO UPPER CASE.
*************DESCRIPTION**************
SELECT SINGLE KUNNR KOART LIFNR"ADDED
FROM BSEG
INTO (G_KUNNR,G_KOART,G_LIFNR)
WHERE BUKRS = CO_CODE
AND BELNR = DOC_NO
AND GJAHR = PERIOD
AND BUZEI = WA_MAIN-BUZEI.
IF G_KUNNR = ' '.
SELECT SINGLE HKONT
FROM BSEG
INTO WA_MAIN-ACCT
WHERE BUKRS = CO_CODE
AND BELNR = DOC_NO
AND GJAHR = PERIOD
AND BUZEI = WA_MAIN-BUZEI.
ENDIF. "ADDED
IF G_KOART = 'S'."ADDED
SELECT SINGLE TXT50
FROM SKAT
INTO WA_MAIN-DESC
WHERE SPRAS = 'EN'
AND KTOPL = 'GTNC'
AND SAKNR = WA_MAIN-ACCT.
ELSEIF G_KOART = 'D'.
*ELSEIF G_KUNNR NE ' '. "COMMENT
WA_MAIN-ACCT = G_KUNNR.
SELECT SINGLE NAME1
FROM KNA1
INTO WA_MAIN-DESC
WHERE KUNNR = G_KUNNR.
ELSEIF G_KOART = 'K'.
SELECT SINGLE NAME1
FROM LFA1
INTO WA_MAIN-DESC
WHERE LIFNR = G_LIFNR.
ENDIF.
*ENDIF. "COMMENT
*********AMOUNT***************
IF WA_MAIN-SHKZG = 'S'.
SELECT SINGLE WRBTR
FROM BSEG
INTO WA_MAIN-DEBIT
WHERE BUKRS = CO_CODE
AND BELNR = DOC_NO
AND GJAHR = PERIOD
AND BUZEI = WA_MAIN-BUZEI.
ELSEIF WA_MAIN-SHKZG = 'H'.
SELECT SINGLE WRBTR
FROM BSEG
INTO WA_MAIN-CREDIT
WHERE BUKRS = CO_CODE
AND BELNR = DOC_NO
AND GJAHR = PERIOD
AND BUZEI = WA_MAIN-BUZEI.
ENDIF.
MODIFY IT_MAIN FROM WA_MAIN .
DEBIT = WA_MAIN-DEBIT.
CREDIT = WA_MAIN-CREDIT.
SPLIT DEBIT AT '-' INTO DEBIT DUM.
SPLIT CREDIT AT '-' INTO CREDIT DUM.
G_DEBIT = G_DEBIT + DEBIT.
G_CREDIT = G_CREDIT + CREDIT.
ENDLOOP.
IF G_CREDIT = G_DEBIT.
AMT = G_CREDIT.
CALL FUNCTION 'HR_IN_CHG_INR_WRDS'
EXPORTING
AMT_IN_NUM = AMT
IMPORTING
AMT_IN_WORDS = WORDS
* EXCEPTIONS
* DATA_TYPE_MISMATCH = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
TRANSLATE WORDS TO UPPER CASE.
ENDIF.
START-OF-SELECTION.
fname = 'ZVOUCHER5'.
*LOOP AT it_main into wa_main.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = fname
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
fm_name = fm_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.
CALL FUNCTION fm_name "'/1BCDWB/SF00000019'
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
* CONTROL_PARAMETERS =
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* OUTPUT_OPTIONS =
* USER_SETTINGS = 'X'
doc_no = doc_no
co_code = co_code
period = period
* 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.
* ENDLOOP.
2013 Nov 18 4:46 AM
2013 Nov 18 4:52 AM
im not able to get more than one voucher . my requirement is to print more then one voucher at a time.
2013 Nov 18 4:55 AM
Are you planning to call smartform for each voucher or passing all data at one go?
2013 Nov 18 5:06 AM
2013 Nov 18 5:09 AM
Samuel
Then i do not see a loop at table ITAB(containing all vouchers detail) and inside it smartform shoudl be called.
Lets say for each voucher you want to pass 10 fields. So create a structure containing these 10 fields.
Before calling smartform get for all voucher theses fields into an internal table ITAB.
simply loop at itab pass first voucher detail to smartfrom and so on.
Nabheet
2013 Nov 18 5:15 AM
Dear Samuel,
U have to do little bit modification on your coding..
REPORT zvoucher5.
tables: bkpf, bseg, ADRC, t001, t003t, pc207, t001w.
TYPES : BEGIN OF struct,
belnr type bkpf-belnr,
buzei TYPE bseg-buzei, "item no
bschl TYPE bseg-bschl, "credit/debit
shkzg TYPE bseg-shkzg, "s/h
acct(10) TYPE c, " ACCOUNT
desc(50) TYPE c, "PARTICULARS
debit TYPE bseg-wrbtr, "DEBIT amount
credit TYPE bseg-wrbtr, " CREDIT AMOUNT
SGTXT TYPE BSEG-SGTXT,"ITEM TEXT
g_belnr type bkpf-belnr,
* co_code type bkpf-bukrs,
* doc_no type bkpf-belnr,
* period type bkpf-gjahr,
END OF struct.
TYPES : new(250) TYPE c,
NEW1(15) TYPE C,
PHONE(6) TYPE C.
data:
DUM(2) TYPE C,
g_belnr TYPE bkpf-belnr,
co_code type bkpf-bukrs,
doc_no type bkpf-belnr,
period type bkpf-gjahr,
WA_ADRC TYPE ADRC,
G_ADRNR TYPE T001-ADRNR,
G_STREET1 TYPE ADRC-STREET,
G_STREET2 TYPE ADRC-STREET,
G_BLART TYPE BKPF-BLART,
G_LTEXT TYPE T003T-LTEXT,
G_DATE TYPE BKPF-BLDAT,
G_KUNNR TYPE BSEG-KUNNR,
G_CREDIT TYPE BSEG-WRBTR,
G_DEBIT TYPE BSEG-WRBTR,
AMT LIKE PC207-BETRG,
WORDS TYPE NEW,
CREDIT TYPE NEW1,
DEBIT TYPE NEW1,
G_XBLNR TYPE BKPF-XBLNR,
G_BKTXT TYPE BKPF-BKTXT,
PHONE TYPE PHONE,
G_KOART TYPE BSEG-KOART,
G_LIFNR TYPE BSEG-LIFNR,
G_ADRNR1 TYPE T001W-ADRNR,
WA_ADRC1 TYPE ADRC.
DATA : fm_name TYPE rs38l_fnam,
fname TYPE tdsfname,
it_main type table of struct,
wa_main type struct.
Form get_details tables it_main.
SELECT belnr
FROM bkpf
INTO g_belnr
WHERE belnr in s_belnr
AND bukrs = co_code
AND gjahr = period"s_yr.
and belnr = doc_no.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE 'This document Number does not exist' TYPE 'E'.
EXIT.
ENDIF.
*SELECT belnr bukrs gjahr from bkpf
* into CORRESPONDING FIELDS OF TABLE it_main
* where belnr in s_belnr and bukrs in s_bukrs and gjahr in s_gjahr.
SELECT BUZEI BSCHL SHKZG
FROM BSEG
INTO (WA_MAIN-BUZEI, WA_MAIN-BSCHL ,WA_MAIN-SHKZG)
WHERE BUKRS = CO_CODE
AND BELNR = DOC_NO
AND GJAHR = PERIOD.
APPEND WA_MAIN TO IT_MAIN.
ENDSELECT.
LOOP AT IT_MAIN INTO WA_MAIN.
SELECT SINGLE SGTXT
FROM BSEG
INTO WA_MAIN-SGTXT
WHERE BUKRS = CO_CODE
AND BELNR = DOC_NO
AND GJAHR = PERIOD
AND BUZEI = WA_MAIN-BUZEI.
* TRANSLATE wa_main-sgtxt TO UPPER CASE.
*************DESCRIPTION**************
SELECT SINGLE KUNNR KOART LIFNR"ADDED
FROM BSEG
INTO (G_KUNNR,G_KOART,G_LIFNR)
WHERE BUKRS = CO_CODE
AND BELNR = DOC_NO
AND GJAHR = PERIOD
AND BUZEI = WA_MAIN-BUZEI.
IF G_KUNNR = ' '.
SELECT SINGLE HKONT
FROM BSEG
INTO WA_MAIN-ACCT
WHERE BUKRS = CO_CODE
AND BELNR = DOC_NO
AND GJAHR = PERIOD
AND BUZEI = WA_MAIN-BUZEI.
ENDIF. "ADDED
IF G_KOART = 'S'."ADDED
SELECT SINGLE TXT50
FROM SKAT
INTO WA_MAIN-DESC
WHERE SPRAS = 'EN'
AND KTOPL = 'GTNC'
AND SAKNR = WA_MAIN-ACCT.
ELSEIF G_KOART = 'D'.
*ELSEIF G_KUNNR NE ' '. "COMMENT
WA_MAIN-ACCT = G_KUNNR.
SELECT SINGLE NAME1
FROM KNA1
INTO WA_MAIN-DESC
WHERE KUNNR = G_KUNNR.
ELSEIF G_KOART = 'K'.
SELECT SINGLE NAME1
FROM LFA1
INTO WA_MAIN-DESC
WHERE LIFNR = G_LIFNR.
ENDIF.
*ENDIF. "COMMENT
*********AMOUNT***************
IF WA_MAIN-SHKZG = 'S'.
SELECT SINGLE WRBTR
FROM BSEG
INTO WA_MAIN-DEBIT
WHERE BUKRS = CO_CODE
AND BELNR = DOC_NO
AND GJAHR = PERIOD
AND BUZEI = WA_MAIN-BUZEI.
ELSEIF WA_MAIN-SHKZG = 'H'.
SELECT SINGLE WRBTR
FROM BSEG
INTO WA_MAIN-CREDIT
WHERE BUKRS = CO_CODE
AND BELNR = DOC_NO
AND GJAHR = PERIOD
AND BUZEI = WA_MAIN-BUZEI.
ENDIF.
MODIFY IT_MAIN FROM WA_MAIN .
DEBIT = WA_MAIN-DEBIT.
CREDIT = WA_MAIN-CREDIT.
SPLIT DEBIT AT '-' INTO DEBIT DUM.
SPLIT CREDIT AT '-' INTO CREDIT DUM.
G_DEBIT = G_DEBIT + DEBIT.
G_CREDIT = G_CREDIT + CREDIT.
ENDLOOP.
START-OF-SELECTION.
fname = 'ZVOUCHER5'.
*LOOP AT it_main into wa_main.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = fname
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
fm_name = fm_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.
CALL FUNCTION fm_name
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
* CONTROL_PARAMETERS =
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* OUTPUT_OPTIONS =
* USER_SETTINGS = 'X'
doc_no = doc_no
co_code = co_code
period = period
* 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.
* ENDLOOP.
call the subroutine from smartforms ( Global Definitions- Initialization) to Main program.
Perform Get Details in program zvoucher5 tables it_main.
above program will call the subroutine in Main program and get the values from it_main.
now you have all the values from it_main internal table and print the values in smartforms as your requirements with help of loops and Table and comment( For printing New Lines).
Try it.. it may solve your requirements...
with Regards,
Thangam.P
2013 Nov 18 7:16 AM
HI samuel ,
Use this logic for Printing Multiple Documents.
SORT : it_header BY belnr ASCENDING.
DESCRIBE TABLE it_header LINES tot_lines.
LOOP AT it_header INTO wa_header.
IF sy-tabix = 1.
* Dialog at first loop only
control_parameters-no_dialog = space.
* Open the spool at the first loop only:
control_parameters-no_open = space.
* Close spool at the last loop only
control_parameters-no_close = 'X'.
ELSE.
* Dialog at first loop only
control_parameters-no_dialog = 'X'.
* Open the spool at the first loop only:
control_parameters-no_open = 'X'.
ENDIF.
IF sy-tabix = tot_lines.
* Close spool
control_parameters-no_close = space.
ENDIF.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZFISF_VOUCHER_MULTIPLE'
IMPORTING
fm_name = w_form.
IF sy-subrc <> 0.
ENDIF.
CALL FUNCTION w_form
EXPORTING
control_parameters = control_parameters
wa_header = wa_header
TABLES
it_item = it_item1
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
ENDIF.
ENDLOOP.
ELSE.
MESSAGE 'No Data Exists for Specified Selection'(002) TYPE 'I'.
ENDIF.
endloop.
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |