Bitte Coding ansehen ....

Getting started ... Alles für einen gelungenen Start.
20 Beiträge • Vorherige Seite 2 von 2 (current)
20 Beiträge Vorherige Seite 2 von 2 (current)

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Olli!

Nochmals Danke! Aber wenn ich es so mache ist meine ALV Ausgabe dann leer. :cry:

Und noch eine Frage zu der If Anwendung. Braucht die dann gar kein ELSE, damit sie weis, daß sie etwas befüllen soll?

Robin

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


Beitrag von Gast ( / / 0 / 3 ) »
robin1at hat geschrieben: "SELECT APPENDING TABLE ITAB"
Ist das etwas anderes als mein "Append itab_sumla"?
Ja, ist es.

Mal die Unterschiede erklären:
SELECT *
FROM bsak
INTO TABLE itab.

Zuerst wird die Tabelle itab initialisiert (alle Daten gehen verloren), dann werden alle Zeilen der DB-Tabelle bsak in die interne Tabelle itab geschrieben.

SELECT *
FROM bsik
APPENDING TABLE itab.

Jetzt werden alle Zeilen der DB-Tabelle bsik an die interne Tabelle itab_bask angehangen.

itab enthält jetzt alle Daten von bsik und bsak.
Würde der zweite Select auch mit INTO TABLE itab ausgeführt, währen nur die Daten aus der bsik in der internen Tabelle.

APPEND itab.
Hier wird die Kopfzeile an die internen Tabelle angehangen. Kann man bei Select-Schleifen verwenden:

SELECT *
FROM bsik
into itab
append itap.
endselect.

Es wird jede Datenbankzeile einzeln in die Kopfzeile gestellt und dann an die interne Tabelle gehängt.

Und dann schau die mal bitte deine Where-Bedingung im Select an. Ich habe mal die aktuelle Bedingung ein wenig formatiert. Vielleicht wird jetzte deutlicher was wie geprüft wird.

Gruß Hendrik

Code: Alles auswählen.

SELECT a~lifnr a~land1 
             b~diekz b~belnr b~zuonr b~blart b~bukrs b~monat 
            b~gjahr b~shkzg b~bschl b~dmbtr b~wrbtr 
*** Hier kommt das APPENDING hin
                 APPENDING CORRESPONDING FIELDS OF TABLE itab_sumla 
                 FROM ( lfa1 AS a 
                             INNER JOIN bsak AS b 
                             ON a~lifnr = b~lifnr ) 
                 WHERE ( bukrs IN ('1001') 
                       AND blart IN ('A1', 'A2', 'A3') 
                       AND land1 IN so_land )

                 OR ( land1 = space 
                 AND gjahr = pa_gj )

                 OR ( gjahr = space 
                 AND monat IN so_perio )

                 OR monat = space. 

* Brauchst du nicht
*  APPEND itab_sumla. 

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Hendrik!

Habe jetzt den Select so umgebaut. (So war es doch gemaint denke ich mal) Da kommen aber keine richtigen Daten mehr raus. Es sind verschiedene Daten vermischt ....

Schöne Grüße

Robin


Code: Alles auswählen.

START-OF-SELECTION.
*##################

  SELECT zdlkz bezeichnung
  FROM zdlkz_t INTO CORRESPONDING FIELDS OF TABLE itab_sumla
  WHERE zdlkz IN so_dlkz
  OR zdlkz = space.
  APPEND itab_sumla.

 SELECT a~lifnr a~land1 b~diekz b~belnr b~zuonr b~blart b~bukrs b~monat
                 b~gjahr b~shkzg b~bschl b~dmbtr b~wrbtr
*                      INTO CORRESPONDING FIELDS OF TABLE itab_sumla
                    appending corresponding fields of table itab_sumla
                      FROM ( lfa1 AS a
                                  INNER JOIN bsak AS b
                                  ON a~lifnr = b~lifnr )
                      WHERE ( bukrs IN ('1001')
                      AND blart IN ('A1', 'A2', 'A3')
                      AND land1 IN so_land )
                      OR ( land1 = space
                      AND gjahr = pa_gj )
                      OR ( gjahr = space
                      AND monat IN so_perio )
                      OR monat = space.
*  APPEND itab_sumla.

 SELECT a~lifnr a~land1 b~diekz b~belnr b~zuonr b~blart b~bukrs b~monat
                 b~gjahr b~shkzg b~bschl b~dmbtr b~wrbtr
*                      INTO CORRESPONDING FIELDS OF TABLE itab_sumla
                    appending corresponding fields of table itab_sumla
                      FROM ( lfa1 AS a
                                  INNER JOIN bsik AS b
                                  ON a~lifnr = b~lifnr )
                      WHERE ( bukrs IN ('1001')
                      AND blart IN ('A1', 'A2', 'A3')
                      AND land1 IN so_land )
                      OR ( land1 = space
                      AND gjahr = pa_gj )
                      OR ( gjahr = space
                      AND monat IN so_perio )
                      OR monat = space.

  IF sy-subrc <> 0.
    MESSAGE i819(3f).
*   Keine Daten im gewählten Zeitraum vorhanden
  ENDIF.

Beitrag von Gast ( / / 0 / 3 ) »
robin1at hat geschrieben:So war es doch gemaint denke ich mal.
Bezieht sich die Bemerkung auf die Where-Bedingung im Select? Ich hatte die Where-Bedingung so formatiert wie SAP sie auswertet.

lese alles was dieser Bedingung
WHERE ( bukrs IN ('1001') AND blart IN ('A1', 'A2', 'A3') AND land1 IN so_land )

oder dieser
OR ( land1 = space AND gjahr = pa_gj )

oder dieser
OR ( gjahr = space AND monat IN so_perio )

oder dieser
OR monat = space.
entspricht.

Du willst aber etwas ganz anderes:

WHERE bukrs IN ('1001')
AND blart IN ('A1', 'A2', 'A3')
AND ( land1 IN so_land OR land1 = space )
AND ( gjahr = pa_gj OR gjahr = space )
AND ( monat IN so_perio OR monat = space ).

Wobei ich mir die Frage stelle warum du expliziet auf space abfragst?
Ich kann diese Abfrage auch in die Select-Option bringen, in dem ich sie leer lasse (dann kriege ich alle) oder expliziet auf space eingrenze (F2 auf die Select-Option und dann gleich auswählen).
Zudem sollten die Felder GJHAR und MONAT in der Datenbank immer gefüllt sein.

Gruß Hendrik

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Hendrik!

Nein, die Where Bedingung paßt schon so wie ich sie habe. Ich habe das space nur drinnen, wenn nichts ausgewählt ist, daß alles angezeigt wird.

Nein, mit der Where Bedingung hat es nichts zu tun. Es ist der select mit appending corresponding ....

Wenn ich das mache kommen falsche Daten heraus. Hingegen wenn ich meinen alten Select lasse, stimmt es anscheinend. Habe einige Datan auf Plausibel getestet.

Danke

Robin

Vergleichbare Themen

1
Antw.
1444
Views
Spoolauftrag erzeugen, ansehen (Einstellungen)
von yorck » 04.01.2007 10:12 • Verfasst in ABAP® für Anfänger
2
Antw.
6236
Views
Spoolauftrag erzeugen, ansehen (Einstellungen)
von yorck » 04.01.2007 10:26 • Verfasst in SAP - Allgemeines
8
Antw.
2612
Views
BSP ansehen - Username / Kennwort eingeben?
von Nourie » 15.08.2005 21:06 • Verfasst in Web-Dynpro, BSP + BHTML
4
Antw.
2394
Views
Coding umbauen
von Gast » 02.02.2006 13:44 • Verfasst in ABAP® für Anfänger
2
Antw.
1190
Views
Coding im Query
von chris61 » 12.09.2017 13:35 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Regex in where
vor 12 Stunden von tar 8 / 298
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1588
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 237
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 474

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

Regex in where
vor 12 Stunden von tar 8 / 298
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1588
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 237
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 474

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 2 Tagen von snooga87 1 / 175
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3352
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9905