04-25-2011 9:11 AM
Hi Gurus,
Correct me , if the below code is correct , if am converting the picture to xstring format, but at front end if i am passing the output of the FM , we weren't able to retreive the picture from this HEX_TAB[]
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(DOCUMENT_ID) LIKE SOFOLENTI1-DOC_ID
*" VALUE(FILTER) LIKE SOFILTERI1 STRUCTURE SOFILTERI1 DEFAULT
*" 'X '
*" EXPORTING
*" VALUE(DOCUMENT_DATA) LIKE SOFOLENTI1 STRUCTURE SOFOLENTI1
*" VALUE(XSTRING_DATA) TYPE XSTRING
*" TABLES
*" OBJECT_HEADER STRUCTURE SOLISTI1 OPTIONAL
*" OBJECT_CONTENT STRUCTURE SOLISTI1 OPTIONAL
*" OBJECT_PARA STRUCTURE SOPARAI1 OPTIONAL
*" OBJECT_PARB STRUCTURE SOPARBI1 OPTIONAL
*" ATTACHMENT_LIST STRUCTURE SOATTLSTI1 OPTIONAL
*" RECEIVER_LIST STRUCTURE SORECLSTI1 OPTIONAL
*" CONTENTS_HEX STRUCTURE SOLIX OPTIONAL
*" HEX_TAB STRUCTURE ZLINE OPTIONAL
*" EXCEPTIONS
*" DOCUMENT_ID_NOT_EXIST
*" OPERATION_NO_AUTHORIZATION
*" X_ERROR
*"----------------------------------------------------------------------
CALL FUNCTION 'SO_DOCUMENT_READ_API1'
EXPORTING
DOCUMENT_ID = DOCUMENT_ID
FILTER = FILTER
IMPORTING
DOCUMENT_DATA = DOCUMENT_DATA
TABLES
OBJECT_HEADER = OBJECT_HEADER
OBJECT_CONTENT = OBJECT_CONTENT
* OBJECT_PARA = OBJECT_PARA
* OBJECT_PARB = OBJECT_PARB
* ATTACHMENT_LIST = ATTACHMENT_LIST
* RECEIVER_LIST = RECEIVER_LIST
EXCEPTIONS
DOCUMENT_ID_NOT_EXIST = 999
OPERATION_NO_AUTHORIZATION = 21
COMMUNICATION_FAILURE = 71
SYSTEM_FAILURE = 72
OTHERS = 4.
* CASE SY-SUBRC.
* WHEN 'OK'.
* EXIT.
* WHEN 'COMMUNICATION_FAILURE'.
* MESSAGE A672(so) WITH 'MESS' RAISING X_ERROR.
* WHEN 999.
* RAISE DOCUMENT_ID_NOT_EXIST.
* WHEN 'SYSTEM_FAILURE'.
* MESSAGE A672(so) WITH 'MESS' RAISING X_ERROR.
* WHEN 'OPERATION_NO_AUTHORIZATION'.
* RAISE OPERATION_NO_AUTHORIZATION.
* WHEN OTHERS.
* RAISE X_ERROR.
* ENDCASE.
* CALL FUNCTION 'SO_CONVERT_CONTENTS_BIN'
* EXPORTING
* it_contents_bin = object_content[]
* IMPORTING
* et_contents_bin = object_content[].
DATA: ASCII_DATA TYPE SOLISTI1, "your data returned by SO_DOCUMENT_READ_API1
STRING_DATA TYPE STRING.
* XSTRING_DATA TYPE XSTRING.
* HEX_TAB TYPE TABLE OF SOLIX.
DATA: BYTES TYPE I.
TYPES : BEGIN OF TY_BINARY,
BINARY_FIELD(1000) TYPE C,
END OF TY_BINARY.
*DATA : LV_XSTRING type XSTRING.
DATA : HEX_TAB1 TYPE TABLE OF TY_BINARY WITH HEADER LINE.
"1. first I will add some example text to it
*ascii_data = OBJECT_CONTENT ."'Some text which will be converted to BIN form'.
CLEAR ASCII_DATA.
LOOP AT OBJECT_CONTENT INTO OBJECT_CONTENT.
CONCATENATE ASCII_DATA OBJECT_CONTENT INTO ASCII_DATA ."IN BYTE MODE.CL_ABAP_CHAR_UTILITIES=>CR_LF"
CLEAR OBJECT_CONTENT.
ENDLOOP.
CLEAR STRING_DATA.
"2. then do convesrion to string
STRING_DATA = ASCII_DATA.
CLEAR XSTRING_DATA.
"3. conversion to xstring
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING
TEXT = STRING_DATA
IMPORTING
BUFFER = XSTRING_DATA.
REFRESH: HEX_TAB.
CLEAR: BYTES.
"4. convesrsion to BIN -> your SOLIX type
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
BUFFER = XSTRING_DATA
* IMPORTING
* OUTPUT_LENGTH = BYTES
TABLES
BINARY_TAB = HEX_TAB1. "here you have results you need.
HEX_TAB[] = HEX_TAB1[].
Thanks
05-12-2011 7:14 AM
Solved using this
/people/siddhartha.jain/blog/2007/01/16/how-to-retrieve-a-generic-object-services-gos-or-sapoffice-document-display-it-in-a-bsp-webdynprojava-application?page=last&x-showcontent=off&x-maxdepth=0
FYI my code is attached
FUNCTION zso_document_read_api1.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(DOCUMENT_ID) LIKE SOFOLENTI1-DOC_ID
*" VALUE(FILTER) LIKE SOFILTERI1 STRUCTURE SOFILTERI1 DEFAULT
*" 'X '
*" EXPORTING
*" VALUE(DOCUMENT_DATA) LIKE SOFOLENTI1 STRUCTURE SOFOLENTI1
*" VALUE(XSTRING_DATA) TYPE XSTRING
*" VALUE(V_LEN_NUM) TYPE I
*" EXCEPTIONS
*" DOCUMENT_ID_NOT_EXIST
*" OPERATION_NO_AUTHORIZATION
*" X_ERROR
*"----------------------------------------------------------------------
DATA: v_len TYPE so_obj_len.
DATA: object_header TYPE TABLE OF solisti1,
object_content TYPE TABLE OF solisti1,
object_hex TYPE TABLE OF solix,
wa_object TYPE solisti1,
input_length TYPE i,
lin TYPE i.
*clearing the variables.
CLEAR: xstring_data, v_len,v_len_num,document_data,lin,input_length.
refresh: object_header, object_content,object_hex.
*Reading object in binary
CALL FUNCTION 'SO_DOCUMENT_READ_API1'
EXPORTING
document_id = document_id
filter = filter
IMPORTING
document_data = document_data
TABLES
object_header = object_header
object_content = object_content
contents_hex = object_hex
EXCEPTIONS
document_id_not_exist = 999
operation_no_authorization = 21
communication_failure = 71
system_failure = 72
OTHERS = 4.
**size of object_hex
DESCRIBE TABLE object_hex LINES lin.
input_length = lin * sy-tleng .
v_len_num = input_length.
*conversion to xstring from binary.
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = v_len_num
IMPORTING
buffer = xstring_data
TABLES
binary_tab = object_hex.
ENDFUNCTION.
Regards Jana