Summenbildung & Anteil in %

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Summenbildung & Anteil in %

Beitrag von xGabriel (ForumUser / 16 / 6 / 0 ) »
Hallo zusammen!

Ich bin gerade dabei verschiedene Reports zu schreiben, welche dann später in regelmäßigen Abständen per Job auf ein bestimmtes Laufwerk automatisch als Excel abgelegt werden sollen.
Diese Abfragen sind bereits als Query's vorhanden. Mit diesen lässt sich aber die automatische Excel-Ablage per Job nicht realisieren.
Die Reports habe ich soweit, dass die richtigen Ergebnisse über den FuBa "GUI_DOWNLOAD" ausgespuckt und im gewünschten Verzeichnis gespeichert werden.

Jedoch stehe ich vor folgendem Problem:
- Wie bekomme von einer Spalte (Mengen von Verkaufsbelegspositionen) beim Gui-Download die Summe dieser Spalte mit abgespeichert? Über den ALV bekomm ich das ohne Probleme hin (über "do-sum" im Feldkatalog), so dass die Summe beim Aufruf des Reports immer standardmäßig angezeigt wird. Doch dies wird in den Excel-Download nicht mit übernommen. Habs auch nocht mit "AT ... SUM ENDAT" in meinem Loop probiert, aber ohne Erfolg.
Hat hier jemand einen Lösungsansatz für mich?

Folgeproblem beim nächsten Report:

Beim Erstellen von Querys gibt es ja die Möglichkeit sich ganz easy den Anteil in % eines Wertes per Checkbox ausgeben zu lassen. Dies müsste ich jetzt in meinem Report abbilden und hab nicht wirklich einen Plan wie ich vorgehen soll.
Ich habe wieder X Verkaufsbelegspositionen, wo ich mir zuvor zusätzlich bereits einige Werte errechne, welche ich in Z-Felder meiner Z-Struktur schreibe.
Das vorletzte Feld meiner Struktur ist "Menge nach Faktor" und das letzte "Anteil in Prozent". Nun bräuchte ich wieder nach der Auflistung aller Positionen am Schluss eine Zeile mit Gesamtsumme, damit ich mir für jede einzelne Position(Zeile) den Anteil in % errechnen kann (Menge nach Faktor / Gesamtmenge *100). Hier stoße ich mit meinen Fähigkeiten als ABAP-Jüngling an meine Grenzen und ich hoffe ihr Experten könnt mir weiterhelfen! :) :up:

Ich habe jetzt absichtlich kein Coding gepostet, damit ich den ohnehin schon langen Post nicht noch unübersichtlicher mache. Wenn ihr irgendwelche Infos braucht bitte einfach melden. :up:

Vielen Dank schon mal!
Lg Gabriel

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


Re: Summenbildung & Anteil in %

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Du musst in deiner Ausgabe-Tabelle eine zusätzliche Zeile einfügen und dort die zu berechneden Werte selbst "eintragen".

Code: Alles auswählen.

data:
  lt_table type tt_table, "= deine Ausgabetabelle
  ls_summe type line of tt_table.

Field-symbols:
  <ls_line> type line of tt_table. 

LOOP AT lt_table ASSIGNING <ls_line>.
  ADD <ls_line>-field1 TO ls_summe-field1. "= Für jedes zu berechnende Feld
ENDLOOP.

APPEND ls_summe TO lt_table.

* Für die Prozentwerte am Ende nochmal durch die Tabelle gehen
LOOP AT lt_table ASSIGNING <ls_line>.
  <ls_line>-percen1 = 100 / ls_summe-field1 * <ls_line>-field1.
ENDLOOP.
EDIT:
Es gibt auch den Befehl COLLECT, aber da muss man vorher die Datenstruktur (Schlüsselfelder usw.) speziell anpassen, was den Aufwand IMHO nicht wert ist, vorallem weil man dann recht schnell Flexibilität in Bezug auf die Austauschbarkeit von Feldern einbüst.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Summenbildung & Anteil in %

Beitrag von deejey (Specialist / 418 / 128 / 45 ) »
Ist im Grunde normal dass das nicht an Excel übergeben wird, denn Excel rechnet ja selbst :D Angenommen man übergibt die Zwischensummen/Summen, wenn man nicht dran denkt könnte man sie versehentlich in Excel erneut mitsummieren

Re: Summenbildung & Anteil in %

Beitrag von xGabriel (ForumUser / 16 / 6 / 0 ) »
@ a-dead-trousers:

Vielen Dank für die schnelle Antwort.
Aber leider bekomm ichs nicht hin, bin wie gesagt noch ziemlich unerfahren...

Also ich habe eine Struktur (ZSD_ESFC_ROH), mit meinen ganzen Spalten.
Meine interne Tabelle in die ich die Ergebnisse schreibe deklariere ich wie folgt:

gt_data TYPE STANDARD TABLE OF zsd_esfc_roh,
gs_data LIKE LINE OF gt_data.

In meinem LOOP schreibe ich dann die Daten (welche auch schon richtig ankommen) wie folgt in die gt_data:

Code: Alles auswählen.

   
    gs_data-zsd_wmeng = ls_vbap-awahr / 100 * ls_vbap-klmeng.
    gs_data-zsd_fak = p_brutto / p_wag. "die beiden Werte werden in der Selektion eingegeben um einen Faktor zu errechnen
    gs_data-zsd_fmeng = gs_data-zsd_fak * gs_data-zsd_wmeng.
*   gs_data-ZSD_PROZ =  Summe von: gs_data-zsd_fmeng / gs_data-zsd_fak.

 APPEND gs_data TO gt_data.
Bei deinem Code kann ich für tt_table nun aber weder gt_data (Typ ist unbekannt) noch zsd_esfc_roh (da eine Struktur) eingeben.

Ich bräuchte jetzt in meinem Fall die Summe von allen ZSD_FMENG - Werten um den Anteil in % (mit der oben aufgeführten Formel) zu errechnen und in ZSD_PROZ zu schreiben.

Ich wäre dir echt dankbar wenn du dein coding nochmal anpassen würdest mit meinen Daten!


@deejey: mir ist schon klar das Excel rechnen kann :D Aber in meinem Fall wird das Excel nach dem Download nicht versehentlich erneut summiert, darum hätte ich gerne, dass die Summen mit übergeben werden. Das sollte doch eg kein all zu großes Problem sein, denn wenn ich im ALV sortiere/Summen/Zwischensummen bilde und mir ein Excel-File manuell downloade übernimmt er auch alles mit :wink: Auch hier wäre es möglich, dass man danach diese Funktionen noch "versehntlich" im Excel erneut ausführt :wink:

Re: Summenbildung & Anteil in %

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »

Code: Alles auswählen.

field-symbols:
  <ls_data> type zsd_esfc_roh.

* Hier kommt der Befüllungscode rein

CLEAR gs_data. "Missbrauch als Summenzeile

LOOP AT gt_data ASSIGNING <ls_data>.
  ADD <ls_line>-field1 TO gs_data-field1. "= Für jedes zu berechnende Feld
ENDLOOP.

APPEND gs_data TO gt_data. "Summenzeile anhängen

LOOP AT gt_data ASSIGNING <ls_data>.
  <ls_data>-percen1 = 100 / gs_data-field1 * <ls_data>-field1. "= Für jedes zu summierende Feld
ENDLOOP.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Summenbildung & Anteil in %

Beitrag von xGabriel (ForumUser / 16 / 6 / 0 ) »
Maaaaann eyy ich bin anscheinend einfach zu doof :cry: :x :cry:


Hier nochmal mein ganzer LOOP mit den READ TABLES:

Code: Alles auswählen.

  LOOP AT lt_vbap INTO ls_vbap.

    READ TABLE lt_vbep INTO ls_vbep
    WITH KEY vbeln = ls_vbap-vbeln
    BINARY SEARCH.

    READ TABLE lt_vbuk INTO ls_vbuk
    WITH KEY vbeln = ls_vbap-vbeln
    BINARY SEARCH.

    READ TABLE lt_vbak INTO ls_vbak
    WITH KEY vbeln = ls_vbap-vbeln
    BINARY SEARCH.

    READ TABLE lt_vbup INTO ls_vbup
    WITH KEY vbeln = ls_vbap-vbeln
    BINARY SEARCH.

    READ TABLE lt_makt INTO ls_makt
    WITH KEY matnr = ls_vbap-matnr
    BINARY SEARCH.

    READ TABLE lt_mara INTO ls_mara
    WITH KEY matnr = ls_vbap-matnr
    BINARY SEARCH.

*folgende gs_data- Felder sind gleichzeitig alle Felder meiner Struktur:

    gs_data-posnr = ls_vbap-posnr.
    gs_data-mfrpn = ls_mara-mfrpn.
    gs_data-awahr = ls_vbap-awahr.
    gs_data-edatu = ls_vbep-edatu.
    gs_data-vbtyp = ls_vbak-vbtyp.
    gs_data-vbeln = ls_vbap-vbeln.
    gs_data-matnr = ls_vbap-matnr.
    gs_data-maktx = ls_makt-maktx.
    gs_data-edatu = ls_vbep-edatu.
    gs_data-zsd_wmeng = ls_vbap-awahr / 100 * ls_vbap-klmeng.
    gs_data-zsd_fak = p_brutto / p_wag.
    gs_data-zsd_fmeng = gs_data-zsd_fak * gs_data-zsd_wmeng.  "von diesem Feld wird die Summe benötigt
*   gs_data-ZSD_PROZ = gs_data-zsd_fmeng /  Summe von:  gs_data-zsd_fmeng

    APPEND gs_data TO gt_data.

    CLEAR ls_vbap.
    CLEAR ls_vbep.
    CLEAR ls_vbup.
    CLEAR ls_vbuk.
    CLEAR ls_vbak.
    CLEAR ls_mara.
    CLEAR ls_makt.


  ENDLOOP.
Bei dem coding von deinem letzten Post definiere ich das FS: <ls-data> mit meiner Struktur.
Mit LOOP AT gt_data ASSIGNING <ls_data>. habe ich nun in die Daten meiner Ausgabetabelle gt_data in der ls_data.

Doch hierbei tritt bei mir schon das erste Problem auf:
ADD <ls_line>-field1 TO gs_data-field1. "= Für jedes zu berechnende Feld

- Ich denke hierzu benötige ich ein weiteres Field-Symbol <ls_line> ? Wenn ja mit welcher Deklaration?
- Was wäre dann für mich field1? Ich kann hier ja nur bestehende Felder angeben, aber eg bräuchte ich ja ein "neues/freies" in welches ich die Summe schreiben kann?? Muss ich noch ein weiteres Feld in meiner Struktur anlegen?

Beim 2. LOOP deines codings steht als Kommentar "für jedes zu summierende Feld":
- doch wie sage ich dem Programm: "Zähle alle Werte aus allen ZSD_FMENG - Feldern zusammen"


Sorry nochmal für meine Unfähigkeit :oops:

Re: Summenbildung & Anteil in %

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Das <ls_line> sollte eigentlich ein <ls_data> sein. Klassicher CopyPasta-Fehler.
Die Felder FIELD1 und PERCENT1 sind nur PLATZHALTER. Hier musst du selbst Hand anlegen. Ich werd dir doch nicht deine ganze Arbeit abnehmen. :wink:
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

5
Antw.
3588
Views
Vermögensbildung: AG-Anteil nachträglich auszahlen
von roody1402 » 06.03.2007 10:37 • Verfasst in Human Resources
4
Antw.
1410
Views
ALV-Summenbildung
von Gast » 17.05.2005 19:24 • Verfasst in ABAP® für Anfänger
5
Antw.
2194
Views
Summenbildung ALV
von SAP_ENTWICKLER » 06.03.2014 13:07 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140