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.

4 comentarios »

  1. 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

  2. Blag Said,

    Enero 9, 2007 @ 11:45 am

    Ya te mandé el correo con lo que necesitas -:)

    Saludos,

    Blag.

  3. 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.

  4. 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.

RSS feed for comments on this post · URI para TrackBack.

Leave a Comment

Cerrar
E-mail It