Ansicht
Dokumentation

CL_BCS - Business Communication Service

CL_BCS - Business Communication Service

CPI1466 during Backup   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Die Klasse CL_BCS bietet der Anwendung eine Schnittstelle um über die Business Communication Services (BCS) Dokumente aus dem SAP System als E-Mail, Fax oder Pager/SMS zu versenden.

Zum versenden eines Dokumentes wird ein Sendeauftrag benötigt dem anschließend verschiedene Objekte (Hauptdokument, Anlagen, Empfänger etc.) zugewiesen werden können.

Folgende Funktionen werden durch die Klasse CL_BCS unterstützt:

  • Senden von Dokumenten mit Anlagen
  • Senden an interne und externe Empfänger einschließlich Organisationseinheiten, Adressobjekte und andere Objekte, die das Interface IF_RECIPIENT_BCS unterstützen.
  • Senden in allen vom SAP-System unterstützten Kommunikationsarten (Fax, Internet, Remote Mail, SMS/Paging, Drucken )
  • Setzen von verschiedenen Sendeattributen:
  • Priorität

  • sofortiges Senden (Immediately Flag)

  • Dokumenttitel

  • Status-Handling

  • Express, Kopie, geheime Kopie

  • Verfallsdatum

  • Verknüpfen beliebiger Anwendungsobjekts mit versendeten Dokumenten
  • Senden unter anderem Namen
  • Ablage des MIME Dokuments
  • Aktivieren des Modus zur Signierung bzw. Verschlüsselung
  • Bestimmen der Verantwortlichkeit für den Sendeauftrag

Beziehungen

Beispiel

Der folgende Ablauf zeigt einen exemplarischen Aufruf des BCS in mehreren Schritten mit Beispiel-Programmzeilen.

1. Legen Sie einen Sendeauftrag an.

Legen Sie dazu mit der folgenden Methode eine Instanz der Klasse CL_BCS an:CREATE_PERSISTENT

      DATA  send_request TYPE REF TO cl_bcs.
      * create persistent send request
      send_request = cl_bcs=>create_persistent( ).

2. Legen Sie das Objekt, das versendet werden soll, als BCS-Dokument an.

Dazu legen Sie eine Instanz einer Klasse an, die das Interface IF_DOCUMENT_BCS implementiert und übergeben anschließend das Objekt an den Sendeauftrag. Mit der Methode CREATE_DOCUMENT kann eine Instanz der Klasse CL_DOCUMENT_BCS angelegt werden, wie in dem folgenden Beispiel für den Dokumenttyp RAW:

      DATA text     TYPE bcsy_text.
      DATA document TYPE REF TO cl_document_bcs.
      * create document from internal table with text
      APPEND 'Hello World' TO text.
      document = cl_document_bcs=>create_document( i_type    = 'RAW'
                                                 i_text    = text
                                                i_subject = 'Test created by BCS_EXAMPLE' ).

Zusätzlich können Sie mit der Methode ADD_ATTACHMENT der Klasse CL_DOCUMENT_BCS Anlagen hinzufügen.

3. Übergeben Sie das Objekt an den Sendeauftrag.

Dazu rufen Sie die MethodeSET_DOCUMENT der Klasse CL_BCS auf.

      * add document to send request
      send_request->set_document( document ).

4. Wenn nicht der aktuelle Benutzer als Absender verwendet werden soll, kann dieser explizit gesetzt werden.

Dazu legen Sie eine Instanz einer Klasse an, die das Interface IF_SENDER_BCS implementiert und übergeben dabei den Absender (z.B. SAP-Benutzer, Organisationseinheit oder auch ein Business-Objekt). In dem Beispiel wird der SAP-Benutzer User als Absender angelegt.

      DATA sender TYPE REF TO if_sender_bcs.
      * create sender object
      sender = cl_sapuser_bcs=>create( 'USER' ).

5. Wenn nicht der aktuelle Benutzer als Absender verwendet werden soll, müssen Sie den zuvor angelegten Absender an den Sendeauftrag übergeben.

Dazu rufen Sie die MethodeSET_SENDER der Klasse CL_BCS auf.

      * set sender at send request
      send_request->set_sender( sender ).

6. Legen Sie einen Empfänger an.

Dazu legen Sie eine Instanz einer Klasse an, die das Interface IF_RECIPIENT_BCS implementiert und übergeben dabei den Empfänger. Dies müssen Sie für jeden Empfänger durchführen. In dem Beispiel wird eine E-Mail-Adresse als Empfänger angelegt, indem eine über die Methode CREATE_INTERNET_ADDRESS der Klasse CL_CAM_ADDRESS_BCS erzeugte Instanz übergeben wird.

      DATA recipient TYPE REF TO if_recipient_bcs.
      * create recipient - please replace the e-mail address!
      recipient = cl_cam_address_bcs=>create_internet_address('example.user@company.com' ).

7. Übergeben Sie die Empfänger mit den jeweiligen Sendeattributen ( Express, Kopie, geheime Kopie, kein Weiterleiten) an den Sendeauftrag.

Dazu rufen Sie die MethodeADD_RECIPIENT der Klasse CL_BCS auf. In dem Beispiel wird für den Empfänger das Expressflag gesetzt.

      * add recipient with its respective attributes to send request
      send_request->add_recipient( i_recipient = recipient
                                 i_express   = 'X' ).

8. Senden Sie das Objekt.

Dazu rufen Sie für den Sendeauftrag die MethodeSEND

der Klasse CL_BCS auf.

      DATA send_to_all type boolean.
      * send document
      send_to_all = send_request->send( i_with_error_screen = 'X' ).

Alternativ kann der Sendebildschirm aufgerufen werden, wenn die Benutzer die Möglichkeit zum Angeben von Empfängern und Sendeattributen haben sollen. Das Senden wird dann vom Benutzer initiiert.

Dazu rufen Sie für den Sendeauftrag die MethodeEDIT

der Klasse CL_BCS auf, mit dem Sie das Sendebild als Dialogfenster oder als Vollbild aufrufen können.

      * send document
      send_request->edit( i_hide_note     = 'X'
                        i_starting_at_x = 12
                         i_starting_at_y = 5
                         i_ending_at_x   = 97
                         i_ending_at_y   = 22 ).


9. Sie müssen an geeigneter Stelle explizit ein COMMIT WORK setzen.

Es ist unbedingt notwendig, dass die Anwendung das COMMIT WORK selbst setzt! Ansonsten werden die Persistenzdienste der Object Services nicht gestartet, und es fehlen wesentliche Sendedaten, die zum Abbruch des Sendevorgangs führen können. Ein weiteres Kennzeichen dafür, dass kein oder ein unzureichendes COMMIT WORK abgesetzt wurde, ist ein Eintrag in der SOST mit dem Status: 'Noch kein Eintrag in der Warteschlange'.

      * set expicit commit work to persist objects of the send process
      COMMIT WORK.

Ausgenommen sind solche Anwendungen, die den Transaktionsdienst der Object Services benutzen und eine Sendeschnittstelle innerhalb einer OO-Transaktion aufrufen. Ebenso solche Anwendungen, die die Sendeschnittstelle in der Verbuchung rufen.

Beispielprogramme:

In jedem System stehen Beispielreports BCS_EXAMPLE_* zur Verfügung die verschiedene Szenarien abbilden.

Hinweise

Das entsprechend verwendete SAP System sollte für den Versand von Dokumenten über SMTP konfiguriert sein. Weitere Informationen sind dazu im Hinweis 455140 zu finden.

Weiterführende Informationen






Fill RESBD Structure from EBP Component Structure   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 11269 Date: 20240426 Time: 160249     sap01-206 ( 100 ms )