03-31-2008 3:16 PM
Hi,
What are the parameters needed in open_form FM if my device is 'TELEFAX'?
Thanks a lot!
03-31-2008 3:19 PM
HI,
call function 'OPEN_FORM'
exporting
form = form
exceptions
canceled = 1
device = 2
form = 3
options = 4
unclosed = 5
mail_options = 6
archive_error = 7
others = 8.
03-31-2008 4:26 PM
Hi,
What should be the value of the parameters below of open_form FM in order to do the fax/mail successfully?
MAIL_SENDER
MAIL_RECIPIENT
MAIL_APPL_OBJECT
Thanks a lot!
08-06-2010 2:30 PM
Had a play with this today and managed to send e-mail with pdf attachment using open form not rocket science
See RSSOKIF2 SAP Standard Program that sends faxes directly.
Amending this program to pass e-mail p_rcvr(50 Character field) parameter instead of fax details(LAND and NUMBER) and amending set up of receiver to e-mail TypeId = u2018Uu2019 instead of u2018Fu2019 allows sending e-mails with the SAPScript attached as a PDF directly from Function Module OPEN_FORM.
REPORT ztj_test_sapscript_mail2 .
************************************************************************
Verwendung des Kommunikations-Interfaces über SAPscript:
*
Dieser Report zeigt an einem einfachen Beispiel, wie man auch
über SAPscript von der erweiterten Funktionalität des
neuen Kommunikations-Interfaces profitieren kann.
Hier gezeigt am Beispiel des FAXens.
*
************************************************************************
TABLES: soud.
PARAMETERS: p_rcvr(50) TYPE c.
Makros für Zugriff aufs BOR
INCLUDE .
Datendeklaration
* (BOR)
DATA: sender_id LIKE swotobjid,
appl_object_id LIKE swotobjid,
recipient_id LIKE swotobjid,
recipient TYPE swc_object,
sender TYPE swc_object,
recipient_tab TYPE swc_object OCCURS 0 WITH HEADER LINE,
folder TYPE swc_object,
BEGIN OF sofmfol_key,
foldertype LIKE sofm-foltp,
folderyear LIKE sofm-folyr,
foldernumber LIKE sofm-folno,
type LIKE sofm-doctp,
year LIKE sofm-docyr,
number LIKE sofm-docno,
forwarder LIKE soub-usrnam,
END OF sofmfol_key,
bor_key LIKE swotobjid-objkey,
address_string LIKE soxna-fullname.
* (SAPscript)
DATA: header LIKE thead,
result LIKE itcpp,
lines LIKE tline OCCURS 0 WITH HEADER LINE,
otfdata LIKE itcoo OCCURS 0,
options LIKE itcpo.
Deklaration eines Containers
swc_container container.
************************************************************************
Sender (BOR-Objekt-ID) *
************************************************************************
Objektreferenz auf ein RECIPIENT-Objekt erzeugen
swc_create_object sender 'RECIPIENT' space.
Container leeren
swc_clear_container container.
Adresse (aufrufender interner Benutzer)
swc_set_element container 'AddressString' sy-uname.
Adreßtyp (interner Benutzer)
swc_set_element container 'TypeId' 'B'.
Aufruf der Methode RECIPIENT.FindAddress
swc_call_method sender 'FindAddress' container.
Ausgabe der zur Ausnahme gehörigen Fehlermeldung
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno.
ENDIF.
Ermittlung der BOR-Objekt-ID
swc_object_to_persistent sender sender_id.
************************************************************************
Empfänger (BOR-Objekt-ID) *
************************************************************************
Objektreferenz auf ein RECIPIENT-Objekt erzeugen
swc_create_object recipient 'RECIPIENT' space.
Container leeren
swc_clear_container container.
Importparameter: Adreßtyp (FAX)
swc_set_element container 'TypeId' 'U'.
Importparameter: FAX-Nummer
MOVE: p_rcvr TO address_string.
swc_set_element container 'AddressString' address_string.
Aufruf der Methode RECIPIENT.CreateAddress
swc_call_method recipient 'CreateAddress' container.
Ausgabe der zur Ausnahme gehörigen Fehlermeldung
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno.
ENDIF.
Ermittlung der BOR-Objekt-ID
swc_object_to_persistent recipient recipient_id.
************************************************************************
Anwendungsobjekt (BOR-Objekt-ID) *
************************************************************************
Dieser Parameter (MAIL_APPL_OBJECT) sollte mit der BOR-Objekt-ID
des Anwendungsobjekts (z.B. Rechnung, Bestellung), von dem aus
das Senden initiiert wird, gefüllt werden. Beim Senden wird dieses
Anwendungsobjekt automatisch mit dem Dokument verknüpft.
In diesem Beispiel wird als Anwendungsobjekt-ID die BOR-ID des
Eingangs des Reportaufrufers genommen.
Lesen der Eingangs-ID des Aufrufers
SELECT * FROM soud WHERE sapnam LIKE sy-uname AND deleted = ' '.
ENDSELECT.
IF sy-subrc NE 0.
Aufrufer besitzt kein Office => wird angelegt
CALL FUNCTION 'SO_USER_AUTOMATIC_INSERT'
EXPORTING
sapname = sy-uname
EXCEPTIONS
no_insert = 1
sap_name_exist = 2
x_error = 3
OTHERS = 4.
IF sy-subrc NE 0.
Office konnte nicht angelegt werden: Inbox-ID = SPACE
CLEAR soud.
ELSE.
* Neuer Versuch: Lesen der Eingangs-ID des Aufrufers
SELECT * FROM soud WHERE sapnam LIKE sy-uname AND deleted = ' '.
ENDSELECT.
ENDIF.
ENDIF.
Anlegen eines Anwendungsobjekts (hier vom Typ SOFMFOL)
CLEAR sofmfol_key.
sofmfol_key-type = 'FOL'.
sofmfol_key-year = soud-inbyr.
sofmfol_key-number = soud-inbno.
bor_key = sofmfol_key.
IF NOT bor_key IS INITIAL.
swc_create_object folder 'SOFMFOL' bor_key.
IF sy-subrc = 0.
* Ermittlung der BOR-Objekt-ID
swc_object_to_persistent folder appl_object_id.
IF sy-subrc NE 0.
CLEAR appl_object_id.
ENDIF.
ENDIF.
ELSE.
CLEAR appl_object_id.
ENDIF.
************************************************************************
Anlegen des Textbausteins, d.h. des zu faxenden Textes *
************************************************************************
REFRESH lines.
CLEAR lines.
lines-tdline = 'E-mail of SAPScript as a PDF Attachment'.
APPEND lines.
CLEAR lines.
lines-tdformat = '* '.
lines-tdline = 'If this works then you need a raise :)'.
APPEND lines.
Füllen des Text-Headers für SAPscript
CLEAR header.
header-tdobject = 'TEXT'.
header-tdname = 'TestMail'.
header-tdid = 'ST'.
header-tdspras = sy-langu.
header-tdform = 'SYSTEM'.
CLEAR options.
CONCATENATE 'Sending SAPScript by E-mail' sy-datum sy-uzeit
INTO options-tdtitle SEPARATED BY space.
************************************************************************
Aufruf von SAPscript *
************************************************************************
Auflösen des Recipient-Objekts in "flache" Recipient-Objekte mit
Hilfe der Methode Expand.
Bei diesem konkreten Beispiel (Recipient = genau eine Fax-Nummer)
ist diese Auflösung eigentlich nicht nötig. Für den allgemeinen Fall
wird diese Vorgehensweise jedoch dringend empfohlen und daher in
diesem Beispiel vorgeführt.
swc_clear_container container.
REFRESH recipient_tab.
swc_call_method recipient 'Expand' container.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno.
ENDIF.
"Flache" Recipient-Objekte aus Container lesen
swc_get_table container 'ResultTable' recipient_tab.
IF sy-subrc NE 0.
REFRESH recipient_tab.
ENDIF.
Loop über die "flachen" Recipient-Objekt.
LOOP AT recipient_tab.
* Für jedes "flache" Recipient-Objekt ein Aufruf von SAPscript:
* BOR-Objekt-ID des Handles ermitteln
swc_object_to_persistent recipient_tab recipient_id.
* Aufruf von OPEN_FORM
CALL FUNCTION 'OPEN_FORM'
EXPORTING
device = 'MAIL'
dialog = space
form = header-tdform
language = header-tdspras
OPTIONS = options
mail_sender = sender_id
mail_recipient = recipient_id
mail_appl_object = appl_object_id
EXCEPTIONS
canceled = 1
device = 2
form = 3
OPTIONS = 4
unclosed = 5
mail_options = 6
OTHERS = 7.
IF sy-subrc NE 0.
MESSAGE a634(so) WITH 'OPEN_FORM' sy-subrc.
ENDIF.
CALL FUNCTION 'WRITE_FORM_LINES'
EXPORTING
header = header
TABLES
lines = lines
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
MESSAGE a634(so) WITH 'WRITE_FORM_LINES' sy-subrc.
ENDIF.
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT = RESULT
tables
otfdata = otfdata
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
MESSAGE a634(so) WITH 'CLOSE_FORM' sy-subrc.
ENDIF.
* Commit work wird unbedingt benötigt für Verknüpfung
COMMIT WORK.
Protokollausgabe
WRITE: / 'Done!... well hopefully'.
ENDLOOP.
Help documentation on BCI from SAP is here.
http://help.sap.com/saphelp_nw04/helpdata/EN/5d/514e383e49710fe10000009b38f842/frameset.htm
08-06-2010 2:34 PM
Apologies for the wall of text. My staple cut and paste doesn't seem to produce great looking replies in SDN. Feel free to contact me for a better formatted response