Datenimport mit LSMW

Alles Rund um SAP®.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Datenimport mit LSMW

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
Hallo Freaks.

Ich möchte mit der LSMW neu debitoren importieren.
Soweit funktioniert es ja auch.

Die Tabelle KNA1 enthält ein Feld NAME1 (kein Schlüssel)).
Mein Importfile 'Bewerber' enthält ebenfalls diese Spalte.
Wenn es den Namen (aus Bewerber) in der KNA1-NAME1 schon gibt, dann soll kein Datensatz angelegt werden.

Sprich: Keine doppelten Debitoren (nach Name gesehen).

Habe folgendes ausprobiert:
__GLOBAL_DATA__: TABLES: KNA1.
BKN00-TCODE: Select count(*) from kna1
where name1 = BEWERBER-NAME1.
if sy-dbcnt = 0.
skip_record.
else.
bkn00-tcode = 'XD01'.
endif.

Das funktioniert aber nicht wirklich.
Die Datensätze werden jedesmal erstellt.

mfg
Richard

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


Beitrag von Gast ( / / 0 / 3 ) »
Nach Select count(*) ist sy-dbcnt = 1, weil immer ein Eintrag zurückgeliefert wird (nämlich die Anzahl passender Sätze).
Du musst also die Anzahl mit INTO my_cnt selektieren und dann my_cnt prüfen.

Bei SELECT COUNT(*) müssen außerdem alle Einträge geprüft werden, obwohl Du nur wissen willst, ob es überhaupt (mindestens) einen Eintrag gibt.
Außerdem liegt auf NAME1 kein Sekundärindex.
Daher ist es besser, zusätzlich zu NAME1 noch MCOD1 als Bedingung aufzunehmen und SELECT SINGLE zu nehmen (dann aber außer SY-SUBRC 0 auch 8 möglich, wenn es mehrere passende gibt).

Nebenbei: Was machst Du, wenn 2 Debitoren 'Klaus Müller' heißen? Den 2. nicht anlegen?
Das kann es doch auch nicht sein.

Frank

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
hallo

Ich dachte: bei count(*) - ist count gleich 0 dann ist sy-subrc = 4, ist count > 0 dann ist sy-subrc = 0.

und daß mit dem doppelten Müller: das war die einfache Erklärung. Für mich währe es mal wichtig, es zu schaffen, nur bedingt Datensätze anzulegen.

mfg
Richard

Beitrag von black_adept (Top Expert / 4159 / 136 / 960 ) »
Hi RiffRaff

ein paar Anmerkungen.

1.)
if sy-dbcnt = 0.
skip_record.
else.
bkn00-tcode = 'XD01'.
endif.
Du machst den skip falls ( sy-dbcnt = 0 ) = ( Kein Datensatz gefunden. Das widerspricht deiner Problembeschreibung. Allerdings halte ich diesen Select eh für problematisch - siehe 2.)

2.) Ich würd mir alle NAME1-Werte aus der KNA1 beim Start der LSMW-Konvertierung in eine int. Tabelle holen, alle in Großschreibung konvertieren und evtl. noch Leerzeichen rauswerfen. Selbige Aktion mit dem "NAME1" aus dem Bewerberfile und dann erst vergleichen. Damit kannst du zumindest simple Formatierungsfehler ausgleichen.

3.) g_skip_record ist für deinen Fall nicht so toll - es sei denn du möchtest dies für alle Segmente die du anlegen willst tun. ( mind. BKN00 und BKNA1). Ich benutze stattdessen lieber g_skip_transaction.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
hallo

zu 1) hast recht :roll: - mein Fehler
zu 2) wie und wo
zu 3) entweder alles oder nix
habe jetzt 2mal (bei BKN00 und BKNA1) bei
__END_OF_RECORD__ folgendes eingetragen:

Select count(*) from kna1 where name1 = bewerber-name1.
if sy-dbcnt <> 0.
skip_record.
else.
transfer_record.
endif.

könnte mir vorstellen, daß mit
'g_skip_transaction' der Code nur einmal
benötigt wird. Nur wo trage ich das ein.
habe jetzt ungefähr nen 1/2 Tag gebraucht,
um rauszufinden, wo ich jetzt meinen Code habe.


mfg
Richard

Beitrag von black_adept (Top Expert / 4159 / 136 / 960 ) »
Hi RiffRaff

bei "BEGIN_OF_PROCESSING" die KNA1 lesen (mittels Select) und dann stets bei "BEGIN_OF_RECORD" oder "END_OF_RECORD" mittels READ TABLE schauen, ob der Debitor schon ex. und in diesem Fall dann dort auch g_skip_transaction.

Hmm - und wenn du den Quälcode des von der LSMW-erzeugten Reports sehen willst brauchst du doch nur den ( mit der Defaulteinstellung auf unsichtbar gesetzten ) Punkt "Umsetzungsprogramm anzeigen" anklicken.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

4
Antw.
4900
Views
Datenimport in ein View
von errorist » 21.07.2008 14:33 • Verfasst in ABAP® für Anfänger
5
Antw.
7750
Views
LSMW: lsmw.read enthält keinen gültigen Header Satz
von codierknecht » 16.11.2006 10:49 • Verfasst in ABAP® für Anfänger
1
Antw.
3166
Views
LSMW
von Alyaa » 19.08.2008 13:50 • Verfasst in Human Resources
1
Antw.
3070
Views
LSMW
von christof » 12.02.2015 18:34 • Verfasst in Basis
1
Antw.
3080
Views
Umschlüsselung mit LSMW
von bohne » 27.07.2006 09:41 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

IF mit AND und OR
vor 3 Tagen von DeathAndPain 10 / 30120
BAPI zur ABSO?
vor 4 Wochen von DeathAndPain 2 / 11450

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.