#1
|
|||
|
|||
Quitar una imagen de una dynpro
Hola a todos:
Me he creado una dynpro en la que inserto una imagen. Lo he hecho con un custom control llamado 'picture' y con la siguiente funcion: La imagen la importo a traves de la se78. El caso es que una vez mostrada, no se como quitarla. Es como si se quedara bloqueada. Solo quiero que se muestre en ciertos casos. ¿como podría hacerlo? Un saludo. |
#2
|
||||
|
||||
Aqui tengo un ejemplo que te puede servir.
Utiliza la transaccion SMW0 para cargar la imagenes. Paso 1. Crea un programa de prueba con la dynpro 100. Dentro de la dynpro pon un campo de E/S y llamalo IMAGEN. colocar tambien un custom control y llamalo PICTURE1. Paso 2. La logica del proceso debe quedar de esta manera: PROCESS BEFORE OUTPUT. MODULE cargar_logo. * MODULE STATUS_0100. * PROCESS AFTER INPUT. module destruir. * MODULE USER_COMMAND_0100. Paso 3. El codigo del programa como sigue. *&---------------------------------------------------------------------* *& Report ZSVTEST_IMAGENES *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZSVTEST_IMAGENES. DATA IMAGEN TYPE STRING. * URL requerida para dibujar el logo en pantalla DATA url(255). * Objeto contenedor DATA logo_container TYPE REF TO cl_gui_custom_container. * Objeto imagen DATA logo_picture TYPE REF TO cl_gui_picture. INITIALIZATION. IMAGEN = 'ZSV_CITIBANKU'. START-OF-SELECTION. CALL SCREEN 100. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Module cargar_logo OUTPUT *&---------------------------------------------------------------------* MODULE cargar_logo OUTPUT. PERFORM selscn_cargar_logo_en_screen USING 'PICTURE1' " <- Nombre que le diste al control IMAGEN. " <- Nombre que le diste al logo ENDMODULE. " cargar_logo OUTPUT *&---------------------------------------------------------------------* *& Form selscn_cargar_logo_en_screen *&---------------------------------------------------------------------* FORM selscn_cargar_logo_en_screen USING p_container p_logo. * Creamos el contenedor CREATE OBJECT logo_container EXPORTING container_name = p_container. * Creamos el objeto imagen asignando el contenedor CREATE OBJECT logo_picture EXPORTING parent = logo_container EXCEPTIONS error = 1. * Request an URL from the data provider by exporting the pic_data. CLEAR URL. PERFORM selscn_load_pic_from_db USING p_logo CHANGING url. * Cargamos el logo CALL METHOD logo_picture->load_picture_from_url EXPORTING url = url. IF sy-subrc NE 0. ENDIF. * Hacemos que estire la imagen para colocarlo en todo el contenedor CALL METHOD logo_picture->set_display_mode EXPORTING display_mode = logo_picture->display_mode_fit_center EXCEPTIONS error = 1. ENDFORM. " SELSCN_cargar_logo_en_screen *&---------------------------------------------------------------------* *& Form SELSCN_LOAD_PIC_FROM_DB *&---------------------------------------------------------------------* * RECUPERA UNA IMAGEN DE SAP Y LA CONVIERTE PARA PODER UTILIZARLA * (recogida del programa RSDEMO_PICTURE_CONTROL) *----------------------------------------------------------------------* * *----------------------------------------------------------------------* FORM selscn_load_pic_from_db USING p_image CHANGING url. DATA query_table LIKE w3query OCCURS 1 WITH HEADER LINE. DATA html_table LIKE w3html OCCURS 1. DATA return_code LIKE w3param-ret_code. DATA content_type LIKE w3param-cont_type. DATA content_length LIKE w3param-cont_len. DATA pic_data LIKE w3mime OCCURS 0. DATA pic_size TYPE i. REFRESH query_table. query_table-name = '_OBJECT_ID'. query_table-value = p_image. APPEND query_table. CALL FUNCTION 'WWW_GET_MIME_OBJECT' TABLES query_string = query_table html = html_table mime = pic_data CHANGING return_code = return_code content_type = content_type content_length = content_length EXCEPTIONS object_not_found = 1 parameter_not_found = 2 OTHERS = 3. IF sy-subrc = 0. pic_size = content_length. ENDIF. CALL FUNCTION 'DP_CREATE_URL' EXPORTING type = 'image' subtype = cndp_sap_tab_unknown size = pic_size lifetime = cndp_lifetime_transaction TABLES data = pic_data CHANGING url = url EXCEPTIONS OTHERS = 1. ENDFORM. " SELSCN_LOAD_PIC_FROM_DB *&---------------------------------------------------------------------* *& Module destruir INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE destruir INPUT. CALL METHOD logo_picture->free. CALL METHOD logo_container->free. FREE logo_picture. FREE logo_container. ENDMODULE. " destruir INPUT Colocar el nombre de la imagen que necesitas en el campo de E/S y veras como cambia la imagen dentro de custom control. Saludos. |
#3
|
|||
|
|||
Ha funcionado.
Muchisimas gracias. |
#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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|