- REPORT zadd_attach_scase.
- PARAMETER : l_fname TYPE char255 DEFAULT 't:\02.docx'.
- PARAMETERS: p_case LIKE scmg_t_case_attr-ext_key OBLIGATORY DEFAULT '000300000654'. "<-- Ejemplo
- *--[ Alguas (muchas) variables son obsoletas
- DATA : l_file TYPE string,
- lv_xstring TYPE xstring,
- l_return TYPE bapiret2,
- l_filecontent TYPE bapiconten,
- i_case TYPE REF TO if_scmg_case_api,
- l_initial_dir TYPE string,
- l_window_title TYPE string,
- l_filename_disp TYPE string,
- l_filename_string TYPE string,
- l_user_action TYPE i,
- l_rc TYPE i,
- l_v_lines TYPE i,
- l_mime TYPE skwf_mime,
- l_filelength TYPE i,
- l_component TYPE bapidoccomp,
- l_skwf_filnm TYPE skwf_filnm,
- li_file_tab TYPE filetable,
- lwa_file_tab TYPE file_table,
- li_bin_content TYPE STANDARD TABLE OF bapiconten,
- l_v_size TYPE i.
- DATA: BEGIN OF itab OCCURS 0,
- line TYPE sdok_sdatx.
- DATA: END OF itab.
- DATA: BEGIN OF i_component OCCURS 0,
- comp_count TYPE bapipos,
- comp_id TYPE bapidocid,
- mimetype TYPE bapimimetype,
- comp_size TYPE bapipos,
- binary_flag TYPE bapigsbool,
- comp_num TYPE bapipos.
- DATA: END OF i_component.
- AT SELECTION-SCREEN ON VALUE-REQUEST FOR l_fname.
- *--[ Esto es para hacer F4 en la pantalla incial y seleccionar el filez
- l_window_title = 'Upload Document'(001).
- CALL METHOD cl_gui_frontend_services=>file_open_dialog
- EXPORTING
- window_title = l_window_title
- initial_directory = l_initial_dir
- CHANGING
- file_table = li_file_tab
- rc = l_rc
- user_action = l_user_action
- EXCEPTIONS
- file_open_dialog_failed = 1
- cntl_error = 2
- error_no_gui = 3
- not_supported_by_gui = 4
- OTHERS = 5.
- IF sy-subrc = 0.
- READ TABLE li_file_tab INTO lwa_file_tab INDEX 1.
- IF sy-subrc = 0.
- l_file = lwa_file_tab-filename.
- l_fname = lwa_file_tab-filename.
- ENDIF.
- ENDIF.
- START-OF-SELECTION.
- l_file = l_fname.
- *--[ Subimos el fichero
- CALL FUNCTION 'GUI_UPLOAD'
- EXPORTING
- filename = l_file
- filetype = 'BIN'
- IMPORTING
- filelength = sy-pagno
- TABLES
- data_tab = itab
- 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.
- l_v_size = sy-pagno.
- *--[ Lo que sigue a continuación es para mover una tabla binaria a otra tabla binaria de otro formato/tamaño
- *--[Convertimos la tabla binaria en XSTRING
- CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
- EXPORTING
- input_length = sy-pagno
- IMPORTING
- buffer = lv_xstring
- TABLES
- binary_tab = itab
- EXCEPTIONS
- failed = 1
- OTHERS = 2.
- *--[ Convertimos la XSTRING a BINARY
- CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
- EXPORTING
- buffer = lv_xstring
- TABLES
- binary_tab = li_bin_content.
- l_skwf_filnm = l_file.
- *--[ Preparamos el componente
- CALL FUNCTION 'SKWF_MIMETYPE_OF_FILE_GET'
- EXPORTING
- filename = l_skwf_filnm
- IMPORTING
- mimetype = l_mime.
- l_component-comp_count = 1.
- l_component-comp_id = l_fname.
- *--[ Aquí está el error del MIME, sería más sencillo ir a la tabla toadd y ver que mime
- *--[ le sirve para la extensión
- l_component-mimetype = l_mime. "<--Por ejemplo application/msword
- l_component-comp_size = sy-pagno. "<-- Ojo que aquí está el tamaño del flz
- l_component-binary_flag = 'X'.
- l_component-comp_num = 1.
- APPEND l_component TO i_component.
- DATA: lref_api TYPE REF TO if_scmg_case_api.
- DATA: lt_messages TYPE scmg_t_attr_return_value.
- *--[ El GUID lo obtienes de la tabla SCMG_T_CASE_ATTR
- *--[ EN EXY_KEY está el número de caso por ejemplo 000300000654 y en CASE_GUID está, pues eso, el GUID
- DATA: l_case_guid LIKE scmg_t_case_attr-case_guid.
- BREAK-POINT.
- SELECT SINGLE case_guid INTO l_case_guid FROM scmg_t_case_attr
- WHERE ext_key = p_case. "<-- De que caso estamos hablando
- CALL METHOD cl_scmg_case_api=>get_case
- EXPORTING
- im_case_guid = l_case_guid
- im_enqueue = 'X'
- RECEIVING
- re_case = lref_api
- EXCEPTIONS
- failed = 1
- invalid_guid = 2.
- IF sy-subrc EQ 0.
- *--[ Está función hay que hacer Z* por:
- *--[ Cuando llama UDM_GET_DOCUMENT_DATA si no existe documento devuelve el SP_ID como UDM* y hay que cambiarlo por UKM*
- CALL FUNCTION 'UDM_BD_CREATE_ATTACHMENT'
- EXPORTING
- i_guid = l_case_guid
- i_case = lref_api
- i_testrun = space " '003A3A4FAD54D97CE100000092D79319'
- TABLES
- bin_content = li_bin_content
- components = i_component
- CHANGING
- es_return = l_return.
- BREAK-POINT.
- *--[ Importante GRABAR!!
- CALL METHOD lref_api->save
- EXPORTING
- im_dequeue = 'X'
- IMPORTING
- ex_messages = lt_messages
- EXCEPTIONS
- failed = 1.
- if sy-subrc ne 0.
- *--[ Error
- endif.
- ELSE.
- *--[ Error al abrir el caso
- ENDIF.
Última modificación de la página el 04 November 2015 a las 15h04
Powered by
PmWiki