2008 May 30 9:16 AM
hi gurus,
i am create a report using alv by bseg and bkpf but the programm gives dump on used this query
SELECT bukrs
belnr
gjahr
buzei
augdt
shkzg
dmbtr
kostl
hkont
matnr
werks
erfmg
INTO TABLE lt_output
FROM bseg
WHERE bukrs IN s_bukrs.
IF sy-subrc = 0.
SORT lt_output BY belnr.
DELETE ADJACENT DUPLICATES FROM lt_output COMPARING ALL FIELDS.
ENDIF.
IF NOT lt_output[] IS INITIAL.
SELECT bukrs
belnr
gjahr
blart
bldat
budat
monat
cpudt
usnam
tcode
bktxt
waers
awtyp
awkey
INTO TABLE lt_bkpf FROM bkpf
FOR ALL ENTRIES IN lt_output
WHERE bukrs = lt_output-bukrs AND
belnr = lt_output-belnr AND
gjahr = lt_output-gjahr AND
blart IN s_blart AND
budat IN s_budat ."AND
blart = 'SA' OR
blart = 'SB' OR
blart = 'AB' OR
blart = 'ZC'.
it gives dump me after using the blart = 'SB' OR
blart = 'AB' OR
blart = 'ZC .
IF I USE blart = 'SA'.
it is work fine but not work if i use both 'SA" or 'SB'.
plz help me its urgent
thanks
hi gurus,
i am create a report using alv by bseg and bkpf but the programm gives dump on used this query
SELECT bukrs
belnr
gjahr
buzei
augdt
shkzg
dmbtr
kostl
hkont
matnr
werks
erfmg
INTO TABLE lt_output
FROM bseg
WHERE bukrs IN s_bukrs.
IF sy-subrc = 0.
SORT lt_output BY belnr.
DELETE ADJACENT DUPLICATES FROM lt_output COMPARING ALL FIELDS.
ENDIF.
IF NOT lt_output[] IS INITIAL.
SELECT bukrs
belnr
gjahr
blart
bldat
budat
monat
cpudt
usnam
tcode
bktxt
waers
awtyp
awkey
INTO TABLE lt_bkpf FROM bkpf
FOR ALL ENTRIES IN lt_output
WHERE bukrs = lt_output-bukrs AND
belnr = lt_output-belnr AND
gjahr = lt_output-gjahr AND
blart IN s_blart AND
budat IN s_budat ."AND
blart = 'SA' OR
blart = 'SB' OR
blart = 'AB' OR
blart = 'ZC'.
it gives dump me after using the blart = 'SB' OR
blart = 'AB' OR
blart = 'ZC .
IF I USE blart = 'SA'.
it is work fine but not work if i use both 'SA" or 'SB'.
plz help me its urgent
thanks
2008 May 30 9:19 AM
Hi,
what the text of the dump?
try to use write you condition like this:
blart IN s_blart AND
blart IN ('SA', 'SB', 'AB', 'ZC') AND
budat IN s_budat
2008 May 30 9:21 AM
Can you provide the Dump Description/Error ID ? Also Is SO_BLART a Range or Select Options ? If Range Can you copy paste the code for filling that up ?
Edited by: Saket Sharma on May 30, 2008 10:22 AM
2008 May 30 9:52 AM
SELECTION-SCREEN BEGIN OF BLOCK bl WITH FRAME TITLE text-011.
SELECT-OPTIONS: s_bukrs FOR bseg-bukrs,
s_blart FOR bkpf-blart,
s_budat FOR bkpf-budat.
SELECTION-SCREEN END OF BLOCK bl.
FORM get_data .
SELECT bukrs
belnr
gjahr
buzei
augdt
shkzg
dmbtr
kostl
hkont
matnr
werks
erfmg
INTO TABLE lt_output
FROM bseg
WHERE bukrs IN s_bukrs.
IF sy-subrc = 0.
SORT lt_output BY belnr.
DELETE ADJACENT DUPLICATES FROM lt_output COMPARING ALL FIELDS.
ENDIF.
IF NOT lt_output[] IS INITIAL.
SELECT bukrs
belnr
gjahr
blart
bldat
budat
monat
cpudt
usnam
tcode
bktxt
waers
awtyp
awkey
INTO TABLE lt_bkpf FROM bkpf
FOR ALL ENTRIES IN lt_output
WHERE bukrs = lt_output-bukrs AND
belnr = lt_output-belnr AND
gjahr = lt_output-gjahr AND
blart IN s_blart AND
budat IN s_budat ."AND
blart = 'SA' OR
blart = 'SB' OR
blart = 'AB' OR
blart = 'ZC'.
ENDIF.
SORT lt_bkpf.
SORT lt_output[].
DELETE ADJACENT DUPLICATES FROM lt_output COMPARING ALL FIELDS.
LOOP AT lt_output.
READ TABLE lt_bkpf WITH KEY bukrs = lt_output-bukrs BINARY SEARCH.
IF sy-subrc = 0.
MOVE: lt_bkpf-gjahr TO lt_output-gjahr,
lt_bkpf-belnr TO lt_output-belnr,
lt_bkpf-blart TO lt_output-blart,
lt_bkpf-bldat TO lt_output-bldat,
lt_bkpf-budat TO lt_output-budat,
lt_bkpf-monat TO lt_output-monat,
lt_bkpf-cpudt TO lt_output-cpudt,
lt_bkpf-usnam TO lt_output-usnam,
lt_bkpf-tcode TO lt_output-tcode,
lt_bkpf-bktxt TO lt_output-bktxt,
lt_bkpf-waers TO lt_output-waers,
lt_bkpf-awtyp TO lt_output-awtyp,
lt_bkpf-awkey TO lt_output-awkey.
MODIFY lt_output.
ELSE.
DELETE lt_output.
ENDIF.
ENDLOOP.
ENDFORM. "get_data
it gives me dump in the area of programm after
IF NOT lt_output[] IS INITIAL.
THANKS
2008 May 30 10:20 AM
Hi Jayant,
here, u can use 2 select statements.
if s_blart is initial.
select......
In this use coditions like blart = 'AB' etc with out blart in s_blart.
else.
one, with condition blart in s_blart in the select statement.
write it in a form ..endform and perform it where required.
this will definitely work.
reward if useful.
Edited by: Srikanth Kadiyala on May 30, 2008 11:27 AM
2008 May 30 9:21 AM
Hi,
Change the code as like below....
SELECT bukrs
belnr
gjahr
blart
bldat
budat
monat
cpudt
usnam
tcode
bktxt
waers
awtyp
awkey
INTO TABLE lt_bkpf FROM bkpf
FOR ALL ENTRIES IN lt_output
WHERE bukrs = lt_output-bukrs AND
belnr = lt_output-belnr AND
gjahr = lt_output-gjahr AND
blart IN s_blart AND
budat IN s_budat AND
( blart = 'SA' OR
blart = 'SB' OR
blart = 'AB' OR
blart = 'ZC' ).
Rgds,
Bujjji
2008 May 30 9:23 AM
Check if UR giving values in the select option for BLART i.e. s_blart..
Else populate values in select option .. no need to again write blart in
where condition.
blart = 'SA' OR
blart = 'SB' OR
blart = 'AB' OR
blart = 'ZC'.
SELECT bukrs
belnr
gjahr
blart
bldat
budat
monat
cpudt
usnam
tcode
bktxt
waers
awtyp
awkey
INTO TABLE lt_bkpf FROM bkpf
FOR ALL ENTRIES IN lt_output
WHERE bukrs = lt_output-bukrs AND
belnr = lt_output-belnr AND
gjahr = lt_output-gjahr AND
blart IN s_blart AND
budat IN s_budat ."AND
2008 May 30 9:24 AM
here u r using two times..blart..in the where condition..delete the statement
blart IN s_blart in the where condition and use
blart = 'SA' OR
blart = 'SB' OR
blart = 'AB' OR
blart = 'ZC'.
regards,
venkat
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |