2007 Oct 23 1:01 PM
hi experts,
i get stuck into one problem..m workin on a report in which i wud like to get sum of netprice corresponding to each ' vbeln ' in an iteractive report..but m not gettin that sum correctly..m sendin u full code..plz chk it out and do whatever changes u can or suggest me wat should i do..
TABLES : VBAK , VBAP.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN TYPE VBAP-VBELN,
ERNAM TYPE VBAP-ERNAM,
MATNR TYPE VBAP-MATNR,
NETPR TYPE VBAP-NETPR,
ARKTX TYPE VBAP-ARKTX,
END OF ITAB,
BEGIN OF ITAB1 OCCURS 0,
VBELN TYPE VBAK-VBELN,
ERNAM TYPE VBAK-ERNAM,
VKORG TYPE VBAK-VKORG,
KUNNR TYPE VBAK-KUNNR,
END OF ITAB1.
DATA : SUM1 TYPE VBAP-NETPR VALUE '0',
A(5) TYPE C.
DATA: V TYPE VBAP-NETPR,
W TYPE VBAK-VBELN.
SELECT-OPTIONS S_VBELN FOR VBAP-VBELN.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE VBELN IN S_VBELN.
WRITE :/5 'VBELN',20'ERNAM',33'MATNR',45 'NETPR', 65'Sales Order Item'.
SORT ITAB BY VBELN.
LOOP AT ITAB.
WRITE :/5 ITAB-VBELN,20 ITAB-ERNAM,33 ITAB-MATNR,45 ITAB-NETPR, 65 ITAB-ARKTX.
at end of vbeln.
sum1 = sum1 + itab-netpr..
hide itab-netpr.
endat.
hide itab
on change of itab-vbeln.
hide sum1.
endon.
*
ENDLOOP.
*HIDE S_VBELN.
AT LINE-SELECTION.
GET CURSOR FIELD ITAB-VBELN VALUE W.
CONCATENATE '000000' W INTO W.
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE ITAB1 WHERE VBELN = W.
LOOP AT ITAB1.
WRITE 😕 'SALES ORGANISATION ',30 'SOLD TO PARTY'.
WRITE 50 'TOTAL'.
WRITE 😕 ITAB1-VKORG,30 ITAB1-KUNNR.
WRITE sum1 COLOR 5.
CLEAR SUM1.
clear itab1.
ENDLOOP.
regards,
raman.
2007 Oct 23 1:12 PM
Put on change of and end on..
On change of itab-vbeln and try it..
copy this program and run it and see..REWRD IF USEFUL
TABLES : VBAK , VBAP.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN TYPE VBAP-VBELN,
ERNAM TYPE VBAP-ERNAM,
MATNR TYPE VBAP-MATNR,
NETPR TYPE VBAP-NETPR,
ARKTX TYPE VBAP-ARKTX,
END OF ITAB,
BEGIN OF ITAB1 OCCURS 0,
VBELN TYPE VBAK-VBELN,
ERNAM TYPE VBAK-ERNAM,
VKORG TYPE VBAK-VKORG,
KUNNR TYPE VBAK-KUNNR,
END OF ITAB1.
DATA : SUM1 TYPE VBAP-NETPR VALUE '0',
A(5) TYPE C.
DATA: V TYPE VBAP-NETPR,
W TYPE VBAK-VBELN.
SELECT-OPTIONS S_VBELN FOR VBAP-VBELN.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE VBELN IN S_VBELN.
WRITE :/5 'VBELN',20'ERNAM',33'MATNR',45 'NETPR', 65'Sales Order Item'.
SORT ITAB BY VBELN.
LOOP AT ITAB.
WRITE :/5 ITAB-VBELN,20 ITAB-ERNAM,33 ITAB-MATNR,45 ITAB-NETPR, 65 ITAB-ARKTX.
on change of itab-vbeln.
*at end of vbeln.
sum1 = sum1 + itab-netpr..
hide itab-netpr.
*endat.
hide itab
on change of itab-vbeln.
hide sum1.
endon.
*
ENDLOOP.
*HIDE S_VBELN.
AT LINE-SELECTION.
GET CURSOR FIELD ITAB-VBELN VALUE W.
CONCATENATE '000000' W INTO W.
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE ITAB1 WHERE VBELN = W.
LOOP AT ITAB1.
WRITE 😕 'SALES ORGANISATION ',30 'SOLD TO PARTY'.
WRITE 50 'TOTAL'.
WRITE 😕 ITAB1-VKORG,30 ITAB1-KUNNR.
WRITE sum1 COLOR 5.
CLEAR SUM1.
clear itab1.
ENDLOOP.
hi experts,
i get stuck into one problem..m workin on a report in which i wud like to get sum of netprice corresponding to each ' vbeln ' in an iteractive report..but m not gettin that sum correctly..m sendin u full code..plz chk it out and do whatever changes u can or suggest me wat should i do..
TABLES : VBAK , VBAP.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN TYPE VBAP-VBELN,
ERNAM TYPE VBAP-ERNAM,
MATNR TYPE VBAP-MATNR,
NETPR TYPE VBAP-NETPR,
ARKTX TYPE VBAP-ARKTX,
END OF ITAB,
BEGIN OF ITAB1 OCCURS 0,
VBELN TYPE VBAK-VBELN,
ERNAM TYPE VBAK-ERNAM,
VKORG TYPE VBAK-VKORG,
KUNNR TYPE VBAK-KUNNR,
END OF ITAB1.
DATA : SUM1 TYPE VBAP-NETPR VALUE '0',
A(5) TYPE C.
DATA: V TYPE VBAP-NETPR,
W TYPE VBAK-VBELN.
SELECT-OPTIONS S_VBELN FOR VBAP-VBELN.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE VBELN IN S_VBELN.
WRITE :/5 'VBELN',20'ERNAM',33'MATNR',45 'NETPR', 65'Sales Order Item'.
SORT ITAB BY VBELN.
LOOP AT ITAB.
WRITE :/5 ITAB-VBELN,20 ITAB-ERNAM,33 ITAB-MATNR,45 ITAB-NETPR, 65 ITAB-ARKTX.
at end of vbeln.
sum1 = sum1 + itab-netpr..
hide itab-netpr.
endat.
hide itab
on change of itab-vbeln.
hide sum1.
endon.
*
ENDLOOP.
*HIDE S_VBELN.
AT LINE-SELECTION.
GET CURSOR FIELD ITAB-VBELN VALUE W.
CONCATENATE '000000' W INTO W.
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE ITAB1 WHERE VBELN = W.
LOOP AT ITAB1.
WRITE 😕 'SALES ORGANISATION ',30 'SOLD TO PARTY'.
WRITE 50 'TOTAL'.
WRITE 😕 ITAB1-VKORG,30 ITAB1-KUNNR.
WRITE sum1 COLOR 5.
CLEAR SUM1.
clear itab1.
ENDLOOP.
regards,
raman.
2007 Oct 23 1:11 PM
Hello Raman,
Why do you use a variabele sum1, to calculate the sum of all items in the Sales Order?
The header table VBAK contains the net value of all items: VBAK-NETWR.
Maybe you should use this.
Best regards,
2007 Oct 23 1:12 PM
Put on change of and end on..
On change of itab-vbeln and try it..
copy this program and run it and see..REWRD IF USEFUL
TABLES : VBAK , VBAP.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN TYPE VBAP-VBELN,
ERNAM TYPE VBAP-ERNAM,
MATNR TYPE VBAP-MATNR,
NETPR TYPE VBAP-NETPR,
ARKTX TYPE VBAP-ARKTX,
END OF ITAB,
BEGIN OF ITAB1 OCCURS 0,
VBELN TYPE VBAK-VBELN,
ERNAM TYPE VBAK-ERNAM,
VKORG TYPE VBAK-VKORG,
KUNNR TYPE VBAK-KUNNR,
END OF ITAB1.
DATA : SUM1 TYPE VBAP-NETPR VALUE '0',
A(5) TYPE C.
DATA: V TYPE VBAP-NETPR,
W TYPE VBAK-VBELN.
SELECT-OPTIONS S_VBELN FOR VBAP-VBELN.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE VBELN IN S_VBELN.
WRITE :/5 'VBELN',20'ERNAM',33'MATNR',45 'NETPR', 65'Sales Order Item'.
SORT ITAB BY VBELN.
LOOP AT ITAB.
WRITE :/5 ITAB-VBELN,20 ITAB-ERNAM,33 ITAB-MATNR,45 ITAB-NETPR, 65 ITAB-ARKTX.
on change of itab-vbeln.
*at end of vbeln.
sum1 = sum1 + itab-netpr..
hide itab-netpr.
*endat.
hide itab
on change of itab-vbeln.
hide sum1.
endon.
*
ENDLOOP.
*HIDE S_VBELN.
AT LINE-SELECTION.
GET CURSOR FIELD ITAB-VBELN VALUE W.
CONCATENATE '000000' W INTO W.
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE ITAB1 WHERE VBELN = W.
LOOP AT ITAB1.
WRITE 😕 'SALES ORGANISATION ',30 'SOLD TO PARTY'.
WRITE 50 'TOTAL'.
WRITE 😕 ITAB1-VKORG,30 ITAB1-KUNNR.
WRITE sum1 COLOR 5.
CLEAR SUM1.
clear itab1.
ENDLOOP.
2007 Oct 23 1:24 PM
i have tried ' on change of ' event also..it is still not working
2007 Oct 23 1:59 PM
Try this report
Reward points isf problem solved!
TABLES : VBAK , VBAP.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN TYPE VBAP-VBELN,
ERNAM TYPE VBAP-ERNAM,
MATNR TYPE VBAP-MATNR,
NETPR TYPE VBAP-NETPR,
ARKTX TYPE VBAP-ARKTX,
END OF ITAB,
BEGIN OF ITAB1 OCCURS 0,
VBELN TYPE VBAK-VBELN,
ERNAM TYPE VBAK-ERNAM,
VKORG TYPE VBAK-VKORG,
KUNNR TYPE VBAK-KUNNR,
END OF ITAB1.
DATA : SUM1 TYPE VBAP-NETPR VALUE '0',
A(5) TYPE C.
DATA: V TYPE VBAP-NETPR,
W TYPE VBAK-VBELN.
SELECT-OPTIONS S_VBELN FOR VBAP-VBELN.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE VBELN
IN S_VBELN.
WRITE :/5 'VBELN',20'ERNAM',33'MATNR',45 'NETPR', 65'Sales Order Item'.
SORT ITAB BY VBELN.
LOOP AT ITAB.
WRITE :/5 ITAB-VBELN,20 ITAB-ERNAM,33 ITAB-MATNR,45 ITAB-NETPR, 65
ITAB-ARKTX.
ENDLOOP.
*HIDE S_VBELN.
AT LINE-SELECTION.
GET CURSOR FIELD ITAB-VBELN VALUE W.
CONCATENATE '000000' W INTO W.
SELECT * FROM VBAK
INTO CORRESPONDING FIELDS OF TABLE ITAB1
WHERE VBELN EQ W.
LOOP AT ITAB1.
CLEAR sum1.
LOOP AT ITAB WHERE vbeln EQ ITAB1-VBELN.
sum1 = sum1 + ITAB-netpr.
ENDLOOP.
WRITE :/ 'SALES ORGANISATION ',30 'SOLD TO PARTY'.
WRITE 50 'TOTAL'.
WRITE :/ ITAB1-VKORG,30 ITAB1-KUNNR.
WRITE sum1 COLOR 5.
clear itab1.
ENDLOOP.
2007 Oct 23 1:17 PM
Put on change of and end on..
On change of itab-vbeln and try it..
copy this program and run it and see..REWRD IF USEFUL
TABLES : VBAK , VBAP.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN TYPE VBAP-VBELN,
ERNAM TYPE VBAP-ERNAM,
MATNR TYPE VBAP-MATNR,
NETPR TYPE VBAP-NETPR,
ARKTX TYPE VBAP-ARKTX,
END OF ITAB,
BEGIN OF ITAB1 OCCURS 0,
VBELN TYPE VBAK-VBELN,
ERNAM TYPE VBAK-ERNAM,
VKORG TYPE VBAK-VKORG,
KUNNR TYPE VBAK-KUNNR,
END OF ITAB1.
DATA : SUM1 TYPE VBAP-NETPR VALUE '0',
A(5) TYPE C.
DATA: V TYPE VBAP-NETPR,
W TYPE VBAK-VBELN.
SELECT-OPTIONS S_VBELN FOR VBAP-VBELN.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE VBELN IN S_VBELN.
WRITE :/5 'VBELN',20'ERNAM',33'MATNR',45 'NETPR', 65'Sales Order Item'.
SORT ITAB BY VBELN.
LOOP AT ITAB.
WRITE :/5 ITAB-VBELN,20 ITAB-ERNAM,33 ITAB-MATNR,45 ITAB-NETPR, 65 ITAB-ARKTX.
on change of itab-vbeln.
*at end of vbeln.
sum1 = sum1 + itab-netpr..
hide itab-netpr.
*endat.
hide itab
on change of itab-vbeln.
hide sum1.
endon.
*
ENDLOOP.
*HIDE S_VBELN.
AT LINE-SELECTION.
GET CURSOR FIELD ITAB-VBELN VALUE W.
CONCATENATE '000000' W INTO W.
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE ITAB1 WHERE VBELN = W.
LOOP AT ITAB1.
WRITE 😕 'SALES ORGANISATION ',30 'SOLD TO PARTY'.
WRITE 50 'TOTAL'.
WRITE 😕 ITAB1-VKORG,30 ITAB1-KUNNR.
WRITE sum1 COLOR 5.
CLEAR SUM1.
clear itab1.
ENDLOOP.
2007 Oct 23 2:09 PM
Hi Raman,
I did changes to your code. I hope this code will help you. Reward me it is helpful.
Regards,
Sagar
TABLES : vbak , vbap.
DATA: BEGIN OF itab OCCURS 0,
vbeln TYPE vbap-vbeln,
posnr type vbap-posnr,
matnr TYPE vbap-matnr,
netwr TYPE vbap-netwr,
arktx TYPE vbap-arktx,
END OF itab,
BEGIN OF itab1 OCCURS 0,
vbeln TYPE vbak-vbeln,
ernam TYPE vbak-ernam,
vkorg TYPE vbak-vkorg,
kunnr TYPE vbak-kunnr,
netwr type vbak-netwr,
END OF itab1.
DATA : sum1 TYPE vbap-netpr VALUE '0',
a(5) TYPE c.
DATA: v_netpr TYPE vbap-netpr,
v_vbeln TYPE vbak-vbeln,
v_field(20) type c.
SELECT-OPTIONS s_vbeln FOR vbap-vbeln.
start-of-selection.
SELECT vbeln posnr MATNR NETWR arktx
FROM vbap
INTO TABLE itab
WHERE vbeln IN s_vbeln.
end-of-selection.
WRITE :/5 'VBELN', 17 'POSNR', 29 'MATNR', 48 'NETWR', 70 'ARKTX'.
SORT itab BY vbeln POSNR.
LOOP AT itab.
WRITE :/5 itab-vbeln, 17 ITAB-POSNR, 29 itab-matnr, 48 itab-netwr, 70 itab-arktx.
ENDLOOP.
AT LINE-SELECTION.
GET CURSOR FIELD v_field VALUE v_vbeln.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = v_vbeln
IMPORTING
OUTPUT = v_vbeln
.
CONCATENATE '000000' w INTO w.
SELECT vbeln ernam vkorg kunnr
FROM vbak
INTO TABLE itab1 WHERE vbeln = v_vbeln.
WRITE 😕 'SALES ORGANISATION ',30 'SOLD TO PARTY', 50 'TOTAL'.
LOOP AT itab1.
WRITE 😕 itab1-vkorg, 30 itab1-kunnr, 50 itab1-netwr.
ENDLOOP.
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |