cancel
Showing results for 
Search instead for 
Did you mean: 

Voucher Printing for multiple Documents in SMARTFORMS

Former Member
0 Kudos

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.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

call the FM for the SmartForm from inside a loop, supplying values from the current row.

Former Member
0 Kudos

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

Former Member
0 Kudos

ITS DONE

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

Hi Atanu,

I did the same thing but my output is coming only for one document. No multiple page is present. Did you change any thing in the smartform?

Regards,

Bibhu

Former Member
0 Kudos

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

Former Member
0 Kudos

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............

Former Member
0 Kudos

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

Answers (0)