Hello everybody,
I'm having trouble sending a smartform output to an email address as a pdf attachment using function SO_NEW_DOCUMENT_ATT_SEND_API1. I have read many of the topics posted in this forum regarding that issue and incorporated some of the suggestions in my code but still I have not been able to see the pdf attachment.
I am using function CONVERT_OTFSPOOLJOB_2_PDF to convert the spool job to a pdf document and I was able to attach it to an email and to deliver it to an email recipient. The problem is that when the recipient opens the attached file only can see a blank page. Does anybody knows why this happens?
Here is a piece of my code:
START-OF-SELECTION.
PERFORM READ TABLES.
PERFORM GET_SM_FUNCTION_MODULE_NAME.
PERFORM CALL_SM_FUNCTION_MODULE.
PERFORM GET_SPOOL_NUMBER.
PERFORM CONVERT_TO_PDF.
PERFORM SEND_TO_EMAIL.
*&---------------------------------------------------------------------*
*& Form GET_SM_FUNCTION_MODULE_NAME
*&---------------------------------------------------------------------*
FORM GET_SM_FUNCTION_MODULE_NAME.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZFINARF003'
IMPORTING
FM_NAME = FUNC_MODULE_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
*&---------------------------------------------------------------------*
*& Form CALL_SM_FUNCTION_MODULE
*&---------------------------------------------------------------------*
FORM CALL_SM_FUNCTION_MODULE.
SORT IT_KNA1 BY KUKLA KUNNR.
DESCRIBE TABLE IT_KNA1 LINES LINEAS.
LOOP AT IT_KNA1 INTO WA_KNA1.
CALL FUNCTION FUNC_MODULE_NAME
EXPORTING
CONTROL_PARAMETERS = WA_CTRLOP
OUTPUT_OPTIONS = WA_COMPOP
USER_SETTINGS = 'X'
LOGO = P_LOGO
POS_DAT1 = BUDAT01
POS_DAT2 = BUDAT02
COMPANY = COMPANY
IMPORTING
JOB_OUTPUT_INFO = WA_OUTPUT_INFO
JOB_OUTPUT_OPTIONS = WA_OUTPUT_OPTIONS
TABLES
TBSID = IT_BSID
TKNA1 = T_KNA1
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
CLEAR T_KNA1. REFRESH T_KNA1.
APPEND WA_KNA1 TO T_KNA1.
COMMIT WORK.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_spool_number
*&---------------------------------------------------------------------*
FORM GET_SPOOL_NUMBER .
SELECT * FROM TSP01
APPENDING CORRESPONDING FIELDS OF TABLE SPOOLID
WHERE RQOWNER = SY-UNAME
ORDER BY RQCRETIME DESCENDING.
LOOP AT SPOOLID.
SPOOL_NUM = SPOOLID-RQIDENT.
EXIT.
ENDLOOP.
ENDFORM. " get_spool_number
*&---------------------------------------------------------------------*
*& Form convert_to_pdf
*&---------------------------------------------------------------------*
FORM CONVERT_TO_PDF .
I_OTF[] = WA_OUTPUT_INFO-OTFDATA[].
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID = spool_num
* NO_DIALOG =
* DST_DEVICE =
* PDF_DESTINATION =
IMPORTING
PDF_BYTECOUNT = numbytes
PDF_SPOOLID = pdfspoolid
* OTF_PAGECOUNT =
BTC_JOBNAME = jobname
BTC_JOBCOUNT = jobcount
TABLES
PDF = IT_LINES
EXCEPTIONS
ERR_NO_OTF_SPOOLJOB = 1
ERR_NO_SPOOLJOB = 2
ERR_NO_PERMISSION = 3
ERR_CONV_NOT_POSSIBLE = 4
ERR_BAD_DSTDEVICE = 5
USER_CANCELLED = 6
ERR_SPOOLERROR = 7
ERR_TEMSEERROR = 8
ERR_BTCJOB_OPEN_FAILED = 9
ERR_BTCJOB_SUBMIT_FAILED = 10
ERR_BTCJOB_CLOSE_FAILED = 11
OTHERS = 12.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " SEND_TO_EMAIL
*&---------------------------------------------------------------------*
*& Form SEND_TO_EMAIL
*&---------------------------------------------------------------------*
FORM SEND_TO_EMAIL .
LOOP AT IT_LINES.
TRANSLATE IT_LINES USING '~'.
CONCATENATE WA_BUFFER IT_LINES INTO WA_BUFFER.
ENDLOOP.
TRANSLATE WA_BUFFER USING '~'.
DO.
I_RECORD = WA_BUFFER.
APPEND I_RECORD.
SHIFT WA_BUFFER LEFT BY 255 PLACES.
IF WA_BUFFER IS INITIAL.
EXIT.
ENDIF.
ENDDO.
* Attachment
REFRESH: I_RECLIST,
I_OBJTXT,
I_OBJBIN,
I_OBJPACK.
CLEAR WA_OBJHEAD.
I_OBJBIN[] = I_RECORD[].
* Create Message Body Title and Description
I_OBJTXT = 'Estado de cuenta para el periodo de '.
APPEND I_OBJTXT.
DESCRIBE TABLE I_OBJTXT LINES V_LINES_TXT.
READ TABLE I_OBJTXT INDEX V_LINES_TXT.
WA_DOC_CHNG-OBJ_DESCR = 'Estado de cuenta'.
WA_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.
WA_DOC_CHNG-OBJ_NAME = 'Smartform'.
WA_DOC_CHNG-SENSITIVTY = 'F'.
WA_DOC_CHNG-DOC_SIZE = V_LINES_TXT * 255.
* Main Text
CLEAR I_OBJPACK.
REFRESH I_OBJPACK.
I_OBJPACK-TRANSF_BIN = SPACE.
I_OBJPACK-HEAD_START = 1.
I_OBJPACK-HEAD_NUM = 0.
I_OBJPACK-BODY_START = 1.
I_OBJPACK-BODY_NUM = V_LINES_TXT.
I_OBJPACK-DOC_TYPE = 'RAW'.
APPEND I_OBJPACK.
* Attachment (pdf-Attachment)
I_OBJPACK-TRANSF_BIN = 'X'.
I_OBJPACK-HEAD_START = 1.
I_OBJPACK-HEAD_NUM = 1.
I_OBJPACK-BODY_START = 1.
DESCRIBE TABLE I_OBJBIN LINES V_LINES_BIN.
READ TABLE I_OBJBIN INDEX V_LINES_BIN.
I_OBJPACK-DOC_SIZE = V_LINES_BIN * 255 .
I_OBJPACK-BODY_NUM = V_LINES_BIN.
I_OBJPACK-DOC_TYPE = 'PDF'.
I_OBJPACK-OBJ_NAME = 'Smartform'.
I_OBJPACK-OBJ_DESCR = 'Account_statement'.
APPEND I_OBJPACK.
CLEAR I_RECLIST.
I_RECLIST-RECEIVER = 'orlrivera@evertecinc.com'.
I_RECLIST-REC_TYPE = 'U'.
I_RECLIST-EXPRESS = 'X'.
APPEND I_RECLIST.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = WA_DOC_CHNG
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = I_OBJPACK
OBJECT_HEADER = WA_OBJHEAD
CONTENTS_BIN = 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.
WRITE:/ 'Error When Sending the File', SY-SUBRC.
ELSE.
WRITE:/ 'Se adjunto el estado de cuenta'.
ENDIF.
ENDFORM. " convert_to_pdf
As I said the recipient is getting the email but when opens it whit the Acrobat Reader only displays a blank page.
Any help will be appreciated.
Thanks,
Orlando