Debitoren OPs und die Kostenstelleninfos dazu lesen

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

SAP R/3 Finanzwesen: Hauptbuchhaltung; Kreditorenbuchhaltung; Debitorenbuchhaltung; Bankbuchhaltung; Anlagenbuchhaltung; ...
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

Debitoren OPs und die Kostenstelleninfos dazu lesen

Beitrag von Johannes ( / / 0 / 3 ) »
Hallo zusammen,

stehe vor einem fast unlösbaren Problem. Ich muss eine Debitoren OP-Liste nach Kostenstellen basteln und dazu muss ich sowohl die Tabellen BSAD und BSID als auch BSEG lesen. Ich habe erstmal die BSAD und BSID gelesen und (das sind 75.000 Sätze) und in einer it.Tabelle abgelegt. Dann Lese ich BSEG. Da ich ich nicht weiss, welche Sachkontenbelege offen sind, muss ich ca 150.000 BSEG-Belege selektieren und auch ablegen, damit ich per loop die int.tabelle von BSEG mit der int.Tabelle von BSID bzw. BSAD abgleichen kann. Das dauert unvertretbar lange und weiss nicht wie ich da vorgehen soll. Ich lese sogar BSEG direkt in einer Tabelle. Trotzdem sehr sehr sehr langsam. Allein BSEG lesen allein reicht nicht aus. Wie würdet ihr dabei vorgehen? Für eine Antwort wäre ich sehr dankbar.

Grüsse

Johannes

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


Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hallo Johannes,

1) du selektierst die gesamte BSID (nur OP's) in eine interne Tabelle itab (es reichen die notwendigen Felder : bukrs, belnr , gjahr, buzei, kunnr...)

2) diese loopst du und holst dir folgende Infos' aus der Bseg

Code: Alles auswählen.

select kostl dmbtr ... into rec
         from bseg
         where bukrs = itab-bukrs 
           and gjahr = itab-gjahr
           and belnr = itab-belnr
           and buzei <> itab-buzei
           and kostl <> space
           and koart = 'S'.
Alternative wenn nur eine Gegenposition bestehen würde, kannst du auch die logische Datenbank DDF verwenden und mit dem Befehl get gseg die SK-pos. krallen oder mit dem fuba get_gkont.

es gibt einige Möglichkeiten.

Im übrigen sind 75.000 und 150.000 Belege sehr wenig
(ich habe auf meinem Testsytem 4-5 Mio.)
Wie lange laufen die Programme denn ?


Gruß Andreas

Grössere Menge Daten lesen

Beitrag von Johannes ( / / 0 / 3 ) »
Hallo Andreas,

vielen Dank für Deinen Tip. Ich habe so gemacht, dass ich erstmal die OPs aus den Tabellen BSID und BSAD in eine interne Tabelle "it_bsid" eingelesen habe. Danach habe ich die Sätze aus der Tab. BSEG in eine interne Tabelle "it_bseg" eingelesen. Dann loope ich über die int.Tabelle it_SEG und schaue nach, ob der dazugehörige Satz in der int.Tabelle it_bsid noch offen ist. Wenn ja, wird der BSEG-Satz in der Liste ausgewiesen. Und das dauert 5 Stunden.Meinst Du, dass es schneller geht wenn man nur die BSAD und BSID in eine interne Tabelle "it_bsid" einliest und mit den Sätzen aus der int.Tabelle per SELECT die Werte aus BSEG ausselektiert?

Gruss

Johannes

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Ja Johannes - wesentlich schneller !

Warum selektierst du die BSAD - oder muß du OP's zu einem Stichtag berechnen ?


Andreas

... das Pferd anders aufzäumen

Beitrag von Der Mühlviertler (ForumUser / 29 / 0 / 0 ) »
Servus,
soweit ich das herausinterpretieren kann, steht eine debitorische Position einer Ertragsposition mit CO-Kontierung gegenüber.
Wenn es für den täglichen Bedarf notwendig ist, debitorische Positionen nach CO-Kriterien auszuwerten, würde ich die CO-Kontierung bereits beim Erstellen der Rechnung nach BSID mitgeben.
Entweder direkt ins Feld 'Kostenstelle' in BSID oder wenn das technisch nicht möglich oder erlaubt ist, in ein APPEND-Feld. Gefüllt würde das Feld bei der Rechnungserstellung über eine Substitution, sofern der Beleg FI-seitig gebucht wird. Auch im SD müßte es entspr. Exits geben !
Herzliche Grüße

... das Pferd anders aufzäumen

Beitrag von Der Mühlviertler (ForumUser / 29 / 0 / 0 ) »
Servus,
soweit ich das herausinterpretieren kann, steht eine debitorische Position einer Ertragsposition mit CO-Kontierung gegenüber.
Wenn es für den täglichen Bedarf notwendig ist, debitorische Positionen nach CO-Kriterien auszuwerten, würde ich die CO-Kontierung bereits beim Erstellen der Rechnung nach BSID mitgeben.
Entweder direkt ins Feld 'Kostenstelle' in BSID oder wenn das technisch nicht möglich oder erlaubt ist, in ein APPEND-Feld. Gefüllt würde das Feld bei der Rechnungserstellung über eine Substitution, sofern der Beleg nur FI-seitig gebucht wird. Sollte SD im Einsatz sein, müßte es auch dort entspr. Exits geben !
Herzliche Grüße

Wird es trotzdem schneller....?

Beitrag von Johannes ( / / 0 / 3 ) »
Hallo Andreas,

Ja, ich muss die OPs zu einem Stichtag berechnen. Ich muss aber BSEG mit BUKRS, BELNR und GJAHR lesen und nicht mit vollem Schlüssel (ich muss Gegenpositionen zu dem Debitor lesen), d.h. BUZEI fehlt. Läuft es trotzdem schneller, wenn man BSEG nicht in eine interne Tabelle einliest und loopt ?

Danke und Gruss

Johannes

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hallo Johannes ,

hier ein kl. Progrämmchen, welches eigentlich recht schnell läuft ( 25 Min. für 250.000 Op's)


Code: Alles auswählen.

REPORT zdebikostl .

DATA: BEGIN OF itab OCCURS 0,
        bukrs TYPE bsid-bukrs,
        kunnr TYPE bsid-kunnr,
        gjahr TYPE bsid-gjahr,
        belnr TYPE bsid-belnr,
        buzei TYPE bsid-buzei,
        budat TYPE bsid-budat,
        bldat TYPE bsid-bldat,
        dmbtr TYPE bsid-dmbtr,
        kostl TYPE bsid-bldat,
      END OF itab.

DATA: BEGIN OF ktab OCCURS 0,
        bukrs LIKE bsid-bukrs,
        kunnr LIKE bsid-kunnr,
        kostl LIKE bsid-kostl,
        dmbtr LIKE bsid-dmbtr,
      END OF ktab.

DATA: x_save,                     "for Parameter I_SAVE
      gs_variant TYPE disvariant. "for parameter IS_VARIANT
DATA shkzg TYPE bsid-shkzg.
SELECT-OPTIONS s_bukrs FOR itab-bukrs.
SELECT-OPTIONS s_kunnr FOR itab-kunnr.
PARAMETERS p_day TYPE sy-datum.
TYPE-POOLS : slis.
DATA : fcat TYPE slis_t_fieldcat_alv.
DATA lay TYPE slis_layout_alv.
DATA prog TYPE sy-repid.
RANGES stida FOR bsid-bldat.

START-OF-SELECTION.

  PERFORM selection USING 'BSID'.
*für AP's Stichtag bezogen
  stida-low = p_day.
  stida-sign = 'I'.
  stida-option = 'GT'.
  APPEND stida.
  PERFORM selection USING 'BSAD'.

  LOOP AT itab.
    MOVE-CORRESPONDING itab TO ktab.

    SELECT kostl  shkzg dmbtr FROM  bseg
           INTO (ktab-kostl, shkzg, ktab-dmbtr)
           WHERE  bukrs  = itab-bukrs
           AND    belnr  = itab-belnr
           AND    gjahr  = itab-gjahr
           AND    buzei  <> itab-buzei
           AND    koart  = 'S'
           AND    kostl <> space.
*Vorzeichen umdrehen
      IF shkzg = 'S'.
        ktab-dmbtr = ktab-dmbtr * -1.
      ENDIF.
      COLLECT ktab.

    ENDSELECT.
  ENDLOOP.

  prog = sy-repid.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            i_program_name     = prog
            i_internal_tabname = 'KTAB'
            i_inclname         = prog
       CHANGING
            ct_fieldcat        = fcat.

  x_save = 'X'.
  gs_variant-report     = sy-repid.

  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
            it_fieldcat = fcat
            is_variant  = gs_variant
            i_save      = x_save
       TABLES
            t_outtab    = ktab[]
       EXCEPTIONS
            OTHERS      = 1.
*&---------------------------------------------------------------------*
*&      Form  selection
*&---------------------------------------------------------------------*
FORM selection USING   tabn.

  SELECT bukrs  kunnr  gjahr  belnr  buzei  budat  bldat dmbtr
             FROM  (tabn) APPENDING  TABLE itab
           WHERE  bukrs  IN s_bukrs
           AND    kunnr  IN s_kunnr
           AND    augdt  IN stida.
  MESSAGE i001(00) WITH 'Sätze:' sy-dbcnt.


ENDFORM.                    " sel
lg Andreas

Bei mir läuft es auch nach diesem Verfahren schneller

Beitrag von Johannes ( / / 0 / 3 ) »
Hallo Andreas,

ich habe es jetzt genauso gemacht und es läuft schneller !!!

Vielen Dank

Johannes

Seite 1 von 1

Vergleichbare Themen

1
Antw.
9986
Views
Unterschied: Sequentielles lesen, direktes lesen
von MarkusW » 07.08.2008 16:46 • Verfasst in ABAP® für Anfänger
1
Antw.
2679
Views
Debitoren Avis
von Thomas82515 » 05.03.2008 15:18 • Verfasst in Financials
0
Antw.
1878
Views
Zahlungsmitteilung Debitoren
von Katreo » 28.01.2010 14:20 • Verfasst in Financials
1
Antw.
2538
Views
Hilfeeeee... bei Debitoren!!!!!
von HH_ABAP » 30.04.2018 14:07 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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.