on 03-23-2009 9:05 AM
hai ,
i am new to samrtforms,i have on req can any body help to solve this..
my req is i want to print vouchers(fi related),
in my sel screen i designed belnr from ..to..
bukrs
gjahr
in my case i solved for single entry i.e belnr =1803334
bukrs = 123
gjahr =2009.
but i want to print range documents i.e when user gives documents from 1803334 to 1803344.
here i need to print 10 documents each document should on 1 page
1803334 on first page
1803335 on second page
;
;
;
1803344 on 10 the page
this is my req
can any body help me..
Hi Rao
I think it is the most easy to print all documents seperately.
Otherwise you have to change a lot in your smartform. (if all data is delivered bij the program)
To do this you have to builtin in a loop in your program in which the data is gathered and the smartform is called.
Succes,
Gr., Frank
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
here is my code ..here i called smartform only once..
**********************************************************************
MODULE : FI
FUNCTIONAL : RAMESH
DEVELOPER : AJAY
MODIFIED BY :
DATE OF CREATION : 18.03.2008
TRANSPORT REQUEST# :
PROGRAM NAME : ZFIS_JVOUCHERS1
TITLE : VOUCHERS
TRANSACTION CODE :
DEVELOPMENT CLASS :
DESCRIPTION : FORM
**********************************************************************
Change Details
**********************************************************************
CHANGED BY :
CHANGE DATE :
PURPOSE OF CHANGE :
TRANSPORT REQUEST# :
DESCRIPTION :
**********************************************************************
REPORT zfi_jvouchers.
TABLES:bkpf.
*********************************************************************
TYPE DECLARATIONS
*********************************************************************
TYPES:BEGIN OF ty_bseg,
bukrs TYPE bukrs,
belnr TYPE belnr_d,
bschl TYPE bschl,
buzei TYPE buzei,
wrbtr TYPE wrbtr,
zuonr TYPE dzuonr,
sgtxt TYPE sgtxt,
kostl TYPE kostl,
aufnr TYPE aufnr,
hkont TYPE hkont,
END OF ty_bseg.
TYPES:BEGIN OF ty_vbsegs,
belnr TYPE belnr_d,
bukrs TYPE bukrs,
buzei TYPE buzei,
bschl TYPE bschl,
wrbtr TYPE wrbtr,
zuonr TYPE dzuonr,
sgtxt TYPE sgtxt,
kostl TYPE kostl,
aufnr TYPE aufnr,
saknr TYPE saknr,
END OF ty_vbsegs.
TYPES:BEGIN OF ty_skat,
saknr TYPE saknr,
txt20 TYPE txt20_skat,
END OF ty_skat.
TYPES:BEGIN OF ty_final,
BLART TYPE BLART,
BLDAT TYPE BLDAT,
BELNR(12) TYPE c,
BUDAT TYPE BUDAT,
bxtxt type bktxt,
xblnr type xblnr,
buzei TYPE buzei,
bschl TYPE bschl,
saknr TYPE saknr,
txt20 TYPE txt20_skat,
wrbtr TYPE wrbtr,
zuonr TYPE dzuonr,
sgtxt TYPE sgtxt,
kostl TYPE kostl,
aufnr TYPE aufnr,
END OF ty_final.
TYPES:BEGIN OF ty_003t,
blart TYPE blart,
ltext TYPE ltext_003t,
END OF ty_003t.
TYPES:BEGIN OF ty_t001,
bukrs TYPE bukrs,
butxt TYPE butxt,
END OF ty_t001.
*********************************************************************
DATA DECLARATIONS
*********************************************************************
DATA:wa_bkpf TYPE bkpf,
it_bkpf TYPE TABLE OF bkpf,
fmname TYPE rs38l_fnam,
v_belnr1 TYPE bkpf-belnr,
v_belnr2 TYPE bkpf-belnr,
v_bukrs TYPE bkpf-bukrs,
v_gjahr TYPE bkpf-gjahr,
wa_bseg TYPE ty_bseg,
it_bseg TYPE TABLE OF ty_bseg,
wa_vbsegs TYPE ty_vbsegs,
it_vbsegs TYPE TABLE OF ty_vbsegs,
wa_skat TYPE ty_skat,
it_skat TYPE TABLE OF ty_skat,
wa_final TYPE ty_final,
it_final TYPE TABLE OF ty_final,
wa_t003t TYPE ty_003t,
it_t003t TYPE TABLE OF ty_003t,
wa_t001 TYPE ty_t001,
it_t001 TYPE TABLE OF ty_t001 .
*********************************************************************
SELECTION-SCREEN DESIGN
*********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:s_belnr FOR bkpf-belnr.
PARAMETERS: s_bukrs LIKE bkpf-bukrs OBLIGATORY,
s_gjahr LIKE bkpf-gjahr.
SELECTION-SCREEN END OF BLOCK b1.
*********************************************************************
VALIDATION OF SELECTION-SCREEN INPUTS
*********************************************************************
AT SELECTION-SCREEN ON s_belnr.
PERFORM validate_docno.
AT SELECTION-SCREEN ON s_bukrs.
PERFORM validate_companycode.
AT SELECTION-SCREEN ON s_gjahr.
PERFORM validate_fiyear.
*********************************************************************
START-OF-SELECTION
*********************************************************************
START-OF-SELECTION.
SELECT * FROM bkpf INTO TABLE it_bkpf
WHERE bukrs EQ s_bukrs
AND belnr IN s_belnr
AND gjahr EQ s_gjahr.
selecting doc type code Text
SELECT blart
ltext
FROM t003t
INTO TABLE it_t003t
FOR ALL ENTRIES IN it_bkpf
WHERE blart EQ it_bkpf-blart
AND spras EQ 'EN'.
selecting Company code Text
SELECT bukrs
butxt
FROM t001
INTO TABLE it_t001
FOR ALL ENTRIES IN it_bkpf
WHERE bukrs EQ it_bkpf-bukrs
AND spras EQ 'EN'.
IF NOT wa_bkpf IS INITIAL.
LOOP AT it_bkpf INTO wa_bkpf.
IF wa_bkpf-bstat EQ 'V'.
SELECT
SINGLE
belnr
bukrs
buzei
bschl
wrbtr
zuonr
sgtxt
kostl
aufnr
saknr
FROM vbsegs
INTO TABLE it_vbsegs
INTO wa_vbsegs
FOR ALL ENTRIES IN it_bkpf
WHERE bukrs EQ it_bkpf-bukrs
AND belnr EQ it_bkpf-belnr
and GJAHR eq s_gjahr.
IF sy-subrc EQ '0'.
SELECT
SINGLE
saknr
txt20
FROM skat
INTO TABLE it_skat
FOR ALL ENTRIES IN it_vbsegs
INTO wa_skat
WHERE saknr EQ it_vbsegs-saknr.
ENDIF.
ELSE.
SELECT
SINGLE
bukrs
belnr
bschl
buzei
wrbtr
zuonr
sgtxt
kostl
aufnr
hkont
FROM bseg
INTO TABLE it_bseg
INTO wa_bseg
FOR ALL ENTRIES IN it_bkpf
WHERE bukrs EQ it_bkpf-bukrs
AND belnr EQ it_bkpf-belnr
and gjahr eq s_gjahr.
IF sy-subrc EQ '0'.
SELECT
SINGLE
saknr
txt20
FROM skat
INTO TABLE it_skat
INTO wa_skat
FOR ALL ENTRIES IN it_bseg
WHERE saknr EQ it_bseg-hkont.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR wa_bkpf.
LOOP AT it_bkpf INTO wa_bkpf.
MOVE wa_bkpf-blart to wa_final-blart.
MOVE wa_bkpf-bldat to wa_final-bldat.
MOVE wa_bkpf-belnr to wa_final-belnr.
MOVE wa_bkpf-budat to wa_final-budat.
move wa_bkpf-bktxt to wa_final-bxtxt.
move wa_bkpf-xblnr to wa_final-xblnr.
IF wa_bkpf-bstat EQ 'V'.
sort it_vbsegs.
LOOP AT it_vbsegs INTO wa_vbsegs.
IF wa_vbsegs-belnr EQ wa_bkpf-belnr.
IF wa_vbsegs-bschl EQ '40' OR wa_vbsegs-bschl EQ '50'.
MOVE-CORRESPONDING wa_vbsegs TO wa_final.
READ TABLE it_skat INTO wa_skat WITH KEY saknr = wa_vbsegs-saknr.
IF wa_skat-saknr EQ wa_vbsegs-saknr.
MOVE wa_skat-txt20 TO wa_final-txt20.
ENDIF.
APPEND wa_final TO it_final.
ENDIF.
ENDIF.
ENDLOOP.
ELSE.
sort it_bseg.
LOOP AT it_bseg INTO wa_bseg.
IF wa_bseg-belnr EQ wa_bkpf-belnr.
IF wa_bseg-bschl EQ '40' OR wa_bseg-bschl EQ '50'.
MOVE-CORRESPONDING wa_bseg TO wa_final.
READ TABLE it_skat INTO wa_skat WITH KEY saknr = wa_bseg-hkont.
IF wa_skat-saknr EQ wa_vbsegs-saknr.
MOVE wa_skat-txt20 TO wa_final-txt20.
ENDIF.
APPEND wa_final TO it_final.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
PERFORM smartform.
&----
*& Form SMARTFORM
&----
text
----
FORM smartform .
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZFI_JVOCHERS12'
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
fm_name = fmname
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 fmname
EXPORTING
*COMPANY_CODE = V_BUKRS
EXPORTING
v_belnr1 = v_belnr1
v_belnr2 = v_belnr2
v_bukrs = v_bukrs
v_gjahr = v_gjahr
TABLES
it_bkpf = it_bkpf
it_final = it_final.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " SMARTFORM
&----
*& Form VALIDATE_DOCNO
&----
Validating Accounting Document Number
----
FORM validate_docno .
DATA:lv_belnr TYPE belnr_d.
IF s_belnr-low IS NOT INITIAL.
LOOP AT s_belnr .
SELECT SINGLE belnr
FROM bkpf
INTO lv_belnr
WHERE belnr EQ s_belnr-low.
IF sy-subrc NE '0'.
MESSAGE e001(zfi) WITH s_belnr-low .
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
CLEAR lv_belnr.
IF s_belnr-high IS NOT INITIAL.
LOOP AT s_belnr .
SELECT SINGLE belnr
FROM bkpf
INTO lv_belnr
WHERE belnr EQ s_belnr-high.
IF sy-subrc NE '0'.
MESSAGE e002(zfi) WITH s_belnr-high.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " VALIDATE_DOCNO
&----
*& Form VALIDATE_COMPANYCODE
&----
Validating Company Code
----
FORM validate_companycode .
DATA:lv_bukrs TYPE bukrs.
IF s_bukrs IS NOT INITIAL.
SELECT SINGLE bukrs
FROM t001
INTO lv_bukrs
WHERE bukrs EQ s_bukrs.
IF sy-subrc NE '0'.
MESSAGE e003(zfi) WITH s_bukrs.
ENDIF.
ENDIF.
ENDFORM. " VALIDATE_COMPANYCODE
&----
*& Form VALIDATE_FIYEAR
&----
Validating Fiscal Year
----
FORM validate_fiyear .
DATA:lv_gjahr TYPE gjahr.
IF s_gjahr IS NOT INITIAL.
SELECT SINGLE gjahr
FROM bkpf
INTO lv_gjahr
WHERE gjahr EQ s_gjahr.
IF sy-subrc NE '0'.
MESSAGE e004(zfi) WITH s_gjahr.
ENDIF.
ENDIF.
ENDFORM. " VALIDATE_FIYEAR
Hi ayo,
The print program looks pretty good.
Your are calling the smartform once. With all data in it_final.
You have to create in main a loop/table over it_final.
(like it_final into wa_final).
As firstline of this loop you enter a in case of a new documentnumber (not the first one)
a command (FLOW LOGIC). Here you can force a page break.
Take care of the right data in the right variables.
( I think you will use variables as wa_final-??????? )
Lets SF do its job.
if you have 1 it_final record for each voucher it will be easy to do.
Let me know if you have troubles.
Gr.,Frank
ok
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
hi,
i think u have to do it separately. its easy to u.
otherwise u have to do looping where u have to get all data together and then call smartform.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
if you want to print seperate form for all the document no then you just need to call the function modul(smart form) in loop and pass the appropriate data through its interface.
if you want to print all the document in seperate page then you need to trigger new page event whenever new document no is encountered.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
95 | |
11 | |
11 | |
10 | |
9 | |
8 | |
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.