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

Internal Tables

sudhir_uppalapati
Participant
0 Likes
479

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.

3 REPLIES 3
Read only

Former Member
0 Likes
442

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

Read only

Former Member
0 Likes
442

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.

Read only

Former Member
0 Likes
442

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)