Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

SELECT multiple fields INTO local varibles

Former Member

Hi all,

I'm currently writing an ABAP routine within an BW7 update rule and need a little bit of help. My current code accomplishes a lookup of 2 fields from 1 DSP in 2 different Select Single statements. I would like to be able to accomplish this lookup in one select statement.


CLASS lcl_transform IMPLEMENTATION.

  METHOD compute_ZPTVAL.

*   IMPORTING
*     request     type rsrequest
*     datapackid  type rsdatapid
*     SOURCE_FIELDS-/BIC/ZPTSO TYPE /BIC/OIZPTSO
*     SOURCE_FIELDS-/BIC/ZPTQTY TYPE /BIC/OIZPTQTY
*    EXPORTING
*      RESULT type _ty_s_TG_1-/BIC/ZPTVAL

    DATA:
      MONITOR_REC    TYPE rsmonitor.

*$*$ begin of routine - insert your code only below this line        *-*

DATA: so_val TYPE /BIC/OIZPTVAL.
DATA: so_qty TYPE /BIC/OIZPTQTY.

SELECT SINGLE /BIC/ZPTVAL FROM /BIC/AZPTDSSO00
INTO so_val
WHERE /BIC/ZPTSO = SOURCE_FIELDS-/BIC/ZPTSO.

SELECT SINGLE /BIC/ZPTQTY FROM /BIC/AZPTDSSO00
INTO so_qty
WHERE /BIC/ZPTSO = SOURCE_FIELDS-/BIC/ZPTSO.

RESULT = ( so_val / so_qty ) * SOURCE_FIELDS-/BIC/ZPTQTY.

I know it is possible to select into a corresponding structure like:


SELECT SINGLE
CITYFROM AIRPFROM CITYTO AIRPTO FLTIME DEPTIME ARRTIME
INTO CORRESPONDING FIELDS OF WA_SPFLI
FROM SPFLI
WHERE CARRID = WA_SPFLI-CARRID AND CONNID = WA_SPFLI-CONNID.

But what i want to do is something like:


SELECT SINGLE /BIC/ZPTVAL, /BIC/ZPTQTY
FROM /BIC/AZPTDSSO00
INTO so_val, so_qty
WHERE /BIC/ZPTSO = SOURCE_FIELDS-/BIC/ZPTSO.

MTIA

1 ACCEPTED SOLUTION

Former Member

in the into clause youcan put multiple field... inside brackets..

example from help doc:

DATA wa TYPE spfli.

SELECT carrid connid cityfrom cityto
       FROM spfli
       INTO (wa-carrid, wa-connid, wa-cityfrom, wa-cityto).
  WRITE: / wa-carrid, wa-connid, wa-cityfrom, wa-cityto.
ENDSELECT.

4 REPLIES 4

Former Member

in the into clause youcan put multiple field... inside brackets..

example from help doc:

DATA wa TYPE spfli.

SELECT carrid connid cityfrom cityto
       FROM spfli
       INTO (wa-carrid, wa-connid, wa-cityfrom, wa-cityto).
  WRITE: / wa-carrid, wa-connid, wa-cityfrom, wa-cityto.
ENDSELECT.

Correct, but note that you have to use SELECT SINGLE in this case.

0 Kudos

dont forget to mention that into has to be added in the end of the statement

Jonathan Blavatsky No, it's only when you use the "ABAP SQL strict mode" that INTO needs to be after WHERE, ORDER BY and GROUP BY. In short, the strict mode is when you have @ in front of the names of the variables. In 2009, only the non-strict mode existed. The ABAP documentation explains the syntax.