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

Populating Empty Fields for Existing Internal Table Using For All Entries

Former Member
0 Likes
1,578

I have an internal table called itab_extract that populates without any issues in SELECT A and SELECT B below. Trying to avoid looping, I am using select DB table 'for all entries' in itab_extract. I want the empty fields in itab_extract to populate from the values in the database. However, about 200,000 entries are being appended to the table, and, the values that existed for the already populated fields in itab_extract are gone, and the new fields are populated.

I've played with the syntax and cannot seem to get it to work. My next option is a time consuming loop.

How should the for all entries syntax look to accomplish filling the empty fields in the itab? Thank-You

*read ekko
    select ebeln lifnr aedat bsart from ekko                                                     *SELECT A*
           into  CORRESPONDING FIELDS OF TABLE me->itab_extract
           where aedat in r_aedat.

    select ebeln lifnr aedat BSART from ekko                                                  *SELECT B*
           appending CORRESPONDING FIELDS OF TABLE me->itab_extract
           where aedat in S_DATE2 AND
                 BSART IN S_BSART.
  
      select ebelp werks matnr                                                                           *SELECT C*
        into CORRESPONDING FIELDS OF TABLE itab_extract
        from ekpo
        FOR ALL ENTRIES IN itab_extract
        where ebeln = itab_extract-ebeln.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
971

Hi Tom,

This SQL statement will be time consuming, Do not use a loop.

There are two options.

1. Select EKKO and EKPO details based on standard SAP view. (You can type EKKO in se11 view to find the correct view).

also use one range table populate r_aedat and s_date2 in the same. So you where condition will have r_newrange and

s_bsart. Also do not use into corresponding fields, it is not a good idea. It will increase your performance. Maintain the proper

sequence (Based on database structure of EKKO and EKPO)

2. If you are keen to use for all entries, then first select ekko then after your sy-subrc check get the data from EKPO.

Should be like this.

select ebeln bsart aedat lifnr from ekko into table gt_ekko where aedat in r_newrange and bsart in s_bsart.

if sy-subrc eq 0.

sort gt_ekko by ebeln ascending.

select ebeln ebelp werks matnr into table gt_ekpo for all entries in gt_ekko where ebeln eq gt_ekko-ebeln.

endif.

Hope it helps,

Best Regards,

Tapodipta Khan.

I have an internal table called itab_extract that populates without any issues in SELECT A and SELECT B below. Trying to avoid looping, I am using select DB table 'for all entries' in itab_extract. I want the empty fields in itab_extract to populate from the values in the database. However, about 200,000 entries are being appended to the table, and, the values that existed for the already populated fields in itab_extract are gone, and the new fields are populated.

I've played with the syntax and cannot seem to get it to work. My next option is a time consuming loop.

How should the for all entries syntax look to accomplish filling the empty fields in the itab? Thank-You

*read ekko
    select ebeln lifnr aedat bsart from ekko                                                     *SELECT A*
           into  CORRESPONDING FIELDS OF TABLE me->itab_extract
           where aedat in r_aedat.

    select ebeln lifnr aedat BSART from ekko                                                  *SELECT B*
           appending CORRESPONDING FIELDS OF TABLE me->itab_extract
           where aedat in S_DATE2 AND
                 BSART IN S_BSART.
  
      select ebelp werks matnr                                                                           *SELECT C*
        into CORRESPONDING FIELDS OF TABLE itab_extract
        from ekpo
        FOR ALL ENTRIES IN itab_extract
        where ebeln = itab_extract-ebeln.

2 REPLIES 2
Read only

Former Member
0 Likes
971

use an inner join between ekko and ekpo.

Read only

Former Member
0 Likes
972

Hi Tom,

This SQL statement will be time consuming, Do not use a loop.

There are two options.

1. Select EKKO and EKPO details based on standard SAP view. (You can type EKKO in se11 view to find the correct view).

also use one range table populate r_aedat and s_date2 in the same. So you where condition will have r_newrange and

s_bsart. Also do not use into corresponding fields, it is not a good idea. It will increase your performance. Maintain the proper

sequence (Based on database structure of EKKO and EKPO)

2. If you are keen to use for all entries, then first select ekko then after your sy-subrc check get the data from EKPO.

Should be like this.

select ebeln bsart aedat lifnr from ekko into table gt_ekko where aedat in r_newrange and bsart in s_bsart.

if sy-subrc eq 0.

sort gt_ekko by ebeln ascending.

select ebeln ebelp werks matnr into table gt_ekpo for all entries in gt_ekko where ebeln eq gt_ekko-ebeln.

endif.

Hope it helps,

Best Regards,

Tapodipta Khan.