Ver Mensaje Individual
  #4  
Viejo 17/06/11, 05:52:37
cassares cassares is offline
Junior Member
 
Fecha de Ingreso: oct 2007
Mensajes: 4
Solucion para imagenes desde GOS

Hola frankmerlos, Me parece muy bueno el aporte, me ayudo mucho tambien. Quiero tambien hacer un aporte para los que quiera traer una imagen de GOS, para traer una imagen desde GOS puedes reemplazar del codigo anterior la rutina donde se genera el url: PERFORM selscn_load_pic_from_db USING p_logo CHANGING url. y creas la siguiente funcion o lo puedes pegar como form tambien. En este caso el número del material es el mismo nombre con que se cargó la imagen, que se encuentra en la tabla: SRGBTBREL. El objetivo es general la url desde gos sin necesidad de descarga a un archivo local la imagen:


FUNCTION zread_images_gos.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(P_MATNR) TYPE MATNR
*" EXPORTING
*" REFERENCE(E_URL) TYPE C
*"----------------------------------------------------------------------



*Definición de variables

DATA: gs_lpor TYPE sibflporb,
lt_relat TYPE obl_t_relt,
la_relat LIKE LINE OF lt_relat,
t_links TYPE obl_t_link,
la_links LIKE LINE OF t_links,
l_folder_id TYPE soodk,
l_object_id TYPE soodk,
document_id TYPE sofmk,
document_content TYPE STANDARD TABLE OF soli WITH HEADER LINE,
soli_head TYPE STANDARD TABLE OF soli WITH HEADER LINE,
object_id TYPE sdokobject,
it_file_content_binary LIKE TABLE OF sdokcntbin WITH HEADER LINE,
vl_file_name(200) TYPE c,
line TYPE so_text255,
vl_phio_id TYPE soffphio-phio_id,
data_txt LIKE TABLE OF sdokcntasc,
data_bin LIKE TABLE OF sdokcntbin WITH HEADER LINE,
class TYPE string,
objid TYPE string,
lo_root TYPE REF TO cx_root.


gs_lpor-instid = p_matnr.
gs_lpor-typeid = 'BUS1001006'.
gs_lpor-catid = 'BO'.

*Leer el link
la_relat-sign = 'I'.
la_relat-option = 'EQ'.
la_relat-low = 'NOTE'.
APPEND la_relat TO lt_relat.
la_relat-sign = 'I'.
la_relat-option = 'EQ'.
la_relat-low = 'ATTA'.
APPEND la_relat TO lt_relat.
la_relat-sign = 'I'.
la_relat-option = 'EQ'.
la_relat-low = 'URL'.
APPEND la_relat TO lt_relat.

TRY.
CALL METHOD cl_binary_relation=>read_links
EXPORTING
is_object = gs_lpor
it_relation_options = lt_relat
IMPORTING
et_links = t_links.
CATCH cx_root INTO lo_root.
ENDTRY.

IF t_links IS NOT INITIAL.

READ TABLE t_links INTO la_links INDEX 1.

document_id = la_links-instid_b.
l_folder_id-objtp = document_id-foltp.
l_folder_id-objyr = document_id-folyr.
l_folder_id-objno = document_id-folno.
l_object_id-objtp = document_id-doctp.
l_object_id-objyr = document_id-docyr.
l_object_id-objno = document_id-docno.

* Leer Objeto
CALL FUNCTION 'SO_OBJECT_READ'
EXPORTING
folder_id = l_folder_id
object_id = l_object_id
TABLES
objcont = document_content
objhead = soli_head
EXCEPTIONS
active_user_not_exist = 1
communication_failure = 2
component_not_available = 3
folder_not_exist = 4
folder_no_authorization = 5
object_not_exist = 6
object_no_authorization = 7
operation_no_authorization = 8
owner_not_exist = 9
parameter_error = 10
substitute_not_active = 11
substitute_not_defined = 12
system_failure = 13
x_error = 14
OTHERS = 15.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

READ TABLE document_content INDEX 1.
READ TABLE soli_head INDEX 1.

vl_file_name = soli_head-line+13.
line = document_content-line.


SPLIT line AT space INTO: class objid.
class = class+17.
CONDENSE class NO-GAPS.
CONDENSE objid NO-GAPS.

* Consultar el id físico
SELECT SINGLE phio_id
INTO vl_phio_id
FROM soffphio WHERE loio_id = objid.

* Leer el contenido BIN
IF sy-subrc = 0.

CALL FUNCTION 'SCMS_R3DB_GET'
EXPORTING
crep_id = 'SOFFDB'
doc_id = vl_phio_id
comp_id = vl_file_name
TABLES
data_txt = data_txt
data_bin = data_bin.
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 'DP_CREATE_URL'
EXPORTING
type = 'IMAGE'
subtype = cndp_sap_tab_unknown"'BMP'
cacheable = 'X'
lifetime = cndp_lifetime_transaction
TABLES
data = data_bin
CHANGING
url = e_url.


ENDIF.
ELSE.
MESSAGE 'No se encuentra la imagen' TYPE 'E'.
ENDIF.

ENDFUNCTION.

Espero les ayude, Saludos.
Responder Con Cita