‎2008 Feb 21 9:08 AM
Hi all,
I am working with the following code and i am trying to get the data from different internal tables into one single table.here i am trying to display VBELN and VDATU.I am able to get VBELN but the same is not working for VDATU.Can any one provide me the solution.
TYPE-POOLS : slis .
*******************DATA DECLARATION*********************
TYPES : BEGIN OF tt_vbak,
vbeln TYPE vbak-vbeln,
vdatu TYPE vbak-vdatu,
ernam TYPE vbak-ernam, "Created By
auart TYPE vbak-auart, "Sales Order Type
vkorg TYPE vbak-vkorg, "Sales Organization
kunnr TYPE vbak-kunnr, "Customer number
matnr TYPE vbap-matnr,
END OF tt_vbak.
TYPES : BEGIN OF tt_vbep,
wadat TYPE vbep-wadat, "Ship By
END OF tt_vbep.
TYPES : begin of tt_vbpa,
vbeln type vbpa-vbeln,
kunnr type vbpa-kunnr,
name1 type kna1-name1,
end of tt_vbpa.
TYPES : BEGIN OF tt_vbap,
vbeln TYPE vbap-vbeln,
kwmeng TYPE vbap-kwmeng,
ARKTX TYPE VBAP-ARKTX,
matnr TYPE vbap-matnr, "Material Number
END OF tt_vbap.
TYPES : BEGIN OF tt_vepvg,
vbeln TYPE vepvg-vbeln,
END OF tt_vepvg.
TYPES : BEGIN OF tt_mvke,
matnr type mvke-matnr,
END OF tt_mvke.
types : begin of tt_final,
vbeln TYPE vbak-vbeln,
vdatu TYPE vbak-vdatu,
name1 type kna1-name1,
kwmeng TYPE vbap-kwmeng,
ARKTX TYPE VBAP-ARKTX,
end of tt_final.
DATA : t_vbak TYPE TABLE OF tt_vbak ,
t_vbep TYPE TABLE OF tt_vbep,
t_vbap TYPE TABLE OF tt_vbap,
t_vepvg TYPE TABLE OF tt_vepvg,
T_VBPA TYPE TABLE OF TT_VBPA,
t_mvke type table of tt_mvke,
t_final type table of tt_final.
DATA : wa_vbak TYPE tt_vbak,
wa_vbep TYPE tt_vbep,
wa_vbap TYPE tt_vbap,
wa_vepvg TYPE tt_vepvg,
WA_VBPA TYPE TT_VBPA,
wa_mvke type tt_mvke,
wa_final type tt_final.
data : fcat type slis_t_fieldcat_alv,
wa_fcat type slis_fieldcat_alv.
CONSTANTS : char1 TYPE i VALUE 1000.
data : repid like sy-repid.
***************SELECTION SCREEN*************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_vkorg FOR wa_vbak-vkorg ,
s_auart FOR wa_vbak-auart ,
s_wadat FOR wa_vbep-wadat.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECT-OPTIONS : s_ernam FOR wa_vbak-ernam,
s_kunnr FOR wa_vbak-kunnr,
s_matnr FOR wa_vbap-matnr.
SELECTION-SCREEN END OF BLOCK b2.
***********SCREEN VALIDATION**************
at selection-screen on s_vkorg.
data : l_vkorg type vbak-vkorg.
SELECT SINGLE vkorg FROM vbak INTO l_vkorg WHERE vkorg in s_vkorg.
IF SY-SUBRC NE 0.
MESSAGE w000(zmsg).
ENDIF.
*****************SELECTION SCREEN PROCESSING************
START-OF-SELECTION.
SELECT vbeln FROM vepvg INTO TABLE t_vepvg
WHERE vstel = char1 AND vkorg IN s_vkorg.
IF t_vepvg IS NOT INITIAL.
SELECT a~vbeln
a~vdatu
a~ernam
a~auart
a~kunnr
b~matnr
FROM vbak AS a INNER JOIN
vbap AS b
ON avbeln EQ bvbeln INTO TABLE t_vbak
FOR ALL ENTRIES IN t_vepvg
WHERE a~vbeln = t_vepvg-vbeln AND vkorg IN s_vkorg AND auart
IN s_auart .
select a~vbeln
a~kunnr
b~name1
into table t_vbpa
from vbpa as a INNER join kna1 as b
on akunnr = bkunnr
for all entries in t_vepvg
where a~vbeln eq t_vepvg-vbeln.
SELECT vbeln
kwmeng
ARKTX
MATNR
FROM vbap INTO TABLE t_vbap
FOR ALL ENTRIES IN t_vepvg
WHERE vbeln EQ t_vepvg-vbeln.
ENDIF.
if t_vbap is not initial.
SELECT matnr from mvke into table t_mvke
for all entries in t_vbap where matnr = t_vbap-matnr .
endif.
*******************LOOP PROCESSING*******************
loop at t_vbak into wa_vbak.
read table t_vbak into wa_vbak with key vbeln = wa_vbak-vbeln .
if sy-subrc = 0.
wa_final-vbeln = wa_vbak-vbeln.
wa_final-vdatu = wa_vbak-vdatu.
append wa_final-vbeln to t_final.
clear wa_final.
endif.
endloop.
loop at t_vbpa into wa_vbpa.
read table t_vbpa into wa_vbak with key name1 = wa_vbpa-name1 .
if sy-subrc = 0.
wa_final-name1 = wa_vbpa-name1.
append wa_final-name1 to t_final.
clear wa_final.
endif.
endloop.
loop at t_final into wa_final.
write 😕 wa_final-vbeln,
10 wa_final-vdatu.
endloop.
‎2008 Feb 21 9:30 AM
Hi,
******************SELECTION SCREEN PROCESSING*************
START-OF-SELECTION.
SELECT vbeln FROM vepvg INTO TABLE t_vepvg
WHERE vstel = char1 AND vkorg IN s_vkorg.
IF t_vepvg IS NOT INITIAL.
SELECT a~vbeln
a~vdatu
a~ernam
a~auart
a~kunnr
b~matnr
FROM vbak AS a INNER JOIN
vbap AS b
ON a~vbeln EQ b~vbeln INTO TABLE t_vbak
FOR ALL ENTRIES IN t_vepvg
WHERE a~vbeln = t_vepvg-vbeln AND vkorg IN s_vkorg AND auart
IN s_auart .
select a~vbeln
a~kunnr
b~name1
into table t_vbpa
from vbpa as a INNER join kna1 as b
on a~kunnr = b~kunnr
for all entries in t_vepvg
where a~vbeln eq t_vepvg-vbeln.
SELECT vbeln
kwmeng
ARKTX
MATNR
FROM vbap INTO TABLE t_vbap
FOR ALL ENTRIES IN t_vepvg
WHERE vbeln EQ t_vepvg-vbeln.
ENDIF.
if t_vbap is not initial.
SELECT matnr from mvke into table t_mvke
for all entries in t_vbap where matnr = t_vbap-matnr .
endif.
********************LOOP PROCESSING********************
loop at t_vbak into wa_vbak.
read table t_vbak into wa_vbak with key vbeln = wa_vbak-vbeln .
if sy-subrc = 0.
wa_final-vbeln = wa_vbak-vbeln.
wa_final-vdatu = wa_vbak-vdatu.
append wa_final-vbeln to t_final. "delete it
*****replace this statement as like this.****
*append wa_final to t_final.*
clear wa_final.
endif.
endloop.
loop at t_vbpa into wa_vbpa.
read table t_vbpa into wa_vbak with key name1 = wa_vbpa-name1 .
if sy-subrc = 0.
wa_final-name1 = wa_vbpa-name1.
append wa_final-name1 to t_final. "delete this
replace this statement as like this
*modify t_final index sy-tabix from wa_final transporting name1.*
clear wa_final.
endif.
endloop.
loop at t_final into wa_final.
write :/ wa_final-vbeln,
10 wa_final-vdatu.
endloop.
<REMOVED BY MODERATOR>
regards,
ravi shankar reddy
Edited by: Alvaro Tejada Galindo on Feb 21, 2008 5:07 PM
‎2008 Feb 21 9:43 AM
Hi,
everything is correct in your program, except two lines. Kindly look into the below code.
loop at t_vbak into wa_vbak.
read table t_vbak into wa_vbak with key vbeln = wa_vbak-vbeln .
if sy-subrc = 0.
wa_final-vbeln = wa_vbak-vbeln.
wa_final-vdatu = wa_vbak-vdatu.
COMMENT THE BELOW STATEMENT
append wa_final-vbeln to t_final.
append wa_final to t_final.
clear wa_final.
endif.
endloop.
second time if you use 'APPEND' statement then a new record will be appended to the internal table, which is meaningless in our case. so we have to use 'MODIFY' statement instead of 'APPEND'.
loop at t_vbpa into wa_vbpa.
read table t_vbpa into wa_vbak with key name1 = wa_vbpa-name1 .
if sy-subrc = 0.
wa_final-name1 = wa_vbpa-name1.
COMMENT THE BELOW STATEMENT
append wa_final-name1 to t_final.
USE THE BELOW STATEMENT
modify t_final index sy-tabix from wa_final transporting name1.
clear wa_final.
endif.
endloop.
‎2008 Feb 21 9:58 AM
a Good option will be to use FOR ALL ENTRIES,instead of inner join.
select Fields
from table
into table iTAB
where condition.
select fields
from table 1
into table ITAB1
for all entries in ITAB
where itab = itab1 ( condition check)