Code: Alles auswählen.
data: ld_xstring type xstring.
READ DATASET lv_file_name INTO ld_xstring.
CLOSE DATASET lv_file_name.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Chilledkroete
Die Methode von adt ist sehr schön allgemein. Für den Mailvesand kannst du aber auch den SAP-Standard verwenden, da für Attachments üblicherweise eine Übergabetabelle mit Zeilenstruktur SOLIX erwartet wird.a-dead-trousers hat geschrieben:...
In die Tabellarische Form kriegst du das Ganze mithilfe meines SPLIT für BYTE.
lg ADT
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Chilledkroete
Tja, ich mach sowas gerne selberblack_adept hat geschrieben:Die Methode von adt ist sehr schön allgemein. Für den Mailvesand kannst du aber auch den SAP-Standard verwenden, da für Attachments üblicherweise eine Übergabetabelle mit Zeilenstruktur SOLIX erwartet wird.
Und für das Umwandeln in SOLIX-Tabellen stellt SAP netterweise die Klasse cl_bcs_convert zur Verfügung. ( Und für ältere Systeme die diese Klasse noch nicht haben gibt es alternativ den FuBa "SCMS_XSTRING_TO_BINARY" )
Code: Alles auswählen.
CALL METHOD grid1->get_selected_rows "[i]Erkennt die im ALV-Grid markierte Zeile für die Erkennung der eigentl. Datei[/i]
IMPORTING
et_row_no = lt_row_no.
LOOP AT lt_row_no
INTO ls_test.
READ TABLE gt_zebghprot ASSIGNING <ls_test> INDEX ls_test-row_id.
IF sy-subrc = 0.
LOOP AT lt_filename
INTO ls_filename.
ls_filename-fileintern = <ls_test>-dokid.
ENDLOOP.
CALL FUNCTION 'FILE_GET_NAME' "[i]Setzt den entsprechenden Dateipfad zusammen.[/i]
EXPORTING
logical_filename = 'ZE_ABLESUNG'
parameter_1 = 'SER_Documente'
parameter_2 = <ls_test>-dokid
IMPORTING
emergency_flag = lv_emergency_flag
file_format = lv_file_format
file_name = lv_file_name
EXCEPTIONS
file_not_found = 1
OTHERS = 2.
OPEN DATASET lv_file_name FOR INPUT IN BINARY MODE. "[i]Eure Methodik für die Umwandlung![/i]
READ DATASET lv_file_name INTO ld_xstring.
CLOSE DATASET lv_file_name.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' "[i]Ich habe mich für die Funktion entschieden.[/i]
EXPORTING
buffer = ld_xstring
* APPEND_TO_TABLE = ' '
* IMPORTING
* OUTPUT_LENGTH =
TABLES
binary_tab = t_contents_bin
.
PERFORM z_mail. "[i]Regelt die Zusammensetzung für den Mailversand - siehe unten...[/i]
ENDIF.
ENDLOOP.
Code: Alles auswählen.
FORM z_mail.
DATA: e_document_data LIKE sodocchgi1.
DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE.
DATA: t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE.
DATA: t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE.
DATA: t_contents_txt LIKE solisti1 OCCURS 0 WITH HEADER LINE.
* DATA: t_contents_bin LIKE solisti1 OCCURS 0 WITH HEADER LINE. "[i]Wegen DATASET oben definiert.[/i]
DATA: tab_lines LIKE sy-tabix.
* [i]Daten für Mail[/i]
e_document_data-obj_name = 'Test1'.
e_document_data-obj_descr = 'Testx'.
t_contents_txt = 'Sehr geehrte Vertrieb-Mitarbeiter, ...'.
APPEND t_contents_txt.
t_contents_txt = 'Hier der Text'.
APPEND t_contents_txt.
*[i]Zählen der Zeile von t_contents_txt[/i]
DESCRIBE TABLE t_contents_txt LINES tab_lines.
READ TABLE t_contents_txt INDEX tab_lines.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
t_packing_list-body_num = tab_lines.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
[i]* t_contents_bin = lv_file_name.
* APPEND t_contents_bin.[/i]
DESCRIBE TABLE t_contents_bin LINES tab_lines.
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
t_packing_list-body_num = tab_lines.
t_packing_list-doc_type = 'tif'.
t_packing_list-obj_name = 'ANLAGE'.
t_packing_list-doc_size = tab_lines * 255.
t_packing_list-obj_descr = 'Datei'.
APPEND t_packing_list.
t_receivers-receiver = 'max.mustermann@mail.de'.
t_receivers-rec_type = 'U'.
APPEND t_receivers.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = e_document_data
* PUT_IN_OUTBOX = ' '
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
TABLES
packing_list = t_packing_list
object_header = t_object_header
contents_bin = t_contents_bin
contents_txt = t_contents_txt
receivers = t_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.
COMMIT WORK.
ENDFORM. "z_mail