cancel
Showing results for 
Search instead for 
Did you mean: 

Solution manager Smartform in HTML format.

Former Member
0 Kudos

Hi All,

Here , I ahve a requirement, the smartform <b>CRM_SLFN_ORDER_SERVICE_01</b> is going to the service desk in PDF format as all the Output types in SCOT for Scripts and Smartforms have been configured as PDF. But I have to send it in HTML format.... is there any way other than coping the Class and modifying........

if there is no way other than that PL. let me know how to modify the code to convert the output into HTML format......

thank you,

Girish.

Accepted Solutions (0)

Answers (3)

Answers (3)

mabujan
Explorer
0 Kudos

Can you send me the code also or perhaps post it here?

To add the code to this thread just add \

 to the beginning and end of the code text.

Example:

Begin of the code text

.....

End of the code text

Appreciated,

Manuel

Former Member
0 Kudos

We have very similar code to that posted, however, I have recently hit on a small problem.

When raising an order with two line items, one chargeable and Free of charge, I notice that when the FM 'CRM_OUTPUT_SINGLE_READ' is executed the output table lt_orderadm_i only has one entry, although I was expecting two.

Does anyone have any idea what might cause this FM to only return the one item?. The order itself when viewed via CRMD_ORDER looks fine and contains no errors. The only difference between the two item linea is that there is no availability check (ATP) against the Free of charge item, but I guess that might be expected.

Has anyone encountered a similar problem or maybe know why the FM is not returning both line items from the order. I should add that both the line items have different item categories with chargeable item being YTAN and FOC item being ZFOC, and I guess there may be some blocking somewhere at this level.

Gary King

Former Member
0 Kudos

Hi,

It is possible to send mail in html.

Copy the Processing Class CL_DOC_PROCESSING_CRM_ORDER into own namespace (for example Z_CL_DOC_PROCESSING_CRM_ORDER)

Create a new Processing Method (or copy the SAP Standard CRM_SRVORDER_EXEC_SMART_FROM) and insert (or replace) the following code:

Z_CRM_SRVORDER_EXEC_SMARTFORM

METHOD Z_CRM_SRVORDER_EXEC_SMART_FORM.

INCLUDE: crm_direct.

TYPES:

SWC_OBJECT TYPE OBJ_RECORD.

DATA:

LS_CONTROL_PARAMETERS TYPE SSFCTRLOP.

  • function name

DATA: function_name TYPE rs38l_fnam,

DUMMY(254) TYPE C,

ls_archive_index TYPE toa_dara,

ls_orderadm_h TYPE crmt_output_orderadm_h_com,

ls_activity_h TYPE crmt_output_activity_h_com,

ls_opport_h TYPE crmt_output_opport_h_com,

ls_orgman_h TYPE crmt_output_orgman_h_com,

lt_partner_h TYPE crmt_output_partner_h_comt,

ls_pricingdata_h TYPE crmt_output_pricingdata_h_com,

ls_sales_h TYPE crmt_output_sales_h_com,

ls_shipping_h TYPE crmt_output_shipping_h_com,

lt_payplan_d_h TYPE crmt_output_payplan_d_h_comt,

ls_customer_h TYPE crmt_output_customer_h_com,

ls_cumulat_h TYPE crmt_output_cumulat_h_com,

lt_billing_h TYPE crmt_output_billing_h_comt,

lt_cancel_h TYPE crmt_output_cancel_h_comt,

lt_appointment_h TYPE crmt_output_appointment_h_comt,

lt_billplan_d_h TYPE crmt_output_billplan_d_h_comt,

lt_billplan_h TYPE crmt_output_billplan_h_comt,

lt_status_d_h TYPE crmt_output_status_d_h_comt,

lt_status_h TYPE crmt_output_status_h_comt,

lt_srv_subject_h TYPE crmt_output_srv_subject_h_comt,

lt_srv_reason_h TYPE crmt_output_srv_reason_h_comt,

lt_srv_result_h TYPE crmt_output_srv_result_h_comt,

ls_acs_h TYPE crmt_acs_h_com,

lt_srv_subject_i TYPE crmt_output_srv_subject_h_comt,

lt_srv_refobj_h TYPE crmt_output_srv_refobj_h_comt,

lt_srv_refobj_i TYPE crmt_output_srv_refobj_h_comt,

lt_orderadm_i TYPE crmt_output_orderadm_i_comt,

lt_orgman_i TYPE crmt_output_orgman_i_comt,

lt_pricingdata_i TYPE crmt_output_pricingdata_i_comt,

lt_pricing_i TYPE crmt_output_pricing_i_comt,

lt_product_i TYPE crmt_output_product_i_comt,

lt_sales_i TYPE crmt_output_sales_i_comt,

lt_service_i TYPE crmt_output_service_i_comt,

lt_shipping_i TYPE crmt_output_shipping_i_comt,

lt_schedlin_i TYPE crmt_output_schedlin_i_comt,

lt_customer_i TYPE crmt_output_customer_i_comt,

lt_partner_i TYPE crmt_output_partner_i_comt,

lt_item_cstics_i TYPE crmt_item_cstics_tab,

lt_billing_i TYPE crmt_output_billing_i_comt,

lt_cancel_i TYPE crmt_output_cancel_i_comt,

lt_finprod_i TYPE crmt_output_finprod_i_comt,

lt_ordprp_i TYPE crmt_output_ordprp_i_comt,

lt_appointment_i TYPE crmt_output_appointment_i_comt,

lt_billplan_d_i TYPE crmt_output_billplan_d_i_comt,

lt_billplan_i TYPE crmt_output_billplan_i_comt,

lt_orderadm_i_qt TYPE crmt_output_orderadm_i_qt_comt,

lt_orderadm_i_in TYPE crmt_output_orderadm_i_in_comt,

lt_schedlin_i_cf TYPE crmt_output_schedlin_i_cf_comt,

lt_status_i TYPE crmt_output_status_i_comt,

lt_working_set_e_s_bbp TYPE /1cn/working_set_e_s_bbp_t,

lv_language LIKE sy-langu,

lo_order TYPE REF TO cl_doc_crm_order,

lv_object_guid TYPE crmt_object_guid,

lv_status TYPE jstat,

lt_status TYPE TABLE OF jstat,

lv_error_tab_wrk TYPE ssferror,

ls_output_options TYPE ssfcompop,

lt_service_i_assi TYPE crmt_output_service_i_ass_comt.

  • fill internal structure for the output options

ls_output_options = is_output_options.

  • get the function name for this smart form

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = ip_smart_form

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

fm_name = function_name

EXCEPTIONS

no_form = 1

no_function_module = 2

OTHERS = 3

.

IF sy-subrc <> 0.

  • add an error message to processing protocol

MESSAGE i015(sppf_media) WITH ip_smart_form INTO dummy.

CALL METHOD cl_log_ppf=>add_message

EXPORTING

ip_problemclass = '1'

ip_handle = ip_application_log.

EXIT.

ENDIF.

  • determine the tables of the application

CALL FUNCTION 'CRM_OUTPUT_SINGLE_READ'

EXPORTING

iv_object = io_appl_object

iv_smart_form = ip_smart_form

ir_partner = io_partner

IMPORTING

es_output_orderadm_h = ls_orderadm_h

es_output_activity_h = ls_activity_h

es_output_opport_h = ls_opport_h

es_output_orgman_h = ls_orgman_h

es_output_pricingdata_h = ls_pricingdata_h

es_output_sales_h = ls_sales_h

es_output_shipping_h = ls_shipping_h

et_output_partner_h = lt_partner_h

et_output_payplan_d_h = lt_payplan_d_h

es_output_customer_h = ls_customer_h

es_output_cumulat_h = ls_cumulat_h

et_output_billing_h = lt_billing_h

et_output_cancel_h = lt_cancel_h

et_output_appointment_h = lt_appointment_h

et_output_billplan_d_h = lt_billplan_d_h

et_output_billplan_h = lt_billplan_h

et_output_status_d_h = lt_status_d_h

et_output_status_h = lt_status_h

et_output_srv_subject_h = lt_srv_subject_h

et_output_srv_reason_h = lt_srv_reason_h

et_output_srv_result_h = lt_srv_result_h

et_output_srv_refobj_h = lt_srv_refobj_h

et_output_srv_refobj_i = lt_srv_refobj_i

et_output_srv_subject_i = lt_srv_subject_i

es_output_acs_h = ls_acs_h

et_output_orderadm_i = lt_orderadm_i

et_output_orgman_i = lt_orgman_i

et_output_pricingdata_i = lt_pricingdata_i

et_output_pricing_i = lt_pricing_i

et_output_product_i = lt_product_i

et_output_sales_i = lt_sales_i

et_output_service_i = lt_service_i

et_output_shipping_i = lt_shipping_i

et_output_schedlin_i = lt_schedlin_i

et_output_partner_i = lt_partner_i

et_item_cstics_i = lt_item_cstics_i

et_output_customer_i = lt_customer_i

et_output_billing_i = lt_billing_i

et_output_cancel_i = lt_cancel_i

et_output_finprod_i = lt_finprod_i

et_output_ordprp_i = lt_ordprp_i

et_output_appointment_i = lt_appointment_i

et_output_billplan_d_i = lt_billplan_d_i

et_output_billplan_i = lt_billplan_i

et_output_orderadm_i_qt = lt_orderadm_i_qt

et_output_orderadm_i_in = lt_orderadm_i_in

et_output_schedlin_i_cf = lt_schedlin_i_cf

et_output_status_i = lt_status_i

et_output_wrk_set_e_s_bbp = lt_working_set_e_s_bbp

ev_language = lv_language

et_output_service_i_assi = lt_service_i_assi.

  • set mail title

SELECT SINGLE caption INTO ls_output_options-tdtitle

FROM stxfadmt WHERE

formname = ip_smart_form AND

langu = lv_language.

IF ls_output_options-tdtitle IS INITIAL.

SELECT SINGLE caption INTO ls_output_options-tdtitle

FROM stxfadmt WHERE

formname = ip_smart_form.

ENDIF.

REPLACE '&' WITH ls_orderadm_h-object_id

INTO ls_output_options-tdtitle.

*--


language of smart form--


  • determin here the language of the smart form

ls_control_parameters = is_control_parameters.

ls_control_parameters-langu = lv_language.

*----


CONSTANTS: C_GR_DIR TYPE TDTEXT VALUE 'MYGRAPHICS/'. "#EC NOTEXT

DATA:

LS_XSFPARAM_LINE TYPE SSFXSFP,

LS_HTML TYPE TRFRESULT,

LT_GRAPHICS TYPE TSF_XSF_GR.

*SET SMARTFORM OUTPUT OPTIONS

LS_OUTPUT_OPTIONS-XSFCMODE = 'X'.

LS_OUTPUT_OPTIONS-XSF = 'X'.

LS_OUTPUT_OPTIONS-XSFOUTMODE = 'A'.

LS_OUTPUT_OPTIONS-XSFFORMAT = 'X'.

LS_OUTPUT_OPTIONS-TDARMOD = '' .

CLEAR LS_OUTPUT_OPTIONS-XSFOUTDEV.

LS_XSFPARAM_LINE-NAME = 'GRAPHICS'. "#EC NOTEXT

LS_XSFPARAM_LINE-VALUE = 'EXTRACT'. "#EC NOTEXT

APPEND LS_XSFPARAM_LINE TO LS_OUTPUT_OPTIONS-XSFPARS.

LS_XSFPARAM_LINE-NAME = 'GRAPHICS-DIRECTORY'. "#EC NOTEXT

LS_XSFPARAM_LINE-VALUE = C_GR_DIR.

APPEND LS_XSFPARAM_LINE TO LS_OUTPUT_OPTIONS-XSFPARS.

LS_XSFPARAM_LINE-NAME = 'CONTENT-ID'. "#EC NOTEXT

LS_XSFPARAM_LINE-VALUE = 'ENABLE'. "#EC NOTEXT

APPEND LS_XSFPARAM_LINE TO LS_OUTPUT_OPTIONS-XSFPARS.

  • SILENT MODE ON

LS_OUTPUT_OPTIONS-TDIMMED = SPACE.

LS_OUTPUT_OPTIONS-TDNEWID = SPACE.

LS_CONTROL_PARAMETERS-NO_DIALOG = 'X'. "#EC NOTEXT

LS_CONTROL_PARAMETERS-DEVICE = ''. "EC NOTEXT

*----


  • call function to process smart form (old forms)

CALL FUNCTION function_name

EXPORTING

archive_index = is_archive_index

archive_index_tab = ct_archive_index_tab

archive_parameters = is_archive_parameters

control_parameters = ls_control_parameters

mail_appl_obj = is_mail_appl_obj

mail_recipient = is_mail_recipient

mail_sender = is_mail_sender

output_options = ls_output_options

user_settings = ip_user_settings

orderadm_h = ls_orderadm_h

activity_h = ls_activity_h

opport_h = ls_opport_h

orgman_h = ls_orgman_h

partner_h = lt_partner_h

pricingdata_h = ls_pricingdata_h

sales_h = ls_sales_h

shipping_h = ls_shipping_h

payplan_d_h = lt_payplan_d_h

cumulat_h = ls_cumulat_h

customer_h = ls_customer_h

acs_h = ls_acs_h

billing_h = lt_billing_h

cancel_h = lt_cancel_h

appointment_h = lt_appointment_h

billplan_d_h = lt_billplan_d_h

billplan_h = lt_billplan_h

status_d_h = lt_status_d_h

status_h = lt_status_h

srv_subject_h = lt_srv_subject_h

srv_reason_h = lt_srv_reason_h

srv_result_h = lt_srv_result_h

srv_subject_i = lt_srv_subject_i

srv_refobj_h = lt_srv_refobj_h

srv_refobj_i = lt_srv_refobj_i

orderadm_i = lt_orderadm_i

orderadm_i_qt = lt_orderadm_i_qt

orgman_i = lt_orgman_i

pricingdata_i = lt_pricingdata_i

pricing_i = lt_pricing_i

product_i = lt_product_i

sales_i = lt_sales_i

service_i = lt_service_i

schedlin_i = lt_schedlin_i

schedlin_i_cf = lt_schedlin_i_cf

shipping_i = lt_shipping_i

partner_i = lt_partner_i

item_cstics_i = lt_item_cstics_i

customer_i = lt_customer_i

billing_i = lt_billing_i

cancel_i = lt_cancel_i

finprod_i = lt_finprod_i

ordprp_i = lt_ordprp_i

appointment_i = lt_appointment_i

billplan_d_i = lt_billplan_d_i

billplan_i = lt_billplan_i

status_i = lt_status_i

working_set_e_s_bbp = lt_working_set_e_s_bbp

language = lv_language

service_i_assi = lt_service_i_assi

IMPORTING

document_output_info = es_document_output_info

job_output_info = es_job_output_info

job_output_options = es_job_output_options

EXCEPTIONS

output_canceled = 1

parameter_error = 2

OTHERS = 3.

IF sy-subrc = 0.

DATA:

LT_RETURN TYPE BAPIRET2_TAB,

LT_RECEIVERS TYPE TABLE OF SOMLRECI1,

LV_MAIL_SUBJECT TYPE SO_OBJ_DES,

LV_SEND_PARTNER TYPE BU_PARTNER.

  • retrieve the sender and recipient from business objects

  • provided by postprocessing framework

DATA:

LS_SENDER TYPE SWC_OBJECT,

LS_RECIPIENT TYPE SWC_OBJECT,

WA_RECEIVER TYPE SOMLRECI1.

SWC_CREATE_OBJECT LS_SENDER 'RECIPIENT' SPACE.

SWC_OBJECT_FROM_PERSISTENT IS_MAIL_SENDER LS_SENDER.

SWC_GET_PROPERTY LS_SENDER 'AddressString' LV_SEND_PARTNER.

SWC_CREATE_OBJECT LS_RECIPIENT 'RECIPIENT' SPACE.

SWC_OBJECT_FROM_PERSISTENT IS_MAIL_RECIPIENT LS_RECIPIENT.

SWC_GET_PROPERTY LS_RECIPIENT 'AddressString' WA_RECEIVER-RECEIVER.

SWC_GET_PROPERTY LS_RECIPIENT 'TypeId' WA_RECEIVER-REC_TYPE.

WA_RECEIVER-COM_TYPE = 'INT'. "#EC NOTEXT

APPEND WA_RECEIVER TO LT_RECEIVERS.

  • Set Email Subject

SELECT SINGLE caption INTO LV_MAIL_SUBJECT

FROM stxfadmt WHERE

formname = ip_smart_form AND

langu = lv_language.

IF ls_output_options-tdtitle IS INITIAL.

SELECT SINGLE caption INTO LV_MAIL_SUBJECT

FROM stxfadmt WHERE

formname = ip_smart_form.

ENDIF.

REPLACE '&' WITH ls_orderadm_h-object_id

INTO LV_MAIL_SUBJECT.

  • ===========

LS_HTML = ES_JOB_OUTPUT_INFO-XMLOUTPUT-TRFRESULT.

LT_GRAPHICS[] = ES_JOB_OUTPUT_INFO-XMLOUTPUT-XSFGR[].

DATA: L_GRAPHIC TYPE SSF_XSF_GR,

HTML_DATA TYPE TRFRESULT,

GRAPHICS TYPE TSF_XSF_GR,

LV_SENT_TO_ALL TYPE BOOLEAN,

LV_SEND_ADDRESS TYPE ADR6-SMTP_ADDR,

LI_SENDER TYPE REF TO IF_SENDER_BCS,

RECEIVER TYPE SOMLRECI1,

LO_BCS TYPE REF TO CL_BCS,

LO_DOC_BCS TYPE REF TO CL_DOCUMENT_BCS,

LO_MIME_HELPER TYPE REF TO CL_GBT_MULTIRELATED_SERVICE,

LO_RECIPIENT TYPE REF TO IF_RECIPIENT_BCS,

L_FILENAME TYPE STRING,

LT_SOLI TYPE SOLI_TAB,

LT_SOLIX TYPE SOLIX_TAB,

LS_SOLI TYPE SOLI,

LS_SOLIX TYPE SOLIX,

L_HTML_RAW LIKE LINE OF HTML_DATA-CONTENT,

HTML_XSTR TYPE XSTRING,

HTML_STR TYPE STRING,

HTML_LEN TYPE I,

L_OFFSET TYPE I,

L_LENGTH TYPE I,

L_DIFF TYPE I,

L_CONTENT_ID TYPE STRING,

L_CONTENT_TYPE TYPE W3CONTTYPE,

L_OBJ_LEN TYPE SO_OBJ_LEN,

GR_XSTR TYPE XSTRING,

L_GR_RAW TYPE BAPICONTEN,

L_USERNAME TYPE UNAME,

L_MAIL_ADDRESS TYPE AD_SMTPADR,

WA_RETURN TYPE BAPIRET2,

LV_SEND_REQ_BCS TYPE REF TO CX_SEND_REQ_BCS,

LV_ADDRESS_BCS TYPE REF TO CX_ADDRESS_BCS,

LV_GBT_MIME TYPE REF TO CX_GBT_MIME,

LV_BCOM_MIME TYPE REF TO CX_BCOM_MIME,

LV_DOCUMENT_BCS TYPE REF TO CX_DOCUMENT_BCS.

CLEAR HTML_XSTR.

LOOP AT LS_HTML-CONTENT INTO L_HTML_RAW.

CONCATENATE HTML_XSTR L_HTML_RAW INTO HTML_XSTR IN BYTE MODE.

ENDLOOP.

HTML_XSTR = HTML_XSTR(LS_HTML-LENGTH).

CALL FUNCTION 'SCP_TRANSLATE_CHARS' "#EC NOTEXT

EXPORTING INBUFF = HTML_XSTR

INCODE = '4110' " UTF-8 "#EC NOTEXT

  • OUTCODE = '0000' " ACTUAL CODEPAGE

CSUBST = 'X' "#EC NOTEXT

SUBSTC_SPACE = 'X' "#EC NOTEXT

IMPORTING OUTBUFF = HTML_STR

OUTUSED = HTML_LEN

EXCEPTIONS OTHERS = 1.

  • CHANGE ENCODING UTF-8 TO LATIN1

REPLACE ALL OCCURRENCES OF 'UTF-8' IN HTML_STR WITH 'iso-8859-1'

IGNORING CASE. "#EC NOTEXT

*HACK THE HTML CODE GENERATED BY SMARTFORM TO MAKE THE

*EXTERNAL IMAGES APPEAR AS <IMG> TAG IN HTML

REPLACE ALL OCCURRENCES OF '&lt;IMG' IN HTML_STR WITH '<IMG' IGNORING

CASE. "#EC NOTEXT

REPLACE ALL OCCURRENCES OF '/&gt;' IN HTML_STR WITH '/>' IGNORING

CASE. "#EC NOTEXT

REPLACE ALL OCCURRENCES OF '&lt;/A&gt;' IN HTML_STR WITH '</A>'

IGNORING CASE. "#EC NOTEXT

REPLACE ALL OCCURRENCES OF '&lt;' IN HTML_STR WITH '<'

IGNORING CASE. "#EC NOTEXT

REPLACE ALL OCCURRENCES OF '&gt;' IN HTML_STR WITH '>'

IGNORING CASE. "#EC NOTEXT

HTML_LEN = STRLEN( HTML_STR ).

L_OFFSET = 0.

L_LENGTH = 255.

WHILE L_OFFSET < HTML_LEN.

L_DIFF = HTML_LEN - L_OFFSET.

IF L_DIFF > L_LENGTH.

LS_SOLI-LINE = HTML_STR+L_OFFSET(L_LENGTH).

ELSE.

LS_SOLI-LINE = HTML_STR+L_OFFSET(L_DIFF).

ENDIF.

APPEND LS_SOLI TO LT_SOLI.

ADD L_LENGTH TO L_OFFSET.

ENDWHILE.

CREATE OBJECT LO_MIME_HELPER.

CALL METHOD LO_MIME_HELPER->SET_MAIN_HTML

EXPORTING

CONTENT = LT_SOLI

  • FILENAME = 'SAPWEBFORM.HTM' "#EC NOTEXT

DESCRIPTION =

'SAP WEB FORM'. "#EC NOTEXT

*prepare the graphic content from the smartform

LOOP AT LT_GRAPHICS INTO L_GRAPHIC.

CLEAR GR_XSTR.

LOOP AT L_GRAPHIC-CONTENT INTO L_GR_RAW.

CONCATENATE GR_XSTR L_GR_RAW-LINE INTO GR_XSTR IN BYTE MODE.

ENDLOOP.

GR_XSTR = GR_XSTR(L_GRAPHIC-LENGTH).

L_OFFSET = 0.

L_LENGTH = 255.

CLEAR LT_SOLIX[].

WHILE L_OFFSET < L_GRAPHIC-LENGTH.

L_DIFF = L_GRAPHIC-LENGTH - L_OFFSET.

IF L_DIFF > L_LENGTH.

LS_SOLIX-LINE = GR_XSTR+L_OFFSET(L_LENGTH).

ELSE.

LS_SOLIX-LINE = GR_XSTR+L_OFFSET(L_DIFF).

ENDIF.

APPEND LS_SOLIX TO LT_SOLIX.

ADD L_LENGTH TO L_OFFSET.

ENDWHILE.

CONCATENATE C_GR_DIR L_GRAPHIC-GRAPHICS

'.BMP' INTO L_FILENAME. "#EC NOTEXT

CONCATENATE C_GR_DIR L_GRAPHIC-GRAPHICS

'.BMP' INTO L_CONTENT_ID. "#EC NOTEXT

L_CONTENT_TYPE = L_GRAPHIC-HTTPTYPE.

L_OBJ_LEN = L_GRAPHIC-LENGTH.

CALL METHOD LO_MIME_HELPER->ADD_BINARY_PART

EXPORTING

CONTENT = LT_SOLIX

  • FILENAME = L_FILENAME

EXTENSION = 'BMP' "#EC NOTEXT

DESCRIPTION = 'GRAPHIC IN BMP FORMAT' "#EC NOTEXT

CONTENT_TYPE = L_CONTENT_TYPE

LENGTH = L_OBJ_LEN

CONTENT_ID = L_CONTENT_ID.

ENDLOOP.

TRY.

LO_DOC_BCS = CL_DOCUMENT_BCS=>CREATE_FROM_MULTIRELATED(

I_SUBJECT = LV_MAIL_SUBJECT

I_MULTIREL_SERVICE = LO_MIME_HELPER ).

CATCH CX_DOCUMENT_BCS INTO LV_DOCUMENT_BCS.

  • ERROR HANDLING

CLEAR WA_RETURN.

WA_RETURN-TYPE = 'E'. "#EC NOTEXT

MOVE LV_DOCUMENT_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.

INSERT WA_RETURN INTO TABLE LT_RETURN.

EXIT.

CATCH CX_BCOM_MIME INTO LV_BCOM_MIME.

CLEAR WA_RETURN.

WA_RETURN-TYPE = 'E'. "#EC NOTEXT

MOVE LV_BCOM_MIME->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.

INSERT WA_RETURN INTO TABLE LT_RETURN.

EXIT.

CATCH CX_GBT_MIME INTO LV_GBT_MIME.

CLEAR WA_RETURN.

WA_RETURN-TYPE = 'E'. "#EC NOTEXT

MOVE LV_GBT_MIME->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.

INSERT WA_RETURN INTO TABLE LT_RETURN.

EXIT.

ENDTRY.

  • REUSE THE CONTENT PREPARED FOR ALL RECEIVERS

LOOP AT LT_RECEIVERS INTO RECEIVER.

L_MAIL_ADDRESS = RECEIVER-RECEIVER.

  • CREATE SEND_REQUEST

TRY.

LO_BCS = CL_BCS=>CREATE_PERSISTENT( ).

LO_BCS->SET_DOCUMENT( I_DOCUMENT = LO_DOC_BCS ).

CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.

CLEAR WA_RETURN.

WA_RETURN-TYPE = 'E'. "#EC NOTEXT

MOVE LV_SEND_REQ_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.

INSERT WA_RETURN INTO TABLE LT_RETURN.

EXIT.

ENDTRY.

  • CREATE SENDER

CLASS CL_CAM_ADDRESS_BCS DEFINITION LOAD.

TRY.

IF L_USERNAME NS '@'. "#EC NOTEXT

L_USERNAME = LV_SEND_PARTNER .

TRANSLATE L_USERNAME TO UPPER CASE. "#EC TRANSLANG

LI_SENDER ?= CL_SAPUSER_BCS=>CREATE( L_USERNAME ).

ELSE.

DATA: L_FROM_MAIL_ADDRESS TYPE AD_SMTPADR.

L_FROM_MAIL_ADDRESS = L_USERNAME.

LI_SENDER ?=

CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(

I_ADDRESS_STRING = L_FROM_MAIL_ADDRESS ).

ENDIF.

CALL METHOD LO_BCS->SET_SENDER

EXPORTING

I_SENDER = LI_SENDER.

CATCH CX_ADDRESS_BCS INTO LV_ADDRESS_BCS.

  • ERROR HANDLING

CLEAR WA_RETURN.

WA_RETURN-TYPE = 'E'. "#EC NOTEXT

MOVE LV_ADDRESS_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.

INSERT WA_RETURN INTO TABLE LT_RETURN.

EXIT.

CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.

  • FAILED TO ADD A RECIPIENT

CLEAR WA_RETURN.

WA_RETURN-TYPE = 'E'. "#EC NOTEXT

MOVE LV_SEND_REQ_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.

INSERT WA_RETURN INTO TABLE LT_RETURN.

EXIT.

ENDTRY.

  • CREATE RECIPIENT

TRY.

LO_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(

I_ADDRESS_STRING = L_MAIL_ADDRESS ).

CATCH CX_ADDRESS_BCS INTO LV_ADDRESS_BCS.

  • ERROR HANDLING

CLEAR WA_RETURN.

WA_RETURN-TYPE = 'W'. "#EC NOTEXT

MOVE LV_ADDRESS_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.

INSERT WA_RETURN INTO TABLE LT_RETURN.

CONTINUE.

ENDTRY.

TRY.

LO_BCS->ADD_RECIPIENT( I_RECIPIENT = LO_RECIPIENT ).

CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.

  • FAILED TO ADD A RECIPIENT

CLEAR WA_RETURN.

WA_RETURN-TYPE = 'W'. "#EC NOTEXT

MOVE LV_SEND_REQ_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.

INSERT WA_RETURN INTO TABLE LT_RETURN.

CONTINUE.

ENDTRY.

  • SEND

TRY.

  • RECEIPTS ONLY FOR ERRORS

CALL METHOD LO_BCS->SEND_REQUEST->SET_REQUESTED_STATUS

EXPORTING

I_REQUESTED_STATUS =

'N'. "#EC NOTEXT

LV_SENT_TO_ALL = LO_BCS->SEND( ).

CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.

CLEAR WA_RETURN.

WA_RETURN-TYPE = 'E'. "#EC NOTEXT

MOVE LV_SEND_REQ_BCS->GET_LONGTEXT( ) TO WA_RETURN-MESSAGE.

INSERT WA_RETURN INTO TABLE LT_RETURN.

  • ERROR HANDLING

EXIT.

ENDTRY.

ENDLOOP. " END LOOP AT LT_RECEIVERS

COMMIT WORK.

ES_JOB_OUTPUT_INFO-OUTPUTDONE = 'X'.

  • SET THE SUCCESS INFORMATION

WA_RETURN-TYPE = 'I'. "#EC NOTEXT

WA_RETURN-MESSAGE = 'MAIL SENT SUCCESSFULLY'. "#EC NOTEXT

INSERT WA_RETURN INTO TABLE LT_RETURN.

  • SET STATUS PRINTED INTO THE CRM ORDER

CALL FUNCTION 'CRM_STATUS_SET_INTERN'

EXPORTING

IV_OBJNR = LV_OBJECT_GUID

IV_STATUS = GC_STATUS-PRINTED

XNOAUTO = TRUE

EXCEPTIONS

OBJECT_NOT_FOUND = 1

STATUS_INCONSISTENT = 2

STATUS_NOT_ALLOWED = 3

OTHERS = 4.

ELSE.

CASE SY-SUBRC.

WHEN 1.

MESSAGE E016(SPPF_MEDIA) INTO DUMMY.

WHEN 2.

MESSAGE E017(SPPF_MEDIA) WITH FUNCTION_NAME INTO DUMMY.

WHEN 3.

MESSAGE E018(SPPF_MEDIA) WITH FUNCTION_NAME INTO DUMMY.

ENDCASE.

CALL METHOD CL_LOG_PPF=>ADD_MESSAGE

EXPORTING

IP_PROBLEMCLASS = '1'

IP_HANDLE = IP_APPLICATION_LOG.

ENDIF.

  • GET ERROR TABLE

CALL FUNCTION 'SSF_READ_ERRORS'

IMPORTING

ERRORTAB = ET_ERROR_TAB.

  • FILL ERROR INTO CRM_ORDER STATUS

LOOP AT ET_ERROR_TAB INTO LV_ERROR_TAB_WRK

WHERE MSGTY = GC_MSGTYPE-ERROR.

CALL FUNCTION 'CRM_MESSAGE_COLLECT'

EXPORTING

IV_CALLER_NAME = GC_OBJECT_NAME-ORDER

IV_MSGNO = LV_ERROR_TAB_WRK-MSGNO

IV_MSGID = LV_ERROR_TAB_WRK-MSGID

IV_MSGTY = LV_ERROR_TAB_WRK-MSGTY

IV_MSGV1 = LV_ERROR_TAB_WRK-MSGV1

IV_MSGV2 = LV_ERROR_TAB_WRK-MSGV2

IV_MSGV3 = LV_ERROR_TAB_WRK-MSGV3

IV_MSGV4 = LV_ERROR_TAB_WRK-MSGV4

  • IV_MSGTYPE = GC_MSGTYPE-WARNING

IV_MSGLEVEL = GC_MSGLEVEL-ADMINISTRATOR

EXCEPTIONS

NOT_FOUND = 1

APPL_LOG_ERROR = 2

OTHERS = 3.

ENDLOOP.

ENDMETHOD.

Now put the class and method into the action definition.

Kind regards,

Remy Piets

Former Member
0 Kudos

Hmmm, I see that when I past the code in this post, its looks a little bit messy.

Give your emailaddress, I will send you the instruction.

Kind regards,

Remy Piets

Former Member
0 Kudos

Hi Remy,

I'd appreciate it if you could send me the code also. My email address is:

maxout1@gmx.net

Thanx in advance

Thomas

Former Member
0 Kudos

Hi Remy,

Thanx for the code , I started working with you code, I will Reward you full points once I am done with this,

Any way thank you,

Can you send me the code to girishkosuri@gmail.com

_girish.

Former Member
0 Kudos

Hi Remy,

thanks for your email. Is there a way to get rid of the scrollbars?

Whenever I view a smartform html email in outlook, there are horizontal

and vertical scrollbars, no matter how I set up the page format in smartforms.

Any idea?

Thomas

Former Member
0 Kudos

Hi all,

could someone send me the formatted code as well (christoph.schuhwerk@wolke7.net) ?

Thanks & Regards

Christoph

former_member385033
Participant
0 Kudos

Remy,

could you please also send the code to me? I'd would really appreciate it, we are having a similar requirement.

info(at)slomka.biz

Thanky yu and Best regards,

Holger

Former Member
0 Kudos

Remy,

Could you please send the code to me? I'd would really appreciate it, we are having a similar requirement, we already tried several methods, but they are not covers all our requirements.

Kind regards,

Innokentiy