Skip to Content
0
Former Member
Mar 21, 2009 at 07:02 AM

problem in printing SMARTFORM

47 Views

Hello experts,

I am having problem in print preview when I am calling a SMARTFORM from a program where I have used selection screen. I don't know what I am doing wrong. Please help me out.

This is the code----


REPORT YL_CN_FI .

TABLES : BKPF, "Accounting Header Data

BSEG, "Accounting Item Data

SKAT, "GL Text

T001W,

ADDR,

YADDR,

BSEC.

DATA : AMT_IN_WRD LIKE SPELL,

AMT_LINE1 LIKE ADDR-LINE0,

AMT_LINE2 LIKE ADDR-LINE0,

GL1 LIKE BSEG-HKONT,

GL2 LIKE BSEG-HKONT,

GLDESC1 LIKE SKAT-TXT50,

GLDESC2 LIKE SKAT-TXT50,

AMT1 LIKE BSEG-WRBTR,

AMT2 LIKE BSEG-WRBTR,

ORD1 LIKE BSEG-AUFNR,

ORD2 LIKE BSEG-AUFNR,

CC1 LIKE BSEG-KOSTL,

CC2 LIKE BSEG-KOSTL,

W_IND,

CNT TYPE N,

TAXCNT TYPE N,

OFFICE LIKE YADDR-ADD6,

TADR_NUM LIKE T001W-ADRNR,

RADI .

--


header text--

DATA BEGIN OF TLINES OCCURS 0.

INCLUDE STRUCTURE TLINE.

DATA END OF TLINES.

DATA : HDTEXT LIKE THEAD-TDNAME,

HLINE1 LIKE TLINE-TDLINE,

HLINE2 LIKE TLINE-TDLINE,

HLINE3 LIKE TLINE-TDLINE,

HLINE4 LIKE TLINE-TDLINE,

HLINE5 LIKE TLINE-TDLINE.

DATA : MTEXT LIKE THEAD-TDNAME,

MLINE1 LIKE TLINE-TDLINE,

MLINE2 LIKE TLINE-TDLINE,

MLINE3 LIKE TLINE-TDLINE,

MLINE4 LIKE TLINE-TDLINE,

MLINE5 LIKE TLINE-TDLINE.

DATA: POST_DT LIKE BKPF-BUDAT,

FM_NAME TYPE RS38L_FNAM,

LF_FORMNAME TYPE TDSFNAME.

----


pricing -

DATA BEGIN OF IT_BSEG OCCURS 0.

INCLUDE STRUCTURE BSEG.

DATA END OF IT_BSEG.

DATA BEGIN OF IT_YADDR OCCURS 0.

INCLUDE STRUCTURE YADDR.

DATA END OF IT_YADDR.

DATA BEGIN OF BR_YADDR OCCURS 0.

INCLUDE STRUCTURE YADDR.

DATA END OF BR_YADDR.

--


end of internal table declaration--

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS OPT_CN RADIOBUTTON GROUP RADI .

PARAMETERS OPT_DN RADIOBUTTON GROUP RADI .

SELECT-OPTIONS DOCNO FOR BSEG-BELNR DEFAULT '0007100000'.

PARAMETERS YEAR LIKE BSEG-GJAHR DEFAULT '2006' .

PARAMETERS COMP LIKE BSEG-BUKRS DEFAULT 'FCL'.

SELECTION-SCREEN END OF BLOCK B1.

--


main--

SELECT * FROM BSEG INTO TABLE IT_BSEG

WHERE BUKRS = COMP AND BELNR IN DOCNO

AND GJAHR = YEAR AND KOART = 'D'.

LOOP AT IT_BSEG.

CALL FUNCTION 'Y_ADDRESS' " Customer Address

EXPORTING

VC_FLAG = 'C'

PARTY_CODE = IT_BSEG-KUNNR

IMPORTING

IT_YADDR = IT_YADDR

EXCEPTIONS

OTHERS = 1.

IF IT_BSEG-KUNNR EQ '0000005001' .

SELECT SINGLE * FROM BSEC WHERE BUKRS = IT_BSEG-BUKRS

AND BELNR = IT_BSEG-BELNR AND GJAHR = IT_BSEG-GJAHR.

IF SY-SUBRC EQ 0.

IT_YADDR-ADD1 = BSEC-NAME1.

IT_YADDR-ADD2 = BSEC-NAME2.

IT_YADDR-ADD3 = BSEC-NAME3.

IT_YADDR-ADD4 = BSEC-NAME4.

IT_YADDR-ADD5 = BSEC-ORT01.

IT_YADDR-ADD6 = BSEC-PSTLZ.

ENDIF.

ENDIF.

----


Branch Address -

SELECT SINGLE * FROM T001W

  • where werks = 'PCAB'.

WHERE WERKS = IT_BSEG-GSBER .

TADR_NUM = T001W-ADRNR.

CALL FUNCTION 'Y_ADDRESS'

EXPORTING

VC_FLAG = 'P'

PARTY_CODE = TADR_NUM

IMPORTING

IT_YADDR = BR_YADDR

EXCEPTIONS

OTHERS = 1.

----


Branch Address -

SELECT BUDAT BLART INTO (BKPF-BUDAT, BKPF-BLART) FROM BKPF

WHERE BUKRS = IT_BSEG-BUKRS

AND BELNR = IT_BSEG-BELNR AND GJAHR = IT_BSEG-GJAHR.

ENDSELECT.

POST_DT = BKPF-BUDAT.

CASE BKPF-BLART.

WHEN 'C1' OR 'D1'. OFFICE = '****'.

WHEN 'C2' OR 'D2'. OFFICE = '*****'.

WHEN 'C3' OR 'D3'. OFFICE = '*******'.

ENDCASE.

PERFORM READ_HEADER_TEXT.

PERFORM GET_ITEM.

CALL FUNCTION 'SPELL_AMOUNT'

EXPORTING

AMOUNT = IT_BSEG-WRBTR

CURRENCY = 'INR'

FILLER = ' '

LANGUAGE = SY-LANGU

IMPORTING

IN_WORDS = AMT_IN_WRD

EXCEPTIONS

NOT_FOUND = 1

TOO_LARGE = 2

OTHERS = 3.

CONCATENATE AMT_IN_WRD-WORD ' ONLY' INTO AMT_IN_WRD-WORD.

CALL FUNCTION 'RKD_WORD_WRAP'

EXPORTING

TEXTLINE = AMT_IN_WRD-WORD

  • DELIMITER = ' '

OUTPUTLEN = 70

IMPORTING

OUT_LINE1 = AMT_LINE1

OUT_LINE2 = AMT_LINE2

  • OUT_LINE3 =

  • TABLE

  • OUT_LINES =

EXCEPTIONS

OUTPUTLEN_TOO_LARGE = 1

OTHERS = 2.

IF OPT_CN = 'X'.

PERFORM ITEM_PRINT_CN.

ELSEIF OPT_DN = 'X'.

PERFORM ITEM_PRINT_DN.

ENDIF.

PERFORM INITALIZE.

ENDLOOP.

--


end of main--

&----


*& Form GET_ITEM

&----


FORM GET_ITEM.

NETVAL = 0.

MATVAL = 0.

DISVAL = 0.

BEDVAL = 0.

FGTURS = 0.

TAXABLE = 0.

FGTVAL = 0.

ENTRYTAX = 0.

SALTAX = 0.

SURCHG = 0.

SALTOT = 0.

TAXCNT = 0.

CNT = 1.

SELECT HKONT WRBTR BSCHL AUFNR KOSTL

INTO (BSEG-HKONT, BSEG-WRBTR, BSEG-BSCHL, BSEG-AUFNR, BSEG-KOSTL)

FROM BSEG

WHERE BUKRS = IT_BSEG-BUKRS

AND GJAHR = IT_BSEG-GJAHR

AND BELNR = IT_BSEG-BELNR

AND KOART NE 'D'.

CASE BSEG-HKONT.

WHEN '0000600000' OR '0000601000' OR '0000603000' OR

'0000604000' OR '0000606000' OR '0000609000'.

MATVAL = BSEG-WRBTR.

WHEN '0000764100'.

IF BSEG-BSCHL = '50'.

DISVAL = BSEG-WRBTR.

ELSE.

PERFORM GLACC.

ENDIF.

WHEN '0000611000'.

FGTVAL = FGTVAL + BSEG-WRBTR. "Changed on 24.08.2007

WHEN '0000760003'.

FGTURS = BSEG-WRBTR.

WHEN '0000570001' OR '0000570002' OR '0000570003' OR

'0000570000' OR '0000570004' OR '0000570005' OR

'0000570006' OR '0000570007' OR '0000570008' OR

'0000570009' OR '0000570010' OR '0000570011' OR

'0000570012' OR '0000570013' OR '0000570014' OR

'0000570015' OR '0000570016' OR '0000570017' OR

'0000570018' OR '0000570019' OR '0000570020'.

TAXCNT = TAXCNT + 1.

CASE TAXCNT.

WHEN 1. SALTAX = BSEG-WRBTR.

WHEN 2. SURCHG = BSEG-WRBTR.

WHEN 3. SALTOT = BSEG-WRBTR.

ENDCASE.

WHEN '0000571001' OR '0000571002' OR '0000571003' OR

'0000571000' OR '0000571004' OR '0000571005' OR

'0000571006' OR '0000571007' OR '0000571008' OR

'0000571009' OR '0000571010' OR '0000571011' OR

'0000571012' OR '0000571013' OR '0000571014' OR

'0000571015' OR '0000571016' OR '0000571017' OR

'0000571018' OR '0000571019' OR '0000571020'.

TAXCNT = TAXCNT + 1.

CASE TAXCNT.

WHEN 1. SALTAX = BSEG-WRBTR.

WHEN 2. SURCHG = BSEG-WRBTR.

WHEN 3. SALTOT = BSEG-WRBTR.

ENDCASE.

WHEN '0000610000'.

BEDVAL = BSEG-WRBTR.

WHEN '0000491110'.

ENTRYTAX = BSEG-WRBTR.

WHEN '0000764500'.

IF BSEG-BSCHL = '50'.

NETVAL = NETVAL - BSEG-WRBTR.

ELSE.

NETVAL = NETVAL + BSEG-WRBTR.

ENDIF.

WHEN OTHERS.

PERFORM GLACC.

ENDCASE.

ENDSELECT.

IF ENTRYTAX EQ 0.

W_IND = '0'.

ELSE.

W_IND = '1'.

ENDIF.

TAXABLE = MATVAL - DISVAL + BEDVAL + ENTRYTAX + FGTURS.

NETVAL = NETVAL + IT_BSEG-WRBTR.

ENDFORM. " GET_ITEM

&----


*& Form READ_HEADER_TEXT

&----


FORM READ_HEADER_TEXT.

CLEAR : HLINE1 ,HLINE2 ,HLINE3, HLINE4, HLINE5 , HDTEXT .

CLEAR TLINES.

REFRESH TLINES.

CONCATENATE IT_BSEG-BELNR IT_BSEG-GJAHR INTO HDTEXT.

CONCATENATE IT_BSEG-BUKRS HDTEXT INTO HDTEXT SEPARATED BY SPACE.

CALL FUNCTION 'READ_TEXT'

EXPORTING

  • CLIENT = SY-MANDT

ID = '0002'

LANGUAGE = SY-LANGU

NAME = HDTEXT

OBJECT = 'BELEG'

  • ARCHIVE_HANDLE = 0

  • IMPORTING

  • HEADER =

TABLES

LINES = TLINES

EXCEPTIONS

ID = 1

LANGUAGE = 2

NAME = 3

NOT_FOUND = 4

OBJECT = 5

REFERENCE_CHECK = 6

WRONG_ACCESS_TO_ARCHIVE = 7

OTHERS = 8.

LOOP AT TLINES.

CASE SY-TABIX.

WHEN 1. HLINE1 = TLINES-TDLINE.

WHEN 2. HLINE2 = TLINES-TDLINE.

WHEN 3. HLINE3 = TLINES-TDLINE.

WHEN 4. HLINE4 = TLINES-TDLINE.

WHEN 5. HLINE5 = TLINES-TDLINE.

ENDCASE.

ENDLOOP.

************************************************************************

  • EXTRACT TOWARDS TEXT ELEMENT

************************************************************************

MTEXT = '0061003423'.

CALL FUNCTION 'READ_TEXT'

EXPORTING

  • CLIENT = SY-MANDT

ID = '0004'

LANGUAGE = SY-LANGU

NAME = MTEXT

OBJECT = 'VBBK'

  • ARCHIVE_HANDLE = 0

  • IMPORTING

  • HEADER =

TABLES

LINES = TLINES

EXCEPTIONS

ID = 1

LANGUAGE = 2

NAME = 3

NOT_FOUND = 4

OBJECT = 5

REFERENCE_CHECK = 6

WRONG_ACCESS_TO_ARCHIVE = 7

OTHERS = 8.

LOOP AT TLINES.

CASE SY-TABIX.

WHEN 1. MLINE1 = TLINES-TDLINE.

WHEN 2. MLINE2 = TLINES-TDLINE.

WHEN 3. MLINE3 = TLINES-TDLINE.

WHEN 4. MLINE4 = TLINES-TDLINE.

WHEN 5. MLINE5 = TLINES-TDLINE.

ENDCASE.

ENDLOOP.

ENDFORM. " READ_HEADER_TEXT

&----


*& Form GET_GLDESC

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_GLDESC USING P1 P2 .

P2 = ''.

SELECT TXT50 INTO (P2 ) FROM SKAT

WHERE SPRAS = SY-LANGU

AND KTOPL = 'FCOA' AND SAKNR = P1.

ENDSELECT.

ENDFORM. " GET_GLDESC

&----


*& Form GLACC

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GLACC.

IF CNT EQ 1.

GL1 = BSEG-HKONT.

AMT1 = BSEG-WRBTR.

ORD1 = BSEG-AUFNR.

CC1 = BSEG-KOSTL.

PERFORM GET_GLDESC CHANGING GL1 GLDESC1.

CNT = CNT + 1.

ELSE.

GL2 = BSEG-HKONT.

AMT2 = BSEG-WRBTR.

ORD2 = BSEG-AUFNR.

CC2 = BSEG-KOSTL.

PERFORM GET_GLDESC CHANGING GL2 GLDESC2.

ENDIF.

ENDFORM. " GLACC

&----


*& Form INITALIZE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM INITALIZE.

CLEAR : HLINE1 ,HLINE2 ,HLINE3, HLINE4, HLINE5 , HDTEXT .

IT_BSEG-KUNNR = ''.

MATVAL = 0.

DISVAL = 0.

FGTVAL = 0.

SALTAX = 0.

GL1 = ''. GL2 = ''.

GLDESC1 = ''. GLDESC2 = ''.

CC1 = ''. CC2 = ''.

ORD1 = ''. ORD2 = ''.

AMT1 = 0. AMT2 = 0.

ENDFORM. " INITALIZE

&----


*& Form ITEM_PRINT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ITEM_PRINT_CN .

LF_FORMNAME = 'YL_CN_FI'.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING FORMNAME = LF_FORMNAME

  • variant = ' '

  • direct_call = ' '

IMPORTING FM_NAME = FM_NAME

EXCEPTIONS NO_FORM = 1

NO_FUNCTION_MODULE = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

  • error handling

ENDIF.

CALL FUNCTION FM_NAME

ENDFORM. " ITEM_PRINT