cancel
Showing results for 
Search instead for 
Did you mean: 

Upload file from custom fiori app to IW52 TCode - Error "File damaged or corrupted"

0 Kudos

HI all,

I am trying to upload file from custom Fiori app to TCode IW52.

File uploaded successfully but when I try to download it through IW53, it show error as file damaged or

corrupted. If its .txt file its working, all other format like pdf are showing as damaged.

Please help me ..

captureerror.png

My Backend code******************

BEGIN OF ls_filemetadata,
filename type string,
mimetype type string,
END OF ls_filemetadata.
field-symbols:<fs_key> type /iwbep/s_mgw_name_value_pair.
read table it_key_tab assigning <fs_key> index 1.


*******************************************************************************************************

*CALL FUNCTION '/RUNUP/DECODE_BASE64'
* EXPORTING
* iv_base64 = is_media_resource-value
* IMPORTING
* ev_file_data = lv_file_data.


*————————————————————-
* Constants
*————————————————————-
CONSTANTS : c_bus2012 TYPE swo_objtyp VALUE 'BUS2080', " bus NUMBER FOR PO
c_ext(3) TYPE c VALUE 'EXT',
c_atta(4) TYPE c VALUE 'ATTA',
c_b(1) TYPE c VALUE 'B',
c_x(1) TYPE c VALUE 'X',
c_o(1) TYPE c VALUE 'O'.

*———————————————————-
* Data declaration
*————————————————————-

DATA: it_content TYPE solix_tab, " content OF FILE STORAGE
it_objhead TYPE STANDARD TABLE OF soli,
ls_objhead TYPE soli,
wa_folmem_k TYPE sofmk, "folder content DATA
wa_note TYPE borident, " bor OBJECT IDENTIFIER
wa_object TYPE borident,
wa_obj_id TYPE soodk, "DEFINITION OF an OBJECT (key part)
wa_fol_id TYPE soodk,
wa_obj_data TYPE sood1, " OBJECT DEFINITION AND CHANGE ATTRIBUTES
lv_ep_note TYPE borident-objkey, "bor OBJECT KEY
lv_extension TYPE c LENGTH 4, "FILE EXTENSION ONLY
lv_so_num TYPE ebeln, "PO NUMBER
lv_file_des TYPE so_obj_des, " file name
lv_tmp_fn TYPE string.
"DATA object_id TYPE zif_zodata_get_po_attachment=>sibfboriid.
"DATA object_type TYPE zif_zodata_get_po_attachment=>sibftypeid.
"DATA object_cat TYPE zif_zodata_get_po_attachment=>sibfcatid.
"DATA document_id TYPE zif_zodata_get_po_attachment=>documentid.
DATA ls_converted_keys LIKE er_entity.
DATA lv_source_entity_set_name TYPE string.
DATA lo_facade TYPE REF TO /iwbep/if_mgw_dp_facade.
DATA lt_request_header TYPE tihttpnvp.
DATA ls_request_header TYPE ihttpnvp.
"DATA: ls_key_tab LIKE LINE OF it_key_tab.
TYPES: BEGIN OF ty_filemetadata,
filename TYPE string,
mimetype TYPE string,
END OF ty_filemetadata.

"DATA: ls_filemetadata TYPE ty_filemetadata.

DATA lv_extensions TYPE char10.
DATA lv_file TYPE char255.
DATA lv_po_num TYPE QMNUM.

*/Refresh data
REFRESH: it_content[], it_objhead[].

****************
*/Get folder id
CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET'
EXPORTING
region = c_b
IMPORTING
folder_id = wa_fol_id
EXCEPTIONS
communication_failure = 1
owner_not_exist = 2
system_failure = 3
x_error = 4
OTHERS = 5.

*To get the extension from the file name

SPLIT iv_slug AT '/' INTO lv_po_num lv_file.
CALL FUNCTION 'TRINT_FILE_GET_EXTENSION'
EXPORTING
filename = lv_file
uppercase = 'X'
IMPORTING
extension = lv_extensions.




IF lv_po_num IS NOT INITIAL.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

input = lv_po_num

IMPORTING


output = lv_po_num.

ENDIF.

*************************************************88
* To convert the file content to binary
DATA: lv_filesize TYPE i,
lv_base64 TYPE string, "Base64
lv_string TYPE string, "Base64
lv_binary TYPE xstring.

CALL FUNCTION 'SCMS_BASE64_ENCODE_STR'
EXPORTING
input = is_media_resource-value
IMPORTING
output = lv_base64.
* *Decode Base64 String to String
CALL METHOD cl_http_utility=>if_http_utility~decode_base64
EXPORTING
encoded = lv_base64
RECEIVING
decoded = lv_string.


CALL FUNCTION 'SSFC_BASE64_DECODE'
EXPORTING
b64data = lv_string
* B64LENG =
* B_CHECK =
IMPORTING
bindata = lv_binary
EXCEPTIONS
ssf_krn_error = 1
ssf_krn_noop = 2
ssf_krn_nomemory = 3
ssf_krn_opinv = 4
ssf_krn_input_data_error = 5
ssf_krn_invalid_par = 6
ssf_krn_invalid_parlen = 7
OTHERS = 8.

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_binary "is_media_resource-value “xstring
append_to_table = c_x
TABLES
binary_tab = it_content. "binary.


*************************************************
* to convert binary (SOLIXTAB) to SOLITAB
DATA lt_data TYPE soli_tab.
CALL FUNCTION 'SO_SOLIXTAB_TO_SOLITAB'
EXPORTING
ip_solixtab = it_content
IMPORTING
ep_solitab = lt_data.

*******************************************************
* To create the document object
*/ Assigning Valuse to the Standard Strucuture Fields
wa_object-objkey = lv_po_num. " PO number
wa_object-objtype = c_bus2012. " bus number
*–
wa_obj_data-objsns = c_o. " sensitivity of object (o-standard)
wa_obj_data-objla = sy-langu. " language
wa_obj_data-objdes = lv_file. "iv_slug. ” slug value – description
wa_obj_data-file_ext = lv_extensions. " file extension
* wa_obj_data-objlen = lines( it_content ) * 255.
wa_obj_data-objlen = lines( lt_data ) * 255.
wa_obj_data-objnam = lv_file.

CONCATENATE '&SO_FILENAME=' lv_file INTO ls_objhead-line.
APPEND ls_objhead TO it_objhead.

ls_objhead-line = '&SO_FORMAT=BIN'.
APPEND ls_objhead TO it_objhead.


* / Insert data
CALL FUNCTION 'SO_OBJECT_INSERT'
EXPORTING
folder_id = wa_fol_id
object_type = c_ext
object_hd_change = wa_obj_data
IMPORTING
object_id = wa_obj_id
TABLES
objhead = it_objhead
objcont = lt_data
EXCEPTIONS
active_user_not_exist = 1
communication_failure = 2
component_not_available = 3
dl_name_exist = 4
folder_not_exist = 5
folder_no_authorization = 6
object_type_not_exist = 7
operation_no_authorization = 8
owner_not_exist = 9
parameter_error = 10
substitute_not_active = 11
substitute_not_defined = 12
system_failure = 13
x_error = 14
OTHERS = 15.


"*************************************************
* To link the document attachment and business object
If sy-subrc = 0 AND wa_object-objkey IS NOT INITIAL.
wa_folmem_k-foltp = wa_fol_id-objtp.
wa_folmem_k-folyr = wa_fol_id-objyr.
wa_folmem_k-folno = wa_fol_id-objno.
* /Please note: wa_fol_id and wa_obj_id are different work areas
wa_folmem_k-doctp = wa_obj_id-objtp.
wa_folmem_k-docyr = wa_obj_id-objyr.
wa_folmem_k-docno = wa_obj_id-objno.
lv_ep_note = wa_folmem_k.
wa_note-objtype = 'MESSAGE'.
wa_note-objkey = lv_ep_note.

* /Link it
CALL FUNCTION 'BINARY_RELATION_CREATE_COMMIT'
EXPORTING
obj_rolea = wa_object
obj_roleb = wa_note
relationtype = c_atta
EXCEPTIONS
no_model = 1
internal_error = 2
unknown = 3
OTHERS = 4.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
IF sy-subrc EQ 0.
COMMIT WORK.

ENDIF.

Accepted Solutions (0)

Answers (0)