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

How to speed up my program?

Former Member
0 Likes
403

Hello experts,

I'm writing a prgram for MM. It's for reporting but it takes forever to monitor the info I need. Here's the "get data" part. Can you please help me to speed it up?

Thanks

Emre

form get_data .

  select * from ekko into corresponding fields of table i_list2
    where lifnr in s_lifnr
      and ebeln in s_ebeln
      and bedat in s_bedat.

  check sy-subrc = 0.

  select * from ekpo into corresponding fields of table i_list
    for all entries in i_list2
    where ebeln = i_list2-ebeln
          and ebeln in s_ebeln.

  loop at i_list.

    select single * from ekko into corresponding fields of i_list
        where ebeln = i_list-ebeln
              and ebeln in s_ebeln.

    select single banfn bnfpo badat matnr txz01
      from eban into (i_list-banfn, i_list-bnfpo, i_list-badat,
       i_list-matnr, i_list-txz01)
      where ebeln eq i_list-ebeln
        and ebelp eq i_list-ebelp
        and ebeln in s_ebeln.

    .
    select single kostl sakto from ekkn into (i_list-kostl,
       i_list-sakto) where ebeln = i_list-ebeln
      and ebelp = i_list-ebelp.

    select single menge meins from rseg
      into (i_list-menge2, i_list-meins2)
        where ebeln = i_list-ebeln
              and ebelp = i_list-ebelp
              and ebeln in s_ebeln.


    select single menge meins from eban
      into (i_list-menge1, i_list-meins1)
        where ebeln = i_list-ebeln
            and ebelp = i_list-ebelp
            and ebeln in s_ebeln.


    select single wrbtr from rseg into i_list-wrbtr
      where ebeln = i_list-ebeln
        and ebelp = i_list-ebelp.


       select single * from rseg where ebeln = i_list-ebeln.
    if sy-subrc is initial.
      select single * from rbkp where belnr = rseg-belnr.
      if sy-subrc is initial .
        i_list-belnr  = rbkp-belnr.
        i_list-bldat  = rbkp-bldat.
        i_list-budat  = rbkp-budat.
        i_list-wmwst1 = rbkp-wmwst1.
        i_list-xblnr  = rbkp-xblnr.
        i_list-waers  = rbkp-waers.
      endif.
    endif.


    select single belnr from bkpf into i_list-belnr1
      where gjahr eq rbkp-gjahr
        and budat eq rbkp-budat
        and bukrs eq rbkp-bukrs
        and xblnr eq rbkp-xblnr .

    modify i_list.
  endloop.

endform.                    " GET_DATA

Hello experts,

I'm writing a prgram for MM. It's for reporting but it takes forever to monitor the info I need. Here's the "get data" part. Can you please help me to speed it up?

Thanks

Emre

form get_data .

  select * from ekko into corresponding fields of table i_list2
    where lifnr in s_lifnr
      and ebeln in s_ebeln
      and bedat in s_bedat.

  check sy-subrc = 0.

  select * from ekpo into corresponding fields of table i_list
    for all entries in i_list2
    where ebeln = i_list2-ebeln
          and ebeln in s_ebeln.

  loop at i_list.

    select single * from ekko into corresponding fields of i_list
        where ebeln = i_list-ebeln
              and ebeln in s_ebeln.

    select single banfn bnfpo badat matnr txz01
      from eban into (i_list-banfn, i_list-bnfpo, i_list-badat,
       i_list-matnr, i_list-txz01)
      where ebeln eq i_list-ebeln
        and ebelp eq i_list-ebelp
        and ebeln in s_ebeln.

    .
    select single kostl sakto from ekkn into (i_list-kostl,
       i_list-sakto) where ebeln = i_list-ebeln
      and ebelp = i_list-ebelp.

    select single menge meins from rseg
      into (i_list-menge2, i_list-meins2)
        where ebeln = i_list-ebeln
              and ebelp = i_list-ebelp
              and ebeln in s_ebeln.


    select single menge meins from eban
      into (i_list-menge1, i_list-meins1)
        where ebeln = i_list-ebeln
            and ebelp = i_list-ebelp
            and ebeln in s_ebeln.


    select single wrbtr from rseg into i_list-wrbtr
      where ebeln = i_list-ebeln
        and ebelp = i_list-ebelp.


       select single * from rseg where ebeln = i_list-ebeln.
    if sy-subrc is initial.
      select single * from rbkp where belnr = rseg-belnr.
      if sy-subrc is initial .
        i_list-belnr  = rbkp-belnr.
        i_list-bldat  = rbkp-bldat.
        i_list-budat  = rbkp-budat.
        i_list-wmwst1 = rbkp-wmwst1.
        i_list-xblnr  = rbkp-xblnr.
        i_list-waers  = rbkp-waers.
      endif.
    endif.


    select single belnr from bkpf into i_list-belnr1
      where gjahr eq rbkp-gjahr
        and budat eq rbkp-budat
        and bukrs eq rbkp-bukrs
        and xblnr eq rbkp-xblnr .

    modify i_list.
  endloop.

endform.                    " GET_DATA

1 REPLY 1
Read only

ThomasZloch
Active Contributor
0 Likes
373

Please try yourself first by reading the recommendations here:

If there is still a problem, please post in "ABAP Performance" forum.

Thread locked.

Thomas