ZCL CONV UTILITIES: Unterschied zwischen den Versionen

Aus SAP Wiki ツ
 
(26 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 3: Zeile 3:
Die in Freizeit erstellte Z-Klasse bietet verschiedene Methoden für Konvertierungen an.
Die in Freizeit erstellte Z-Klasse bietet verschiedene Methoden für Konvertierungen an.


== COL_TO_ROW_FORMAT_DYNAMIC ==
== Dynamische Konvertierung von Spalten- in Zeilenformat ==


Diese statische Methode konvertiert dynamisch ein Datensatz von Spalten- in Zeilenformat.
Diese statische Methode "COL_TO_ROW_FORMAT_DYNAMIC" 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".
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".
Rückgabeparameter ist RR_"COL_TO_ROW" von TYPE REF TO "DATA".
Zeile 13: Zeile 13:
<strong>Erhaltene Referenz zuordnen und Field-Symbol von TYPE STANDARD TABLE anhängen</strong>
<strong>Erhaltene Referenz zuordnen und Field-Symbol von TYPE STANDARD TABLE anhängen</strong>


<syntaxhighlight lang="abap" line start="1">
  DATA(build_struc) = this method(...).
  DATA(build_struc) = this method(...).
   
   
Zeile 21: Zeile 22:
  ASSIGN build_struc->* TO FIELD-SYMBOL(<structure>).
  ASSIGN build_struc->* TO FIELD-SYMBOL(<structure>).
  APPEND <structure> TO <tab>.
  APPEND <structure> TO <tab>.
</syntaxhighlight>


== YYYYMMDD_TO_DDMMYYYY ==
== Konvertierung SAP-Einheit<->ISO-Einheit ==


Die Methode wurde entfernt aufgrund der Möglichkeit mit [[String_Templates#Formatoption_mit_DATE|StringTemplates und Formatoption DATE]]
Diese statische Methode "UOM_CONV_BETWEEN_SAP_ISO" konvertiert eine SAP Einheit zu einer ISO-Einheit oder eine ISO-Einheit zu einer SAP Einheit.
 
== 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.
 
<strong>Aufruf der Methode</strong>
 
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:
 
<strong>1. CONVERSION_EXIT_MATN1_INPUT, wo die Feldlänge bekannt ist und IV_NUMBER_TYPE = MATN1.</strong>
 
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
 
<strong>2. CONVERSION_EXIT_ALPHA_INPUT, wo die Feldlänge unbekannt ist und festgelegt werden muss</strong>
 
<u> Output:</u>
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:<br />
lv_string = '00001234';length = 4; lv_string = '0'<br />
lv_string = '00001234';length = 8; lv_string = '1234'<br />
 
<u> Input:</u>
 
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:<br />
lv_string = '1234';length = 4; lv_string = '1234'<br />
lv_string = '1234';length = 8; lv_string = '00001234'<br />
 
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:
Die Struktur, die man dem Importparameter "IS_UOM" übergibt, muss wie folgt gefüllt werden:
Zeile 86: Zeile 33:
* 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
* 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 ==
== Konvertierung XML-Datei in interne Tabelle ==


Diese statische Methode konvertiert eine XML-Datei, egal als Upload PopUp durch den User oder eine XML auf dem Applikationsserver, in eine interne Tabelle.
Diese statische Methode "XML_TO_ITAB" 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.
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.


<strong>Aufruf der Methode</strong>
<strong>Aufruf der Methode</strong>
 
<syntaxhighlight lang="abap" line start="1">
  zcl_conv_utilities=>xml_to_itab( EXPORTING iv_xml_from_applserver = '/usr/sap/trans/xml.xml'  
  zcl_conv_utilities=>xml_to_itab( EXPORTING iv_xml_from_applserver = '/usr/sap/trans/xml.xml'  
                                   IMPORTING  et_itab = DATA(lt_itab) ).
                                   IMPORTING  et_itab = DATA(lt_itab) ).
   
</syntaxhighlight>
  <syntaxhighlight lang="abap" line start="1">
  zcl_conv_utilities=>xml_to_itab( EXPORTING iv_xml_as_upload = abap_true  
  zcl_conv_utilities=>xml_to_itab( EXPORTING iv_xml_as_upload = abap_true  
                                   IMPORTING et_itab = DATA(lt_itab)  ).
                                   IMPORTING et_itab = DATA(lt_itab)  ).
</syntaxhighlight>
== Konvertierung IDoc zu XML-Datei ==


== IDOC_TO_XML ==
Diese statische Methode "IDOC_TO_XML" 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).
 
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.
Als Importparameter wird die IDoc Nummer benötigt.
Zeile 108: Zeile 56:
<strong>Aufruf der Methode</strong>
<strong>Aufruf der Methode</strong>


  DATA(xml_tab) = zcl_conv_utilities=>idoc_to_xml( iv_idoc_number = p_idoc
<syntaxhighlight lang="abap" line start="1">
                                                  iv_save_to_desktop ).
  DATA(xml_tab) = zcl_conv_utilities=>idoc_to_xml(iv_idoc_nu mber = p_idoc iv_save_to_desktop ).
</syntaxhighlight>
  DATA(xml_tab) = zcl_conv_utilities=>idoc_to_xml( iv_idoc_number = p_idoc
 
                                                  iv_save_to_applserver = '/usr/sap/trans/xml2.xml' ).
<syntaxhighlight lang="abap" line start="1">
  DATA(xml_tab) = zcl_conv_utilities=>idoc_to_xml( iv_idoc_number = p_idoc iv_save_to_applserver = '/usr/sap/trans/xml2.xml' ).
</syntaxhighlight>
 
<syntaxhighlight lang="abap" line start="1">
  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 ).
</syntaxhighlight>

Aktuelle Version vom 8. August 2021, 22:45 Uhr


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

Dynamische Konvertierung von Spalten- in Zeilenformat

Diese statische Methode "COL_TO_ROW_FORMAT_DYNAMIC" 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>.

Konvertierung SAP-Einheit<->ISO-Einheit

Diese statische Methode "UOM_CONV_BETWEEN_SAP_ISO" 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

Konvertierung XML-Datei in interne Tabelle

Diese statische Methode "XML_TO_ITAB" 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)  ).

Konvertierung IDoc zu XML-Datei

Diese statische Methode "IDOC_TO_XML" 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_nu mber = 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 ).