on 06-02-2010 7:13 AM
Hello Developers,
I want to print multiple Smartforms for a range of Documents.
Example:
Document Number: 2000000002 to 2000000005
I want to print Separate Smartforms for each Document Number.
I dont have any idea about printing multiple smartforms.Pls Help me.
call the FM for the SmartForm from inside a loop, supplying values from the current row.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
HI (@ Bibhu_abap,@Break-Point ) ,
I need to make the same thing . I am calling FM inside the loop its working for all the documents but
the problem is its coming 1 by 1 like (in selection user has given 3 doc no-150000001 , 150000002 , 1500000003) after printing doc no 1500000001 then again its asking to print 1500000002 and then after printing 150000002 asking to print 150000003 .
I (Rather My client) want it to come all 3 printing at a time .They wont bother to print 3 times , Even they dont like to see the
preview .
Expecting ur helpful advise .
Thanks
Hi Atanu,
Thank you for the Reply. But I am still confused. can u send me the sample code, so that I can check the same.
I never printed the multiple documents at single time. I have changed some code now all the documents are printing in 1 smartform. So pls send me the sample codes.
Regards,
Bibhu
Hi ,
Simply I called the FM inside the loop .
In smartform doc_no is going 1 by 1 . I put all the printing logic and calculation in smartforms .
Check the driver program code below if it can help u.
SELECT-OPTIONS : DOC_NO FOR BSEG-BELNR .
PARAMETERS: fiscal type bseg-gjahr ,
bukrs type bseg-bukrs DEFAULT '1000' .
PARAMETERS : print RADIOBUTTON GROUP rg1 USER-COMMAND abcd ,
preview RADIOBUTTON GROUP rg1 DEFAULT 'X' .
.......
SELECT BELNR gjahr FROM BKPF INTO TABLE ITAB
WHERE BELNR IN DOC_NO and
gjahr = fiscal and
bukrs = bukrs .
.........
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZVOUCHER_PRINTING'
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
FM_NAME = FNAM
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3
.
........
LOOP AT ITAB INTO WA .
CLEAR BELNR .
clear gjahr .
if print = 'X' .
control_parameters-no_dialog = 'X'.
ENDIF .
BELNR = WA-BELNR .
gjahr = wa-gjahr .
CALL FUNCTION FNAM
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = control_parameters
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS =
USER_SETTINGS = 'X'
BELNR = BELNR
GJAHR = GJAHR
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 .
Thanks:
Atanu
Hi Bibhu ,
What I did in Smartforms Is Basically Calculation with the document No which is coming from Driver program .
I dont know why r u getting problem but if u have time then u can check like--
Print a single text ,,,check how many times it is printing .
In normal situation if u have 5 doc no text should print 5 times coz loop will be iterated 5 times .
But You can see the print preview everytime u click 'back' .
Regards:
Atanu
Hi Atanu,
My Problem is not solved yet. i am giving you my driver program codes. Please Check and tell me where to loop.
Part I
TABLES : BKPF,
BSEG,
ZFI_BSEG.
TYPES : BEGIN OF TY_BKPF,
BUKRS TYPE BKPF-BUKRS,
BELNR TYPE BKPF-BELNR,
GJAHR TYPE BKPF-GJAHR,
BUDAT TYPE BKPF-BUDAT,
XBLNR TYPE BKPF-XBLNR,
BKTXT TYPE BKPF-BKTXT,
BLART TYPE BKPF-BLART,
END OF TY_BKPF.
DATA : IT_BKPF TYPE TABLE OF TY_BKPF,
IT_BSEG TYPE TABLE OF ZFI_BSEG.
DATA : WA_BKPF LIKE LINE OF IT_BKPF,
WA_BSEG LIKE LINE OF IT_BSEG.
DATA : WRK_KTOPL TYPE T001-KTOPL,
WRK_FRMNAME TYPE RS38L_FNAM.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : PA_BELNR TYPE BKPF-BELNR,
PA_BUKRS TYPE BKPF-BUKRS,
PA_GJAHR TYPE BKPF-GJAHR.
SELECTION-SCREEN END OF BLOCK B1.
PERFORM DATA_SELECTION.
PERFORM CALL_SMARTFORM.
FORM DATA_SELECTION .
SELECT BUKRS
BELNR
GJAHR
BUDAT
XBLNR
BKTXT
BLART
FROM BKPF
INTO CORRESPONDING FIELDS OF TABLE IT_BKPF
WHERE BUKRS = PA_BUKRS
AND BELNR = PA_BELNR
AND GJAHR = PA_GJAHR.
AND BLART = 'KR'.
IF IT_BKPF IS NOT INITIAL.
SELECT BUKRS
BELNR
GJAHR
BUZEI
BSCHL
SHKZG
DMBTR
HKONT
SGTXT
LIFNR
KUNNR
AUGBL
AUGGJ
FROM BSEG
INTO CORRESPONDING FIELDS OF TABLE IT_BSEG
FOR ALL ENTRIES IN IT_BKPF
WHERE BELNR = IT_BKPF-BELNR
AND BUKRS = IT_BKPF-BUKRS
AND GJAHR = IT_BKPF-GJAHR.
ENDIF.
SELECT SINGLE KTOPL
FROM T001
INTO WRK_KTOPL
WHERE BUKRS = PA_BUKRS.
LOOP AT IT_BSEG INTO WA_BSEG.
SELECT SINGLE SAKNR
TXT50
FROM SKAT
INTO (WA_BSEG-SAKNR,WA_BSEG-TXT50)
WHERE SAKNR = WA_BSEG-HKONT
AND KTOPL = WRK_KTOPL.
MODIFY IT_BSEG FROM WA_BSEG INDEX SY-TABIX TRANSPORTING SAKNR
TXT50.
ENDLOOP.
SORT IT_BSEG BY SHKZG DESCENDING.
ENDFORM.
FORM CALL_SMARTFORM .
Next Part II............
Part II
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZFI_VOUCHER'
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
FM_NAME = WRK_FRMNAME
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.
IF WRK_FRMNAME IS NOT INITIAL.
CALL FUNCTION WRK_FRMNAME
EXPORTING
HEADER_DATA = IT_BKPF
TABLES
ITEM_DATA = IT_BSEG
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELLED = 4
OTHERS = 5.
ENDIF.
ENDFORM.
Here I am Getting all the Documents in 1 smartform & every Document is coming twice. Tell me where to LOOP
User | Count |
---|---|
84 | |
10 | |
10 | |
10 | |
7 | |
6 | |
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.