SO_NEW_DOCUMENT_ATT_SEND_API1 mit csv

Getting started ... Alles für einen gelungenen Start.
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

SO_NEW_DOCUMENT_ATT_SEND_API1 mit csv

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) »
Hallo an alle,

ich verwende den FUBA SO_NEW_DOCUMENT_ATT_SEND_API1 um eine E-Mail zu versenden welche eine csv Datei im Anhang hat. Aber bei der csv Datei wird alles in die erste Zeile geschrieben.

Vielen Dank für die Hilfe.

Grüße Adrian

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  ZMAILMATERIALANLAGE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZMAILMATERIALANLAGE.

TABLES MARA.

DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS  2 WITH HEADER LINE,
      OBJHEAD LIKE SOLISTI1   OCCURS  1 WITH HEADER LINE,
      OBJBIN  LIKE SOLISTI1   OCCURS 10 WITH HEADER LINE,
      OBJTXT  LIKE SOLISTI1   OCCURS 10 WITH HEADER LINE,
      RECLIST LIKE SOMLRECI1  OCCURS  5 WITH HEADER LINE,
      DOC_CHNG LIKE SODOCCHGI1,
      TAB_LINES LIKE SY-TABIX.

DATA: MARA1 TYPE TABLE OF MARA WITH HEADER LINE.

DATA: MATNR LIKE MARA-MATNR,
      MAKTX LIKE MARA-/CMD/MATKURZTEXT,
      ERNAM LIKE MARA-ERNAM.

DATA: JAHR(4),
      MONAT(2),
      TAG(2),
      DATUM(10).

JAHR  = SY-DATUM(4).
MONAT = SY-DATUM+4(2).
TAG   = SY-DATUM+6(2).

CONCATENATE TAG MONAT JAHR INTO DATUM SEPARATED BY '.'.

SELECT * FROM MARA INTO TABLE MARA1
  WHERE ERSDA = SY-DATUM.

* Erstellen des zu versendenden Dokuments

DOC_CHNG-OBJ_NAME = 'Materialanlage'.
CONCATENATE  'Materialanlagen vom' DATUM INTO DOC_CHNG-OBJ_DESCR .

OBJTXT = 'Materialanlage am'.
APPEND OBJTXT.
OBJTXT = ''.
APPEND OBJTXT.
OBJTXT = 'Materialnummer____Materialkurztext________________________Ersteller___'.
APPEND OBJTXT.
OBJTXT = '----------------------------------------------------------------------'.
APPEND OBJTXT.

CONCATENATE 'ARTNR' 'HERST' 'MATTXT' 'EAN' 'LTYP' 'LPL' 'BME' 'LÄNGE' 'BREITE' 'HÖHE' 'VOLUMEN' 'GEWICHT NETTO' 'GEWICHT BRUTTO' '' INTO OBJBIN SEPARATED BY ';'.
APPEND OBJBIN.

LOOP AT MARA1.

  MOVE: MARA1-MATNR            TO MATNR,
        MARA1-/CMD/MATKURZTEXT TO MAKTX,
        MARA1-ERNAM            TO ERNAM.

  SHIFT MATNR LEFT DELETING LEADING '0'.

  CONCATENATE MATNR MAKTX ERNAM INTO OBJBIN SEPARATED BY ';'.

  CONCATENATE: MATNR '__________________________________________' INTO MATNR,
               MAKTX '__________________________________________' INTO MAKTX,
               ERNAM '__________________________________________' INTO ERNAM.

  CONCATENATE MATNR MAKTX ERNAM INTO OBJTXT.

  CLEAR: MATNR, MAKTX, ERNAM.

  APPEND OBJTXT.
  APPEND OBJBIN.

ENDLOOP.

DESCRIBE TABLE OBJTXT LINES TAB_LINES.

READ TABLE OBJTXT INDEX TAB_LINES.

DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).

* Erstellen des Eintrags zum komprimierten Dokument

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.

* Erstellen der Anlage für das Dokument

DESCRIBE TABLE OBJBIN LINES TAB_LINES.

CONCATENATE DATUM ' Materialanlage.csv' into objhead.
APPEND OBJHEAD.

* Erstellen des Eintrags zur komprimierten Anlage

OBJPACK-TRANSF_BIN = 'X'.
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM   = 1.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM   = TAB_LINES.
OBJPACK-DOC_TYPE   = 'CSV'.
OBJPACK-OBJ_NAME   = 'ANLAGE'.
OBJPACK-OBJ_DESCR  = 'Abbildung Objekt 138'.
OBJPACK-DOC_SIZE   = TAB_LINES * 255.

APPEND OBJPACK.

* Füllen der Empfängerliste

RECLIST-RECEIVER = 'TEST@TEST.com'.
RECLIST-REC_TYPE = 'U'.

APPEND RECLIST.

* Versenden des Dokuments

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
  EXPORTING
    DOCUMENT_DATA              = DOC_CHNG
    PUT_IN_OUTBOX              = 'X'
    COMMIT_WORK                = '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.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: SO_NEW_DOCUMENT_ATT_SEND_API1 mit csv

Beitrag von a-dead-trousers (Top Expert / 4485 / 231 / 1205 ) »
hi!

Du musst glaub ich selbst für CR+LF in der Ausgabetabelle sorgen.

Am Besten du stopfst deine Daten Zeile für Zeile in eine Stringtabelle.

Code: Alles auswählen.

DATA: lt_string TYPE stringtab.
Dann machst du

Code: Alles auswählen.

CONCATENATE LINES OF lt_string INTO ld_string SEPARATED BY CL_ABAP_CHAR_UTILITITES=>CR_LF.
Um abschließend die Ausgabetabelle für den Baustein zu befüllen kannst du meinen Codeschnippsel zum Tabellen-Split verwenden.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Adrian

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: SO_NEW_DOCUMENT_ATT_SEND_API1 mit csv

Beitrag von black_adept (Top Expert / 4159 / 136 / 960 ) »
Hallo Adrian,

das hilft dir zwar nicht mit deinem aktuellen Problem - aber ich fand den SO_SEND...API nie sonderlich schön. Aber SAP bietet (ab welchem Release weiß ich nicht) die CL_BCS Klasse an, die auch diese Funktionalitäten bereitstellt aber viel leichter zu bedienen ist.

Beispielprogramme findest du zu Hauf im System - die beginnen alle mit "BCS_" und dann "DEMO" oder "TEST"

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Adrian

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: SO_NEW_DOCUMENT_ATT_SEND_API1 mit csv

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) »
Hallo Dead Trousers,

ich habe bis jetzt noch nie objektorientiert Programmiert. Wie muss ich die Klasse und den Split einfügen.

Vielen Dank für die Antwort.

Gruß Adrian.

Re: SO_NEW_DOCUMENT_ATT_SEND_API1 mit csv

Beitrag von a-dead-trousers (Top Expert / 4485 / 231 / 1205 ) »
ähm... Mein Beispielcoding enthält keine Klassen. Das kannst du 1:1 so verwenden wie es ist.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

0
Antw.
3113
Views
Send EXPRES SAP MAIL
von Anita57 » 30.07.2013 13:19 • Verfasst in ABAP® für Anfänger
4
Antw.
4468
Views
Send query as attachment by email
von Fistandantilus » 24.07.2013 08:33 • Verfasst in ABAP® für Anfänger
0
Antw.
4312
Views
DOCUMENT VIEWER
von SAP_ENTWICKLER » 17.01.2015 15:34 • Verfasst in ABAP® Core
0
Antw.
5176
Views
Document Viewer
von joffi68 » 17.07.2007 14:29 • Verfasst in Basis
0
Antw.
3310
Views
SAP Document Builder: Dokumenterzeugung
von robin.heidrich » 11.07.2019 16:53 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.