12-20-2013 5:46 AM
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.
12-20-2013 6:25 AM
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
12-20-2013 5:53 AM
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
12-20-2013 5:58 AM
Hi Nabheet,
i have already analysed through New SAT, and SE30, it is showing that, approx .87% is time consuming through ABAP coding.
12-20-2013 6:11 AM
Hi Shweta..
Please check in SAT which statements are more time consuming in your report. It will provide you detailed view
Nabheet
12-20-2013 5:59 AM
12-20-2013 6:01 AM
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
12-20-2013 6:25 AM
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
12-20-2013 6:42 AM
Hi Shiva,
when i type ST12, it shows Transaction ST12 does not exist
12-20-2013 6:43 AM
Hi Shweta,
Share your code so that we would be able to figure out your issue.
Regards,
Philip.
12-20-2013 6:57 AM
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
***********************
TYPES: BEGIN 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
12-20-2013 7:04 AM
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
12-20-2013 7:14 AM
Hi Shweta,
Regards,
Philip.
12-20-2013 7:43 AM
Hi Davy,
i have seen eliminating for all entries also, but it will not fits into my criteria.
12-20-2013 7:46 AM
hi Shweta
Can you please first create join on lfa1/lfb1 and execute and see what is next issue
12-20-2013 7:48 AM
12-20-2013 9:08 AM
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
12-21-2013 9:15 AM
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
***********************
TYPES: BEGIN 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
12-23-2013 5:06 AM
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 .
12-23-2013 5:13 AM
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.
12-23-2013 5:40 AM
Hi Shweta,
You are getting two sets of data because
you would be getting two sets of data.
Regards,
Philip.
12-23-2013 5:43 AM
Hi Sanjeev,
thanks a lot, for helping me, i got my issue solved.
Thanks once again.
12-20-2013 6:54 AM
Hi Shweta,
Please share your code, if not all at least the SELECT statement where you are getting error.
Thanks.
12-20-2013 7:19 AM
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
12-20-2013 7:38 AM
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
***********************
TYPES: BEGIN 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
12-20-2013 7:48 AM
12-20-2013 7:53 AM
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
12-20-2013 8:55 AM
Hi Nabheet,
i have seen, the link by Thomas, but still it is giving dump at all.
12-20-2013 8:57 AM
Hi Sanjeev,
after doing through again it is giving dump, any sujjestions would be appreciated.
12-20-2013 9:18 AM
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.
12-20-2013 9:20 AM
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.
12-20-2013 9:06 AM
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
12-20-2013 9:30 AM
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.
12-20-2013 9:56 AM
please see the attached program in this loop to remove nested LOOP concept here.