HELLO
&----
*& Report Z_MM_RE_INVOICE_EMAIL
*&
&----
*&
*&
&----
REPORT ZMM_RE_INVOICE_EMAIL.
----
DECLARATION OF THE TABLES *
----
TABLES : RBKP , " Document Header: Invoice Receipt
LFA1 , " Vendor Master (General Section)
LFB1 , " Vendor Master (Company Code)
EKKO , " Purchasing Document Header
EKPO , " Purchasing Document Item
MAKT , " Material Descriptions
TVZBT , " Customers: Terms of Payment Texts
BSIK . " Accounting: Secondary Index for Vendors
----
DECLARATION OF THE WORKAREAS AND INTERNAL TABLES *
----
DATA : W_RBKP TYPE RBKP ,
W_LFA1 TYPE LFA1 ,
W_LFB1 TYPE LFB1 ,
W_EKKO TYPE EKKO ,
T_EKPO TYPE STANDARD TABLE OF EKPO INITIAL SIZE 0 WITH HEADER LINE,
W_MAKT TYPE MAKT ,
W_TVZBT TYPE TVZBT ,
W_BSIK TYPE BSIK ,
G_ADRNR TYPE LFA1-ADRNR ,
G_NETPR TYPE EKPO-NETPR ,
G_MENGE TYPE EKPO-MENGE ,
G_NETVAL TYPE EKPO-NETWR,
G_SALESTAX LIKE BSIK-WMWST,
G_SUBTOT TYPE I,
G_TOTAL TYPE I.
----
DECLARATION OF THE VARIABLE FOR THE FM NAME *
----
DATA : G_FUN TYPE RS38L_FNAM .
----
DECLARATION OF THE PARAMETERS *
----
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS : P_EBELN LIKE EKKO-EBELN.
SELECTION-SCREEN END OF BLOCK B1 .
----
START OF SELECTION *
----
START-OF-SELECTION .
----
DATA RETRIEVAL INTO THE WORKAREAS AND INTERNAL TABLES *
----
SELECT SINGLE * FROM EKKO INTO W_EKKO WHERE EBELN EQ P_EBELN .
SELECT *
FROM EKPO
INTO TABLE T_EKPO
WHERE EBELN EQ W_EKKO-EBELN .
LOOP AT T_EKPO .
CLEAR G_NETPR .
G_MENGE = T_EKPO-MENGE.
G_NETVAL = T_EKPO-MENGE * T_EKPO-NETPR.
G_SUBTOT = G_SUBTOT + G_NETVAL.
G_SALESTAX = W_BSIK-WMWST.
G_TOTAL = G_SALESTAX + G_SUBTOT. " +FREIGHT
ENDLOOP.
SELECT SINGLE *
FROM LFA1
INTO W_LFA1
WHERE LIFNR EQ W_EKKO-LIFNR .
G_ADRNR = W_LFA1-ADRNR .
SELECT SINGLE *
FROM LFB1
INTO W_LFB1
WHERE LIFNR EQ W_EKKO-LIFNR .
SELECT SINGLE *
FROM RBKP
INTO W_RBKP
WHERE BUKRS EQ W_LFB1-BUKRS .
SELECT SINGLE *
FROM MAKT
INTO W_MAKT
WHERE MATNR EQ T_EKPO-MATNR .
SELECT SINGLE *
FROM TVZBT
INTO W_TVZBT
WHERE ZTERM EQ W_LFB1-ZTERM .
SELECT SINGLE *
FROM BSIK
INTO W_BSIK
WHERE LIFNR = W_EKKO-LIFNR .
Internal Table declarations
DATA: I_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE,
I_TLINE TYPE TABLE OF TLINE WITH HEADER LINE,
I_RECEIVERS TYPE TABLE OF SOMLRECI1 WITH HEADER LINE,
I_RECORD LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
Objects to send mail.
I_OBJPACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
I_OBJTXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
I_OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
I_RECLIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,
Work Area declarations
W_OBJHEAD TYPE SOLI_TAB,
W_CTRLOP TYPE SSFCTRLOP,
W_COMPOP TYPE SSFCOMPOP,
W_RETURN TYPE SSFCRESCL,
W_DOC_CHNG TYPE SODOCCHGI1,
W_DATA TYPE SODOCCHGI1,
W_BUFFER TYPE STRING,"To convert from 132 to 255
Variables declarations
V_FORM_NAME TYPE RS38L_FNAM,
V_LEN_IN LIKE SOOD-OBJLEN,
V_LEN_OUT LIKE SOOD-OBJLEN,
V_LEN_OUTN TYPE I,
V_LINES_TXT TYPE I,
V_LINES_BIN TYPE I.
----
CALLING THE FUNCTION MODULES *
----
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZMM_SF_INVOICE1'
IMPORTING
FM_NAME = G_FUN .
W_CTRLOP-GETOTF = 'X'.
W_CTRLOP-NO_DIALOG = 'X'.
W_COMPOP-TDNOPREV = 'X'.
CALL FUNCTION G_FUN
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = W_CTRLOP
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS = W_COMPOP
USER_SETTINGS = 'X'
W_RBKP = W_RBKP
W_LFA1 = W_LFA1
W_LFB1 = W_LFB1
W_EKKO = W_EKKO
W_MAKT = W_MAKT
W_TVZBT = W_TVZBT
W_BSIK = W_BSIK
G_ADRNR = G_ADRNR
G_NETPR = G_NETPR
G_MENGE = G_MENGE
G_NETVAL = G_NETVAL
G_SALESTAX = G_SALESTAX
G_SUBTOT = G_SUBTOT
G_TOTAL = G_TOTAL
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO = W_RETURN
JOB_OUTPUT_OPTIONS =
TABLES
T_EKPO = T_EKPO
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.
I_OTF[] = W_RETURN-OTFDATA[].
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
MAX_LINEWIDTH = 132
IMPORTING
BIN_FILESIZE = V_LEN_IN
TABLES
OTF = I_OTF
LINES = I_TLINE
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Convert PDF from 132 to 255.
LOOP AT I_TLINE.
Replacing space by ~
TRANSLATE I_TLINE USING ' *'.
CONCATENATE W_BUFFER I_TLINE INTO W_BUFFER.
ENDLOOP.
Replacing ~ by space
TRANSLATE W_BUFFER USING '* '.
DO.
I_RECORD = W_BUFFER.
Appending 255 characters as a record
APPEND I_RECORD.
SHIFT W_BUFFER LEFT BY 255 PLACES.
IF W_BUFFER IS INITIAL.
EXIT.
ENDIF.
ENDDO.
REFRESH: I_RECLIST,
I_OBJTXT,
I_OBJBIN,
I_OBJPACK.
CLEAR W_OBJHEAD.
Object with PDF.
I_OBJBIN[] = I_RECORD[].
DESCRIBE TABLE I_OBJBIN LINES V_LINES_BIN.
Object with main text of the mail.
I_OBJTXT = 'Find attached the output of the smart form.'.
APPEND I_OBJTXT.
I_OBJTXT = 'Regards,'.
APPEND I_OBJTXT.
I_OBJTXT = 'sirisha'.
APPEND I_OBJTXT.
DESCRIBE TABLE I_OBJTXT LINES V_LINES_TXT.
Document information.
W_DOC_CHNG-OBJ_NAME = 'Smartform'.
W_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.
W_DOC_CHNG-OBJ_DESCR = 'Smart form output'.
W_DOC_CHNG-SENSITIVTY = 'F'. "Functional object
W_DOC_CHNG-DOC_SIZE = V_LINES_TXT * 255.
Pack to main body as RAW.
Obj. to be transported not in binary form
CLEAR I_OBJPACK-TRANSF_BIN.
Start line of object header in transport packet
I_OBJPACK-HEAD_START = 1.
Number of lines of an object header in object packet
I_OBJPACK-HEAD_NUM = 0.
Start line of object contents in an object packet
I_OBJPACK-BODY_START = 1.
Number of lines of the object contents in an object packet
I_OBJPACK-BODY_NUM = V_LINES_TXT.
Code for document class
I_OBJPACK-DOC_TYPE = 'RAW'.
APPEND I_OBJPACK.
Packing as PDF.
I_OBJPACK-TRANSF_BIN = 'X'.
I_OBJPACK-HEAD_START = 1.
I_OBJPACK-HEAD_NUM = 1.
I_OBJPACK-BODY_START = 1.
I_OBJPACK-BODY_NUM = V_LINES_BIN.
I_OBJPACK-DOC_TYPE = 'PDF'.
I_OBJPACK-OBJ_NAME = 'Smartform'.
CONCATENATE 'Smartform_output' '.pdf'
INTO I_OBJPACK-OBJ_DESCR.
I_OBJPACK-DOC_SIZE = V_LINES_BIN * 255.
APPEND I_OBJPACK.
Document information.
CLEAR I_RECLIST.
e-mail receivers.
I_RECLIST-RECEIVER = 'X@YAHOO.COM'.
I_RECLIST-EXPRESS = 'X'.
I_RECLIST-REC_TYPE = 'U'. "Internet address
APPEND I_RECLIST.
Sending mail.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = W_DOC_CHNG
PUT_IN_OUTBOX = 'X'
TABLES
PACKING_LIST = I_OBJPACK
OBJECT_HEADER = W_OBJHEAD
CONTENTS_HEX = I_OBJBIN
CONTENTS_TXT = I_OBJTXT
RECEIVERS = I_RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
THIS IS MY CODE.
I AM GETTING AN EXCEPTION 'CONTENTS_HEX' AND 'I_OBJBIN' R NOT COMPATIBLE.WAT CHANGES DO I HAV TO MAKE IN THE CODE TO SEND AN EMAIL WITH THE ATTACHMENT OF THE PDF FILE WHICH IS CONVERTED FROM THE SMARTFORMS............???
PLEASE HELP ME!!