PDA

Ver la Versión Completa : Crear un logo en un dynpro.


rubendiego
28/08/08, 11:54:45
Necesito en una dynpro de un modulpool, meter un logo.
Me creo un container donde ira la función grafica, pero no se como ni donde se ha de subir la foto para obtener la url para poder mostrar la foto.

Muchas gracias.

Rubén

stormshadow
28/08/08, 14:49:15
Bueno, hasta donde yo sé, creo que las imagenes las subes en una transacción, bueno al menos en los libros que e leído decía eso porque allí se mencionaba como subir la imagén que ponías en el menú principal de sap, ahorita checo el libro y si hallo la transacción te digo vaaa es que ahorita no lo tengo a la mano y no recuerdo que transacción era, igual puedo estar equivocado pero si alguién más puede ayudar mejor.

rubendiego
28/08/08, 14:56:21
Muchas gracias!!!
he investigado y he encontrado lo siguiente que me ha funcionado:

you mean to say you want to add your company logo , you can upload image using tcode SMW0

follow the steps, .GIF file supported as logo

Transaction code - SMW0
check Binary data for WebRFC application
press Enter
Click Execute
Click Settings -> Maintain MIME types
Click the Create button
Fill in :- TYPE : image/gif EXTENSION : .GIF
Click Save

Click Back to the Binary data for WebRFC
Click Create
Fill in :- Obj. name : zlogo.gif
Description : Company Logo
Click Import and specify the filename where your
GIF file is located.File type is BIN. Finish press the
Transfer button.
If successful, your logo will be shown in the Binary data for WebRFC.

Un saludo Ruben

ballan
28/08/08, 15:34:12
La transaccion para subir imagenes es la SE78 aqui te dejo un codigo de ejemplo que crea el container y le pone una foto, realmente es un form pero con que lo toques un poco crearas un report, de todas formas si te parece mas comodo puedes echar un vistazo el report standar RSDEMO_PICTURE_CONTROL

FORM crear_boton USING p_nombre_boton
p_container TYPE REF TO cl_gui_custom_container
p_picture TYPE REF TO cl_gui_picture
p_imagen
CHANGING p_subrc.

DATA: lt_grafico TYPE TABLE OF ty_grafico,
lt_eventos TYPE cntl_simple_events.

DATA: ls_grafico TYPE ty_grafico,
ls_evento TYPE cntl_simple_event,
ls_stream TYPE xstring.

DATA: lv_object TYPE tdobjectgr VALUE 'GRAPHICS',
lv_name TYPE tdobname,
lv_id TYPE tdidgr VALUE 'BMAP',
lv_btype TYPE tdbtype VALUE 'BCOL',
lv_type(10) VALUE 'IMAGE',
lv_subtype(10) VALUE 'X-UNKNOWN',
lv_size TYPE i,
lv_lifetime TYPE c VALUE 'T',
lv_url(255),
lv_rc TYPE i,
lv_longitud TYPE i,
lv_offset TYPE i.

CLEAR p_subrc.

IF p_imagen IS INITIAL.

p_subrc = 4.
EXIT.

ELSE.

lv_name = p_imagen.

ENDIF.

*creo el container
IF p_container IS INITIAL.

CREATE OBJECT p_container
EXPORTING
container_name = p_nombre_boton
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.

IF sy-subrc <> 0.

p_subrc = 1.
EXIT.

ENDIF.

ENDIF.

IF p_picture IS INITIAL.

*Creamos la imagen y se la asignamos al container
CREATE OBJECT p_picture
EXPORTING
parent = p_container
EXCEPTIONS
error = 1
OTHERS = 2.

IF sy-subrc <> 0.

p_subrc = 2.

*como ya habiamos creado el container lo eliminamos y hacemos un flush
*que se borre inmediatamente
p_container->free( ).
cl_gui_cfw=>flush( ).

EXIT.

ENDIF.

ENDIF.

*pasamos la imagen subida por la transaccion SE78 a un stream
CALL METHOD cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp
EXPORTING
p_object = lv_object
p_name = lv_name
p_id = lv_id
p_btype = lv_btype
RECEIVING
p_bmp = ls_stream.

*este stream lo tenemos que poner en forma de tabla
lv_longitud = XSTRLEN( ls_stream ).

DO.

CLEAR ls_grafico.

ls_grafico-linea = ls_stream+lv_offset(gc_255).

APPEND ls_grafico TO lt_grafico.

ADD gc_255 TO lv_offset.

SUBTRACT gc_255 FROM lv_longitud.

IF lv_longitud <= gc_255.

ls_grafico-linea = ls_stream+lv_offset(lv_longitud).

APPEND ls_grafico TO lt_grafico.

EXIT.

ENDIF.

ENDDO.

* creamos la url para esta imagen
CALL FUNCTION 'DP_CREATE_URL'
EXPORTING
type = lv_type
subtype = lv_subtype
size = lv_size
lifetime = lv_lifetime
TABLES
data = lt_grafico
CHANGING
url = lv_url.

** Al objeto imagen le indicamos cual será su imagen
CALL METHOD p_picture->load_picture_from_url
EXPORTING
url = lv_url
EXCEPTIONS
error = 1
OTHERS = 2.

IF sy-subrc <> 0.

p_subrc = 3.

*Al liberar el container tambien se liberan todos los hijos que tenga
*en este caso su hijo seria el control picture
p_container->free( ).
cl_gui_cfw=>flush( ).

EXIT.

ENDIF.

* Indicamos el modo de disposición de la imagen dentro del container
CALL METHOD p_picture->set_display_mode
EXPORTING
display_mode = p_picture->display_mode_fit_center.

*registramos el evento click
ls_evento-eventid = p_picture->eventid_picture_click.

APPEND ls_evento TO lt_eventos.

CALL METHOD p_picture->set_registered_events
EXPORTING
events = lt_eventos
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3
OTHERS = 4.

IF sy-subrc <> 0.

p_subrc = 5.
*Al liberar el container tambien se liberan todos los hijos que tenga
*en este caso su hijo seria el control picture
p_container->free( ).
cl_gui_cfw=>flush( ).

EXIT.

ENDIF.

SET HANDLER go_receptor->handle_click FOR p_picture.

ENDFORM. " CREAR_BOTON

DavidXD_XD
29/08/08, 21:59:56
Hola ... create un CUSTOM_CONTAINER y levanta un grafico que previo debes registrarlo dentro de la OAER .... ahi un buen programa de ejemplo ^^ DD_ADD_PICTURES, espero te pueda servir :D