[52940] in SAPr3-news

home help back first fref pref prev next nref lref last post

Nachtrag zu Problem Datum_Zeit auslesen und ABAP -> Novell GroupWise5 - eMail

daemon@ATHENA.MIT.EDU (leowie)
Wed Jan 12 07:51:45 2005

To: sapr3-news@mit.edu
Date: 12 Jan 2005 04:51:40 -0800
From: leowie@gmx.at (leowie)
Message-ID: <811b8ef2.0501120451.3e3f76b0@posting.google.com>

Liebe Leser und Leserinnen,

nachträglich noch weitere Infos zu 
"Novell GroupWise5: Problem Datum_Zeit auslesen", 
die ein freundlicher Leser hinterfragt hat:

o.k.:
Prinzipiell funktioniert das Programm und es wäre in der Art
einsetzbar; es legt die gewünschten Termine an (ggf. mehrere
"übereinander" im Entwurfsmodus).

Problem:
... gibt es lediglich beim sog. "BusySearch" zwecks Ermittlung von
bereits belegten Terminen: es werden Anzahl und Dauer ermittelt,
jedoch sind die Dati und Zeiten nicht auslesbar (konkret: StartDate
und EndDate von einem TimeBlock). Anmerkung dazu: Der BusysSearch
selbst hat einen Zeitraum von min. 7 Tagen; dadurch ist ein
zielgerichteter Search auf den geplanten Termin leider nicht möglich.

Weiters war da noch die Frage, ob/wie e-Mail senden "ABAP -> Novell
Groupwise5 e-Mail" klappt.
Antwort: ja, nämlich prinzipiell etwa siehe unten (bitte den
primitiven Programmierstil zu entschuldigen) ...

Ich danke nochmals für etwaige Hinweise,
Leo


REPORT Z_GROUPWISE5_EMAIL .

*----------------------------------------------------------------------*
* Topic:       Example: eMail mit Novell Groupwise 5                  
*
*                                                                     
*
* Description: Beispiel-Programm, welches Novell GroupWise 5 startet  
*
*              und ein eMail sendet.                                  
*
*                                                                     
*
* R/3 Release: MiniSAP TestSuite / 46D (Beilage Buch: ABAP Objects)   
*
*                                                                     
*
*              Novell GroupWise API: siehe                            
*
*              http://developer.novell.com/ndk/gwobjapi.htm           
*
*                                                                     
*
* Programmer:  Leo Wiebogen                                           
*
* Date:        Dec 2004                                               
*
*                                                                     
*
*------------------------------ Questions
-----------------------------*
* Version  1: Diskussionsbasis zur geplanten Schulung                 
*
*                                                                     
*
*   Programm funktioniert, aber noch Qick+Dirty Spagetti-Code!        
*
*   (habe noch keine APAP-Erfahrung, keine Schulungen genossen etc.)  
*
*                                                                     
*
*   Fraglich:                                                         
*
*   Names? Functions? Includes? Input-Parameter? Messages?            
*
*   Debug-Modus on/off? Code-Beauty (KeyWords) ...                    
*
*                                                                     
*
*-------------------------------Corrections----------------------------*
* Date        Userid     Correction     Text                          
*
* 22.12.2004  Wiebogen   :::::::::::::: ::::::::::::::::::::::::::::: 
*
*----------------------------------------------------------------------*

* --- Includes ---
INCLUDE OLE2INCL.
* --- Local Variables ---
CONSTANTS: OK TYPE I VALUE 0.

data: debugmode type i value 0,
      bug       type i value 0,
      ii        type i value 0.

data: UserID(25) TYPE c,
      CmdLine(70) TYPE c,
      Password(25) TYPE c,
      WhenToPrompt(25) TYPE c,
      Reserved(25) TYPE c .
* --- COM-Handles ---
DATA: GWSession     TYPE OLE2_OBJECT,
      GWAccount     TYPE OLE2_OBJECT,
      GWFolder      TYPE OLE2_OBJECT,
      GWMessages    TYPE OLE2_OBJECT,
      GWMessage     TYPE OLE2_OBJECT,
      GWMail        TYPE OLE2_OBJECT,
      GWRecipients  TYPE OLE2_OBJECT,
      GWRecipient   TYPE OLE2_OBJECT,
      GWAddress     TYPE OLE2_OBJECT,
      GWAttachment  TYPE OLE2_OBJECT,
      GWAttachments TYPE OLE2_OBJECT .

* --- MAIN ---
PERFORM check_GW-installed.
IF Bug = 0.

*   --- GWSession_init ---
  CREATE OBJECT GWSession 'NovellGroupWareSession' .
  perFORM check_GW-OLE-Errors.

  PERFORM init_GW-Objects.

  PERFORM get_GW-Acco-Fold-Addr-Mess.
  ii = 1.
  perFORM info_debug.

  PERFORM create_GW-Mail.

*    Free all objects
  PERFORM init_GW-Objects.
  FREE OBJECT GWSession    .
  GWSession-HANDLE = -1.

ENDIF.

*----------------------------------------------------------------------*
FORM create_GW-Mail.

  perFORM check_GW-OLE-Errors.
  ii = 10.
  perFORM info_debug.

  if bug = 0.

*   --- Message erzeugen (liegt vorerst im Root-Folder;
*       noch ungesendeter Entwurf, ohne TO's etc.)
    CALL METHOD OF GWMessages 'ADD' = GWMessage exporting
                                                 #1 =
'GW.MESSAGE.MAIL'
                                                 #2 = 4 .    " 4 =
draft
    perFORM check_GW-OLE-Errors.
    ii = 20.
    perFORM info_debug.

    if bug = 0.   " --- GWMessage added

      FREE OBJECT GWMessages.  " wird nicht mehr benoetig

*     --- Subject und BodyText zuweisen
      SET PROPERTY OF GWMessage 'Subject'
        = 'Test: ABAP Groupwise5 eMail'.
      SET PROPERTY OF GWMessage 'BodyText'
        = 'Primitives Testprogramm Z_GroupWise5_eMail von Leo
Wiebogen'.

      perFORM check_GW-OLE-Errors.
      ii = 30.
      perFORM info_debug.

      if bug = 0. "Subj + Body set

*     --- TO, CC und BC - Empfaenger ---

        CALL METHOD OF GWMessage 'RECIPIENTS' = GWRecipientS.
        perFORM check_GW-OLE-Errors.
        ii = 40.
        perFORM info_debug.

        if bug = 0. " GWRecipientS added

*          Loop: alle TO's ... (vorerst nur eine Adresse)
             CALL METHOD OF GWRecipients 'ADD' = GWRecipient
                 exporting  #1 = 'leo.wiebogen@xxx.at'
                            #2 = ''
                            #3 = 0.

             if bug = 0. "GWRecipient added
               SET PROPERTY OF GWRecipient 'EMailAddress'
                   = 'leo.wiebogen@xxx.at'.
               SET PROPERTY OF GWRecipient 'DisplayName'
                   = 'Leo Wiebogen'.
               SET PROPERTY OF GWRecipient 'EMailType'
                   = ''. " 'NGW' = falls in Novell GroupWise (?),
                         " ''    = extern
               SET PROPERTY OF GWRecipient 'TargetType'
                   = 0.  " 0 = TO primary 1 = CC. 2 = BC

               perFORM check_GW-OLE-Errors.
               ii = 50.
               perFORM info_debug.

             endif. "GWRecipient TO added
*          end loop TO

*          Loop: alle CC's ... (vorerst nur eine Adresse)
*            ...
*          end loop CC

*          Loop: alle BC's ... (vorerst nur eine Adresse)
*            ...
*          end loop

        endif. " GWRecipientS added
        FREE OBJECT GWRecipientS.  " wird nicht mehr benoetig

*       --- Attachments ---
        CALL METHOD OF GWMessage 'ATTACHMENTS' = GWAttachments.

        perFORM check_GW-OLE-Errors.
        ii = 70.
        perFORM info_debug.

        if bug = 0. " GWAttachmentS added

*         Loop: alle Attachments ... (vorerst nur ein Attachment)
             CALL METHOD OF GWAttachments 'ADD' = GWAttachment
                           exporting
                             #1 = 'H:\ABAP\GW\Z_GROUPWISE5_EMAIL.ABP'
                             #2 = 1 . " 1 = File

             perFORM check_GW-OLE-Errors.
             ii = 80.
             perFORM info_debug.

*         end loop Att

         endif. " GWAttachmentS added

         FREE OBJECT GWAttachments.  " wird nicht mehr benoetig

*        --- Senden der Mail - Message ---
*        if abfrage mail seinen = wahr ...
           CALL METHOD OF GWMessage 'SEND'.

           perFORM check_GW-OLE-Errors.
           ii = 90.
           perFORM info_debug.

*        endif.

      endif. "Subj + Body set

    endif. " GWMessage is added

  endif.

ENDFORM.

*----------------------------------------------------------------------*
FORM get_GW-Acco-Fold-Addr-Mess.

* --- Login in den Account ---
  call method of GWSession 'login' = GWAccount importing
                          #1 = UserID
                          #2 = CmdLine
                          #3 = Password
                          #4 = WhenToPrompt
                          #5 = Reserved .
                          " imp = rein, exp = raus
  perFORM check_GW-OLE-Errors.
  if bug = 0.

*   --- Den Root Folder ermitteln ----
*   im Root Folder wird das Mail vor dem Senden angelegt
    GET PROPERTY OF GWAccount 'rootfolder' = GWFolder.

    PERFORM check_GW-OLE-Errors.
    if bug = 0.


*     GET PROPERTY OF GWAccount 'rootfolder' = GWFolder.
      FREE OBJECT GWAccount.   " wird nicht mehr benoetigt
        " siehe auch:   SET PROPERTY OF ... '...' = ...

*     --- Adresse des Root Folders merken ---
*     ASSIGN GWAddress  = GWFolder:Owner.
      GET PROPERTY OF GWFolder 'owner' = GWAddress.

      PERFORM check_GW-OLE-Errors.
      if bug = 0.
*       --- Alle-MessageS im Root Folder ermitteln ---
*       hier wird die neue Message erzeugt, bleibt da bis zum Senden
        GET PROPERTY OF GWFolder 'messages' = GWMessages.
        PERFORM check_GW-OLE-Errors.
*       OK wenn hier angelangt ohne Fehler.
        FREE OBJECT GWFolder.   " wird nicht mehr benoetigt
      endif.
    endif.
  endif.
ENDFORM.

*----------------------------------------------------------------------*
FORM check_GW-installed.
* check whether and where Novell Groupwise 5 is installed
* (Quelle/Vorlage: FUNCTION RSAQ_XINT_CRYSTAL_REPORTS2)
  data prg_location(255) type c.
  CALL FUNCTION 'REGISTRY_GET'
       EXPORTING
            key     = 'SHELL\OPEN\COMMAND'
            section = 'groupwise5'
                    " 'word.document.8'
                    " 'excel.sheet.8'
       IMPORTING
            value   = prg_location.

  IF prg_location IS INITIAL.
    CALL FUNCTION 'POPUP_TO_INFORM'
      EXPORTING
        TITEL   = 'Novell GroupWise 5 nicht installiert'(011)
        TXT1    = 'Für diese Aktion benötigen Sie Novell
Groupwise'(012)
        TXT2    = 'Kontaktieren Sie Ihren PC-Administrator'(013) .
    Bug = 99.
    EXIT.
  ELSE.

    data dummy(25) TYPE c.
    SPLIT prg_location AT '/' INTO prg_location dummy. "remove /dde

    CALL FUNCTION 'POPUP_TO_INFORM'
      EXPORTING
        TITEL         = 'Gefundenes Programm'
        TXT1          = prg_location
        TXT2          = ''. " sdummy

  endif.
ENDFORM.

*----------------------------------------------------------------------*
FORM init_GW-Objects.
  FREE OBJECT GWAttachment .
  FREE OBJECT GWAttachments .
  FREE OBJECT GWAddress    .
  FREE OBJECT GWRecipient  .
  FREE OBJECT GWRecipients .
  FREE OBJECT GWMail       .
  FREE OBJECT GWMessage    .
  FREE OBJECT GWMessages   .
  FREE OBJECT GWFolder     .
  FREE OBJECT GWAccount    .
ENDFORM.

*----------------------------------------------------------------------*
* Subroutine for error handling
FORM check_GW-OLE-Errors.

  IF SY-SUBRC NE 0.
    " WRITE: / 'Error in OLE call', SY-MSGLI.

    CALL FUNCTION 'POPUP_TO_INFORM'
      EXPORTING
        TITEL   = 'Error'
        TXT1    = 'Error in OLE Call:'
        TXT2    = 'GroupWise5'.

      perFORM init_GW-Objects.
      FREE OBJECT GWSession.
      GWSession-HANDLE = -1.

      Bug = 1.

    EXIT.
  ENDIF.
ENDFORM.

*----------------------------------------------------------------------*
* Subroutine for info handling
FORM info_debug.
  IF debugmode = 1.
    CALL FUNCTION 'POPUP_TO_INFORM'
      EXPORTING
        TITEL   = 'Info Debugging'
        TXT1    = 'Stelle:'
        TXT2    = ii.
  ENDIF.
ENDFORM.

home help back first fref pref prev next nref lref last post