[52940] in SAPr3-news
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.