RECORD_TAB aus SH und Unicode...

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

RECORD_TAB aus SH und Unicode...

Postby Ines3642 » Sat Jan 17, 2015 3:25 pm

Hallo zusammen,

und schon habe ich das nächste Problem: ich muss das Ergebnis einer Suchhilfe vor der Anzeige zum User filtern.

Konkret geht es um Suchhilfen zu Debitoren, wie z.B. DEBIA, DEBIC usw.
Ich habe mir einen EXIT geschrieben, den ich (per Modifikation) rufe.

Nun sind die Ergebnisse in der Tabelle RECORD_TAB leider in einem großen String abgelegt.
Die Struktur dieser Daten ist abhängig von der Selektionsmethode.

In SHLP-FIELDDESCR finde ich alle Felder, ihre Reihenfolge, Offsets und Längen.
Also, dachte ich mir, lese ich diese Infos doch einfach und greife mit dem angegebenen Offset und der Länge auf den String aus der RECORD_TAB zu...

Leider passen die Infos absolut gar nicht auf den String und ich erhalte immer Unsinn. Auch wenn ich einfach die OUTPUTLEN bis zur Kundennummer addiere, erhalte ich in den meisten Fällen den falschen Offset.

Deshalb habe ich es nun anders versucht: ich erzeuge mir dynamisch ein Feld vom Typ der Selektionsmethode aus der Suchhilfe und schiebe den String in dieses Feld.

In den meisten Fällen erhalte ich dann tatsächlich das korrekte Ergebnis. Es gibt jedoch Fälle, die mich nun vor ein neues Problem stellen:

Die Suchhilfe DEBIT beispielsweise dumpt schlicht und einfach an der Stelle, an der ich den String zuweisen will (UC_OBJECTS_NOT_CONVERTIBLE).

Mein Code sieht wie folgt aus:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. FORM map_record_to_value  USING    p_shlp   TYPE shlp_descr
  2.                                    p_record TYPE seahlpres
  3.                           CHANGING p_kunnr  TYPE kna1-kunnr.
  4.   " lokale Daten
  5.   DATA: ls_record TYPE REF TO data.
  6.  
  7.   FIELD-SYMBOLS: <fs_kunnr>   TYPE kna1-kunnr,
  8.                  <fs_content> TYPE any.
  9.  
  10.   " Die Selektionsmethode unserer Einzelsuchhilfe bestimmt die Struktur
  11.   " der Ergebnistabelle. Wir müssen also eine dynamische Struktur des
  12.   " gleichen Typs anlegen und uns dort die Komponente der Kundennumer
  13.   " suchen.
  14.   TRY.
  15.       " dynamische Struktur erzeugen
  16.       CREATE DATA ls_record TYPE (p_shlp-intdescr-selmethod).
  17.       " Datentyp zuweisen
  18.       ASSIGN ls_record->* TO <fs_content>.
  19.  
  20.       IF sy-subrc     EQ 0 AND
  21.          <fs_content> IS ASSIGNED.
  22.  
  23.         " Inhalt übertragen
  24.         MOVE p_record-string TO <fs_content>.
  25.         " Zeiger auf Feld 'Kunde' stellen
  26.         ASSIGN COMPONENT 'KUNNR' OF STRUCTURE <fs_content> TO <fs_kunnr>.
  27.  
  28.         IF sy-subrc   EQ 0 AND
  29.            <fs_kunnr> IS ASSIGNED.
  30.           " Kundennummer übertragen
  31.           MOVE <fs_kunnr> TO p_kunnr.
  32.         ENDIF.
  33.       ENDIF.
  34.     CATCH cx_sy_create_data_error.
  35.       " Error in data creation.
  36.   ENDTRY.
  37. ENDFORM.                    " MAP_RECORD_TO_VALUE
GeSHi ©


Gibt es eine Möglichkeit den MOVE so zu ersetzen, dass ich keinen Unicode-Fehler bekomme?
Alternativ: mache ich mir das Leben zu schwer und es gibt vielleicht eine Möglichkeit, die RECORD_TAB viel einfacher zu lesen?

Bin für den Tipp dankbar!
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Return to ABAP® Core

Who is online

Users browsing this forum: No registered users and 22 guests