jump to navigation

Leer contenido de un documento adjunto – Documento de Venta febrero 25, 2013

Posted by gstortoni in Uncategorized.
trackback

Hola a todos…

Siglos sin escribir una entrada… sobre todo de ABAP… hace tiempo que estoy alejado de las canchas… pero ahora que me independicé y abrí mi propia consultora (starconsulting.cl) he tenido que volver a las raíces y hacer de todo entre ello volver a mi querido ABAP.

Hace un buen tiempo, escribí una entrada donde explico como adjuntar un documento a una orden de compra.

Ahora vamos a hacer la lectura del contenido de un archivo adjunto. Lo único que va cambiando es el Objeto (BUS2032 – Sales Order, BUS2012 – Purchase Order, etc).

En mi caso, la lectura que necesité realizar, fue la del contenido del documento para poder transmitirlo por una interfaz SAP PI y que en un sistema WEB se despliegue el documento.

Pero para realizar la demostración, lo que vamos a hacer en este ejemplo, es tomar el archivo y luego guardarlo en una carpeta local.

Demás está decir que si revisan la tabla: ti_content, verán el contenido del archivo.

Menos bla bla y mas trabajo.
report  ZGS_LEE_ADJUNTOS.

parameters:
p_botype like tojtb-name       default ‘BUS2032’, ” e.g. ‘BUS2012’
p_bo_id  like borident-objkey  default ‘0002240352’.

data:

is_object  type sibflporb,
et_links   type obl_t_link,
et_links_s type obl_s_link,
icx_obl_parameter_error type ref to cx_obl_parameter_error,
icx_obl_internal_error  type ref to cx_obl_internal_error,
icx_obl_model_error     type ref to cx_obl_model_error.

data: l_doc_data type sofolenti1,
wa_content type solisti1,
ti_content type table of solisti1,
wa_hex type solix,
ti_hex type table of solix,
l_filename type string,
l_doc_id type SOFOLENTI1-DOC_ID,
l_separator,
l_append.

start-of-selection.

is_object-instid = p_bo_id.
is_object-typeid = p_botype.
is_object-catid  = ‘BO’.

perform lee_adjunto.

end-of-selection.

form lee_adjunto.

refresh et_links.
try.
call method cl_binary_relation=>read_links_of_binrel
exporting
is_object   = is_object
ip_relation = ‘ATTA’
importing
et_links    = et_links.

endtry.

loop at et_links into et_links_s.

l_doc_id = et_links_s-instid_b.
call function ‘SO_DOCUMENT_READ_API1’
exporting
document_id    = l_doc_id
importing
document_data  = l_doc_data
tables
object_content = ti_content
contents_hex   = ti_hex.

concatenate ‘c:\adjuntos\’ l_doc_data-OBJ_DESCR ‘.’ l_doc_data-OBJ_TYPE into l_filename.

if ti_content[] is not initial.

l_append = ‘X’.
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename                = l_filename
filetype                = ‘BIN’
write_field_separator   = l_separator
append                  = l_append
CHANGING
data_tab                = ti_content[]
EXCEPTIONS
file_write_error        = 1
no_batch                = 2
gui_refuse_filetransfer = 3
invalid_type            = 4
no_authority            = 5
unknown_error           = 6
header_not_allowed      = 7
separator_not_allowed   = 8
filesize_not_allowed    = 9
header_too_long         = 10
dp_error_create         = 11
dp_error_send           = 12
dp_error_write          = 13
unknown_dp_error        = 14
access_denied           = 15
dp_out_of_memory        = 16
disk_full               = 17
dp_timeout              = 18
file_not_found          = 19
dataprovider_exception  = 20
control_flush_error     = 21
OTHERS                  = 22.

if sy-subrc = 0.
message ‘Archivo creado correctamente, en carpeta c:\adjunto’ type ‘S’.
endif.

endif.

endloop.

endform.

Todos los adjuntos se descargan en la ruta: C:\ADJUNTO.

En mi caso, como podrán ver subí 4 archivos de distinto tipo: PNG, PDF, RAR y DOC para probar todas las alternativas.

Así está en SAP:

img_1

 

 

y así es descargado a mi computador:

img_2

 

 

Y acá la parte entretenida de todo esto… el contenido de los archivos:img_3

Como dato adicional,

vale mencionar unas Notas que me ayudaron a dar esta solución tan sencilla:

927407 – Esta es la mejor de todas

804497
604603
904711
1080170

 

Saludos y espero que los pueda sacar de apuros.

 

Anuncios

Comentarios»

No comments yet — be the first.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: