Hi All,
I am trying to upload a image from base64 string to iw52.
i create a FM which will accept a base64 and will convet into binary.
everything is fine till 'SO_DOCUMENT_INSERT_API1' .. this FM is giving subrc = 5 because it is not able to make and entry in SOFFCONT1.
Do i have to enable somethign to do this or anything is missing in my code?
Please help me.
Thanks
pravin
here is my code.
DATA:
lf_folder TYPE soodk,
lf_folderid TYPE soobjinfi1-object_id,
lf_size TYPE i,
lt_content TYPE TABLE OF solisti1,
ls_document_data TYPE sodocchgi1,
lf_doctype TYPE soodk-objtp,
lv_notif type qmnum,
lf_docinfo TYPE sofolenti1,
lt_words TYPE TABLE OF string,
lf_token TYPE string,
lf_att_key TYPE SOODK-OBJTP,
lf_picture TYPE xstring.
*Data :
*lo_object_a TYPE SIBFLPORB,
*lo_object_b TYPE SIBFLPORB.
Data :
lo_object_a TYPE BORIDENT,
lo_object_b TYPE BORIDENT.
lv_notif = '000300000000'.
*lv_string = i_string.
CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET'
EXPORTING
region = 'B'
IMPORTING
folder_id = lf_folder.
CALL FUNCTION 'SSFC_BASE64_DECODE'
EXPORTING
b64data = lv_STRING
IMPORTING
bindata = lf_picture.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lf_picture
append_to_table = 'X'
IMPORTING
output_length = lf_size
TABLES
binary_tab = lt_content.
lf_folderid = lf_folder.
ls_document_data-obj_name = 'ATTACHMENT'.
CONCATENATE 'image' lv_notif INTO ls_document_data-obj_descr.
ls_document_data-obj_langu = sy-langu.
ls_document_data-doc_size = lf_size.
ls_document_data-no_change = 'X'.
lf_doctype = 'jpg'.
lf_att_key = lf_doctype.
CALL FUNCTION 'SO_DOCUMENT_INSERT_API1'
EXPORTING
FOLDER_ID = lf_folderid
DOCUMENT_DATA = ls_document_data
DOCUMENT_TYPE = lf_att_key
* IV_VSI_PROFILE =
IMPORTING
DOCUMENT_INFO = lf_docinfo
TABLES
OBJECT_HEADER = lt_content
* OBJECT_CONTENT =
* CONTENTS_HEX =
* OBJECT_PARA =
* OBJECT_PARB =
* ET_VSI_ERROR =
EXCEPTIONS
FOLDER_NOT_EXIST = 1
DOCUMENT_TYPE_NOT_EXIST = 2
OPERATION_NO_AUTHORIZATION = 3
PARAMETER_ERROR = 4
X_ERROR = 5
ENQUEUE_ERROR = 6
OTHERS = 7
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
lo_object_a-OBJKEY = lv_notif.
lo_object_a-OBJTYPE = 'BUS2038'.
lo_object_a-LOGSYS = 'BO'.
* lo_object_a-instid = lv_notif.
* lo_object_a-typeid = 'BUS2038'.
* lo_object_a-catid = 'BO'.
* lo_object_b-instid = lf_att_key.
* lo_object_b-typeid = 'MESSAGE'.
* lo_object_b-catid = 'BO'.
lo_object_b-OBJKEY = lf_att_key.
lo_object_b-OBJTYPE = 'MESSAGE'.
lo_object_b-LOGSYS = 'BO'.
* TRY.
* CALL METHOD cl_binary_relation=>create_link
* EXPORTING
* is_object_a = lo_object_a
* is_object_b = lo_object_b
* ip_reltype = 'ATTA'.
* ENDTRY.
*
*
CALL FUNCTION 'BINARY_RELATION_CREATE_COMMIT'
EXPORTING
OBJ_ROLEA = lo_object_a
OBJ_ROLEB = lo_object_b
RELATIONTYPE = 'ÁTTA'
* IMPORTING
* BINREL =
* TABLES
* BINREL_ATTRIB =
* EXCEPTIONS
* NO_MODEL = 1
* INTERNAL_ERROR = 2
* UNKNOWN = 3
* OTHERS = 4
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.