Ansicht
Dokumentation

CL_ISU_DB_UPDATE - Standard oder angepasste UPDATE und MODIFY (generisch)

CL_ISU_DB_UPDATE - Standard oder angepasste UPDATE und MODIFY (generisch)

Vendor Master (General Section)   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Die Klasse ermöglicht es, den Standard Open SQL Befehl UPDATE und MODIFY oder den angepassten Open SQL Befehl für UPDATE und MODIFY auszuführen. Die Standard Open SQL Befehle sind UPDATE und MODIFY. Nachfolgend werden die angepassten Open SQL Befehle für UPDATE und MODIFY beschrieben.

Der angepasste Open SQL Befehl UPDATE bedeutet,

  • dass eine Einzelverarbeitung der Datensätze mit dem Open SQL Befehl UPDATE durchgeführt wird.
  • dass, wenn alte Datensätze vorhanden sind, die Werte der Felder dieser alten Datensätze mit den Werten der neuen Datensätze verglichen werden. Wenn die Werte der Felder unterschiedlich sind, werden diese Felder und die dazugehörenden neuen Werte zu einem String zusammengebaut, der dem SET Zusatz des Open SQL Befehls UPDATE zugeordnet wird.
  • dass, wenn keine alten Datensätze vorhanden sind, alle Felder und die dazugehörenden neuen Werte zu einem String zusammengebaut werden, der dem SET Zusatz des Open SQL Befehls UPDATE zugeordnet wird.
  • dass der WHERE Zusatz des UPDATE Befehls mit den Schlüsselfeldern und den dazugehörenden Werten und mit dem entsprechenden Kolokationsgruppenfeld und dem dazugehörenden Wert gebildet wird.

Der angepasste Open SQL Befehl MODIFY bedeutet,

  • dass eine Einzelverarbeitung der Datensätze mit den Open SQL Befehlen INSERT oder UPDATE durchgeführt wird.
  • dass, wenn alte Datensätze vorhanden sind, die Werte der Felder dieser alten Datensätze mit den Werten der neuen Datensätze verglichen werden. Wenn die Werte der Felder unterschiedlich sind, werden die Felder und die dazugehörenden neuen Werte zu einem String zusammengebaut, der dem SET Zusatz des Open SQL Befehl UPDATE zugeordnet wird.
  • dass, wenn keine alten Datensätze vorhanden sind, die Datensätze nachgelesen werden und
  • wenn sie gefunden wurden, die Werte der Felder dieser nachgelesenen Datensätze mit den Werten der neuen Datensätze verglichen werden. Wenn die Werte der Felder unterschiedlich sind, werden diese Felder und die dazugehörenden neuen Werte zu einem String zusammengebaut, der dem SET Zusatz des Open SQL Befehls UPDATE zugeordnet wird.

  • wenn sie nicht gefunden wurden, wird der Open SQL Befehl INSERT durchgeführt.

  • dass der WHERE Zusatz des UPDATE Befehls mit den Schlüsselfeldern und den dazugehörenden Werten und mit dem entsprechenden Kolokationsgruppenfeld und dem dazugehörenden Wert gebildet wird, wenn der Open SQL Befehl UPDATE ausgeführt wird.

Das Ausführen aller Open SQL Befehle erfolgt generisch. Durch die Übergabe des Tabellennamens wird die dynamische Tabellenstruktur festgelegt. Mit den Feldern der Tabellenstruktur werden zum Beispiel die Werte der neuen Datensätze mit den Werten der alten Datensätze verglichen.

Das BADI ISU_DB_UPDATE_CONTROL ermöglicht es, zwischen den Standard Open SQL Befehlen und den angepassten Open SQL Befehlen auszuwählen.

Beziehungen

Beispiel

Dynamischer Aufruf des Standard Open SQL Befehl UPDATE:

Voraussetzung

Die Default BAdI Implementierung ISU_DB_UPDATE_CONTROL ist aktiv.

Beispielcoding für den Aufruf der Methode UPDATE der Klasse CL_ISU_DB_UPDATE

...

DATA new_entries TYPE STANDARD TABLE of erch.

DATA(tabname) = 'ERCH'.

new_entries = VALUE #( BASE new_entries

( belnr = '000000281945' ... aenam = 'Changer' ...)

).

CALL METHOD cl_isu_db_update=>get_instance( )->update( EXPORTING iv_tabname = 'ERCH' it_new = new_entries ).

...

Was wird zum Schluss, innerhalb der Klasse, als Open SQL Befehl aufgerufen?

UPDATE (iv_tabname) FROM TABLE @new_entries.

Dynamischer Aufruf des angepassten Open SQL Befehls UPDATE:

Voraussetzung

Um den angepassten Open SQL Befehl UPDATE auszuführen, müssen Sie eine neue BAdI Implementierung anlegen und aktiv schalten sowie die Methoden anhand der Dokumentation des Interface IF_ISU_DB_UPDATE_CONTROL ändern.

Beispielcoding für den Aufruf der Methode UPDATE der Klasse CL_ISU_DB_UPDATE

...

DATA new_entries TYPE STANDARD TABLE of erch.

DATA old_entries TYPE STANDARD TABLE of erch.

DATA(tabname) = 'ERCH'.

new_entries = VALUE #( BASE new_entries

( belnr = '000000281945' ... aenam = 'New_Changer' ...)

).

old_entries = VALUE #( BASE new_entries

( belnr = '000000281945' ... aenam = 'Old_Changer' ...)

).

CALL METHOD cl_isu_db_update=>get_instance( )->update( EXPORTING iv_tabname = 'ERCH' it_new = new_entries it_old = old_entries).

Was wird zum Schluss, innerhalb der Klasse, als Open SQL Befehl aufgerufen?

DATA set TYPE string.

DATA where TYPE string.

DATA new_entry TYPE erch.

DATA(tabname) = 'ERCH'.

new_entry = VALUE #(

belnr = '000000281945' ... aenam = 'New_Changer' ...

).

set = 'AENAM = @new_entry-AENAM'.

where = 'BELNR = @new_entry-BELNR AND COLOGRP_INST = @new_entry-COLOGRP_INST'.

UPDATE (tabname) SET (set) WHERE (where).

...

Dynamischer Aufruf des Standard Open SQL Befehls MODIFY:

Voraussetzung

Die Default BAdI Implementierung ISU_DB_UPDATE_CONTROL ist aktiv.

Beispielcoding für den Aufruf der Methode MODIFY der Klasse CL_ISU_DB_UPDATE

...

DATA new_entries TYPE STANDARD TABLE of erch.

DATA(tabname) = 'ERCH'.

new_entries = VALUE #( BASE new_entries

( belnr = '000000281945' ... aenam = 'Changer' ...)

).

...

Was wird zum Schluss, innerhalb der Klasse, als Open SQL Befehl aufgerufen?

MODIFY (tabname) FROM TABLE @new_entries.

Dynamischer Aufruf des angepassten Open SQL Befehl für MODIFY: INSERT:

Voraussetzung

Eine neue BAdI Implementierung, die der Kunde anlegt und aktiv schaltet sowie eine Änderung der Methoden wie sie in der Dokumentation des Interface IF_ISU_DB_UPDATE_CONTROL beschrieben ist, um den angepassten Open SQL Befehl MODIFY auszuführen.

Beispielcoding für den Aufruf der Methode MODIFY der Klasse CL_ISU_DB_UPDATE

...

DATA new_entries TYPE STANDARD TABLE of erch.

DATA old_entries TYPE STANDARD TABLE of erch.

DATA(tabname) = 'ERCH'.

new_entries = VALUE #( BASE new_entries

( belnr = '000000281945' ... aenam = 'New_Changer' ...)

).

CALL METHOD cl_isu_db_update=>get_instance( )->modify( EXPORTING iv_tabname = 'ERCH' it_new = new_entries ).

Was wird zum Schluss, innerhalb der Klasse, als Open SQL Befehl aufgerufen?

DATA new_entry TYPE erch.

DATA(tabname) = 'ERCH'.

new_entry = VALUE #(

belnr = '000000281945' ... aenam = 'New_Changer' ...

).

INSERT (tabname) FROM @new_entry.

...

Dynamischer Aufruf des angepassten Open SQL Befehl für MODIFY: UPDATE

Voraussetzung

Um den angepassten Open SQL Befehl MODIFY auszuführen, müssen Sie eine neue BAdI Implementierung anlegen und aktiv schalten sowie die Methoden anhand der Dokumentation des Interface IF_ISU_DB_UPDATE_CONTROL ändern.

Beispielcoding für den Aufruf der Methode MODIFY der Klasse CL_ISU_DB_UPDATE

...

DATA new_entries TYPE STANDARD TABLE of erch.

DATA old_entries TYPE STANDARD TABLE of erch.

DATA(tabname) = 'ERCH'.

new_entries = VALUE #( BASE new_entries

( belnr = '000000281945' ... aenam = 'New_Changer' ...)

).

old_entries = VALUE #( BASE new_entries

( belnr = '000000281945' ... aenam = 'Old_Changer' ...)

).

CALL METHOD cl_isu_db_update=>get_instance( )->modify( EXPORTING iv_tabname = 'ERCH' it_new = new_entries it_old = old_entries).

Was wird zum Schluss, innerhalb der Klasse, als Open SQL Befehl aufgerufen?

DATA set TYPE string.

DATA where TYPE string.

DATA new_entry TYPE erch.

DATA(tabname) = 'ERCH'.

new_entry = VALUE #(

belnr = '000000281945' ... aenam = 'New_Changer' ...

).

set = 'AENAM = @new_entry-AENAM'.

where = 'BELNR = @new_entry-BELNR AND COLOGRP_INST = @new_entry-COLOGRP_INST'.

UPDATE (tabname) SET (set) WHERE (where).

Hinweise

Die Struktur der Importing-Parameter muss mit der Struktur übereinstimmen, die durch den Tabellennamen vorgegeben ist. Wenn zum Beispiel der Importing-Parameter IT_NEW eine Tabelle mit der Struktur der Tabelle 'ERCH' ist (siehe im Beispielcoding oben DATA it_new TYPE STANDARD TABLE of erch), muss der Importing-Tabellenname IV_TABNAME ebenfalls 'ERCH' sein. Wenn die Strukturen nicht übereinstimmen, erfolgt ein Short-Dump.

Weiterführende Informationen






BAL_S_LOG - Application Log: Log header data   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 10965 Date: 20240424 Time: 000158     sap01-206 ( 129 ms )