Standard versus sorted tables
Hi,
in SE30 (abap runtime analysis) i have tried to possible solutions for a DB access, and according to the performance tuning rules you should use sorted(or hashed) tables in stead of standard table, but in my case the runtime is almost equal. How is that possible ? Any explanations ?
Situation : table RSSELDONE, more than 80000 records
Code 1 with standard table - runtime 6.710.000 ms
data: i_tab type table of rsseldone,
lwa like line of i_tab.
select * from rsseldone into table i_tab.
read table i_tab into lwa
with key rnr = 'REQU_3N57ZUZODOJ53FHTMO97BKDTH'.
Code 2 with sorted table - runtime 7.051.939 ms
data: i_stab type sorted table of rsseldone
with non-unique key
rnr
initial size 0,
lwa like line of i_stab.
select * from rsseldone into table i_stab.
read table i_stab into lwa
with table key rnr = 'REQU_3N57ZUZODOJ53FHTMO97BKDTH'.
Strange !
hi,
<u>Standard Table</u> - the most commonly used type of table. You can sort and resort this table anytime. You can have duplicate records in them. Recommend that when accessing these tables, you sort them by a key and then READ via a BINARY SEARCH - better performance. When you write to this table the record is "appended" to the end of the table. In order to maintain the sort sequence (if any) you must use the SORT command again.
<u>Sorted table</u> - this table has a defined sort sequence. You cannot resort. You can have duplicates. When you READ these tables, SAP automatically tries to use a BINARY SEARCH. Because you use a Binary Search, the retrieval time isexpodential to the number of records. When you write a record to this table the table is resorted.
<u>Hashed Table</u> - this table has a defined key. When you write to the table it uses a hashing algorithm to identify where the record is stored (think if this as writing the location of a page in an index of a book). When you READ this table the system looks up this "index" and retrieves the record. Because of this the retrieval time is constant. Writing to this type of table takes the most time as it needs to calculate the hashing algorithm.
Just go thorugh this link
http://help.sap.com/saphelp_46c/helpdata/EN/fc/eb35de358411d1829f0000e829fbfe/frameset.htm
Regard
anver
Similar Messages
-
Diff btwn STANDARD and SORTED tbls??
Hi Experts,
Just curious to know that, In Wht scenarios/requiremets, we need to create a internal table, like fillowing(or How they differ from TYPE STANDARD TABLE OF)??
<i><b>it_a504 TYPE SORTED TABLE OF a504 WITH UNIQUE KEY kunnr prodh.
wa_a504 TYPE a504,</b></i>.
thanq
Message was edited by:
Srikharmainly performance reason ,if you use sorted internal table then it will have good performance than standard intentable
The internal tables could be catogrised into two.
indexed : standard and sorted tables.
nonindexed: hash tables.
standard table: it is the one we use generally.In this the data is not sorted and the only thing we can do is just process the data with out any restriction on it.
sorted tables: it works in two different manner.
Frist one: is similar to standard table but the only difference is the data will be filled in a particular manner either ascending or descending.
Second one: u can also fill the table keeping any field as primary key.now the data will be filled based on that particular key.
Hash tables: u can use this when u want to fill your internal table avoiding the duplication of data.it never permits the duplicate record to be stored in a internal table
Thanks
seshu -
COLLECT: Which table is better to use - STANDARD or SORTED?
Hello Performance gurus,
I read this curious fact about COLLECT statement:
In standard tables that are filled using COLLECT only, the entry is determined by a temporary hash administrator. The workload is independent of the number of entries in the table. The hash administrator is temporary and is generally invalidated when the table is accessed to be changed. If COLLECT statements are specified after an invalidation, a linear search of all table rows is performed. The workload for this search increases in a linear fashion in relation to the number of entries.
In sorted tables, the entry is determined using a binary search. The workload has a logarithmic relationship to the number of entries in the table.
In hashed tables, the entry is determined using the hash administrator of the table and is always independent of the number of table entries.
So does this mean if we're populating a table using COLLECT we should prefer STANDARD over SORTED(due to the HASH administration)? Is there any performance overload while setting up the temporary hash administrator for STANDARD tables?
Please enlighten me.
BR,
SuhasActually I have just noticed I already had created a test program for this somewhere in the past.
Here are the results:
STANDARD 1.091.295
SORTED 3.159.771
HASHED 994.101
If for the STANDARD table you somehow destroy the hash administration (in this case it was done in the beginning by APPENDing one record):
STANDARD 2.255.905
SORTED 14.013
HASHED 8.022
(this 2nd execution was with less rows that the 1st execution, otherwise for the standard table it would take too long).
So this does prove that standard tables can be faster than sorted tables in that special case, but again I would not rely on that.
Rui Dantas -
Memory and performance when copying a sorted table to a standard table
Hello,
As you all probably know, it's not possible to use a sorted table as a tables parameter of a function module, but sometimes you want to use a sorted table in your function module for performance reasons, and at the end of the function module, you just copy it to a standard table to return to the calling program.
The problem with this is that at that moment, the contents of the table is in memory twice, which could result in the well known STORAGE_PARAMETERS_WRONG_SET runtime exception.
I've been looking for ways to do this without using an excessive amount of memory and still being performant. I tried four methods, all have their advantages and disadvantages, so I was hoping someone here could help me come up with the best way to do this. Both memory and performance are an issue.
Requirements :
- Memory usage must be as low as possible
- Performance must be as high as possible
- Method must work on all SAP versions from 4.6c and up
So far I have tried 3 methods.
I included a test report to this message, the output of this on my dev system is :
Test report for memory usage of copying tables
table1[] = table2[]
Memory : 192,751 Kb
Runtime: 436,842
Loop using workarea (with delete from original table)
Memory : 196,797 Kb
Runtime: 1,312,839
Loop using field symbol (with delete from original table)
Memory : 196,766 Kb
Runtime: 1,295,009
The code of the program :
I had some problems pasting the code here, so it can be found at [http://pastebin.com/f5e2848b5|http://pastebin.com/f5e2848b5]
Thanks in advance for the help.
Edited by: Dries Horions on Jun 19, 2009 1:23 PM
Edited by: Dries Horions on Jun 19, 2009 1:39 PM
Edited by: Dries Horions on Jun 19, 2009 1:40 PM
Edited by: Dries Horions on Jun 19, 2009 1:40 PMI've had another idea:
Create a RFC function like this (replace SOLI_TAB with your table types):
FUNCTION Z_COPY_TABLE .
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(IT_IN) TYPE SOLI_TAB
*" EXPORTING
*" VALUE(ET_OUT) TYPE SOLI_TAB
et_out[] = it_in[].
ENDFUNCTION.
and then try something like this in your program:
DATA: gd_copy_done TYPE c LENGTH 1.
DATA: gt_one TYPE soli_tab.
DATA: gt_two TYPE soli_tab.
PERFORM move_tables.
FORM move_tables.
CLEAR gd_copy_done.
CALL FUNCTION 'Z_COPY_TABLE'
STARTING NEW TASK 'ztest'
PERFORMING copy_done ON END OF TASK
EXPORTING
it_in = gt_one[].
CLEAR gt_one[].
WAIT UNTIL gd_copy_done IS NOT INITIAL.
ENDFORM.
FORM copy_done USING ld_task TYPE clike.
RECEIVE RESULTS FROM FUNCTION 'Z_COPY_TABLE'
IMPORTING
et_out = gt_two[].
gd_copy_done = 'X'.
ENDFORM.
Maybe this is a little bit faster than the Memory-Export?
Edited by: Carsten Grafflage on Jul 20, 2009 11:06 AM -
what is the diff between standard and sorted itab
Hi Abhay,
check the following explanation.
<b>Standard tables</b>
This is the most appropriate type if you are going to address the individual table entries using the index. Index access is the quickest possible access. You should fill a standard table by appending lines (ABAP APPENDstatement), and read, modify and delete entries by specifying the index (INDEX option with the relevant ABAP command). The access time for a standard table increases in a linear relationship with the number of table entries. If you need key access, standard tables are particularly useful if you can fill and process the table in separate steps. For example, you could fill the table by appending entries, and then sort it. If you use the binary search option (BINARY) with key access, the response time is logarithmically proportional to the number of table entries.
<b>Sorted tables</b>
This is the most appropriate type if you need a table which is sorted as you fill it. You fill sorted tables using the INSERTstatement. Entries are inserted according to the sort sequence defined through the table key. Any illegal entries are recognized as soon as you try to add them to the table. The response time for key access is logarithmically proportional to the number of table entries, since the system always uses a binary search. Sorted tables are particularly useful for partially sequential processing in a LOOP if you specify the beginning of the table key in the WHEREcondition.
Hope this helps.
Regards,
kinshuk -
All,
I have the following code While executing system is pointing to sy-tabix, but the data I am getting in the READ statement is from last record in the internal table
report z_9699_30.
tables : eket.
types : begin of ty_eket.
include structure eket.
types: end of ty_eket.
data: wa_eket type ty_eket.
data: it_eket like sorted table of wa_eket
with unique key primary_key
components ebeln ebelp etenr
with non-unique sorted key secondary_key
components ebeln ebelp.
parameters: p_ebeln like eket-ebeln.
parameters: p_ebelp like eket-ebelp.
select * from eket into table it_eket
where ebeln eq p_ebeln.
read table it_eket into wa_eket with table key secondary_key
components ebeln = p_ebeln
ebelp = p_ebelp.
Please copy and execute this by giving EBELN and EBELP from EKET
Please make sure while selecting from EKET please select data of multiple records available for same EBELP ie llike
Here below PO # 4500000003 and for Item # 00030 is have multiple records
Here in selection screen by giving PO # as 4500000003 (EBELN) Item # as 00030 (EBELP) , then in the above READ statement system giving SY-TABIX as 3 but if you see the WA_EKET-ETENR is showing 2 instead of 1. This is where is the issue is
EBELN
EBELP
ETENR
Header 4
4500000003
00010
1
4500000003
00020
1
4500000003
00030
1
4500000003
00030
2Now execute some
MOVE sy_tabix TO lv_index.
READ TABLE it_eket INTO wa_eket
INDEX lv_index USING KEY secondary_key.
BREAK-POINT.
READ TABLE it_eket INTO wa_eket
INDEX lv_index USING KEY primary_key.
BREAK-POINT.
and conclude yourself on the meaning of life index with two different keys defined...
Regards,
Raymond
PS: Reference in online help for sy-tabix now
Note that the sy-tabix system field is populated by the assigned secondary index, if sorted secondary keys are used. If this value is used for the subsequent index access to the internal table, the same table index must be explicitly used here. If used implicitly, the value would be interpreted as a primary index. -
Exporting An message Internal table to Standard program Internal Table
Hi,
In T-code VOFM, We have Goods issue routine 113, Now in Custmizing 913 is Configured. we are Checking the status of each handling unit of the Delivery. So I am getting the status Incomeplete Message for Multipe HU's. hence AM storing into One internal Table and Now I want To Export That Internal Table to Standard Program Internal Table 'WAT'.
If I raiseElaborate your questions Please.
-
Error when inserting or changing in a sorted table
Hi Experts,
When i am executing a webdynpro application it says Error when inserting or changing in a sorted table. Can any one help for this.
The termination type was: RABAX_STATE
The ABAP call stack was:
Method: GET_CATEGORY_LIST of program /1BCWDY/F9XHYWN4WKNMG4CDUGA8==CP
Method: IF_COMPONENTCONTROLLER~GET_CATEGORY_LIST of program /1BCWDY/F9XHYWN4WKNMG4CDUGA8==CP
Method: WDDOMODIFYVIEW of program /1BCWDY/F9XHYWN4WKNMG4CDUGA8==CP
Method: IF_WDR_VIEW_DELEGATE~WD_DO_MODIFY_VIEW of program /1BCWDY/F9XHYWN4WKNMG4CDUGA8==CP
Method: DO_MODIFY_VIEW of program CL_WDR_DELEGATING_VIEW========CP
Method: MODIFY_VIEW of program CL_WDR_VIEW===================CP
Method: DO_MODIFY_VIEW of program CL_WDR_CLIENT_COMPONENT=======CP
Method: DO_MODIFY_VIEW of program CL_WDR_WINDOW_PHASE_MODEL=====CP
Method: PROCESS_REQUEST of program CL_WDR_WINDOW_PHASE_MODEL=====CP
Method: PROCESS_REQUEST of program CL_WDR_WINDOW=================CP
in ST22
Object Definition
DATA: lo_node TYPE REF TO if_wd_context_node,
lo_node_info TYPE REF TO if_wd_context_node_info,
lo_element TYPE REF TO if_wd_context_element.
Additional Data declarations
DATA: lv_key TYPE string.
Get context node.
lo_node = wd_context->get_child_node( name = 'DROPDOWNLISTS' ).
lo_node_info = lo_node->get_node_info( ).
Call method to fetch the categories.
CALL METHOD cl_hap_wd_start_page_ui=>category_get_list
EXPORTING
add_on_application = add_on_application
IMPORTING
t_categories = lt_categories.
Append Default selection entry 'All'.
lw_category-category_id = '00000000'.
lw_category-category_name = 'All'.
APPEND lw_category TO lt_categories.
Sort table after appending the new entry.
SORT lt_categories ASCENDING.
Loop through the category list and populate key(category_id) value(category_name) pair for
LOOP AT lt_categories INTO lw_category.
lw_key_value-key = lw_category-category_id.
625 lw_key_value-value = lw_category-category_name.
>>>>> APPEND lw_key_value TO lt_key_values.------>Here it throws an error
627 CLEAR: lw_key_value, lw_category.
628 ENDLOOP.
629
630 * Bind the category key-value pair to the context attribute.
631 CALL METHOD lo_node_info->set_attribute_value_set
632 EXPORTING
633 name = 'CATEGORY_LIST'
634 value_set = lt_key_values.
635
636 * Make the entry 'All' as default selected.
637 CALL METHOD lo_node->set_attribute
638 EXPORTING
639 value = '00000000'
640 name = 'CATEGORY_LIST'.
641
642 ENDMETHOD.
643
644 method GET_EMPLOYEES.
645Hello Durga,
from the error what I understood is lt_key_values is a sorted table and you are trying append a new line to it. Incase of sorted table you need to use the INSERT statement and not the APPEND statement.
INSERT lw_key_value INTO table lt_key_values.
BR, Saravanan -
How to get standard view or table for the standard inforsource
Hi all:
According to business reqirement, we are going to use standard inforsource 0CO_OM_CCA_10,
we need to know the standard view or table in order to corresponding DataSource?
could you please tell me how to get the standard view or table or DataSource?
Couldn't thank you more!Hi Sony,
Goto RSA1>BI content installation>goto objects>double click on the Infosource>then a pop-up comes search for that infosource-->select it and click on transfer
Before that in the right side of the tab select the grouping as "Before and afterwards of the dataflow" and collection as automatic.
then you get all the datasource/cubes and all the object related to the infosource.
OR another option is-->
Goto RSA6 in the R/3 and search for the datasource with the name "0CO_OM_CCA_10" (don't forget to expand all the tree structure in RSA6)
then goto that datasource and double click on the datasource then you will get the Extract structure of that datasource.
double click on the extract structure then you may get the View name also.
hope this helps...
Regards,
Ravi Kanth -
Short Dump While Changing Non-KeyField of Sorted Table
Hello,
A short dump occurs while trying to change a field of a sorted table item passed as CHANGING parameter. Are non-key fields in a sorted structure protected? The error message does not explicitely say so. Can anyone link to documentation explaining this behavior?
best regards,
JNNYou are passing by reference with CHANGING.
It looks like read-only stuff can't be passed to method CHANGING.
When I pass a literal or constant, there is a syntax error.
System could have given you a syntax error instead of dump.
Have a look at this snippet. Both method calls throw syntax error.
CLASS mainclass DEFINITION.
PUBLIC SECTION.
CLASS-METHODS main.
PRIVATE SECTION.
CLASS-METHODS passref CHANGING cv_test TYPE i.
ENDCLASS. "mainclass DEFINITION
CLASS mainclass IMPLEMENTATION.
METHOD main.
"pass literal by ref
passref(
CHANGING
cv_test = '2'
"pass constant by ref
CONSTANTS lc_test TYPE i VALUE 1.
passref(
CHANGING
cv_test = lc_test
ENDMETHOD. "main
METHOD passref.
"nothing
ENDMETHOD. "passref
ENDCLASS. "mainclass IMPLEMENTATION
START-OF-SELECTION.
mainclass=>main( ). -
How to read the data from a sorted table
Hi all,
How to read data from the sorted tables. Please provide some examples.
Thanks and regards,
LisaYou can read like this :
DATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
DATA ITAB LIKE SORTED TABLE OF LINE WITH UNIQUE KEY COL1.
DO 4 TIMES.
LINE-COL1 = SY-INDEX.
LINE-COL2 = SY-INDEX ** 2.
INSERT LINE INTO TABLE ITAB.
ENDDO.
CLEAR LINE.
READ TABLE ITAB WITH TABLE KEY COL1 = 3
INTO LINE TRANSPORTING COL2.
WRITE: 'SY-SUBRC =', SY-SUBRC,
/ 'SY-TABIX =', SY-TABIX.
SKIP.
WRITE: / LINE-COL1, LINE-COL2. -
Hi all
I have created an advance table and using multiple selection.I set Sort Allowed property 'Yes' for every column in property inspector.
But when I clicked on cloumn it throws a warning "The table cannot be sorted because it has pending changes which would be lost." and I am not able to sort table.
Can somebody give me some suggestions.
Thanks
BhupendraI have createed sortable header.I have done this thing many times and it works.But this time only I m facing problem.I am using PPR in this table where I am enabling and disabling the checkbox.
Please give suggestions if anybody has faced this problem.
Thanks
Bhupendra -
Possible Sequential Read Access for a Sorted Table
Hi All,
I have the following warnings in Code inspector check.
'Possible Sequential Read Access for a Sorted Table'
Kindly provide me the solution to overcome this warning message.
This is my code in BAdi : CRM_ORDER_FIELDCHECK , Method : FIELDCHECK
I am getting the above warning at
READ TABLE lt_status INTO ls_status WITH KEY status = 'E0001'
user_stat_proc = 'ZITRHDQT'
object_type = 'BUS2000114'.
and at
MODIFY ct_input_field_names FROM ls_input_field_names
TRANSPORTING changeable
WHERE fieldname NE lv_field.
Please see the below code .
DATA : lt_header_guid TYPE crmt_object_guid_tab,
lt_item_guid TYPE crmt_object_guid_tab,
lt_order_i TYPE crmt_orderadm_i_wrkt,
ls_order_i LIKE LINE OF lt_order_i,
lt_status TYPE crmt_status_wrkt,
ls_status LIKE LINE OF lt_status,
ls_input_field_names TYPE crmt_input_field_names.
DATA : lv_header_guid TYPE crmt_fieldcheck_com-guid,
lv_chng_no TYPE c VALUE 'A',
lv_field(10) TYPE c VALUE 'ACT_STATUS'.
DATA: lv_status_completed TYPE crmt_boolean.
To Get GUID
IF is_fieldcheck_com-guid IS NOT INITIAL.
lv_header_guid = is_fieldcheck_com-guid.
ELSE.
lv_header_guid = is_fieldcheck_com-ref_guid.
ENDIF.
IF is_fieldcheck_com-ref_kind EQ 'A'.
INSERT lv_header_guid INTO TABLE lt_header_guid.
ELSE.
SELECT SINGLE header FROM crmd_orderadm_i INTO lv_header_guid
WHERE guid = is_fieldcheck_com-ref_guid.
INSERT lv_header_guid INTO TABLE lt_header_guid.
ENDIF.
*To Get the required details
CALL FUNCTION 'CRM_ORDER_READ'
EXPORTING
it_header_guid = lt_header_guid
IMPORTING
et_status = lt_status
EXCEPTIONS
document_not_found = 1
error_occurred = 2
document_locked = 3
no_change_authority = 4
no_display_authority = 5
no_change_allowed = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE lt_status INTO ls_status WITH KEY status = 'E0001'
user_stat_proc = 'ZITRHDQT'
object_type = 'BUS2000114'.
IF sy-subrc = 0.
ls_input_field_names-changeable = lv_chng_no.
MODIFY ct_input_field_names FROM ls_input_field_names
TRANSPORTING changeable
WHERE fieldname NE lv_field.
ENDIF.
ENDMETHOD.
Regards
VenkatHello Blake,
Try this:
READ TABLE lt_action_fld WITH KEY STATUS = '0' BINARY SEARCH.
wf_index = sy-tabix.
loop at lt_action_fld from wf_index.
if lt_action_fld-status ne '0'.
exit.
endif.
delete lt_action_fld index wf_index.
endloop.
Let us know, if this helps.
Rgds,
Raghu. -
Sort table of objects by object attribute
Hi all,
I would like to write method for sorting table of objects. Sorting will be according selected attribute of object.
My problem is that when I have dynamic data, I'm not able to access attributes of object. Here is example in code. Problematic lines are commented.
If you have any idea how to solve it, I will be very happy.
CLASS lcl_reflection DEFINITION CREATE PUBLIC.
PUBLIC SECTION.
CLASS-METHODS: sort_object_table_by_field IMPORTING field_name TYPE char72
direction TYPE c DEFAULT 'A'
CHANGING object_table TYPE table.
ENDCLASS. "lcl_reflection DEFINITION
CLASS lcl_reflection IMPLEMENTATION.
METHOD sort_object_table_by_field.
DATA: obj_type_desc TYPE REF TO cl_abap_refdescr,
cls_type_desc TYPE REF TO cl_abap_classdescr,
tab_type_desc TYPE REF TO cl_abap_tabledescr,
elm_type_desc TYPE REF TO cl_abap_elemdescr,
struc_type_desc TYPE REF TO cl_abap_structdescr,
line TYPE REF TO data,
tab TYPE REF TO data,
object TYPE REF TO data,
lt_component TYPE cl_abap_structdescr=>component_table,
ls_component LIKE LINE OF lt_component.
FIELD-SYMBOLS: <object> TYPE any,
<tab> TYPE table,
<line> TYPE any,
<value> TYPE any.
READ TABLE object_table INDEX 1 ASSIGNING <object>.
cls_type_desc ?= cl_abap_classdescr=>describe_by_object_ref( <object> ).
elm_type_desc ?= cls_type_desc->get_attribute_type( field_name ).
obj_type_desc ?= cl_abap_refdescr=>create( cls_type_desc ).
UNASSIGN <object>.
ls_component-name = 'key'.
ls_component-type = elm_type_desc.
APPEND ls_component TO lt_component.
ls_component-name = 'object'.
ls_component-type ?= obj_type_desc.
APPEND ls_component TO lt_component.
struc_type_desc ?= cl_abap_structdescr=>create( lt_component ).
tab_type_desc ?= cl_abap_tabledescr=>create( p_line_type = struc_type_desc
p_table_kind = cl_abap_tabledescr=>tablekind_std
p_unique = abap_false ).
REFRESH lt_component.
CLEAR ls_component.
CREATE DATA line TYPE HANDLE struc_type_desc.
CREATE DATA tab TYPE HANDLE tab_type_desc.
CREATE DATA object TYPE HANDLE obj_type_desc.
ASSIGN tab->* TO <tab>.
ASSIGN line->* TO <line>.
ASSIGN object->* TO <object>.
LOOP AT object_table REFERENCE INTO object.
APPEND INITIAL LINE TO <tab> REFERENCE INTO line.
ASSIGN object->* TO <value>.
ASSIGN line->* TO <line>.
* <line>-key = <value>->(field_name).
* <line>-object = object.
ENDLOOP.
* SORT <tab> BY key.
* LOOP AT <tab> REFERENCE INTO line.
* APPEND INITIAL LINE TO object_table REFERENCE INTO object.
* object = line-object.
* ENDLOOP.
ENDMETHOD. "sort_object_table_by_field
ENDCLASS. "lcl_reflection IMPLEMENTATIONOk guys, it's solved. It was little bit more complicated then I expected. Thanks for you help.
METHOD sort_object_table_by_field.
TYPES: t_object TYPE REF TO object.
DATA: obj_type_desc TYPE REF TO cl_abap_refdescr,
cls_type_desc TYPE REF TO cl_abap_classdescr,
tab_type_desc TYPE REF TO cl_abap_tabledescr,
elm_type_desc TYPE REF TO cl_abap_elemdescr,
struc_type_desc TYPE REF TO cl_abap_structdescr,
r_line TYPE REF TO data,
r_tab TYPE REF TO data,
r_object TYPE REF TO data,
r_obj TYPE REF TO data,
lt_component TYPE cl_abap_structdescr=>component_table,
ls_component LIKE LINE OF lt_component.
FIELD-SYMBOLS: <object> TYPE any,
<obj> TYPE REF TO object,
<tab> TYPE table,
<line> TYPE any,
<key> TYPE any,
<fs_key> TYPE any,
<fs_object> TYPE any.
READ TABLE object_table INDEX 1 ASSIGNING <object>.
cls_type_desc ?= cl_abap_classdescr=>describe_by_object_ref( <object> ).
elm_type_desc ?= cls_type_desc->get_attribute_type( field_name ).
obj_type_desc ?= cl_abap_refdescr=>create( cls_type_desc ).
UNASSIGN <object>.
ls_component-name = 'key'.
ls_component-type = elm_type_desc.
APPEND ls_component TO lt_component.
ls_component-name = 'object'.
ls_component-type ?= obj_type_desc.
APPEND ls_component TO lt_component.
struc_type_desc ?= cl_abap_structdescr=>create( lt_component ).
tab_type_desc ?= cl_abap_tabledescr=>create( p_line_type = struc_type_desc
p_table_kind = cl_abap_tabledescr=>tablekind_std
p_unique = abap_false ).
REFRESH lt_component.
CLEAR ls_component.
CREATE DATA r_line TYPE HANDLE struc_type_desc.
CREATE DATA r_tab TYPE HANDLE tab_type_desc.
CREATE DATA r_object TYPE HANDLE obj_type_desc.
CREATE DATA r_obj TYPE REF TO object.
ASSIGN r_tab->* TO <tab>.
LOOP AT object_table REFERENCE INTO r_object.
APPEND INITIAL LINE TO <tab> REFERENCE INTO r_line.
ASSIGN r_object->* TO <object>.
ASSIGN r_obj->* TO <obj>.
MOVE <object> TO <obj>.
ASSIGN <obj>->(field_name) TO <key>.
ASSIGN r_line->* TO <line>.
ASSIGN COMPONENT 'KEY' OF STRUCTURE <line> TO <fs_key>.
ASSIGN COMPONENT 'OBJECT' OF STRUCTURE <line> TO <fs_object>.
<fs_object> = <object>.
<fs_key> = <key>.
ENDLOOP.
DATA: sort_field TYPE fieldname.
sort_field = 'KEY'.
SORT <tab> BY (sort_field).
REFRESH object_table.
LOOP AT <tab> REFERENCE INTO r_line.
APPEND INITIAL LINE TO object_table REFERENCE INTO r_object.
ASSIGN r_line->* TO <line>.
ASSIGN r_object->* TO <object>.
ASSIGN COMPONENT 'OBJECT' OF STRUCTURE <line> TO <fs_object>.
<object> = <fs_object>.
ENDLOOP.
ENDMETHOD. -
We are in the process of upgrading our SAP from 4.6c to 6.0 and I am looking for a document or white paper that summarizes changes to Standard SAP Programs, Tables/Fields, Function Modules etc.. from what used to be in SAP 4.6c to what it is in SAP 6.0. I am not sure if such a comprehensive document exists or is posted in the forum.
Any help or information in this regard will be highly appreciated.
Thanks
ramHi Ram,
<< We are in the process of doing our technical upgrade from SAP 4.6c to 6.0. I am looking for a white paper or documentation listing the changes made to the standard SAP Programs, Tables, Fields, Function Modules etc. from Rel. 4.6c to 6.0. >>
Do you want to know what custom changes were done to SAP standard objects in your system or do you want to know what changes SAP did from 4.6c to ECC6.0.
There is no white paper or documentation to find out custom changes made to SAP standard objects. but there were many tools in the market to find out and tell what changes were done to sap standard objects in your system.
Your question seems ambiguous please clear it.
Thanks,
Kiran.
Maybe you are looking for
-
Belle: No WLAN and Packet Data log.Filter options ...
In Nokia N8, with Symbian Anna, WLAN and Packet Data logging wasn't possible, even though there were options in the log filtering settings. See below: http://i44.tinypic.com/9kxbfa.png After updating to Belle, log isn't still working, and both WLAN a
-
Convert TDAmeritrade statements to Excel
Can Adobe ExportPDF convert TDAmeritrade monthly account statements into Excel?
-
Chapter markers don't appear in Encore after Export from Premiere
I have to admit that I am really frustrated by this whole Adobe Cloud. Every time I 'upgrade' to the latest version, there is some new bug that REALLY hampers my workflow, and in the meantime I find no new features that are really all that useful to
-
Impact on Changing Infoobject Length
Hi all, I have a requirement to increase the length of a navigation attribute BUSINESS OWNER from 5 to 10 ,BUSINESS OWNER is a navigation attribute of 0CUSTOMER, now my quetion is by increaing length will it be any impact on 0CUSTOMER, CUBES and Mu
-
2.7 GHz PowerMac done in by leaking cooling system. THE REST OF THE STORY
This is the story of what happened when my PowerMac went down for the count. I'm posting it because Apple did a such stellar job at resolving a thorny service problem. I had a Dual 2.7 GHz PowerMac G5 (purchased back in November 2005) that was a majo