SAP ABAP CLASES CL FITV GOS

From SapWiki
*&---------------------------------------------------------------------*
*& Report  YTESTURL
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ytestjpg.

types: begin of t_file_line,
           data(2550) type X,
       end of t_file_line.

   data    lt_file_table type TABLE OF t_file_line.
     DATA: l_file_length    TYPE i.
     data lv_content type XSTRING.


       DATA: it_content  LIKE STANDARD TABLE OF soli,
        wa_content  LIKE soli.

       data ls_lporb type sibflporb.
data lv_objtyp type so_obj_tp.
data lt_return_attach type bapirettab.

DATA gt_data TYPE TABLE OF string.

DATA folder_id    TYPE sofdk.
DATA l_title      TYPE sood-objdes.
DATA l_url        TYPE so_url.
DATA rel_doc      TYPE borident.
DATA document_id  TYPE sofmk.
DATA ls_objcont   TYPE soli.
DATA l_tab_size   TYPE i.
DATA l_url_id     TYPE so_url.
DATA l_obj_id     TYPE soodk.
DATA l_obj_data   TYPE sood1.

DATA lt_objhead   TYPE STANDARD TABLE OF soli.
DATA lt_objcont   TYPE STANDARD TABLE OF soli.
DATA lt_urltab    TYPE STANDARD TABLE OF sood-objdes.
DATA ls_borid TYPE borident.

*--------------------------------------------------------------------*
*
*--------------------------------------------------------------------*
PARAMETERS p_file TYPE string LOWER CASE OBLIGATORY.


*--------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
*--------------------------------------------------------------------*
  PERFORM get_file USING p_file.

START-OF-SELECTION.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                      = p_file
   FILETYPE                      = 'BIN'
*   HAS_FIELD_SEPARATOR           = ' '
*   HEADER_LENGTH                 = 0
*   READ_BY_LINE                  = 'X'
*   DAT_MODE                      = ' '
*   CODEPAGE                      = ' '
*   IGNORE_CERR                   = ABAP_TRUE
*   REPLACEMENT                   = '#'
*   CHECK_BOM                     = ' '
*   VIRUS_SCAN_PROFILE            =
*   NO_AUTH_CHECK                 = ' '
 IMPORTING
   FILELENGTH                    =  l_file_length
*   HEADER                        =
    TABLES
      data_tab                      = it_content
 EXCEPTIONS
   file_open_error               = 1
   file_read_error               = 2
   no_batch                      = 3
   gui_refuse_filetransfer       = 4
   invalid_type                  = 5
   no_authority                  = 6
   unknown_error                 = 7
   bad_data_format               = 8
   header_not_allowed            = 9
   separator_not_allowed         = 10
   header_too_long               = 11
   unknown_dp_error              = 12
   access_denied                 = 13
   dp_out_of_memory              = 14
   disk_full                     = 15
   dp_timeout                    = 16
   OTHERS                        = 17
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


data ld_filename(200).
data: lt_url_tab        TYPE TABLE OF so_url,
         ld_url_tab_size   TYPE sytabix.

data l_file_ext type SO_FILEEXT.

      CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'
      EXPORTING
        full_name     = p_file
      IMPORTING
        stripped_name = ld_filename.

       SPLIT ld_filename AT '.' INTO TABLE lt_url_tab.

     DESCRIBE TABLE lt_url_tab LINES ld_url_tab_size.
    IF ld_url_tab_size GT 1.
      READ TABLE lt_url_tab INDEX ld_url_tab_size INTO l_file_ext.
    else.
        clear l_file_ext.
    Endif.

  DATA ld_xstring TYPE xstring.
  DATA lv_buffer TYPE xstring.

*  EXPORT my_data = l_string TO DATA BUFFER lv_buffer.
*  IMPORT my_data TO ld_xstring FROM DATA BUFFER lv_buffer IN CHAR-TO-HEX MODE.


  DATA: lt_data TYPE TABLE OF x255.
*data lt_data type standard table of solix.

CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
  EXPORTING
    input_length       = l_file_length
*   FIRST_LINE         = 0
*   LAST_LINE          = 0
 IMPORTING
   BUFFER             = lv_content
  tables
    binary_tab         = it_content
 EXCEPTIONS
   FAILED             = 1
   OTHERS             = 2
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.



*CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
*EXPORTING
*  BUFFER        = ld_xstring
**     APPEND_TO_TABLE       = ' '
*IMPORTING
*  output_length = l_file_length
*TABLES
*  binary_tab    = it_content[] .  "lt_data[].

*CALL FUNCTION 'SO_SOLIXTAB_TO_SOLITAB'
*EXPORTING
*  ip_solixtab = lt_data
*IMPORTING
*  ep_solitab  = it_content[].

*CALL FUNCTION 'SO_CONVERT_CONTENTS_BIN'       " Call the Function Module for Converts into Bin
*EXPORTING
*  it_contents_bin = it_content[]
*IMPORTING
*  et_contents_bin = it_content[].


  lv_objtyp = 'EXT'.

ls_lporb-instid = '0090000866'.
ls_lporb-typeid = 'VBRK'.

data lv_name type string.

lv_name = p_file.

call method cl_fitv_gos=>save
exporting
iv_name = lv_name
iv_content_hex = lv_content
is_lporb = ls_lporb
iv_objtp = lv_objtyp
receiving
rt_messages = lt_return_attach.


return. "------------------------------------------------------------>


  ls_borid-objkey  = '0090000866'.  "factura
  ls_borid-objtype = 'VBRK'.  "LIKP->entrega

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

  IF sy-subrc <> 0.
    EXIT.
  ENDIF.

*  clear url.
  l_title = 'Archivo carga'.

*l_obj_data-objsns    = 'O'.
  l_obj_data-objla     = sy-langu.
  l_obj_data-objdes    = l_title.
  l_obj_data-file_ext  = l_file_ext .  "'JPG'.
  l_obj_data-objlen    = l_file_length.

  CALL FUNCTION 'SO_OBJECT_INSERT'
    EXPORTING
      folder_id             = folder_id
      object_type           = 'EXT'
      object_hd_change      = l_obj_data
    IMPORTING
      object_id             = l_obj_id
    TABLES
      objhead               = lt_objhead
      objcont               = it_content  "lt_objcont
    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 = 0.
    document_id-foltp = folder_id-foltp.
    document_id-folyr = folder_id-folyr.
    document_id-folno = folder_id-folno.
    document_id-doctp = l_obj_id-objtp.
    document_id-docyr = l_obj_id-objyr.
    document_id-docno = l_obj_id-objno.
  ELSE.
    EXIT.
  ENDIF.

  IF NOT ls_borid-objkey IS INITIAL.
    IF NOT document_id IS INITIAL.
      CLEAR rel_doc.
      rel_doc-objkey  = document_id.
      rel_doc-objtype = 'MESSAGE'.
      CALL FUNCTION 'BINARY_RELATION_CREATE'
        EXPORTING
          obj_rolea    = ls_borid
          obj_roleb    = rel_doc
          relationtype = 'ATTA'
        EXCEPTIONS
          OTHERS       = 1.
      IF sy-subrc = 0.
*        ep_url_key = document_id.
        COMMIT WORK AND WAIT. "??
        WRITE: 'OK'.

      ELSE.
*        mac_msg_add_sy.
*        RAISE failed.
      ENDIF.
    ENDIF.
  ELSE.
*    ep_url_key = document_id.
    WRITE: 'OK'.
  ENDIF.


*&---------------------------------------------------------------------*
*&      Form  get_file
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_FILE     text
*----------------------------------------------------------------------*
FORM get_file CHANGING p_file.
  DATA: lt_files TYPE filetable,
        ls_files TYPE file_table,
        l_rc    LIKE sy-subrc.

  CALL METHOD cl_gui_frontend_services=>file_open_dialog
  CHANGING
    file_table              = lt_files
    rc                      = l_rc
  EXCEPTIONS
    file_open_dialog_failed = 1
    cntl_error              = 2
    error_no_gui            = 3
*     not_supported_by_gui    = 4
    OTHERS                  = 5.
  IF sy-subrc <> 0 OR l_rc < 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    READ TABLE lt_files INDEX 1 INTO ls_files.
    p_file = ls_files-filename.
  ENDIF.


ENDFORM.                    "get_file



*FORM decode_base_64x USING p_xstring TYPE xstring
*CHANGING p_string_base64 TYPE string.
*  DATA: l_http_utility TYPE REF TO cl_http_utility.
*  DATA: l_string TYPE string.
*  CREATE OBJECT l_http_utility.
*  CALL METHOD l_http_utility->encode_x_base64
*  EXPORTING
*    unencoded = p_xstring
*    RECEIVING
*    encoded   = p_string_base64.
*
*ENDFORM.