Need logic to retrieve common fields in two internal tables
Hi,
I need to get the common data from the internnal table IT_BSEG and IT_ZFI_CSHLW_DIRE tables please help me out in sorting out this porblem.
the fields in IT_BSEG are Account number,Profit center,company code,document type etc.
where as the fields in IT_CSHFLW_DIRE are Account number from,Account number to,company code from,company code to and profit center.
so how to check whether a record which is in It_BSEG,exists in IT_CSHFLW_DIRE..?
Thanks,
Kumar
Solution 1.
LOOP AT ITAB1.
LOOP AT ITAB2
WHERE ( ACCOUNT_FROM LE ITAB1-ACCOUNT AND
ACCOUNT_TO GE ITAB1-ACCOUNT )
AND (COMPANY_FROM LE ITAB1-COMPANY AND
COMPANY_TO GE ITAB1-COMPANY
AND (PROFIT_CENTER EQ LE ITAB1-PROFIT_CENTER ).
<Your logic>.
ENDLOOP.
ENDLOOP.
soultions 2.
RANGES: COMPANY_CODE FOR <Your data dictionary reference>
ACCOUNT FOR <Your data dictionary reference>.
LOOP AT ITAB2.
REFRESH: COMPANY_CODE, ACCOUNT.
CLEAR: COMPANY_CODE, ACCOUNT.
MOVE: I TO COMPANY_CODE-SIGN,
I TO ACCOUNT-SIGN.
MOVE: BT TO COMPANY_CODE-OPTION,
BT TO ACCOUNT-OPTION.
MOVE: ITAB2-COMPANY_FROM TO COMPANY_CODE-LOW,
ITAB2-ACCOUNT_FROM TO ACCOUNT-LOW.
MOVE: ITAB2-COMPANY_TO TO COMPANY_CODE-HIGH.
ITAB2-ACCOUNT_TO TO ACCOUNT-HIGH.
APPEND: COMPANY_CODE, ACCOUNT.
LOOP AT ITAB1 WHERE ACCOUNT IN ACCOUNT "<----range
AND company IN company_code "<----range
AND profit_center eq ITAB2-PROFIT_CENTER.
*<You code>
ENDLOOP.
ENDLOOP.
Please note both approach have different <b>bussines logic</b>.
It depends on your bussiness logic which table data you are looking in which table.
Regards,
A.Singh
Similar Messages
-
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 -
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. -
Aggregate a numeric field in an internal table
Hi All,
I have a small requirement in ABAP it goes in this fashion
I need to aggregate a numeric field in an internal table, the table is as follows
FLD1 FLD2 NUM1 FLD3
123A B1 10 C1
123A B1 25 C1
123B B1 20 C2
123C B2 10 C3
Note: FLD1, FLD2, FLD3 are of type numeric characters and NUM1 is of type number or integer
I want the result to be as follows
FLD1 FLD2 NUM1 FLD3
123A B1 35 C1
123B B1 20 C2
123C B2 10 C3
i.e. values in field NUM1 should get add up when the values in all other fields are same
I am not able to use _collect_ for this as the fields contain numeric characters.
Regards and Thanks,
AntonyHi Antony
collect here works like this:-
use at new field
sum
end at.
Pls reward points if it wil be helpful.
Regards
Depanker -
Two internal tables in to one internal table
Hi ,
I have two internal tables ITAB1 and ITAB2, i would like to put fields from two internal tables in to one internal table(ITAB3) with out using inner joint. any one of you can give the sample code for this
Thanks
Raja.Hi,
Kamesh wrote :
Read itab2 into wa_itab2 with key f2 = itab1-f1 <USe your where conditions here>.
Read statement does not have WHERE conditions.
Please be careful while posting. Your thread will be reffered by many people. Please dont mislead.
Regards,
Swapna. -
How to check two internal table fields
Hi all,
I need to check two internal table fields are equal or not means which statement i can use.
Not internal table ,table contents i need to check i.e
it1-pernr = it2-pernr.
like this
if i put loop it'll check one table field for one loop.
if i put two loop means some fields reflecting 2 in it1 then it'll pring 4 times like that.i want to print whatever in internal table only .
pernr(0001) two times there in it1 means
it1-pernr = it2-pernr then
it's printing
0001
0001
0001
0001
like this but actually in it1 only two records.
Anybody know solution.tell me.
Thanks
Regards,
NandhaHi,
code for your view
data : begin of it1 occurs 0,
z_pernr like pa9012-pernr,
z_fac_c like pa9012-zz_fac_c,
end of it1.
data : it2 like Zsc1 occurs 0 with header line,
It1 data
pernr FAC C
0001 5555
0001 5555
0002 4444
0003 3333
0006 8888
It2 data
pernr FAC C
0001 5555
0001 5555
0005 6666
0003 3333
output(My code)
loop at it2 .
loop at it1 where pernr = it2-pernr.
write:/01 it1-1pernr,
10 it1-z_fac_c.
endloop.
endloop.
out put i need.
0001 5555
0001 5555
0002 4444
0003 3333
Thanks,
Nandha -
How to get common datas from two int.tables
hi,
please tell me , how to i will get the common datas between two int. tables
& place them in third int. table.
give me syntax.
regards
subhasis.Hi Subhasis,
<b>SORT :</b></u>
SORT itab.
Extras:
1. ... BY f1 f2 ... fn
2. ... ASCENDING
3. ... DESCENDING
4. ... AS TEXT
5. ... STABLE
The syntax check performed in an ABAP Objects context is stricter than in other ABAP areas. See Field symbols not allowed as sort criterion.
Effect
The entries in the internal table are sorted in ascending order using the key from the table definition (DATA, TYPES).
Addition 1
... BY f1 f2 ... fn
Effect
Uses the sort key defined by the sub-fields f1, f2, ..., fn of the table itab instead of the table key. The fields can be of any type; even number fields and tables are allowed.
You can also specify the sort fields dynamically in the form (name). If name is blank at runtime, the sort field is ignored. If itab is a table with a header line, you can also use a field symbol pointing to the header line of itab as a dynamic sort criterion. A field symbol that is not assigned is ignored. If a field symbol is assigned, but does not point to the header line of the internal table, a runtime error occurs.
If the line type of the internal table contains object reference variables as components, or the entire line type is a reference variable, you can use the attributes of the object to which a reference is pointing in a line as sort criteria (see Attributes of Objects as the Key of an Internal Table.
You can address the entire line of an internal table as the key using the pseudocomponent TABLE_LINE. This is particularly relevant for tables with a non-structured line type when you want to address the whole line as the key of the table (see also Pseudocomponent TABLE_LINE With Internal Tables).
If you use one of the additions 2 to 5 before BY, it applies to all fields of the sort key by default. You can also specify these additions after each individual sort field f1, f2, ..., fn. For each key field, this defines an individual sort rule which overrides the default.
Addition 2
... ASCENDING
Effect
Sorts in ascending order. This is also the default if no sort order is specified directly after SORT. For this reason, it is not necessary to specify ASCENDING explicitly as the default sort order.
With the addition BY, you can also specify ASCENDING directly after a sort field to define ascending order explicitly as the sort sequence for this field.
Addition 3
... DESCENDING
Effect
Sorts in descending order. If the addition comes right after SORT, DESCENDING is taken as the default for all fields of the sort key.
With the addition BY, you can also specify DESCENDING directly after a sort field.
Addition 4
... AS TEXT
Effect
Text fields are sorted appropriate to the locale. This means that the relative order of characters is defined according to the text environment being used.
When an internal mode is opened (in other words, when a roll area is opened), the text environment is automatically set to the logon language specified in the user master record. If necessary, however, you can change the text environment explicitly in your program by using a SET-LOCALE statement.
If the addition comes directly after itab, locale-specific rules are used for all fields of the sort key where the type of these fields is C or W. After the sort, the sequence of entries usually does not match the sequence which results otherwise, without using the addition AS TEXT, i.e. with binary sorting.
With the addition BY, you can also specify AS TEXT directly after a sort field, provided it is of type C or W, or a structured type. Otherwise, a runtime error occurs. In sort fields with a structured type, AS TEXT only affects subcomponents with type C or W.
In case of an invalid character, a SYSLOG message is written, and the respective record is inserted at the end.
Note
Please keep the rules for site-specific sorting in mind.
Example
Sort a name table with different keys:
TYPES: BEGIN OF PERSON_TYPE,
NAME(10) TYPE C,
AGE TYPE I,
COUNTRY(3) TYPE C,
END OF PERSON_TYPE.
DATA: PERSON TYPE STANDARD TABLE OF PERSON_TYPE WITH
NON-UNIQUE DEFAULT KEY INITIAL SIZE 5,
WA_PERSON TYPE PERSON_TYPE.
WA_PERSON-NAME = 'Muller'. WA_PERSON-AGE = 22.
WA_PERSON-COUNTRY = 'USA'.
APPEND WA_PERSON TO PERSON.
WA_PERSON-NAME = 'Moller'. WA_PERSON-AGE = 25.
WA_PERSON-COUNTRY = 'FRG'.
APPEND WA_PERSON TO PERSON.
WA_PERSON-NAME = 'Möller'. WA_PERSON-AGE = 22.
WA_PERSON-COUNTRY = 'USA'.
APPEND WA_PERSON TO PERSON.
WA_PERSON-NAME = 'Miller'. WA_PERSON-AGE = 23.
WA_PERSON-COUNTRY = 'USA'.
APPEND WA_PERSON TO PERSON.
SORT PERSON.
Now, the sequence of the table entries is as follows:
Miller 23 USA
Moller 25 FRG
Muller 22 USA
Möller 22 USA
If, for example, you apply German sort rules where the umlaut comes directly after the letter 'o' in the sort, the data record beginning with 'Möller' would not be in the right place in this sequence. It should come second.
Provided a German-language locale is set (e.g. sorting is according to German grammatical rules, see also SET LOCALE), you can sort the names according to German rules as follows:
SORT PERSON BY NAME AS TEXT.
Now, the sequence of table entries is as follows:
Miller 23 USA
Moller 25 FRG
Möller 22 USA
Muller 22 USA
Further examples:
SORT PERSON DESCENDING BY COUNTRY AGE NAME.
Now, the sequence of table entries is as follows:
Miller 23 USA
Möller 22 USA
Muller 22 USA
Moller 25 FRG
SORT PERSON DESCENDING BY AGE ASCENDING NAME AS TEXT.
Now, the sequence of table entries is as follows:
Muller 22 USA
Möller 22 USA
Miller 23 USA
Moller 25 FRG
Addition 5
... STABLE
Effect
Uses a stable sort, that is, the relative sequence of entries that have the same sort key remains unchanged.
Unlike additions 2 to 4, you cannot use this addition directly after a sort field.
Notes
General:
The number of sort fields is restricted to 250.
The sort process is only stable if you use the STABLE addition. Otherwise, a predefined sequence of fields used to sort a list is not usually retained.
It does not make sense to use the SORT command for a SORTED TABLE. If the table type is statically declared, the system returns a syntax error if you try to SORT the table. If the table type is not statically declared (for example, because the table was passed to a FORM routine as an INDEX TABLE in a parameter), and the system can interpret the SORT statement as an empty operation, it ignores the statement. This is the case when the key in the BY clause corresponds to the beginning of the table key. Otherwise, a runtime error occurs.
To delete all duplicate entries from a sorted internal table (e.g. just after SORT), you can use the DELETE ADJACENT DUPLICATES FROM itab statement.
When using the addition AS TEXT, the sequence of entries after the sort does not usually match the sequence resulting from a binary sort, i.e. if the addition AS TEXT is not specified. The consequence of this is that after the SORT, you are not allowed to access with the READ TABLE itab ... BINARY SEARCH statement.
If you still want to access data sorted apppropriate to the locale with a binary search, you can do this by including an additional component in the table where you can explictly store the data formatted using the CONVERT TEXT ... INTO SORTABLE CODE statement. This is also recommended for performance reasons if you have to re-sort the table several times according to locale-specific criteria.
If the internal table has more than 2^19 lines or is larger than 12 MB, the system sorts it physically using an external auxiliary file. You can specify the directory in which the file should be created using the SAP profile parameter DIR_SORTTMP. By default, the system uses the SAP data directory (SAP profile parameter DIR_DATA).
Notes
Performance:
The runtime required to sort an internal table increases with the number of entries and the length of the sort key.
Sorting an internal table with 100 entries with a 50 byte key requires about 1300 msn (standardized microseconds). Using a 30-byte key, the runtime is about 950 msn.
If one of the specified sort criteria is itself an internal table, SORT may sometimes take much longer.
The runtime increases if you use a stable sort.
Physical sorting reduces the runtime required for subsequent sequential processing.
Reward If Useful.
Regards,
Chitra -
I need to add check whether 21 fields of a internal table are empty or not.
Hello,
I need to add check whether 21 fields of a internal table are empty or not.How can we write a code for the same wand what would be the correct syntax for it.
I tried entering all the fields in the IF loop with AND condition but its giving syntax error.Perhaps this is because the lenght of the IF condition would be more than the allowed one.Hi,
After the select quiery.
If not itab is initial.
Message 'Table is not empty' type 'I'.
Endif.
Regards,
Jagadish. -
How to retrieve the Field Name of a Table
Hi guys,
I'm trying to retrieve the field name of a table in java, but i don't know how to do it. Could somebody help me?Let say i have a table name Itemmaster, then
i want to retrieve its field and display to dos prompt.
Example :
Item No.
Description
Quantity
It is possible to retrieve the fields?
What could be the possible command in java using packages Java.sql.*?
Thanks in advanced...
Best regards,
DharryThe ResultSet class, which is how query results are returned in JDBC, has methods to get at the metadata for the table queried, including column names:
ResultSet resultSet=statement.executeQuery("select * from table");
resultSetMetadata=resultSet.getMetaData();
resultSetMetadata.getColumnLabel(column+1); -
Colour to field in an internal table
how to colour a particular data in a particular field of an internal table.
See this
1. add one more field to ur final internal table say COLOR(4)
2. in layout wa_layout-style_fname = 'COLOR'. " if its grid
wa_layout-style_fieldname = 'COLOR'. "if its list
3. read table itab index 3.
itab-color = 'C410'.
modify itab index 3
4. see program SHOWCOLO for all color codes
1. Add a field of data type CHAR(3) to the internal output table.
2. Enter the color code in the appropriate field of the row to be colored in the internal
output table:
Code: 'Cxy'
C = Color (all codes begin with 'C')
x = color number ('1' - '9')
y = highlight ('0' = off, '1' = on)
3. Assign the internal output table color code field name to the IS_LAYOUT importing
structure IS_LAYOUT-INFO_FIELDNAME field and pass this structure in the ALV call
interface.
To enable row coloring, you should add an additional field to your list data table. It should be of character type and length at least 4. This field will contain the color code for the row. So, lets modify declaration of our list data table gt_list.
you should fill the color code to this field. Its format will be the same as explained before at section C.6.3. But how will ALV Grid know that you have loaded the color data for the row to this field. So, you make it know this by passing the name of the field containing color codes to the field INFO_FNAME of the layout structure.
e.g.
ps_layout-info_fname = <field_name_containing_color_codes>. e.g. ROWCOLOR
You can fill that field anytime during execution. But, of course, due to the flow logic of screens, it will be reflected to your list display as soon as an ALV refresh occurs.
You can color an entire row as described in the next section. However, this method is less time consuming.
Coloring Individual Cells
This is the last point about coloring procedures for the ALV Grid. The procedure is similar to coloring an entire row. However, since an individual cell can be addressed with two parameters we will need something more. What is meant by more is a table type structure to be included into the structure of the list data table. It seems strange, because including it will make our list data structure deep. But anyhow ALV Grid control handles this.
The structure that should be included must be of type LVC_T_SCOL. If you want to color the entire row, this inner table should contain only one row with field fname is set to space, some color value at field col, 0 or 1 at fields int (intensified) and inv (inverse).
If you want to color individual cells, then for each cell column, append a line to this inner table which also contains the column name at field fname. It is obvious that you can color an entire column by filling this inner table with a row for that column for each row in the list data table.
If it is in ALv refer the following code:
*& Report ZDEMO_ALVGRID *
*& Example of a simple ALV Grid Report *
*& The basic ALV grid, Enhanced to display each row in a different *
*& colour *
REPORT zdemo_alvgrid .
TABLES: ekko.
type-pools: slis. "ALV Declarations
*Data Declaration
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
line_color(4) type c, "Used to store row color attributes
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*ALV data declarations
data: fieldcatalog type slis_t_fieldcat_alv with header line,
gd_tab_group type slis_t_sp_group_alv,
gd_layout type slis_layout_alv,
gd_repid like sy-repid.
*Start-of-selection.
START-OF-SELECTION.
perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform display_alv_report.
*& Form BUILD_FIELDCATALOG
Build Fieldcatalog for ALV Report
form build_fieldcatalog.
There are a number of ways to create a fieldcat.
For the purpose of this example i will build the fieldcatalog manualy
by populating the internal table fields individually and then
appending the rows. This method can be the most time consuming but can
also allow you more control of the final product.
Beware though, you need to ensure that all fields required are
populated. When using some of functionality available via ALV, such as
total. You may need to provide more information than if you were
simply displaying the result
I.e. Field type may be required in-order for
the 'TOTAL' function to work.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO Item'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'STATU'.
fieldcatalog-seltext_m = 'Status'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'Item change date'.
fieldcatalog-col_pos = 3.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
fieldcatalog-col_pos = 4.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'PO quantity'.
fieldcatalog-col_pos = 5.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Order Unit'.
fieldcatalog-col_pos = 6.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-seltext_m = 'Net Price'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 15.
fieldcatalog-datatype = 'CURR'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-seltext_m = 'Price Unit'.
fieldcatalog-col_pos = 8.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
endform. " BUILD_FIELDCATALOG
*& Form BUILD_LAYOUT
Build layout for ALV grid report
form build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
Set layout field for row attributes(i.e. color)
gd_layout-info_fieldname = 'LINE_COLOR'.
gd_layout-totals_only = 'X'.
gd_layout-f2code = 'DISP'. "Sets fcode for when double
"click(press f2)
gd_layout-zebra = 'X'.
gd_layout-group_change_edit = 'X'.
gd_layout-header_text = 'helllllo'.
endform. " BUILD_LAYOUT
*& Form DISPLAY_ALV_REPORT
Display report using ALV grid
form display_alv_report.
gd_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_special_groups = gd_tabgroup
IT_EVENTS = GT_XEVENTS
i_save = 'X'
is_variant = z_template
tables
t_outtab = it_ekko
exceptions
program_error = 1
others = 2.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
endform. " DISPLAY_ALV_REPORT
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
form data_retrieval.
data: ld_color(1) type c.
select ebeln ebelp statu aedat matnr menge meins netpr peinh
up to 10 rows
from ekpo
into table it_ekko.
*Populate field with color attributes
loop at it_ekko into wa_ekko.
Populate color variable with colour properties
Char 1 = C (This is a color property)
Char 2 = 3 (Color codes: 1 - 7)
Char 3 = Intensified on/off ( 1 or 0 )
Char 4 = Inverse display on/off ( 1 or 0 )
i.e. wa_ekko-line_color = 'C410'
ld_color = ld_color + 1.
Only 7 colours so need to reset color value
if ld_color = 8.
ld_color = 1.
endif.
concatenate 'C' ld_color '10' into wa_ekko-line_color.
wa_ekko-line_color = 'C410'.
modify it_ekko from wa_ekko.
endloop.
endform. " DATA_RETRIEVAL
Please give me reward points... -
Comparing each value of two internal tables
HI everybody,
i have two internal tables itab1 and itab2 same structure
both r having four fields each and field with values
now i need to compare the two internal tables
and if every value of itab1 matches itab2
then i have to write one select quirie for the following given description
compare past and current shipping point
compare internal_table2 and internal_table3
if entry in internal_table2 and internal table3 match
variable_tknum = internal_table2-tknum
endif.
for each entry that matches:
select vlabdata into zi_vlabdata from vlbl where vbeln = variable_tknum and vlbl-vlabtyp = 'ZIBOOKNO'.
plz give me solution for this
thanks
hridhayanjili.sort : ITAB1 by f1,f2,f3,f4,
ITAB2 by f1,f2,f3,f4.
LOOP AT ITAB1.
READ TABLE ITAB2 WITH KEY F1 = ITAB1-F1
F2 = ITAB1-F2
F3 = ITAB1-F3
F4 = ITAB1-F4 BINARY SEARCH.
IF SY-SUBRC = 0.
*--all the fields of ITAB1 and ITAB2 are matching .
*--write your logic here
ELSE.
*--ITAB1 and ITAB2 records are not matching.
ENDIF.
ENDLOOP.
Regards
Srikanth
Message was edited by: Srikanth Kidambi -
Two internal tables with different structures
Hi Experts,
I Have two internal tables.
Table 1 structure:
Name
Age
Table 2 structure :
Name
age
branch
Now the table 1 has some 5 data's and table 2 is empty.
First i want to move that 5 data's from table 1 to table 2.
Then the branch field is same for all records. its stored in a separate field called 'Branch'.
finallay i need to move that branch to internal table 2 for all records.
So the Table 2 should has five records and each record should have the branch.Its like,
Name Age Branch
name1 10 ECE
name2 10 ECE
I didnt use with header line for both tables. In function module i declared as table parameter.
Please give me a logic.
Helps will be appreciated.Since the structure of yur both internal table is different so you can't use ITAB1[] = ITAB2[] statements.
In this case you have to loop on first table then move data into second table and appned data into second table.
Declare work area for both table with like line of statement as follows
data: wa_itab1 like line of itab1,
wa_itab2 like line of itab2.
Loop at ita1 into wa_itab1.
wa_itab2-name = wa_itab1-name.
wa_itab2-age = wa_itab1-age.
wa_itab2-branch = 'ECE'.
append wa_itab to itab2.
clear wa_itab1, wa_itab2.
endloop.
Hope this will solve your problem. -
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,
VishalHi,
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 -
Matching data for two internal Table
hi guru's,
i have two internal table that is ITAB and itab1, and both has more than 2000 records, but MATNR is common field in both, so i want to update itab from itab1 according to matnr. can anyone please help me? actually i was using read table but it was not doing correct.
regards Nitin.dear all,
thanx for reply again...but still same problem. actually i m making a report for material price comparison
purchased in current month and same material if purchased in before months. so i need maintain the final ITAB with including same material if purchased in previus months.
ITAB1 : EBELN BLDAT MATNR WRBTR
100023 20080101 abcd 100.00
100025 20080106 xyzr 250.00
100028 20080102 abcd 100.00
100129 20080117 xyzr 150.00
100159 20080126 uvwx 170.00
ITAB2 : EBELN BLDAT1 MATNR WRBTR1
200026 20080201 abcd 105.00
200024 20080206 xyz_r4 250.00
200023 20080201 abcd 100.00
200129 20080217 xyzrw 150.00
200152 20080225 uvwx 190.00
Final record which i need.
ITAB3: EBELN BLDAT MATNR WRBTR WRBTR1
100023 20080101 abcd 100.00 105.00
100023 20080101 abcd 100.00 105.00
100159 20080126 uvwx 170.00 190.00
please suggest me accordingly...
regards nitin. -
I have two separate internal tables. However , they have a common field matnr. In the report output, the two internal tables should be joined by this common field. Can this be done with an ALV . The common field Matnr should appear to the extreme left. Followed by itab1 and then itab2 . Its in a sense Matnr is the header , but it shows as rows. Each matnr has several item in both itab1 and itab2 , it is not necessary that total number of item data in itab1 and itab2 will be same .
You can see example program :
TYPE-POOLS: slis.
DATA: BEGIN OF itab OCCURS 0,
vbeln TYPE vbeln,
expand,
END OF itab.
DATA: BEGIN OF itab1 OCCURS 0,
vbeln TYPE vbeln,
posnr TYPE posnr,
matnr TYPE matnr,
netpr TYPE netpr,
END OF itab1.
DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv.
DATA: s_fieldcatalog TYPE slis_fieldcat_alv.
s_fieldcatalog-col_pos = '1'.
s_fieldcatalog-fieldname = 'VBELN'.
s_fieldcatalog-tabname = 'ITAB'.
s_fieldcatalog-rollname = 'VBELN'.
s_fieldcatalog-outputlen = '12'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
s_fieldcatalog-col_pos = '1'.
s_fieldcatalog-fieldname = 'VBELN'.
s_fieldcatalog-tabname = 'ITAB1'.
s_fieldcatalog-rollname = 'VBELN'.
s_fieldcatalog-outputlen = '12'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
s_fieldcatalog-col_pos = '2'.
s_fieldcatalog-fieldname = 'POSNR'.
s_fieldcatalog-tabname = 'ITAB1'.
s_fieldcatalog-rollname = 'POSNR'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
s_fieldcatalog-col_pos = '3'.
s_fieldcatalog-fieldname = 'MATNR'.
s_fieldcatalog-tabname = 'ITAB1'.
s_fieldcatalog-rollname = 'MATNR'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
s_fieldcatalog-col_pos = '4'.
s_fieldcatalog-fieldname = 'NETPR'.
s_fieldcatalog-tabname = 'ITAB1'.
s_fieldcatalog-rollname = 'NETPR'.
s_fieldcatalog-do_sum = 'X'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
DATA: s_layout TYPE slis_layout_alv.
s_layout-subtotals_text = 'SUBTOTAL TEXT'.
s_layout-key_hotspot = 'X'.
s_layout-expand_fieldname = 'EXPAND'.
SELECT vbeln UP TO 100 ROWS
FROM
vbak
INTO TABLE itab.
IF NOT itab[] IS INITIAL.
SELECT vbeln posnr matnr netpr
FROM vbap
INTO TABLE itab1
FOR ALL ENTRIES IN itab
WHERE vbeln = itab-vbeln.
ENDIF.
DATA: v_repid TYPE syrepid.
v_repid = sy-repid.
DATA: s_keyinfo TYPE slis_keyinfo_alv.
s_keyinfo-header01 = 'VBELN'.
s_keyinfo-item01 = 'VBELN'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = v_repid
is_layout = s_layout
it_fieldcat = t_fieldcatalog
i_tabname_header = 'ITAB'
i_tabname_item = 'ITAB1'
is_keyinfo = s_keyinfo
TABLES
t_outtab_header = itab
t_outtab_item = itab1
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Thanks
Seshu
Maybe you are looking for
-
Why does apple not allow iphone to open .rtf word documents
Before you get lost in my post, please remember this. I simply want to know how to view .rtf word document files from my mac products. It's vital. So there you go, please don't get upset at me because of my love/hate relationship with mac products
-
Xorg.conf resolution error resolution wont set.
hello i seem to be having troubles with my xorg.conf file. Im trying to set my resolution which is 1680x1050 here is the link to the exact monitor im using http://www.amazon.com/Samsung-SyncMaste - B0013PSOT0 here is a paste bin of my xorg.conf outpu
-
I'm getting no power on the MacBook when plugged in. The battery has drained.
The battery has drained on my MacBook and the power cord does not seem to connect. The light on the plug does not light. I pulled the battery to reset and plugged it in again but it does not charge or turn on. What can I do now?
-
The DB is collecting counts. We want to collect the counts into a bag, then once in the bag be able to report the counts (need to collect on an hourly basis)
-
Query to show stock value per group
Hi Experts Would it be possible to create a query which would show me the stock value per item group in SAP? I know this can be done through Stock Audit report etc, but as we have over 300 item groups I would like to see a report which show me only