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: 

How to use OPEN_FORM mailsending Options

Former Member
0 Kudos

Hii

How ro fill the import parameters options of OPEN_FORM

FM . particularly

MAIL_SENDER

MAIL_RECIPIENT

MAIL_APPL_OBJECT

what Settings are required if i want to send My SAPScript as an attachment to a external mail ID

Ajitabh

7 REPLIES 7

Former Member
0 Kudos

see below weblog for configurational setting

Sending E-Mail from ABAP - Version 610 and Higher

/people/thomas.jung3/blog/2004/09/08/sending-e-mail-from-abap--version-610-and-higher--bcs-interface

Sending E-Mail from ABAP - Version 46D and Lower

/people/thomas.jung3/blog/2004/09/07/sending-e-mail-from-abap--version-46d-and-lower--api-interface

Check this link, u will get sample programs

http://www.sapdevelopment.co.uk/reporting/email/emailhome.htm

http://www.sapdevelopment.co.uk/reporting/email/email_sapmail.htm

Cheers,

Satya

Former Member
0 Kudos

U can pass like this

CALL FUNCTION 'OPEN_FORM'
  EXPORTING
*   DEVICE                            = 'PRINTER'
    dialog                            = 'X'
    form                              = 'ZFI_BOOK_CARDL'
    language                          = 'B'
    options                           = st_options
*   MAIL_SENDER               
*   MAIL_RECIPIENT 
*   MAIL_APPL_OBJECT  
*   RAW_DATA_INTERFACE                = '*'
*   SPONUMIV                           
  EXCEPTIONS
    canceled                          = 1
    device                            = 2
    form                              = 3
    options                           = 4
    unclosed                          = 5
    mail_options                      = 6
    archive_error                     = 7
    invalid_fax_number                = 8
    more_params_needed_in_batch       = 9
    spool_error                       = 10
    codepage                          = 11
    OTHERS                            = 12.
 IF sy-subrc <> 0 AND sy-subrc <> 1.
   MESSAGE e000(zfi) WITH 'Error opening SAPSCRIPT form'.
 ENDIF.

http://sapassist.com/groups/technical-functional/sap-r3-dev/647472

Refer this thread

The objects used here are defined as follows :


LW_COMM_VALUES TYPE SZADR_COMM_VALUES
LW_SENDER TYPE SWOTOBJID
LW_RECIPIENT TYPE SWOTOBJID
LW_SNAST TYPE SNAST

CALL FUNCTION 'OPEN_FORM' 
EXPORTING 
DEVICE = 'MAIL' <--- Note: Device is PRINTER for printing
DIALOG = SPACE
FORM = SAPscript form name
LANGUAGE = SY-LANGU
OPTIONS = GW_ITCPO
<b>MAIL_SENDER = LW_SENDER
MAIL_RECIPIENT = LW_RECIPIENT</b>
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5 
MAIL_OPTIONS = 6
ARCHIVE_ERROR = 7
INVALID_FAX_NUMBER = 8
MORE_PARAMS_NEEDED_IN_BATCH = 9
SPOOL_ERROR = 10
CODEPAGE = 11
OTHERS = 12.

Hope this solves ur problem. reward points.

jayanthi_jayaraman
Active Contributor
0 Kudos

Hi,

I don't think you need to fill those parameters in open_form.

Try passing receivers table parameters in funtion module SO_NEW_DOCUMENT_ATT_SEND_API1.

i_reclist-receiver = 'xyz@yahoo.com'.

i_reclist-express = 'X'.

i_reclist-rec_type = 'U'. "Internet address

APPEND i_reclist.

Kindly reward points by clicking the star on the left of reply,if it helps.

Former Member
0 Kudos

Hi,

Check out this link for OPEN_FORM:

http://help.sap.com/saphelp_erp2004/helpdata/en/d6/0dba1a494511d182b70000e829fbfe/content.htm


*--- Set the recipient e-mail address
LW_COMM_VALUES-ADSMTP-SMTP_ADDR = john.smith@yahoo.com

*--- Set title
LW_SNAST-TDCOVTITLE = SY-TITLE

*--- Set sender and recipient details
CALL FUNCTION 'CONVERT_COMM_TYPE_DATA'
EXPORTING
PI_COMM_TYPE = 'INT' 
PI_COMM_VALUES = LW_COMM_VALUES 
PI_REPID = SY-REPID 
PI_SNAST = LW_SNAST
PI_MAIL_SENDER = SY-UNAME 
IMPORTING
PE_ITCPO = GW_ITCPO
PE_MAIL_RECIPIENT = LW_RECIPIENT 
PE_MAIL_SENDER = LW_SENDER
EXCEPTIONS
COMM_TYPE_NOT_SUPPORTED = 1
RECIPIENT_CREATION_FAILED = 2 
SENDER_CREATION_FAILED = 3 
OTHERS = 4. 

The objects used here are defined as follows :

LW_COMM_VALUES TYPE SZADR_COMM_VALUES
LW_SENDER TYPE SWOTOBJID
LW_RECIPIENT TYPE SWOTOBJID
LW_SNAST TYPE SNAST

This will give you the recipient and sender details. Now all you need to do is call the function OPEN_FORM as follows:

CALL FUNCTION 'OPEN_FORM' 
EXPORTING 
DEVICE = 'MAIL'
DIALOG = SPACE
FORM = SAPscript form name
LANGUAGE = SY-LANGU
OPTIONS = GW_ITCPO
MAIL_SENDER = LW_SENDER
MAIL_RECIPIENT = LW_RECIPIENT
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5 
MAIL_OPTIONS = 6
ARCHIVE_ERROR = 7
INVALID_FAX_NUMBER = 8
MORE_PARAMS_NEEDED_IN_BATCH = 9
SPOOL_ERROR = 10
CODEPAGE = 11
OTHERS = 12.

Regards,

Anjali

Former Member
0 Kudos

hi,

If you want to send mail in sap-system use

SO_OBJECT_SEND Function Module.

I don't think you need to fill those parameters in open_form.

Try passing receivers,document table parameters in funtion module

try this

DATA: X_OBJECT_TYPE LIKE SOOD-OBJTP.

DATA: BEGIN OF X_OBJECT_HD_CHANGE.

INCLUDE STRUCTURE SOOD1.

DATA: END OF X_OBJECT_HD_CHANGE.

DATA: BEGIN OF X_OBJCONT OCCURS 10.

INCLUDE STRUCTURE SOLI.

DATA: END OF X_OBJCONT.

DATA: BEGIN OF X_OBJHEAD OCCURS 0.

INCLUDE STRUCTURE SOLI.

DATA: END OF X_OBJHEAD.

DATA: BEGIN OF RAW_HEAD.

INCLUDE STRUCTURE SORH.

DATA: END OF RAW_HEAD.

DATA: BEGIN OF X_RECEIVERS OCCURS 0.

INCLUDE STRUCTURE SOOS1.

DATA: END OF X_RECEIVERS.

PARAMETERS: RECEIVER LIKE X_RECEIVERS-RECNAM. " Name

*BUILD MESSAGE HEADER

MOVE 'Sort field goes here' TO X_OBJECT_HD_CHANGE-OBJSRT. " Sort field

MOVE 'Name of the object goes here' TO X_OBJECT_HD_CHANGE-OBJNAM. " Name

MOVE 'abe apna shared folder khol........aur link file dekh zara...... '

TO X_OBJECT_HD_CHANGE-OBJDES.

"Title

MOVE 'F' TO X_OBJECT_HD_CHANGE-OBJSNS. " Functional OBJECT

MOVE 'E' TO X_OBJECT_HD_CHANGE-OBJLA. " Language

  • Object type of the new document

MOVE 'RAW' TO X_OBJECT_TYPE.

CLEAR X_OBJCONT.

MOVE 'Contents of mail' TO X_OBJCONT-LINE.

APPEND X_OBJCONT.

CLEAR X_OBJCONT-LINE. APPEND X_OBJCONT.

MOVE 'More contents' TO X_OBJCONT-LINE.

APPEND X_OBJCONT.

MOVE 'Still more contents'

to x_objcont-line.

APPEND X_OBJCONT.

MOVE ' ' TO X_OBJCONT-LINE.

APPEND X_OBJCONT.

  • Specific header (Dependent on the object type, here RAW)

REFRESH X_OBJHEAD.

DESCRIBE TABLE X_OBJCONT LINES RAW_HEAD-RAWSIZ.

MOVE RAW_HEAD TO X_OBJHEAD.

APPEND X_OBJHEAD.

*RECEIVERS table

CLEAR X_RECEIVERS.

REFRESH X_RECEIVERS.

MOVE RECEIVER TO X_RECEIVERS-RECNAM. " Name

MOVE 'B' TO X_RECEIVERS-RECESC. " Receiver type

MOVE 'X' TO X_RECEIVERS-SNDCP. " Send as a copy

MOVE 'X' TO X_RECEIVERS-SNDEX. " EXPRESS DOCUMENT

APPEND X_RECEIVERS.

CALL FUNCTION 'SO_OBJECT_SEND'

EXPORTING

  • folder_id = 'OUTBOX'

  • forwarder = x_forwarder

  • object_fl_change = x_object_fl_change

OBJECT_HD_CHANGE = X_OBJECT_HD_CHANGE

  • object_id = x_object_id

OBJECT_TYPE = X_OBJECT_TYPE

OUTBOX_FLAG = 'X'

OWNER = SY-UNAME

  • store_flag = x_store_flag

  • importing

  • object_id_new = x_object_id_new

  • sent_to_all = x_sent_to_all "May need to use

TABLES

OBJCONT = X_OBJCONT

OBJHEAD = X_OBJHEAD

  • objpara = x_objpara

  • objparb = x_objparb

RECEIVERS = X_RECEIVERS.

Regards,

Albert

0 Kudos

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 <cntn01>.

* 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 from SAP is here.

http://help.sap.com/saphelp_nw04/helpdata/EN/5d/514e383e49710fe10000009b38f842/frameset.htm[url]

-

-


Edited by: Tim Jones on Aug 6, 2010 3:42 PM

0 Kudos

Apologies for the wall of text above. Cut and paste fails and I'm not forum formatting trained. The above wall does work through don't dismiss it. If you cant decipher it contact me and I'll send you the info you need