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

database tables linking...

Former Member
0 Likes
780

hello everyone,

can anyone tell me how to link the tables

BKPF, BSEG , KNA1, VBRK.

I have to get data linking all these tables with each other.

starting from BKPF.

<REMOVED BY MODERATOR>

Edited by: Alvaro Tejada Galindo on Mar 10, 2008 4:47 PM

5 REPLIES 5
Read only

Former Member
0 Likes
745
Read only

Former Member
0 Likes
745

hi,

Here is the sample code:

REPORT ZSALES_REGISTER

LINE-SIZE 351

NO STANDARD PAGE HEADING

LINE-COUNT 65

MESSAGE-ID 00.

************************************************************************

TABLES *

************************************************************************

TABLES: VBRK, "Billing Document: Header Data

VBRP, "Billing Document: Item Data

BKPF, "Accounting document header

t685t, "Conditions: Types: Texts

KNA1,

KONV. "Conditions (Procedure Data)

************************************************************************

INTERNAL TABLES AND STRUCTURES *

************************************************************************

*internal table for item data

DATA: BEGIN OF IT_ITEM OCCURS 0,

BUDAT LIKE BKPF-BUDAT,

BELNR LIKE BKPF-BELNR,

POSNR LIKE VBRP-POSNR,

VBELN LIKE VBRK-VBELN,

WERKS LIKE VBRP-WERKS,

KUNAG LIKE VBRK-KUNAG,

KNUMV LIKE VBRK-KNUMV,

NAME1 LIKE KNA1-NAME1,

BASE_PRICE LIKE KONV-KWERT,

BAS_EXC_DUTY_RATE LIKE KONV-KBETR,

BAS_EXC_DUTY_AMT LIKE KONV-KWERT,

ECESS_RATE LIKE KONV-KBETR,

ECESS_AMT LIKE KONV-KWERT,

LST_VAT_RATE LIKE KONV-KBETR,

LST_VAT_AMT LIKE KONV-KWERT,

SUBCHARGE_RATE LIKE KONV-KBETR,

SUBCHARGE_AMT LIKE KONV-KWERT,

CST_RATE LIKE KONV-KBETR,

CST_AMT LIKE KONV-KWERT,

OTHERS LIKE KONV-KWERT,

V_VAL LIKE KONV-KWERT,

TOTAL LIKE KONV-KWERT,

END OF IT_ITEM.

*internal table to fetch customer name

DATA: BEGIN OF IT_KNA1 OCCURS 0,

NAME1 LIKE KNA1-NAME1,

END OF IT_KNA1.

*internal table for price data

DATA: BEGIN OF IT_KONV OCCURS 0,

KNUMV LIKE KONV-KNUMV,

KPOSN LIKE KONV-KPOSN,

KSCHL LIKE KONV-KSCHL,

KBETR LIKE KONV-KBETR,

KWERT LIKE KONV-KWERT,

END OF IT_KONV.

*Work area fro item internal table

*data wa_item like it_item.

********************************************************************

*VARIABLES

********************************************************************

DATA: V_VBELN LIKE VBUK-VBELN,

V_VAL LIKE KONV-KWERT,

TOTAL LIKE KONV-KWERT,

V_PR00 LIKE KONV-KWERT,

V_JEX2 LIKE KONV-KWERT,

V_JCES LIKE KONV-KWERT,

V_JIN2_JIN6 LIKE KONV-KWERT,

V_ZLSR LIKE KONV-KWERT,

V_JIN1 LIKE KONV-KWERT,

V_OTHERS LIKE KONV-KWERT,

V_KSCHL LIKE KONV-KSCHL,

V_TEMPVAL(15),

V_BASIC_PRICE LIKE KONV-KBETR,

V_REPID LIKE SY-REPID. "For report id

********************************************************************

*SELECTION SCREEN DEFINITIONS

********************************************************************

SELECTION-SCREEN BEGIN OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME TITLE TEXT-000.

PARAMETERS: P_COMCOD LIKE BKPF-BUKRS." OBLIGATORY.

SELECT-OPTIONS: S_DATE FOR BKPF-BUDAT." OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B .

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: P_EX1 RADIOBUTTON GROUP RAD1.

SELECTION-SCREEN COMMENT 5(50) TEXT-EX1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: P_EX2 RADIOBUTTON GROUP RAD1 DEFAULT 'X'.

SELECTION-SCREEN COMMENT 5(50) TEXT-EX2.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN END OF BLOCK B2 .

SELECTION-SCREEN END OF BLOCK B1.

********************************************************************

INITIALIZATION

********************************************************************

INITIALIZATION.

V_REPID = SY-REPID.

p_ex1 = 'X'.

IF P_EX1 = 'X'.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-002.

PARAMETERS: P_PLANT LIKE VBRP-WERKS." OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B3 .

ENDIF.

********************************************************************

*START-OF-SELECTION

********************************************************************

START-OF-SELECTION.

PERFORM GET_DATA.

*************************************************************

*END-OF-SELECTION

*************************************************************

IF NOT IT_ITEM[] IS INITIAL.

PERFORM DISPLAY_DATA.

ELSEif p_plant is initial.

if p_ex1 = 'X'.

MESSAGE S011(ZMSG).

else.

MESSAGE S012(ZMSG).

endif.

else.

MESSAGE S012(ZMSG).

ENDIF.

&----


*& Form GET_DATA

&----


text

-


form for get data

FORM GET_DATA.

*Getting BKPF-VBRK-VBRP details based on selection values

IF P_EX1 = 'X' .

SELECT ABUKRS ABUDAT ABLART ABELNR AAWTYP AAWKEY

BPOSNR BWERKS B~VBELN

CKUNAG CVBTYP C~KNUMV

INTO CORRESPONDING FIELDS OF TABLE IT_ITEM

FROM BKPF AS A

JOIN VBRP AS B

ON AAWKEY = BVBELN

JOIN VBRK AS C

ON BVBELN = CVBELN

WHERE A~BUKRS = P_COMCOD AND

A~BUDAT IN S_DATE AND

A~AWTYP = 'VBRK' AND

( A~BLART = 'DR' OR

A~BLART = 'DG' OR

A~BLART = 'DA' ) AND

B~WERKS = P_PLANT.

ELSEIF P_EX2 = 'X'.

SELECT ABUKRS ABUDAT ABLART ABELNR AAWTYP AAWKEY

BPOSNR BWERKS B~VBELN

CKUNAG CVBTYP C~KNUMV

INTO CORRESPONDING FIELDS OF TABLE IT_ITEM

FROM BKPF AS A

JOIN VBRP AS B

ON AAWKEY = BVBELN

JOIN VBRK AS C

ON BVBELN = CVBELN

WHERE A~BUKRS = P_COMCOD AND

A~BUDAT IN S_DATE AND

A~AWTYP = 'VBRK' AND

( A~BLART = 'DR' OR

A~BLART = 'DG' OR

A~BLART = 'DA' ).

ENDIF.

*Getting KNA1 details based on selection values

LOOP AT IT_ITEM.

SELECT SINGLE NAME1 FROM KNA1 INTO IT_KNA1

WHERE KUNNR = IT_ITEM-KUNAG.

APPEND IT_KNA1.

MOVE IT_KNA1-NAME1 TO IT_ITEM-NAME1.

MODIFY IT_ITEM.

CLEAR IT_ITEM.

CLEAR IT_KNA1.

ENDLOOP.

if not it_item[] is initial.

*Getting pricing for the seleted values

SELECT KNUMV KPOSN KSCHL KBETR KWERT

FROM KONV

INTO TABLE IT_KONV

FOR ALL ENTRIES IN IT_ITEM

WHERE KNUMV = IT_ITEM-KNUMV

AND KPOSN = IT_ITEM-POSNR.

LOOP AT IT_KONV.

IT_KONV-KBETR = IT_KONV-KBETR / 10.

MODIFY IT_KONV.

CLEAR IT_KONV.

ENDLOOP.

*

*Filling item table for rest

PERFORM GET_VALUE.

ENDFORM.

-


FORM DISPLAY_DATA *

-


FORM TO DISPLAY OUTPUT *

-


TOP-OF-PAGE.

WRITE: / 'The Sales Register from ', S_DATE-LOW, 'to', S_DATE-HIGH,

P_COMCOD, P_PLANT.

SKIP 2.

-


FORM DISPLAY_DATA *

-


........ *

-


FORM DISPLAY_DATA.

SORT IT_ITEM BY WERKS VBELN.

IF P_EX1 = 'X'.

WRITE: / 'posting date', 16 'billing doc', 30 'sold to party',

55 'Name', 87 'base price',

104 'basic exc rate', 122 'basic exc amt', 140 'ecess rate',

161 'ecess amt', 175 'lst/vat rate', 192 'lst/vat amt',

209 'surcharge rate', 227 'surcharge amt', 246 'cst rate',

266 'cst amt', 284 'OTHERS', 301 'sub total'.

WRITE: SY-ULINE.

LOOP AT IT_ITEM.

WRITE: / IT_ITEM-BUDAT, 15 SY-VLINE, 16 IT_ITEM-VBELN,

30 SY-VLINE, 31 IT_ITEM-KUNAG, 45 SY-VLINE,

46 IT_ITEM-NAME1, 80 SY-VLINE, 81 IT_ITEM-BASE_PRICE, 98 SY-VLINE,

99 IT_ITEM-BAS_EXC_DUTY_RATE, 115 SY-VLINE,

116 IT_ITEM-BAS_EXC_DUTY_AMT, 133 SY-VLINE,

134 IT_ITEM-ECESS_RATE, 150 SY-VLINE, 151 IT_ITEM-ECESS_AMT,

168 SY-VLINE, 169 IT_ITEM-LST_VAT_RATE, 185 SY-VLINE,

186 IT_ITEM-LST_VAT_AMT, 203 SY-VLINE,

204 IT_ITEM-SUBCHARGE_RATE, 221 SY-VLINE,

222 IT_ITEM-SUBCHARGE_AMT, 239 SY-VLINE, 240 IT_ITEM-CST_RATE,

256 SY-VLINE, 257 IT_ITEM-CST_AMT, 274 SY-VLINE,

275 IT_ITEM-OTHERS, 292 SY-VLINE,

293 IT_ITEM-V_VAL, 317 SY-VLINE, 318 IT_ITEM-WERKS,

325 SY-VLINE, 326 IT_ITEM-BELNR.

*write: sy-uline.

ENDLOOP.

WRITE: SY-ULINE.

SKIP 1.

WRITE: 81 V_PR00, 116 V_JEX2, 151 V_JCES, 186 V_JIN2_JIN6,

221 V_ZLSR, 256 V_JIN1, 273 V_OTHERS, 291 IT_ITEM-TOTAL.

ELSEIF P_EX2 = 'X'.

SORT IT_ITEM BY WERKS VBELN.

WRITE: / 'plant', 16 'billing doc', 35 'base price',

55 'basic exc rate', 75 'basic exc amt', 95 'ecess rate',

115 'ecess amt', 135 'lst/vat rate', 155 'lst/vat amt',

175 'surcharge rate', 195 'surcharge amt', 215 'cst rate',

235 'cst amt', 255 'OTHERS', 275 'sub total'.

WRITE: SY-ULINE.

LOOP AT IT_ITEM.

WRITE: / IT_ITEM-WERKS, 15 SY-VLINE, 16 IT_ITEM-VBELN,

35 SY-VLINE, 36 IT_ITEM-BASE_PRICE, 55 SY-VLINE,

56 IT_ITEM-BAS_EXC_DUTY_RATE, 75 SY-VLINE,

76 IT_ITEM-BAS_EXC_DUTY_AMT, 95 SY-VLINE,

96 IT_ITEM-ECESS_RATE, 115 SY-VLINE, 116 IT_ITEM-ECESS_AMT,

135 SY-VLINE, 136 IT_ITEM-LST_VAT_RATE, 155 SY-VLINE,

156 IT_ITEM-LST_VAT_AMT, 175 SY-VLINE,

176 IT_ITEM-SUBCHARGE_RATE, 195 SY-VLINE,

196 IT_ITEM-SUBCHARGE_AMT, 215 SY-VLINE, 216 IT_ITEM-CST_RATE,

235 SY-VLINE, 236 IT_ITEM-CST_AMT, 255 SY-VLINE,

256 IT_ITEM-OTHERS, 275 SY-VLINE,

276 IT_ITEM-V_VAL, 295 SY-VLINE.

*write: sy-uline.

ENDLOOP.

WRITE: SY-ULINE.

SKIP 1.

WRITE: 36 V_PR00, 76 V_JEX2, 116 V_JCES, 156 V_JIN2_JIN6,

196 V_ZLSR, 236 V_JIN1, 256 V_OTHERS, 276 IT_ITEM-TOTAL.

ENDIF.

ENDFORM. " DISPLAY_DATA

-


FORM GET_VALUE *

-


TO FETCH THE PRICE FROM IT_KNA1 DEPENDING UPON CONDITION TYPE *

-


FORM GET_VALUE.

*Getting BASE VALUE

*clear total.

LOOP AT IT_ITEM.

PERFORM GET_PRICE.

ENDLOOP.

ENDFORM.

-


FORM GET_PRICE *

-


........ *

-


FORM GET_PRICE.

CLEAR V_VAL.

LOOP AT IT_KONV WHERE KNUMV = IT_ITEM-KNUMV.

" and kposn = it_item-posnr.

V_KSCHL = IT_KONV-KSCHL.

CASE V_KSCHL.

*For basic value

WHEN 'PR00'.

IT_ITEM-BASE_PRICE = IT_ITEM-BASE_PRICE + IT_KONV-KWERT.

V_VAL = V_VAL + IT_KONV-KWERT.

V_PR00 = V_PR00 + IT_KONV-KWERT.

WHEN 'JEX2'.

MOVE IT_KONV-KBETR TO IT_ITEM-BAS_EXC_DUTY_RATE.

IT_ITEM-BAS_EXC_DUTY_AMT = IT_ITEM-BAS_EXC_DUTY_AMT + IT_KONV-KWERT.

V_VAL = V_VAL + IT_KONV-KWERT.

V_JEX2 = V_JEX2 + IT_KONV-KWERT.

WHEN 'JCES'.

IT_ITEM-ECESS_AMT = IT_ITEM-ECESS_AMT + IT_KONV-KWERT.

V_VAL = V_VAL + IT_KONV-KWERT.

V_JCES = V_JCES + IT_KONV-KWERT.

WHEN 'JIN2'.

IT_ITEM-LST_VAT_AMT = IT_ITEM-LST_VAT_AMT + IT_KONV-KWERT.

V_VAL = V_VAL + IT_KONV-KWERT.

V_JIN2_JIN6 = V_JIN2_JIN6 + IT_KONV-KWERT.

WHEN 'JIN6'.

IT_ITEM-LST_VAT_AMT = IT_ITEM-LST_VAT_AMT + IT_KONV-KWERT.

V_VAL = V_VAL + IT_KONV-KWERT.

V_JIN2_JIN6 = V_JIN2_JIN6 + IT_KONV-KWERT.

WHEN 'ZLSR'.

IT_ITEM-SUBCHARGE_AMT = IT_ITEM-SUBCHARGE_AMT + IT_KONV-KWERT.

V_VAL = V_VAL + IT_KONV-KWERT.

V_ZLSR = V_ZLSR + IT_KONV-KWERT.

WHEN 'JIN1'.

MOVE IT_KONV-KBETR TO IT_ITEM-CST_RATE.

IT_ITEM-CST_AMT = IT_ITEM-CST_AMT + IT_KONV-KWERT.

V_VAL = V_VAL + IT_KONV-KWERT.

V_JIN1 = V_JIN1 + IT_KONV-KWERT.

WHEN OTHERS.

IT_ITEM-OTHERS = IT_ITEM-OTHERS + IT_KONV-KWERT.

V_VAL = V_VAL + IT_KONV-KWERT.

V_OTHERS = V_OTHERS + IT_KONV-KWERT.

ENDCASE.

ENDLOOP.

TOTAL = TOTAL + V_VAL.

MOVE V_VAL TO IT_ITEM-V_VAL.

MOVE TOTAL TO IT_ITEM-TOTAL.

v_pr00 = v_pr00 + it_item-base_price.

MODIFY IT_ITEM.

CLEAR IT_ITEM.

ENDFORM. " GET_PRICE

regards,

venkat.

Read only

JozsefSzikszai
Active Contributor
0 Likes
745

hi,

BKPF-BUKRS = BSEG-BUKRS

BKPF-BELNR = BSEG-BELNR

BKPF-GJAHR = BSEG-GJAHR

BSEG-KUNNR = KNA1-KUNNR

BKPF-BUKRS = VBRK-BUKRS

BKPF-BELNR = VBRK-BELNR

BKPF-GJAHR = VBRK-GJAHR

hope this helps

ec

Read only

Former Member
0 Likes
745

Use BKPF-AWTYP and BKPF-AWKEY to ling to VBRK. Please see:

[Quickly Retrieving FI document Data from BSEG|/people/rob.burbank/blog/2007/11/12/quickly-retrieving-fi-document-data-from-bseg]

Rob

Read only

Former Member
0 Likes
745

Hi,

U want to retrive Data from Different tables, first U have to check the key fields in all those tables and get the data as per ur requirement.

Thanks,

Shiva