Cargar imagenes en Dynpros
Muchas personas se preguntan como pueden hacer esto…Cargar imagenes para que sus dynpros se vean más atractivos…O quizás simplemente para impresionar a los clientes…Utilizando ABAP Objects, esto es más fácil de lo que parece…Además, podemos cargar cualquier gráfico que hayamos subido al R/3 vía la transacción SE78.

Veamos el código (Para esto necesitamos crear un Custom Control en un Dynpro, y llamarlo PICTURE).
**************************************************************
* Programa: ZDUMMY_TEST. *
* Consultor ABAP: Alvaro Tejada Galindo *
**************************************************************
REPORT ZPRUEBA_ATG.
TYPES: PICT_LINE(256) TYPE C.
DATA: PICT_TAB TYPE TABLE OF PICT_LINE,
URL(255) TYPE C.
DATA: CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
PICTURE TYPE REF TO CL_GUI_PICTURE.
DATA: L_BYTECOUNT TYPE I,
L_TDBTYPE LIKE STXBITMAPS-TDBTYPE,
L_CONTENT TYPE STANDARD TABLE OF BAPICONTEN
INITIAL SIZE 0.
DATA: GRAPHIC_SIZE TYPE I.
DATA: BEGIN OF GRAPHIC_TABLE OCCURS 0,
LINE(255) TYPE X,
END OF GRAPHIC_TABLE.
*&———————————————————–&*
*& START-OF-SELECTION &*
*&———————————————————–&*
START-OF-SELECTION.
CALL SCREEN 100.
*&———————————————————–*
*& Module STATUS_0100 OUTPUT *
*&———————————————————–*
* PBO *
*————————————————————*
MODULE STATUS_0100 OUTPUT.
PERFORM LOAD_IMAGE.
ENDMODULE. ” STATUS_0100 OUTPUT
*————————————————————*
* FORM LOAD_IMAGE *
*————————————————————*
* Cargamos la imagen *
*————————————————————*
FORM LOAD_IMAGE.
CREATE OBJECT: CONTAINER1 EXPORTING CONTAINER_NAME = ‘PICTURE’,
PICTURE EXPORTING PARENT = CONTAINER1.
CALL FUNCTION ‘SAPSCRIPT_GET_GRAPHIC_BDS’
EXPORTING
I_OBJECT = ‘GRAPHICS’
I_NAME = ‘ENJOY’
I_ID = ‘BMAP’
I_BTYPE = ‘BCOL’
IMPORTING
E_BYTECOUNT = L_BYTECOUNT
TABLES
CONTENT = L_CONTENT
EXCEPTIONS
NOT_FOUND = 1
BDS_GET_FAILED = 2
BDS_NO_CONTENT = 3
OTHERS = 4.
CALL FUNCTION ‘SAPSCRIPT_CONVERT_BITMAP’
EXPORTING
OLD_FORMAT = ‘BDS’
NEW_FORMAT = ‘BMP’
BITMAP_FILE_BYTECOUNT_IN = L_BYTECOUNT
IMPORTING
BITMAP_FILE_BYTECOUNT = GRAPHIC_SIZE
TABLES
BDS_BITMAP_FILE = L_CONTENT
BITMAP_FILE = GRAPHIC_TABLE
EXCEPTIONS
OTHERS = 1.
CALL FUNCTION ‘DP_CREATE_URL’
EXPORTING
TYPE = ‘IMAGE’
SUBTYPE = ‘BMP’
TABLES
DATA = GRAPHIC_TABLE
CHANGING
URL = URL.
CALL METHOD PICTURE->LOAD_PICTURE_FROM_URL EXPORTING URL = URL.
CALL METHOD PICTURE->SET_DISPLAY_MODE
EXPORTING DISPLAY_MODE = PICTURE->DISPLAY_MODE_FIT_CENTER.
ENDFORM.
Saludos,
Blag.
Luis Valencia Said,
Enero 9, 2007 @ 8:31 am
Hola…
Kiero insertar una imagen en un report (utilizando quizas la estructura de un selection-screen) y no se si es posible. Ya vi que enla dynpro se puede, pero no se si en un report sea posible.
Me puedes ayudar?
Gracias
Blag Said,
Enero 9, 2007 @ 11:45 am
Ya te mandé el correo con lo que necesitas -:)
Saludos,
Blag.
andres Said,
Enero 10, 2007 @ 2:16 am
Blag, creo que sería interesante que si respondes a un comentario, no lo mandaras sólo por correo, sino que lo adjuntaras también como comentario.
Blag Said,
Enero 10, 2007 @ 5:20 am
Tienes razón Andrés -:P
La idea es crear un Dynpro “200″ y colocar un Custom Control llamado “PICTURE” y un SubScreen Area llamado “SubVentana”. Luego, crear el programa:
************************************************************************
* INFORMACION GENERAL *
*———————————————————————-*
* Nombre del programa: Z_DUMMY_TREE *
* Fecha/Autor: 26.08.2006 / Alvaro Tejada Galindo. *
************************************************************************
REPORT z_dummy_atg_3.
TABLES: SPFLI.
TYPES: PICT_LINE(256) TYPE C.
DATA: PICT_TAB TYPE TABLE OF PICT_LINE,
URL(255) TYPE C.
DATA: CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
PICTURE TYPE REF TO CL_GUI_PICTURE.
DATA: L_BYTECOUNT TYPE I,
L_TDBTYPE LIKE STXBITMAPS-TDBTYPE,
L_CONTENT TYPE STANDARD TABLE OF BAPICONTEN
INITIAL SIZE 0.
DATA: GRAPHIC_SIZE TYPE I.
DATA: BEGIN OF GRAPHIC_TABLE OCCURS 0,
LINE(255) TYPE X,
END OF GRAPHIC_TABLE.
*&———————————————————–&*
*& SELECTION-SCREEN &*
*&———————————————————–&*
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
PARAMETERS: CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID.
SELECTION-SCREEN END OF SCREEN 200.
*&———————————————————–&*
*& START-OF-SELECTION &*
*&———————————————————–&*
START-OF-SELECTION.
CALL SCREEN 100.
*&———————————————————–*
*& Module STATUS_0100 OUTPUT *
*&———————————————————–*
* PBO *
*————————————————————*
MODULE STATUS_0100 OUTPUT.
PERFORM LOAD_IMAGE.
ENDMODULE. ” STATUS_0100 OUTPUT
*————————————————————*
* FORM LOAD_IMAGE *
*————————————————————*
* Cargamos la imagen *
*————————————————————*
FORM LOAD_IMAGE.
CREATE OBJECT: CONTAINER1 EXPORTING CONTAINER_NAME = ‘PICTURE’,
PICTURE EXPORTING PARENT = CONTAINER1.
CALL FUNCTION ‘SAPSCRIPT_GET_GRAPHIC_BDS’
EXPORTING
I_OBJECT = ‘GRAPHICS’
I_NAME = ‘ENJOY’
I_ID = ‘BMAP’
I_BTYPE = ‘BCOL’
IMPORTING
E_BYTECOUNT = L_BYTECOUNT
TABLES
CONTENT = L_CONTENT
EXCEPTIONS
NOT_FOUND = 1
BDS_GET_FAILED = 2
BDS_NO_CONTENT = 3
OTHERS = 4.
CALL FUNCTION ‘SAPSCRIPT_CONVERT_BITMAP’
EXPORTING
OLD_FORMAT = ‘BDS’
NEW_FORMAT = ‘BMP’
BITMAP_FILE_BYTECOUNT_IN = L_BYTECOUNT
IMPORTING
BITMAP_FILE_BYTECOUNT = GRAPHIC_SIZE
TABLES
BDS_BITMAP_FILE = L_CONTENT
BITMAP_FILE = GRAPHIC_TABLE
EXCEPTIONS
OTHERS = 1.
CALL FUNCTION ‘DP_CREATE_URL’
EXPORTING
TYPE = ‘IMAGE’
SUBTYPE = ‘BMP’
TABLES
DATA = GRAPHIC_TABLE
CHANGING
URL = URL.
CALL METHOD PICTURE->LOAD_PICTURE_FROM_URL EXPORTING URL = URL.
CALL METHOD PICTURE->SET_DISPLAY_MODE
EXPORTING DISPLAY_MODE = PICTURE->DISPLAY_MODE_FIT_CENTER.
ENDFORM.
Y dentro del dynpro:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
CALL SUBSCREEN: SUBVENTANA INCLUDING SY-REPID ‘0200′.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
CALL SUBSCREEN: SUBVENTANA.
Con esto, conseguimos tener una imagen junto con un SELECTION-SCREEN.
Saludos,
Blag.