Scp_translate_chars ,

Can anyone tell me the use of this function module.
points for all useful answers

Hi,
This is used for Character settings and conversions.
Check the sample code
data: encoding type string.
encoding = 'iso-8859-2'.
data: codepage type cpcodepage.
call function 'SCP_CODEPAGE_BY_EXTERNAL_NAME'
exporting
external_name = encoding
importing
sap_codepage = codepage
exceptions
not_found = 1
others = 2.
data: codepage2 type cpcodepage.
encoding = 'utf-8'.
call function 'SCP_CODEPAGE_BY_EXTERNAL_NAME'
exporting
external_name = encoding
importing
sap_codepage = codepage2
exceptions
not_found = 1
others = 2.
data: xdocument_length type i.
xdocument_length = xstrlen( me->pl_xstring ).
call function 'SCP_TRANSLATE_CHARS'
exporting
inbuff = me->pl_xstring
inbufflg = xdocument_length
incode = codepage
outcode = codepage2
substc_space = 'X'
substc = '00035'
importing
outbuff = me->pl_string
exceptions
invalid_codepage = 1
internal_error = 2
cannot_convert = 3
fields_bad_type = 4
others = 5.
Regards,
Raj.

Similar Messages

  • Replace for translate of codepage other than scp_translate_chars in unicode

    data:l_string(1000) type C
    CALL FUNCTION 'SCP_TRANSLATE_CHARS'
       EXPORTING
          inbuff           = instring
          incode           = in_cp
         outcode          = out_cp
       IMPORTING
          outbuff          = l_string
        EXCEPTIONS
         invalid_codepage = 1
         internal_error   = 2
          cannot_convert   = 3
          fields_bad_type  = 4
          OTHERS           = 5.
    string = l_string.
    in_cp is of type tcp00-cpcodepage and value is 1100 and out_cp is of type tcp00-cpcodepage and value is 4103.
    now , the file should be of xml format, the data is coming in as unknown language example [][][][][][][][][][][][][][][] .
    the basic language in the file is some what of this type: 
    so what is the function module that has to be used to get a proper xml format of the data obtained?

    It's most likely your selection of fonts doesn't include the glyphs.  For xft (TrueType) I use DejaVu Sans Mono to balance glyph coverage with legibility and I use WenQuanYi Bitmap Song for the double wide characters.
    xterm*faceName: DejaVu Sans Mono:style=Book:antialias=false
    xterm*faceNameDoublesize: WenQuanYi Bitmap Song
    xterm*faceSize: 8
    ! Fix for DJVSM low-hanging underscore, adds line spacing:
    xterm*scaleHeight: 1.01
    The default XLFD font, aliased to "fixed", has very good glyph coverage.  You can probably switch to it with xterm's Ctrl-Right_Click menu: uncheck 'TrueType Fonts' and make sure Default is checked.  Or start a new xterm instance from the command line:
    $ xterm -xrm "*renderFont: false" &
    The default fonts for xterm are all XLFD.  You can view the system defaults in '/usr/share/X11/app-defaults/XTerm'.  The defaults may be overwritten by your user's X resources configuration.
    Edit: fixed missing space in code.
    Last edited by thisoldman (2013-08-14 11:16:09)

  • Smartforms output as HTML in email

    Hi,
    I want to send the output of a smartform as html in email body.
    I found and used this bolg: :<a href="/people/pavan.bayyapu/blog/2005/08/30/sending-html-email-from-sap-crmerp HTML Email from SAP CRM/ERP</a>
    I did everything as per the blog.
    However I am getting the email as:
    sf @media print {.xsfnoprint{ display : none ;}}/* Default css layout information for SAP Smart Forms (XSF Output) Last modified: 12.05.2003 /@media screen { body { background-color : #EFEFEF ; }}@media screen { .page { border-style : outset ; border-width : 2pt ; background-color : white ; }}/@media print { .page { overflow: hidden; }}// unification browser-dependent settings /table { border-spacing: 0pt; empty-cells: show;}tr { vertical-align: top; }td input img img.icon / End of default.css */.SYSTEM div#B.par{ font-family : "Courier New" ; font-size : 12pt ; font-weight : normal ; line-height : 4.23mm ; text-decoration : none ; text-align : justify ; clear : both ;}.SYSTEM div#L.par{ font-family : "Courier New" ; font-size : 12pt ; font-weight : normal ; line-height : 4.23mm ; text-decoration : none ; text-align : left ; clear : both ;}.SYSTEM a.SYSTEM span#H.char{ font-weight : bold ;}.SYSTEM span#I.char{ font-style : italic ;}.SYSTEM span#U.char{ text-decoration : underline ;}#sfPAGE1-001.page@media screen {#MAIN.win{ overflow : auto ;}}@media print {#MAIN.win{ overflow : hidden ;}}#sfPAGE1-001.page #MAIN.win
    Welcome
    <IMG src="https://www.sdn.sap.com/sd/img/logo_header.gif" border="0" aligh="left" width="559" height="48">
    I am using: Lotus notes client for email and my smartform contains only two text elements: one containing text Welcome and other containing text
    <IMG src="https://www.sdn.sap.com/sd/img/logo_header.gif" border="0" aligh="left" width="559" height="48">
    When I display the document using SOST, I get the output as
    Address bar has this:  C:\Documents and Settings\EDC LTIL02\SapWorkDir\TESTHTMLEMAILFROMSMARTFORMOUTPUT_20070928154506.046_X.MHT
    and window contains:
    Welcome
    <IMG src="https://www.sdn.sap.com/sd/img/logo_header.gif" border="0" aligh="left" width="559" height="48"> "
    Regards,
    Reema
    Message was edited by:
            Reema Shahbazkar
    In case anyone needs to have a look at my code:
    REPORT  ZSMARTFORM_2_HTML_EMAIL.
    get generated function module for the smartform
    DATA: FM_NAME TYPE RS38L_FNAM.
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
      EXPORTING
        FORMNAME                 = 'ZSF_SAMPLE_HTML'
      VARIANT                  = ' '
      DIRECT_CALL              = ' '
    IMPORTING
       FM_NAME                  = FM_NAME
    EXCEPTIONS
       NO_FORM                  = 1
       NO_FUNCTION_MODULE       = 2
       OTHERS                   = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    get smartform contetnt
    set smartform output options
    data:
      control_parameters type SSFCTRLOP,
      OUTPUT_OPTIONS     TYPE SSFCOMPOP,
      DOCUMENT_OUTPUT_INFO  TYPE SSFCRESPD,
      JOB_OUTPUT_INFO  TYPE SSFCRESCL,
      JOB_OUTPUT_OPTIONS TYPE SSFCRESOP,
      XSFPARAM_LINE TYPE SSFXSFP,
      P_HTML TYPE TRFRESULT,
      P_GRAPHICS TYPE TSF_XSF_GR,
      WA_RETURN TYPE BAPIRET2.
    CONSTANTS: C_GR_DIR TYPE TDTEXT VALUE '/MYGRAPHICS'.
    control_parameters-NO_DIALOG = 'X'.
    *control_parameters-GETOTF = 'X'.
    OUTPUT_OPTIONS-TDNEWID = SPACE.
    OUTPUT_OPTIONS-TDIMMED = SPACE.
    OUTPUT_OPTIONS-XSFCMODE = 'X'.  "RUNTIME SETTINGS FROM SMARTFORM HEADER TO BE USED
    OUTPUT_OPTIONS-XSF = 'X'.  "XSF OUTPUT ACTIVATED
    OUTPUT_OPTIONS-XSFOUTMODE = 'A'.  "XSF OUTPUT STREAM PASSED DIRECTLY TO CALLING PROGRAM AS AN INTERNAL TABLE.
    CLEAR: OUTPUT_OPTIONS-XSFOUTDEV.  "OUTPUT SPOOL DEVICE
    OUTPUT_OPTIONS-XSFFORMAT = 'X'.  "ADDITIONALLLY TO XSF, HTML AND CSS LAYOUT INFORMATION IS ALSO PASSED TO CALLING PROGRAM
    XSFPARAM_LINE-NAME = 'GRAPHICS'.
    XSFPARAM_LINE-VALUE = 'EXTRACT'.
    APPEND XSFPARAM_LINE TO OUTPUT_OPTIONS-XSFPARS.
    XSFPARAM_LINE-NAME = 'GRAPHICS-DIRECTORY'.
    XSFPARAM_LINE-VALUE = C_GR_DIR.
    APPEND XSFPARAM_LINE TO OUTPUT_OPTIONS-XSFPARS.
    XSFPARAM_LINE-NAME = 'CONTENT-ID'.
    XSFPARAM_LINE-VALUE = 'ENABLE'.
    APPEND XSFPARAM_LINE TO OUTPUT_OPTIONS-XSFPARS.
    CALL GENERATED FUNCTION MODULE TO GET FORM CONTENTS
    CALL FUNCTION FM_NAME
    EXPORTING
      ARCHIVE_INDEX              =
      ARCHIVE_INDEX_TAB          =
      ARCHIVE_PARAMETERS         =
       CONTROL_PARAMETERS         = CONTROL_PARAMETERS
      MAIL_APPL_OBJ              =
      MAIL_RECIPIENT             =
      MAIL_SENDER                =
       OUTPUT_OPTIONS             = OUTPUT_OPTIONS
      USER_SETTINGS              = 'X'
    IMPORTING
       DOCUMENT_OUTPUT_INFO       = DOCUMENT_OUTPUT_INFO
       JOB_OUTPUT_INFO            = JOB_OUTPUT_INFO
       JOB_OUTPUT_OPTIONS         = JOB_OUTPUT_OPTIONS
    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.
    SEPARATE HTML GRAPHICAL N CSS LAYOUT CONTENT
    P_HTML = JOB_OUTPUT_INFO-XMLOUTPUT-TRFRESULT.
    P_GRAPHICS[] = JOB_OUTPUT_INFO-XMLOUTPUT-XSFGR[].
    PROCEED TO SEND EMAIL
    DATA: HTML_DATA TYPE TRFRESULT,
          L_HTML_RAW LIKE LINE OF HTML_DATA-CONTENT,
          HTML_XSTR TYPE XSTRING.
    CLEAR: HTML_XSTR.
    LOOP AT P_HTML-CONTENT INTO L_HTML_RAW.
      CONCATENATE HTML_XSTR L_HTML_RAW INTO HTML_XSTR IN BYTE MODE.
    ENDLOOP.
    HTML_XSTR = HTML_XSTR(P_HTML-LENGTH).
    SPECIAL CHARACTER CONVERSION
    DATA: HTML_STR TYPE STRING,
          HTML_LEN TYPE I.
    CALL FUNCTION 'SCP_TRANSLATE_CHARS'
      EXPORTING
        INBUFF                   = HTML_XSTR
      INBUFFLG                 = 0
       INCODE                   = '4110'  "utf-8
      OUTBUFFLG                = 0
      OUTCODE                  = '0000'
       CSUBST                   = 'X'
      SUBSTC_HASH              = ' '
      SUBSTC_DOT               = ' '
       SUBSTC_SPACE             = 'x'
      SUBSTC                   = '00035'
    IMPORTING
      INUSED                   =
       OUTBUFF                  = HTML_STR
      OUTOVERFLOW              =
       OUTUSED                  = HTML_LEN
      SUBSTED                  =
      INPUT_ENDS_IN_CHAR       =
      ERRMSG                   =
    EXCEPTIONS
      INVALID_CODEPAGE         = 1
      INTERNAL_ERROR           = 2
      CANNOT_CONVERT           = 3
      FIELDS_BAD_TYPE          = 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.
    CHANGE ENCODING UTF-8 TO LATIN1
    REPLACE ALL OCCURRENCES OF 'UTF-8' IN HTML_STR WITH 'iso-8859-1' IGNORING CASE.
    REPLACE ALL OCCURRENCES OF '<IMG' IN HTML_STR WITH '<IMG' IGNORING CASE.
    REPLACE ALL OCCURRENCES OF '/>' IN HTML_STR WITH '/>' IGNORING CASE.
    REPLACE ALL OCCURRENCES OF '<A>' IN HTML_STR WITH '' IGNORING CASE.
    REPLACE ALL OCCURRENCES OF '<' IN HTML_STR WITH '<' IGNORING CASE.
    REPLACE ALL OCCURRENCES OF '>' IN HTML_STR WITH '>' IGNORING CASE.
    HTML_LEN = STRLEN( HTML_STR ).
    DATA: L_OFFSET TYPE I,
          L_LENGTH TYPE I,
          L_DIFF TYPE I,
          LT_SOLI TYPE SOLI_TAB,
          LS_SOLI TYPE SOLI.
    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.
    DATA: LO_MIME_HELPER TYPE REF TO CL_GBT_MULTIRELATED_SERVICE.
    CREATE OBJECT LO_MIME_HELPER
      EXPORTING
        CODEPAGE = '1133'.
    CALL METHOD LO_MIME_HELPER->SET_MAIN_HTML
      EXPORTING
        CONTENT     = LT_SOLI
       FILENAME    =
       DESCRIPTION =
    HANDLE GRAPHICS
    DATA: L_GRAPHIC TYPE SSF_XSF_GR,
          GR_XSTR TYPE XSTRING,
          L_GR_RAW TYPE BAPICONTEN,
          L_CONTENT_ID TYPE STRING,
          L_CONTENT_TYPE TYPE W3CONTTYPE,
          L_OBJ_LEN TYPE SO_OBJ_LEN,
          L_FILENAME TYPE STRING,
          LT_SOLIX TYPE SOLIX_TAB,
          LS_SOLIX TYPE SOLIX.
    LOOP AT P_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.
      CONCATENATE C_GR_DIR L_GRAPHIC-GRAPHICS '.BMP' INTO L_CONTENT_ID.
      L_CONTENT_TYPE = L_GRAPHIC-HTTPTYPE.
      L_OBJ_LEN = L_GRAPHIC-LENGTH.
    ADD IMAGES TO EMAIL
      CALL METHOD LO_MIME_HELPER->ADD_BINARY_PART
        EXPORTING
          CONTENT      = LT_SOLIX
         FILENAME     =
         EXTENSION    =
         DESCRIPTION  =
          CONTENT_TYPE = L_CONTENT_TYPE
          LENGTH       = L_OBJ_LEN
          CONTENT_ID   = L_CONTENT_ID
    ENDLOOP.
    DATA: LO_DOC_BCS TYPE REF TO CL_DOCUMENT_BCS,
          P_SUBJECT TYPE SO_OBJ_DES,
          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.
      P_SUBJECT = 'TEST HTML EMAIL FROM SMARTFORM OUTPUT'.
      TRY.
      CALL METHOD CL_DOCUMENT_BCS=>CREATE_FROM_MULTIRELATED
        EXPORTING
          I_SUBJECT          = P_SUBJECT
          I_LANGUAGE         = SY-LANGU
          I_IMPORTANCE       = '5'
          I_SENSITIVITY      = 'F'
          I_MULTIREL_SERVICE = LO_MIME_HELPER
        RECEIVING
          RESULT             = LO_DOC_BCS
       CATCH CX_DOCUMENT_BCS INTO LV_DOCUMENT_BCS.
       CATCH CX_BCOM_MIME INTO LV_BCOM_MIME.
       CATCH CX_GBT_MIME INTO LV_GBT_MIME.
      ENDTRY.
    RECEIVERS
    DATA: P_RECEIVERS TYPE TABLE OF SOMLRECI1,
          RECEIVER TYPE SOMLRECI1,
          L_MAIL_ADDRESS TYPE AD_SMTPADR,
          LO_BCS TYPE REF TO CL_BCS,
          LV_SEND_REQ_BCS TYPE REF TO CX_SEND_REQ_BCS,
          L_USERNAME TYPE UNAME,
          SEND_PARTNER TYPE BU_PARTNER,
          LI_SENDER TYPE REF TO IF_SENDER_BCS,
          LV_ADDRESS_BCS TYPE REF TO CX_ADDRESS_BCS,
          LV_SENT_TO_ALL TYPE BOOLEAN.
    CLEAR RECEIVER.
    RECEIVER-RECEIVER = '[email protected]'.
    RECEIVER-REC_TYPE = 'U'.
    RECEIVER-COM_TYPE = 'INT'.
    APPEND RECEIVER TO P_RECEIVERS.
    L_USERNAME = SY-UNAME.
    CLEAR RECEIVER.
    LOOP AT P_RECEIVERS INTO RECEIVER.
      L_MAIL_ADDRESS = RECEIVER-RECEIVER.
      TRY.
      CALL METHOD CL_BCS=>CREATE_PERSISTENT
        RECEIVING
          RESULT = LO_BCS
       CALL METHOD LO_BCS->SET_DOCUMENT
         EXPORTING
           I_DOCUMENT = LO_DOC_BCS
       CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.
      ENDTRY.
    CREATE SENDER
    CLASS CL_CAM_ADDRESS_BCS DEFINITION LOAD.
    TRY.
      IF L_USERNAME NS '@'.
        L_USERNAME = SEND_PARTNER.
        TRANSLATE L_USERNAME TO UPPER CASE.
        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.
    CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.
    ENDTRY.
    create recepient
    data: LO_RECEPIENT TYPE REF TO IF_RECIPIENT_BCS.
    TRY.
    CALL METHOD CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS
       EXPORTING
         I_ADDRESS_STRING = L_MAIL_ADDRESS
        I_ADDRESS_NAME   =
        I_INCL_SAPUSER   =
       RECEIVING
         RESULT           = LO_RECEPIENT
      CATCH CX_ADDRESS_BCS INTO LV_ADDRESS_BCS.
    ENDTRY.
    TRY.
    CALL METHOD LO_BCS->ADD_RECIPIENT
       EXPORTING
         I_RECIPIENT  = LO_RECEPIENT
        I_EXPRESS    =
        I_COPY       =
        I_BLIND_COPY =
        I_NO_FORWARD =
      CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.
    ENDTRY.
    SEND EMAIL DOCUMENT
    TRY.
    CALL METHOD LO_BCS->SEND_REQUEST->SET_REQUESTED_STATUS
      EXPORTING
        I_REQUESTED_STATUS = 'N'
    TRY.
    CALL METHOD LO_BCS->SEND
    EXPORTING
       I_WITH_ERROR_SCREEN = SPACE
      RECEIVING
        RESULT              = LV_SENT_TO_ALL
    CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.
    ENDTRY.
    ENDTRY.
    ENDLOOP.
    COMMIT WORK.

    Hi,
    I want to send the output of a smartform as html in email body.
    I found and used this bolg: :<a href="/people/pavan.bayyapu/blog/2005/08/30/sending-html-email-from-sap-crmerp HTML Email from SAP CRM/ERP</a>
    I did everything as per the blog.
    However I am getting the email as:
    sf @media print {.xsfnoprint{ display : none ;}}/* Default css layout information for SAP Smart Forms (XSF Output) Last modified: 12.05.2003 /@media screen { body { background-color : #EFEFEF ; }}@media screen { .page { border-style : outset ; border-width : 2pt ; background-color : white ; }}/@media print { .page { overflow: hidden; }}// unification browser-dependent settings /table { border-spacing: 0pt; empty-cells: show;}tr { vertical-align: top; }td input img img.icon / End of default.css */.SYSTEM div#B.par{ font-family : "Courier New" ; font-size : 12pt ; font-weight : normal ; line-height : 4.23mm ; text-decoration : none ; text-align : justify ; clear : both ;}.SYSTEM div#L.par{ font-family : "Courier New" ; font-size : 12pt ; font-weight : normal ; line-height : 4.23mm ; text-decoration : none ; text-align : left ; clear : both ;}.SYSTEM a.SYSTEM span#H.char{ font-weight : bold ;}.SYSTEM span#I.char{ font-style : italic ;}.SYSTEM span#U.char{ text-decoration : underline ;}#sfPAGE1-001.page@media screen {#MAIN.win{ overflow : auto ;}}@media print {#MAIN.win{ overflow : hidden ;}}#sfPAGE1-001.page #MAIN.win
    Welcome
    <IMG src="https://www.sdn.sap.com/sd/img/logo_header.gif" border="0" aligh="left" width="559" height="48">
    I am using: Lotus notes client for email and my smartform contains only two text elements: one containing text Welcome and other containing text
    <IMG src="https://www.sdn.sap.com/sd/img/logo_header.gif" border="0" aligh="left" width="559" height="48">
    When I display the document using SOST, I get the output as
    Address bar has this:  C:\Documents and Settings\EDC LTIL02\SapWorkDir\TESTHTMLEMAILFROMSMARTFORMOUTPUT_20070928154506.046_X.MHT
    and window contains:
    Welcome
    <IMG src="https://www.sdn.sap.com/sd/img/logo_header.gif" border="0" aligh="left" width="559" height="48"> "
    Regards,
    Reema
    Message was edited by:
            Reema Shahbazkar
    In case anyone needs to have a look at my code:
    REPORT  ZSMARTFORM_2_HTML_EMAIL.
    get generated function module for the smartform
    DATA: FM_NAME TYPE RS38L_FNAM.
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
      EXPORTING
        FORMNAME                 = 'ZSF_SAMPLE_HTML'
      VARIANT                  = ' '
      DIRECT_CALL              = ' '
    IMPORTING
       FM_NAME                  = FM_NAME
    EXCEPTIONS
       NO_FORM                  = 1
       NO_FUNCTION_MODULE       = 2
       OTHERS                   = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    get smartform contetnt
    set smartform output options
    data:
      control_parameters type SSFCTRLOP,
      OUTPUT_OPTIONS     TYPE SSFCOMPOP,
      DOCUMENT_OUTPUT_INFO  TYPE SSFCRESPD,
      JOB_OUTPUT_INFO  TYPE SSFCRESCL,
      JOB_OUTPUT_OPTIONS TYPE SSFCRESOP,
      XSFPARAM_LINE TYPE SSFXSFP,
      P_HTML TYPE TRFRESULT,
      P_GRAPHICS TYPE TSF_XSF_GR,
      WA_RETURN TYPE BAPIRET2.
    CONSTANTS: C_GR_DIR TYPE TDTEXT VALUE '/MYGRAPHICS'.
    control_parameters-NO_DIALOG = 'X'.
    *control_parameters-GETOTF = 'X'.
    OUTPUT_OPTIONS-TDNEWID = SPACE.
    OUTPUT_OPTIONS-TDIMMED = SPACE.
    OUTPUT_OPTIONS-XSFCMODE = 'X'.  "RUNTIME SETTINGS FROM SMARTFORM HEADER TO BE USED
    OUTPUT_OPTIONS-XSF = 'X'.  "XSF OUTPUT ACTIVATED
    OUTPUT_OPTIONS-XSFOUTMODE = 'A'.  "XSF OUTPUT STREAM PASSED DIRECTLY TO CALLING PROGRAM AS AN INTERNAL TABLE.
    CLEAR: OUTPUT_OPTIONS-XSFOUTDEV.  "OUTPUT SPOOL DEVICE
    OUTPUT_OPTIONS-XSFFORMAT = 'X'.  "ADDITIONALLLY TO XSF, HTML AND CSS LAYOUT INFORMATION IS ALSO PASSED TO CALLING PROGRAM
    XSFPARAM_LINE-NAME = 'GRAPHICS'.
    XSFPARAM_LINE-VALUE = 'EXTRACT'.
    APPEND XSFPARAM_LINE TO OUTPUT_OPTIONS-XSFPARS.
    XSFPARAM_LINE-NAME = 'GRAPHICS-DIRECTORY'.
    XSFPARAM_LINE-VALUE = C_GR_DIR.
    APPEND XSFPARAM_LINE TO OUTPUT_OPTIONS-XSFPARS.
    XSFPARAM_LINE-NAME = 'CONTENT-ID'.
    XSFPARAM_LINE-VALUE = 'ENABLE'.
    APPEND XSFPARAM_LINE TO OUTPUT_OPTIONS-XSFPARS.
    CALL GENERATED FUNCTION MODULE TO GET FORM CONTENTS
    CALL FUNCTION FM_NAME
    EXPORTING
      ARCHIVE_INDEX              =
      ARCHIVE_INDEX_TAB          =
      ARCHIVE_PARAMETERS         =
       CONTROL_PARAMETERS         = CONTROL_PARAMETERS
      MAIL_APPL_OBJ              =
      MAIL_RECIPIENT             =
      MAIL_SENDER                =
       OUTPUT_OPTIONS             = OUTPUT_OPTIONS
      USER_SETTINGS              = 'X'
    IMPORTING
       DOCUMENT_OUTPUT_INFO       = DOCUMENT_OUTPUT_INFO
       JOB_OUTPUT_INFO            = JOB_OUTPUT_INFO
       JOB_OUTPUT_OPTIONS         = JOB_OUTPUT_OPTIONS
    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.
    SEPARATE HTML GRAPHICAL N CSS LAYOUT CONTENT
    P_HTML = JOB_OUTPUT_INFO-XMLOUTPUT-TRFRESULT.
    P_GRAPHICS[] = JOB_OUTPUT_INFO-XMLOUTPUT-XSFGR[].
    PROCEED TO SEND EMAIL
    DATA: HTML_DATA TYPE TRFRESULT,
          L_HTML_RAW LIKE LINE OF HTML_DATA-CONTENT,
          HTML_XSTR TYPE XSTRING.
    CLEAR: HTML_XSTR.
    LOOP AT P_HTML-CONTENT INTO L_HTML_RAW.
      CONCATENATE HTML_XSTR L_HTML_RAW INTO HTML_XSTR IN BYTE MODE.
    ENDLOOP.
    HTML_XSTR = HTML_XSTR(P_HTML-LENGTH).
    SPECIAL CHARACTER CONVERSION
    DATA: HTML_STR TYPE STRING,
          HTML_LEN TYPE I.
    CALL FUNCTION 'SCP_TRANSLATE_CHARS'
      EXPORTING
        INBUFF                   = HTML_XSTR
      INBUFFLG                 = 0
       INCODE                   = '4110'  "utf-8
      OUTBUFFLG                = 0
      OUTCODE                  = '0000'
       CSUBST                   = 'X'
      SUBSTC_HASH              = ' '
      SUBSTC_DOT               = ' '
       SUBSTC_SPACE             = 'x'
      SUBSTC                   = '00035'
    IMPORTING
      INUSED                   =
       OUTBUFF                  = HTML_STR
      OUTOVERFLOW              =
       OUTUSED                  = HTML_LEN
      SUBSTED                  =
      INPUT_ENDS_IN_CHAR       =
      ERRMSG                   =
    EXCEPTIONS
      INVALID_CODEPAGE         = 1
      INTERNAL_ERROR           = 2
      CANNOT_CONVERT           = 3
      FIELDS_BAD_TYPE          = 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.
    CHANGE ENCODING UTF-8 TO LATIN1
    REPLACE ALL OCCURRENCES OF 'UTF-8' IN HTML_STR WITH 'iso-8859-1' IGNORING CASE.
    REPLACE ALL OCCURRENCES OF '<IMG' IN HTML_STR WITH '<IMG' IGNORING CASE.
    REPLACE ALL OCCURRENCES OF '/>' IN HTML_STR WITH '/>' IGNORING CASE.
    REPLACE ALL OCCURRENCES OF '<A>' IN HTML_STR WITH '' IGNORING CASE.
    REPLACE ALL OCCURRENCES OF '<' IN HTML_STR WITH '<' IGNORING CASE.
    REPLACE ALL OCCURRENCES OF '>' IN HTML_STR WITH '>' IGNORING CASE.
    HTML_LEN = STRLEN( HTML_STR ).
    DATA: L_OFFSET TYPE I,
          L_LENGTH TYPE I,
          L_DIFF TYPE I,
          LT_SOLI TYPE SOLI_TAB,
          LS_SOLI TYPE SOLI.
    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.
    DATA: LO_MIME_HELPER TYPE REF TO CL_GBT_MULTIRELATED_SERVICE.
    CREATE OBJECT LO_MIME_HELPER
      EXPORTING
        CODEPAGE = '1133'.
    CALL METHOD LO_MIME_HELPER->SET_MAIN_HTML
      EXPORTING
        CONTENT     = LT_SOLI
       FILENAME    =
       DESCRIPTION =
    HANDLE GRAPHICS
    DATA: L_GRAPHIC TYPE SSF_XSF_GR,
          GR_XSTR TYPE XSTRING,
          L_GR_RAW TYPE BAPICONTEN,
          L_CONTENT_ID TYPE STRING,
          L_CONTENT_TYPE TYPE W3CONTTYPE,
          L_OBJ_LEN TYPE SO_OBJ_LEN,
          L_FILENAME TYPE STRING,
          LT_SOLIX TYPE SOLIX_TAB,
          LS_SOLIX TYPE SOLIX.
    LOOP AT P_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.
      CONCATENATE C_GR_DIR L_GRAPHIC-GRAPHICS '.BMP' INTO L_CONTENT_ID.
      L_CONTENT_TYPE = L_GRAPHIC-HTTPTYPE.
      L_OBJ_LEN = L_GRAPHIC-LENGTH.
    ADD IMAGES TO EMAIL
      CALL METHOD LO_MIME_HELPER->ADD_BINARY_PART
        EXPORTING
          CONTENT      = LT_SOLIX
         FILENAME     =
         EXTENSION    =
         DESCRIPTION  =
          CONTENT_TYPE = L_CONTENT_TYPE
          LENGTH       = L_OBJ_LEN
          CONTENT_ID   = L_CONTENT_ID
    ENDLOOP.
    DATA: LO_DOC_BCS TYPE REF TO CL_DOCUMENT_BCS,
          P_SUBJECT TYPE SO_OBJ_DES,
          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.
      P_SUBJECT = 'TEST HTML EMAIL FROM SMARTFORM OUTPUT'.
      TRY.
      CALL METHOD CL_DOCUMENT_BCS=>CREATE_FROM_MULTIRELATED
        EXPORTING
          I_SUBJECT          = P_SUBJECT
          I_LANGUAGE         = SY-LANGU
          I_IMPORTANCE       = '5'
          I_SENSITIVITY      = 'F'
          I_MULTIREL_SERVICE = LO_MIME_HELPER
        RECEIVING
          RESULT             = LO_DOC_BCS
       CATCH CX_DOCUMENT_BCS INTO LV_DOCUMENT_BCS.
       CATCH CX_BCOM_MIME INTO LV_BCOM_MIME.
       CATCH CX_GBT_MIME INTO LV_GBT_MIME.
      ENDTRY.
    RECEIVERS
    DATA: P_RECEIVERS TYPE TABLE OF SOMLRECI1,
          RECEIVER TYPE SOMLRECI1,
          L_MAIL_ADDRESS TYPE AD_SMTPADR,
          LO_BCS TYPE REF TO CL_BCS,
          LV_SEND_REQ_BCS TYPE REF TO CX_SEND_REQ_BCS,
          L_USERNAME TYPE UNAME,
          SEND_PARTNER TYPE BU_PARTNER,
          LI_SENDER TYPE REF TO IF_SENDER_BCS,
          LV_ADDRESS_BCS TYPE REF TO CX_ADDRESS_BCS,
          LV_SENT_TO_ALL TYPE BOOLEAN.
    CLEAR RECEIVER.
    RECEIVER-RECEIVER = '[email protected]'.
    RECEIVER-REC_TYPE = 'U'.
    RECEIVER-COM_TYPE = 'INT'.
    APPEND RECEIVER TO P_RECEIVERS.
    L_USERNAME = SY-UNAME.
    CLEAR RECEIVER.
    LOOP AT P_RECEIVERS INTO RECEIVER.
      L_MAIL_ADDRESS = RECEIVER-RECEIVER.
      TRY.
      CALL METHOD CL_BCS=>CREATE_PERSISTENT
        RECEIVING
          RESULT = LO_BCS
       CALL METHOD LO_BCS->SET_DOCUMENT
         EXPORTING
           I_DOCUMENT = LO_DOC_BCS
       CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.
      ENDTRY.
    CREATE SENDER
    CLASS CL_CAM_ADDRESS_BCS DEFINITION LOAD.
    TRY.
      IF L_USERNAME NS '@'.
        L_USERNAME = SEND_PARTNER.
        TRANSLATE L_USERNAME TO UPPER CASE.
        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.
    CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.
    ENDTRY.
    create recepient
    data: LO_RECEPIENT TYPE REF TO IF_RECIPIENT_BCS.
    TRY.
    CALL METHOD CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS
       EXPORTING
         I_ADDRESS_STRING = L_MAIL_ADDRESS
        I_ADDRESS_NAME   =
        I_INCL_SAPUSER   =
       RECEIVING
         RESULT           = LO_RECEPIENT
      CATCH CX_ADDRESS_BCS INTO LV_ADDRESS_BCS.
    ENDTRY.
    TRY.
    CALL METHOD LO_BCS->ADD_RECIPIENT
       EXPORTING
         I_RECIPIENT  = LO_RECEPIENT
        I_EXPRESS    =
        I_COPY       =
        I_BLIND_COPY =
        I_NO_FORWARD =
      CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.
    ENDTRY.
    SEND EMAIL DOCUMENT
    TRY.
    CALL METHOD LO_BCS->SEND_REQUEST->SET_REQUESTED_STATUS
      EXPORTING
        I_REQUESTED_STATUS = 'N'
    TRY.
    CALL METHOD LO_BCS->SEND
    EXPORTING
       I_WITH_ERROR_SCREEN = SPACE
      RECEIVING
        RESULT              = LV_SENT_TO_ALL
    CATCH CX_SEND_REQ_BCS INTO LV_SEND_REQ_BCS.
    ENDTRY.
    ENDTRY.
    ENDLOOP.
    COMMIT WORK.

  • How to display URL images and URL link (html) from Smartforms?

    Hi Gurus,
    I'm having difficulty on how to display targeted URL images and URL link from the smartforms, after i sending it out as html mail. The mail i sent just can be preview as a plain text, which can't execute the html code that i put inside the smartforms itself. I follow a few step from this very useful blog.. Hopefully, you guys can give me some solutions or ideas on this.
    /people/pavan.bayyapu/blog/2005/08/30/sending-html-email-from-sap-crmerp -thanks to Pavan for his useful blog.
    My code is like this..
    <--- Start Code.
    FORM call_smartforms.
      DATA : lv_subject TYPE so_obj_des,
             lc_true(1) VALUE 'X',
             lw_control_parameters TYPE ssfctrlop,
             lw_output_options TYPE ssfcompop,
             lc_graphics(8) VALUE 'GRAPHICS',
             lw_xsfparam_line TYPE ssfxsfp,
             lc_extract(7) VALUE 'EXTRACT',
             lc_graphics_directory(18) VALUE 'GRAPHICS-DIRECTORY',
             lc_mygraphics(11) VALUE 'mygraphics/',
             lc_content_id(10) VALUE 'CONTENT-ID',
             lc_enable(6) VALUE 'ENABLE',
             lw_job_output_info TYPE ssfcrescl,
             lw_html_data TYPE trfresult,
             lw_graphics TYPE ssf_xsf_gr,
             lt_graphics TYPE tsf_xsf_gr,
             lv_html_xstr TYPE xstring,
             lw_html_raw LIKE LINE OF lw_html_data-content,
             lv_incode TYPE tcp00-cpcodepage VALUE '4110',
             lv_html_str TYPE string,
             lv_html_len TYPE i,
             lc_utf8(5) VALUE 'utf-8',
             lc_latin1(6) VALUE 'latin1',
             lv_offset TYPE i,
             lv_length TYPE i,
             lv_diff TYPE i,
             lt_soli TYPE soli_tab,
             lw_soli TYPE soli,
             lc_mime_helper TYPE REF TO cl_gbt_multirelated_service,
             lv_name TYPE mime_text VALUE 'sapwebform.htm',
             lv_xstr TYPE xstring,
             lw_raw TYPE bapiconten,
             lt_solix TYPE solix_tab,
             lw_solix TYPE solix,
             lv_filename TYPE string,
             lv_content_id TYPE string,
             lv_content_type TYPE w3conttype,
             lv_obj_len TYPE so_obj_len,
             lv_bmp TYPE so_fileext VALUE 'BMP',
             lv_description TYPE so_obj_des VALUE 'Graphic in BMP format',
             lc_doc_bcs TYPE REF TO cl_document_bcs,
             lc_bcs TYPE REF TO cl_bcs,
             lc_send_exception TYPE REF TO cx_root,
             lw_adsmtp TYPE lty_adsmtp,
             lv_mail_address TYPE ad_smtpadr,
             lc_recipient TYPE REF TO if_recipient_bcs,
             lc_send_request TYPE REF TO cl_bcs,
             lv_sent_to_all TYPE os_boolean.
      DATA : v_language TYPE sflangu VALUE 'E',
             v_e_devtype TYPE rspoptype.
      v_form_name = 'ZTEST_EMAIL'.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname           = v_form_name
        IMPORTING
          fm_name            = v_namef
        EXCEPTIONS
          no_form            = 1
          no_function_module = 2
          OTHERS             = 3.
      IF sy-subrc = 0.
       break mhusin.
      ENDIF.
    starting here. ***
    Set title for the output
      lv_subject = 'Smartforms.'.
    Set control parameters to "no dialog"
      lw_control_parameters-no_dialog = lc_true.
    IF lw_service_subject-code = lc_fm1.
    *--- To get output device type
      CALL FUNCTION 'SSF_GET_DEVICE_TYPE'
        EXPORTING
          i_language    = v_language
          i_application = 'SAPDEFAULT'
        IMPORTING
          e_devtype     = v_e_devtype.
      lw_output_options-tdprinter = v_e_devtype.
      lw_control_parameters-getotf = 'X'.
      IF sy-subrc = 0.
       break mhusin.
      ENDIF.
    Set output options
      lw_output_options-xsf        = lc_true.
      lw_output_options-xsfcmode   = lc_true.
      lw_output_options-xsfoutmode = 'A'.
      lw_output_options-xsfoutdev  = space.
      lw_output_options-xsfformat  = lc_true.
      lw_xsfparam_line-name  = lc_graphics.
      lw_xsfparam_line-value = lc_extract.
      APPEND lw_xsfparam_line TO lw_output_options-xsfpars.
      lw_xsfparam_line-name  = lc_graphics_directory.
      lw_xsfparam_line-value = lc_mygraphics.
      APPEND lw_xsfparam_line TO lw_output_options-xsfpars.
      lw_xsfparam_line-name  = lc_content_id.
      lw_xsfparam_line-value = lc_enable.
      APPEND lw_xsfparam_line TO lw_output_options-xsfpars.
    Get the smartform content
      CALL FUNCTION v_namef
        EXPORTING
          control_parameters   = lw_control_parameters
          output_options       = lw_output_options
    *pass other application specific parameters (eg order number, items ).
      IMPORTING
          job_output_info    = lw_job_output_info
      TABLES
          tt_tabh              = tt_tabh
          tt_tabb              = tt_tabb
          tt_tabf              = tt_tabf
      EXCEPTIONS
          formatting_error = 1
          internal_error   = 2
          send_error       = 3
          user_canceled    = 4
          OTHERS           = 5.
      IF sy-subrc = 0.
       break mhusin.
      ENDIF.
      lw_html_data  = lw_job_output_info-xmloutput-trfresult.
      lt_graphics[] = lw_job_output_info-xmloutput-xsfgr[].
      CLEAR lv_html_xstr.
      LOOP AT lw_html_data-content INTO lw_html_raw.
        CONCATENATE lv_html_xstr lw_html_raw INTO lv_html_xstr IN BYTE MODE.
      ENDLOOP.
      lv_html_xstr = lv_html_xstr(lw_html_data-length).
      CALL FUNCTION 'SCP_TRANSLATE_CHARS'
        EXPORTING
          inbuff       = lv_html_xstr
          incode       = lv_incode
          csubst       = lc_true
          substc_space = lc_true
        IMPORTING
          outbuff      = lv_html_str
          outused      = lv_html_len
        EXCEPTIONS
          OTHERS       = 1.
    *HACK THE HTML CODE GENERATED BY SMARTFORM TO MAKE THE
    *EXTERNAL IMAGES APPEAR AS <IMG> TAG IN HTML
      REPLACE ALL OCCURRENCES OF '<IMG' IN lv_html_str WITH '<IMG' IGNORING CASE.
      REPLACE ALL OCCURRENCES OF '/>' IN lv_html_str WITH '/>' IGNORING CASE.
      REPLACE ALL OCCURRENCES OF '</A>' IN lv_html_str WITH '' IGNORING CASE.
      REPLACE ALL OCCURRENCES OF '<' IN lv_html_str WITH '<' IGNORING CASE.
      REPLACE ALL OCCURRENCES OF '>' IN lv_html_str WITH '>' IGNORING CASE.
    CALL METHOD html_control - >load_mime_object
       EXPORTING
         object_id  = 'ZWN'
         object_url = 'ZWN.GIF'
       EXCEPTIONS
         OTHERS     = 1.
      REPLACE ALL OCCURRENCES OF lc_utf8 IN lv_html_str WITH lc_latin1.
    REPLACE ALL OCCURRENCES OF lc_utf8 IN lv_html_str WITH 'iso-8859-1'.
       break mhusin.
      lv_html_len = STRLEN( lv_html_str ).
      lv_offset = 0.
      lv_length = 255.
      WHILE lv_offset < lv_html_len.
        lv_diff = lv_html_len - lv_offset.
        IF lv_diff > lv_length.
          lw_soli-line = lv_html_str+lv_offset(lv_length).
        ELSE.
          lw_soli-line = lv_html_str+lv_offset(lv_diff).
        ENDIF.
        APPEND lw_soli TO lt_soli.
        ADD lv_length TO lv_offset.
      ENDWHILE.
      CREATE OBJECT lc_mime_helper.
      CALL METHOD lc_mime_helper->set_main_html
        EXPORTING
          content     = lt_soli
          filename    = lv_name
          description = lv_subject.
      LOOP AT lt_graphics INTO lw_graphics.
        CLEAR lv_xstr.
        LOOP AT lw_graphics-content INTO lw_raw.
          CONCATENATE lv_xstr lw_raw-line INTO lv_xstr IN BYTE MODE.
        ENDLOOP.
        lv_xstr = lv_xstr(lw_graphics-length).
        lv_offset = 0.
        lv_length = 255.
        CLEAR lt_solix[].
        WHILE lv_offset < lw_graphics-length.
          lv_diff = lw_graphics-length - lv_offset.
          IF lv_diff > lv_length.
            lw_solix-line = lv_xstr+lv_offset(lv_length).
          ELSE.
            lw_solix-line = lv_xstr+lv_offset(lv_diff).
          ENDIF.
          APPEND lw_solix TO lt_solix.
          ADD lv_length TO lv_offset.
        ENDWHILE.
        CONCATENATE lc_mygraphics lw_graphics-graphics text-001 INTO lv_filename.
        CONCATENATE lc_mygraphics lw_graphics-graphics text-001 INTO lv_content_id.
        lv_content_type = lw_graphics-httptype.
        lv_obj_len      = lw_graphics-length.
    *Add images to the email
        CALL METHOD lc_mime_helper->add_binary_part
          EXPORTING
            content      = lt_solix
            filename     = lv_filename
            extension    = lv_bmp
            description  = lv_description
            content_type = lv_content_type
            length       = lv_obj_len
            content_id   = lv_content_id.
      ENDLOOP.
      TRY.
          lv_subject = lv_subject.
          lc_doc_bcs = cl_document_bcs=>create_from_multirelated(
                   i_subject          = lv_subject
                   i_multirel_service = lc_mime_helper ).
        CATCH cx_document_bcs INTO lc_send_exception.
        CATCH cx_bcom_mime INTO lc_send_exception.
        CATCH cx_gbt_mime INTO lc_send_exception.
      ENDTRY.
    Create send request
      TRY.
          lc_bcs = cl_bcs=>create_persistent( ).
        CATCH cx_send_req_bcs INTO lc_send_exception.
      ENDTRY.
      TRY.
          lc_bcs->set_document( i_document = lc_doc_bcs ).
        CATCH cx_send_req_bcs INTO lc_send_exception.
      ENDTRY.
    Set-up email receiver
      lv_mail_address = '[email protected]'.
    TRANSLATE lv_mail_address TO UPPER CASE.
      TRY.
          lc_recipient = cl_cam_address_bcs=>create_internet_address(
              i_address_string = lv_mail_address ).
        CATCH cx_address_bcs INTO lc_send_exception.
      ENDTRY.
      TRY.
          lc_bcs->add_recipient( i_recipient = lc_recipient ).
        CATCH cx_send_req_bcs INTO lc_send_exception.
      ENDTRY.
    Send smartforms as HTML email
      TRY.
          lc_bcs->send( ).
        CATCH cx_send_req_bcs INTO lc_send_exception.
      ENDTRY.
      COMMIT WORK.
      WRITE:/ 'Mail sent'.
    ENDFORM.                    "call_smartforms
    End Code --->
    Thanks and Regards.

    1- put your images in a directory under the web app directory. Example: app/images/
    2- in your jsp, use: String file = application.getRealPath("/images/"); to get the images directory. See http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String)
    3- it's not the right forum to post this kind of question. Post them in the JSP/Servlet JSTL forum instead

  • Mail program doubt

    i have used this program for sending mail through SAP.It has two options.First for sending as an html attachement,second for plain text inline with the body of the message.Actually i need the message in html format inline with the body of the message itself(not as an attachement)
    In simple words the body of the message want to be in html format,not an attachement..
    *& Report  ZMAIL                                                       *
    report  zmail                                   .
    tables: soos1.
    *type-pools: sbdst.
    parameters: report like varis-report obligatory.
    parameters: variant like varis-variant obligatory.
    parameters:reptitle like soos1-recrem  obligatory.
    select-options: recnam for soos1-recrem  obligatory.
    *{   INSERT         EDPK900415                                        1
    selection-screen skip 1.
    selection-screen begin of block b1 with frame title text-001.
    selection-screen begin of line.
    parameters: r1 radiobutton group g1.
    selection-screen comment:5(40) text-003 for field r1.
    selection-screen position 35.
    selection-screen end of line.
    selection-screen begin of line.
    parameters: r2 radiobutton group g1.
    selection-screen comment: 5(40) text-002 for field r2.
    selection-screen end of line.
    selection-screen end of block b1.
    *}   INSERT
    data: begin of html_tab occurs 0.
            include structure w3html.
    data: end of html_tab.
    data : it_pack_list  like soxpl occurs 0 with header line.
    data: begin of html_tab_converted occurs 0,
                line(255) type c,
              end of html_tab_converted.
    data:  listobject like abaplist occurs 20 with header line.
    data:  abap_list like abaplist occurs 20 with header line.
    data: icontab(32) occurs 10 with header line.
    data: lineno type i, length type i, size type i,
          l_filename like rlgrap-filename.
    data: icon_wa  type icon,
          internal type icon-internal,
          existing type c.
    data: my_bds type ref to cl_bds_document_set,
          key    type sbdst_object_key,
          files  type sbdst_files,
          wa     type bapifiles.
    data: filename type string,
          filefilter type string,
          path type string,
          fullpath type string.
    data: user_action type i.
    data: cur_guicopdepage(4) type c.
    data: gui_codepage(4) type n,        " added for message 500824
          is_unicode type rststype-sel_ok.
    data: convert_output type xstring,
          convert_buffer type xstring.
    data i type i.
    data tablength type i.
    data dummy type i.
    data list_index like  sy-lsind .
    data begin of new_pack_list occurs 10.
            include structure soxpl.
    data end of new_pack_list.
    data : owner like soud-usrnam.
    data: fg_sysdli like sonv-flag,
    fg_folrg like soxdl-folrg,
    dli_tab_save like soxdl occurs 20 with header line.
    data: rec_count like sy-tabix.
    data: object_type like sood-objtp value 'RAW'.
    data: object_hd_change like sood1 occurs 0 with header line.
    data: objcont like soli occurs 0 with header line.
    data: attcont_tab like soli occurs 0 with header line.
    data: atthead_tab like soli  occurs 0 with header line.
    data  so_ali like soli occurs 100 with header line.
    data  document_data like sodocchgi1.
    data  msg_text(80) type c.           "Message text
    data:  length type i, size type i.
    data  profile like soprd.
    data  subrc like sy-subrc value 0.
    data  so_ali_hex type standard table of solix.   "note 604603
    data: objpara like selc occurs 0 with header line.
    data: objparb like soop1 occurs 0 with header line.
    data: receivers like soos1 occurs 0 with header line.
    *data: receivers like soos5 occurs 0 with header line.
    data: r_dliq type c. "Shared Distrbution List
    data: r_dlip type c. "Private Distrbution list
    data: rep_title(50) type c. "Report Title
    data : begin of dis_lst occurs 10. "Internal table to store DL
            include structure sodm1.
    data : end of dis_lst.
    data : begin of listtab occurs 100. "Internal Table for List CONTAINER
            include structure abaplist.
    data : end of listtab.
    data : begin of downtab occurs 1,
    line(255),
    end of downtab.
    data ls_cnt type n.
    data:begin of it_mailid occurs 0,
         mailid(100), "  TYPE ZSENDINT_MAILID-MAILID,
         end of it_mailid.
    data c1.
    c1 = ' '.
    shift reptitle left deleting leading c1.
    *SELECT MAILID FROM ZSENDINT_MAILID INTO TABLE IT_MAILID WHERE SUBJECT = REPTITLE AND FLAG <> 'X'.
    "IF SY-SUBRC = 0.
    "CLEAR RECNAM.
    "REFRESH RECNAM.
    "LOOP AT IT_MAILID.
    "MOVE 'I' TO RECNAM-SIGN.
    "MOVE 'EQ' TO RECNAM-OPTION.
    "MOVE IT_MAILID-MAILID TO RECNAM-LOW.
    "APPEND RECNAM.
    "ENDLOOP.
    "ENDIF.
    *S.KARTHIKRAJA 07.10.2006
    call function 'LIST_FREE_MEMORY'
      tables
        listobject = listobject
      exceptions
        others     = 1.
    submit (report)
    using selection-set variant
                     exporting list to memory and return.
    import listobject from memory id '%_LIST'.
    if listobject[] is initial.
      exit.
    endif.
    call function 'WWW_HTML_FROM_LISTOBJECT'
           exporting
                  REPORT_NAME   =
                template_name = 'WEBREPORTING_REPORT'
           tables
                html          =  html_tab
                listobject    =  listobject
                listicons     =  icontab.
    call function 'LIST_TO_ASCI'
      exporting
        list_index         = -1
      tables
        listasci           = downtab
        listobject         = listobject
      exceptions
        empty_list         = 1
        list_index_invalid = 2
        others             = 3.
    call function 'TABLE_COMPRESS'       "Schneller Tabellencopy
          tables
               in         = listobject
               out        = so_ali.      "note 604603
               out        = so_ali_hex.   "note 604603
    call function 'SO_SOLIXTAB_TO_SOLITAB'           "note 604603
         exporting
              ip_solixtab = so_ali_hex[]
         importing
              ep_solitab  = so_ali[].
    call function 'SO_DLI_LIST_READ_XDL'
    exporting
    private = 'X'
    public = 'X'
    subscript = 'X'
    tables
    dli_display_tab = dli_tab_save
    exceptions
    communication_failure = 1
    dl_list_no_entries = 2
    owner_not_exist = 3
    system_failure = 4
    x_error = 5
    parameter_error = 6
    others = 7.
    call function 'SO_DLI_EXPAND'
    exporting
    system_dli = fg_sysdli
    convert = 'X'
    tables
    member = dis_lst
    objpara = objpara
    objparb = objparb
    exceptions
    active_user_not_exist = 1
    communication_failure = 2
    component_not_available = 3
    dl_name_not_exist = 4
    folder_not_exist = 5
    folder_no_authorization = 6
    forwarder_not_exist = 7
    object_not_exist = 8
    object_no_authorization = 9
    operation_no_authorization = 10
    owner_not_exist = 11
    parameter_error = 12
    recurrency_exist = 13
    substitute_not_active = 14
    substitute_not_defined = 15
    system_failure = 16
    x_error = 17
    others = 18.
    refresh receivers.
    clear receivers.
    move sy-datum  to receivers-rcdat .
    move sy-uzeit  to receivers-rctim.
    refresh object_hd_change.
    object_hd_change-objla = sy-langu. "Language
    object_hd_change-objcp = ' '. " Object can be changed byUSER
    object_hd_change-objsns = 'F'. " Msg Sensitivity private orbusiness
    object_hd_change-objdes = reptitle.
    object_hd_change-objnam = object_hd_change-objdes.
    append object_hd_change.
    if r1 = 'X'.
      move html_tab[] to objcont[].
    else.
      move downtab[] to objcont[].
    endif.
    describe table objcont lines i.
    it_pack_list-head_start = 1.
    it_pack_list-head_num = 0.
    it_pack_list-body_start = 1.
    it_pack_list-body_num = i.
    it_pack_list-OBJTP = 'RAW'.
    move variant to it_pack_list-objnam.
    move variant to it_pack_list-objdes.
    move 'HTM' to it_pack_list-file_ext.
    append it_pack_list.
    loop at html_tab.
      call function 'SCP_TRANSLATE_CHARS'
        exporting
          inbuff           = html_tab
          outcode          = gui_codepage
          csubst           = 'X'
          substc_space     = 'X'
          substc           = '00035'
        importing
          outbuff          = convert_output
        exceptions
          invalid_codepage = 1
          internal_error   = 2
          cannot_convert   = 3
          fields_bad_type  = 4
          others           = 5.
      concatenate convert_buffer convert_output into convert_buffer in
      byte mode.
    endloop.
    i = 0.
    describe field html_tab_converted length tablength in byte mode.
    while i < xstrlen( convert_buffer ).
      dummy = xstrlen( convert_buffer ) - i.
      if tablength > dummy.
        html_tab_converted-line = convert_buffer+i(dummy).
      else.
        html_tab_converted-line = convert_buffer+i(tablength).
      endif.
      i = i + tablength.
      append html_tab_converted.
    endwhile.
    receivers-sel = 'X'.
    receivers-sndex = ' '. "
    receivers-sndpri = '1'. "Priority of the message
    receivers-deliver = ' '.
    receivers-not_deli = ' '.
    receivers-read = ' '.
    receivers-recnam = 'U-'.
    receivers-mailstatus = 'E'.
    receivers-sortclass = '5'.
    receivers-recesc = 'U'. " U means Internet Address
    receivers-SAP_BODY = 'X'.
    receivers-sndart = 'INT'.
    loop at recnam.
      receivers-adr_name = recnam-low.
      receivers-recextnam = recnam-low.
      append receivers.
    endloop.
    owner = sy-uname.
    if r1  = 'X'.
      call function 'SO_OBJECT_SEND'
      exporting
    object_hd_change = object_hd_change
      object_type = object_type
      outbox_flag = 'X'
      owner = owner
      sender = sy-uname
      tables
      receivers = receivers
    packing_list = it_pack_list
      att_cont = objcont
      att_head = atthead_tab
      exceptions
      active_user_not_exist = 1
      communication_failure = 2
      component_not_available = 3
      folder_not_exist = 4
      folder_no_authorization = 5
      forwarder_not_exist = 6
      note_not_exist = 7
      object_not_exist = 8
      object_not_sent = 9
      object_no_authorization = 10
      object_type_not_exist = 11
      operation_no_authorization = 12
      owner_not_exist = 13
      parameter_error = 14
      substitute_not_active = 15
      substitute_not_defined = 16
      system_failure = 17
      too_much_receivers = 18
      user_not_exist = 19
      x_error = 20
      others = 21.
    else.
      call function 'SO_OBJECT_SEND'
       exporting
      object_hd_change = object_hd_change
       object_type = object_type
       outbox_flag = 'X'
       owner = owner
       sender = sy-uname
       tables
       objcont = objcont
       receivers = receivers
       exceptions
       active_user_not_exist = 1
       communication_failure = 2
       component_not_available = 3
       folder_not_exist = 4
       folder_no_authorization = 5
       forwarder_not_exist = 6
       note_not_exist = 7
       object_not_exist = 8
       object_not_sent = 9
       object_no_authorization = 10
       object_type_not_exist = 11
       operation_no_authorization = 12
       owner_not_exist = 13
       parameter_error = 14
       substitute_not_active = 15
       substitute_not_defined = 16
       system_failure = 17
       too_much_receivers = 18
       user_not_exist = 19
       x_error = 20
       others = 21.
    endif.
    commit work.
    call function 'SO_DEQUEUE_UPDATE_LOCKS'.

    i have not gone thru your source code fully.
    maintain the text in Tcode SO10.
    use the fn module READTEXT* to read the contents of the text.
    cheers
    jayanthi.K

  • How to save a file in unicode (UTF-8)

    Hello,
    I'm trying to save a xml file in unicode (UTF-8) in a 4.6C system. I tried the OPEN DATASET 'file' IN TEXT MODE FOR OUTPUT ENCODING UTF-8 but this is not available in 4.6C. Does anybody have an idea how to do this?
    Thanks in advance
    Kind regards
    Roel

    Hi Roel,
    There is a workaround for this issue.
    Use code below:
    encoding = 'utf-8'.
      data: codepage            type cpcodepage.
      call function 'SCP_CODEPAGE_BY_EXTERNAL_NAME'
        exporting
          external_name = encoding
        importing
          sap_codepage  = codepage
        exceptions
          not_found     = 1
          others        = 2.
      if sy-subrc <> 0.
      endif.
      call function 'SCP_TRANSLATE_CHARS'
        exporting
          inbuff           = sourcedata_xml
          inbufflg         = length
          incode           = codepage
          outcode          = codepage
          substc_space     = 'X'
          substc           = '00035'
        importing
          outbuff          = custom_data
        exceptions
          invalid_codepage = 1
          internal_error   = 2
          cannot_convert   = 3
          fields_bad_type  = 4
          others           = 5.
    Now write this custom_data onto application server by using open dataset and transfer.
    Also have a look at this weblog, there is a code sample in it.
    /people/thomas.jung3/blog/2004/08/31/bsp-150-a-developer146s-journal-part-x--igs-charting
    Hope it'll help.
    Cheers
    Ankur

  • Generating document in XML in RM

    Hi,
    I have a function module where I create a document in XML and store it in RM.
    In the code of this funcion module, I first create the empty document using the FM SRM_DOCUMENT_CREATE, and then I add the content to this document with the FM SRM_DOCUMENT_CHECKIN_VIA_TAB.
    This has always worked in a 6.40 release. But now I have this same funcion module in a 6.20 release and it does not work properly. The document is generated correctly, but the content is not properly displayed. It has the spanish special characters (such as 'ñ', '´') replaced with rare characters. For example, instead of displaying "DISEÑO", it displays "DISEñO".
    I have no idea what the problem can be, I guess it has something to do with the codepage. But I can't find the solution.
    I have tried using the function module SCP_TRANSLATE_CHARS, but I don't know if I am using it correctly becuase it makes no change and does not replace the incorrect characters.
    Thanks in advance,
    Nerea.

    why do you want to serialize the document object?
    you might as well serialize the xml file it represents and when or where needed, just parse it and get its document object, which would essentially be the same as the object you are trying to serialize.

  • Junk characters in email body only for specific user IDs

    While sending mail from SAP I am using
            SENDER = CL_SAPUSER_BCS=>CREATE( LV_SENDER_ADD ).
            CALL METHOD SEND_REQUEST->SET_SENDER
              EXPORTING
                I_SENDER = SENDER.
    now while using 'User1' and 'User2'  in LV_SENDER_ADD give a perfect result.
    But while using 'User3' and 'User4' in LV_SENDER_ADD sends Junk chars in the email body
    ST05 Trace Results show below mention lines in red.
    hh:mm:ss:ms       Type        Lasts(us)       Object                 Text                                           
    19:05:07:451      CMOD          - - -         rstscb_call_back       Parameter:                                                                         
    19:05:07:451      CMOD         - - -        rstswsf_was_stor      Parameter:                                                                         
    19:05:07:451      CMOD              2       rstswsf_was_stor      Parameter:                          Comment:   Returncode: 0                       
    19:05:07:451      CMOD              9       rstscb_call_back      Parameter:                          Comment:   Returncode: 0                       
    19:05:07:451      CMOD         - - -        rscpi_init            Parameter:                                                                         
    (I am converting the XSF output of Smartform  and SCP_TRANSLATE_CHARS to translate smartform output into HTML)
    all the above four user have SAP_ALL authorization.
    'user4' is created as a copy of 'user1'
    Checking the Type CMOD says that they are call to 'C' routine 'kernal calls'
    the above code is executed withe the user id of user1 2 3 4  and all of them give the same results.
    when ever the sender is user1 or user2 the transmission is successful else. sends junk chars.

    Could you tell us why/how you use SCP_TRANSLATE_CHARS?
    Do theseusers have same language/country in their profile?

  • Block List ALV Output Send As Email Attachment

    Hi,  All The ABAP Gurus,
    I have made a block ALV Report. I want that this output should be converted into .xls with HTML format and this should be send in email as attachment. This all will be made in a background job which will be scheduled daily.
    How can I achieve this? I know that the output of classical report can be attached as pdf in email.But I want in Block ALV.
    Thanks in Advance.
    Regards,
    Bharti Jain
    Edited by: Bharti Jain on Jun 28, 2011 10:20 AM

    Hi
    Not 100 percent sure what you want to do here.  I am confused by the .xls in html format.   If you want the output in html you can submit the program and export the list to memory,  Then retrieve the list and convert it to html.  i have done this with the program 1sdbf12l/rv14akzy . see code below.  This converts the output to html, you are left with a binary itab and size at the end of the routine and this can be attached to an email.
    Submit Program and export the list to Memory
    SUBMIT /1sdbf12l/rv14akzy USING SELECTION-SCREEN '1000'
      WITH SELECTION-TABLE lt_params_new EXPORTING LIST TO MEMORY AND RETURN.
      CALL FUNCTION 'LIST_FROM_MEMORY'
        TABLES
          listobject = lt_list
        EXCEPTIONS
          not_found  = 1
          OTHERS     = 2.
    Convert the List to html
      IF sy-subrc = 0.
        DATA: it_html TYPE TABLE OF bapihtml WITH HEADER LINE,
              it_html_out TYPE TABLE OF bapihtml WITH HEADER LINE,
              lt_html TYPE TABLE OF bapihtml WITH HEADER LINE,
              lv_html LIKE LINE OF it_html,
              lv_html_out TYPE string.
        DATA: lv_html_tab_wide(50000) TYPE c.
        DATA: lineno TYPE i, length TYPE i, size TYPE i.
        DATA: gui_codepage(4) TYPE n,        " added for message 500824
              is_unicode TYPE rststype-sel_ok.
        DATA: convert_output TYPE xstring,
              convert_buffer TYPE xstring.
        CALL FUNCTION 'LIST_FREE_MEMORY'
          TABLES
            listobject = lt_list.
        CALL FUNCTION 'WWW_HTML_FROM_LISTOBJECT'
             EXPORTING
                  REPORT_NAME   =
                  template_name = 'WEBREPORTING_REPORT'
             TABLES
                  html          =  it_html
                  listobject    =  lt_list.
        DESCRIBE TABLE it_html LINES lineno .
        DESCRIBE FIELD it_html LENGTH length IN BYTE MODE.
        size = length * lineno.
        CALL 'CUR_LCL' ID 'GUICP'  FIELD gui_codepage.
        CALL FUNCTION 'SCP_GET_CODEPAGE_PROPERTIES'
          EXPORTING
            codepage         = gui_codepage
          IMPORTING
            can_unicode      = is_unicode
          EXCEPTIONS
            codepage_unknown = 1.
        IF sy-subrc <> 0.
          CLEAR gui_codepage.
        ENDIF.
        IF is_unicode EQ 'X'.         "in case of unicode, always use utf-8
          gui_codepage = '4110'.
        ENDIF.
        CLEAR: convert_output, convert_buffer.
        LOOP AT it_html INTO lv_html.
          REPLACE ALL OCCURRENCES OF c_bg_def IN lv_html WITH c_bg_white.
          CALL FUNCTION 'SCP_TRANSLATE_CHARS'
            EXPORTING
              inbuff           = lv_html
              outcode          = gui_codepage
              csubst           = 'X'
              substc_space     = 'X'
            IMPORTING
              outbuff          = convert_output
            EXCEPTIONS
              invalid_codepage = 1
              internal_error   = 2
              cannot_convert   = 3
              fields_bad_type  = 4
              OTHERS           = 5.
          IF sy-subrc <> 0.
           message i020 raising download_error.
          ENDIF.
          CONCATENATE convert_buffer convert_output INTO convert_buffer IN
          BYTE MODE.
          CONCATENATE lv_html_out lv_html INTO lv_html_out.
        ENDLOOP.
        ev_html_string = lv_html_out.
        i = 0.
        DESCRIBE FIELD html_tab_converted LENGTH tablength IN BYTE MODE.
        WHILE i < XSTRLEN( convert_buffer ).
          dummy = XSTRLEN( convert_buffer ) - i.
          IF tablength > dummy.
            html_tab_converted-line = convert_buffer+i(dummy).
          ELSE.
            html_tab_converted-line = convert_buffer+i(tablength).
          ENDIF.
          i = i + tablength.
          APPEND html_tab_converted.
        ENDWHILE.
        et_bin[] = html_tab_converted[].
        ev_bin_size = size.

  • Send an smartform as body of a mail

    Hello,
    I would like know if there is another way of doing this: "Send an smartform as body of a mail". Now it is sending attached as pdf but the user prefers to view the smartform on the body of the message.
    This is a CS formulary and I think that (perhaps) at the options of  "output_options     TYPE ssfcompop," should be another of this.
    Thanks

    I have included our code to process/send our smartform via email. you should be able to see the solution in there.....
    form process_webform
    * activate XSF Output Mode
      ls_output_options-xsf        = c_charx.        " XSF Output active
      ls_output_options-xsfcmode   = c_charx.        " Get XSF params from program
      ls_output_options-xsfoutmode = c_application.  " Application
      ls_output_options-xsfformat  = c_charx.       " Formatting ON
      clear ls_output_options-xsfoutdev.
      ls_xsfparam_line-name  = 'GRAPHICS'.
      ls_xsfparam_line-value = 'EXTRACT'.
      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 = c_charx.
      call function 'SSF_FUNCTION_MODULE_NAME'
        exporting
          formname           = pi_form
        importing
          fm_name            = l_fm_name
        exceptions
          no_form            = 1
          no_function_module = 2
          others             = 3.
      if sy-subrc <> 0.
    *   error handling
        message id sy-msgid type sy-msgty number sy-msgno
                with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        exit.
      endif.
      call function l_fm_name
        exporting
          control_parameters = ls_control_parameters
          output_options     = ls_output_options
          user_settings      = space
        importing
          job_output_info    = ls_output_data
        exceptions
          formatting_error   = 1
          internal_error     = 2
          send_error         = 3
          user_canceled      = 4
          others             = 5.
      if sy-subrc <> 0.
    *   error handling
        message id sy-msgid type sy-msgty number sy-msgno
                with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      endif.
      po_html       = ls_output_data-xmloutput-trfresult.
      po_t_graphics = ls_output_data-xmloutput-xsfgr.
    endform.                    "process_webform
    form send_webform
      clear l_html_xstr.
      loop at pi_s_html-content into l_html_raw.
        concatenate l_html_xstr l_html_raw into l_html_xstr in byte mode.
      endloop.
      l_html_xstr = l_html_xstr(gs_html_data-length).
      call function 'SCP_TRANSLATE_CHARS'
        exporting
          inbuff       = l_html_xstr
          incode       = '4110'                                 " utf-8
          csubst       = c_charx
          substc_space = c_charx
        importing
          outbuff      = l_html_str
          outused      = l_html_len
        exceptions
          others       = 1.
      if sy-subrc ne 0.
        "do nothing
      endif.
    * change encoding utf-8 to latin1
      replace all occurrences of 'utf-8' in l_html_str with 'latin1' ignoring case.
      replace all occurrences of 'absolute' in l_html_str with 'relative' ignoring case.
      replace all occurrences of 'overflow : auto'
                  in l_html_str with 'overflow : hidden' ignoring case.
    * The following code will replace the standard text shown in an html link
    * such as (www.sap.com) with the text passed along with the link (contained in
    * brackets [ ] ).  An example would be: "www.sap.com[Click me]" will then be
    * displayed as a link on the email with "... Click me ..." as the text.  HTML links
    * without brackets will be displayed normally (ie. www.sap.com)+
      do.
    *   Get the length for the entire HTML code for the URL and Name
        find '<a href="' in section offset l_aref_end of l_html_str match offset l_aref_start.
        if sy-subrc ne 0.
          exit.
        endif.
        find '</a>' in section offset l_aref_start of l_html_str match offset l_aref_end.
        l_aref_length = ( l_aref_end + 4 ) - l_aref_start.
    *   Find the URL/name
        l_lnk_start = l_aref_start + 9.
        find '">' in section offset l_aref_start of l_html_str match offset l_lnk_end.
        l_lnk_length = l_lnk_end - l_lnk_start.
    *   Save the URL/name
        l_link_all = l_html_str+l_lnk_start(l_lnk_length).
    *   Find where the name starts and ends
        find '[' in l_link_all match offset l_name_start.
        if sy-subrc ne 0.
          continue.
        endif.
        find ']' in l_link_all match offset l_name_end.
        if sy-subrc ne 0.
          continue.
        endif.
    *   Seperate out the URL
        l_link_url = l_link_all+0(l_name_start).
    *   Seperate out the name
        l_name_start = l_name_start + 1.
        l_name_length = l_name_end - l_name_start.
        l_link_name = l_link_all+l_name_start(l_name_length).
    *   Replace the first URL/Name occurence with just the URL
        replace first occurrence of l_link_all
                in section offset l_aref_start length l_aref_length
                of l_html_str with l_link_url.
    *   Replace the second URL/Name occurence with just the Name - first
    *   substitute special characters.
        replace all occurrences of '&' in l_link_all with '&'.
        replace all occurrences of '>' in l_link_all with '>'.
        replace all occurrences of '<' in l_link_all with '<'.
        replace first occurrence of l_link_all
                in section offset l_aref_start length l_aref_length
                of l_html_str with l_link_name.
    *   Reset ending point
        l_aref_end = l_aref_end - ( l_lnk_length + 2 ).
      enddo.
      l_html_len = strlen( l_html_str ).
      l_offset = 0.
      l_length = 255.
      while l_offset < l_html_len.
        l_diff = l_html_len - l_offset.
        if l_diff > l_length.
          ls_soli-line = l_html_str+l_offset(l_length).
        else.
          ls_soli-line = l_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.
      loop at pi_t_graphics into gs_graphic.
        clear l_gr_xstr.
        loop at gs_graphic-content into l_gr_raw.
          concatenate l_gr_xstr l_gr_raw-line into l_gr_xstr in byte mode.
        endloop.
        l_gr_xstr = l_gr_xstr(gs_graphic-length).
        l_offset = 0.
        l_length = 255.
        clear lt_solix[].
        while l_offset < gs_graphic-length.
          l_diff = gs_graphic-length - l_offset.
          if l_diff > l_length.
            ls_solix-line = l_gr_xstr+l_offset(l_length).
          else.
            ls_solix-line = l_gr_xstr+l_offset(l_diff).
          endif.
          append ls_solix to lt_solix.
          add l_length to l_offset.
        endwhile.
        concatenate c_gr_dir gs_graphic-graphics '.bmp' into l_filename.
        concatenate c_gr_dir gs_graphic-graphics '.bmp' into l_content_id.
        l_content_type = gs_graphic-httptype.
        l_obj_len      = gs_graphic-length.
        call method lo_mime_helper->add_binary_part
          exporting
            content      = lt_solix
            filename     = l_filename
            extension    = 'BMP'
            content_type = l_content_type
            length       = l_obj_len
            content_id   = l_content_id.
      endloop.
      try.
          l_standard_txt = pi_smartform.
          call function 'READ_TEXT'
            exporting
              id       = 'ST'
              language = sy-langu
              name     = l_standard_txt
              object   = 'TEXT'
            tables
              lines    = lt_lines.
          read table lt_lines into ls_lines index 1.
          replace '&1' in ls_lines-tdline with pi_belnr.
          replace '&2' in ls_lines-tdline with pi_bukrs.
            move ls_lines-tdline to l_subject.
         lo_doc_bcs = cl_document_bcs=>create_from_multirelated(
                                        i_subject          = l_subject
                                        i_multirel_service = lo_mime_helper ).
    * Add Attachment
    *      types: begin of email_docs,
    *                   type    type so_obj_tp,
    *                   subject type so_obj_des,
    *                   content_text type soli_tab,
    *                   content_hex  type solix_tab,
    *             end of email_docs.
    *      types: email_docs_t type standard table of email_docs.
    *      data: documents type        email_docs_t,
    *      documents_line like line of documents.
    *      data: soli_tab type soli_tab,
    *            soli type soli.
    *      soli = 'This is line one'.
    *      append soli to soli_tab.
    *      soli = 'And this is line two'.
    *      append soli to soli_tab.
    *      documents_line-type = 'RAW'.
    *      documents_line-subject = 'Subject'.
    *      documents_line-content_text = soli_tab.
    *      append documents_line to documents.
    *      call method lo_doc_bcs->add_attachment
    *        EXPORTING
    *          i_attachment_type    = documents_line-type
    *          i_attachment_subject = documents_line-subject
    *          i_att_content_text   = documents_line-content_text.
        catch cx_document_bcs.
    *   error handling
          exit.
        catch cx_bcom_mime.
    *   error handling
          exit.
        catch cx_gbt_mime.
    *   error handling
          exit.
      endtry.
    * create send_request
      try.
          lo_bcs = cl_bcs=>create_persistent( ).
        catch cx_send_req_bcs.
    *   error handling
          exit.
      endtry.
      try.
          lo_bcs->set_document( i_document = lo_doc_bcs ).
        catch cx_send_req_bcs.
    *   error handling
          exit.
      endtry.
    * create recipient
      if pi_recipient ns '@'.
        l_username = pi_recipient.
        translate l_username to upper case.                     "#EC *
        try.
            lo_recipient = cl_sapuser_bcs=>create( l_username ).
          catch cx_address_bcs.
    *     error handling
            exit.
        endtry.
      else.
        l_mail_address = pi_recipient.
        try.
            lo_recipient = cl_cam_address_bcs=>create_internet_address( i_address_string = l_mail_address ).
          catch cx_address_bcs.
    *     error handling
            exit.
        endtry.
      endif.
      try.
          lo_bcs->add_recipient( i_recipient = lo_recipient ).
        catch cx_send_req_bcs.
    *   error handling
          exit.
      endtry.
    * send
      try.
    *     RECEIPTS ONLY FOR ERRORS
          call method lo_bcs->send_request->set_requested_status
            exporting
              i_requested_status = 'N'.                         "#EC NOTEXT
          lo_bcs->send( ).
          commit work.
        catch cx_send_req_bcs.
    *   error handling
          exit.
      endtry.
    endform.                    "send_webform

  • Convertion from CHAR to ASCII

    Hello,
    Please tell me how we can change a character to ASCII foormat.
    Points will definitltely be given to the useful answers.
    thanks.

    Hi,
    Check following link:
    [http://www.sap-img.com/abap/how-can-i-get-ascii-value-of-any-letter.htm]
    or
    Check function module:
    SCP_TRANSLATE_CHARS
    Regards,
    Harsh.

  • Validate on allowed character set

    Hi,
       I want to validate the Character set. Means, Now my User Interface taking all characters which are possible through key board like Japanese or Chinese characters. But I want to validate the character set.
      As per my knowledge , we need to check the characters manually by writing the logic to compare the each and every characters  but it is laborious job and creates performance problems also. Is there any alternative way?
    Is it possible to do it with WebDynpro  inbuilt functionality?
    Thanks and Best Regards,
    Vijay

    What kind of validation did you having in mind.  Web Dynpro ABAP will automatically convert all characters to the character set of the ABAP Logon Language.  I probably don't need to tell you, but the ultimate answer to any character set problems is to run a Unicode System and then all characters are supported. 
    Although this weblog is BSP specific, you might find some of the discussion useful:
    [/people/thomas.jung3/blog/2004/07/13/bsp-150-a-developer146s-journal-part-vii--dealing-with-multiple-languages-english-german-spanish-thai-and-polish|/people/thomas.jung3/blog/2004/07/13/bsp-150-a-developer146s-journal-part-vii--dealing-with-multiple-languages-english-german-spanish-thai-and-polish]
    You might be able to use SCP_TRANSLATE_CHARS or one of the other SCP function modules to do some sort of mass validation.

  • Solution manager Smartform in HTML format.

    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.

    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_***_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

  • Mail Format

    Hi
    We are converting Smartform data into HTML format using SCP_TRANSLATE_CHARS. Now we have to send it to external e-mail IDs.
    In outlook its coming in correct format but in Gmail and Yahoo ids its not coming into proper format.
    Requirement is to send the content as in mail not in attachement.
    Any idea what could be the wrong?
    Regards,
    Amit.

    Smartform to mail
    Here is the code to send the Smartform to mail as PDF attachment.
    *& Report ZTEST_PDF_MAIL
    REPORT ZTEST_PDF_MAIL.
    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
    WA_OBJHEAD TYPE SOLI_TAB,
    W_CTRLOP TYPE SSFCTRLOP,
    W_COMPOP TYPE SSFCOMPOP,
    W_RETURN TYPE SSFCRESCL,
    WA_DOC_CHNG TYPE SODOCCHGI1,
    W_DATA TYPE SODOCCHGI1,
    WA_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.
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
    FORMNAME = 'ZTEST'
    IMPORTING
    FM_NAME = V_FORM_NAME
    EXCEPTIONS
    NO_FORM = 1
    NO_FUNCTION_MODULE = 2
    OTHERS = 3.
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    W_CTRLOP-GETOTF = 'X'.
    W_CTRLOP-NO_DIALOG = 'X'.
    W_COMPOP-TDNOPREV = 'X'.
    CALL FUNCTION V_FORM_NAME
    EXPORTING
    CONTROL_PARAMETERS = W_CTRLOP
    OUTPUT_OPTIONS = W_COMPOP
    USER_SETTINGS = 'X'
    IMPORTING
    JOB_OUTPUT_INFO = W_RETURN
    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.
    ENDIF.
    LOOP AT I_TLINE.
    TRANSLATE I_TLINE USING '~'.
    CONCATENATE WA_BUFFER I_TLINE 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 = 'test with pdf-Attachment!'.
    APPEND I_OBJTXT.
    DESCRIBE TABLE I_OBJTXT LINES V_LINES_TXT.
    READ TABLE I_OBJTXT INDEX V_LINES_TXT.
    WA_DOC_CHNG-OBJ_NAME = 'smartform'.
    WA_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.
    WA_DOC_CHNG-OBJ_DESCR = 'smartform'.
    WA_DOC_CHNG-SENSITIVTY = 'F'.
    WA_DOC_CHNG-DOC_SIZE = V_LINES_TXT * 255.
    Main Text
    CLEAR I_OBJPACK-TRANSF_BIN.
    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 = 0.
    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 = 'smart'.
    I_OBJPACK-OBJ_DESCR = 'test'.
    APPEND I_OBJPACK.
    CLEAR I_RECLIST.
    I_RECLIST-RECEIVER = '[email protected]'.
    I_RECLIST-REC_TYPE = 'U'.
    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:/ 'Mail sent'.
    ENDIF.
    If you want to send some text as Body of the Mail then follow this once
    when u r callin the FM'SO_NEW_DOCUMENT_ATT_SEND_API1'.. points to remember
    1.u have to pass the body of content in table CONTENTS_TXT(ia m using I_OBJBIN) (each line a record) then. suppose i have appended 11 records to the table CONTENTS_TXT .
    2.PACKING_LIST(iam usign I_OBJPACK) table u ahve to append a redord as follows
    I_OBJPACK-TRANSF_BIN = ' '.
    I_OBJPACK-HEAD_START = 000000000000001.
    I_OBJPACK-HEAD_NUM = 000000000000001.
    I_OBJPACK-BODY_START = 000000000000002
    I_OBJPACK-BODY_NUM = 000000000000010.
    I_OBJPACK-DOC_TYPE = 'RAW'.
    append I_OBJPACK-.
    by the above code system treat the first line in table I_OBJBIN as header and the 2nd line to 10 lines tread as body.
    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
    DOCUMENT_DATA = WA_DOC_CHNG
    PUT_IN_OUTBOX = '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.
    regards,
    srinivas
    <b>*reward for useful answers*</b>

Maybe you are looking for

  • Is it possible to restrict the user from opening the WSDL page in a browser

    Hello All, The user should be able to send requests to the webservice, but not be able to view the wsdl file in the browser. How can we do this in Weblogic 10 ? is this configurable ? We need to do this because, the webservice is going to be exposed

  • Problems in Pro*C installation for Oracle 8.1.7 on Redhat Linux 6.2

    Hello, I have installed Oracle 8.1.7 on Redhat Linux 6.2. After installing Proc and doing necessary changes in pcscfg.cfg file. I tried to compile demo programs. But I am getting following error while compiling. Syntax error at line 368, column 19, f

  • Product information - photoshop elements and photoshop cc

    Dear Sirs! My brother (student - polytechnical school) and I (Student - university) are very interested in your products Photoshop CC and Photoshop Elements 13. What would you recommend and what are the distinctions?  Would there be a possibilty to b

  • SSIS For Each Loop Container

    Hello All, I have some files within sub folders. Below is the layout  C:\Source\01012015\Sample_1.csv C:\Source\01012015\Sample_2.csv C:\Source\02012015\Sample_1.csv C:\Source\02012015\Sample_2.csv C:\Source\03012015\Sample_1.csv C:\Source\03012015\S

  • [INS-20802] Oracle Net Configuration Assistant failed.  During installation

    Solved one problem now encounter another :( What to do? Any help is appreciated. Here is the log. INFO: Started Plugin named: Oracle Net Configuration Assistant INFO: Found associated job INFO: Starting 'Oracle Net Configuration Assistant' INFO: Star