Pick Common records from 2 internal tables
Hi,
I have 2 similar internal tables it_bseg1 (contain records based on the Posting Date BUDAT of document) & it_bseg2 (contain records based on the Customer Code KUNNR). Both these tables contains some common records. And I want these common records only. So please tell me to get the common records in the easiest way.
Regards,
Vishal
Hi,
There must be atleast one common field for these two internal tables to get the common records.
If you identify the common field then you can use this logic.
Loop at it_bseg1 into wa_bseg1.
Read table bseg2 into wa_bseg2 with key <commonfield > = wa_itab1-<commonfield>.
If sy-subrc eq 0.
Append wa_bseg1 to it_bseg3.
Endif.
Endloop.
Now it_bseg3 contains the common records.
If there is no use of it_bseg1 in your further development then you can do teh logic without declaring third internal table it_bseg3.
Loop at it_bseg1 into wa_bseg1.
Read table bseg2 into wa_bseg2 with key <commonfield > = wa_itab1-<commonfield>.
If sy-subrc ne 0.
delete it_bseg1 where <commonfield> = wa_itab1-<commonfield>.
Endif.
Endloop.
Now it_bseg1 contains teh common records of it_bseg1 and it_bseg2.
Hope this will help.
Regards,
Swarna Munukoti.
Edited by: Swarna Munukoti on Sep 3, 2008 2:05 PM
Similar Messages
-
Help needed to get unique record from an internal table
Hi Everybody,
I have to get unique record from an internal table. i know we can use read statement with key condition .
But the problem is i have to use some relational operators like GE or LE.
eg
read table itab into wa with key width GE itab-widthfrom
width LE itab-widthto
machno eq itab-machno.
Its giving me error when I use the operators GE , LE.( I think since it can't find a unique record with those relational
operators in the with key statement)
Is there any other way to get unique record from internal table without using the loop?
Thanks,
SunnyUsing the read statement you will need some kind of loop. For example.
DO.
READ TABLE......
WITH KEY ......
READ = SPACE
IF SY-SUBRC EQ 0
TABLE-READ = 'X'.
MODIFY TABLE
ADD 1 TO W_FOUND.
ELSE
EXIT.
ENDIF
ENDDO.
IF W_FOUND EQ 1.
...record is unique.
ENDIF. -
Find if there is any common record in two internal tables
hi,
I have two internal tables of same structure... say A and B.
I need to know if there are any common lines in them.
one way is to loop in any one of them and keep executing a read on the other.
can anyone suggest a better way.
thanks,
Arindam.Hi Arindam,
To find common records in two internal tables, they can be compared
If INT_DATA1 EQ INT_DATA2.
endif.
The first criterion for comparing internal tables is the number of lines they contain. If two internal tables contain the same number of lines, they are compared line by line, component by component.
If the internal tables contain the same number of records and are sorted on the same key, the comparison stops at the line where the records are not common. For example, if the number of common records is 4, the comparison stops at the 5th line and sy-tabix becomes 5.
Hope it helps.
Regards,
Nupur -
Filtering records from one internal table based on ranges in another itab
Hi guys,
I have 1 internal table with set of GL accounts. I have 2nd internal table where lower interval and upper interval of GL accounts
How to filter out records from 1 internal table by comparing with the GL account ranges present in 2nd internal table.
Please reply.Hi
Create a RANGE for GL Accounts.
LOOP the second Internal Table.
And assign HIGH & LOW to ranges from second ITAB.
And Delete the accounts which are not there in the range.
Use the below code as reference.
DATA: itab TYPE TABLE OF mara WITH HEADER LINE.
DATA: r_matnr TYPE RANGE OF matnr WITH HEADER LINE.
SELECT * FROM mara INTO TABLE itab UP TO 10 ROWS.
r_matnr-sign = 'I'.
r_matnr-option = 'BT'.
r_matnr-low = '000000000016900036'.
r_matnr-high = '000000000016900040'.
APPEND r_matnr.
DELETE itab WHERE matnr NOT IN r_matnr. -
How to collect similar record from the internal table
I need to collect exact matched records from 1 internal table to another internal table by searching 5 fields. I need to have records which are exactly matched for 5 fields. i have written a code wich is mention below it gave me only similar records but not 100% matched record.. would you like to help me. any correction, suggetion,. Will be great help to me.
To get exact match of 5 records, do as follows.
Check whether internal table gives only one record or not after READ statement.If internal table gives more than one entry for READ then the results will be improper.
I think there is no need of READ statement on same internal table within LOOP. I commented the same in code.
sort i_bp_p by title initials name_last idnumber idtype f50code rbcode. "acc_num.
loop at i_bp_p into wa_i_bp_p.
*lv_tabix = sy-tabix.
*read table i_bp_p index lv_tabix into wa_i_bp_p.read table i_but0id into wa_but0id with key idnumber = wa_i_bp_p-idnumber
idtype = wa_i_bp_p-idtype binary search.
if sy-subrc = 0.
read table i_but000 into wa_but000 with key title = wa_i_bp_p-title
initials = wa_i_bp_p-initials
name_last = wa_i_bp_p-name_last binary search.
if sy-subrc = 0.
read table i_but0is into wa_but0is with key f50code = wa_i_bp_p-f50code
rbcode = wa_i_bp_p-rbcode binary search.
if sy-subrc = 0.
move-corresponding wa_i_bp_p to i_bp_p100.
append i_bp_p100.
endif.
endif.
endif.
endloop.
sort i_bp_p100 by partner.
loop at i_bp_p100.
write : /10 i_bp_p100-partner,
20 i_bp_p100-title,
30 i_bp_p100-initials,
40 i_bp_p100-name_last,
53 i_bp_p100-idnumber,
70 i_bp_p100-idtype,
85 i_bp_p100-rbcode,
95 i_bp_p100-f50code.
endloop.
sort i_bp_p by title initials name_last idnumber idtype f50code rbcode. "acc_num.
loop at i_bp_p into wa_i_bp_p.
lv_tabix = sy-tabix.
read table i_bp_p index lv_tabix into wa_i_bp_p.
if sy-subrc = 0.
read table i_but0id into wa_but0id with key idnumber = wa_i_bp_p-idnumber
idtype = wa_i_bp_p-idtype binary search.
if sy-subrc = 0.
read table i_but000 into wa_but000 with key title = wa_i_bp_p-title
initials = wa_i_bp_p-initials
name_last = wa_i_bp_p-name_last binary search.
if sy-subrc = 0.
read table i_but0is into wa_but0is with key f50code = wa_i_bp_p-f50code
rbcode = wa_i_bp_p-rbcode binary search.
if sy-subrc = 0.
move-corresponding wa_i_bp_p to i_bp_p100.
append i_bp_p100.
endif.
endif.
endif.
endif.
endloop. -
How to delete records from dynamic internal table.
Hi Experts,
Need urgent help!!!
Issue is with Dynamic internal tables.
Below is code written by me :
FORM select_query USING Lw_tabnam
TYPE t682i-kotabnr.
DATA : lw_line TYPE REF TO data,
lw_line1 TYPE REF TO data.
CREATE DATA Lw_line TYPE (lw_TABNAM).
ASSIGN Lw_line->* TO <WA_tbl>.
CREATE DATA LW_LINE TYPE STANDARD TABLE OF (Lw_tabnam)
WITH NON-UNIQUE DEFAULT KEY.
ASSIGN Lw_line->* TO <TBL>.
SELECT * FROM (Lw_tabnam)
INTO CORRESPONDING FIELDS OF TABLE <TBL>
WHERE (t_keys).
Endform.
code is working fine.
here even the table name and where condition are dynamic,everything is fine upto this point.
Now i have to delete some record from <TBL> based on some conditons.
for ex : ( here lc_fieldname is KUNNR)
loop at t_kunnr.
lw_tabix = sy-tabix.
Read table <tbl>
with key (lc_fieldname) = t_kunnr-kunnr ASSIGNING <wa_tbl>.
If sy-subrc = 0.
*Delete
delete <tbl> from <wa_tbl>
delete <tbl> index lw_tabix.
Endif.
Endloop.
The above delete statement doesn't work ,even we can't use index as it gives a syntax error " something related to "index is not allowed in standard table or hash table.
Can you help me ab't how to delete records in Dynamic internal table?
Other option that i am thinking of is to create a static table of type dynamic table.
means, data itab type standard table of <tbl> .I know the syntax is wrong ,however is there any way to do this?
Thanks in advance ,
If you have any suggestion ab't this then do let me know.
bye,
Gaurav.Hi
I wrote this code and it works fine:
DATA LW_TABNAM(10) VALUE 'LFA1'.
DATA : LW_LINES TYPE REF TO DATA,
LW_LINE TYPE REF TO DATA.
FIELD-SYMBOLS: <TABLE> TYPE TABLE,
<WA> TYPE ANY.
CREATE DATA LW_LINES TYPE TABLE OF (LW_TABNAM)
WITH NON-UNIQUE DEFAULT KEY.
ASSIGN LW_LINES->* TO <TABLE>.
CREATE DATA LW_LINE TYPE (LW_TABNAM).
ASSIGN LW_LINE->* TO <WA>.
DO 10 TIMES.
APPEND INITIAL LINE TO <TABLE>.
ENDDO.
SY-TABIX = 4.
DELETE <TABLE> INDEX SY-TABIX.
WRITE SY-SUBRC.
I hope it help you
Max -
How to delete the matching records from two internal tables
Hi ,
I have two internal tables say A and B of the same type. If A has 10 records and B has 4 records , I want to delete the 4 records in B from A .
loop at B into wa .
delete A where key = wa - key .
endloop.
takes a long time if the table B is huge. how can I improve the performance.
Thanks.
GayathriHi Gayathri,
You could try field-symbols. It reduces the data transfer from the internal table B to the work area.
field-symbols <fs_itab_b> like line of B.
loop at B assigning <fs_itab_b>.
delete A where key = <fs_itab_b>?-key.
endloop.
Regards,
<a href="https://www.sdn.sap.com:443http://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.sdn.businesscard.sdnbusinesscard?u=zwcc%2fwm4ups%3d">anand Mandalika</a>. -
Getting the last record from the internal table
When we use a READ statement it always picks up the first record which fulfill its condition but in my case I want to pick up the last record that fulfills it condition
I have a internal table like
id type
N1 A
N1 T
N1 A
N1 6 ----> LAST RECORD
my code is
read table itab wIth key id = netobjid.
for eg if netobjid = N1 , then I want to read the last record that corresponds to N1 ie ID N1 TYPE - 6...
How to do that?HI
actually i have done same requirement like this ...
Take one count variable into your internal table ..you pass the number of records into cont variable for every time u enter the loop .
Sort the internal table with count variable descending . ( AS we cant sort the internal table with sy-tabix)
Then use read statement with sy-index = 1 .
USe below logic ,............
data : count type i value '0'.
LOOP at int .
count = count + 1 .
endloop.
sort int count descending .
read int with index = 1 . -
Error in splitting records from an internal table
Hi all,
After uploading the data from flat file into an internal table the data consists of # between each field and while I try to split each field and assign to a different table the data is not getting split properly ,
i.e. split function splits the fields after 3 '#' and storing it in the table field.
Thanks & Regards
JerryHi Jerry,
What Uwe said is correct. We too faced that kind of scenario. In the internal table when uploaded from flat file it will show '#' but it wont get split with '#' symbol in the program. However we solved the issue with the following class.
Data: c_tab value cl_abap_char_utilities=>newline,
it_string type table of string.
" if it_table1 is the table which contains the flat file data, then go throuhg this logic.
loop at it_table1 into wa_table1.
split wa_table1 at c_tab into table it_string.
endloop.
If the table is not getting split with cl_abap_char_utilities=>newline, then try using differnt attributes of that class ( like cl_abap_char_utilities=>cr_lf, cl_abap_char_utilities=>backspace so on ).
Hope this will help.
Regards,
Swarna Munukoti.
Edited by: Swarna Munukoti on Sep 13, 2008 5:54 PM -
Get the Common from Two Internal Tables with same structure
Hi ,
I need to get the Common data from Two Internal Tables with same structure with using the looping method.
For e.g.
I have two internal table say ITAB1 and ITAB2.
ITAB1 has values A,B,C,D,E,F
ITAB2 has values A,H,B,Y,O
Output at runtime should be : A,BHi mohit,
1. If u want to compare all fields,
for matching purpose,
then we can do like this.
2.
report abc.
data : a like t001 occurs 0 with header line.
data : b like t001 occurs 0 with header line.
loop at a.
LOOP AT B.
IF A = B.
WRITE :/ 'SAME'.
ENDIF.
endloop.
ENDLOOP.
regards,
amit m. -
Store the vital info from the absence quota record in an internal table
Hi experts,
I want to detrmine if the Absence records (PA2001 rec) deduction from date (PA2001-BEGDA) and absence to date (PA2001-ENDDA) are permissible for the validity period of the Absence Quota record (the PA2006 rec). If the quotas deduction from date, PA2006-DESTA, is greater than the PA2001-BEGDA, we then need to identify this absence quota record for change and change the deduction from date, PA2006-DESTA, to be the same as PA2001-BEGDA. Store the vital info from the absence quota record in an internal table and record the new date that the deduction from date that needs to be changed to. The changes will be made via a BDC session.
Please help me out...
Thanks,
VickyThis looks possible if we code it in 'dynamic action' table, but the BDC may not read it during run time.
Do you still have this issue?
Thanks
Narasimha -
Extract a value of a fields from an internal table
hello everyone,
i need to extract a value of a fields from an internal table, the fields is in a postion "sy-tabix" that i know, so i need to pick this value without using a loop
thank you.Like this?
DATA: FIELD1 TYPE C,
FIELD2 TYPE C.
READ TABLE T_TAB INDEX 3.
FIELD1 = T_TAB-FIELD1.
FIELD2 = T_TAB-FIELD2.
Greetings,
Blag. -
Count the Records in an internal table without a loop.
How do i count the number of records in an internal table without using the loop statement.
The Describe statement give the total no. of records in the internal table.But i want the count of the key fields in the internal table
For eg
Row Field
1 A
2 A
3 A
4 B
5 B
6 C
Count of A = 3
Count of B = 2
Count of C = 1Dilip,
I think isn't posible. Only 3 ideas:
1ª, make other table "table2", similar to your actual table.
table2[] = yourtable[].
delete table2 where key <> 'A'.
describe table table2 lines contA.
But depending the amount of data, you may have problems in performance or memory consumption...
2ª, make other table, only with the keys fields and a count field,
data begin table2
key_field1,
cont type i.
end data.
when you append lines to yourdata, make a collect to this table:
table2-keys = yourtable-keys.
table2-cont = 1.
collect table2.
But only works if you can modify the program where data is appended, and you may be carefull when data is deleted :-(...
3ª if your data if filled in a select, you may fill the table2 of point 2ª, making a similar select but:
select keyfields count( * ) into table table2
from ...
where (the same you have to fill your original table...)
group by keys.
But you have the same problem is data is deleted later...
I hope that any of the three is useful for you...
Edited by: Diego Alvarez on Jan 5, 2010 5:09 PM -
Creating MS- Access data base from the Internal tables data of an ABAP Prog
Hi,
I have a requirement where I have to create Access tables from the Internal tables of ABAP program.
The tables are like Project systems Header data, WBS elements data, Netwrok data, Activity data, Milestone data and Project revunes. I will have the internal tables for these. I want to transfer these tables data into MS-Access tables onto Users desktop.
Please adivce me how to do this.
Thanks,
PrabhakarHI,
I am trying to create a DB table in the access but I am not successful. The following is the format of the table needs to be created from the ABAP program.
I have created a table with the following format in MS-Access with the name tblHeader. Is it neccessary to create a DB table ( MS-Access) in advance or by using the FM STRUCTURE_EXPORT_ TO_MSACCESS we need to create a structure in MS-Access?
False tblHeader
Field Name Type Length
ProjectDef Text 255
ProjectDes Text 255
Created Text 50
Change Text 50
RespPerson Text 255
Profile Text 255
Plant Text 255
ObjNo Text 255
OverheadKey Text 255
I have created a Z table ZTAB1 with the same format from the SAP fields.
MS-Access Table name : tblHeader
ABAP program Internal table : t_tblheader
Z table Name : ZTAB1.
First I am trying to create a structure in MS-Access with the following FM.
CALL FUNCTION 'STRUCTURE_EXPORT_ TO_MSACCESS'
EXPORTING
dbname = 'D:\test\db2'
LANGU = SY-LANGU
dest = 'PS_ACCESS_1'
TABLES
tabname = ttblheader
EXCEPTIONS
system_failure = 1
comm_failure = 2
OTHERS = 3
Table ttblheader type is DFIES and I am filling the table with only one record and one field i.e TABNAME and the value is ZTAB1.
The source code of the FM is using another FM
CALL FUNCTION 'MSACCESS_STRUCT_ EXPORT_RFC' DESTINATION DEST
Here I am getting the Error message Object required. I can't able to create a table structure in MS-Access.
Next I am going to Use the FM
'TABLE_EXPORT_ TO_MSACCESS'
and it will create the records in the MS-access table.
CALL FUNCTION 'TABLE_EXPORT_ TO_MSACCESS'
EXPORTING
dbname = 'D:\test\db2'
langu = sy-langu
dest = 'PS_ACCESS_2'
tabname = 'ZTAB1'
reftable = 'tblheader'
FLG_NO_DOWNLOAD = ' '
FLG_APPEND = ' '
FLG_POPUP = ' '
TABLES
dtab = t_tblheader
here t_tblheader is the internal table.
Reftable = tblheader is the table which i have created in advance. ( not by using the First FM)
In this FM i am getting a error message : Unable to connect to Database D:\test\db2.
Please help me how to create the MS-Access database. -
How to scan data from one internal table to another
Hi All,
let me know how to scan all from one internal table to another internal table. Pls provide me the syntax and code.
i am very thankful to you all in advance.
Thanks & Regards,
Nagarjuna.if u want to copy data from itab1 to itab2 then use
itab2[] = itab1[].
if u want to compare whether both itab1 and itab2 are same or not,use
if itab1[] = itab2[].
*--same
else.
*--not same
endif.
if u want to compare itabs based on primary key....
loop at itab1.
read table itab2 with key f1 = itab1-f1.
if sy-subrc <> 0.
*--not same....
endif.
endloop.
if u want to copy only few lines(say from 1 to 3) of itab1 to itab2 then use...
append lines of itab1 from 1 to 3 to itab2.
if internal tables don't have same structure,
say only fields f1 and f2 are common,then
loop at itab1.
itab2-f1 = itab1-f1.
itab2-f2 = itab1-f2.
append itab2.
clear itab2.
endloop.
if there are many common fields then...
loop at itab1.
move-corresponding itab1 to itab2.
append itab2.
clear itab2.
endloop.
Please don't forget to reward points....!!!
Regards
vasu
Maybe you are looking for
-
How to launch a non bsp url through transaction launcher
Hi All, i am not able to launch a non bsp url from transaction launcher. i have followed all the steps needed. Defined URL as non bsp url and defined the logical system and assigned it to rfc destination. when i test this out, i am getting a blank pa
-
Sending colour from a JSP page into a MySQL database field
Dear All, I am working on trying to send different colours into a MySQL database field from a JSP page. This is so that I can represent different pieces of data on my webpage tables in different colours providing status depending on the user request.
-
Customer wise Materials Quantity target
Hi all, The requirement is as below, For customers we would like to set sales quantity targets, like for 1 custoimer specifically combined for 10 materials we will set 5 Tons target,when we have done dispacthes of 5 ton of those specific materials(ca
-
Why can I only get 20 pages and not more when viewing images on my ipad2
How do I go to additional pages after 20 on my ipad2
-
I prepared a new project but during the submission to browser media, the system has shown the error (-49). Somebody can help me?