Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

REG FI REPORT

Former Member
0 Likes
877

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
851

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

5 REPLIES 5
Read only

Former Member
0 Likes
851

bseg is cluster table.

so u do not used for all entries.

try different way.

first select bseg.

after do same logic.

Read only

Former Member
0 Likes
852

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

Read only

Former Member
0 Likes
851

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>

Read only

0 Likes
851

hi , plz chk my coding if possible,,,

and send me ur codings, its very urgent ,,, tonight i have to submit

Read only

Former Member
0 Likes
851

Was there some errors? please post it here. Maybe we will catch exception.