SAP Jobsuche bei DV-Treff
Azrael
  • Azrael
  • SAP Forum - User Thema Starter
vor 15 Jahre

Hallo zusammen,

ich bin ABAP-Anfänger und übe noch, habe aber bereits meine ersten Reports programmiert. Nun würde mich brennend interessieren, wie oder ob es möglich ist, Bilder direkt in den Selektionsbildschirm einzubauen. Leider hab ich im Internet bisher keine brauchbaren Hinweise gefunden, wie Bilder (z.B. Logos) hochgeladen und per ABAP im Selektionsbildschirm eingebunden werden können.

Könnt ihr mir vielleicht behilflich sein und mitteilen, wie das geht bzw. wie der Source-Code aussehen muss?

Liebe Grüße,

Azrael

Azrael
  • Azrael
  • SAP Forum - User Thema Starter
vor 15 Jahre

Guten Morgen,

mittlerweile habe ich ein gutes Beispiel im Internet gefunden, anhand dessen mir die Einbindung gelungen ist

http://www.saptechnical.com/Tutorials/ABAP/image/screen.htm

Ich liste hier nochmal die wesentlichen Steps für alle interessierten auf:

1. SE78: Bild in BMP-Format hochladen

2. SE51: Dynpro zum Programm erstellen (wichtig: Programm muss vorhanden sein. Falls nicht, vorher mit SE38 erstellen)

3. Screen Painter aufrufen (auf Button "Layout" klicken)

4. In der linken Spalte das Icon "Custom Control" nach rechts ziehen und mit "PICTURE_CONTAINER" bezeichnen. Anschließend Größe und Position einstellen. --> speichern, aktivieren, zurückspringen

5. In der Ablauflogik des Dynpros sollten nun folgende Einträge stehen (mehr ist nicht erforderlich):

PROCESS BEFORE OUTPUT.

MODULE STATUS_9000.

6. Doppelklick auf "STATUS_9000" machen --> Modul anlegen. Folgenden Code einfügen (Hinweis: statt der Bezeichnung NAME_BILD sollte die Bezeichnung des unter Step 1 hochgeladenen Bilds eingetragen werden):

*&---------------------------------------------------------------------*

*& Module STATUS_9000 OUTPUT

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

MODULE STATUS_9000 OUTPUT.

  DATA: W_LINES TYPE I.

TYPES PICT_LINE(256) TYPE C.

DATA :

CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

EDITOR TYPE REF TO CL_GUI_TEXTEDIT,

PICTURE TYPE REF TO CL_GUI_PICTURE,

PICT_TAB TYPE TABLE OF PICT_LINE,

URL(255) TYPE C.

DATA: GRAPHIC_URL(255).

  DATA: BEGIN OF GRAPHIC_TABLE OCCURS 0,

LINE(255) TYPE X,

END OF GRAPHIC_TABLE.

DATA: L_GRAPHIC_CONV TYPE I.

DATA: L_GRAPHIC_OFFS TYPE I.

DATA: GRAPHIC_SIZE TYPE I.

DATA: L_GRAPHIC_XSTR TYPE XSTRING.

.

  CALL METHOD CL_GUI_CFW=>FLUSH.

  CREATE OBJECT:

CONTAINER EXPORTING CONTAINER_NAME = 'PICTURE_CONTAINER',

PICTURE EXPORTING PARENT = CONTAINER.

  CALL METHOD CL_SSF_XSF_UTILITIES=>GET_BDS_GRAPHIC_AS_BMP

EXPORTING

P_OBJECT = 'GRAPHICS'

P_NAME = 'NAME_BILD'

P_ID = 'BMAP'

P_BTYPE = 'BCOL'

RECEIVING

P_BMP = L_GRAPHIC_XSTR

* EXCEPTIONS

* NOT_FOUND = 1

* INTERNAL_ERROR = 2

* others = 3

.

IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

  GRAPHIC_SIZE = XSTRLEN( L_GRAPHIC_XSTR ).

L_GRAPHIC_CONV = GRAPHIC_SIZE.

L_GRAPHIC_OFFS = 0.

  WHILE L_GRAPHIC_CONV > 255.

GRAPHIC_TABLE-LINE = L_GRAPHIC_XSTR+L_GRAPHIC_OFFS(255).

APPEND GRAPHIC_TABLE.

L_GRAPHIC_OFFS = L_GRAPHIC_OFFS + 255.

L_GRAPHIC_CONV = L_GRAPHIC_CONV - 255.

ENDWHILE.

GRAPHIC_TABLE-LINE = L_GRAPHIC_XSTR+L_GRAPHIC_OFFS(L_GRAPHIC_CONV).

  APPEND GRAPHIC_TABLE.

  CALL FUNCTION 'DP_CREATE_URL'

EXPORTING

TYPE = 'IMAGE'

SUBTYPE = 'X-UNKNOWN'

SIZE = GRAPHIC_SIZE

LIFETIME = 'T'

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.

ENDMODULE.                 " STATUS_9000  OUTPUT

7. Speichern, aktivieren. Das gleiche gilt für das Dynpro. Anschließend mit SE38 ins ABAP Programm einsteigen. Dort müsste nun ein INCLUDE-Eintrag stehen, der auf das Modul verweist. Um das Dynpro aufzurufen, sollte zusätzlich ein CALL-Eintrag vorhanden sein. Das fertige ABAP-Programm sieht dann so aus:

REPORT Z_PICTURES.

* Aufruf des Dynpros 9000

CALL SCREEN 9000.

* Include des Moduls für das Bild in Dynpro 9000

INCLUDE Z_PICTURES_STATUS_9000O01.

8. Speichern, aktivieren, fertig! Viel Spaß 

Liebe Grüße,

Azrael

Bobbes
vor 11 Jahre
Super! Danke für die klasse Erläuterung der einzelnen Schritte.

So ist's easy!