Reputation: 37
I'm trying to create a SQL statement in ABAP that selects multiple fields but can't figure out the proper syntax for it.
This was what I was doing that generated an error:
SELECT field1, field2
FROM table INTO txtbox
WHERE field3 = txtInput.
ENDSELECT.
All fields are in the same table.
Upvotes: 0
Views: 225
Reputation: 263
Syntax may depend on the version of the ABAP.
Your problem probably due to the erroneous declaration / selection of variables to query.
Some examples:
*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.
Upvotes: 0
Reputation: 174
At first, you are trying to select 2 fields into 1 variable. Is it what you are trying to achieve? Is txtbox a structure?
At second, syntax related - depending on ABAP version youshould write either
SELECT field1, field2
FROM table INTO @txtbox
WHERE field3 = @txtInput.
ENDSELECT.
Or
SELECT field1 field2
FROM table INTO txtbox
WHERE field3 = txtInput.
ENDSELECT.
Upvotes: 2