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 / 2009 / 271 / 425 ) »
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.
2462
Views
PDF-Konvertierung: Kyrillisch Unterstützung
von Matthias_L. » 12.09.2008 07:50 • Verfasst in Basis
2
Antw.
1349
Views
Ideen?
von BesenWesen » 13.04.2006 14:37 • Verfasst in ABAP® Core
12
Antw.
7707
Views
Textelemente und Vererbung, Ideen?
von GastX » 21.01.2015 09:17 • Verfasst in ABAP Objects®
2
Antw.
1996
Views
Ideen für mögliches Abschlussprojekt
von crishi_crd » 11.12.2013 12:53 • Verfasst in ABAP® für Anfänger
7
Antw.
3078
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

BAPI_ACC_DOCUMENT_POST
vor 2 Tagen von Lukas Sanders 3 / 840
Side by Side extensions
vor 4 Tagen von JHM 2 / 1039
Benutzerdefinierte Felder PSP
vor einer Woche von Rabea1103 1 / 9482

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

BAPI_ACC_DOCUMENT_POST
vor 2 Tagen von Lukas Sanders 3 / 840
Side by Side extensions
vor 4 Tagen von JHM 2 / 1039
Benutzerdefinierte Felder PSP
vor einer Woche von Rabea1103 1 / 9482

Unbeantwortete Forenbeiträge

Benutzerdefinierte Felder PSP
vor einer Woche von Rabea1103 1 / 9482
Spool vereinen OTF und PDF
vor 3 Wochen von anna2205 1 / 23399
XSLT und Loipro05 Transformation
December 2025 von Torsten1965 1 / 30327
VOLL Artikel in einem Display Typ 12
November 2025 von ThomasM84 1 / 49237