Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Zvoucher printing for multiple docs

Former Member
0 Likes
5,565

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.

21 REPLIES 21
Read only

nabheetscn
SAP Champion
SAP Champion
0 Likes
5,502

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.

Read only

0 Likes
5,502

Hi Nabheet ,

Should i loop in the driver program or in the smartform coding?

Regards,

Sam.

Read only

0 Likes
5,502

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.

Read only

0 Likes
5,502

Each voucher on one page...

Read only

0 Likes
5,502

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.

Read only

Sijin_Chandran
Active Contributor
0 Likes
5,502

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.

Read only

0 Likes
5,502

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.

Read only

0 Likes
5,502

Should i give the same internal table name as in smartform or should i declare another internal name for the driver prog?

Name is not the thing which matters ,

The thing which matters is TYPE.

Type of Internal Table should be same at Driver Pgm and at SF Interface.

Read only

Former Member
0 Likes
5,502

This message was moderated.

Read only

0 Likes
5,502

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.

Read only

0 Likes
5,502

declare the same in form interface of smart form

Read only

0 Likes
5,502

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.

  • In th smart form  dbl click on the interface.
  • goto tables tab.
  • itab1 like   zstructure1.
  • in the import tab.
  • waquotation like zstructure

Message was edited by: Matthew Billingham - removed forbidden site reference

Read only

Former Member
0 Likes
5,502

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

Read only

Former Member
0 Likes
5,502

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.

Read only

0 Likes
5,502

What is thje issue you are facing?

Read only

0 Likes
5,502

im not able to get more than one voucher . my requirement is to print more then one voucher at a time.

Read only

0 Likes
5,502

Are you planning to call smartform for each voucher or passing all data at one go?

Read only

0 Likes
5,502

calling smartform for each voucher.

Read only

0 Likes
5,502

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

Read only

thangam_perumal
Contributor
0 Likes
5,502

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.

  1. Endform.


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


Read only

former_member226225
Contributor
0 Likes
5,502

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.