11-01-2007 3:57 AM
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
11-01-2007 4: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