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