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 / 2008 / 271 / 424 ) »
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

0
Antw.
2460
Views
PDF-Konvertierung: Kyrillisch Unterstützung
von Matthias_L. » 12.09.2008 07:50 • Verfasst in Basis
2
Antw.
1338
Views
Ideen?
von BesenWesen » 13.04.2006 14:37 • Verfasst in ABAP® Core
12
Antw.
7655
Views
Textelemente und Vererbung, Ideen?
von GastX » 21.01.2015 09:17 • Verfasst in ABAP Objects®
2
Antw.
1986
Views
Ideen für mögliches Abschlussprojekt
von crishi_crd » 11.12.2013 12:53 • Verfasst in ABAP® für Anfänger
7
Antw.
3028
Views
Ideen für einen Anfänger Programm
von the_skywalker » 23.08.2021 23:06 • 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

Aktuelle Forenbeiträge

Zukunft des ABAP Entwicklers
vor 3 Tagen von DeathAndPain 15 / 1090
HR in der Zukunft?
vor 4 Tagen von DeathAndPain 6 / 2894
Prüfzeugnisse Anlagen finden
vor 6 Tagen von ewx gelöst 2 / 412

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

Zukunft des ABAP Entwicklers
vor 3 Tagen von DeathAndPain 15 / 1090
HR in der Zukunft?
vor 4 Tagen von DeathAndPain 6 / 2894
Prüfzeugnisse Anlagen finden
vor 6 Tagen von ewx gelöst 2 / 412

Unbeantwortete Forenbeiträge

Spool vereinen OTF und PDF
vor einer Woche von anna2205 1 / 370
XSLT und Loipro05 Transformation
letzen Monat von Torsten1965 1 / 6596
VOLL Artikel in einem Display Typ 12
November 2025 von ThomasM84 1 / 24568