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 moving final internal table performance?

Former Member
0 Likes
1,042

Hi All,

I have written querry as follow but when i check the performance it's taking more time

and is se30 It's giveing ABAP grapf as 98.45%.

Can i optimize this selct querry or the way i moved data into final internal table?

Please help me.



 SELECT werks
        matnr
        FROM ekpo INTO TABLE gt_ekpo
        WHERE werks IN s_werks
        AND matnr IN s_matnr.

  IF  gt_ekpo[] IS NOT INITIAL.

    SELECT belnr                        
           budat                         
           ebeln                       
           menge                         
           FROM ekbe INTO TABLE gt_ekbe
           FOR ALL ENTRIES IN gt_ekpo
           WHERE belnr IN s_belnr
           AND ebeln IN s_ebeln
           AND werks EQ gt_ekpo-werks
           AND matnr EQ gt_ekpo-matnr.

    SELECT prctr FROM marc INTO TABLE gt_marc
          FOR ALL ENTRIES IN gt_ekpo
          WHERE werks EQ gt_ekpo-werks
          AND matnr EQ gt_ekpo-matnr
          AND prctr IN s_prctr.

    SELECT pspnr FROM prps
           INTO TABLE gt_prps
           FOR ALL ENTRIES IN gt_ekpo
           WHERE werks EQ gt_ekpo-werks
           AND matnr EQ gt_ekpo-matnr
           AND pspnr IN s_pspnr.

    SELECT pstrm
           eetrm
           FROM prte INTO TABLE gt_prte
           FOR ALL ENTRIES IN gt_prps
           WHERE posnr EQ gt_prps-pspnr
           AND pstrm IN s_pstrm
           AND eetrm IN s_eetrm.

    SELECT anln1
           anln2 FROM cobrb INTO TABLE gt_cobrb
           FOR ALL ENTRIES IN gt_ekpo
           WHERE matnr EQ gt_ekpo-matnr
           AND werks EQ gt_ekpo-werks.

    SELECT anln1 FROM anla
           INTO TABLE gt_anla
           FOR ALL ENTRIES IN gt_cobrb
           WHERE anln1 EQ gt_cobrb-anln1.

    SELECT dmbtr FROM mseg INTO TABLE gt_mseg
           FOR ALL ENTRIES IN gt_ekbe
           WHERE ebeln EQ gt_ekbe-ebeln
           AND menge EQ gt_ekbe-menge.

    SELECT amort_val
           asset_val FROM /bgt/amort_extn
          INTO TABLE gt_/bgt/amort_extn
          FOR ALL ENTRIES IN gt_ekpo
          WHERE werks EQ gt_ekpo-werks
          AND matnr EQ gt_ekpo-matnr.
  ENDIF.

  LOOP AT gt_ekbe INTO gs_ekbe.
    gs_final-belnr = gs_ekbe-belnr.
    gs_final-budat = gs_ekbe-budat.
    gs_final-ebeln = gs_ekbe-ebeln.
    gs_final-menge = gs_ekbe-menge.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_ekpo INTO gs_ekpo.
    gs_final-werks = gs_ekpo-werks.
    gs_final-matnr = gs_ekpo-matnr.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_marc INTO gs_marc.
    gs_final-prctr = gs_marc-prctr.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_prps INTO gs_prps.
    gs_final-pspnr = gs_prps-pspnr.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_prte INTO gs_prte.
    gs_final-pstrm = gs_prte-pstrm.
    gs_final-eetrm = gs_prte-eetrm.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_cobrb INTO gs_cobrb.
    gs_final-anln1 = gs_cobrb-anln1.
    gs_final-anln2 = gs_cobrb-anln2.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_anla INTO gs_anla.
    gs_final-anln1 = gs_anla-anln1.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_mseg INTO gs_mseg.
    gs_final-dmbtr = gs_mseg-dmbtr.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_/bgt/amort_extn INTO gs_/bgt/amort_extn.
    gs_final-amort_val = gs_/bgt/amort_extn-amort_val.
    gs_final-asset_val = gs_/bgt/amort_extn-asset_val.
    APPEND gs_final TO gt_final.
  ENDLOOP.

Regards,

oorvi

9 REPLIES 9
Read only

Former Member
0 Likes
996

Kndly format the code to make it readable and keep in mind the 2500 character limit

Read only

former_member404244
Active Contributor
0 Likes
996

Hi,

Please put your code in the following manner , so that it will be in readable format.

->put this first

<put your code>

fianlly another <code> like above to end it.

Regards,

Nagaraj

Read only

Former Member
0 Likes
996

i am writing code in


---
---

But is it not formating

Edited by: oorvi joshi on Oct 8, 2009 8:23 AM

Read only

0 Likes
996

split your code in to 2 or 3 parts and post.It must be exceeding 2500 character limit

Read only

Former Member
0 Likes
996


LOOP AT gt_ekbe INTO gs_ekbe.
    gs_final-belnr = gs_ekbe-belnr.
    gs_final-budat = gs_ekbe-budat.
    gs_final-ebeln = gs_ekbe-ebeln.
    gs_final-menge = gs_ekbe-menge.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_ekpo INTO gs_ekpo.
    gs_final-werks = gs_ekpo-werks.
    gs_final-matnr = gs_ekpo-matnr.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_marc INTO gs_marc.
    gs_final-prctr = gs_marc-prctr.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_prps INTO gs_prps.
    gs_final-pspnr = gs_prps-pspnr.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_prte INTO gs_prte.
    gs_final-pstrm = gs_prte-pstrm.
    gs_final-eetrm = gs_prte-eetrm.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_cobrb INTO gs_cobrb.
    gs_final-anln1 = gs_cobrb-anln1.
    gs_final-anln2 = gs_cobrb-anln2.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_anla INTO gs_anla.
    gs_final-anln1 = gs_anla-anln1.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_mseg INTO gs_mseg.
    gs_final-dmbtr = gs_mseg-dmbtr.
    APPEND gs_final TO gt_final.
  ENDLOOP.

  LOOP AT gt_/bgt/amort_extn INTO gs_/bgt/amort_extn.
    gs_final-amort_val = gs_zbill_acs_val.
    gs_final-asset_val = gs_/zbill-atm_val.
    APPEND gs_final TO gt_final.
  ENDLOOP.

Read only

0 Likes
996

Hello,

Keep the performance part aside. First your code does not make sense. It just keeps on appending each field in the gs_final internal table. You must be using modify statement after the first append to get the correct output. Are you sure only performance is the issue here and the output is displayed correctly?

Vikranth

Read only

0 Likes
996

Thanks vikrant for your quick reply.

I am just appending all the data into final internal table.

No need to modify the internal table.

I was thinking of instead of using loop can i use read statement for the same?

Read only

0 Likes
996

Hi,

Yes you can use read statement but all the internal tables must be interlinked with a common field for that.

For Eg,



loop at itab1.

move-corresponding itab1 to it_final.

read table itab2 with key field1 = itab1-field1.

if sy-subrc = 0 .
move-corresponding itab2 to it_final.
endif.

read table itab3 with key field1 = itab1-field2.

if sy-subrc = 0 .
move-corresponding itab3 to it_final.
endif.

append it_final.
clear it_final.
endloop.

Vikranth

Read only

Former Member
0 Likes
996

Hi All

The formatted code is as above.

Thanks & regards,

oorvi