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

Data Extraction from a SAP Table

Former Member
0 Likes
759

Hi all

This is regarding Contract1 , which has a Building assigned to it ( BU ) , further i assign this BU to another Contract say Contract2.

Now my requirement is to Extract the data for all those contracts which have a BU which is further assigned to a contract2.

What i do is : i have to retrieve the data from the table VIBDBU ( BU table ) , with Objnr as the key. Here BU is having a naming convention as IB.

Please review my code and let me know , what am i missing .....

SELECT * FROM vibdbu INTO wa_vibdbu

WHERE objnr EQ loc_recn-objnr.

IF wa_vibdbu-objnr(2) EQ 'IB' .

SELECT * FROM vibdbu INTO wa_vibdbu

WHERE objnr EQ wa_vibdbu-objnr .

SELECT * FROM vibdbu INTO wa_vibdbu

WHERE bukrs EQ wa_vibdbu-bukrs AND

swenr EQ wa_vibdbu-swenr AND

sgenr EQ wa_vibdbu-sgenr .

SELECT SINGLE bukrs recnnr INTO CORRESPONDING FIELDS OF wa_subleases

FROM vicncn

WHERE objnr EQ wa_s_vibdbu-objnr .

IF sy-subrc EQ 0 .

COLLECT wa_subleases INTO subleases .

ENDIF .

ENDSELECT .

ENDSELECT .

ENDSELECT .

ENDIF .

Thanks

Shweta

3 REPLIES 3
Read only

Former Member
0 Likes
677

Hi Shweta,


SELECT * FROM vibdbu INTO wa_vibdbu
WHERE objnr EQ loc_recn-objnr.
IF wa_vibdbu-objnr(2) EQ 'IB' .
SELECT * FROM vibdbu INTO wa_vibdbu     "This again gets the same line as above select
WHERE objnr EQ wa_vibdbu-objnr .             " since you are getting for the same objnr..if it loops then too unnecessarily

SELECT * FROM vibdbu INTO wa_vibdbu       "This again would loop with the same set of data
WHERE bukrs EQ wa_vibdbu-bukrs AND       "probably u want data in wa_s_vibdbu-objnr here..Check
swenr EQ wa_vibdbu-swenr AND
sgenr EQ wa_vibdbu-sgenr .

SELECT SINGLE bukrs recnnr INTO CORRESPONDING FIELDS OF wa_subleases
FROM vicncn
WHERE objnr EQ wa_s_vibdbu-objnr .

IF sy-subrc EQ 0 .
COLLECT wa_subleases INTO subleases .
ENDIF .
ENDSELECT .
ENDSELECT .
ENDSELECT .

Revert if i got u wrong.

Edited by: Ankesh on Jan 9, 2009 9:19 PM

Read only

former_member191735
Active Contributor
0 Likes
677

All your code can be in 2 statements. You are selecting same data again and again.

Look at the following code

" Try to eliminate select * and use select single as you are selecting single line

SELECT * FROM vibdbu INTO wa_vibdbu

WHERE objnr EQ loc_recn-objnr.

IF wa_vibdbu-objnr(2) EQ 'IB' .

SELECT SINGLE bukrs recnnr INTO CORRESPONDING FIELDS OF wa_subleases

FROM vicncn

WHERE objnr EQ wa_s_vibdbu-objnr . " Where is this coming from WA_S_VIBDBU-OBJNR. If you mean, WA_VIBDBU-OBJNR , use it.

IF sy-subrc EQ 0 .

COLLECT wa_subleases INTO subleases .

ENDIF .

end select.

ENDSELECT .

No need of end select for select single statement

Read only

Former Member
0 Likes
677

thanks