Brauche Unterstützung/Ideen

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

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

Brauche Unterstützung/Ideen

Beitrag von ABAP Neuling (ForumUser / 3 / 2 / 0 ) »
Hallo zusammen,

bin relativ neu in der ABAP Programmierung und habe nun einen Punkt erreicht an dem ich leider nicht weiterkomme.

Ich habe eine Tabelle mit folgenden Spalten (absteigend sortiert nach VkOrg+Kunnr+Anzahl Positionen):

A - VkOrg
B - Kunnr
C- Belegnummer
D - Anzahl Positionen
E - Splitkriterium

Nun sollte folgendes gemacht werden.
Für den Schlüssel VkOrg+Kunde sollen alle Belege dasselbe Sortierkriterium in Spalte E erhalten wenn die kumulierte Anzahl Positionen einen Grenzwert von >=200 erreicht.
Es darf jedoch kein Beleg aus Spalte C gesplittet werden.

Ich habe irgendwie überhaupt keine Idee wie ich das machen kann.
Bin für jeden Denkanstoß/Idee dankbar.

Gruß

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


Re: Brauche Unterstützung/Ideen

Beitrag von DeathAndPain (Top Expert / 1944 / 257 / 413 ) »
Also ich bin nicht huntertprozentig sicher, ob ich Deine Anforderung richtig verstanden habe. Insbesondere die Aussage "Es darf jedoch kein Beleg aus Spalte C gesplittet werden." ist mir nicht klar, denn Deine Tabelle enthält ja ohnehin keine Belegpositionen, die man splitten könnte, sondern nur ganze Belege.

Hier habe ich mal einen Code entworfen, der Deiner Anforderung, soweit ich sie verstanden habe, gerecht wird.

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report ZTEST4
*&---------------------------------------------------------------------*
REPORT ZTEST4.

TYPES: BEGIN OF TYPE_T,
         VKORG LIKE VBAK-VKORG,
         KUNNR LIKE VBAK-KUNNR,
         VBELN LIKE VBAK-VBELN,
         POSIT TYPE I,
         SPLIT(2) TYPE N,
       END OF TYPE_T.

DATA: T TYPE STANDARD TABLE OF TYPE_T WITH HEADER LINE,
      LAST_VKORG LIKE VBAK-VKORG,
      LAST_KUNNR LIKE VBAK-KUNNR,
      CURRENT_SPLIT(2) TYPE N,
      CURRENT_CUMULATION TYPE I.

*** START-OF-SELECTION ***
START-OF-SELECTION.

APPEND VALUE #( VKORG = '1000' KUNNR = '123456' VBELN = '00000001' POSIT = 60 SPLIT = '00' ) TO T.
APPEND VALUE #( VKORG = '1000' KUNNR = '123456' VBELN = '00000001' POSIT = 50 SPLIT = '00' ) TO T.
APPEND VALUE #( VKORG = '1000' KUNNR = '123456' VBELN = '00000001' POSIT = 70 SPLIT = '00' ) TO T.
APPEND VALUE #( VKORG = '1000' KUNNR = '123456' VBELN = '00000001' POSIT = 30 SPLIT = '00' ) TO T.
APPEND VALUE #( VKORG = '1000' KUNNR = '123456' VBELN = '00000001' POSIT = 60 SPLIT = '00' ) TO T.
APPEND VALUE #( VKORG = '1000' KUNNR = '123456' VBELN = '00000001' POSIT = 20 SPLIT = '00' ) TO T.
APPEND VALUE #( VKORG = '2000' KUNNR = '123456' VBELN = '00000001' POSIT = 180 SPLIT = '00' ) TO T.
APPEND VALUE #( VKORG = '2000' KUNNR = '123456' VBELN = '00000001' POSIT = 70 SPLIT = '00' ) TO T.
APPEND VALUE #( VKORG = '2000' KUNNR = '123456' VBELN = '00000001' POSIT = 1 SPLIT = '00' ) TO T.

LOOP AT T.
* Bei neuer Kombination aus VKORG und Kunde mit Splitkennzeichen von vorne anfangen
  IF T-VKORG <> LAST_VKORG OR T-KUNNR <> LAST_KUNNR.
    CLEAR: CURRENT_SPLIT, CURRENT_CUMULATION.
  ENDIF.

* Aktuelle Werte für nächsten Schleifendurchlauf merken
  LAST_VKORG = T-VKORG.
  LAST_KUNNR = T-KUNNR.

* Aktuelles Splitkennzeichen in die Spalte SPLIT eintragen und Positionen aufaddieren
  T-SPLIT = CURRENT_SPLIT.
  ADD T-POSIT TO CURRENT_CUMULATION.

* Der Beleg darf ja nicht gesplittet werden. Wenn die 200 aber überschritten werden,
* beim nächsten Beleg ein anderes Splitkennzeichen verwenden
  IF CURRENT_CUMULATION >= 200.
    ADD 1 TO CURRENT_SPLIT.
    CLEAR CURRENT_CUMULATION.
  ENDIF.

  MODIFY T TRANSPORTING SPLIT.
ENDLOOP.

* Ergebnis zur Veranschaulichung ausgeben
LOOP AT T.
  WRITE: / T-VKORG, T-KUNNR, T-VBELN, T-POSIT, T-SPLIT.
ENDLOOP.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
ABAP Neuling


Re: Brauche Unterstützung/Ideen

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
ich greif das beipsiel coding meines vorposters mal auf.

Code: Alles auswählen.

TYPES: BEGIN OF TYPE_T,
         VKORG    LIKE VBAK-VKORG,
         KUNNR    LIKE VBAK-KUNNR,
         VBELN    LIKE VBAK-VBELN,
         POSIT    TYPE p decimals 0,
         SPLIT(2) TYPE N,
       END OF TYPE_T.

DATA: T TYPE STANDARD TABLE OF TYPE_T WITH HEADER LINE.

data: summe_pos type p,
      vkorg     like VBAK-VKORG,
      kunnr     like vbak-kunnr.

*** START-OF-SELECTION ***
START-OF-SELECTION.

  APPEND VALUE #( VKORG = '1000' KUNNR = '123456' VBELN = '00000001' POSIT = 60 SPLIT = '00' ) TO T.
  APPEND VALUE #( VKORG = '1000' KUNNR = '123456' VBELN = '00000002' POSIT = 50 SPLIT = '00' ) TO T.
  APPEND VALUE #( VKORG = '1000' KUNNR = '123456' VBELN = '00000003' POSIT = 70 SPLIT = '00' ) TO T.
  APPEND VALUE #( VKORG = '1000' KUNNR = '123457' VBELN = '00000001' POSIT = 30 SPLIT = '00' ) TO T.
  APPEND VALUE #( VKORG = '1000' KUNNR = '123457' VBELN = '00000002' POSIT = 60 SPLIT = '00' ) TO T.
  APPEND VALUE #( VKORG = '1000' KUNNR = '123457' VBELN = '00000003' POSIT = 20 SPLIT = '00' ) TO T.
  APPEND VALUE #( VKORG = '2000' KUNNR = '123456' VBELN = '00000001' POSIT = 180 SPLIT = '00' ) TO T.
  APPEND VALUE #( VKORG = '2000' KUNNR = '123456' VBELN = '00000002' POSIT = 70 SPLIT = '00' ) TO T.
  APPEND VALUE #( VKORG = '2000' KUNNR = '123456' VBELN = '00000003' POSIT = 1 SPLIT = '00' ) TO T.

  sort t by  vkorg kunnr.
  loop at t.
    move: t-vkorg to vkorg,
          t-kunnr to kunnr.
    at end of kunnr.
      sum.
      move t-posit to summe_pos.
      if summe_pos > 200.
        loop at t where vkorg eq vkorg and kunnr eq kunnr.
          move '01' to t-split.
          modify t.
        endloop.
      endif.
    endat.
  endloop.

  loop at t.
    write:/ t-vkorg, t-kunnr, t-vbeln, t-posit, t-split.
  endloop.

Folgende Benutzer bedankten sich beim Autor ratsnus für den Beitrag:
ABAP Neuling

<:: XING-Gruppe Tricktresor::>

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1075
Views
Suche Unterstützung
von sapfuns » 25.01.2006 11:38 • Verfasst in ABAP® Core
0
Antw.
2105
Views
PDF-Konvertierung: Kyrillisch Unterstützung
von Matthias_L. » 12.09.2008 07:50 • Verfasst in Basis
2
Antw.
1038
Views
Ideen?
von BesenWesen » 13.04.2006 14:37 • Verfasst in ABAP® Core
0
Antw.
1314
Views
Suche Unterstützung für 3-4 Stunden im FI-Cust. im Rhein-M
von Johannes » 15.12.2005 23:37 • Verfasst in Financials
12
Antw.
6528
Views
Textelemente und Vererbung, Ideen?
von GastX » 21.01.2015 09:17 • Verfasst in ABAP Objects®

Ü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

Aktuelle Forenbeiträge

Eclipse - warum/wann verwendet ihr es [nicht]
vor 16 Minuten von ewx 23 / 1802
Dialog-Container mit Toolbar/Status
vor 14 Stunden von DeathAndPain gelöst 22 / 3191
Daten an Tabelle binden
vor 19 Stunden von Lukas Sanders 2 / 1058
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 626

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.

Aktuelle Forenbeiträge

Eclipse - warum/wann verwendet ihr es [nicht]
vor 16 Minuten von ewx 23 / 1802
Dialog-Container mit Toolbar/Status
vor 14 Stunden von DeathAndPain gelöst 22 / 3191
Daten an Tabelle binden
vor 19 Stunden von Lukas Sanders 2 / 1058
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 626

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2620
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9207