* Glaskugel raushohl und hinein schau *tho_died hat geschrieben:Wie kann ich denn eine von mir angelegte verteilerliste ansprechen um so die den darin vermerkten USern eine Mail zu senden?!
Code: Alles auswählen.
FUNCTION z_send_mail_via_verteilerliste.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_SUBJECT) TYPE SO_OBJ_DES
*" VALUE(I_VERTEILERLISTE) TYPE SO_OBJ_NAM
*" TABLES
*" IT_MAILTEXT STRUCTURE SOLISTI1
*" EXCEPTIONS
*" DOCUMENT_ERROR
*" DOCUMENT_ADD_ERROR
*" SEND_ERROR
*" ADD_RECIPIENTS_ERROR
*" DOCUMENT_CREAT_ERROR
*"----------------------------------------------------------------------
DATA:
* Für die Mail-Objecte
lr_send_request TYPE REF TO cl_bcs,
lr_document TYPE REF TO cl_document_bcs,
lr_recipient TYPE REF TO if_recipient_bcs,
* Fehlerhandling
lr_cx_document_bcs TYPE REF TO cx_document_bcs,
lr_cx_send_req_bcs TYPE REF TO cx_send_req_bcs,
lr_cx_address_bcs TYPE REF TO cx_address_bcs ,
* kleine Helfer
l_sent_to_all TYPE os_boolean.
* -------- Sendeauftrag erstellen ------------------------
TRY.
lr_send_request = cl_bcs=>create_persistent( ).
* Sofort versenden einschalten
CALL METHOD lr_send_request->set_send_immediately
EXPORTING
i_send_immediately = 'X'.
CATCH cx_send_req_bcs INTO lr_cx_send_req_bcs.
RAISE document_creat_error.
ENDTRY.
* -------- Mailtext erstellen --------------------------------
TRY.
lr_document = cl_document_bcs=>create_document(
i_type = 'RAW'
i_text = it_mailtext[]
i_subject = i_subject ).
CATCH cx_document_bcs INTO lr_cx_document_bcs.
RAISE document_error.
ENDTRY.
* und an das Sendeobjekt hängen
TRY.
CALL METHOD lr_send_request->set_document( lr_document ).
CATCH cx_send_req_bcs INTO lr_cx_send_req_bcs.
RAISE document_add_error.
ENDTRY.
* -------- Empfänger erstellen/übergeben -----------------
TRY.
CALL METHOD cl_distributionlist_bcs=>getu_persistent
EXPORTING
i_dliname = i_verteilerliste
i_private = space
RECEIVING
result = lr_recipient.
CATCH cx_address_bcs INTO lr_cx_address_bcs.
RAISE add_recipients_error.
ENDTRY.
* und an Sendauftrag hängen
TRY.
CALL METHOD lr_send_request->add_recipient
EXPORTING
i_recipient = lr_recipient
i_express = 'X'.
CATCH cx_send_req_bcs INTO lr_cx_send_req_bcs.
RAISE add_recipients_error.
ENDTRY.
* -------- Mail versenden --------------------------------
TRY.
CALL METHOD lr_send_request->send
RECEIVING
result = l_sent_to_all.
CATCH cx_send_req_bcs INTO lr_cx_send_req_bcs.
RAISE send_error.
ENDTRY.
* Damit bei externen Mails ein eintrag in die Warteschlange gesetzt wird:
COMMIT WORK.
ENDFUNCTION.
Entweder du übergibst die verteilerliste wie von brinam geschrieben dierekt an den FuBa SO_NEW_DOCUMENT_SEND_API1:tho_died hat geschrieben:Wie finde ich nun HUGO!??
Code: Alles auswählen.
lw_receivers-receiver = 'HUGO'.
lw_receivers-rec_type = 'C'.
* Mail versenden
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_data = ls_document
TABLES
object_content = lt_content
receivers = lt_receivers.
Code: Alles auswählen.
CALL FUNCTION 'SO_DLI_READ'
EXPORTING
distributionlist = 'HUGO'
system_dli = 'X'
TABLES
member = lt_member
objpara = lt_objpara
objparb = lt_objparb
EXCEPTIONS
active_user_not_exist = 1
communication_failure = 2
component_not_available = 3
dl_name_not_exist = 4
folder_not_exist = 5
folder_no_authorization = 6
forwarder_not_exist = 7
object_not_exist = 8
object_no_authorization = 9
operation_no_authorization = 10
owner_not_exist = 11
parameter_error = 12
substitute_not_active = 13
substitute_not_defined = 14
system_failure = 15
user_not_exist = 16
x_error = 17
OTHERS = 18.
Den Satz versteh ich nicht ganz. Was genau meinst du damit.tho_died hat geschrieben:Als Empfänger wird nur vert_list angegeben, aber nicht der Inhalt.
Receiver ist bei diesem Funktionsbaustein kein Feld sondern eine Struktur mit vielen Feldern. Wenn beim Debuggen (aktuelle Anweisung = Call Function) in lt_receivers-rec_type nichts drin steht, dann hast du diesem Feld wahrscheinlich nichts zugewiesen (schau dir nochmal das Coding von JHM an).tho_died hat geschrieben:Na beim Debug steht im Receiver Feld nur 'Email_VErt' drin.
Vergiss mal einfach die Personen, wenn du mit einer Verteilerliste arbeitest. Dein Programm muss die Personen der Verteilerliste nicht kennen, das macht SAP in untergeordneten Funktionsbausteinen selbst.tho_died hat geschrieben:Da er dazu keine Person zuordnen kann., gehts shcief.
Dann stimmt rec_type = 'C'.tho_died hat geschrieben:Habe ein allgemeine angelegt...hmmm ...