Monday 18 January 2016

Gos_Attachment_upload Through program

*&---------------------------------------------------------------------*
*& Report  ZGOS_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zgos_test.


PARAMETERSp_key TYPE swo_typeid OBLIGATORY,
*p_type TYPE swo_objtyp OBLIGATORY,
p_file TYPE string,"c LENGTH 100 OBLIGATORY,
p_desc TYPE so_obj_des OBLIGATORY.

DATAls_fol_id   TYPE soodk,
      ls_obj_id   TYPE soodk,
      ls_obj_data TYPE sood1,
      ls_folmem_k TYPE sofmk,
      ls_note     TYPE borident,
      ls_object   TYPE borident,
      lv_ep_note  TYPE borident-objkey,
      lv_offset   TYPE i,
      lv_length   LIKE sy-tabix.


DATAit_objhead TYPE STANDARD TABLE OF soli,
      it_content LIKE STANDARD TABLE OF soli,
      wa_content LIKE soli.

ls_object-objkey p_key.
ls_object-objtype 'BUS1006'."p_type.

***TRY.
***    OPEN DATASET p_file FOR INPUT IN BINARY MODE.
***    WHILE sy-subrc = 0.
***      READ DATASET p_file INTO wa_content.
***      APPEND wa_content TO it_content.
***    ENDWHILE.
***    CLOSE DATASET p_file.
***  CATCH cx_sy_file_access_error.
***    MESSAGE 'Error reading file' TYPE 'E'.
***ENDTRY.




CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    filename   p_file
    filetype   'BIN'
  IMPORTING
    filelength lv_length
*   HEADER     =
  TABLES
    data_tab   it_content.





CALL FUNCTION 'SO_CONVERT_CONTENTS_BIN'
  EXPORTING
    it_contents_bin it_content[]
  IMPORTING
    et_contents_bin it_content[].

CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET'
  EXPORTING
    region    'B'
  IMPORTING
    folder_id ls_fol_id
  EXCEPTIONS
    OTHERS    1.

ls_obj_data-objsns 'O'.
ls_obj_data-objla sy-langu.
ls_obj_data-objdes p_desc.
lv_offset strlenp_file 3.
ls_obj_data-file_ext p_file+lv_offset(3).
ls_obj_data-objlen linesit_content 255.

CALL FUNCTION 'SO_OBJECT_INSERT'
  EXPORTING
    folder_id             ls_fol_id
    object_type           'EXT'
    object_hd_change      ls_obj_data
  IMPORTING
    object_id             ls_obj_id
  TABLES
    objhead               it_objhead
    objcont               it_content
  EXCEPTIONS
    active_user_not_exist 35
    folder_not_exist      6
    object_type_not_exist 17
    owner_not_exist       22
    parameter_error       23
    OTHERS                1000.

IF sy-subrc AND ls_object-objkey IS NOT INITIAL.
  ls_folmem_k-foltp ls_fol_id-objtp.
  ls_folmem_k-folyr ls_fol_id-objyr.
  ls_folmem_k-folno ls_fol_id-objno.
  ls_folmem_k-doctp ls_obj_id-objtp.
  ls_folmem_k-docyr ls_obj_id-objyr.
  ls_folmem_k-docno ls_obj_id-objno.
  lv_ep_note ls_folmem_k.
  ls_note-objtype 'MESSAGE'.
  ls_note-objkey lv_ep_note.
  CALL FUNCTION 'BINARY_RELATION_CREATE_COMMIT'
    EXPORTING
      obj_rolea    ls_object
      obj_roleb    ls_note
      relationtype 'ATTA'
    EXCEPTIONS
      OTHERS       1.
ELSE.
  MESSAGE 'Not OK' TYPE 'I'.
  RETURN.
ENDIF.

IF sy-subrc 0.
  MESSAGE 'OK' TYPE 'I'.
ELSE.
  MESSAGE 'Not OK' TYPE 'I'.
ENDIF.