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

Performance issue

Former Member
0 Likes
524

Hello Guys,

Following Code is there , Performance is very low.

Any hint. to improve the Performance..

Regards

Swati..

SELECT budat arbid werks wablnr aufnr FROM afru

INTO CORRESPONDING FIELDS OF TABLE it_afru

WHERE werks = s_werks AND budat IN s_dt.

IF s_arbpl-low NE '' .

SELECT objid arbpl FROM crhd

INTO CORRESPONDING FIELDS OF TABLE it_crhd

FOR ALL ENTRIES IN it_afru

WHERE objid = it_afru-arbid AND arbpl IN s_arbpl.

LOOP AT it_afru.

READ TABLE it_crhd WITH KEY objid = it_afru-arbid.

IF sy-subrc = 0.

it_afru-arbpl = it_crhd-arbpl.

MODIFY it_afru.

ENDIF.

ENDLOOP.

ENDIF.

SELECT mblnr matnr charg erfmg aufnr FROM aufm

INTO CORRESPONDING FIELDS OF TABLE it_aufm

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks = s_werks AND matnr IN s_matnr

AND bwart = '101' .

IF sy-subrc = 0.

ENDIF.

      • FURNACE OIL

SELECT mblnr matnr charg erfmg aufnr FROM aufm

INTO CORRESPONDING FIELDS OF TABLE it_aufm_f

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks = s_werks

AND bwart = '261' OR bwart = '201'.

" and matnr = 'SSOLFO0001'. " and mblnr = it_afru-wablnr. " matnr in s_matnr. "

IF sy-subrc = 0.

ENDIF.

      • Dross and process Scrap

SELECT mblnr matnr erfmg aufnr FROM mseg

INTO CORRESPONDING FIELDS OF TABLE it_mseg

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks = s_werks

AND bwart = '552' AND matnr = 'NISCAD0001'

OR matnr = 'NISCBD001' or matnr = 'RMSRPS0001'. " and matnr in s_matnr. and mblnr = it_afru-wablnr."

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
484

HI,

In the code modify these Select stmts into one:

SELECT mblnr matnr charg erfmg aufnr FROM aufm

INTO CORRESPONDING FIELDS OF TABLE it_aufm

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks = s_werks AND matnr IN s_matnr

AND bwart = '101' .

IF sy-subrc = 0.

ENDIF.

      • FURNACE OIL

SELECT mblnr matnr charg erfmg aufnr FROM aufm

INTO CORRESPONDING FIELDS OF TABLE it_aufm_f

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks = s_werks

AND bwart = '261' OR bwart = '201'.

SELECT mblnr matnr erfmg aufnr FROM mseg

INTO CORRESPONDING FIELDS OF TABLE it_mseg

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks = s_werks

AND bwart = '552' AND matnr = 'NISCAD0001'

OR matnr = 'NISCBD001' or matnr = 'RMSRPS0001'.

to:

SELECT mblnr matnr charg erfmg aufnr FROM aufm

INTO CORRESPONDING FIELDS OF TABLE it_aufm

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks <b> IN </b> s_werks AND matnr IN s_matnr

<b> "use IN if s_werks is select-options </b>

AND bwart in ( '101' , '261', '201' , '552' ) .

IF sy-subrc = 0.

ENDIF.

Then: you can delete the entries from the internal table as:

it_aufm_f[] = it_aufm[].

it_mseg[] = it_aufm[].

DELETE it_aufm_f where bwart not in ( '261' , '201' ).

delete it_aufm where bwart not in ( '101' ).

delete it_mseg where bwart not in ( '552' ).

Then further you can filter on material numbers.

Regards

Subramanian

4 REPLIES 4
Read only

SantoshKallem
Active Contributor
0 Likes
484

avoid "INTO CORRESPONDING"

regards

santhosh

Read only

Former Member
0 Likes
484

first thing which i can understand you have to check it_afru is initial or not before using for all entries. because if it_afru is initial all the data will be fetch.

secondly

SELECT mblnr matnr charg erfmg aufnr FROM aufm

INTO CORRESPONDING FIELDS OF TABLE it_aufm_f

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks = s_werks

AND ( bwart = '261' OR bwart = '201' ).

" and matnr = 'SSOLFO0001'. " and mblnr = it_afru-wablnr. " matnr in s_matnr. "

and third

SELECT mblnr matnr erfmg aufnr FROM mseg

INTO CORRESPONDING FIELDS OF TABLE it_mseg

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks = s_werks

AND bwart = '552' AND ( matnr = 'NISCAD0001'

OR matnr = 'NISCBD001' or matnr = 'RMSRPS0001' ). " and matnr in s_matnr. and mblnr = it_afru-wablnr."

it may increase your performance. just try that.

regards

shiba dutta

Read only

Former Member
0 Likes
484

You have to do 2 changes in your query.

1) In place of "into corresponding fields" Use "Appending corresponding fields of table".

2) Don't use "For all entries command as it will drastically reduce the performance.

Pls use 'Loop at Itab" in place of "For all entries".

I hope this will improve your performance.

Read only

Former Member
0 Likes
485

HI,

In the code modify these Select stmts into one:

SELECT mblnr matnr charg erfmg aufnr FROM aufm

INTO CORRESPONDING FIELDS OF TABLE it_aufm

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks = s_werks AND matnr IN s_matnr

AND bwart = '101' .

IF sy-subrc = 0.

ENDIF.

      • FURNACE OIL

SELECT mblnr matnr charg erfmg aufnr FROM aufm

INTO CORRESPONDING FIELDS OF TABLE it_aufm_f

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks = s_werks

AND bwart = '261' OR bwart = '201'.

SELECT mblnr matnr erfmg aufnr FROM mseg

INTO CORRESPONDING FIELDS OF TABLE it_mseg

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks = s_werks

AND bwart = '552' AND matnr = 'NISCAD0001'

OR matnr = 'NISCBD001' or matnr = 'RMSRPS0001'.

to:

SELECT mblnr matnr charg erfmg aufnr FROM aufm

INTO CORRESPONDING FIELDS OF TABLE it_aufm

FOR ALL ENTRIES IN it_afru WHERE

aufnr = it_afru-aufnr AND werks <b> IN </b> s_werks AND matnr IN s_matnr

<b> "use IN if s_werks is select-options </b>

AND bwart in ( '101' , '261', '201' , '552' ) .

IF sy-subrc = 0.

ENDIF.

Then: you can delete the entries from the internal table as:

it_aufm_f[] = it_aufm[].

it_mseg[] = it_aufm[].

DELETE it_aufm_f where bwart not in ( '261' , '201' ).

delete it_aufm where bwart not in ( '101' ).

delete it_mseg where bwart not in ( '552' ).

Then further you can filter on material numbers.

Regards

Subramanian