IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAP Discussion :

envoi mail via outlook abap


Sujet :

SAP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut envoi mail via outlook abap
    bonjour,

    je veux envoyer un mail via buisness workplace "sbwp" dans outlook.

    J'ai utilisé le code suivant que j'ai trouvé sur internet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
      DATA: objpack   LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE.
      DATA: objhead   LIKE solisti1 OCCURS 1 WITH HEADER LINE.
      DATA: objbin    LIKE solisti1 OCCURS 10 WITH HEADER LINE.
      DATA: objtxt    LIKE solisti1 OCCURS 10 WITH HEADER LINE.
      DATA: reclist   LIKE somlreci1 OCCURS 5 WITH HEADER LINE.
      DATA: doc_chng  LIKE sodocchgi1.
      DATA: tab_lines LIKE sy-tabix.
    
    * Creation of the document to be sent
    * File Name
      doc_chng-obj_name = 'SENDFILE'.
    * Mail Subject
      doc_chng-obj_descr = 'Send External Mail'.
    * Mail Contents
      objtxt = 'Minimum bid : $250000'.
      APPEND objtxt.
      objtxt = 'A representation of the pictures up for auction'.
      APPEND objtxt.
      objtxt = 'was included as attachment.'.
      APPEND objtxt.
    
      DESCRIBE TABLE objtxt LINES tab_lines.
      READ TABLE objtxt INDEX tab_lines.
      doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
    
    * Creation of the entry for the compressed document
      CLEAR objpack-transf_bin.
      objpack-head_start = 1.
      objpack-head_num = 0.
      objpack-body_start = 1.
      objpack-body_num = tab_lines.
      objpack-doc_type = 'RAW'.
      APPEND objpack.
    
    * Creation of the document attachment
    * (Assume that the data in OBJBIN is in BMP format)
    *OBJBIN = ' \O/ '. APPEND OBJBIN.
    *OBJBIN = ' | '. APPEND OBJBIN.
    *OBJBIN = ' / \ '. APPEND OBJBIN.
    *DESCRIBE TABLE OBJBIN LINES TAB_LINES.
    *OBJHEAD = 'PICTURE.BMP'.
    *APPEND OBJHEAD.
    *
    ** Creation of the entry for the compressed attachment
    *OBJPACK-TRANSF_BIN = 'X'.
    *OBJPACK-HEAD_START = 1.
    *OBJPACK-HEAD_NUM = 1.
    *OBJPACK-BODY_START = 1.
    *OBJPACK-BODY_NUM = TAB_LINES.
    *OBJPACK-DOC_TYPE = 'BMP'.
    *OBJPACK-OBJ_NAME = 'PICTURE'.
    *OBJPACK-OBJ_DESCR = 'Representation of object 138'.
    *OBJPACK-DOC_SIZE = TAB_LINES * 255.
    *APPEND OBJPACK.
    
    
    * Completing the recipient list
      reclist-receiver = 'toto@toto.com'.
      reclist-rec_type = 'U'.
      APPEND reclist.
    
    
    
    * Sending the document
      CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
        EXPORTING
          document_data              = doc_chng
          put_in_outbox              = 'X'
        TABLES
          packing_list               = objpack
          object_header              = objhead
          contents_bin               = objbin
          contents_txt               = objtxt
          receivers                  = reclist
        EXCEPTIONS
          too_many_receivers         = 1
          document_not_sent          = 2
          operation_no_authorization = 4
          OTHERS                     = 99.
    
      CASE sy-subrc.
        WHEN 0.
          WRITE: / 'Result of the send process:'.
    
          LOOP AT reclist.
            WRITE: / reclist-receiver(48), ':'.
    
            IF reclist-retrn_code = 0.
              WRITE 'The document was sent'.
            ELSE.
              WRITE 'The document could not be sent'.
            ENDIF.
    
          ENDLOOP.
    
        WHEN 1.
          WRITE: / 'No authorization for sending to the specified number',
                   'of recipients'.
    
        WHEN 2.
          WRITE: / 'Document could not be sent to any recipient'.
    
        WHEN 4.
          WRITE: / 'No send authorization'.
    
        WHEN OTHERS.
          WRITE: / 'Error occurred while sending'.
    
      ENDCASE.

    Le programme me retourne "the document was sent". Donc le mail a l'air d'être arrivé chez le destinataire, lorsque je vais dans le buisness workplace, le mail est dans le départ mais avec un statut d'avertissement. Lorsque je regarde dans le protocole d'envoi, l'historique affiche "mail envoyé" et " attend service de communication" Que manque t'il pour que le mail soit envoyé réellement, car dans ma boîte de réception je ne reçois pas le mail.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 230
    Points : 271
    Points
    271
    Par défaut
    Regardes du coté des transactions SCOT et SOST.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    j'avais oublié de metttre une commit work à la fin du programme. Les mails sont bien visibles dans la scot et arrivent correctement dans ma boîte de réception. j'ouvre le .TXT l'aperçu du fichier est correct, mais lorsque je l'ouvre sans tenir compte de l'aperçu, le texte apparaît au kilomètre et ne tient pas compte des retour à la ligne. Pouvze-vous me dire comment faire pour que le txt tienne compte des retour à la ligne afin d'avoir un affichage correct.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut SO_DOCUMENT_SEND_API1 ou SO_NEW_DOCUMENT_ATT_SEND_API1 changer l'expéditeur
    Bonjour,

    j'utilise cette fonction pour envoyer mon mail,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
          EXPORTING
            document_data              = doc_chng
            put_in_outbox              = 'X'
          TABLES
            packing_list               = objpack
            object_header              = objhead
            contents_bin               = objbin
            contents_txt               = objtxt
            receivers                  = reclist
          EXCEPTIONS
            too_many_receivers         = 1
            document_not_sent          = 2
            operation_no_authorization = 4
            OTHERS                     = 99.
    tout fonctionne correctement, mais j'aimerais pouvoir modifier le "sender", car l'expéditeur n'est pas une personne fixe, et que mon programme est exécuté à partir d'un job. Du coup lorsque le programme est lancé par le job et comme le nom de l'auteur du job est un user générique, l'adresse mail de l'expéditeur est une adresse bidon dont l'auteur ne répondra pas.

    En déboguant la fonction 'SO_NEW_DOCUMENT_ATT_SEND_API1', j'ai vu que cette fonction appellait la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                DOCUMENT_DATA              = DOCUMENT_DATA
                PUT_IN_OUTBOX              = PUT_IN_OUTBOX
                SENDER_ADDRESS             = SPACE
                SENDER_ADDRESS_TYPE        = SPACE
                COMMIT_WORK                = COMMIT_WORK
           IMPORTING
                SENT_TO_ALL                = SENT_TO_ALL
                NEW_OBJECT_ID              = NEW_OBJECT_ID
           TABLES
                PACKING_LIST               = PACKING_LIST
                OBJECT_HEADER              = OBJECT_HEADER
                CONTENTS_BIN               = CONTENTS_BIN
                CONTENTS_TXT               = CONTENTS_TXT
                CONTENTS_HEX               = CONTENTS_HEX
                OBJECT_PARA                = OBJECT_PARA
                OBJECT_PARB                = OBJECT_PARB
                RECEIVERS                  = RECEIVERS
           EXCEPTIONS
                TOO_MANY_RECEIVERS         = 1
                DOCUMENT_NOT_SENT          = 2
                DOCUMENT_TYPE_NOT_EXIST    = 3
                OPERATION_NO_AUTHORIZATION = 4
                PARAMETER_ERROR            = 5
                X_ERROR                    = 6
                ENQUEUE_ERROR              = 7
                OTHERS                     = 8.
    et qu'il y a en import le "sender" et le "type du sender" , lorsque je regarde les valeurs par défaut contenus ce sont le sy-uname pour le sender et "B" pour le type.
    Mais lorsque j'essaie d'y mettre des valeurs la fonction me retourne des erreurs.
    Donc, la question est la suivante, est-ce que qqun sait comment faire pour changer le sender en utilisant l'un des deux fonction ci-dessus.

    salutations et bonne soirée

  5. #5
    Membre éprouvé Avatar de Celdrøn
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Juillet 2007
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant SAP

    Informations forums :
    Inscription : Juillet 2007
    Messages : 614
    Points : 1 008
    Points
    1 008
    Par défaut
    Salut,

    Qu'as tu comme erreur?
    On peut peut-être voir si quelque chose peut être fait de ce coté là.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    Je n'ai plus d'erreur, il me manquait un paramètre lorsque je testais le module fonction. Est-il possible de remplacer le SENDER = SPACE ET SENDER_ADDRESS_TYPE = SPACE par une variable ? Je voudrais que l'expéditeur ne soit pas toujours la même personne. Comment faut-il faire ?

  7. #7
    Membre éclairé Avatar de beuzy
    Femme Profil pro
    SAP
    Inscrit en
    Novembre 2008
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : SAP
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 614
    Points : 705
    Points
    705
    Par défaut
    J'ai un programme qui utilise cette fonction et en fait selon le document traité avant l'envoi de mail (fournisseur) on a une table de parametrage qui determine le responsable qui doit recevoir l'email, puis on alimente le receiver en fonction

    [code]
    * Chargement receiver
    SELECT SINGLE zzvalue FROM zmm_webfou_const
    INTO w_receiver
    WHERE field = w_lifnr.
    IF sy-subrc <> 0.
    CLEAR : w_receiver.
    ENDIF.

    *Alimentation RECEIVERS
    we_receivers-receiver = w_receiver.
    we_receivers-rec_type = c_b.
    APPEND we_receivers TO wt_receivers.
    [\code]

    * edit j'ai confondu sender et receiver ma réponse n'est donc pas utile

  8. #8
    Membre éprouvé Avatar de Celdrøn
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Juillet 2007
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant SAP

    Informations forums :
    Inscription : Juillet 2007
    Messages : 614
    Points : 1 008
    Points
    1 008
    Par défaut
    Salut,

    Alors pour la valeur à mettre dans SENDER_ADRESS_TYPE, je pense que regarder les valeurs possibles dans le domaine SO_ESCAPE te serait utile. (voir Include RSSOCONS).
    Je pense que pour toi c'est 'A' à mettre mais je peux me tromper.

    Pour ce qui est de SENDER, tu pourras surement mettre directement l'adresse de messagerie.

    Ou alors, dans le cas où tu passes par un compte SAP pour retrouver l'adresse de messagerie, la valeur à mettre dans SENDER sera le nom du compte SAP et dans SENDER_ADRESS_TYPE ce sera la valeur 'B'.

    Voila ce que j'en ai conclu en décortiquant la fonction SO_NEW_DOCUMENT_ATT_SEND_API1 donc essaie avec ça pour voir si ça fonctionne.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    Ok j'ai trouvé il suffit de mettre dans le sender le sy-uname et dans sender type il faut mettre vide.

    Et ca marche

    Merci pour l'aide et bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Soucis dans ce Code Envoi Mail via Outlook
    Par vaucluseimmo dans le forum VBA Word
    Réponses: 3
    Dernier message: 11/02/2010, 14h21
  2. [AC-2003] Envoi mail via Outlook et attachments
    Par JPaul94300 dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/08/2009, 09h48
  3. Envoi mail via Outlook
    Par coucou_tt_le_monde dans le forum VBA Access
    Réponses: 7
    Dernier message: 18/12/2008, 17h05
  4. [WD10] envoi mail via outlook
    Par yann_72 dans le forum WinDev
    Réponses: 10
    Dernier message: 18/04/2008, 08h34
  5. procedure envoie mail via OUTLOOK
    Par laurent1 dans le forum Oracle
    Réponses: 13
    Dernier message: 22/10/2006, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo