XString in interne tabelle schreiben.

Getting started ... Alles für einen gelungenen Start.
20 Beiträge • Seite 1 von 2 (current) Nächste
20 Beiträge Seite 1 von 2 (current) Nächste

XString in interne tabelle schreiben.

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hallo,

weiß jemand wie man einen Xstring in eine interne Tabelle schreibt?

Vielen Dank im Voraus.

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


Re: XString in interne tabelle schreiben.

Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
schau Dir mal die Klasse CL_BCS_CONVERT an, da gibt es z.B eine Methode XSTRING_TO_XTAB
/Edwin

Re: XString in interne tabelle schreiben.

Beitrag von a-dead-trousers (Top Expert / 4274 / 213 / 1140 ) »
Hier wäre auch noch ein kleiner Code-Schnippsel von mir:
https://www.abapforum.com/forum/viewtop ... 18&t=17980
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: XString in interne tabelle schreiben.

Beitrag von a-dead-trousers (Top Expert / 4274 / 213 / 1140 ) »
Achtung:
Bei CL_BCS_CONVERT=>XSTRING_TO_XTAB fehlt die korrekte Rückgabe der "echten" Byte-Länge, die man bei den meisten Funktionsbausteinen in SAP aber braucht. Sonst werden z.B. bei einer Datei-Übertragung zum GUI am Ende eventeull unnütze (oder sogar falsche) Null-Bytes in die Datei geschreiben.
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: XString in interne tabelle schreiben.

Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
dann hätten wir noch den FB : "SCMS_XSTRING_TO_BINARY"
/Edwin

Re: XString in interne tabelle schreiben.

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
hallo Edwin,

danke schon mal.

hiermit habe ich ja folgenden Code:

Code: Alles auswählen.

CALL METHOD CL_BCS_CONVERT=>XSTRING_TO_XTAB( 
EXPORTING
IV_XSTRING = ld_IV_XSTRING 
IMPORTING
ET_XTAB = ld_ET_XTAB 
EXCEPTIONSCX_BCS = 11 ).
Nun gebe ich für ld_IV_XSTRING meinen XString ein und bei ET_XTAB eine interne Tabelle in die der XString geladen werden soll, oder ??

Nun kommt bei mir immer die Fehlermeldung: "Die Ausnahme "CX_BCS" existiert nicht".

Total komisch. Ich hab reingeschaut und die Ausnahme ist hinterlegt??!!

Re: XString in interne tabelle schreiben.

Beitrag von a-dead-trousers (Top Expert / 4274 / 213 / 1140 ) »
Das ist eine klassenbasierte Ausnahme: TRY-CATCH wird hier benötigt.
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: XString in interne tabelle schreiben.

Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
Dei Rückgabe Tabelle muss einen binären Typ haben z.b.

Code: Alles auswählen.

DATA it_bin TYPE TABLE OF so_raw255.
zu CL_BCS_CONVERT=>XSTRING_TO_XTAB : wozu die Länge zurückliefern, die hat man doch aus der Länge des XSTRINGs
/Edwin

Re: XString in interne tabelle schreiben.

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
okay, habs mal nun umgeschrieben. Funktionieren tut es leider nicht. Mein Gedankengang wie oben, hat soweit gepasst, oder ?

Sollte so funktionieren normalerweise??

Re: XString in interne tabelle schreiben.

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Vielleicht sollte ich am besten noch dazu sagen, dass ich die interne Tabelle bei cl_gui_frontend_services=>gui_download mitgeben möchte, da ich sie gerne auf der Festplatte speichern möchte.

Re: XString in interne tabelle schreiben.

Beitrag von a-dead-trousers (Top Expert / 4274 / 213 / 1140 ) »
edwin hat geschrieben:zu CL_BCS_CONVERT=>XSTRING_TO_XTAB : wozu die Länge zurückliefern, die hat man doch aus der Länge des XSTRINGs
Schon klar. Aber ich hab schon öfters gesehen, dass das vergessen wurde.
Es ist halt besser ersichtlich, dass das (vielleicht) wichtig ist, wenn es auch Teil der Schnittstelle einer Methode / eines Funktionsbausteins zum Konvertieren ist.
Bei STRING und XSTRINGs macht man sich kaum die Mühe ein zusätzliches Längenfeld durchzureichen. Wenn man dann in die tabellarische Variante konvertiert und auf die ab diesem Zeitpunkt notwendige Längeangabe vergisst, kriegt man eventuell Probleme.
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: XString in interne tabelle schreiben.

Beitrag von a-dead-trousers (Top Expert / 4274 / 213 / 1140 ) »
L0w-RiDer hat geschrieben:Vielleicht sollte ich am besten noch dazu sagen, dass ich die interne Tabelle bei cl_gui_frontend_services=>gui_download mitgeben möchte, da ich sie gerne auf der Festplatte speichern möchte.
Zeig mal was du dazu an Code bislang hast.
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: XString in interne tabelle schreiben.

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
also:

Code: Alles auswählen.

try.
CL_BCS_CONVERT=>XSTRING_TO_XTAB(
EXPORTING
  IV_XSTRING = lv_xstring
  IMPORTING
    ET_XTAB
= gt_tabausgabe ).
catch CX_BCS.
  ENDTRY.

Code: Alles auswählen.

cl_gui_frontend_services=>gui_download(
      EXPORTING
        filename                  = filepath
      CHANGING
        data_tab                  = gt_tabausgabe 
      EXCEPTIONS
        file_write_error          = 1
        no_batch                  = 2
        gui_refuse_filetransfer   = 3
        invalid_type              = 4
        no_authority              = 5
        unknown_error             = 6
        header_not_allowed        = 7
        separator_not_allowed     = 8
        filesize_not_allowed      = 9
        header_too_long           = 10
        dp_error_create           = 11
        dp_error_send             = 12
        dp_error_write            = 13
        unknown_dp_error          = 14
        access_denied             = 15
        dp_out_of_memory          = 16
        disk_full                 = 17
        dp_timeout                = 18
        file_not_found            = 19
        dataprovider_exception    = 20
        control_flush_error       = 21
        not_supported_by_gui      = 22
        error_no_gui              = 23
        OTHERS                    = 24 ).
    IF sy-subrc <> 0.
      "   Implement suitable error handling here
    ENDIF.
Hier steckt mein XString drin: lv_xstring

und diesen möchte ich in eine interne Tabelle mit 5 Spalten laden.

Re: XString in interne tabelle schreiben.

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Vielleicht ist es noch hilfreich zu sagen, dass ich mir meine interne Tabelle erst in Xstring umgewandelt habe :

cl_salv_table=>factory( IMPORTING r_salv_table = gr_alv
CHANGING t_table = gt_tabausgabe ).

data(lv_xstring) = gr_alv->to_xml( xml_type = if_salv_bs_xml=>c_type_xlsx ).

Da ich das ALV-Format möchte und es im XLSX-Format :)

und nun würde ich es gerne wieder in eine interne Tabelle zurückschreiben um es auf die Festplatte zu speichern.

Re: XString in interne tabelle schreiben.

Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
dann wandle doch deinen Xstring in eine Xtab mit dem oben genannten Baustein/ Methode um und gebe diese dann mit cl_gui_frontend im 'BIN' Format aus: filetype = 'BIN', bin_filesize = <Die Länge des XStrings>, data_tab = <Deine Xtab>.
/Edwin

Vergleichbare Themen

5
Antw.
311
Views
1
Antw.
172
Views
2
Antw.
6863
Views
in interne Tabelle schreiben
von anki_86 » 25.06.2007 08:53 • Verfasst in ABAP® für Anfänger
4
Antw.
2420
Views
Interne Tabelle in Excel schreiben
von mamba » 12.12.2006 15:36 • Verfasst in ABAP® Core
1
Antw.
759
Views
Datenbanktabelle Daten aus interne Tabelle schreiben
von L0w-RiDer » 05.12.2018 11:13 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

PDF-Anzeige unter EDGE
vor 4 Tagen von jocoder 2 / 69
Etikettendruck mit SmartForms
vor einer Woche von a-dead-trousers 2 / 71

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.

Aktuelle Forenbeiträge

PDF-Anzeige unter EDGE
vor 4 Tagen von jocoder 2 / 69
Etikettendruck mit SmartForms
vor einer Woche von a-dead-trousers 2 / 71

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Wochen von Lucyalison 1 / 129
Group Items auf einer Filterbar
vor 4 Wochen von Bright4.5 1 / 165