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

Logic needed pls help

Former Member
0 Likes
735

Hi

I need to create one new ALV report.

I need to extract BUDAT, MONAT, SAKNR, AUFNR, SGTXT, BLART, WAERS fields in one internal table, and display these in to ALV format.

main table is : BKPF & BSEG.

i extracted budat belnr monat blart waers into it_bkpf &

saknr aufnr dmbtr sgtxt belnr into it_bseg

i need to combain both tables into it_detail table.

pls help me .Following is my code.

-


REPORT z_cost_analyzer

TABLES: bkpf, " Accounting Document Header

bseg. " Accounting Document Segment

DATA : BEGIN OF it_bkpf OCCURS 0,

budat LIKE bkpf-budat, "posting date

belnr LIKE bkpf-belnr,

monat LIKE bkpf-monat, "posting period

saknr LIKE bseg-saknr, " G/L Account

aufnr LIKE bseg-aufnr, " Internal order No

sgtxt LIKE BSEG-SGTXT, " JOB (Item Text)

blart LIKE bkpf-blart, " Document Type

dmbtr LIKE bseg-dmbtr, " amount in local currency

waers LIKE bkpf-waers, " currency Key

END OF it_bkpf.

DATA : BEGIN OF it_bseg OCCURS 0,

saknr LIKE bseg-saknr, " G/L Account

aufnr LIKE bseg-aufnr, " Internal order No

dmbtr LIKE bseg-dmbtr, " amount in local currency

sgtxt LIKE BSEG-SGTXT, " JOB (Item Text)

belnr LIKE bkpf-belnr,

END OF it_bseg.

DATA : BEGIN OF it_detail OCCURS 0,

budat LIKE bkpf-budat, "posting date

monat LIKE bkpf-monat, "posting period

saknr LIKE bseg-saknr, " G/L Account

aufnr LIKE bseg-aufnr, " Internal order No

sgtxt LIKE BSEG-SGTXT, " JOB (Item Text)

blart LIKE bkpf-blart, " Document Type

dmbtr LIKE bseg-dmbtr, " amount in local currency

waers LIKE bkpf-waers, " currency Key

END OF it_detail.

SELECTION-SCREEN BEGIN OF BLOCK sel1 WITH FRAME TITLE text-001.

PARAMETERS: p_bukrs LIKE bkpf-bukrs OBLIGATORY DEFAULT '027',

p_werks LIKE bseg-werks OBLIGATORY DEFAULT '2703'.

SELECT-OPTIONS: s_saknr FOR bseg-saknr DEFAULT '461100',

s_aufnr FOR bseg-aufnr,

s_blart FOR bkpf-blart,

s_budat FOR bkpf-budat,

s_waers FOR bkpf-waers.

SELECTION-SCREEN END OF BLOCK sel1.

SELECTION-SCREEN BEGIN OF BLOCK sel2 WITH FRAME TITLE text-002.

PARAMETERS: p_detail RADIOBUTTON GROUP rad1 DEFAULT 'X',

p_sum RADIOBUTTON GROUP rad1.

SELECTION-SCREEN END OF BLOCK sel2.

START-OF-SELECTION.

*get data

START-OF-SELECTION.

IF p_detail = 'X'.

PERFORM get_data.

ELSE.

ENDIF.

FORM get_data.

SELECT budat belnr monat blart waers

INTO TABLE it_bkpf

FROM bkpf

WHERE bukrs = '027'

AND blart IN s_blart

AND budat IN s_budat

AND waers IN s_waers.

SELECT saknr aufnr dmbtr sgtxt belnr INTO TABLE it_bseg

FROM bseg

WHERE bukrs = '027'.

LOOP AT it_bkpf.

READ TABLE it_bseg WITH KEY

belnr = it_bkpf-belnr.

IF sy-subrc = 0.

ENDIF.

ENDLOOP.

ENDFORM. " get_data

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
693

SELECT budat belnr monat blart waers

INTO TABLE it_details

( " not it_bkpf, not use of structer bkpf, directly attech your final iternal table, after read the final itab then append bseg fileds to that ")

FROM bkpf

WHERE bukrs = '027'

AND blart IN s_blart

AND budat IN s_budat

AND waers IN s_waers.

SELECT saknr aufnr dmbtr sgtxt belnr INTO TABLE it_bseg

FROM bseg for all entries in it_bkpf

WHERE bukrs = it_bkpf-bukrs.

if not it_details initial.

loop at it_detail.

read table it_bkpf with key bukrs = it_detail-bukrs.

if sy-subrc eq 0.

lw_detail -saknr = lw_bseg-saknr.

lw_detail-sgtxt = lw_bseg-sgtxt.

modify it_detail.

endif.

endloop.

endif.

5 REPLIES 5
Read only

Former Member
0 Likes
694

SELECT budat belnr monat blart waers

INTO TABLE it_details

( " not it_bkpf, not use of structer bkpf, directly attech your final iternal table, after read the final itab then append bseg fileds to that ")

FROM bkpf

WHERE bukrs = '027'

AND blart IN s_blart

AND budat IN s_budat

AND waers IN s_waers.

SELECT saknr aufnr dmbtr sgtxt belnr INTO TABLE it_bseg

FROM bseg for all entries in it_bkpf

WHERE bukrs = it_bkpf-bukrs.

if not it_details initial.

loop at it_detail.

read table it_bkpf with key bukrs = it_detail-bukrs.

if sy-subrc eq 0.

lw_detail -saknr = lw_bseg-saknr.

lw_detail-sgtxt = lw_bseg-sgtxt.

modify it_detail.

endif.

endloop.

endif.

Read only

prasanth_kasturi
Active Contributor
0 Likes
693

hiii try to use join condition its more simpler..

select bkpfbudat bkpfbelnr bkpfmonat bkpfblart bkpfwaers bsegsaknr bsegaufnr bsegdmbtr bseg~sgtxt

from bkpf

inner join bseg

on bkpfbelnr = bsegbelnr

and bkpfbukrs = bsegbukrs

and bkpfgjahr = bseggjahr

into table it_detail.

use where condition if you want only a few fields.

think this solves the problem

reward if helpful

regards

prasanth.

Read only

0 Likes
693

i tried the following statement. i got error message

"For pooled tables, cluster tables and projection views, JOIN is not allowed: "BSEG". "

SELECT bkpf~budat

bkpf~belnr

bkpf~monat

bseg~saknr

bseg~aufnr

bseg~sgtxt

bkpf~blart

bkpf~waers

  • bseg~dmbtr

FROM bkpf

INNER JOIN bseg

ON bkpfbelnr = bsegbelnr

AND bkpfbukrs = bsegbukrs

AND bkpfgjahr = bseggjahr

where bukrs = '027'.

INTO TABLE it_detail.

Read only

Former Member
0 Likes
693

Try this,

LOOP AT it_bkpf.

READ TABLE it_bseg WITH KEY

belnr = it_bkpf-belnr.

IF sy-subrc = 0.

MOVE-CORRESPONDING it_bkpf TO it_detail.

MOVE-CORRESPONDING it_bseg TO it_detail.

APPEND it_detail.

ENDIF.

ENDLOOP.

Read only

Former Member
0 Likes
693

SELECT budat belnr monat blart waers

INTO TABLE it_bkpf

FROM bkpf

WHERE bukrs = '027'

AND blart IN s_blart

AND budat IN s_budat

AND waers IN s_waers.

IF not it_bkpf [] is intial

SELECT saknr aufnr dmbtr sgtxt belnr INTO TABLE it_bseg

FROM bseg

for all entries in it_bkpf

WHERE bukrs = it_bkpf-bukrs

and belnr = it_bkpf-belnr.

LOOP AT it_bkpf.

READ TABLE it_bseg WITH KEY

belnr = it_bkpf-belnr.

IF sy-subrc = 0.

it_detail -saknr = it_bseg-saknr.

lt_detail-sgtxt = lt_bseg-sgtxt........

ENDIF.

it_detail -budat =it_bkpf-budat

it_detail -budat =it_bkpf-belnr, monat blart waers

modify it_detail.

ENDLOOP.

ENDFORM. " get_data