Skip to Content
0
Former Member
Nov 27, 2006 at 01:10 PM

EMAIL

83 Views

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!!