Änderungsbelege beim Löschen aus Datenbanktabelle

Getting started ... Alles für einen gelungenen Start.
3 Beiträge • Seite 1 von 1
3 Beiträge Seite 1 von 1

Änderungsbelege beim Löschen aus Datenbanktabelle

Beitrag von Leonidas (ForumUser / 11 / 3 / 0 ) »
Dear Experts,

zunächst kurz die Problemstellung:

Aus der Tabelle LFBK (Lieferantenstamm Bankverbindungen) sollen die Einträge gelöscht werden, für die in LFA1 (Lieferantenstamm allg. Teil) ein Löschvermerk gesetzt ist.

Hierfür sollen Änderungsbelege weggeschrieben werden. Ich hatte mit Änderungsbelegen noch nie etwas zu tun, daher einige Fragen:

- Sind Änderungsbelege für diesen Fall ein angebrachtes Mittel?
- Gibt es Alternativen, kann ich irgend etwas bereits vorhandenes triggern?

Ich denk mal ich muss irgendwie KRED_WRITE_DOCUMENT aufrufen und die entsprechenden Parameter mitgeben? In der SAP Help steht noch irgendwas davon, dass man INCLUDES einbinden muss, ein Beispielprogrammen finde ich aber keine engebundenen Includes. Im Prinzip fehlt mir noch die Vorstellung davon, was ich jetzt tatsächlich selbst noch tun muss und was schon vorhanden ist.

Ich hab mal in der TA fk02 eine Bankverbindung gelöscht und den Debugger angeworfen, ich bin irgendwo auf irgendwas gestoßen, hab zwar die Logik nicht verstanden aber irgendwo wurde "U" für Update gesetzt und ich hätte eigentlich erwartet, dass "D" für Delete gesetzt wird - weiß jmd., was es damit auf sich hat?

Vielen Dank schon mal für eure Hilfe.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Änderungsbelege beim Löschen aus Datenbanktabelle

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Prinzipiell bist du auf dem richtigen Dampfer.
Du musst dem Baustein zwar alle Import-Parameter mitgeben, aber du brauchst wahrscheinlich nur n_lfa1 und o_lfa1 zu füllen.
Oder du nimmst nur den relevanten Code aus dem Baustein:

Code: Alles auswählen.

  CALL FUNCTION 'CHANGEDOCUMENT_OPEN'
    EXPORTING
      OBJECTCLASS             = 'KRED'

    CALL FUNCTION 'CHANGEDOCUMENT_SINGLE_CASE'
      EXPORTING
        TABLENAME              = 'LFA1'
        WORKAREA_OLD           = O_YLFA1
        WORKAREA_NEW           = N_LFA1
        CHANGE_INDICATOR       = UPD_LFA1
        DOCU_DELETE            = 'X'

  CALL FUNCTION 'CHANGEDOCUMENT_CLOSE'
    EXPORTING
      OBJECTCLASS             = 'KRED'
      OBJECTID                = OBJECTID
Update-Kennzeichen sollte dann ein "D" sein.
Zu prüfen wäre noch, ob nicht die Änderungsbelege ebenfalls archiviert werden... :)
Auf jeden Fall muss die Auswertung dann z.B. über Report RSSCD100.

Eine andere Möglichkeit wäre evtl. noch das Löschen im Syslog zu vermerken.
Wobei das nicht wirklich nachhaltig ist...

Re: Änderungsbelege beim Löschen aus Datenbanktabelle

Beitrag von Leonidas (ForumUser / 11 / 3 / 0 ) »
Danke soweit mal ewx. Die Tabelle muss aber LFBK sein, oder? Aus der lösche ich ja. LFA1 sollte das eigentlich nicht berühren, dort sollen die Kreditoren drin bleiben.

Muss ich nicht CHANGEDOCUMENT_MULTIPLE_CASE benutzen? Oder muss ich loopen und Zeilenweise löschen? Es sind insg. ca. 9000 Datensätze, die gelöscht werden.

Allerdings wüsste ich gar nicht, wie ich das in einem Delete hinbekomme, da dort in der sel_cond keine subqueries erlaubt sind und ob/wie ich hier eine Selektionstabelle nutzen könnte weiß ich leider auch nicht =\

Also würde ich über eine interne Tabelle gehen und zeilenweise löschen und könnte dann wieder den SINGLE benutzen in der Hoffnung, dass das einigermaßen performant ist.


---------

Wenn ich den Funktionsbaustein KRED_WRITE_DOCUMENT aufrufe, möchte der folgende Parameter von mir:

Code: Alles auswählen.

CALL FUNCTION 'KRED_WRITE_DOCUMENT'
  EXPORTING
    objectid                      =
    tcode                         =
    utime                         =
    udate                         =
    username                      =
*   PLANNED_CHANGE_NUMBER         = ' '
*   OBJECT_CHANGE_INDICATOR       = 'U'
*   PLANNED_OR_REAL_CHANGES       = ' '
*   NO_CHANGE_POINTERS            = ' '
*   UPD_KNVK                      = ' '
    n_lfa1                        =
    o_ylfa1                       =
*   UPD_LFA1                      = ' '
*   UPD_LFAS                      = ' '
*   UPD_LFAT                      = ' '
    n_lfb1                        =
    o_ylfb1                       =
*   UPD_LFB1                      = ' '
*   UPD_LFB5                      = ' '
*   UPD_LFBK                      = ' '
*   UPD_LFBW                      = ' '
*   UPD_LFEI                      = ' '
*   UPD_LFLR                      = ' '
    n_lfm1                        =
    o_ylfm1                       =
*   UPD_LFM1                      = ' '
*   UPD_LFM2                      = ' '
*   UPD_LFZA                      = ' '
*   UPD_WYT1                      = ' '
*   UPD_WYT1T                     = ' '
*   UPD_WYT3                      = ' '
  TABLES
    xknvk                         =
    yknvk                         =
    xlfas                         =
    ylfas                         =
    xlfat                         =
    ylfat                         =
    xlfb5                         =
    ylfb5                         =
    xlfbk                         =
    ylfbk                         =
    xlfbw                         =
    ylfbw                         =
    xlfei                         =
    ylfei                         =
    xlflr                         =
    ylflr                         =
    xlfm2                         =
    ylfm2                         =
    xlfza                         =
    ylfza                         =
    xwyt1                         =
    ywyt1                         =
    xwyt1t                        =
    ywyt1t                        =
    xwyt3                         =
    ywyt3                         =
          .
Ich versteh gar nicht, was ich z.B. unter lfa1, lfb1 angeben soll, da es dort ja keine Änderungen gibt? Sämtliche Guides und Dokus zielen darauf ab, dass man selbst ein Änderungsobjekt anlegt. Dort werden dann nurnoch Includes eingebunden und alles andere scheint wie magisch von selbst zu funktioniern. Finde es merkwürdig, dass es so wenige Quellen zu diesem Thema zu geben scheint.

Seite 1 von 1

Vergleichbare Themen

10
Antw.
16014
Views
HILFE!!! Inaktive Datenbanktabelle löschen
von Pepper_Phil » 21.09.2011 10:29 • Verfasst in SAP - Allgemeines
9
Antw.
7812
Views
Änderungsbelege
von Amin » 07.06.2006 11:33 • Verfasst in ABAP® Core
2
Antw.
4192
Views
Änderungsbelege
von Z_Sven » 28.09.2011 16:21 • Verfasst in ABAP® für Anfänger
4
Antw.
2127
Views
Änderungsbelege
von Thomas R. » 14.02.2005 12:21 • Verfasst in Dialogprogrammierung
12
Antw.
12353
Views
Änderungsbelege - wie geht das?
von RantanplanFX » 05.06.2014 14:03 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.