Interne Tabelle unvollständige Ausgabe

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

Interne Tabelle unvollständige Ausgabe

Beitrag von abap_frischling (ForumUser / 31 / 12 / 0 ) »
Hallo zusammen,

ich habe Probleme bei der Ausgabe meiner Internen Tabelle. Wenn ich in der Select-Option so_matnr zwei Nummern eintrage gibt mir meine Methode immer nur eine Zeile aus. Nach mehreren Versuchen finde ich trotzdem nicht den Fehler. Kann mir jemand weiterhelfen?

Liebe Grüße.

Code: Alles auswählen.

TYPES: BEGIN OF ty_outtab,
         matnr  TYPE v_mara_makt-matnr,   "Materialnummer
         matkl  TYPE v_mara_makt-matkl,   "Warengruppe
         mtart  TYPE v_mara_makt-mtart,   "Materialart
         maktx  TYPE v_mara_makt-maktx,   "Materialkurztext
         meins  TYPE v_mara_makt-meins,   "Mengeninhalt
         werks  TYPE marc-werks,          "Werk
         ekgrp  TYPE marc-ekgrp,          "Einkaufsgruppe
         lbkum  TYPE mbew-lbkum,          "Gesamter Bestand des Werkes
         berid  TYPE mdlg-berid,          "Dispobereich
         period TYPE sy-datum,            "Periode für die Bestandsentwicklung
         dtnum  TYPE mdkp-dtnum,          "Nummer Dispoliste
         requr  TYPE i,                   "Zugänge
         aquis  TYPE i,                   "Abgänge
         preis  TYPE mbew-verpr,          "Preis
         netpr  TYPE ekpo-netpr,          "Höchster Nettopreis (periodenbezogen)
         peinh  TYPE ekpo-peinh,          "Preiseinheit
         eomstk TYPE mbew-lbkum,          "Bestand Ende des Monats
         salk3  TYPE mbew-salk3,          "Bestandswert
       END OF ty_outtab.

DATA: ls_outtab TYPE ty_outtab,
      lt_outtab TYPE TABLE OF ty_outtab,
      ls_marc TYPE marc,
      lt_marc TYPE TABLE of marc.

*At Selection-screen
SELECTION-SCREEN BEGIN OF BLOCK start WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: so_matnr FOR ls_marc-matnr DEFAULT '30660'.
SELECT-OPTIONS: so_werks FOR ls_marc-werks DEFAULT '2200'.
SELECTION-SCREEN END OF BLOCK start.

*Start of Selection
SELECT matnr, werks, ekgrp FROM marc INTO @ls_outtab
  WHERE matnr IN @so_matnr
  AND werks IN @so_werks.
ENDSELECT.

SELECT lbkum FROM mbew INTO CORRESPONDING FIELDS OF @ls_outtab
  WHERE matnr IN @so_matnr
  AND bwkey IN @so_werks.
ENDSELECT.

APPEND ls_outtab TO lt_outtab.

cl_demo_output=>display( lt_outtab ).

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


Re: Interne Tabelle unvollständige Ausgabe

Beitrag von abap_frischling (ForumUser / 31 / 12 / 0 ) »
Ich habe mein Coding umgeändert. Jetzt bekomme ich meine Datensätze. Doch wenn ich in meiner SELECT OPTIONS zwei Werte eintrage, bekomme ich immer nur die Daten zum ersten Wert.

Code: Alles auswählen.

*Start of Selection
SELECT matnr werks ekgrp FROM marc INTO CORRESPONDING FIELDS OF ls_outtab
  WHERE matnr IN so_matnr
  AND werks IN so_werks.
ENDSELECT.

SELECT maktx FROM makt INTO CORRESPONDING FIELDS OF ls_outtab
  WHERE matnr IN so_matnr
  AND spras = sy-langu.
ENDSELECT.

SELECT lbkum FROM mbew INTO CORRESPONDING FIELDS OF ls_outtab
WHERE matnr IN so_matnr
  AND bwkey IN so_werks.
ENDSELECT.

APPEND ls_outtab TO lt_outtab.

Re: Interne Tabelle unvollständige Ausgabe

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Weil du ja auch die Ergebnisse in nur eine einzige Ergebniszeile (LS_OUTTAB) schreibst.
Du musst entweder mit INTO ... TABLE arbeiten oder zwischen SELECT und ENDSELECT das APPEND machen. Dann musst du aber auch die drei SELECTs in einen einzigen zusammenfügen. Am besten mit INNER JOIN.

Verwende für den Anfang nur mal den ersten SELECT ... ENDSELECT, füge den APPEND dort ein und lass die zwei anderen SELECTs weg. Dann wirst du im Debugger sehen worauf ich hinauswill.
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: Interne Tabelle unvollständige Ausgabe

Beitrag von abap_frischling (ForumUser / 31 / 12 / 0 ) »
Ist eine Ausgabe einer interner Tabelle mit den Werten aus SELECT OPTIONS immer nur mit JOIN möglich? Kannst du mir vllt ein Beispiel im Coding geben? Das wäre echt mega toll. :)

Re: Interne Tabelle unvollständige Ausgabe

Beitrag von PeterPaletti (Specialist / 350 / 32 / 97 ) »
Um deine Frage zu beantworten: nein, eine Ausgabe einer internen Tabelle mit den Werten aus SELECT-OPTIONS ist nicht immer nur mit Join möglich. Aber da du über 3 verschiedene Tabellen selektieren willst, ist ein Join eine gute Wahl.
Ein Beispiel-Coding, sogar mit den Tabellen MARC MAKT und MBEW findest du im Netz, frag einfach Herrn Google. :-)

Re: Interne Tabelle unvollständige Ausgabe

Beitrag von abap_frischling (ForumUser / 31 / 12 / 0 ) »
Danke für die Antwort. Mein Thema ist, dass ich irgendwann mehrere Tabellen für meinen Report abfragen werde und ich nicht weiß, ob es mit einem INNER JOIN so eine gute Idee ist, 6 Tabellen abfragen. Darf ich trotzdem fragen, welche Alternativen es gäbe?
Danke vielmals für eure Antworten. :-)

Re: Interne Tabelle unvollständige Ausgabe

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
In SQL gibt es noch die UNIONs, frag mich aber nicht wie die genau funktionieren. Hab ich noch nie verwendet.

In ABAP gibt es noch die Möglichkeit die Daten getrennt voneinander in unterschiedliche Tabellen einzulesen und dann mit LOOP AT, READ TABLE usw. vor der Weiterverarbeitung zusammenzufügen. Der Nachteil hierbei liegt in der "unnötigen" Übertragung von Daten von der Datenbank da ja die identifizierenden Schlüssel zwischen den Tabellen mehrfach übertragen werden müssen um die Daten im Programm zusammenzufügen zu können. Bei einem JOIN (oder auch UNION) muss man die Informationen wie die Tabellen zusammenhängen nicht selektieren wenn man sie nicht unbedingt benötigt.

Auf der anderen Seite war es in ABAP/SAP lange Zeit so, dass man möglichst wenig auf der Datenbank machen sollte. Da die Datenbank im Grunde das Bottleneck im SAP-Gesamtsystem ist, sollte man sie nicht zu sehr belasten. Das hat sich aber inzwischen dank der diversen Inmemory Datenbanken (z.B: SAP HANA) geändert und man soll möglichst viel auf der Datenbank erledigen um deren Handhabe der Daten möglichst auszunutzen.

Generell sollte man wirklich nur die Daten selektieren die man wirklich braucht. Ein '*'-Select sollte nach Möglichkeit vermieden werden, wenn man nicht wirklich alle Daten benötigt. Das trifft besonders auf in Column-Store organisierte Datenbanken zu, weil dort vorallem die Datenmenge das entscheidende Performancemerkmal darstellt. Bei klassischen Row-Store Datenbanken ist wiederum die Komplexität der Einschränkung (Where) das entscheidende Performancemerkmal.
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.
637
Views
Interne Tabelle keine Ausgabe
von abap_frischling » 04.02.2022 08:57 • Verfasst in ABAP® für Anfänger
1
Antw.
4834
Views
Ausgabe interne Tabelle mit Header
von IMBIT » 21.03.2014 11:01 • Verfasst in ABAP® für Anfänger
2
Antw.
2053
Views
FuBa dezentrale Ausgabe interne Tabelle
von emi452 » 18.02.2010 17:11 • Verfasst in ABAP® für Anfänger
4
Antw.
1365
Views
5
Antw.
2393
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger

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.

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor einer Woche von Manfred K. 1 / 2725
BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Wochen von snooga87 1 / 4532