CL_DOCUMENT_BCS

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

CL_DOCUMENT_BCS

Postby Linnea2424 » Mon Feb 20, 2012 2:08 pm

Hallo,

das Thema ist bestimmt schon etliche Male diskutiert, jedenfalls habe ich seit 2 Tagen gefühlte zig Post dazu gelesen...aber eben noch keine Lösung gefunden. Ich habe eine interne Tabelle die ich als Anhang einer Mail verschicken möchte.

Die ITAB baue ich so auf:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CONCATENATE feld1 feld2 feld3 INTO ls_soli-line SEPARATED BY ';'.
  2.  
GeSHi ©

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CONCATENATE ls_soli-line cl_abap_char_utilities=>cr_lf INTO ls_soli-line.
  2.  
GeSHi ©


Der Anhang wird so gesetzt:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. document->add_attachment( i_attachment_type    = 'CSV'
  2.                              i_attachment_subject = 'Egal'
  3.                              i_attachment_size    = ''
  4.                              i_att_content_text   = lt_soli ).
GeSHi ©


Öffne ich jetzt die Datei per Excel stimmen die Spalteninhalte nicht. Zwar ist jedes Feld richtig gefüllt, aber die Spalte feld1 ist mit diversen Leerzeichen gefüllt.

Hat jemand eine Idee?

Danke
Linnea2424
..
..
 
Posts: 94
Joined: Thu Sep 21, 2006 3:10 pm

Re: CL_DOCUMENT_BCS

Postby Linnea2424 » Mon Feb 20, 2012 3:42 pm

erledigt.
Linnea2424
..
..
 
Posts: 94
Joined: Thu Sep 21, 2006 3:10 pm

Re: CL_DOCUMENT_BCS

Postby Bilal3242 » Mon Feb 20, 2012 4:39 pm

kagel hat geschrieben:erledigt.


Wäre nett, wenn du auch schreiben würdest wo das Problem lag bzw. wie du es gelöst hast. Denn der nächste wird (z.B. über Google) deinen Beitrag hier finden wenn er vor dem gleichen Problem steht. Und dann wird deines eines der zig Posts sein die man 2 Tage nutzlos durchlesen muss. ;)
Bilal3242
...
...
 
Posts: 400
Joined: Wed Apr 15, 2009 12:46 pm

Re: CL_DOCUMENT_BCS

Postby Linnea2424 » Tue Feb 21, 2012 10:19 am

Die Ausgabe sah so aus:

xxxxxxxx xxxx xxxxxx xxxxxxxxxxxx
xxxxxx xx xxxx xxxxxxxxxxxxxx
xxxxx xxxx xxxxx xxxxx
xxxxxxx xxxx xxx xxxxxxxxx

Ich habe die Methode add_atachment falsch interpretiert. Der Parameter i_att_content_text muss man sich eher als 255er Datenstream vorstellen. Deshalb nicht nach jedem logischen Datensatz an die ITAB lt_soli übergeben.

Lösung: Logischen Datensatz aus n-Felder mit concatenate in einen unbegrenzten String aufbauen. Dann diesen Datensatz um cl_abap_char_utilities=>cr_lf mit concatenate erweitern. Solange wiederholen bis alle ITAB-Einträge verarbeitet sind. Zum Schluss diesen unbegrenzten String in 255er Pakete splitten (Vorsicht beim letzten Paket) und in die lt_soli hängen.

Ungefähr so:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CONCATENATE l_output_string
  2.                    <fs_agr_user>-username
  3.                     ';'
  4.                     <fs_agr_user>-from_dat
  5.                     ';'
  6.                     <fs_agr_user>-to_dat
  7.                     ';'
  8.                     <fs_agr_user>-agr_name
  9.                     ';'
  10.                     <fs_agr_user>-agr_text
  11.                     INTO l_output_string.
GeSHi ©


Wer möchte kann dies natürlich noch dynamischer machen.

Zeilenumbruch:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CONCATENATE l_output_string cl_abap_char_utilities=>cr_lf INTO l_output_string.
GeSHi ©


String zerlegen:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. i = STRLEN( l_output_string ).
  2. WHILE i > 0.
  3.   IF i > 255.
  4.     i = 255.
  5.   ENDIF.
  6.   MOVE l_output_string(i) TO ls_soli-line.
  7.   SHIFT l_output_string BY i PLACES LEFT.
  8.   APPEND ls_soli TO lt_soli.
  9.   i = STRLEN( l_output_string ).
GeSHi ©


Ich hoffe, das ist so verständlich.

Anmerkung: Ich musste in einem "Randsystem" entwickeln, in dem nicht alle ERP-Standard Module vorhanden sind. Daher konnte ich auf keinen Convert ab to xy FuBa zurückgreifen.
Linnea2424
..
..
 
Posts: 94
Joined: Thu Sep 21, 2006 3:10 pm

Re: CL_DOCUMENT_BCS

Postby Linnea2424 » Wed Feb 22, 2012 1:50 pm

Die While-Schleife kann man auch ersetzen:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CALL METHOD cl_bcs_convert=>string_to_soli
  2.       EXPORTING
  3.         iv_string = l_output_string
  4.       RECEIVING
  5.         et_soli   = rt_soli.
GeSHi ©
Linnea2424
..
..
 
Posts: 94
Joined: Thu Sep 21, 2006 3:10 pm


Return to ABAP Objects®

Who is online

Users browsing this forum: No registered users and 3 guests