You are on page 1of 3

*&---------------------------------------------------------------------*

*& Report ZFI_CREATE_GOS_IMG_ASSET


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zfi_create_gos_img_asset.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: p_file TYPE localfile. " Application File Path

SELECTION-SCREEN END OF BLOCK b1.

DATA:
li_content TYPE STANDARD TABLE OF soli,
li_objhead TYPE STANDARD TABLE OF soli,
lwa_folmem_k TYPE sofmk,
lwa_note TYPE borident,
lwa_object TYPE borident,
lwa_obj_id TYPE soodk,
lwa_content TYPE soli,
lwa_fol_id TYPE soodk,
lwa_obj_data TYPE sood1,
lv_ep_note TYPE borident-objkey,
lv_lifnr TYPE lifnr,
lv_file TYPE string,
lv_filename TYPE c LENGTH 100, " file name and ext
lv_extension TYPE c LENGTH 4.

REFRESH: li_content[], li_objhead[].

OPEN DATASET p_file FOR INPUT IN BINARY MODE.


IF sy-subrc EQ 0.
WHILE sy-subrc = 0.
READ DATASET p_file INTO lwa_content.
IF sy-subrc NE 0.
EXIT.
ENDIF.
APPEND lwa_content TO li_content.
ENDWHILE.
ENDIF.

CLOSE DATASET p_file.

CALL FUNCTION 'SO_CONVERT_CONTENTS_BIN'


EXPORTING
it_contents_bin = li_content[]
IMPORTING
et_contents_bin = li_content[].

CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET'


EXPORTING
region = 'B'
IMPORTING
folder_id = lwa_fol_id
EXCEPTIONS
communication_failure = 1
owner_not_exist = 2
system_failure = 3
x_error = 4
OTHERS = 5.

lv_file = p_file.

CALL FUNCTION 'CH_SPLIT_FILENAME'


EXPORTING
complete_filename = lv_file
IMPORTING
extension = lv_extension
name_with_ext = lv_filename
EXCEPTIONS
invalid_drive = 1
invalid_path = 2
OTHERS = 3.

IF sy-subrc EQ 0.

CLEAR lwa_content.
CONCATENATE '&so_filename=' lv_filename INTO lwa_content.
APPEND lwa_content TO li_objhead.
CLEAR lwa_content.
ENDIF.

lwa_object-objkey = '800 0000040005570000'.


lwa_object-objtype = 'BUS1022'.

lwa_obj_data-objsns = 'O'.
lwa_obj_data-objla = sy-langu.
lwa_obj_data-objdes = 'Attachment by Ravi Anand'.
lwa_obj_data-file_ext = lv_extension.

TRANSLATE lwa_obj_data-file_ext TO UPPER CASE.


lwa_obj_data-objlen = lines( li_content ) * 255.

CALL FUNCTION 'SO_OBJECT_INSERT'


EXPORTING
folder_id = lwa_fol_id
object_type = 'EXT'
object_hd_change = lwa_obj_data
IMPORTING
object_id = lwa_obj_id
TABLES
objhead = li_objhead
objcont = li_content
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.

IF ( sy-subrc = 0 AND lwa_object-objkey IS NOT INITIAL ).


lwa_folmem_k-foltp = lwa_fol_id-objtp.
lwa_folmem_k-folyr = lwa_fol_id-objyr.
lwa_folmem_k-folno = lwa_fol_id-objno.

lwa_folmem_k-doctp = lwa_obj_id-objtp.
lwa_folmem_k-docyr = lwa_obj_id-objyr.
lwa_folmem_k-docno = lwa_obj_id-objno.

lv_ep_note = lwa_folmem_k.
lwa_note-objtype = 'MESSAGE'.
lwa_note-objkey = lv_ep_note.

CALL FUNCTION 'BINARY_RELATION_CREATE_COMMIT'


EXPORTING
obj_rolea = lwa_object
obj_roleb = lwa_note
relationtype = 'ATTA'
EXCEPTIONS
no_model = 1
internal_error = 2
unknown = 3
OTHERS = 4.

IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
WRITE:/ 'Attached successfully'.
ENDIF.
ELSE.
MESSAGE 'Error while opening file' TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.

You might also like