2007 Aug 14 7:25 AM
REPORT zfi_tds_new MESSAGE-ID 8i NO STANDARD PAGE HEADING
LINE-SIZE 255.
TABLES: lfa1,bkpf ,bsak.
TYPES: BEGIN OF ty_move,
lifnr TYPE lfa1-lifnr,
panno TYPE j_1imovend-j_1ipanno,
END OF ty_move.
DATA: it_move TYPE TABLE OF ty_move ,
wa_move TYPE ty_move.
TYPES: BEGIN OF ty_bsak,
gjahr TYPE bsak-gjahr,
belnr TYPE bsak-belnr,
END OF ty_bsak.
DATA: it_bsak TYPE TABLE OF ty_bsak,
wa_bsak TYPE ty_bsak.
TYPES: BEGIN OF ty_bseg,
belnr TYPE bseg-belnr,
gjahr TYPE bseg-gjahr,
wrbtr TYPE bseg-wrbtr,
qsskz TYPE bseg-qsskz,
END OF ty_bseg.
DATA: it_bseg TYPE TABLE OF ty_bseg,
wa_bseg TYPE ty_bseg.
TYPES: BEGIN OF ty_fit,
lifnr TYPE bsak-lifnr,
gjahr TYPE bsak-gjahr,
belnr TYPE bsak-belnr,
bldat TYPE bsak-bldat,
xblnr TYPE bsak-xblnr,
dmbtr TYPE bsak-dmbtr,
END OF ty_fit.
DATA: it_fit TYPE TABLE OF ty_fit ,
wa_fit TYPE ty_fit.
TYPES: BEGIN OF ty_out,
lifnr TYPE lfa1-lifnr,
panno TYPE j_1imovend-j_1ipanno,
bldat TYPE bsak-bldat,
xblnr TYPE bsak-xblnr,
dmbtr TYPE bsak-dmbtr,
tds LIKE bseg-wrbtr,
sur LIKE bseg-wrbtr,
ecess LIKE bseg-wrbtr,
hcess LIKE bseg-wrbtr,
net LIKE bseg-wrbtr,
END OF ty_out.
DATA: it_out TYPE TABLE OF ty_out,
wa_out TYPE ty_out.
****************SELECTION SCREEN***********************
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: zvendor FOR lfa1-lifnr OBLIGATORY,
zdate FOR bsak-bldat.
PARAMETERS: zbukrs LIKE bseg-bukrs .
SELECTION-SCREEN END OF BLOCK 1.
DATA: zdate1 LIKE bsak-bldat,
l_vendor LIKE lfa1-lifnr,
l_bukrs LIKE bseg-bukrs.
***********************************************************
****************SELECTION SCREEN VALIDATION**************
***********************************************************
AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON zvendor.
IF NOT zvendor[] IS INITIAL.
SELECT SINGLE * FROM lfa1 WHERE lifnr IN zvendor.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'enter valid vendor'.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON zdate.
IF NOT zdate[] IS INITIAL.
SELECT bldat FROM bsak INTO zdate1 WHERE bldat IN zdate.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'enter valid date'.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON zbukrs.
IF NOT zbukrs IS INITIAL.
SELECT SINGLE bukrs FROM bseg INTO l_bukrs WHERE bukrs = zbukrs.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'enter valid company code'.
ENDIF.
ENDIF.
************************************
START-OF-SELECTION.
SELECT gjahr belnr FROM bsak INTO TABLE it_bsak WHERE
lifnr IN zvendor
AND bldat IN zdate
AND bukrs = zbukrs.
IF NOT it_bsak[] IS INITIAL.
SELECT belnr gjahr wrbtr qsskz FROM bseg INTO TABLE it_bseg
FOR ALL ENTRIES IN it_bsak
WHERE belnr = it_bsak-belnr
AND gjahr = it_bsak-gjahr
AND qsskz <> ''
AND bschl = '50'.
SORT it_bseg BY belnr gjahr.
DELETE ADJACENT DUPLICATES FROM it_bseg COMPARING belnr gjahr.
IF NOT it_bseg[] IS INITIAL.
SELECT lifnr gjahr belnr bldat xblnr dmbtr FROM bsak INTO TABLE
it_fit FOR ALL ENTRIES IN it_bseg WHERE belnr = it_bseg-belnr .
ENDIF.
ENDIF.
LOOP AT it_bseg INTO wa_bseg.
IF wa_bseg-qsskz = 'A5'.
MOVE wa_bseg-wrbtr TO wa_out-tds.
ENDIF.
IF wa_bseg-qsskz = 'W1' OR wa_bseg-qsskz = 'W5' OR
wa_bseg-qsskz = 'X1' OR wa_bseg-qsskz = 'Y1' OR
wa_bseg-qsskz = 'Z1' OR wa_bseg-qsskz ='W2' OR
wa_bseg-qsskz = 'W6' OR wa_bseg-qsskz ='X2' OR
wa_bseg-qsskz = 'Y2' OR wa_bseg-qsskz ='Z2' OR
wa_bseg-qsskz = 'W3' OR wa_bseg-qsskz ='W7' OR
wa_bseg-qsskz = 'X3' OR wa_bseg-qsskz ='Y3' OR
wa_bseg-qsskz = 'Z3' OR wa_bseg-qsskz ='W4' OR
wa_bseg-qsskz = 'W8' OR wa_bseg-qsskz ='X4' OR
wa_bseg-qsskz = 'Y4' OR wa_bseg-qsskz ='Z4'.
MOVE wa_bseg-wrbtr TO wa_out-ecess.
ENDIF.
IF wa_bseg-qsskz = '1A' OR wa_bseg-qsskz = '1E' OR
WA_BSEG-QSSKZ = '1J' or WA_BSEG-QSSKZ = '1N' OR
wa_bseg-qsskz = '1S' OR wa_bseg-qsskz = '1B' OR
WA_BSEG-QSSKZ = '1F' or WA_BSEG-QSSKZ = '1K' OR
wa_bseg-qsskz = '1P' OR wa_bseg-qsskz = '1U' OR
WA_BSEG-QSSKZ = '1C' or WA_BSEG-QSSKZ = '1G' OR
wa_bseg-qsskz = '1L' OR wa_bseg-qsskz = '1Q' OR
WA_BSEG-QSSKZ = '1W' or WA_BSEG-QSSKZ = '1D' OR
wa_bseg-qsskz = '1H' OR wa_bseg-qsskz = '1M' OR
WA_BSEG-QSSKZ = '1R' or WA_BSEG-QSSKZ = '1Y'.
MOVE wa_bseg-wrbtr TO wa_out-hcess.
ENDIF.
APPEND wa_out TO it_out.
READ TABLE it_fit INTO wa_fit WITH KEY belnr = wa_bseg-belnr.
MOVE wa_fit-lifnr TO wa_out-lifnr.
MOVE wa_fit-belnr TO wa_out-xblnr.
MOVE wa_fit-bldat TO wa_out-bldat.
MOVE wa_fit-xblnr TO wa_out-xblnr.
APPEND wa_out TO it_out.
ENDLOOP.
LOOP AT it_out INTO wa_out.
SELECT lifnr j_1ipanno FROM j_1imovend INTO TABLE it_move WHERE
lifnr IN zvendor.
READ TABLE it_move INTO wa_move WITH KEY lifnr = wa_out-lifnr.
AT NEW lifnr.
WRITE:/3 wa_out-lifnr,19 wa_move-panno .
ENDAT.
WRITE: /35 wa_out-bldat,45 wa_out-xblnr,
55 wa_out-dmbtr,63 wa_out-tds,68 wa_out-ecess,73 wa_out-hcess.
ENDLOOP.
this report is taking long time to fetch data from bseg table,,,
1.how to avoid that?
2.is my coding is correct in loop statements,,,,?
plz send me the results
2007 Aug 14 7:28 AM
Hi
Don't use the BSEG table for fetching the data related to Vendor
Use the <b>BSIK and BSAK</b> tables for the data fetching, they also have same data related to vendor which is stored in BSEG.
better use them and see the performance
<b>Reward points for useful Answers</b>
Regards
Anji
REPORT zfi_tds_new MESSAGE-ID 8i NO STANDARD PAGE HEADING
LINE-SIZE 255.
TABLES: lfa1,bkpf ,bsak.
TYPES: BEGIN OF ty_move,
lifnr TYPE lfa1-lifnr,
panno TYPE j_1imovend-j_1ipanno,
END OF ty_move.
DATA: it_move TYPE TABLE OF ty_move ,
wa_move TYPE ty_move.
TYPES: BEGIN OF ty_bsak,
gjahr TYPE bsak-gjahr,
belnr TYPE bsak-belnr,
END OF ty_bsak.
DATA: it_bsak TYPE TABLE OF ty_bsak,
wa_bsak TYPE ty_bsak.
TYPES: BEGIN OF ty_bseg,
belnr TYPE bseg-belnr,
gjahr TYPE bseg-gjahr,
wrbtr TYPE bseg-wrbtr,
qsskz TYPE bseg-qsskz,
END OF ty_bseg.
DATA: it_bseg TYPE TABLE OF ty_bseg,
wa_bseg TYPE ty_bseg.
TYPES: BEGIN OF ty_fit,
lifnr TYPE bsak-lifnr,
gjahr TYPE bsak-gjahr,
belnr TYPE bsak-belnr,
bldat TYPE bsak-bldat,
xblnr TYPE bsak-xblnr,
dmbtr TYPE bsak-dmbtr,
END OF ty_fit.
DATA: it_fit TYPE TABLE OF ty_fit ,
wa_fit TYPE ty_fit.
TYPES: BEGIN OF ty_out,
lifnr TYPE lfa1-lifnr,
panno TYPE j_1imovend-j_1ipanno,
bldat TYPE bsak-bldat,
xblnr TYPE bsak-xblnr,
dmbtr TYPE bsak-dmbtr,
tds LIKE bseg-wrbtr,
sur LIKE bseg-wrbtr,
ecess LIKE bseg-wrbtr,
hcess LIKE bseg-wrbtr,
net LIKE bseg-wrbtr,
END OF ty_out.
DATA: it_out TYPE TABLE OF ty_out,
wa_out TYPE ty_out.
****************SELECTION SCREEN***********************
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: zvendor FOR lfa1-lifnr OBLIGATORY,
zdate FOR bsak-bldat.
PARAMETERS: zbukrs LIKE bseg-bukrs .
SELECTION-SCREEN END OF BLOCK 1.
DATA: zdate1 LIKE bsak-bldat,
l_vendor LIKE lfa1-lifnr,
l_bukrs LIKE bseg-bukrs.
***********************************************************
****************SELECTION SCREEN VALIDATION**************
***********************************************************
AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON zvendor.
IF NOT zvendor[] IS INITIAL.
SELECT SINGLE * FROM lfa1 WHERE lifnr IN zvendor.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'enter valid vendor'.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON zdate.
IF NOT zdate[] IS INITIAL.
SELECT bldat FROM bsak INTO zdate1 WHERE bldat IN zdate.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'enter valid date'.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON zbukrs.
IF NOT zbukrs IS INITIAL.
SELECT SINGLE bukrs FROM bseg INTO l_bukrs WHERE bukrs = zbukrs.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'enter valid company code'.
ENDIF.
ENDIF.
************************************
START-OF-SELECTION.
SELECT gjahr belnr FROM bsak INTO TABLE it_bsak WHERE
lifnr IN zvendor
AND bldat IN zdate
AND bukrs = zbukrs.
IF NOT it_bsak[] IS INITIAL.
SELECT belnr gjahr wrbtr qsskz FROM bseg INTO TABLE it_bseg
FOR ALL ENTRIES IN it_bsak
WHERE belnr = it_bsak-belnr
AND gjahr = it_bsak-gjahr
AND qsskz <> ''
AND bschl = '50'.
SORT it_bseg BY belnr gjahr.
DELETE ADJACENT DUPLICATES FROM it_bseg COMPARING belnr gjahr.
IF NOT it_bseg[] IS INITIAL.
SELECT lifnr gjahr belnr bldat xblnr dmbtr FROM bsak INTO TABLE
it_fit FOR ALL ENTRIES IN it_bseg WHERE belnr = it_bseg-belnr .
ENDIF.
ENDIF.
LOOP AT it_bseg INTO wa_bseg.
IF wa_bseg-qsskz = 'A5'.
MOVE wa_bseg-wrbtr TO wa_out-tds.
ENDIF.
IF wa_bseg-qsskz = 'W1' OR wa_bseg-qsskz = 'W5' OR
wa_bseg-qsskz = 'X1' OR wa_bseg-qsskz = 'Y1' OR
wa_bseg-qsskz = 'Z1' OR wa_bseg-qsskz ='W2' OR
wa_bseg-qsskz = 'W6' OR wa_bseg-qsskz ='X2' OR
wa_bseg-qsskz = 'Y2' OR wa_bseg-qsskz ='Z2' OR
wa_bseg-qsskz = 'W3' OR wa_bseg-qsskz ='W7' OR
wa_bseg-qsskz = 'X3' OR wa_bseg-qsskz ='Y3' OR
wa_bseg-qsskz = 'Z3' OR wa_bseg-qsskz ='W4' OR
wa_bseg-qsskz = 'W8' OR wa_bseg-qsskz ='X4' OR
wa_bseg-qsskz = 'Y4' OR wa_bseg-qsskz ='Z4'.
MOVE wa_bseg-wrbtr TO wa_out-ecess.
ENDIF.
IF wa_bseg-qsskz = '1A' OR wa_bseg-qsskz = '1E' OR
WA_BSEG-QSSKZ = '1J' or WA_BSEG-QSSKZ = '1N' OR
wa_bseg-qsskz = '1S' OR wa_bseg-qsskz = '1B' OR
WA_BSEG-QSSKZ = '1F' or WA_BSEG-QSSKZ = '1K' OR
wa_bseg-qsskz = '1P' OR wa_bseg-qsskz = '1U' OR
WA_BSEG-QSSKZ = '1C' or WA_BSEG-QSSKZ = '1G' OR
wa_bseg-qsskz = '1L' OR wa_bseg-qsskz = '1Q' OR
WA_BSEG-QSSKZ = '1W' or WA_BSEG-QSSKZ = '1D' OR
wa_bseg-qsskz = '1H' OR wa_bseg-qsskz = '1M' OR
WA_BSEG-QSSKZ = '1R' or WA_BSEG-QSSKZ = '1Y'.
MOVE wa_bseg-wrbtr TO wa_out-hcess.
ENDIF.
APPEND wa_out TO it_out.
READ TABLE it_fit INTO wa_fit WITH KEY belnr = wa_bseg-belnr.
MOVE wa_fit-lifnr TO wa_out-lifnr.
MOVE wa_fit-belnr TO wa_out-xblnr.
MOVE wa_fit-bldat TO wa_out-bldat.
MOVE wa_fit-xblnr TO wa_out-xblnr.
APPEND wa_out TO it_out.
ENDLOOP.
LOOP AT it_out INTO wa_out.
SELECT lifnr j_1ipanno FROM j_1imovend INTO TABLE it_move WHERE
lifnr IN zvendor.
READ TABLE it_move INTO wa_move WITH KEY lifnr = wa_out-lifnr.
AT NEW lifnr.
WRITE:/3 wa_out-lifnr,19 wa_move-panno .
ENDAT.
WRITE: /35 wa_out-bldat,45 wa_out-xblnr,
55 wa_out-dmbtr,63 wa_out-tds,68 wa_out-ecess,73 wa_out-hcess.
ENDLOOP.
this report is taking long time to fetch data from bseg table,,,
1.how to avoid that?
2.is my coding is correct in loop statements,,,,?
plz send me the results
2007 Aug 14 7:28 AM
bseg is cluster table.
so u do not used for all entries.
try different way.
first select bseg.
after do same logic.
2007 Aug 14 7:28 AM
Hi
Don't use the BSEG table for fetching the data related to Vendor
Use the <b>BSIK and BSAK</b> tables for the data fetching, they also have same data related to vendor which is stored in BSEG.
better use them and see the performance
<b>Reward points for useful Answers</b>
Regards
Anji
2007 Aug 14 7:31 AM
Hi,
BSEG is the table having huge amount of data, hence takes time to fetch data.
Best solution is to use its SECONDARY INDEX TABLE.
try using <b>BSIK</b> table or BSAK or if you get any other secondary index table.
I have done the same when i came across the similar problem.
<b>Reward points if answer useful</b>
2007 Aug 14 7:43 AM
hi , plz chk my coding if possible,,,
and send me ur codings, its very urgent ,,, tonight i have to submit
2007 Aug 14 7:37 AM
Was there some errors? please post it here. Maybe we will catch exception.
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |