2016-07-22 6 views
0

Ich versuche, eine SQL-Anweisung in ABAP zu erstellen, die mehrere Felder auswählt, aber die richtige Syntax dafür nicht herausfinden kann.Wie lautet die korrekte Syntax für SQL in der ABAP Workbench?

Das war, was ich tat, dass ein Fehler generiert:

SELECT field1, field2 
    FROM table INTO txtbox 
    WHERE field3 = txtInput. 
ENDSELECT. 

Alle Felder in der gleichen Tabelle sind.

+2

Bitte geben Sie die Fehlermeldung und den vollständigen Code (i e Variablendeklarationen, Tabellenstrukturdefinition..) – vwegert

+0

Es ist auf der ABAP-Version als auch dependes. Welche ABAP-Version haben Sie? – Christian

+0

Drücken Sie f1 auf die "Select" im Editor –

Antwort

0

Syntax auf der Version des ABAP abhängen.

Ihr Problem wahrscheinlich aufgrund der fehlerhaften Deklaration/Auswahl von Variablen abzufragen.

Einige Beispiele:

*Select all fields of a SAP database table into in internal table 
SELECT * 
    FROM ekko 
    INTO TABLE it_ekko. 


*Select directly into an internal table 
SELECT bukrs belnr gjahr buzei mwskz umsks prctr hkont xauto koart 
     dmbtr mwart hwbas aufnr projk shkzg kokrs 
    FROM bseg 
    INTO TABLE it_bseg. 


* Select directly into an internal table where fields are in a 
* different order or not all fields are specified 
SELECT bukrs belnr gjahr buzei mwskz umsks prctr hkont xauto koart 
     dmbtr mwart hwbas aufnr projk shkzg kokrs 
    FROM bseg 
    INTO CORRESPONDING FIELDS OF TABLE it_bseg. 


*Select... endselect command (to structure) 
SELECT bukrs belnr gjahr buzei mwskz umsks prctr hkont xauto koart 
     dmbtr mwart hwbas aufnr projk shkzg kokrs 
    FROM bseg 
    INTO wa_bseg. 

    APPEND wa_bseg TO it_bseg. 
ENDSELECT. 


*Select FOR ALL ENTRIES command 
SELECT bukrs belnr gjahr bldat monat budat xblnr awtyp awkey 
    UP TO 100 ROWS 
    FROM bkpf 
    INTO TABLE it_bkpf. 

IF sy-subrc EQ 0. 
* The FOR ALL ENTRIES comand only retrieves data which matches 
* entries within a particular internal table. 
    SELECT bukrs belnr gjahr buzei mwskz umsks prctr hkont xauto koart 
     dmbtr mwart hwbas aufnr projk shkzg kokrs 
    FROM bseg 
    INTO TABLE it_bseg 
    FOR ALL ENTRIES IN it_bkpf 
    WHERE bukrs EQ it_bkpf-bukrs AND 
      belnr EQ it_bkpf-belnr AND 
      gjahr EQ it_bkpf-gjahr. 
ENDIF. 
+1

Leider nicht ganz richtig. Im neuen OpenSQL können (und sollten) die Felder durch Kommas getrennt sein. Weitere Informationen [hier] (http://help.sap.com/abapdocu_740/en/index.htm?file=abenopensql_strict_modes.htm). – Jagger

+1

@Jagger: Danke für Informationen, ich habe meine Antwort bearbeitet. Mir waren die Änderungen in der neuen Version abap nicht bekannt. –

2

Zuerst versuchen Sie, 2 Felder in 1 Variable zu wählen. Ist es das, was Sie erreichen wollen? Ist txtbox eine Struktur?

Auf dem zweiten, Syntax in Verbindung stehend - je nach ABAP-Version youshould schreibt entweder

SELECT field1, field2 
    FROM table INTO @txtbox 
    WHERE field3 = @txtInput. 
ENDSELECT. 

Oder

SELECT field1 field2 
    FROM table INTO txtbox 
    WHERE field3 = txtInput. 
ENDSELECT. 
Verwandte Themen