Newcomer mit Reportfragen

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

Newcomer mit Reportfragen

Beitrag von MisterB (ForumUser / 15 / 0 / 0 ) »
Hallo zusammen

Ich bin ein absoluter Neuling, arbeite jetzt seit 2 Monaten mit Abap und SAP und habe daher noch nicht viel Erfahrung. Ich habe den Kurs ABAP Workbench Grundlagen besucht, aber ihr kennt es ja, soviel in einer Woche ins Gesicht reingeknallt bekommen 8) aber so ist das Leben nunmal ;)

Ich habe eine Frage, ich bin mir sicher es gibt viele Möglichkeiten, das Problem zu lösen. Also ich muss ein Report schreiben und 2 Buchungsarten miteinander vergleichen (CoCa und FI). Ich habe insgesamt 2 verschiedene physische Tabellen, wo ich die Einträge entnehmen muss, ich habe in beiden Tabellen eine Kundennummer, die bei beiden Tabellen absolut gleich sind, muss also als Schlüsselwort diese nehmen. Schlussendlich muss ich 2 Beträge miteinander vergleichen und den Differenz darstellen.

Die einte Tabelle ist BSAD

Da habe ich Buchungskreis (bsad-bukrs), FI Belegart(bsad-blart), Periode(bsad-zuonr), Coca Belegart(bsad-xref2), kundenr(bsad-kunnr), Vkorg(bsad-bukrs nur die ersten 3 Stellen, sonst sind es 4) und Betrag(bsad-dmbtr).

Andere Tabelle ist Z185_CCM_PRBU

Da habe ich vkorg (Z185_CCM_PRBU-adm), periode(Z185_CCM_PRBU-perio), coca belegart(Z185_CCM_PRBU-blart), betrag(Z185_CCM_PRBU-betrg) und kundenr(Z185_CCM_PRBU-adm).

Ausgeben muss ich dann Kundenr, Kundenname, Betrag prbu, betrag fi, Differenz, mwst nr welche auch in der BSAD zu finden ist, Status welche im prbu ist.

Ich habe meine Daten mal so deklariert, ich habe jeweils zwei itabs für eine Tabelle gemacht, meine Frage ist, ob ich auch alles in einem reinpacken kann?

tables: z185_ccm_prbu,
bsad,
bsid,
vbak,
zvsd_admb,
kna1.

types: begin of t_bsad, "aus der BSAD Tabelle"
kunnr like bsad-kunnr, "ADM"
blart like bsad-blart, "FI Belegart"
zuonr like bsad-zuonr, "Provisionsperiode"
bukrs like bsad-bukrs, "Buchungskreis"
xref2 like bsad-xref2, "Coca Belegart"
bukrs1 like bsad-bukrs, "Verkaufsorganisation"
dmbtr like bsad-dmbtr, "Betrag"
end of t_bsad.

types: begin of t_psbu,
vkorg like z185_ccm_prbu-adm,
perio like z185_ccm_prbu-perio,
ccbla like z185_ccm_prbu-blart,
betr like z185_ccm_prbu-betrg,
adm like z185_ccm_prbu-adm,
end of t_psbu.

data: i_psbu type table of t_psbu,
w_psbu type t_psbu.

Selection Screen sieht so aus:

report z00v_li_cc_analyse_prbu_fi message-id z00v.

include z00v_li_cc_analyse_prbu_fi_top. " global Data

selection-screen begin of block b1 with frame.
parameters: p_vkorg type vkorg memory id vko,
xperio like z185_ccm_prbu-perio obligatory.

select-options: s_adm for zvsd_admb-kunnr matchcode object debi,
s_fibla for bsad-blart default 'CC',
s_ccbla for bsad-xref2.

selection-screen end of block b1.

initialization.
xperio = sy-datum. "aktuelles Datum"

* -------------------------------------------------------------------*

include z00v_li_cc_analyse_form.

* -------------------------------------------------------------------*
start-of-selection.

perform itab_holen.

*PERFORM liste.

Perform itab holen habe ich momentan nur das drinne:

form itab_holen .

clear: i_bsad, w_bsad.

select kunnr blart zuonr bukrs xref2 bukrs dmbtr from bsad into corresponding fields of table i_bsad
where kunnr in s_adm
and blart in s_fibla
and xref2 in s_ccbla.

loop at i_bsad into w_bsad.

endloop.

Hmm wie muss ich jetzt weiter machen?

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


Re: Newcomer mit Reportfragen

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
Hallo MisterB,

grundsätzlich kannst du mehrere Selects aus verschiedenen DB-Tabs in eine itab reinpacken. Du kannst dann bei der Selektion
into corresponding fields of itab machen. (hab grad gesehen, dass du das schon machst).

ich kenne die Tabellen nicht, aber du könntest auch wenn die Keyfelder gleich sind, einen inner join machen.
oder schauen, ob schon eine view vorhanden ist, die die nötigen Felder beinhaltet.
oder
du kannst auch mit den Daten aus der i_bsad einen Select auf Z185_CCM_PRBU machen.

Code: Alles auswählen.

select * from Z185_CCM_PRBU into corresponding fields of itab_prbu
for all entries in i_bsad
where kunnr = i_bsad-kunnr.
Viele Grüße
coco

Re: Newcomer mit Reportfragen

Beitrag von MisterB (ForumUser / 15 / 0 / 0 ) »
Aber wenn ich select * from mache und nur eine Tabelle angebe, werden dann die Daten von bsad auch reingenommen?

Re: Newcomer mit Reportfragen

Beitrag von MisterB (ForumUser / 15 / 0 / 0 ) »
Und wie geht es nach dem weiter? Als Schlüssel habe ich ja den Kunnr welcher in beiden Tabellen vorhanden ist und die coca belegart, wie kann ich das jetzt einrichten, dass beide Tabellen miteinander verglichen werden und die Daten ausgegben werden?

Re: Newcomer mit Reportfragen

Beitrag von a-dead-trousers (Top Expert / 4286 / 214 / 1142 ) »
hi!

Kurzes Beispiel für INNER JOIN:

Code: Alles auswählen.

SELECT bsad~kunnr z185_ccm_prbu~betrg bsad~dmbtr bsad~MWSTS
FROM bsad INNER JOIN z185_ccm_prbu
  ON bsad~kunnr EQ z185_ccm_prbu~adm
INTO CORRESPONDING FIELDS OF TABLE ...
WHERE ...
Natürlich muss man evtl. noch zusätzliche Felder abfragen bzw. weitere Tabellen (Kundenstamm) zusätzlich joinen.
Wichtig bei CORRESPONDING FIELDS OF ist, dass die Felder in der Tabelle gleich heißen müssen wie in der Abfrage/Tabellen definiert. Möchte bzw. muss man andere Feldnamen verwenden, kann man mit dem Zusatz AS bei den Feldern des SELECT einen anderen Namen vergeben.
Verwendet man den Zusatz CORRESPONDING FIELDS OF nicht, muss die Position der Felder in der internen Tabelle jener entsprechen wie bei dem Select-Statement.

Ich würde CORRESPONDING FIELDS OF sehr empfehlen, weil dann kann man mehr Felder in der internen Tabelle haben, als man beim Statement angeben muss. In diesem Fall hier würde ich noch ein zusätzliches Feld für den Differenzbetrag hinzufügen. Nach der Abfrage muss man nur noch mit LOOP AT ... ASSIGNING alle Datensätze durchgehen und den Differenzbetrag aus BSAD und Z185_CCM_PRBU bestimmen und in das Zusatzfeld eintragen.

lg ADT
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: Newcomer mit Reportfragen

Beitrag von MisterB (ForumUser / 15 / 0 / 0 ) »
Komischerweise habe ich immer Syntaxfehler erhalten, dass i_bsad Tabelle nicht existiert, obwohl xxx_top aktiviert war, habe es nun so gelöst:

select a~kunnr a~blart a~zuonr a~bukrs a~xref2 a~dmbtr b~betrg a~dmbtr a~wmwst
into corresponding fields of table i_bsad
from bsad as a inner join z185_ccm_prbu as b
on a~kunnr eq b~adm
where a~kunnr in s_adm
and a~blart in s_fibla
and a~xref2 in s_ccbla.

Jemand eine Ahnung warum???

Re: Newcomer mit Reportfragen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Wo findet man denn Deine Dataanweisung fuer die I_BSAD?

Re: Newcomer mit Reportfragen

Beitrag von MisterB (ForumUser / 15 / 0 / 0 ) »
tables: z185_ccm_prbu,
bsad,
bsid,
vbak,
zvsd_admb,
kna1.

types: begin of t_bsad, "aus der BSAD Tabelle"
kunnr like bsad-kunnr, "ADM"
blart like bsad-blart, "FI Belegart"
zuonr like bsad-zuonr, "Provisionsperiode"
bukrs like bsad-bukrs, "Buchungskreis"
xref2 like bsad-xref2, "Coca Belegart"
bukrs1 like bsad-bukrs, "Verkaufsorganisation"
dmbtr like bsad-dmbtr, "Betrag"
vkorg like z185_ccm_prbu-adm,
perio like z185_ccm_prbu-perio,
ccbla like z185_ccm_prbu-blart,
betr like z185_ccm_prbu-betrg,
adm like z185_ccm_prbu-adm,
end of t_bsad.

data: i_bsad type table of t_bsad,
w_bsad type t_bsad.

und wie gesagt alle tops und forms waren aktiviert und trotzdem fand er den Weg irgendwie nicht zu i_bsad

select a~kunnr a~blart a~zuonr a~bukrs a~xref2 a~dmbtr b~betrg a~dmbtr a~wmwst
into corresponding fields of table i_bsad* HIER WAR DER FEHLER

Re: Newcomer mit Reportfragen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
MisterB hat geschrieben: data: i_bsad type table of t_bsad,
w_bsad type t_bsad.

und wie gesagt alle tops und forms waren aktiviert und trotzdem fand er den Weg irgendwie nicht zu i_bsad

select a~kunnr a~blart a~zuonr a~bukrs a~xref2 a~dmbtr b~betrg a~dmbtr a~wmwst
into corresponding fields of table i_bsad* HIER WAR DER FEHLER
Die DATA Anweisung fuer die I_ BSAD finde ich nicht im ersten Coding?!?!

Waren... fand?!?!?

Ist der Fehler denn jetzt behoben oder besteht er immer noch? Kommt nicht klar rueber.

Wenn es die I_BSAD nicht gaebe muesste der Fehler schon hier aufgetreten sein: clear: i_bsad, ODER I_BSAD wird nicht als TABELLE erkannt sondern nur als Feld oder Structure.

Tipp fuer dich als Anfaenger: Poste die original Fehlermeldungen mit Copy und Paste!
Bei kleineren Reports stopf nicht alles moegliche in Includes, nur bei Mehrfachverwendung.

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1782
Views
ABAP/SAP Newcomer/Fragen
von ABeginner » 11.04.2013 10:23 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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.