cancel
Showing results for 
Search instead for 
Did you mean: 

help in performence

Former Member
0 Kudos

hi,

i need help in performance because this program is runtime is to much:

Regards



SELECT    vbrk~vbeln vbrk~vbtyp vbrk~fkdat vbrk~netwr vbrk~waerk vbrp~kvgr3 tvv3t~bezei dd07v~ddtext
      FROM ( ( ( vbrk
      INNER JOIN vbrp ON vbrp~vbeln EQ vbrk~vbeln
          AND vbrp~posnr EQ '00010'
          AND vbrp~ps_psp_pnr EQ l_project )
    LEFT OUTER JOIN

        tvv3t ON tvv3t~kvgr3 EQ vbrp~kvgr3
        AND tvv3t~spras EQ sy-langu )

    LEFT OUTER JOIN
        dd07v ON dd07v~domname EQ 'VBTYP'
        AND dd07v~ddlanguage EQ sy-langu
        AND dd07v~domvalue_l EQ vbrk~vbtyp )

    INTO TABLE sdprojectinvoice

    WHERE vbrk~rfbsk EQ 'C'
          AND vbrk~fksto EQ ''
          AND vbrk~sfakn EQ ''.


Accepted Solutions (1)

Accepted Solutions (1)

ferry_lianto
Active Contributor
0 Kudos

Hi,

Sorry ... please try this.


TABLES: VBRK, VBRP, TVV3T, DD07V.

SELECT vbrk~vbeln vbrk~vbtyp vbrk~fkdat vbrk~netwr vbrk~waerk vbrp~kvgr3
FROM vbrk 
INNER JOIN vbrp ON vbrp~vbeln EQ vbrk~vbeln
               AND vbrp~posnr EQ '00010'
               AND vbrp~ps_psp_pnr EQ l_project
INTO TABLE sdprojectinvoice
WHERE vbrk~rfbsk EQ 'C'
  AND vbrk~fksto EQ ' '
  AND vbrk~sfakn EQ ' '.
 
LOOP AT sdprojectinvoice.
  SELECT SINGLE bezei
  INTO tvv3t-bezei 
  FROM tvv3t
  WHERE kvgr3 EQ sdprojectinvoice-kvgr3
    AND spras EQ sy-langu.
 
  IF sy-subrc = 0.
    sdprojectinvoice-bezei = tvv3t-bezei.
  ENDIF.
 
  SELECT SINGLE ddtext
  INTO dd07v-ddtext
  FROM dd07v
  WHERE domname EQ 'VBTYP'
    AND ddlanguage EQ sy-langu
    AND domvalue_l EQ sdprojectinvoice-vbtyp.
 
 
  IF sy-subrc = 0.
    sdprojectinvoice-ddtext = dd07v-ddtext.
  ENDIF.
 
  MODIFY sdprojectinvoice.
ENDLOOP.

Regards,

Ferry Lianto

Former Member
0 Kudos

hi ferry

thanks your suggstion improve the performance but i think to improve the performance more the best that i declare table and do a background job that run at night and select the data from one table(this is fm for the portal) , but for that i need to select for all project maybe you can give me idea how to do that ?

Regards

Answers (3)

Answers (3)

Former Member
0 Kudos

This is a duplicate post. Please see my answer in the other one.

Rob

ferry_lianto
Active Contributor
0 Kudos

Hi,

Do you have all the key fields information of VBRK?

It will help to speed up the reading VBRK and VBRP.

If you don't, please try this.


SELECT vbrk~vbeln vbrk~vbtyp vbrk~fkdat vbrk~netwr vbrk~waerk vbrp~kvgr3      
FROM vbrk 
INNER JOIN vbrp ON vbrp~vbeln EQ vbrk~vbeln
               AND vbrp~posnr EQ '00010'
               AND vbrp~ps_psp_pnr EQ l_project
INTO TABLE sdprojectinvoice
WHERE vbrk~rfbsk EQ 'C'
  AND vbrk~fksto EQ ' '
  AND vbrk~sfakn EQ ' '.
 
LOOP AT sdprojectinvoice.
  SELECT SINGLE *
  FROM tvv3t
  WHERE kvgr3 EQ sdprojectinvoice-kvgr3
    AND spras EQ sy-langu.

  IF SY-SUBRC = 0.
    sdprojectinvoice-bezei = tvv3t-bezei.
  ENDIF.

  SELECT SINGLE *
  FROM dd07v 
  WHERE domname EQ 'VBTYP'
    AND ddlanguage EQ sy-langu
    AND domvalue_l EQ sdprojectinvoice-vbtyp.
 
  IF SY-SUBRC = 0.
    sdprojectinvoice-ddtext = dd07v-ddtext.
  ENDIF.
  
  MODIFY sdprojectinvoice.
ENDLOOP.

Regards,

Ferry Lianto

Former Member
0 Kudos

hi Ferry

thanks for your replay

i try your code and i have some erorr maybe u can help.


 SELECT vbrk~vbeln vbrk~vbtyp vbrk~fkdat vbrk~netwr vbrk~waerk vbrp~kvgr3
      FROM vbrk INNER JOIN vbrp ON vbrp~vbeln EQ vbrk~vbeln
                 AND vbrp~posnr EQ '00010'
                 AND vbrp~ps_psp_pnr EQ l_project
  INTO TABLE sdprojectinvoice
  WHERE vbrk~rfbsk EQ 'C'
        AND vbrk~fksto EQ ' '
        AND vbrk~sfakn EQ ' '.

    LOOP AT sdprojectinvoice.
      SELECT SINGLE *  "here i have the  erorr 
      FROM tvv3t
      WHERE kvgr3 EQ sdprojectinvoice-kvgr3
            AND spras EQ sy-langu.

      IF sy-subrc = 0.
        sdprojectinvoice-bezei = tvv3t-bezei.
      ENDIF.

      SELECT SINGLE * "here i have the  erorr 
      FROM dd07v
      WHERE domname EQ 'VBTYP'
            AND ddlanguage EQ sy-langu
            AND domvalue_l EQ sdprojectinvoice-vbtyp.


      IF sy-subrc = 0.
        sdprojectinvoice-ddtext = dd07v-ddtext.
      ENDIF.

      MODIFY sdprojectinvoice.
    ENDLOOP.

Regards

Former Member
0 Kudos

sorry

the erorr is:"A target area must be declared either explicitly with an INTO clause orimplicitly with a TABLES statement.

thanks

naimesh_patel
Active Contributor
0 Kudos

Declare TABLES statments for those two tables.

Regards,

Naimesh Patel

naimesh_patel
Active Contributor
0 Kudos

One suggestion:

Separate the DD07V query.

SELECT    vbrk~vbeln vbrk~vbtyp vbrk~fkdat vbrk~netwr vbrk~waerk vbrp~kvgr3 tvv3t~bezei       FROM ( ( ( vbrk
      INNER JOIN vbrp ON vbrp~vbeln EQ vbrk~vbeln
          AND vbrp~posnr EQ '00010'
          AND vbrp~ps_psp_pnr EQ l_project )
    LEFT OUTER JOIN
 
        tvv3t ON tvv3t~kvgr3 EQ vbrp~kvgr3
        AND tvv3t~spras EQ sy-langu )
 
 
    INTO TABLE sdprojectinvoice
 
    WHERE vbrk~rfbsk EQ 'C'
          AND vbrk~fksto EQ ''
          AND vbrk~sfakn EQ ''.

<b>select domvalue_l dd07v~ddtext
from dd07v
into t_dd07v
where domname EQ 'VBTYP'
        AND ddlanguage EQ sy-langu.


loop at t_dd07v.
  sdprojectinvoice-ddtext = t_dd07v-ddtext
  modify sdprojectinvoice transporting ddtext
where vbtyp = t_dd07v-domvalue_l.
endloop</b>.