Application Development and Automation 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: 
Read only

SELECT multiple fields INTO local varibles

Former Member
103,957

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
Read only

Former Member
32,566

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.

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

4 REPLIES 4
Read only

Former Member
32,567

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.

Read only

32,566

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

Read only

0 Likes
32,566

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

Read only

32,566
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.