DB-Zugriff Methode zum Modifizieren

Getting started ... Alles für einen gelungenen Start.

DB-Zugriff Methode zum Modifizieren

Postby Aliya3110 » Wed Jun 10, 2015 3:05 pm

Hallo,

kennt jemand Methode die, die ZTabelle modifiziert, inkl. die Prüfungen?

MODIFY z_db_itab FROM TABLE lt_itab_invoic.

Beste Grüße
Aliya3110
...
...
 
Posts: 125
Joined: Sun May 25, 2008 3:17 pm

Re: DB-Zugriff Methode zum Modifizieren

Postby Bianka4768 » Thu Jun 11, 2015 5:47 am

Hallo meliz,
"selbst ist der Mann/die Frau".
Die Prüfungen musst Du selbst durchführen vor dem MODIFY.
Außer die Integritätsregeln sind als Trigger auf dem Datenbanksystem hinterlegt - was ich bisher nie gebraucht habe und vermutlich in den seltensten (SAP)Fällen gut heißen würde.

MfG
Thomas R.
Bianka4768
....
....
 
Posts: 567
Joined: Tue Dec 10, 2002 5:46 pm

Re: DB-Zugriff Methode zum Modifizieren

Postby Aliya3110 » Thu Jun 11, 2015 8:44 am

Hallo Thomas,

welche Prüfungen sind sie denn? Hast Du ein Beispiel für mich?

Beste Grüße
Meliz
Aliya3110
...
...
 
Posts: 125
Joined: Sun May 25, 2008 3:17 pm

Re: DB-Zugriff Methode zum Modifizieren

Postby Bianka4768 » Thu Jun 11, 2015 8:49 am

Hallo Meliz,
Du musst doch wissen, welche Prüfungen du durchgeführt haben willst - es geht ja __hoffentlich__ um Datenbanktabellen im Kundennamensraum.
SAP-Tabellen durch INSERT/UPDATE/MODIFY/DELETE zu bearbeiten ist höchst problematisch und führt gern einmal zu einem Datenschiefstand. Dafür sind dann BAPIs oder auch Batch-Inputs zu verwenden.

MfG
Thomas R.
Bianka4768
....
....
 
Posts: 567
Joined: Tue Dec 10, 2002 5:46 pm

Re: DB-Zugriff Methode zum Modifizieren

Postby Aliya3110 » Thu Jun 11, 2015 9:25 am

Hallo Thomas,

es geht um mehrere Z-Tabellen, die ich angelegt habe. Die Daten werden von mir übernommen. Wie ist das Vorgehen genau?

MfG
Meliz
Aliya3110
...
...
 
Posts: 125
Joined: Sun May 25, 2008 3:17 pm

Re: DB-Zugriff Methode zum Modifizieren

Postby Bianka4768 » Thu Jun 11, 2015 9:32 am

Hallo Meliz,
wenn es um Z-Tabellen geht liegt die Logik für die Datenintegrität ja bei Dir.
Musst Du also einen neuen Eintrag einfügen, dann solltest Du vorher die von Eurer Businesslogik abhängigen Prüfungen durchführen und erst den geprüften Eintrag in die Tabellle schreiben. Geht es um mehrere Tabellen sollten die zusammengehörenden Einträge in die verschiedenen Tabellen alle in einer LUW erfolgen, damit nicht keine Schiefstände durch parallele Aktionen entstehen können.

MfG
Thomas R.
Bianka4768
....
....
 
Posts: 567
Joined: Tue Dec 10, 2002 5:46 pm

Re: DB-Zugriff Methode zum Modifizieren

Postby Aliya3110 » Thu Jun 11, 2015 10:18 am

Hallo Thomas,
ich meinte nicht die inhaltliche Prüfungen sondern, ob die Tabelle gesperrt ist. usw. was muss man da genau achten? Reichen diese drei Schritte aus?
1. ist Schreiben möglich? Zugriff auf Tabelle möglich? Ist die Tabelle gesperrt
2. Wenn ja, erst sperren dann Daten in die Tabelle schreiben. Modify der Z-Tabelle from itab. War das Schreiben der Datensätze erfolgreich.
3. Entsperren der Tabelle
Aliya3110
...
...
 
Posts: 125
Joined: Sun May 25, 2008 3:17 pm

Re: DB-Zugriff Methode zum Modifizieren

Postby Bianka4768 » Thu Jun 11, 2015 10:24 am

Hallo Meliz,
schau Dir die Doku zu Datenkonsistenz
http://help.sap.com/erp2005_ehp_04/help ... dren=false

an und dort das SAP-Sperrkonzept....

MfG
Thomas R.
Bianka4768
....
....
 
Posts: 567
Joined: Tue Dec 10, 2002 5:46 pm

Re: DB-Zugriff Methode zum Modifizieren

Postby Aliya3110 » Sun Jun 14, 2015 12:50 pm

Hallo Thomas,
danke für Deine Antwort.
Meine Daten werden aus XML gelesen und in die Z-Tabellen übernommen. Als Schlüsselfeld habe ich GUID, das neu generiert und in den Z-Tabellen übernommen wird. Inhaltlich muss ich die Daten nicht prüfen und Sperren brauche ich auch nicht, da ich die Datensätze nur in den Tabellen einfüge.
Um alle Z-Tabellen gebündelt zu aktualisieren, habe ich diese Verbuchungsbaustein angelegt. Leider kann ich nicht testen, da ich kein Zugriff auf dem Server habe. Stimmt der Verbuchungsfuba und der Aufruf? In dem Fuba, muss ich die Sy-Subrc nach der Modifikation nicht abfragen oder?

FUNCTION z_mm_luw_invoice_table.
*"----------------------------------------------------------------------
*"*"Update Function Module:
*"
*"*"Local Interface:
*" TABLES
*" TT_INVOICEHEADER TYPE ZTYMM_INVOICEHEADER
*" TT_ORDERS TYPE ZTYMM_ORDERS
*" TT_TERMOFPAYMENT TYPE ZTYMM_TERMOFPAYMENT
*" TT_ACCOUNTINGITEMS TYPE ZTYMM_ACCOUNTINGITEMS
*" TT_INVOICEITEMS TYPE ZTYMM_INVOICEITEMS
*" EXCEPTIONS
*" UPDATE_ERROR_ZMM_INVOICEHEAD
*" UPDATE_ERROR_ZMM_ORDERS
*" UPDATE_ERROR_ZMM_INVOICEITEMS
*" UPDATE_ERROR_ZMM_TERMOFPAYMEN
*" UPDATE_ERROR_ZMM_ACCOUNTING
*"----------------------------------------------------------------------

IF tt_invoiceheader IS NOT INITIAL.
MODIFY zmm_invoicehead FROM TABLE tt_invoiceheader.
IF sy-subrc = 0.

IF tt_orders IS NOT INITIAL.
MODIFY zmm_orders FROM TABLE tt_orders.
IF sy-subrc <> 0.
RAISE update_error_zmm_orders.
ENDIF.
ENDIF.

IF tt_invoiceitems IS NOT INITIAL.
MODIFY zmm_invoiceitems FROM TABLE tt_invoiceitems.
IF sy-subrc <> 0.
RAISE update_error_zmm_invoiceitems.
ENDIF.
ENDIF.

IF tt_termofpayment IS NOT INITIAL.
MODIFY zmm_termofpaymen FROM TABLE tt_termofpayment.
IF sy-subrc <> 0.
RAISE update_error_zmm_termofpaymen.
ENDIF.
ENDIF.

IF tt_accountingitems IS NOT INITIAL.
MODIFY zmm_accounting FROM TABLE tt_accountingitems.
IF sy-subrc <> 0.
RAISE update_error_zmm_accounting.
ENDIF.
ENDIF.

ELSE.
RAISE update_error_zmm_invoicehead.
ENDIF.
ENDIF.

ENDFUNCTION.

_________________________________________________________________________

METHOD modify_invoicetables.

CALL FUNCTION 'Z_MM_LUW_INVOICE_TABLE' IN UPDATE TASK
TABLES
tt_invoiceheader = it_invoiceheader
tt_orders = it_orders
tt_termofpayment = it_termofpayment
tt_accountingitems = it_accountingitems
tt_invoiceitems = it_invoiceitems
EXCEPTIONS
update_error_zmm_invoicehead = 1
update_error_zmm_orders = 2
update_error_zmm_invoiceitems = 3
update_error_zmm_termofpaymen = 4
update_error_zmm_accounting = 5
OTHERS = 6.

CASE sy-subrc.
WHEN 0.
COMMIT WORK.
WHEN 1.
RAISE EXCEPTION TYPE zcx_xml_document_base
EXPORTING
textid = zcx_xml_document_base=>update_error_invoicetable
gv_table = 'zmm_invoicehead'.
WHEN 2.
RAISE EXCEPTION TYPE zcx_xml_document_base
EXPORTING
textid = zcx_xml_document_base=>update_error_invoicetable
gv_table = 'zmm_orders'.
WHEN 3.
RAISE EXCEPTION TYPE zcx_xml_document_base
EXPORTING
textid = zcx_xml_document_base=>update_error_invoicetable
gv_table = 'zmm_invoiceitems'.
WHEN 4.
RAISE EXCEPTION TYPE zcx_xml_document_base
EXPORTING
textid = zcx_xml_document_base=>update_error_invoicetable
gv_table = 'zmm_termofpaymen'.
WHEN 5.
RAISE EXCEPTION TYPE zcx_xml_document_base
EXPORTING
textid = zcx_xml_document_base=>update_error_invoicetable
gv_table = 'zmm_accounting'.
WHEN 6.
RAISE EXCEPTION TYPE zcx_xml_document_base
EXPORTING
textid = zcx_xml_document_base=>update_error_invoicetable
gv_table = 'unknown error by updating the invoicetabellen'.
ENDCASE.

ENDMETHOD.
Aliya3110
...
...
 
Posts: 125
Joined: Sun May 25, 2008 3:17 pm

Re: DB-Zugriff Methode zum Modifizieren

Postby Bianka4768 » Tue Jun 16, 2015 5:41 am

Hallo Meliz,
sieht auf den ersten Blick prinzipiell passend aus - testen musst Du aber schon selbst.
Ein Problem sehe ich noch: Wenn Dein Modify fehlschlägt machst Du kein Rollback, so dass durch ein (impliziten) Datenbank-Commit die davorliegenden erfolgreichen Änderungen auf die Datenbank geschrieben werden....

MfG
Thomas R.
Bianka4768
....
....
 
Posts: 567
Joined: Tue Dec 10, 2002 5:46 pm

Next

Return to ABAP® für Anfänger

Who is online

Users browsing this forum: No registered users and 10 guests