Application Development 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: 

Performance issue with a zreport

Former Member
0 Kudos

Hi all,

i am working on a zreport.

i have optimized the report as much as possible.

But it is giving dump when records exceeds 10k

It works fine with lesser amount of data, but is is giving dump for more than 10k

data. I have optimized my code. But still it is giving dump when i am fetching data from lfa1 table.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi Shweta,

You can use Transaction ST12, which combines the features of both SE30 & ST05.

Select current mode tab & provide your report name & execute. Then later analyze for the time consuming part & try to minimize it.

Please provide the exact dump what you are getting.

Thanks & Regards,

Shiva

32 REPLIES 32

nabheetscn
Active Contributor
0 Kudos

Hi Shweta

First of all use SAP provided tool like SE30/SAT for 5000 number of records to identify pain areas in your report. Then based on that analysis you can proceed further to fetch data based on index etc etc etc

Nabheet

0 Kudos

Hi Nabheet,

i have already analysed through New SAT, and SE30, it is showing that, approx .87% is time consuming through ABAP coding.

0 Kudos

Hi Shweta..

Please check in SAT which statements are more time consuming in your report. It will provide you detailed view

Nabheet

karun_prabhu
Active Contributor
0 Kudos

Hello Shweta,

     What is the dump that you are getting?

Regards.

learnsap
Active Participant
0 Kudos

Hello Shweta,

Even though you are fetching data from only one table LFA1, you need to have the primary keys in your where condition or at least the secondary index fields. If not force the select query to pick the correct secondary index.

First identify the pain area, whether is it going for sequential read or direct read. Also identify the place in the program where it is taking longer time by using the SE30/ST05/SAT.

Regards,

Ramesh

Former Member
0 Kudos

Hi Shweta,

You can use Transaction ST12, which combines the features of both SE30 & ST05.

Select current mode tab & provide your report name & execute. Then later analyze for the time consuming part & try to minimize it.

Please provide the exact dump what you are getting.

Thanks & Regards,

Shiva

0 Kudos

Hi Shiva,

when i type ST12, it shows Transaction ST12 does not exist

0 Kudos

Hi Shweta,

Share your code so that we would be able to figure out your issue.

Regards,

Philip.

0 Kudos

Hi Davy,

here is my code, please see what is wrong.(Before that one thing that i wants to clear is while selecting from lfa1 you will see 2 lifnr , one comes from lfb1 which is used to fetch vendor details company wise, and the second lifnr is from lfa1 table , to show general vendors).

*&---------------------------------------------------------------------*
*& Report  ZST_MM_VENDOR_DETAILS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zst_mm_vendor_details NO STANDARD PAGE HEADING.
TYPE-POOLS : slis.

***********************
*tables used
***********************
TABLES: lfa1,
         j_1imovend,
         lfm1,
         lfb1.


***********************
*types statement
***********************
TYPESBEGIN OF final,
         lifnr TYPE lfa1-lifnr,
         name1 TYPE lfa1-name1,
         ort01 TYPE lfa1-ort01,
         pstlz TYPE lfa1-pstlz,
         telf1 type lfa1-telf1,
         telf2 type lfa1-telf2,
         telfx type lfa1-telfx,
         ktokk TYPE lfa1-ktokk,
         stras TYPE lfa1-stras,
         j_1isern TYPE   j_1imovend-j_1isern,
         j_1ipanno TYPE j_1imovend-j_1ipanno,
         j_1ilstno TYPE j_1imovend-j_1ilstno,
         kalsk TYPE lfm1-kalsk,
         adrnr TYPE adrc-addrnumber,
         SMTP_ADDR TYPE adr6-SMTP_ADDR,
         END OF final.

TYPES: BEGIN OF ty_lfa1,
        lifnr TYPE  lfa1-lifnr,
        name1 TYPE lfa1-name1,
        ort01 TYPE lfa1-ort01,
        pstlz TYPE lfa1-pstlz,
        stras TYPE lfa1-stras,
        adrnr TYPE lfa1-adrnr,
        telf1 type lfa1-telf1,
        telf2 type lfa1-telf2,
        telfx type lfa1-telfx,
        ktokk TYPE lfa1-ktokk,
        END OF ty_lfa1.
TYPES: BEGIN OF ty_adr6,
        addrnumber TYPE adr6-addrnumber,
        SMTP_ADDR TYPE adr6-SMTP_ADDR,
        END OF ty_adr6.
TYPES: BEGIN OF ty_j_1imovend,
        lifnr  TYPE j_1imovend-lifnr,
        j_1isern TYPE   j_1imovend-j_1isern,
        j_1ipanno TYPE j_1imovend-j_1ipanno,
        j_1ilstno TYPE j_1imovend-j_1ilstno,
        END OF ty_j_1imovend.

TYPES: BEGIN OF ty_lfm1,
        lifnr TYPE lfm1-lifnr,
        ekorg TYPE lfm1-ekorg,
        kalsk TYPE lfm1-kalsk,
        END OF ty_lfm1.

TYPES: BEGIN OF ty_lfb1,
       lifnr TYPE lfb1-lifnr,
       bukrs TYPE lfb1-bukrs,
       END OF ty_lfb1.




DATA: it_final TYPE STANDARD TABLE OF final WITH HEADER LINE.
DATA: wa_final TYPE STANDARD TABLE OF final WITH HEADER LINE.

DATA: it_lfa1 TYPE STANDARD TABLE OF ty_lfa1 WITH HEADER LINE,
       wa_lfa1 TYPE STANDARD TABLE OF ty_lfa1 WITH HEADER LINE.
DATA: it_adr6 TYPE STANDARD TABLE OF ty_adr6,
       wa_adr6 TYPE ty_adr6.
DATA: it_j_1imovend TYPE STANDARD TABLE OF ty_j_1imovend WITH HEADER LINE,
       wa_j_1imovend TYPE STANDARD TABLE OF ty_j_1imovend WITH HEADER LINE.

DATA: it_lfm1 TYPE STANDARD TABLE OF ty_lfm1 WITH HEADER LINE,
       wa_lfm1 TYPE STANDARD TABLE OF ty_lfm1 WITH HEADER LINE.

DATA: it_lfb1 TYPE STANDARD TABLE OF ty_lfb1 WITH HEADER LINE,
       wa_lfb1 TYPE STANDARD TABLE OF ty_lfb1 WITH HEADER LINE.

* *-- ALV SPECIFICATIONS

DATA: it_fieldcat  TYPE slis_t_fieldcat_alv,
       wa_fieldcat  TYPE slis_fieldcat_alv.
DATA: it_sort      TYPE slis_t_sortinfo_alv,
       wa_sort      TYPE slis_sortinfo_alv.
*DATA: it_heading   TYPE slis_t_listheader,
*      wa_heading   TYPE slis_listheader.
DATA: wa_layout    TYPE slis_layout_alv.
DATA: lv_comm      TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA: w_title      TYPE lvc_title,
       w_repid      TYPE syrepid,
       t_event      TYPE slis_t_event,
       w_status   TYPE slis_formname.

* Heading of the report.
*DATA: t_heading TYPE slis_t_listheader.
*-- GLOBAL & LOCAL VARIABLES

DATA: lv_repid   TYPE sy-repid,
       lv_counter TYPE i.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_lifnr FOR lfa1-lifnr.
SELECT-OPTIONS: s_ekorg FOR lfm1-ekorg NO-EXTENSION  NO INTERVALS .
SELECT-OPTIONS: s_bukrs FOR lfb1-bukrs NO-EXTENSION  NO INTERVALS .

SELECTION-SCREEN END OF BLOCK b1.



*--INTITIALIZATION

PERFORM initialization.


START-OF-SELECTION.
   PERFORM get_data.
   PERFORM field_cat.

*&---------------------------------------------------------------------*
*&      Form  INITIALIZATION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM initialization .

ENDFORM.                    " INITIALIZATION


*********************
*select statement
*********************
*form get_data.
FORM get_data.

   SELECT lifnr
          bukrs
          FROM lfb1 INTO  TABLE it_lfb1
          WHERE bukrs IN s_bukrs.


   SELECT lifnr
          name1
          ort01
          pstlz
          stras
          adrnr
          telf1
          telf2
          telfx
          ktokk
          FROM lfa1
          INTO  TABLE it_lfa1
          FOR ALL ENTRIES IN it_lfb1
*         WHERE mandt = sy-mandt
          WHERE lifnr = it_lfb1-lifnr
          AND lifnr IN s_lifnr.


   SELECT  lifnr
           j_1isern
           j_1ipanno
           j_1ilstno
           FROM j_1imovend INTO  TABLE it_j_1imovend
           FOR ALL ENTRIES IN it_lfa1
           WHERE lifnr = it_lfa1-lifnr.

   SELECT addrnumber
          SMTP_ADDR
          FROM adr6 INTO  TABLE it_adr6
          FOR ALL ENTRIES IN it_lfa1
          WHERE addrnumber = it_lfa1-adrnr.

   SELECT  lifnr
           ekorg
           kalsk
           FROM lfm1 INTO  TABLE it_lfm1
           FOR ALL ENTRIES IN it_j_1imovend
           WHERE lifnr = it_j_1imovend-lifnr
           AND ekorg IN s_ekorg.




   LOOP AT it_lfa1 INTO wa_lfa1.
     wa_final-lifnr = wa_lfa1-lifnr.
     wa_final-name1 = wa_lfa1-name1.
     wa_final-ort01 = wa_lfa1-ort01.
     wa_final-pstlz = wa_lfa1-pstlz.
     wa_final-stras = wa_lfa1-stras.
     wa_final-adrnr = wa_lfa1-adrnr.
     wa_final-telf1 = wa_lfa1-telf1.
     wa_final-telf2 = wa_lfa1-telf2.
     wa_final-telfx = wa_lfa1-telfx.
     wa_final-ktokk = wa_lfa1-ktokk.
     APPEND wa_final TO it_final.
   ENDLOOP.



   LOOP AT it_final INTO wa_final.
     READ TABLE it_j_1imovend  WITH KEY lifnr = wa_final-lifnr.
       IF sy-subrc EQ 0.
     wa_final-j_1isern = it_j_1imovend-j_1isern.
     wa_final-j_1ipanno = it_j_1imovend-j_1ipanno.
     wa_final-j_1ilstno = it_j_1imovend-j_1ilstno.
     ENDIF.
     MODIFY it_final FROM wa_final TRANSPORTING j_1isern j_1ipanno j_1ilstno.

    LOOP AT it_final INTO wa_final.
     READ TABLE it_lfm1 WITH KEY lifnr = wa_final-lifnr.
     IF sy-subrc EQ 0.
     wa_final-kalsk = it_lfm1-kalsk.
     ENDIF.
     MODIFY it_final FROM wa_final TRANSPORTING kalsk .
   ENDLOOP.

     LOOP AT it_final INTO wa_final.
     READ TABLE it_adr6 INTO wa_adr6 WITH KEY addrnumber = wa_final-adrnr.
       IF sy-subrc EQ 0.
         wa_final-SMTP_ADDR = wa_adr6-SMTP_ADDR.
         ENDIF.

     MODIFY it_final FROM wa_final TRANSPORTING SMTP_ADDR.
*    CLEAR: wa_adr6.
     ENDLOOP.
   ENDLOOP.


ENDFORM.                    "get_data


*&---------------------------------------------------------------------*
*&      Form  FIELD_CAT
*&---------------------------------------------------------------------*
*  THIS PERFORM IS USED TO BUILD THE FIELD CATALOGUE DETAILS
*----------------------------------------------------------------------*
FORM field_cat .
   PERFORM insert_field USING :

     'LIFNR'        'Vendor No.'              space      20,
     'NAME1'        'Name'                    space      40,
     'ORT01'        'City'                    space      20,
      'PSTLZ'        'Post Code'               space      20,
     'TELF1'        'TELPHONE no.'                space     15,
      'TELF2'        'Mobile No.'                space      15,
      'TELFX'        'FAX No.'                  space      15,
     'KTOKK'   'Vendor Group'                 space      30,
     'STRAS'        'Street'                  space      40,
   'J_1ISERN'   'Service Tax Reg. No.'        space      40,
   'J_1IPANNO'        'PAN No'                space      40,
   'J_1ILSTNO'         'TIN NO'               space      20,
   'KALSK'     'Group for Calculation Schema' space      2,
    'ADRNR'         'ADDRESS'                space      10,
   'SMTP_ADDR'        'EMAIL'                 space      40.


   PERFORM sort.
   PERFORM sub_layout.
   PERFORM sub_call_alv.




ENDFORM.                    " FIELD_CAT
*&---------------------------------------------------------------------*
*&      Form  INSERT_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

FORM insert_field  USING    value(p_fname)
                             value(p_tname)
                             value(p_key)
                             value(p_length).

   lv_counter = lv_counter + 1.
   wa_fieldcat-col_pos = lv_counter.
   wa_fieldcat-fieldname = p_fname.
   wa_fieldcat-seltext_m = p_tname.
   wa_fieldcat-key = p_key.
   wa_fieldcat-outputlen = p_length.
   wa_fieldcat-do_sum = 'X'.

   APPEND wa_fieldcat TO it_fieldcat.
ENDFORM.                    " INSERT_FIELD

*&---------------------------------------------------------------------*
*&      Form  SORT
*&---------------------------------------------------------------------*
*       text
**----------------------------------------------------------------------*
FORM sort .
   wa_sort-spos = 2.
   wa_sort-fieldname = 'LIFNR'.
   wa_sort-up = 'X'.
   wa_sort-subtot = 'X'.
   APPEND wa_sort TO it_sort.

ENDFORM.                    "sort


*&---------------------------------------------------------------------*
*&      Form  SUB_LAYOUT
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM sub_layout .
   wa_layout-no_input     = 'X'.
   wa_layout-detail_popup = 'X'.
   wa_layout-zebra = 'X'.
   wa_layout-colwidth_optimize = 'X'.
   wa_layout-info_fieldname 'LINE_COLOR'.
ENDFORM.                    " SUB_LAYOUT

*&---------------------------------------------------------------------*
*&      Form  SUB_CALL_ALV
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM sub_call_alv .
*  w_title = ''.
*  w_status = ''.
   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
       i_callback_program      = sy-repid
       i_callback_user_command = 'USER_COMMAND'
*      i_callback_top_of_page  = 'TOP-OF-PAGE'
       i_grid_title            = w_title
       is_layout               = wa_layout
       it_fieldcat             = it_fieldcat[]
       it_sort                 = it_sort
       i_default               = 'X'
       i_save                  = 'X'
       it_events               = t_event
     TABLES
       t_outtab                = it_final
     EXCEPTIONS
       program_error           = 1
       OTHERS                  = 2.
   IF sy-subrc <> 0.
     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
   ENDIF.

ENDFORM.                    " SUB_CALL_ALV

0 Kudos


Hi Shweta

Please create inner join on lfa1 and lfb1.

select lfa1~lifnr lfa1~name1 lfb1~bukrs etc

from lfa1

inner join on lfb1

on lfa1~lifnr eq lfb1~lifnr

where bukrs in s_bukrs

  and lifnr in s_lifnr.

Nabheet

0 Kudos

Hi Shweta,

  • FOR ALL ENTRIES IN is not better than JOIN.
  • Refer the below link. http://scn.sap.com/thread/1174072 ( One of the famous discussions on a well established myth)
  • Use inner join where ever possible instead of FOR ALL ENTRIES IN


Regards,


Philip.

0 Kudos

Hi Davy,

i have seen eliminating for all entries also, but it will not fits into my criteria.

0 Kudos

hi Shweta

Can you please first create join on lfa1/lfb1 and execute and see what is next issue

0 Kudos

From your short dump snippet I conclude that you are running into the problem described here:

You can have only a limited number of single values in a selection range.

Other than that, it is still recommended to turn your FAE-chain into a well constructed JOIN statement.

Thomas

0 Kudos

FOR ALL ENTRIES is very bad in performance once internal table grow so you could use JOIN or subquery options.

Sample :


* JOIN

SELECT lfa1~lifnr lfa1~name1 lfa1~ort01 lfa1~pstlz lfa1~stras
        lfa1~adrnr lfa1~telf1 lfa1~telf2 lfa1~telfx lfa1~ktokk
   FROM lfa1 JOIN lfb1
     ON lfa1~lifnr EQ lfb1~lifnr
   INTO  TABLE it_lfa1
   WHERE lfa1~lifnr IN s_lifnr
     AND lfb1~bukrs IN s_bukrs.
* sub query
SELECT lifnr  name1  ort01 pstlz  stras adrnr telf1 telf2 telfx ktokk
   FROM lfa1
   INTO  TABLE it_lfa1
   WHERE lifnr IN s_lifnr
   AND EXISTS
     ( SELECT * FROM lfb1
         WHERE bukrs IN s_bukrs
           AND lifnr EQ lfa1~lifnr ).

Regards,

Raymond

0 Kudos

Hi Shweta,

i have seen your whole code and have done necessary changes,

there are some problems in your code, which are marked in bold,

please see your revised code, i have run this without having dump with

40 k data, so it seems to solve your problem.

*&---------------------------------------------------------------------*
*& Report  ZST_MM_VENDOR_DETAILS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zst_mm_vendor_details NO STANDARD PAGE HEADING.
TYPE-POOLS : slis.

***********************
*tables used
***********************
TABLES: lfa1,
j_1imovend
,
lfm1
,
lfb1
.


***********************
*types statement
***********************
TYPESBEGIN OF final,
lifnr
TYPE lfa1-lifnr,
name1
TYPE lfa1-name1,
ort01
TYPE lfa1-ort01,
pstlz
TYPE lfa1-pstlz,
telf1
type lfa1-telf1,
telf2
type lfa1-telf2,
telfx
type lfa1-telfx,
ktokk
TYPE lfa1-ktokk,
stras
TYPE lfa1-stras,
j_1isern
TYPE   j_1imovend-j_1isern,
j_1ipanno
TYPE j_1imovend-j_1ipanno,
j_1ilstno
TYPE j_1imovend-j_1ilstno,
kalsk
TYPE lfm1-kalsk,
adrnr
TYPE adrc-addrnumber,
SMTP_ADDR
TYPE adr6-SMTP_ADDR,
END OF final.

TYPES: BEGIN OF ty_lfa1,

bukrs TYPE lfb1-bukrs,
lifnr
TYPE  lfa1-lifnr,
name1
TYPE lfa1-name1,
ort01
TYPE lfa1-ort01,
pstlz
TYPE lfa1-pstlz,
stras
TYPE lfa1-stras,
adrnr
TYPE lfa1-adrnr,
telf1
type lfa1-telf1,
telf2
type lfa1-telf2,
telfx
type lfa1-telfx,
ktokk
TYPE lfa1-ktokk,
END OF ty_lfa1.


TYPES: BEGIN OF ty_adr6,
addrnumber
TYPE adr6-addrnumber,
SMTP_ADDR
TYPE adr6-SMTP_ADDR,
END OF ty_adr6.
TYPES: BEGIN OF ty_j_1imovend,
lifnr 
TYPE j_1imovend-lifnr,
j_1isern
TYPE   j_1imovend-j_1isern,
j_1ipanno
TYPE j_1imovend-j_1ipanno,
j_1ilstno
TYPE j_1imovend-j_1ilstno,
END OF ty_j_1imovend.

TYPES: BEGIN OF ty_lfm1,
lifnr
TYPE lfm1-lifnr,
ekorg
TYPE lfm1-ekorg,
kalsk
TYPE lfm1-kalsk,
END OF ty_lfm1.

TYPES: BEGIN OF ty_lfb1,
lifnr
TYPE lfb1-lifnr,
bukrs
TYPE lfb1-bukrs,
END OF ty_lfb1.




DATA: it_final TYPE STANDARD TABLE OF final WITH HEADER LINE.
DATA: wa_final TYPE STANDARD TABLE OF final WITH HEADER LINE.

DATA: it_lfa1 TYPE STANDARD TABLE OF ty_lfa1 WITH HEADER LINE,
wa_lfa1
TYPE STANDARD TABLE OF ty_lfa1 WITH HEADER LINE.
DATA: it_adr6 TYPE STANDARD TABLE OF ty_adr6,
wa_adr6
TYPE ty_adr6.
DATA: it_j_1imovend TYPE STANDARD TABLE OF ty_j_1imovend WITH HEADER LINE,
wa_j_1imovend
TYPE STANDARD TABLE OF ty_j_1imovend WITH HEADER LINE.

DATA: it_lfm1 TYPE STANDARD TABLE OF ty_lfm1 WITH HEADER LINE,
wa_lfm1
TYPE STANDARD TABLE OF ty_lfm1 WITH HEADER LINE.

DATA: it_lfb1 TYPE STANDARD TABLE OF ty_lfb1 WITH HEADER LINE,
wa_lfb1
TYPE STANDARD TABLE OF ty_lfb1 WITH HEADER LINE.

* *-- ALV SPECIFICATIONS

DATA: it_fieldcat  TYPE slis_t_fieldcat_alv,
wa_fieldcat 
TYPE slis_fieldcat_alv.
DATA: it_sort      TYPE slis_t_sortinfo_alv,
wa_sort     
TYPE slis_sortinfo_alv.
*DATA: it_heading   TYPE slis_t_listheader,
*      wa_heading   TYPE slis_listheader.
DATA: wa_layout    TYPE slis_layout_alv.
DATA: lv_comm      TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA: w_title      TYPE lvc_title,
w_repid     
TYPE syrepid,
t_event     
TYPE slis_t_event,
w_status  
TYPE slis_formname.

* Heading of the report.
*DATA: t_heading TYPE slis_t_listheader.
*-- GLOBAL & LOCAL VARIABLES

DATA: lv_repid   TYPE sy-repid,
lv_counter
TYPE i.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_lifnr FOR lfa1-lifnr.
SELECT-OPTIONS: s_ekorg FOR lfm1-ekorg NO-EXTENSION  NO INTERVALS .
SELECT-OPTIONS: s_bukrs FOR lfb1-bukrs NO-EXTENSION  NO INTERVALS .

SELECTION-SCREEN END OF BLOCK b1.



*--INTITIALIZATION

PERFORM initialization.


START-OF-SELECTION.
PERFORM get_data.
PERFORM field_cat.

*&---------------------------------------------------------------------*
*&      Form  INITIALIZATION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM initialization .

ENDFORM.                    " INITIALIZATION


*********************
*select statement
*********************
*form get_data.
FORM get_data.


SELECT

K~bukrs

L~lifnr

name1
ort01
pstlz
stras
adrnr
telf1
telf2
telfx
ktokk
INTO  TABLE it_lfa1

FROM LFA1 AS L INNER JOIN LFB1 AS K

ON L~LIFNR EQ K~LIFNR

WHERE L~LIFNR IN S_LIFNR

AND K~BUKRS IN S_BUKRS.



SELECT  lifnr
j_1isern
j_1ipanno
j_1ilstno
FROM j_1imovend INTO  TABLE it_j_1imovend
FOR ALL ENTRIES IN it_lfa1
WHERE lifnr = it_lfa1-lifnr.

SELECT addrnumber
SMTP_ADDR
FROM adr6 INTO  TABLE it_adr6
FOR ALL ENTRIES IN it_lfa1
WHERE addrnumber = it_lfa1-adrnr.

SELECT  lifnr
ekorg
kalsk
FROM lfm1 INTO  TABLE it_lfm1
FOR ALL ENTRIES IN it_j_1imovend
WHERE lifnr = it_j_1imovend-lifnr
AND ekorg IN s_ekorg.




LOOP AT it_lfa1 INTO wa_lfa1.
wa_final
-lifnr = wa_lfa1-lifnr.
wa_final
-name1 = wa_lfa1-name1.
wa_final
-ort01 = wa_lfa1-ort01.
wa_final
-pstlz = wa_lfa1-pstlz.
wa_final
-stras = wa_lfa1-stras.
wa_final
-adrnr = wa_lfa1-adrnr.
wa_final
-telf1 = wa_lfa1-telf1.
wa_final
-telf2 = wa_lfa1-telf2.
wa_final
-telfx = wa_lfa1-telfx.
wa_final
-ktokk = wa_lfa1-ktokk.
APPEND wa_final TO it_final.
ENDLOOP.



LOOP AT it_final INTO wa_final.
READ TABLE it_j_1imovend  WITH KEY lifnr = wa_final-lifnr.
IF sy-subrc EQ 0.
wa_final
-j_1isern = it_j_1imovend-j_1isern.
wa_final
-j_1ipanno = it_j_1imovend-j_1ipanno.
wa_final
-j_1ilstno = it_j_1imovend-j_1ilstno.
ENDIF.


READ TABLE it_lfm1 WITH KEY lifnr = wa_final-lifnr.
IF sy-subrc EQ 0.
wa_final
-kalsk = it_lfm1-kalsk.
ENDIF.

READ TABLE it_adr6 INTO wa_adr6 WITH KEY addrnumber = wa_final-adrnr.
IF sy-subrc EQ 0.
wa_final
-SMTP_ADDR = wa_adr6-SMTP_ADDR.
ENDIF.

MODIFY it_final FROM wa_final TRANSPORTING j_1isern j_1ipanno j_1ilstno kalsk SMTP_ADDR.
*    CLEAR: wa_adr6.

ENDLOOP.


ENDFORM.                    "get_data


*&---------------------------------------------------------------------*
*&      Form  FIELD_CAT
*&---------------------------------------------------------------------*
*  THIS PERFORM IS USED TO BUILD THE FIELD CATALOGUE DETAILS
*----------------------------------------------------------------------*
FORM field_cat .
PERFORM insert_field USING :

'LIFNR'        'Vendor No.'              space      20,
'NAME1'        'Name'                    space      40,
'ORT01'        'City'                    space      20,
'PSTLZ'        'Post Code'               space      20,
'TELF1'        'TELPHONE no.'                space     15,
'TELF2'        'Mobile No.'                space      15,
'TELFX'        'FAX No.'                  space      15,
'KTOKK'   'Vendor Group'                 space      30,
'STRAS'        'Street'                  space      40,
'J_1ISERN'   'Service Tax Reg. No.'        space      40,
'J_1IPANNO'        'PAN No'                space      40,
'J_1ILSTNO'         'TIN NO'               space      20,
'KALSK'     'Group for Calculation Schema' space      2,
'ADRNR'         'ADDRESS'                space      10,
'SMTP_ADDR'        'EMAIL'                 space      40.


PERFORM sort.
PERFORM sub_layout.
PERFORM sub_call_alv.




ENDFORM.                    " FIELD_CAT
*&---------------------------------------------------------------------*
*&      Form  INSERT_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

FORM insert_field  USING    value(p_fname)
value(p_tname)
value(p_key)
value(p_length).

lv_counter
= lv_counter + 1.
wa_fieldcat
-col_pos = lv_counter.
wa_fieldcat
-fieldname = p_fname.
wa_fieldcat
-seltext_m = p_tname.
wa_fieldcat
-key = p_key.
wa_fieldcat
-outputlen = p_length.
wa_fieldcat
-do_sum = 'X'.

APPEND wa_fieldcat TO it_fieldcat.
ENDFORM.                    " INSERT_FIELD

*&---------------------------------------------------------------------*
*&      Form  SORT
*&---------------------------------------------------------------------*
*       text
**----------------------------------------------------------------------*
FORM sort .
wa_sort
-spos = 2.
wa_sort
-fieldname = 'LIFNR'.
wa_sort
-up = 'X'.
wa_sort
-subtot = 'X'.
APPEND wa_sort TO it_sort.

ENDFORM.                    "sort


*&---------------------------------------------------------------------*
*&      Form  SUB_LAYOUT
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM sub_layout .
wa_layout
-no_input     = 'X'.
wa_layout
-detail_popup = 'X'.
wa_layout
-zebra = 'X'.
wa_layout
-colwidth_optimize = 'X'.
wa_layout
-info_fieldname 'LINE_COLOR'.
ENDFORM.                    " SUB_LAYOUT

*&---------------------------------------------------------------------*
*&      Form  SUB_CALL_ALV
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM sub_call_alv .
*  w_title = ''.
*  w_status = ''.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program     
= sy-repid
i_callback_user_command
= 'USER_COMMAND'
*      i_callback_top_of_page  = 'TOP-OF-PAGE'
i_grid_title           
= w_title
is_layout              
= wa_layout
it_fieldcat            
= it_fieldcat[]
it_sort                
= it_sort
i_default              
= 'X'
i_save                 
= 'X'
it_events              
= t_event
TABLES
t_outtab               
= it_final
EXCEPTIONS
program_error          
= 1
OTHERS                  = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM.                    " SUB_CALL_ALV

0 Kudos

Hi Sanjeev,

thanks a lot for your support, its working for large data, but i am facing a problem here,

now i am getting two sets of data, for every vendor, can you please elaborate why this is

coming as two sets of data for each vendors.

Please tell me, why it is coming so .

0 Kudos

Hi Shweta,

as far as i concern, firstly as you have stated that, you are fetching vendor details from lfb1 for company code wise, and fetching vendor details from lfa1 generally.

And now we have used join, so you are getting these two sets of data.

Please do this

After selecting through inner join, just sort your internal table by lifnr, and delete adjacent

duplicates from internal table based on lifnr. Write your code logic as shown as below and let me know if you have any other issues left.

SELECT k~bukrs

          l~lifnr

          name1

          ort01

          pstlz

          stras

          adrnr

          telf1

          telf2

          telfx

          ktokk

          INTO TABLE it_lfa1

          FROM LFA1 AS L INNER JOIN LFB1 AS K

          ON L~LIFNR EQ K~LIFNR

          WHERE K~bukrs IN S_BUKRS

          AND L~LIFNR IN S_LIFNR.

SORT IT_LFA1[] BY LIFNR.

DELETE ADJACENT DUPLICATES FROM IT_LFA1[] COMPARING LIFNR.

0 Kudos

Hi Shweta,

You are getting two sets of data because

  • A particular vendor can exists in more than one company code.
  • Check your LFB1 table and give a particular vendor name (which is giving you two sets of value in your report),

        you would be getting two sets of data.

Regards,

Philip.

0 Kudos

Hi Sanjeev,

thanks a lot, for helping me, i got my issue solved.

Thanks once again.

Former Member
0 Kudos

Hi Shweta,

Please share your code, if not all at least the SELECT statement where you are getting error.

Thanks.

Former Member
0 Kudos

Hi,

Here is the modified code... make changes as per needed.

FORM get_data.

*   SELECT lifnr
*          bukrs
*          FROM lfb1 INTO  TABLE it_lfb1
*          WHERE bukrs IN s_bukrs.
*
*
*   SELECT l~lifnr
*          l~name1
*          l~ort01
*          l~pstlz
*          l~stras
*          l~adrnr
*          l~telf1
*          l~telf2
*          l~telfx
*          l~ktokk
*          FROM lfa1 as l
*          lfb1 as b on
*
*          INTO  TABLE it_lfa1
*          FOR ALL ENTRIES IN it_lfb1
*          WHERE lifnr = it_lfb1-lifnr
*          AND lifnr IN s_lifnr.
*
*
*   SELECT  lifnr
*           j_1isern
*           j_1ipanno
*           j_1ilstno
*           FROM j_1imovend INTO  TABLE it_j_1imovend
*           FOR ALL ENTRIES IN it_lfa1
*           WHERE lifnr = it_lfa1-lifnr.
*
*
*
*   SELECT  lifnr
*           ekorg
*           kalsk
*           FROM lfm1 INTO  TABLE it_lfm1
*           FOR ALL ENTRIES IN it_j_1imovend
*           WHERE lifnr = it_j_1imovend-lifnr
*           AND ekorg IN s_ekorg.



SELECT b~bukrs
l~lifnr
l~name1
l~ort01
l~pstlz
l~stras
l~adrnr
l~telf1
l~telf2
l~telfx
l~ktokk
j~j_1isern
j~j_1ipanno
j~j_1ilstno
m~ekorg
m~kalsk
INTO CORRESPONDING FIELDS OF TABLE IT_FINAL
FROM lfb1 as b
inner join lfa1 as l on b~lifnr = l~lifnr
inner join j_1imovend as j on b~lifnr = j~lifnr
inner join lfm1 as m on b~lifnr = m~lifnr
WHERE b~bukrs in s_bukrs
  AND l~lifnr in s_lifnr
  AND m~ekorg in s_ekorg
.



    SELECT addrnumber
           SMTP_ADDR
           FROM adr6 INTO  TABLE it_adr6
           FOR ALL ENTRIES IN it_lfa1
           WHERE addrnumber = it_lfa1-adrnr.





    LOOP AT it_lfa1 INTO wa_lfa1.
      wa_final-lifnr = wa_lfa1-lifnr.
      wa_final-name1 = wa_lfa1-name1.
      wa_final-ort01 = wa_lfa1-ort01.
      wa_final-pstlz = wa_lfa1-pstlz.
      wa_final-stras = wa_lfa1-stras.
      wa_final-adrnr = wa_lfa1-adrnr.
      wa_final-telf1 = wa_lfa1-telf1.
      wa_final-telf2 = wa_lfa1-telf2.
      wa_final-telfx = wa_lfa1-telfx.
      wa_final-ktokk = wa_lfa1-ktokk.
      APPEND wa_final TO it_final.
    ENDLOOP.



    LOOP AT it_final INTO wa_final.
      READ TABLE it_j_1imovend  WITH KEY lifnr = wa_final-lifnr.
        IF sy-subrc EQ 0.
      wa_final-j_1isern = it_j_1imovend-j_1isern.
      wa_final-j_1ipanno = it_j_1imovend-j_1ipanno.
      wa_final-j_1ilstno = it_j_1imovend-j_1ilstno.
      ENDIF.
      MODIFY it_final FROM wa_final TRANSPORTING j_1isern j_1ipanno j_1ilstno.

     LOOP AT it_final INTO wa_final.
      READ TABLE it_lfm1 WITH KEY lifnr = wa_final-lifnr.
      IF sy-subrc EQ 0.
      wa_final-kalsk = it_lfm1-kalsk.
      ENDIF.
      MODIFY it_final FROM wa_final TRANSPORTING kalsk .
    ENDLOOP.

      LOOP AT it_final INTO wa_final.
      READ TABLE it_adr6 INTO wa_adr6 WITH KEY addrnumber = wa_final-adrnr.
        IF sy-subrc EQ 0.
          wa_final-SMTP_ADDR = wa_adr6-SMTP_ADDR.
          ENDIF.

      MODIFY it_final FROM wa_final TRANSPORTING SMTP_ADDR.
*    CLEAR: wa_adr6.
      ENDLOOP.
    ENDLOOP.


ENDFORM.                    "get_data




-Avirat

Former Member
0 Kudos

Try This Code.

make hebits to use BINARY Search, delete duplicate before useing FOR ALL ENTRIES etc..

avoid loop inside loop for performance.

try to use JOIN in select queries.

   TYPE-POOLS : slis.

***********************
*tables used
***********************
TABLES: lfa1,
        j_1imovend,
        lfm1,
        lfb1.


***********************
*types statement
***********************
TYPESBEGIN OF final,
  lifnr TYPE lfa1-lifnr,
  name1 TYPE lfa1-name1,
  ort01 TYPE lfa1-ort01,
  pstlz TYPE lfa1-pstlz,
  telf1 TYPE lfa1-telf1,
  telf2 TYPE lfa1-telf2,
  telfx TYPE lfa1-telfx,
  ktokk TYPE lfa1-ktokk,
  stras TYPE lfa1-stras,
  j_1isern TYPE   j_1imovend-j_1isern,
  j_1ipanno TYPE j_1imovend-j_1ipanno,
  j_1ilstno TYPE j_1imovend-j_1ilstno,
  kalsk TYPE lfm1-kalsk,
  adrnr TYPE adrc-addrnumber,
  smtp_addr TYPE adr6-smtp_addr,
END OF final.

TYPES: BEGIN OF ty_lfa1,
  lifnr TYPE  lfa1-lifnr,
  name1 TYPE lfa1-name1,
  ort01 TYPE lfa1-ort01,
  pstlz TYPE lfa1-pstlz,
  stras TYPE lfa1-stras,
  adrnr TYPE lfa1-adrnr,
  telf1 TYPE lfa1-telf1,
  telf2 TYPE lfa1-telf2,
  telfx TYPE lfa1-telfx,
  ktokk TYPE lfa1-ktokk,
END OF ty_lfa1.

TYPES: BEGIN OF ty_adr6,
  addrnumber TYPE adr6-addrnumber,
  smtp_addr TYPE adr6-smtp_addr,
END OF ty_adr6.

TYPES: BEGIN OF ty_j_1imovend,
  lifnr  TYPE j_1imovend-lifnr,
  j_1isern TYPE   j_1imovend-j_1isern,
  j_1ipanno TYPE j_1imovend-j_1ipanno,
  j_1ilstno TYPE j_1imovend-j_1ilstno,
END OF ty_j_1imovend.

TYPES: BEGIN OF ty_lfm1,
  lifnr TYPE lfm1-lifnr,
  ekorg TYPE lfm1-ekorg,
  kalsk TYPE lfm1-kalsk,
END OF ty_lfm1.

TYPES: BEGIN OF ty_lfb1,
  lifnr TYPE lfb1-lifnr,
  bukrs TYPE lfb1-bukrs,
END OF ty_lfb1.


DATA: it_final TYPE STANDARD TABLE OF final.
DATA: wa_final TYPE final.

DATA: it_lfa1 TYPE STANDARD TABLE OF ty_lfa1,
      del_dup_it_lfa1 TYPE STANDARD TABLE OF ty_lfa1,
      wa_lfa1 TYPE ty_lfa1.

DATA: it_adr6 TYPE STANDARD TABLE OF ty_adr6,
      wa_adr6 TYPE ty_adr6.

DATA: it_j_1imovend TYPE STANDARD TABLE OF ty_j_1imovend,
      del_dup_it_j_1imovend TYPE STANDARD TABLE OF ty_j_1imovend,
      wa_j_1imovend TYPE ty_j_1imovend.

DATA: it_lfm1 TYPE STANDARD TABLE OF ty_lfm1,
      wa_lfm1 TYPE ty_lfm1.

DATA: it_lfb1 TYPE STANDARD TABLE OF ty_lfb1,
      del_dup_it_lfb1 TYPE STANDARD TABLE OF ty_lfb1,
      wa_lfb1 TYPE ty_lfb1.

* *-- ALV SPECIFICATIONS

DATA: it_fieldcat  TYPE slis_t_fieldcat_alv,
      wa_fieldcat  TYPE slis_fieldcat_alv.
DATA: it_sort      TYPE slis_t_sortinfo_alv,
      wa_sort      TYPE slis_sortinfo_alv.
*DATA: it_heading   TYPE slis_t_listheader,
*      wa_heading   TYPE slis_listheader.
DATA: wa_layout    TYPE slis_layout_alv.
DATA: lv_comm      TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA: w_title      TYPE lvc_title,
      w_repid      TYPE syrepid,
      t_event      TYPE slis_t_event,
      w_status   TYPE slis_formname.

* Heading of the report.
*DATA: t_heading TYPE slis_t_listheader.
*-- GLOBAL & LOCAL VARIABLES

DATA: lv_repid   TYPE sy-repid,
      lv_counter TYPE i.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_lifnr FOR lfa1-lifnr.
SELECT-OPTIONS: s_ekorg FOR lfm1-ekorg NO-EXTENSION  NO INTERVALS .
SELECT-OPTIONS: s_bukrs FOR lfb1-bukrs NO-EXTENSION  NO INTERVALS .

SELECTION-SCREEN END OF BLOCK b1.



*--INTITIALIZATION

PERFORM initialization.


START-OF-SELECTION.
  PERFORM get_data.
  PERFORM field_cat.

*&---------------------------------------------------------------------*
*&      Form  INITIALIZATION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM initialization .

ENDFORM.                    " INITIALIZATION


*********************
*select statement
*********************
*form get_data.
FORM get_data.

  SELECT lifnr
         bukrs
         FROM lfb1
         INTO TABLE it_lfb1
         WHERE bukrs IN s_bukrs.

  del_dup_it_lfb1 = it_lfb1 .
  SORT del_dup_it_lfb1 BY lifnr.
  DELETE ADJACENT DUPLICATES FROM del_dup_it_lfb1 COMPARING lifnr.

  SELECT lifnr  name1  ort01 pstlz  stras  adrnr  telf1  telf2  telfx  ktokk
         FROM lfa1
         INTO  TABLE it_lfa1
         FOR ALL ENTRIES IN del_dup_it_lfb1
         WHERE lifnr = del_dup_it_lfb1-lifnr
           AND lifnr IN s_lifnr.

  SELECT lifnr j_1isern j_1ipanno j_1ilstno
         FROM j_1imovend
         INTO  TABLE it_j_1imovend
         FOR ALL ENTRIES IN del_dup_it_lfb1
         WHERE lifnr = del_dup_it_lfb1-lifnr.

  IF sy-subrc EQ 0.
    SORT it_j_1imovend BY lifnr .
  ENDIF.

  del_dup_it_lfa1 = it_lfa1 .
  SORT del_dup_it_lfa1 BY adrnr .
  DELETE ADJACENT DUPLICATES FROM del_dup_it_lfa1 COMPARING adrnr .

  SELECT addrnumber smtp_addr
         FROM adr6
         INTO TABLE it_adr6
         FOR ALL ENTRIES IN del_dup_it_lfa1
         WHERE addrnumber = del_dup_it_lfa1-adrnr.

  IF sy-subrc EQ 0.
    SORT it_adr6 BY addrnumber .
  ENDIF.

  del_dup_it_j_1imovend = it_j_1imovend .
  SORT del_dup_it_j_1imovend BY lifnr .
  DELETE ADJACENT DUPLICATES FROM del_dup_it_j_1imovend COMPARING lifnr .

  SELECT  lifnr ekorg kalsk
          FROM lfm1
          INTO  TABLE it_lfm1
          FOR ALL ENTRIES IN del_dup_it_j_1imovend
          WHERE lifnr = del_dup_it_j_1imovend-lifnr
          AND ekorg IN s_ekorg.

  IF sy-subrc EQ 0 .
    SORT it_lfm1 BY lifnr.
  ENDIF.

  LOOP AT it_lfa1 INTO wa_lfa1.
    wa_final-lifnr = wa_lfa1-lifnr.
    wa_final-name1 = wa_lfa1-name1.
    wa_final-ort01 = wa_lfa1-ort01.
    wa_final-pstlz = wa_lfa1-pstlz.
    wa_final-stras = wa_lfa1-stras.
    wa_final-adrnr = wa_lfa1-adrnr.
    wa_final-telf1 = wa_lfa1-telf1.
    wa_final-telf2 = wa_lfa1-telf2.
    wa_final-telfx = wa_lfa1-telfx.
    wa_final-ktokk = wa_lfa1-ktokk.

    READ TABLE it_j_1imovend INTO wa_j_1imovend WITH KEY lifnr = wa_final-lifnr BINARY SEARCH.
    IF sy-subrc EQ 0.
      wa_final-j_1isern = wa_j_1imovend-j_1isern.
      wa_final-j_1ipanno = wa_j_1imovend-j_1ipanno.
      wa_final-j_1ilstno = wa_j_1imovend-j_1ilstno.
    ENDIF.

    READ TABLE it_lfm1 INTO wa_lfm1 WITH KEY lifnr = wa_final-lifnr BINARY SEARCH.
    IF sy-subrc EQ 0.
      wa_final-kalsk = wa_lfm1-kalsk.
    ENDIF.

    READ TABLE it_adr6 INTO wa_adr6 WITH KEY addrnumber = wa_final-adrnr BINARY SEARCH.
    IF sy-subrc EQ 0.
      wa_final-smtp_addr = wa_adr6-smtp_addr.
    ENDIF.

    APPEND wa_final TO it_final.
    CLEAR: wa_final, wa_j_1imovend, wa_lfm1, wa_adr6 .
  ENDLOOP.

ENDFORM.                    "get_data


*&---------------------------------------------------------------------*
*&      Form  FIELD_CAT
*&---------------------------------------------------------------------*
*  THIS PERFORM IS USED TO BUILD THE FIELD CATALOGUE DETAILS
*----------------------------------------------------------------------*
FORM field_cat .
  PERFORM insert_field USING :

        'LIFNR'        'Vendor No.'              space      20,
        'NAME1'        'Name'                    space      40,
        'ORT01'        'City'                    space      20,
        'PSTLZ'        'Post Code'               space      20,
        'TELF1'        'TELPHONE no.'                space     15,
        'TELF2'        'Mobile No.'                space      15,
        'TELFX'        'FAX No.'                  space      15,
        'KTOKK'   'Vendor Group'                 space      30,
        'STRAS'        'Street'                  space      40,
        'J_1ISERN'   'Service Tax Reg. No.'        space      40,
        'J_1IPANNO'        'PAN No'                space      40,
        'J_1ILSTNO'         'TIN NO'               space      20,
        'KALSK'     'Group for Calculation Schema' space      2,
        'ADRNR'         'ADDRESS'                space      10,
        'SMTP_ADDR'        'EMAIL'                 space      40.


  PERFORM sort.
  PERFORM sub_layout.
  PERFORM sub_call_alv.




ENDFORM.                    " FIELD_CAT
*&---------------------------------------------------------------------*
*&      Form  INSERT_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

FORM insert_field  USING    value(p_fname)
      value(p_tname)
      value(p_key)
      value(p_length).

  lv_counter = lv_counter + 1.
  wa_fieldcat-col_pos = lv_counter.
  wa_fieldcat-fieldname = p_fname.
  wa_fieldcat-seltext_m = p_tname.
  wa_fieldcat-key = p_key.
  wa_fieldcat-outputlen = p_length.
  wa_fieldcat-do_sum = 'X'.

  APPEND wa_fieldcat TO it_fieldcat.
ENDFORM.                    " INSERT_FIELD

*&---------------------------------------------------------------------*
*&      Form  SORT
*&---------------------------------------------------------------------*
*       text
**----------------------------------------------------------------------*
FORM sort .
  wa_sort-spos = 2.
  wa_sort-fieldname = 'LIFNR'.
  wa_sort-up = 'X'.
  wa_sort-subtot = 'X'.
  APPEND wa_sort TO it_sort.

ENDFORM.                    "sort


*&---------------------------------------------------------------------*
*&      Form  SUB_LAYOUT
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM sub_layout .
  wa_layout-no_input     = 'X'.
  wa_layout-detail_popup = 'X'.
  wa_layout-zebra = 'X'.
  wa_layout-colwidth_optimize = 'X'.
  wa_layout-info_fieldname 'LINE_COLOR'.
ENDFORM.                    " SUB_LAYOUT

*&---------------------------------------------------------------------*
*&      Form  SUB_CALL_ALV
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM sub_call_alv .
*  w_title = ''.
*  w_status = ''.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_callback_program      = sy-repid
    i_callback_user_command = 'USER_COMMAND'
*      i_callback_top_of_page  = 'TOP-OF-PAGE'
    i_grid_title            = w_title
    is_layout               = wa_layout
    it_fieldcat             = it_fieldcat[]
    it_sort                 = it_sort
    i_default               = 'X'
    i_save                  = 'X'
    it_events               = t_event
  TABLES
    t_outtab                = it_final
  EXCEPTIONS
    program_error           = 1
    OTHERS                  = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " SUB_CALL_ALV






former_member187748
Active Contributor
0 Kudos

This message was moderated.

0 Kudos

Hi Shweta

As Thomas has also mentioned a very nice point...What input are you providing in your select options...? Kindly go through the blog he has mentioned. It is recommended in addtion to all said you can use packgae size also to fetch a set of data and in next iteration next set of data.

Nabheet

0 Kudos

Hi Nabheet,

i have seen, the link by Thomas, but still it is giving dump at all.

0 Kudos

Hi Sanjeev,

after doing through again it is giving dump, any sujjestions would be appreciated.

0 Kudos

What is the input criteria you are supplying to in select option table..? How many records..?
Can you please add packgae size also to it.

 

SELECT

* package size 1000
FROM lfa1 inner JOIN lfb1
ON lfa1~lifnr EQ lfb1~lifnr
INTO table it_lfa1_temp .
append lines of it_lfa1_temp to it_lfa1.
refresh it_lfa1_temp.
endselect.

0 Kudos

Hi Shweta ,

I think you can use :

if it_lfb1 is not initial.

     select..... for all entries....

endif.

Reason being.. If your it_lfb1 table is initial , it would fetch all the entries corresponding to the select query rather than filetring. This is one way of optimising if and only if you want to use the for all entries.

Otherwise , I would suggest you to use Inner joins as mentioned by others.

nishant_krishen3
Explorer
0 Kudos

Hi Shweta,

I have seen this issue please use two things.

1. Before select query of  LFA! use

If it_lfb1[]  is not intial.

select query from lfa1.

Endif.

2. in place of into table use INTO CORRESPONDING FIELDS OF.

Regards

Nishant

nishant_krishen3
Explorer
0 Kudos

Hi Shweta,

One more thing i forgot why r you using this code.

Certainly this coding is completely wrong and you should avoid loop within loop of same internal table.

LOOP AT IT_FINAL INTO WA_FINAL.

     READ TABLE IT_J_1IMOVEND  WITH KEY LIFNR = WA_FINAL-LIFNR.

     IF SY-SUBRC EQ 0.

       WA_FINAL-J_1ISERN = IT_J_1IMOVEND-J_1ISERN.

       WA_FINAL-J_1IPANNO = IT_J_1IMOVEND-J_1IPANNO.

       WA_FINAL-J_1ILSTNO = IT_J_1IMOVEND-J_1ILSTNO.

     ENDIF.

     MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING J_1ISERN J_1IPANNO J_1ILSTNO.

     LOOP AT IT_FINAL INTO WA_FINAL.

       READ TABLE IT_LFM1 WITH KEY LIFNR = WA_FINAL-LIFNR.

       IF SY-SUBRC EQ 0.

         WA_FINAL-KALSK = IT_LFM1-KALSK.

       ENDIF.

       MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING KALSK .

     ENDLOOP.

     LOOP AT IT_FINAL INTO WA_FINAL.

       READ TABLE IT_ADR6 INTO WA_ADR6 WITH KEY ADDRNUMBER = WA_FINAL-ADRNR.

       IF SY-SUBRC EQ 0.

         WA_FINAL-SMTP_ADDR = WA_ADR6-SMTP_ADDR.

       ENDIF.

       MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING SMTP_ADDR.

*    CLEAR: wa_adr6.

     ENDLOOP.

   ENDLOOP.

0 Kudos

please see the attached program in this loop to remove nested LOOP concept here.