Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

using the open_form in sending fax and email

Former Member
0 Kudos

Hi,

What are the parameters needed in open_form FM if my device is 'TELEFAX'?

Thanks a lot!

4 REPLIES 4

Former Member
0 Kudos

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.

0 Kudos

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!

0 Kudos

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

0 Kudos

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