Daten einer Tabelle über Daten aus einer internen Tabelle selektieren Thema ist als GELÖST markiert

Getting started ... Alles für einen gelungenen Start.
17 Beiträge • Seite 1 von 2 (current) Nächste
17 Beiträge Seite 1 von 2 (current) Nächste

Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von Sonne1234 (ForumUser / 30 / 16 / 1 ) » 09.12.2019 08:54

Hallo zusammen,

ich habe Daten aus einer Tabelle in eine interne Tabelle selektiert. Dies hat auch soweit funktioniert.

Code: Alles auswählen.

SELECT bukrs blart bldat budat xblnr awkey awtyp cpudt
         FROM bkpf
         INTO CORRESPONDING FIELDS OF gs_bkpf
         WHERE bukrs IN so_bukrs AND
               blart IN so_blart AND
               cpudt IN so_cpudt.
  ENDSELECT.

  APPEND gs_bkpf TO gt_bkpf.
Nun habe ich aber eine weitere Tabelle aus der ich aber nur Daten mit dem Feld XBLNR aus der zuvor gebildeten Tabelle filtern möchte. Denn nur für diese Referenznummern benötige ich die Informationen aus der weiteren Tabelle. Ich habe gedacht, dass ich dies auch über ein Select machen kann:

Code: Alles auswählen.

SELECT objky kschl erdat vstat
         FROM nast
         INTO CORRESPONDING FIELDS OF table gs_nast
         where objky in gt_bkpf-xblnr.
Leider bekomme ich hier nun immer die Meldung "GT_BKPF ist eine Tabelle ohne Kopfzeile und besitzt daher keine Komponente mit Namen XBLNR.

Mein Versuch das Problem über einen LOOP zu lösen ist leider auch gescheitert. Denn dort bekomme ich die Meldung, dass XBLNR keine interne Tabelle ist.

Ich wäre euch wirklich sehr dankbar, wenn ihr einem totalen ABAP-Anfänger hier weiterhelfen könntet.
Es war etwas schwierig für mich, das Problem zu erläutern. Wenn ich irgendwas genauer erklären soll, sagt Bescheid.

Vielen Dank für eure Hilfe.
Liebe Grüße.



Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von Sonne1234 (ForumUser / 30 / 16 / 1 ) » 09.12.2019 10:18

Hallo tm,

leider kommt hier weiterhin die Meldung "GT-BKPF ist eine Tabelle ohne Kopfzeile...."

Meine Änderung sieht nun wie folgt aus:

Code: Alles auswählen.

  SELECT objky kschl erdat vstat
          INTO CORRESPONDING FIELDS OF TABLE gs_nast
          FROM nast FOR ALL ENTRIES IN gt_bkpf
          WHERE objky IN gt_bkpf-xblnr.

Vielleicht sind auch meine Deklarationen am Anfang bereits falsch:

Code: Alles auswählen.

TYPES: BEGIN OF ty_bkpf,
         bukrs TYPE bkpf-bukrs,
         blart TYPE bkpf-blart,
         bldat TYPE bkpf-bldat,
         budat TYPE bkpf-budat,
         xblnr TYPE bkpf-xblnr,
         awkey TYPE bkpf-awkey,
         awtyp TYPE bkpf-awtyp,
         cpudt TYPE bkpf-cpudt,
       END OF ty_bkpf,

       BEGIN OF ty_nast,
         objky TYPE nast-objky,
         kschl TYPE nast-kschl,
         erdat TYPE nast-erdat,
         vstat TYPE nast-vstat,
       END OF ty_nast.

Code: Alles auswählen.

DATA: gs_bkpf TYPE ty_bkpf,
      gs_nast TYPE ty_nast.

DATA: gt_bkpf TYPE STANDARD TABLE OF bkpf.
Hast du evtl. noch eine andere Idee?

Vielen Dank & viele Grüße.

Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von M@atze! (ForumUser / 90 / 6 / 20 ) » 09.12.2019 11:49

Sonne1234 hat geschrieben:
09.12.2019 10:18
Hallo tm,

Meine Änderung sieht nun wie folgt aus:

Code: Alles auswählen.

  SELECT objky kschl erdat vstat
          INTO CORRESPONDING FIELDS OF TABLE gs_nast
          FROM nast FOR ALL ENTRIES IN gt_bkpf
          WHERE objky IN gt_bkpf-xblnr.
Ersetze das "IN gt_bkpf-xblnr" durch "EQ gt_bkpf-xblnr".

Außerdem solltest du dir deinen ersten Select nochmals ansehen.
Das APPEND steht außerhalb der Select-Schleife.
Ich würde aber lieber mit INTO TABLE arbeiten.
Dann benötigst du keinen ENDSELECT und auch kein APPEND.

Grüße

Matze

Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von Sonne1234 (ForumUser / 30 / 16 / 1 ) » 09.12.2019 15:33

Hallo Matze,

vielen Dank noch für deinen Tipp. Es scheint jetzt zu funktionieren. :)

Viele Grüße
Lisa

Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von deejey (Specialist / 276 / 76 / 22 ) » 09.12.2019 17:12

Es ist sehr wichtig zu verstehen warum das jetzt geht und vorher nicht

Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von DeathAndPain (Top Expert / 1261 / 138 / 290 ) » 09.12.2019 19:22

Weil er das gemacht hat, was Matze gesagt hat? 🙂

Waren doch genau die richtigen Tipps.

Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von deejey (Specialist / 276 / 76 / 22 ) » 10.12.2019 15:50

ja klar, sie schrieb "es scheint zu funktionieren", daraus schloss ich, dass sie nicht sicher ist was da wie genau funktioniert

Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von Sonne1234 (ForumUser / 30 / 16 / 1 ) » 12.12.2019 13:24

An dem warum und wieso arbeite ich noch. Das kommt dann mit der Zeit. Im Moment bin ich erstmal froh, wenn ich hier überhaupt irgendwas ans laufen kriege :D

Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von Sonne1234 (ForumUser / 30 / 16 / 1 ) » 12.12.2019 13:51

Ich habe noch einen ähnlichen Fall, bei dem ich ebenfalls über Daten aus einer internen Tabelle selektieren möchte.

Folgendes Beispiel-Coding:

Code: Alles auswählen.

SELECT sap_object object_id archiv_id arc_doc_id ar_object ar_date
          INTO CORRESPONDING FIELDS OF TABLE gt_toa02
          FROM toa02 FOR ALL ENTRIES IN gt_nast
          WHERE sap_object EQ XXXX' AND
                      object_id  EQ gt_nast-objky.
Hierbei ist es jedoch so, dass die Daten in dem Feld object_id z. B. wie folgt aussehen:
954362513 00004564874
954165713 00005646756

In dem Feld objky sind jedoch nur die eigentlich Referenznummern enthalten:
954362513
954165713

Das heißt eigentlich müsste ich irgendwie mit Sternchen * die Daten auswählen.
Es wäre super, wenn ihr mir hierbei nochmal helfen könntet.

Vielen Dank :)

Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von A6272 (Specialist / 136 / 1 / 14 ) » 13.12.2019 10:04

Hallo,

Parallel zur Tabelle gt_toa02 und eine Tabelle aufbauen, in der anstelle von

954362513
954165713
ein
954362513%
954165713%
drinsteht.

% ist das * auf DB-Selekt Ebene

Im Selekt dann
object_id LIKE ...

ob Like & FOR ALL ENTRIES IN zusammenarbeiten weis ich aber nicht.

Folgende Benutzer bedankten sich beim Autor A6272 für den Beitrag:
Sonne1234 (09.01.2020 11:54)


Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von Sonne1234 (ForumUser / 30 / 16 / 1 ) » 18.12.2019 10:10

Hallo,

du solltest wissen, dass ich totaler Anfänger bin.

Es scheitert quasi schon daran, wie ich überhaupt die Feldwerte um das Sternchen bzw. %-Zeichen ergänzt kriege.

Kannst du mir das bitte noch einen Tipp zu geben?

Vielen Dank und viele Grüße.

Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von Tron (Top Expert / 1129 / 18 / 249 ) » 18.12.2019 12:20

Mach doch ein paar tutorials:

http://www.saptechnical.com/Tutorials/A ... inPage.htm

gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von DeathAndPain (Top Expert / 1261 / 138 / 290 ) » 19.12.2019 08:57

Sonne1234 hat geschrieben:Es scheitert quasi schon daran, wie ich überhaupt die Feldwerte um das Sternchen bzw. %-Zeichen ergänzt kriege.
Das ist einfach:

Code: Alles auswählen.

DATA:
  A TYPE STRING,
  B TYPE STRING,
  C TYPE STRING.

A = `ABC`.
B = `%`.
C = A && B.
Dann haste in C 'ABC%' drin.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Sonne1234 (09.01.2020 11:54)


Re: Daten einer Tabelle über Daten aus einer internen Tabelle selektieren

Beitrag von Sonne1234 (ForumUser / 30 / 16 / 1 ) » 09.01.2020 13:06

Hallo zusammen,

das Hinzufügen einer Spalte, in der nun an jeder Nummer ein Stern hinzugefügt wurde, hat nun funktioniert.

Leider bekomme ich nun Probleme bei der LIKE-Bedingung:

"Das zu einer LIKE-Bedingung gehörende Muster darf nur in einem ABAP-Feld vom Typ C angegeben werden."

Mir erschließt sich die Meldung nicht so ganz. Denn eigentlich sind beide Felder vom Typ c.

Code: Alles auswählen.

types: BEGIN OF ty_nast,
         objky TYPE c LENGTH 50,
         buk   TYPE c LENGTH 4,
         objkystern type c length 50,
       END OF ty_nast,
       BEGIN OF ty_toa02,
         sap_object TYPE toa02-sap_object,
         object_id  TYPE toa02-object_id,
         archiv_id  TYPE toa02-archiv_id,
         arc_doc_id TYPE toa02-arc_doc_id,
         ar_object  TYPE toa02-ar_object,
         ar_date    TYPE toa02-ar_date,
       END OF ty_toa02.

data: gt_nast  TYPE STANDARD TABLE OF ty_nast,
        gt_toa02 TYPE STANDARD TABLE OF ty_toa02. 

SELECT sap_object object_id archiv_id arc_doc_id ar_object ar_date
       INTO CORRESPONDING FIELDS OF TABLE gt_toa02
       FROM toa02 for all entries in gt_nast
       WHERE sap_object EQ 'X' AND
                   object_id like gt_nast-objkystern.
Vielen Dank für eure Unterstützung :)

Gruß Julia

Seite 1 von 2 (current) Nächste