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.