Ausgabe falsch

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

Ausgabe falsch

Beitrag von PseudoReal (ForumUser / 15 / 0 / 0 ) »
Hi leutz,

kann mir jmd sagen, warum dieser code nur 0000 auswirft.

Code: Alles auswählen.

REPORT  z_sb_write_stats9024                                        .


PARAMETERS: stat LIKE pa9024-stats. "Selektion
DATA:  BEGIN OF ausgabe OCCURS 0,

          oppstat LIKE   pa9024-stats,
          fname   LIKE   pa0002-vorna,
          lname   LIKE   pa0002-nachn,
          id      LIKE   pa0002-pernr,

         END OF ausgabe.

DATA: wa_ausgabe like line of ausgabe.


START-OF-SELECTION.

  SELECT *
    FROM pa9024
      INNER JOIN pa0002 on pa9024~pernr = pa0002~pernr
    INTO CORRESPONDING FIELDS OF TABLE ausgabe
    WHERE pa9024-stats = stat.

  LOOP AT ausgabe INTO wa_ausgabe.
    WRITE: /
             wa_ausgabe-id,
             wa_ausgabe-fname,
             wa_ausgabe-lname,
             wa_ausgabe-oppstat.
  ENDLOOP.
[/code]


Beitrag von Gast ( / / 0 / 3 ) »
Ja. Du willst in der F1-Hilfe zu SELECT (INTO-Klausel) die Bedeutung von INTO CORRESPONDING FIELDS OF nachlesen.

Beitrag von PseudoReal (ForumUser / 15 / 0 / 0 ) »
irgendwie komme ich damit nicht klar,

ich hab es auch versucht, die Felder manuell anzugeben und das CORRESPONDING... wegzulassen -> Ohne Erfolg.

Was muss ich denn da machen?

Beitrag von zzcpak (Expert / 673 / 5 / 66 ) »
CORRESPONDING FIELDS kann eigentlich nur bei Namensgleichheit der Felder funktionieren.

Also beim SELECT am besten keine *-Selektion, sondern die Felder, die du brauchst und diese dann in die entsprechenden Zielfelder mit INTO(f1, f2 ...)

Beitrag von Haubi (Expert / 609 / 14 / 27 ) »
Moinsen.

Bei INTO CORRESPONDING FIELDS müssen die Felder exakt den gleichen Namen haben. Bei Dir sind die Namen unterschiedlich.

@Gast: zwar richtig aber wenig hilfreich...

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von PseudoReal (ForumUser / 15 / 0 / 0 ) »
also ich habs jetzt so

Code: Alles auswählen.

SELECT pa9024~stats pa0002~vorna "pa0002~nachn pa0002~pernr
    FROM pa9024
      LEFT OUTER JOIN pa0002 ON pa9024~pernr = pa0002~pernr
    INTO ()
    WHERE pa9024~stats = stat.

   ENDSELECT.
 LOOP AT ausgabe INTO wa_ausgabe.
      WRITE: /
               wa_ausgabe-oppstat,
               wa_ausgabe-fname,
               wa_ausgabe-lname,
               wa_ausgabe-id.
    ENDLOOP.
was muss ins into rein?
ausgabe-oppstat macht er nichts
oppstat akzeptiert er nicht
wa_ausgabe macht er nichts
Zuletzt geändert von PseudoReal am 10.06.2005 17:38, insgesamt 1-mal geändert.

Beitrag von Gast ( / / 0 / 3 ) »
Haubi hat geschrieben:@Gast: zwar richtig aber wenig hilfreich...
Wenig hilfreich ist der Hinweis auf den relevanten Ausschnitt der Doku eigentlich nur für Leute, die nicht lesen wollen bzw. können.

Beitrag von PseudoReal (ForumUser / 15 / 0 / 0 ) »
ich habs gelesen bin daraus aber nicht merklich schlauer geworden :)

Beitrag von ereglam (Top Expert / 1826 / 0 / 6 ) »
Namensgleichheit in der Datentabelle

Code: Alles auswählen.

REPORT  z_sb_write_stats9024                                        . 


PARAMETERS: stat LIKE pa9024-stats. "Selektion 
DATA:  BEGIN OF ausgabe OCCURS 0, 

          stats LIKE   pa9024-stats, 
          vorna LIKE   pa0002-vorna, 
          nachn LIKE   pa0002-nachn, 
          pernr LIKE   pa0002-pernr, 

         END OF ausgabe. 

DATA: wa_ausgabe like line of ausgabe. 


START-OF-SELECTION. 

  SELECT * 
    FROM pa9024 
      INNER JOIN pa0002 on pa9024~pernr = pa0002~pernr 
    INTO CORRESPONDING FIELDS OF TABLE ausgabe 
    WHERE pa9024-stats = stat. 

  LOOP AT ausgabe INTO wa_ausgabe. 
    WRITE: / 
             wa_ausgabe-pernr, 
             wa_ausgabe-vorna, 
             wa_ausgabe-nachn, 
             wa_ausgabe-stats. 
  ENDLOOP.
oder
Namensgleichheit beim Feldtransport

Code: Alles auswählen.

REPORT  z_sb_write_stats9024                                        . 


PARAMETERS: stat LIKE pa9024-stats. "Selektion 
DATA:  BEGIN OF ausgabe OCCURS 0, 

          oppstat LIKE   pa9024-stats, 
          fname   LIKE   pa0002-vorna, 
          lname   LIKE   pa0002-nachn, 
          id      LIKE   pa0002-pernr, 

         END OF ausgabe. 

DATA: wa_ausgabe like line of ausgabe. 


START-OF-SELECTION. 

  SELECT pa9024~stats AS oppstat
         pa0002~vorna AS fname
         pa0002~nachn AS lname
         pa0002~pernr AS id 
    FROM pa9024 
      INNER JOIN pa0002 on pa9024~pernr = pa0002~pernr 
    INTO CORRESPONDING FIELDS OF TABLE ausgabe 
    WHERE pa9024-stats = stat. 

  LOOP AT ausgabe INTO wa_ausgabe. 
    WRITE: / 
             wa_ausgabe-id, 
             wa_ausgabe-fname, 
             wa_ausgabe-lname, 
             wa_ausgabe-oppstat. 
  ENDLOOP.
bzgl. Lesbarkeit:
Bei der Datenfülle, die SAP zur Verfügung stellt, ist es nicht verwunderlich, wenn ein Anfänger Verständnisprobleme haben kann.
Deshalb steht ja der Thread auch im 'Getting started'.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Mitglied im XING

Beitrag von PseudoReal (ForumUser / 15 / 0 / 0 ) »
ich danke vielmals.

auch wenn ich jetzt nicht klugscheissern möchte aber in der where klausel muss es pa9024~stats = stat (also die tilde)

nur für den fall, dass ein anfänger eine ähnliches problem haben sollte.

aber trotzdem nochmal vielen vielen dank :)

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
ereglam hat geschrieben:Namensgleichheit in der Datentabelle
oder
Namensgleichheit beim Feldtransport
Ein "oder" hast Du vergessen:

Code: Alles auswählen.

REPORT  z_sb_write_stats9024                                        . 


PARAMETERS: stat LIKE pa9024-stats. "Selektion 
DATA:  BEGIN OF ausgabe OCCURS 0, 

          oppstat LIKE   pa9024-stats, 
          fname   LIKE   pa0002-vorna, 
          lname   LIKE   pa0002-nachn, 
          id      LIKE   pa0002-pernr, 

         END OF ausgabe. 

DATA: wa_ausgabe like line of ausgabe. 


START-OF-SELECTION. 

  SELECT pa9024~stats
         pa0002~vorna
         pa0002~nachn
         pa0002~pernr
    FROM pa9024 
      INNER JOIN pa0002 on pa9024~pernr = pa0002~pernr 
    INTO TABLE ausgabe 
    WHERE pa9024-stats = stat. 
...
Denn wenn die Komponenten in der Zielstruktur bzw. -Tabelle in der korrekten Reihenfolge (so wie im SELECT angegeben) und richtigen Typisierung vorkommen und man CORRESPONDING FIELDS OF weglässt, klappt es auch. (Und ein wenig schneller dürfte es auch sein.)
Die Namen der Komponenten sind in dem Fall irrelevant

Beitrag von ereglam (Top Expert / 1826 / 0 / 6 ) »
ich vergrab mich auch gleich für eine Woche in die Ecke und schäme mich, oder reicht es wenn ich Asche auf mein Haupt streue? :roll:
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Mitglied im XING

Seite 1 von 1

Über diesen Beitrag


ABAP & SAP eBook Flatrate von Espresso Tutorials Sponsorlink
Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Vergleichbare Themen

Write-Ausgabe vor Alv-Grid Ausgabe
von L0w-RiDer » 14.08.2019 14:09
RCPDIRO1 falsch, was tun ?
von sapler » 12.10.2005 15:36
select falsch?
von barbara » 07.07.2006 10:38
RowID im ALV-Grid ist falsch
von smidi » 09.05.2006 10:56
Falsch erzeugter Änderungsbeleg
von herr mb » 22.04.2013 08:38