ZCL CONV UTILITIES: Unterschied zwischen den Versionen

Aus SAP Wiki ツ
(Die Seite wurde neu angelegt: „Kategorie:Freizeit_erstellte_ZKlassen_und_ZProgramme Die in Freizeit erstellte Z-Klasse bietet verschiedene Methoden für Konvertierungen an. == COL_TO_R…“)
 
Zeile 120: Zeile 120:
   
   
  DATA(xml_tab) = zcl_conv_utilities=>idoc_to_xml( iv_idoc_number = p_idoc ).
  DATA(xml_tab) = zcl_conv_utilities=>idoc_to_xml( iv_idoc_number = p_idoc ).
== Download ==
* https://gitlab.com/m1ch3l-de/abap-code-collection/-/tree/master/zcl_conv_utilities

Version vom 20. Juli 2021, 19:23 Uhr


Die in Freizeit erstellte Z-Klasse bietet verschiedene Methoden für Konvertierungen an.

COL_TO_ROW_FORMAT_DYNAMIC

Diese statische Methode konvertiert dynamisch ein Datensatz von Spalten- in Zeilenformat. Dafür hat die Methode die Importparameter "IT_COL_DATA" vom TYPE "STRING_T" und "IV_STRUC_NAME". Rückgabeparameter ist RR_"COL_TO_ROW" von TYPE REF TO "DATA".

Es liegt also ein Datensatz in Spaltenform vor z.B. nach Trennung durch ein bestimmten Trennzeichen in eine String-Tabelle. Diese String-Tabelle wird durchlaufen und dynamisch in Zeilenformat von dem Strukturtyp gebracht, der dynmiasch zur Laufzeit erstellt wird anhand des Strukturnamens von Parameter "IV_STRUC_NAME". Anschließend wird diese Zeile als Referenz zurückgegeben.

Erhaltene Referenz zuordnen und Field-Symbol von TYPE STANDARD TABLE anhängen

DATA(build_struc) = this method(...).

DATA(lv_str_name) = 'ZZPO_HEADER'.
CREATE DATA lv_line TYPE TABLE OF (lv_str_name).
ASSIGN lv_line->* TO <tab>.

ASSIGN build_struc->* TO FIELD-SYMBOL(<structure>).
APPEND <structure> TO <tab>.

YYYYMMDD_TO_DDMMYYYY

Konvertiert ein internes Datum von TYPE "DATS" in ein externes Datum von TYPE "CHAR10" als Rückgabeparameter. Sollte bei der Konvertierung ein Fehler auftreten, wird eine Exception geschmissen.

Aufruf der Methode

DATA(ext_date) = zcl_conv_utilities=>yyyymmdd_to_ddmmyyyy( sy-datum ).

DDMMYYYY_TO_YYYYMMDD

Konvertiert ein externes Datum von TYPE "CHAR10" in ein internes Datum von TYPE "DATS" als Rückgabeparameter. Sollte bei der Konvertierung ein Fehler auftreten, wird eine Exception geschmissen.

Aufruf der Methode

DATA(int_date) = zcl_conv_utilities=>DDMMYYYY_TO_YYYYMMDD( '01.01.1900' ).

NUMBER_CONV_BETWEEN_INP_OUT

Diese statische Methode kombiniert zwei Arten von Funktionsbausteine:

1. CONVERSION_EXIT_MATN1_INPUT, wo die Feldlänge bekannt ist und IV_NUMBER_TYPE = MATN1.

Beispiel:

DATA(lv_string) = zcl_conv_utilities=>number_conv_between_inp_out
                                         (
                                          iv_number = '000000000000000123'
                                          iv_number_direction = 'OUTPUT'
                                          iv_number_type = zcl_conv_utilities=>gcs_number_type-material
                                         ).

"CONVERSION_EXIT_MATN1_INPUT
"1 -> 000000000000000001
"CONVERSION_EXIT_MATN1_OUTPUT
"000000000000000001 -> 1

2. CONVERSION_EXIT_ALPHA_INPUT, wo die Feldlänge unbekannt ist und festgelegt werden muss

Output: Die Länge (IV_LENGTH) muss die Länge des Datentyps sein, der via Parameter (IV_NUMBER) übergeben wird. Wenn dieser kleiner ist, ist der Rückgabewert 0 oder abgeschnitten.

Beispiel:
lv_string = '00001234';length = 4; lv_string = '0'
lv_string = '00001234';length = 8; lv_string = '1234'

Input:

Die Länge (IV_LENGTH) ist die Länge mit vielen Nullen gefüllt werden soll, aber mindestens die Länge des übergebenden Parameter (IV_NUMBER).

Beispiel:
lv_string = '1234';length = 4; lv_string = '1234'
lv_string = '1234';length = 8; lv_string = '00001234'

lv_string = zcl_conv_utilities=>number_conv_between_inp_out( iv_number = *Type IS CLIKE LIKE STRING, CHAR  etc.*
                                                        iv_number_direction = 'INPUT'
                                                        iv_target_length = 7
                                                        ).

UOM_CONV_BETWEEN_SAP_ISO

Diese statische Methode konvertiert eine SAP Einheit zu einer ISO-Einheit oder eine ISO-Einheit zu einer SAP Einheit.

Die Struktur, die man dem Importparameter "IS_UOM" übergibt, muss wie folgt gefüllt werden:

  • Von SAP zu ISO muss das Feld is_uom-sap_code gefüllt sein und die ISO-Einheit wird in rs_uom-iso_code zurückgegeben.
  • Von ISO zu SAP muss das Feld is_uom-iso_code und optional das Feld is_uom-unique gefüllt sein und die SAP Einheit wird in rs_uom-sap_code zurückgegeben

XML_TO_ITAB

Diese statische Methode konvertiert eine XML-Datei, egal als Upload PopUp durch den User oder eine XML auf dem Applikationsserver, in eine interne Tabelle.

Hierfür ist der Importparameter "IV_XML_AS_UPLOAD" auf abap_true zusetzen, sodass sich ein PopUp öffnet oder mit "IV_XML_FROM_APPLSERVER" ein Pfad zu übergeben.

Aufruf der Methode

zcl_conv_utilities=>xml_to_itab( EXPORTING iv_xml_from_applserver = '/usr/sap/trans/xml.xml' 
                                 IMPORTING  et_itab = DATA(lt_itab) ).

zcl_conv_utilities=>xml_to_itab( EXPORTING iv_xml_as_upload = abap_true 
                                 IMPORTING et_itab = DATA(lt_itab)  ).

IDOC_TO_XML

Diese statische Methode konvertiert ein IDoc zu einer XML-Datei, die man auf dem Desktop (IV_SAVE_TO_DESKTOP), auf dem Applikationsserver (IV_SAVE_TO_APPLSERVER) speichern oder nur die konvertierten Daten zurück geben kann (RT_IDOCDATA_AS_XML).

Als Importparameter wird die IDoc Nummer benötigt.

Aufruf der Methode

DATA(xml_tab) = zcl_conv_utilities=>idoc_to_xml( iv_idoc_number = p_idoc
                                                 iv_save_to_desktop ).

DATA(xml_tab) = zcl_conv_utilities=>idoc_to_xml( iv_idoc_number = p_idoc
                                                 iv_save_to_applserver = '/usr/sap/trans/xml2.xml' ).

DATA(xml_tab) = zcl_conv_utilities=>idoc_to_xml( iv_idoc_number = p_idoc ).