on 03-21-2009 7:02 AM
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
Thank you everybody....The problem has been solved. I had to add some function module to add the smartform with the output.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Sumit,
1)Check the declarations of the field structure and internal tables are declared properly within the smart form as well in driver program.
2)Check the function module that has been generated by the smart forms is included properly in the driver program if not call once again in smart form
Regards,
Sravanthi
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
You need to pass all the parameters to u r SMARTFORm function module,giving only "CALL FUNCTION FM_NAME" is not enough,paas all Importing/Exporting/Tables parameters.
Thanks & Regards,
Rock.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I did that...actually It was not coming in that page because of the character limitation. The program is not executing. why??
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'
POST_DT = POST_DT
OFFICE = OFFICE
HLINE1 = HLINE1
HLINE2 = HLINE2
HLINE3 = HLINE3
HLINE4 = HLINE4
HLINE5 = HLINE5
MLINE1 = MLINE1
MLINE2 = MLINE2
W_IND = W_IND
MATVAL = MATVAL
NETVAL = NETVAL
DISVAL = DISVAL
BEDVAL = DISVAL
FGTURS = FGTURS
TAXABLE = TAXABLE
FGTVAL = FGTVAL
ENTRYTAX = ENTRYTAX
SALTAX = SALTAX
SURCHG = SURCHG
SALTOT = SALTOT
AMT_LINE1 = AMT_LINE1
AMT_LINE2 = AMT_LINE2
GL1 = GL1
GL2 = GL2
GLDESC1 = GLDESC1
GLDESC2 = GLDESC2
AMT1 = AMT1
AMT2 = AMT2
ORD1 = ORD1
ORD2 = ORD2
CC1 = CC1
CC2 = CC2
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
TABLES
IT_YADDR = IT_YADDR
IT_BSEG = IT_BSEG
BR_YADDR = BR_YADDR
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
*
ENDIF.
u mean to say you are not getting any preview right,
this can happen if some template is exceeding window limits, in this case smartform doesnot give any error but preview doesnot come,
use tcode smartform_trace and switch on the trace now execute ur program, this time it will stop in debugger if any error or warning is present at runtime, analyse the error or warning by getting the message id and check it in se91
User | Count |
---|---|
84 | |
25 | |
12 | |
9 | |
6 | |
6 | |
5 | |
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.