Sorting internal table by date
Hello experts,
i wat to sort internal table in asscending order and am using the code as follows,
APPEND wa_final TO it_final.
sort it_final by edatu vbeln ASCENDING.
am getting output as 05.09.2008
10.09.2008
27.08.2008
but i want in 27.08.2008
05.09.208
10.09.2008
please help me ASAP.
Thanks,
vino....
Hi
I think you uploaded date field as your output format. If it is in ddmmyyyy format, when you sort it, automatically it will sort. Check your input entries.
Otherwise, what you had written is correct.
check your code
Regards,
Dhanunjaya Reddy.
Similar Messages
-
How to find min and max of a field from sorted internal table
Hi,
I have sorted Internal Table by field f1.
How do I find max and min value of f1.
For min value of f1 I am using,
READ TABLE IT1 INDEX 1.
IT1-F1 = MIN.
Is this correct? And how do I find the max value of f1 from this table.
Thanks,
CDYes, that is right, and you can get the max like this.
data: lv_lines type i.
* get min
READ TABLE IT1 INDEX 1.
MIN = IT1-F1.
* get max
lv_lines = lines( it1 ).
read table it1 index lv_lines.
MAX = IT1-F1.
Regards,
Rich Heilman -
How to pass internal table with data in ABAP OO
Hi experts ,
Here is the problem...
I create a screen 100 and use the internal table to get data from database, and then press the button on screen 100 , it will call screen 200.
I use ABAP OO code in screen 200, and i want to keep the internal table with data that i get from the sceen 100 parts, but it seems that it just supports to create a new internal table and get data from database in ABAP OO. That means i need to create a new table to save the data in internal table ? Or there is any other solution something like exporting or memory id ...
ps . the internal table in screen 100 is declared in global area, the beginning of the code.
Please give me some advice, thanks a lot!
Regards ,
ClaireI have already know how to do, here is my code:
METHODS fill_tree importing itab2 like itab1.
CALL METHOD: me->fill_tree exporting itab2 = itab1.
In METHOD fill_tree,
declare
data: itab3 TYPE STANDARD TABLE OF itab,
itab3[] = itab1[].
It is useful to me, thanks a lot. -
Can we create global internal table in data dictionary
help me
i want to know whether we can create global internal tables in data dictionaryHi Swathi,
The whole concept of internal table is to manipulate the data at runtime.
This replaces the concept of two dimentional array in other languages.
The power of internal tables is it gets lakhs of records at runtime. I mean it can accomodate lots of records at runtime.
So you can create a table type in DDIC and use it to declare your internal table.
Yes, You can create global internal tables for function modules.
By declaring the internal table in top include you can use this internal table all the function modules of that function group. So if one function module is filling the data another can use it as it is stored globally.
Hope this answers your curiosity.
Award points if useful else getback.
Aleem. -
How can i compare 2 internal table's data which have same structure ?
hi friends,
i want to know how to compare 2 internal table's data which have same structureDATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
DATA: ITAB LIKE TABLE OF LINE,
JTAB LIKE TABLE OF LINE.
DO 3 TIMES.
LINE-COL1 = SY-INDEX.
LINE-COL2 = SY-INDEX ** 2.
APPEND LINE TO ITAB.
ENDDO.
MOVE ITAB TO JTAB.
LINE-COL1 = 10. LINE-COL2 = 20.
APPEND LINE TO ITAB.
IF ITAB GT JTAB.
WRITE / 'ITAB GT JTAB'.
ENDIF.
APPEND LINE TO JTAB.
IF ITAB EQ JTAB.
WRITE / 'ITAB EQ JTAB'.
ENDIF.
LINE-COL1 = 30. LINE-COL2 = 80.
APPEND LINE TO ITAB.
IF JTAB LE ITAB.
WRITE / 'JTAB LE ITAB'.
ENDIF.
LINE-COL1 = 50. LINE-COL2 = 60.
APPEND LINE TO JTAB.
IF ITAB NE JTAB.
WRITE / 'ITAB NE JTAB'.
ENDIF.
IF ITAB LT JTAB.
WRITE / 'ITAB LT JTAB'.
ENDIF.
The output is:
ITAB GT JTAB
ITAB EQ JTAB
JTAB LE ITAB
ITAB NE JTAB
ITAB LT JTAB
This example creates two standard tables, ITAB and JTAB. ITAB is filled with 3 lines and copied to JTAB. Then, another line is appended to ITAB and the first logical expression tests whether ITAB is greater than JTAB. After appending the same line to JTAB, the second logical expression tests whether both tables are equal. Then, another line is appended to ITAB and the third logical expressions tests whether JTAB is less than or equal to ITAB. Next, another line is appended to JTAB. Its contents are unequal to the contents of the last line of ITAB. The next logical expressions test whether ITAB is not equal to JTAB. The first table field whose contents are different in ITAB and JTAB is COL1 in the last line of the table: 30 in ITAB and 50 in JTAB. Therefore, in the last logical expression, ITAB is less than JTAB.
regards,
srinivas
<b>*reward for useful answers*</b> -
Internal table -Logic-Data manipulation
Hi,
I have following requirement.
Input Internal table
*A T1 1 3
*A T2 4 5
*A T3 1 2
*B T4 1 2
*B T5 3 6
*B T6 1 7
Output
*A T1 1 3
*A T2 4 5
*B T6 1 7
basically i should delete overlapping records
eg: since A t3 1 2 is overlapping record it should be deleted.
report x.
DATA: BEGIN OF ITAB OCCURS 0,
FLD1 TYPE CHAR20,
FLD2 type char20,
NUM1 TYPE I,
NUM2 TYPE I,
END OF ITAB.
ITAB-FLD1 = 'A'.
ITAB-FLD2 = 'T1'.
ITAB-NUM1 = '1'.
ITAB-NUM2 = '3'.
APPEND ITAB.
ITAB-FLD1 = 'A'.
ITAB-FLD2 = 'T2'.
ITAB-NUM1 = '4'.
ITAB-NUM2 = '5'.
APPEND ITAB.
ITAB-FLD1 = 'A'.
ITAB-FLD2 = 'T3'.
ITAB-NUM1 = '1'.
ITAB-NUM2 = '2'.
APPEND ITAB.
ITAB-FLD1 = 'B'.
ITAB-FLD2 = 'T4'.
ITAB-NUM1 = '1'.
ITAB-NUM2 = '2'.
APPEND ITAB.
ITAB-FLD1 = 'B'.
ITAB-FLD2 = 'T5'.
ITAB-NUM1 = '3'.
ITAB-NUM2 = '6'.
APPEND ITAB.
ITAB-FLD1 = 'B'.
ITAB-FLD2 = 'T6'.
ITAB-NUM1 = '1'.
ITAB-NUM2 = '7'.
APPEND ITAB.
LOOP At ITAB.
ENDLOOP.Hi Praveen,
You have to SORT the internal table ITAB by a field of your requirement. Then DELETE adjacent entries in the internal table by comparing the field of interest.
SORT ITAB BY NUM1 NUM2.
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING NUM1 NUM2.
After doing this you can perform the required actions on ITAB.
Hope this has cleared your doubt.
Thanks & Regards,
Ramya Shree.M.R -
Filling dynamic internal table with data from other internal table
Hi Friends,
My problem is that i have already built a dynamic internal table
(class int_table->create) but now i want to fill it with data from other internal table.
The dynamic table column name and the field value of the data filled internal table are same, but how to access that column name, since i cant hard code it anyway.
Like if my werks field value is '8001'. I want to place it under the column 8001 of dynamic table, Can anybody help me in this regard?
Awarding points is not a problem for even giving a slight hint.
Best RegardsHi
See this
Dynamic internal table is internal table that we create on the fly with flexible column numbers.
For sample code, please look at this code tutorial. Hopefully it can help you
Check this link:
http://www.****************/Tutorials/ABAP/DynamicInternaltable/DynamicInternalTable.htm
Sample code:
DATA: l_cnt(2) TYPE n,
l_cnt1(3) TYPE n,
l_nam(12),
l_con(18) TYPE c,
l_con1(18) TYPE c,
lf_mat TYPE matnr.
SORT it_bom_expl BY bom_comp bom_mat level.
CLEAR: l_cnt1, <fs_dyn_wa>.
Looping the component internal table
LOOP AT it_bom_expl INTO gf_it_bom_expl.
CLEAR: l_cnt1.
AT NEW bom_comp.
CLEAR: l_cnt, <fs_dyn_wa>, lf_mat.
For every new bom component the material data is moved to
temp material table which will be used for assigning the levels
checking the count
it_mat_temp[] = it_mat[].
Component data is been assigned to the field symbol which is checked
against the field of dynamic internal table and the value of the
component number is been passed to the dynamic internal table field
value.
ASSIGN COMPONENT c_comp_list OF STRUCTURE <fs_dyn_wa> TO
<fs_check>.
<fs_check> = gf_it_bom_expl-bom_comp.
ENDAT.
AT NEW bom_mat.
CLEAR l_con.
ENDAT.
lf_mat = gf_it_bom_expl-bom_mat.
Looping the temp internal table and looping the dynamic internal table
*by reading line by line into workarea, the materialxxn is been assigned
to field symbol which will be checked and used.
LOOP AT it_mat_temp.
l_nam = c_mat.
l_cnt1 = l_cnt1 + 1.
CONCATENATE l_nam l_cnt1 INTO l_nam.
LOOP AT <fs_dyn_table2> ASSIGNING <fs_dyn_wa2>.
ASSIGN COMPONENT l_nam OF STRUCTURE <fs_dyn_wa2> TO <fs_xy>.
ENDLOOP.
IF <fs_xy> = lf_mat.
CLEAR lf_mat.
l_con1 = l_con.
ENDIF.
Checking whether the material exists for a component and if so it is
been assigned to the field symbol which is checked against the field
of dynamic internal table and the level of the component number
against material is been passed to the dynamic internal table field
value.
IF <fs_xy> = gf_it_bom_expl-bom_mat.
ASSIGN COMPONENT l_nam OF STRUCTURE <fs_dyn_wa> TO <fs_check>.
CLEAR l_con.
MOVE gf_it_bom_expl-level TO l_con.
CONCATENATE c_val_l l_con INTO l_con.
CONDENSE l_con NO-GAPS.
IF l_con1 NE space.
CONCATENATE l_con1 l_con INTO l_con SEPARATED BY c_comma.
CLEAR l_con1.
l_cnt = l_cnt - 1.
ENDIF.
<fs_check> = l_con.
l_cnt = l_cnt + 1.
ENDIF.
ENDLOOP.
AT END OF bom_comp.
At end of every new bom component the count is moved to the field
symbol which is checked against the field of dynamic internal table
and the count is been passed to the dynamic internal table field
value.
ASSIGN COMPONENT c_count OF STRUCTURE <fs_dyn_wa> TO <fs_check>.
<fs_check> = l_cnt.
INSERT <fs_dyn_wa> INTO TABLE <fs_dyn_table>.
ENDAT.
ENDLOOP.
Reward if useful
Anji -
Hashed & sorted internal tables
hi all,
can any body help me to understand the concept of <b>hashed & sorted</b> internal table & how they can be used for improve the performance of report.
regards
DeepakHi Deepak,
If you have an internal table in your program which is used solely for lookup, it is good programming practice to use a hash table. The example below shows this, in combination with a method for buffering SELECT SINGLE results.
Code
*& Form select_dispo
Get MRP controller and in-house production time from material
and plant
--> MATNR Material
--> RESWK Plant
<-- DISPO MRP controller
<-- DZEIT In-house production time
form select_from_marc using matnr werks dispo dzeit.
types: begin of mrp_lookup_type,
matnr like marc-matnr,
werks like marc-werks,
dispo like marc-dispo,
dzeit like marc-dzeit,
end of mrp_lookup_type.
Define static hashed table to hold results
statics: st_mrp type hashed table of mrp_lookup_type
with unique key matnr werks.
data: l_wa_mrp type mrp_lookup_type.
clear dzeit.
See if data is in the table
read table st_mrp into l_wa_mrp with table key matnr = matnr
werks = werks.
If not in table, get it from the database
if not sy-subrc is initial.
select single dispo dzeit from marc
into corresponding fields of l_wa_mrp-dispo
where matnr eq matnr
and werks eq werks.
Insert into table
l_wa_mrp-matnr = matnr.
l_wa_mrp-werks = werks.
insert l_wa_mrp into table st_mrp.
endif.
dispo = l_wa_mrp-dispo. " MRP Controller
dzeit = l_wa_mrp-dzeit. " Inhouse production time
endform. " select_from_marc -
Hi all,
I have a scenario wherein i have to sort the internal table without using the sort function( i.e sort syntax).Is there any logic.
Can nebody pls help me out.
Regards
JakHai,
To understand bubble sort, think of an air bubble rising in water
To sort N items, N passes are made through the data.
The result of the first pass is that the smallest item is in the last location of the array.
The result of the second pass is that the second smallest item is in the second last location of the array.
etc.
After N passes, the entire array is sorted.
The operation in each pass is as follows:
First, the values in the first two locations are compared. If necessary the values are exchanged, so that the smaller one is last.
Then, the values in the second and third locations are compared. If necessary the values are exchanged, so that again the smaller one is last.
This process repeats to the end of the array.
In effect, the smaller item bubbles its way towards the top. It keeps on going until either it reaches the top (and the pass ends), or it strikes a smaller item. In that case it stops itself, and gives that smaller item a nudge to start it on its way.
If a complete pass is made without any exchanges being made, the data must already be sorted. This is easily checked. Thus it might be possible to halt the algorithm without going through all N passes. -
Hi
How to sort internal by binary search...please don't suggest SORT TABLE or HASHED table to use...hi,
Use SORT Statement....
i.e,
sort itab.
Here is the code
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.
SORT PERSON BY NAME AS TEXT
SORT PERSON DESCENDING BY COUNTRY AGE NAME.
SORT PERSON DESCENDING BY AGE ASCENDING NAME AS TEXT.
Reward if it helps,
Regards,
Santosh -
Sorting internal table with variable no of fields
Hi ,
I want to sort the internal table with variable no of fields . Every time the report is run the number of fields as well as the sequence by which the table has to be sorted changes . How to do this .
regardsHi,
Please try this.
DATA: BEGIN OF ITAB OCCURS 0,
F1(4),
END OF ITAB.
DATA: BEGIN OF ITAB2 OCCURS 0,
F1(1),
F2(1),
F3(4),
END OF ITAB2.
ITAB-F1 = '01AC'.
APPEND ITAB.
ITAB-F1 = '02AB'.
APPEND ITAB.
ITAB-F1 = '01CD'.
APPEND ITAB.
ITAB-F1 = '02CA'.
APPEND ITAB.
LOOP AT ITAB.
ITAB2-F1 = ITAB-F1+2(1).
ITAB2-F2 = ITAB-F1+3(1).
ITAB2-F3 = ITAB-F1.
APPEND ITAB2.
ENDLOOP.
SORT ITAB2 BY F1 ASCENDING
F2 DESCENDING.
LOOP AT ITAB2.
WRITE: / ITAB2-F3.
ENDLOOP.
REWARD POINTS IF HELPFUL -
Hello,
I am having problems sorting a table.
The internal table has following data:
Doc_num..........ver_num
TEST123.............02
TEST123.............01
TESTXYZ.............02
TESTXYZ.............03
TESTXYZ.............01
TESTXYZ.............04
Now I am using statement :
SORT itab by doc_num ver_num.
Now this does sort the data according to correct doc_num but not according to ver_num.
Please help.
Thanks.
Regards,
RajeshNote: I have defined doc_num and ver_num s string....
My input is:
TEST123.............1
TEST123.............2
TESTXYZ.............1
TESTXYZ.............20
TESTXYZ.............10
TESTXYZ.............2
I am seeing following:
TEST123.............1
TEST123.............1
TESTXYZ.............1
TESTXYZ.............10
TESTXYZ.............20
TESTXYZ.............2
I want to see as follows:
TEST123.............1
TEST123.............2
TESTXYZ.............1
TESTXYZ.............2
TESTXYZ.............10
TESTXYZ.............20 -
SORT INTERNAL TABLE USING NON KEY OF THE INTERNAL TABLE
HI,
i have one query for the cdpos table of abap.
What i am looking is i want the latest CHANENR of the cdpos for that
objectid and tabname and fname in my internal table.
what i thought of doing was to sort my internal table with objectid changnr tabname fname in descending order
and than use delete adjacent duplicates command
BUt that is not sorting based on all field , its sorting on changnr only
please let me know what can i dono, that is not what i am looking at,
I am saying say i have internal table cdpos
OBJECTCLAS OBJECTID CHANGENR TABNAME FNAME
RECN_RECN |0100TEST1 0000384409| VICN01 |RECNEND
RECN_RECN 0100TEST1 0000383462 VICN01 RECNLIFNR
RECN_RECN 0100TEST1 0000360190 VICN01 RECNEND
RECN_RECN 0100TEST1 0000340630 VICN01 RECNEND
this is my debug output after sorting on objectid changenr tabname fname in descending
i wanted line 2nd to be at last so when i use delete adjacent command i can get 2 line item i.e 1st and 2nd line ... -
Internal table transfer data to the other
Hi Guys,
I am trying to insert from one of my internal table itab1 to the other table itab2, the itab2 will have only one field with length of may be 1000 charachters, all the fields thats gonna go from itab1 to itab2 should be pipeline delimited. Please try to help me.
Thanks
Rajeev GuptaRajeev,
Have you gotten it to work yet?
Here is a slight change to review as well. This removes the hard-coding of DO 3 TIMES. Instead, it determines how many fields exist in TAB1 - and places that value into feld UU.
Then uu is used in the DO loop.
REPORT ZSEND .
field-symbols: <l_field> type any.
field-symbols: <ls_table> type any.
data: out_fld(1000).
data: begin of tab1 occurs 0,
f1(10),
f2(20),
f3(30),
end of tab1.
data: begin of tab2 occurs 0,
f1(1000),
end of tab2.
tab1-f1 = '1f1'.
tab1-f2 = '1f2'.
tab1-f3 = '1f3'.
append tab1.
tab1-f1 = '2f1'.
tab1-f2 = '2f2'.
tab1-f3 = '2f3'.
append tab1.
data: uu type i.
describe field tab1 type tab1 components uu. "determine # of fields
loop at Tab1.
clear out_fld.
do uu times. " uu = number of fields in a row of Tab1
assign component sy-index of structure Tab1 to <l_field>.
concatenate out_fld <l_field> into out_fld separated by '|'.
enddo.
append out_fld to Tab2.
endloop. -
Pass Date from Internal table to Date field of Deadline(in expression tab)
Hello,
I need to set deadline in workflow according to dates in Internal table. So please guide how to achieve this.Thanks Rick for taking interest in my issue.
Business scenario:-
--> when PO is created delivery date is given in PO.
--> Now all materials in PO can be delivered on same date or on different dates.
-->Their can be same delivery date or different delivery dates.
--> So for example:- For a PO their are 4 materials-
MATERIAL NAME DELIVERY DATE
Material1 10.11.2011
Material2 20.11.2011
Material3 20.11.2011
Material4 10.11.2011
Now Material2 and Material3 will be delivered on 20.11.2011 and Material1 and Material4 will be delivered on 10.11.2011.
Now a reminder mail should go to Vendor of that PO before 2 days of delivery date mean on 08.11.2011 and 18.11.2011.
So to store 2 dates I require internal table.
Now I am able to trigger reminder mail for 2 dates by using multiline element in miscellaneous tab of activity.
But as I discussed in previous post that if I add multiline element in Date field of Requested start deadline then it gives error(plz check prev. post to see exact error). So I tried to used internal table(container in workflow) in deadline which is filled from a task in activity, but it is also not working means mail is triggered as soon as worflow is executed.
So the main problem is deadline is not created based on dates in internal table and other all the things are working perfectly.
As I am very new to workflow area, I might be going wrong somewhere.
So please guide how to set deadline for multiple dates(according to my scenario).
Thanks in advance.
Regards,
Mihir
Maybe you are looking for
-
Not able to download and install flash player
I have tried several times to download the current flash player for IE 8. I get this error and have not been able to resolve it. Windows Data Execution Prevention detected an add-on trying to use system memory incorrectly. This can be caused by a mal
-
i also downloaded the newest version of itunes
-
Does MLB At Bat 2011 support video airplay?
When I play a highlight on my MLB At Bat app on my iphone and click airplay and chose apple tv, all i get on my tv is the audio and no picture. Does MLB At Bat 2011 support video airplay?
-
802.1X dyanmic VLAN assignment DHCP issue (Vista client)
I am labbing dynamic VLAN assignment and have run into a small problem. The switchport is succesfully changing to the new VLAN, but my test PC seems to get an IP address in the native data VLAN before being moved to the new dynamic assigned VLAN. S
-
There's a lock with a arrow around it at the top of the screen. How do I get rid of it?
I have a lock with a arrow around it and don't know what it is and can't get rid of it. How do I get rid of it and will it stop certain calls from coming in?