*---------------------------------------------------------------------*
*               Z _ B J H _ D Y N P R O _ T A B _ F I X               *
*                                                                     *
*                           TABSTRIPS (FIX)                           *
*                                                                     *
*                  Autor: Bernd Haase (BJH Software)                  *
*---------------------------------------------------------------------*
* Beispielprogramm für Dynpro-Verarbeitung mit Tabstrips. Im Programm *
* wird eine Lieferscheinnummer abgefragt und der Datensatz dazu       *
* gelesen. Die Ausgabe erscheint in einem Bildschirm mit Reitern      *
* (Tabstrips), wobei der erste Reiter die Lieferscheinnummer ausgibt  *
* und der zweite den Lieferanten. Programm bindet die Tabstrips fest  *
* (fix) ein, kein dynamisches Laden !                                 *
*---------------------------------------------------------------------*
* Programm besteht aus 3 Dynpros:                                     *
* 9300 Dynprotyp: Normal                                              *
* 9301 Dynprotyp: Subscreen für Reiter 1 (mit Container für Foto)     *
* 9302 Dynprotyp: Subscreen für Reiter 2 (kann ausgeblendet werden)   *
*---------------------------------------------------------------------*
* 22.01.2004 BHaa: Programm erstellt                                  *
* 01.09.2004 BHaa: Subscreen um Container und Fotoeinpflege erweitert *
* 03.06.2005 BHaa: Reiter 2 ausblenden, wenn gewünscht                *
*---------------------------------------------------------------------*
REPORT  z_bjh_dynpro_tab_fix       .

TABLES:
 ekko.

DATA:
 wa_ekko LIKE ekko,

 okcode LIKE sy-ucomm.

********
* Foto *
********
DATA:
 interne_sap_url(255) TYPE c,
 c_pic_9301 TYPE REF TO cl_gui_custom_container,
 o_pic_9301 TYPE REF TO cl_gui_picture.

**********
* Dynpro *
**********
* wichtig: Dynpro Tabstrip-Name muß hier also Kontrolle hinterlegt sein
CONTROLS:
 flyaway TYPE TABSTRIP.

*---------------------------------------------------------------------*
*                                                                     *
*                 A u s w a h l b i l d s c h i r m                   *
*                                                                     *
*---------------------------------------------------------------------*
* Eingabe der Lieferscheinnummer
SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME TITLE text-901.
PARAMETERS:
 pm_ebeln TYPE ekko-ebeln,
* ''=Reiter 2 lassen, X= Reiter 2 ausblenden
 pmx_tab2 TYPE c AS CHECKBOX.
SELECTION-SCREEN: END OF BLOCK a1.

***********************************************************************
*                                                                     *
*                     P R O G R A M M S T A R T                       *
*                                                                     *
***********************************************************************
* Lieferschein einlesen und wenn gefunden, Dynpro aufrufen
AT SELECTION-SCREEN.
 SELECT SINGLE * FROM ekko INTO wa_ekko
 WHERE ebeln = pm_ebeln.
 IF sy-subrc = 0.
   LEAVE TO SCREEN '9300'.
 ENDIF.

*---------------------------------------------------------------------*
*                     A N F A N G _ B I L D                           *
*---------------------------------------------------------------------*
* SAP speichert für Bilder, eine interne URL-Adresse. Diese wird hier *
* über den Funktionsbaustein bestimmt.                                *
*                                                                     *
* Bildchen für den Reiter im Dynpro 9301 bestimmen. Es wird hier im   *
* Beispiel immer das gleiche Bild eingeblendet ! Da das System intern *
* bleibt und sich nicht die Bilder nicht aus dem Internet holt, werden*
* sie über Import der kundeneigenen Tabelle ZC700X (Kopie der INDX)   *
* zur Verfügung gestellt. Laden der Bilder über z_bjh_up_down_pgm.    *
*---------------------------------------------------------------------*
* ]=> interne_sap_url: interne Referenzierung auf das Foto            *
*---------------------------------------------------------------------*
FORM upro-anfang_bild.

* Struktur der einzulesenden Grafikdatei
 TYPES:
   ty_jpg(256) TYPE c.
 DATA:
   wa_jpg   TYPE ty_jpg,
   itab_jpg TYPE STANDARD TABLE OF ty_jpg,

   bild_id(8) TYPE c.

* welches Bild soll angezeigt werden
 bild_id = 'FRA00490'.

* Laden des Bildes in interne Tabelle aus der Cluster Tabelle
 IMPORT imagebjh = itab_jpg FROM DATABASE zc700x(pi) ID bild_id.

 CALL FUNCTION 'DP_CREATE_URL'
     EXPORTING
         type    = 'IMAGE'
*         subtype = 'GIF'
         subtype = 'JPG'
     TABLES
         data    = itab_jpg
     CHANGING
         url     = interne_sap_url.

ENDFORM.

*---------------------------------------------------------------------*
*                                                                     *
* PAI                   U S E R _ C O M M A N D                       *
*                                                                     *
*---------------------------------------------------------------------*
* Taste im Dynpro gedrückt. Es existiert nur die Möglichkeit, das     *
* Programm zu beenden, zu verlassen.                                  *
*---------------------------------------------------------------------*
MODULE user_command_ende INPUT.

 LEAVE PROGRAM.

ENDMODULE.

*---------------------------------------------------------------------*
*                         S T A T U S _ 9 3 0 0                       *
*---------------------------------------------------------------------*
* Reiter 2 ausblenden oder alles so lassen wie es ist                 *
*---------------------------------------------------------------------*
MODULE status_9300 OUTPUT.

*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.

 IF pmx_tab2 = 'X'.
   LOOP AT SCREEN.
     IF screen-name = 'TAB2'.
       MOVE 0 TO: screen-active, screen-input, screen-output.
       MODIFY SCREEN.
     ENDIF.
   ENDLOOP.
 ENDIF.

ENDMODULE.

*---------------------------------------------------------------------*
*                    D Y N P R O _ 9 3 0 1 _ P B O                    *
*---------------------------------------------------------------------*
* Aktionen speziell bei diesem Reiter. Bild / Foto einfügen.          *
* W I C H T I G: Objektname c_pic_9301 muß gleich dem Containernamen  *
* im Dynpro 9301 sein !!!                                             *
*---------------------------------------------------------------------*
MODULE dynpro_9301_pbo OUTPUT.

 IF c_pic_9301 IS INITIAL.
   CREATE OBJECT c_pic_9301
     EXPORTING
       container_name = 'C_PIC_9301'.

   CREATE OBJECT o_pic_9301
     EXPORTING
       parent = c_pic_9301.

* Set display mode (Stretching, original size etc.)
*    CALL METHOD o_pic_9301->set_display_mode
*         EXPORTING
*              display_mode = cl_gui_picture->display_mode_stretch.
   CALL METHOD o_pic_9301->set_display_mode
        EXPORTING
             display_mode = cl_gui_picture=>display_mode_fit_center
        EXCEPTIONS
             error = 1.
 ENDIF.

* welches Foto soll gezeigt werden, interne URL bestimmen und Bild
* aktivieren. Sollte kein Bild gefunden werden, dann den Bildbereich
* leer machen (in diesem Programm wird jedoch fix immer ein Bild zur
* Verfügung gestellt).
 PERFORM upro-anfang_bild.

 IF interne_sap_url IS INITIAL.
   CALL METHOD o_pic_9301->clear_picture.
 ELSE.
   CALL METHOD o_pic_9301->load_picture_from_url
       EXPORTING url = interne_sap_url.
 ENDIF.

ENDMODULE.

***** Ende *****
* Copyright BJH Software, Datei überarbeitet am: 4.6.2005