Skip to Content
avatar image
Former Member

TIFF file conversion

Hi All ,

I need to read a TIFF file from Application server and then need to display as an attachment . When i am using RAW type for attachment and attaching a DOC file it is displaying in SAP but for TIFF file I am getting all the junk data on the screen,

So do I need to convert this data before attaching ? If yes please suggest me how to do it.

Thanks

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • avatar image
    Former Member
    Nov 01, 2007 at 04:11 AM

    REPORT yjncMimeTest. " the MIME way

    DATA: o_mr_api TYPE REF TO if_mr_api.

    DATA: BEGIN OF graphic_table OCCURS 0,

    line(255) TYPE x,

    END OF graphic_table.

    DATA: graphic_size TYPE i.

    DATA : mycontainer TYPE REF TO cl_gui_custom_container .

    DATA : ok_code LIKE sy-ucomm ,

    save_ok LIKE sy-ucomm .

    DATA: graphic_url(255).

    DATA: image TYPE REF TO cl_gui_picture.

    DATA: l_graphic_xstr TYPE xstring,

    l_graphic_conv TYPE i,

    l_graphic_offs TYPE i.

    START-OF-SELECTION.

    IF o_mr_api IS INITIAL.

    o_mr_api = cl_mime_repository_api=>if_mr_api~get_api( ).

    ENDIF.

    CALL METHOD o_mr_api->get

    EXPORTING

    i_url = 'sap/public/zjnc/jbln.jpg'

    IMPORTING

    e_content = l_graphic_xstr

    EXCEPTIONS

    parameter_missing = 1

    error_occured = 2

    not_found = 3

    permission_failure = 4

    OTHERS = 5.

    • current will hold the image in a XSTRING var

    CLEAR graphic_url.

    graphic_size = XSTRLEN( l_graphic_xstr ).

    CHECK graphic_size > 0.

    l_graphic_conv = graphic_size.

    l_graphic_offs = 0.

    WHILE l_graphic_conv > 255.

    graphic_table-line = l_graphic_xstr+l_graphic_offs(255).

    APPEND graphic_table.

    l_graphic_offs = l_graphic_offs + 255.

    l_graphic_conv = l_graphic_conv - 255.

    ENDWHILE.

    graphic_table-line = l_graphic_xstr+l_graphic_offs(l_graphic_conv).

    APPEND graphic_table.

    CALL FUNCTION 'DP_CREATE_URL'

    EXPORTING

    type = 'IMAGE'

    subtype = 'GIF'

    TABLES

    data = graphic_table[]

    CHANGING

    url = graphic_url

    EXCEPTIONS

    dp_invalid_parameter = 1

    dp_error_put_table = 2

    dp_error_general = 3

    OTHERS = 4.

    IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    EXIT.

    ENDIF.

    • PERFORM f_download_blob.

    CALL SCREEN 100 .

    &;----


    *&; Module STATUS_0100 OUTPUT

    &;----


    MODULE status_0100 OUTPUT.

    SET PF-STATUS 'STATUS100'.

    SET TITLEBAR 'TITLEBAR100'.

    ENDMODULE. " STATUS_0100 OUTPUT

    &;----


    *&; Module prepare_controls OUTPUT

    &;----


    MODULE prepare_controls OUTPUT.

    IF mycontainer IS INITIAL.

    CREATE OBJECT mycontainer

    EXPORTING

    container_name = 'MCONTAINER'

    EXCEPTIONS

    OTHERS = 1.

    CASE sy-subrc.

    WHEN 0.

    WHEN OTHERS.

    RAISE cntl_error.

    ENDCASE.

    ENDIF.

    IF graphic_url IS NOT INITIAL AND image IS INITIAL.

    PERFORM f_pic_display.

    EXIT.

    ENDIF.

    ENDMODULE. " prepare_controls OUTPUT

    &;----


    *&; Module USER_COMMAND_0100 INPUT

    &;----


    MODULE user_command_0100 INPUT.

    save_ok = ok_code .

    CLEAR ok_code .

    IF save_ok = 'EXIT' .

    LEAVE TO SCREEN 0.

    ENDIF .

    ENDMODULE. " USER_COMMAND_0100

    &----


    *& Form f_pic_display

    &----


    FORM f_pic_display.

    CREATE OBJECT image

    EXPORTING

    parent = mycontainer.

    CALL METHOD image->load_picture_from_url

    EXPORTING

    url = graphic_url.

    image->set_display_mode( image->display_mode_normal_center ).

    cl_gui_cfw=>flush( ).

    cl_gui_cfw=>update_view( ).

    ENDFORM. "f_pic_display

    *================================================================================

    REPORT yjncbdstest. " the BDS way

    TYPE-POOLS: sbdst, abap.

    ======================================================================

    • DATA DECLARATIONS

    ======================================================================

    DATA : viewer TYPE REF TO i_oi_document_viewer .

    DATA : mycontainer TYPE REF TO cl_gui_custom_container .

    DATA : edurl(2048).

    CONSTANTS : buttonselected VALUE 'X' .

    DATA : ok_code LIKE sy-ucomm ,

    save_ok LIKE sy-ucomm .

    • For uploading Files to BDS

    DATA: BEGIN OF itab OCCURS 0,

    raw TYPE sdok_sdatx,

    END OF itab.

    DATA: filesize TYPE i,

    filename TYPE string,

    myext TYPE string.

    DATA: myclassname TYPE sbdst_classname,

    myclasstype TYPE sbdst_classtype,

    mymimetype TYPE bapicompon-mimetype,

    mycomponents TYPE sbdst_components WITH HEADER LINE,

    myfiles TYPE sbdst_files WITH HEADER LINE,

    mysignature TYPE sbdst_signature WITH HEADER LINE,

    excluding TYPE sbdst_excluding WITH HEADER LINE,

    myquery TYPE sbdst_query WITH HEADER LINE,

    myuris TYPE sbdst_uri WITH HEADER LINE.

    DATA: graphic_url(255).

    DATA: image TYPE REF TO cl_gui_picture.

    DATA: len TYPE i,

    offset TYPE i,

    wlen TYPE i,

    woff TYPE i.

    • -------------------------------------------------------------------

    • 2 KEYWORDS

    • -------------------------------------------------------------------

    DATA: key_1 LIKE bapibds01-key_word,

    key_2 LIKE bapibds01-key_word.

    ======================================================================

    • SELECTION SCREEN DEFAULT

    ======================================================================

    • -------------------------------------------------------------------

    • Frame of Program Options ; TEXT-002 = 'Program Options' .

    • -------------------------------------------------------------------

    SELECTION-SCREEN BEGIN OF BLOCK action_a WITH FRAME TITLE text-002 .

    PARAMETERS: upload RADIOBUTTON GROUP navs DEFAULT 'X',

    get_url RADIOBUTTON GROUP navs,

    downsngl RADIOBUTTON GROUP navs,

    navigato RADIOBUTTON GROUP navs,

    showimg RADIOBUTTON GROUP navs.

    SELECTION-SCREEN END OF BLOCK action_a .

    SELECTION-SCREEN BEGIN OF BLOCK action_b WITH FRAME TITLE text-002 .

    PARAMETERS: p_file TYPE rlgrap-filename,

    p_mime TYPE bapicompon-mimetype,

    p_class TYPE sbdst_classname.

    SELECTION-SCREEN END OF BLOCK action_b.

    ======================================================================

    INITIALIZATION .

    ======================================================================

    • t_upload = '1 Upload File to BDS' .

    • t_url = '2 Show from URL' .

    • t_single = '3 Download File from BDS' .

    • t_navi = '4 Show Navigator' .

    • t_show = '5 Show Image' .

    • At selection screen

    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

    CALL FUNCTION 'F4_FILENAME'

    EXPORTING

    field_name = 'P_FILE'

    IMPORTING

    file_name = p_file.

    ======================================================================

    START-OF-SELECTION .

    ======================================================================

    MOVE p_class TO: myclassname, key_1.

    MOVE 'OT' TO myclasstype.

    CLEAR myfiles.

    MOVE '1' TO: myfiles-doc_count, myfiles-comp_count.

    MOVE p_file TO filename.

    COMPUTE len = STRLEN( filename ).

    DO len TIMES.

    offset = len - sy-index.

    IF filename+offset(1) = '.'.

    woff = offset + 1.

    wlen = len - woff.

    MOVE filename+woff(wlen) TO myext.

    ENDIF.

    IF filenameoffset(1) = '\' OR filenameoffset(1) = '/'.

    woff = offset + 1.

    wlen = len - woff.

    MOVE filename+woff(wlen) TO myfiles-filename.

    wlen = offset.

    MOVE filename+0(wlen) TO myfiles-directory.

    EXIT.

    ENDIF.

    ENDDO.

    TRANSLATE myext TO UPPER CASE.

    CASE myext.

    WHEN 'XLS'.

    MOVE 'application/vnd.ms-excel' TO mymimetype.

    WHEN 'DOC'.

    MOVE 'application/msword' TO mymimetype.

    WHEN 'PPT'.

    MOVE 'application/vnd.ms-powerpoint' TO mymimetype.

    WHEN 'PDF'.

    MOVE 'application/pdf' TO mymimetype.

    WHEN 'JPG'.

    MOVE 'image/jpeg' TO mymimetype.

    WHEN 'GIF'.

    MOVE 'image/gif' TO mymimetype.

    WHEN 'BMP'.

    MOVE 'image/bmp' TO mymimetype.

    WHEN 'TIF'.

    MOVE 'image/tiff' TO mymimetype.

    WHEN 'ZIP'.

    MOVE 'application/zip' TO mymimetype.

    WHEN 'RTF'.

    MOVE 'application/rtf' TO mymimetype.

    WHEN 'TXT'.

    MOVE 'text/plain' TO mymimetype.

    ENDCASE.

    IF mymimetype IS INITIAL.

    MOVE p_mime TO mymimetype.

    ENDIF.

    MOVE mymimetype TO: myfiles-mimetype, key_2.

    IF myfiles-filename IS NOT INITIAL.

    IF myfiles-directory IS INITIAL.

    MOVE '/' TO myfiles-directory.

    ENDIF.

    APPEND myfiles.

    ENDIF.

    CASE buttonselected .

    • -------> UPLOAD DOCUMENT IN BUSINESS DOCUMENT NAVIGATOR

    <----


    WHEN upload.

    PERFORM build_keyword_criteria .

    IF myfiles-filename IS INITIAL.

    MESSAGE e999(zmsgs) WITH 'File Name is Mandatory'.

    ENDIF.

    IF mymimetype IS INITIAL.

    MESSAGE e999(zmsgs) WITH 'Mime Type is Mandatory'.

    ENDIF.

    CALL METHOD cl_bds_document_set=>create_with_files

    EXPORTING

    classname = myclassname

    classtype = myclasstype

    CHANGING

    files = myfiles[]

    signature = mysignature[]

    EXCEPTIONS

    internal_error = 1

    error_kpro = 2

    parameter_error = 3

    not_allowed = 4

    not_authorized = 5

    nothing_found = 6

    OTHERS = 7.

    IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.

    MESSAGE i999(zmsgs) WITH 'Upload Successful'.

    • ---- -> Display Image ACCORDING TO KEYWORD CRITERIA < --------

    WHEN downsngl .

    PERFORM build_keyword_criteria .

    IF myfiles-filename IS INITIAL.

    MESSAGE e999(zmsgs) WITH 'File Name is Mandatory'.

    ENDIF.

    CALL METHOD cl_bds_document_set=>get_with_url

    EXPORTING

    classname = myclassname

    classtype = myclasstype

    url_lifetime = 'T'

    CHANGING

    uris = myuris[]

    signature = mysignature[].

    CALL METHOD cl_bds_document_set=>get_with_files

    EXPORTING

    classname = myclassname

    classtype = myclasstype

    CHANGING

    files = myfiles[]

    signature = mysignature[]

    EXCEPTIONS

    nothing_found = 1

    error_kpro = 2

    internal_error = 3

    parameter_error = 4

    not_authorized = 5

    not_allowed = 6.

    IF sy-subrc NE 0 .

    MESSAGE i999(zmsgs) WITH 'ERROR DOWNLOADING FILE' sy-subrc .

    ENDIF .

    • ---- -> FIND A FILE SHOW INPLACE FROM SAP R3 URL < --------

    WHEN get_url .

    PERFORM build_keyword_criteria.

    CALL METHOD cl_bds_document_set=>get_with_url

    EXPORTING

    classname = myclassname

    classtype = myclasstype

    url_lifetime = 'T'

    CHANGING

    uris = myuris[]

    signature = mysignature[].

    CALL SCREEN 100 .

    • -------> SHOW DOCUMENTS IN BUSINESS DOCUMENT NAVIGATOR

    <----


    WHEN navigato .

    PERFORM build_keyword_criteria.

    CALL METHOD cl_bds_document_set=>call_navigator

    EXPORTING

    classname = myclassname

    classtype = myclasstype

    CHANGING

    excluding = excluding[]

    signature = mysignature[].

    • ---- -> SHOW IMAGE if image/jpeg < ----

    WHEN showimg .

    PERFORM build_keyword_criteria.

    CALL METHOD cl_bds_document_set=>get_with_table

    EXPORTING

    classname = myclassname

    classtype = myclasstype

    CHANGING

    content = itab[]

    EXCEPTIONS

    error_kpro = 1

    internal_error = 2

    nothing_found = 3

    no_content = 4

    parameter_error = 5

    not_authorized = 6

    not_allowed = 7

    OTHERS = 8.

    IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.

    PERFORM f_display_pic.

    ENDCASE .

    &;----


    *&; Form BUILD_KEYWORD_CRITERIA

    &;----


    FORM build_keyword_criteria.

    MOVE '1' TO: mysignature-doc_count, mysignature-comp_count.

    MOVE: 'BDS_KEYWORD' TO mysignature-prop_name,

    key_1 TO mysignature-prop_value.

    APPEND mysignature.

    MOVE '1' TO: mysignature-doc_count, mysignature-comp_count.

    MOVE: 'BDS_KEYWORD' TO mysignature-prop_name,

    key_2 TO mysignature-prop_value.

    APPEND mysignature.

    ENDFORM. " BUILD_KEYWORD_CRITERIA

    &;----


    *&; Module STATUS_0100 OUTPUT

    &;----


    MODULE status_0100 OUTPUT.

    SET PF-STATUS 'STATUS100'.

    SET TITLEBAR 'TITLEBAR100'.

    ENDMODULE. " STATUS_0100 OUTPUT

    &;----


    *&; Module prepare_controls OUTPUT

    &;----


    MODULE prepare_controls OUTPUT.

    IF mycontainer IS INITIAL.

    CREATE OBJECT mycontainer

    EXPORTING

    container_name = 'MCONTAINER'

    EXCEPTIONS

    OTHERS = 1.

    CASE sy-subrc.

    WHEN 0.

    WHEN OTHERS.

    RAISE cntl_error.

    ENDCASE.

    ENDIF.

    IF graphic_url IS NOT INITIAL AND image IS INITIAL.

    PERFORM f_pic_display.

    EXIT.

    ENDIF.

    IF viewer IS INITIAL.

    CALL METHOD c_oi_container_control_creator=>get_document_viewer

    IMPORTING

    viewer = viewer

    EXCEPTIONS

    unsupported_platform = 1.

    IF sy-subrc NE 0.

    MESSAGE i999(zmsg) WITH 'Unknown error'.

    ENDIF.

    CALL METHOD viewer->init_viewer

    EXPORTING

    parent = mycontainer

    EXCEPTIONS

    cntl_error = 1

    cntl_install_error = 2

    dp_install_error = 3

    dp_error = 4.

    IF sy-subrc NE 0.

    MESSAGE i999(zmsgs) WITH 'Unknown error'.

    ENDIF.

    ENDIF.

    CLEAR edurl.

    SORT myuris BY uri_count DESCENDING .

    READ TABLE myuris INDEX 1 .

    IF sy-subrc = 0 .

    edurl = myuris-uri .

    ENDIF .

    IF NOT edurl IS INITIAL.

    CALL METHOD viewer->view_document_from_url

    EXPORTING

    document_url = edurl

    show_inplace = 'X'

    EXCEPTIONS

    cntl_error = 1

    not_initialized = 2

    dp_error_general = 3

    invalid_parameter = 4.

    IF sy-subrc NE 0.

    MESSAGE i999(zmsgs) WITH 'Unknown error'.

    ENDIF.

    ENDIF.

    ENDMODULE. " prepare_controls OUTPUT

    &;----


    *&; Module USER_COMMAND_0100 INPUT

    &;----


    MODULE user_command_0100 INPUT.

    save_ok = ok_code .

    CLEAR ok_code .

    IF save_ok = 'EXIT' .

    LEAVE TO SCREEN 0.

    ENDIF .

    ENDMODULE. " USER_COMMAND_0100

    &----


    *& Form F_upload_blob

    &----


    FORM f_upload_blob.

    MOVE p_file TO filename.

    CALL FUNCTION 'GUI_UPLOAD'

    EXPORTING

    filetype = 'BIN'

    filename = filename

    IMPORTING

    filelength = filesize

    TABLES

    data_tab = itab

    EXCEPTIONS

    file_open_error = 1

    file_read_error = 2

    no_batch = 3

    gui_refuse_filetransfer = 4

    invalid_type = 5

    no_authority = 6

    unknown_error = 7

    bad_data_format = 8

    header_not_allowed = 9

    separator_not_allowed = 10

    header_too_long = 11

    unknown_dp_error = 12

    access_denied = 13

    dp_out_of_memory = 14

    disk_full = 15

    dp_timeout = 16

    OTHERS = 17.

    IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.

    ENDFORM. " F_upload_blob

    &----


    *& Form F_download_blob

    &----


    FORM f_download_blob.

    MOVE p_file TO filename.

    CALL FUNCTION 'GUI_DOWNLOAD'

    EXPORTING

    filetype = 'BIN'

    filename = filename

    IMPORTING

    filelength = filesize

    TABLES

    data_tab = itab

    EXCEPTIONS

    file_write_error = 1

    no_batch = 2

    gui_refuse_filetransfer = 3

    invalid_type = 4

    no_authority = 5

    unknown_error = 6

    header_not_allowed = 7

    separator_not_allowed = 8

    filesize_not_allowed = 9

    header_too_long = 10

    dp_error_create = 11

    dp_error_send = 12

    dp_error_write = 13

    unknown_dp_error = 14

    access_denied = 15

    dp_out_of_memory = 16

    disk_full = 17

    dp_timeout = 18

    file_not_found = 19

    dataprovider_exception = 20

    control_flush_error = 21

    OTHERS = 22.

    IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.

    ENDFORM. " F_download_blob

    &----


    *& Form f_display_pic

    &----


    FORM f_display_pic.

    CLEAR graphic_url.

    CALL FUNCTION 'DP_CREATE_URL'

    EXPORTING

    type = 'IMAGE'

    subtype = 'GIF'

    TABLES

    data = itab[]

    CHANGING

    url = graphic_url

    EXCEPTIONS

    dp_invalid_parameter = 1

    dp_error_put_table = 2

    dp_error_general = 3

    OTHERS = 4.

    IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    EXIT.

    ENDIF.

    • PERFORM f_download_blob.

    CALL SCREEN 100 .

    ENDFORM. "f_display_pic

    &----


    *& Form f_pic_display

    &----


    FORM f_pic_display.

    CREATE OBJECT image

    EXPORTING

    parent = mycontainer.

    CALL METHOD image->load_picture_from_url

    EXPORTING

    url = graphic_url.

    image->set_display_mode( image->display_mode_normal_center ).

    cl_gui_cfw=>flush( ).

    cl_gui_cfw=>update_view( ).

    ENDFORM. "f_pic_display

    • CREATE FROM TABLE

    *==================

    • PERFORM build_keyword_criteria .

    *

    • PERFORM f_upload_blob.

    *

    • MOVE 1 TO mycomponents-doc_count.

    • MOVE 1 TO mycomponents-comp_count.

    • MOVE mymimetype TO mycomponents-mimetype.

    • APPEND mycomponents.

    *

    • CALL METHOD cl_bds_document_set=>create_with_table

    • EXPORTING

    • classname = myclassname

    • classtype = myclasstype

    • components = mycomponents[]

    • content = itab[]

    • CHANGING

    • signature = mysignature[]

    • EXCEPTIONS

    • internal_error = 1

    • error_kpro = 2

    • parameter_error = 3

    • not_authorized = 4

    • not_allowed = 5

    • nothing_found = 6

    • OTHERS = 7.

    *

    • 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 help for your ABAP problems

    Add comment
    10|10000 characters needed characters exceeded