Diff Between Internal Table with Occurs 0 & Field Groups
Hi,
Is there really any difference between just using an internal table with an OCCURS 0 statement-- which would write the entire table to paging space-- and using field-groups? How is Field-Groups is more effective than Internal tables with occurs 0 when it comes to performance?
Could anybody please give some information regarding above question?
Thanks,
Mohan.
hi,
occurs 0 means it wont create any extra memory. based on the records only the memory is allocated to internal tables at run time. but when an internal table is created it can hold data of type to which it is declared.
i.e data: itab like mara occurs 0 with header line.
can take data only from mara table
we can also do in another way as using types keyword we can declare a standard structure and create a internal table of that type. its also not that useful as we have to change the structure depending on changes for storing data.
for this purpose field symbols are used. field symbols can hold any data means that they can point to tables, fields, any standard or user-defined types. field symbols actually points to respective types by which we can directly access to that types using field symbols.
filed symbols works more faster than internal tables.
if helpful reward some points.
with regards,
Suresh.A
Similar Messages
-
Differences between Internal table with Occurs 0 and Field-Groups?
Is there really any difference between just using an internal table with an OCCURS 0 statement-- which would write the entire table to paging space-- and using field-groups? How is Field-Groups is more effective than Internal tables with occurs 0 when it comes to performance?
Could anybody please give some information regarding above question?
Thanks,
Surya.hi,
occurs 0 means it wont create any extra memory. based on the records only the memory is allocated to internal tables at run time. but when an internal table is created it can hold data of type to which it is declared.
i.e data: itab like mara occurs 0 with header line.
can take data only from mara table
we can also do in another way as using types keyword we can declare a standard structure and create a internal table of that type. its also not that useful as we have to change the structure depending on changes for storing data.
for this purpose field symbols are used. field symbols can hold any data means that they can point to tables, fields, any standard or user-defined types. field symbols actually points to respective types by which we can directly access to that types using field symbols.
filed symbols works more faster than internal tables.
if helpful reward some points.
with regards,
Suresh.A -
How to convert internal table with dynamic fields to XML
Dear all,
I met a problem like the following:
The aim is to transform the following parameter to XML
IT_FIELD stores the dynamic filed name of the internal table,with these fields, the dynamic internal can be created by cl_abap_tabledescr=>create(it_field)
IT_VALUE stores the value of the internal table dynamically created with dynamic fields.
For example
IT_FIELD =>
line1: FIELD1
line2: FIELD2
line3: FIELD3,
three lines in this internal table.
dynamically created internal table structure FIELD1 FIELD2 FIELD3
And IT_VALUE=>
1 2 3 (First line)
11 22 33
two lines of data.
Do you have any idea about how to transform the IT_VALUE to XML here? And also the transformed XML to the IT_VALUE.( we may need remember IT_FIELD here for later XML to IT_VALUE.)
Hope I describe the problem clearly.
Any inputs will be appreciated.
Edited by: Max Tang on Jan 12, 2009 3:46 PM
Edited by: Max Tang on Jan 12, 2009 4:14 PMHi,
you need to implement a bit of coding for that.
With the 'do varying' statement abap provides a loop over those fields. Within this loop you can build up a new internal table with one entry for each period and amount.
kind regards
Siggi
PS: I am not very familiar with CO, but I guess there will be a standard extractor for that. -
Passing internal table with a field of type string to & from BAPI
Hello ABAP gurus,
I have a simple BAPI which has to send back an internal table.
Internal table structure is as follows
DATA: BEGIN OF itab OCCURS 0,
config_id(8),
blobdata like zstring,
END OF itab.
where zstring is a string of variable length.
When I try to activate the BAPI I get a message
"itab" must be a flat structure. You cannot use internal tables, strings, references or structures as components.
However, just for testing, I changed blobdata to type of char and I can successfully activate and use the BAPI.
But, our requirement is to pass a string of variable length.
How can I resolve this issue? I have searched sdn and other blogs but didn't help so far.
Any feedback on this will be highly appreciated.
Thanks
RamHi Prasad ,
Try this way :
Acc to your requirement ,create a structure with a parameter and a string , create a table type for that structure .
use that table type in the changing parameter as you need that bapi to accept and return a table .
for the below example , ZTEST_05 is a structure , ZTT_TEST_05 is a table type of ZTEST_05 .
ZTEST_05 has got 2 fields , one is a param of type char(8) and another is a string of type STRING .
I created the below mentioned BAPI and I was able to activate it without any errors .
FUNCTION ZTEST_BAPI_ITAB_01.
""Local Interface:
*" IMPORTING
*" VALUE(BAPI_P1) TYPE ZTEST_05
*" CHANGING
*" VALUE(BAPI_CP1) TYPE ZTT_TEST_05
ENDFUNCTION.
Revert if any issues .
Regards,
Ranjita -
Dynamic Internal Table with Dynamic Fields
Hi all,
My scenario is fairly simple----
--> End user clicks a button on screen and he gets the list of HR tables.
--> Then selects a table and list of all the fields for that table gets displayed.
--> He/she selects the fields they want data to be retrieved for.
So, the requirement is, the dynamic internal table should get created with the fields selected.
The select statement should only retrieve fields which were selected by the end user
and from the table selected by the end user.
I believe the fields selected by end user can be passed by a variable of type string.
something like this---
select (fields)
from (p_table) " Table selected by end user
into dynamic internal table. " should contain columns selected by end user"
Appreciate your inputs and guidance.
Warm regards,
Hari KiranTYPE-POOLS :ABAP.
Parameters P_TAB TYPE DDOBJNAME.
DATA : GO_LINE_TYPE TYPE REF TO CL_ABAP_STRUCTDESCR,
GO_TABLE_DESC TYPE REF TO CL_ABAP_TABLEDESCR,
GS_COMPONENTS TYPE ABAP_COMPONENTDESCR,
GT_COMPONENTS TYPE ABAP_COMPONENT_TAB,
GR_TAB TYPE REF TO DATA,
GT_FIELDS TYPE TABLE OF DFIES WITH HEADER LINE.
FIELD-SYMBOLS: <GT_TABLE> TYPE TABLE,
<GS_TABLE> TYPE ANY,
<GV_VALUE> TYPE ANY.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
TABNAME = P_TAB
* FIELDNAME = ' '
* LANGU = SY-LANGU
* LFIELDNAME = ' '
* ALL_TYPES = ' '
* GROUP_NAMES = ' '
* UCLEN =
* IMPORTING
* X030L_WA =
* DDOBJTYPE =
* DFIES_WA =
* LINES_DESCR =
TABLES
DFIES_TAB = GT_FIELDS
* FIXED_VALUES =
EXCEPTIONS
NOT_FOUND = 1
INTERNAL_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT GT_FIELDS.
CLEAR GS_COMPONENTS.
GS_COMPONENTS-NAME = GT_FIELDS-FIELDNAME.
GS_COMPONENTS-TYPE ?= CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_NAME( GT_FIELDS-ROLLNAME ).
APPEND GS_COMPONENTS TO GT_COMPONENTS.
ENDLOOP.
GO_LINE_TYPE = CL_ABAP_STRUCTDESCR=>CREATE( GT_COMPONENTS ).
GO_TABLE_DESC = CL_ABAP_TABLEDESCR=>CREATE( GO_LINE_TYPE ).
CREATE DATA: GR_TAB TYPE HANDLE GO_TABLE_DESC.
ASSIGN: GR_TAB->* TO <GT_TABLE>.
SELECT * FROM (P_TAB) APPENDING CORRESPONDING FIELDS OF TABLE <GT_TABLE>.
LOOP AT <GT_TABLE> ASSIGNING <GS_TABLE>.
NEW-LINE.
DO.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE <GS_TABLE> TO <GV_VALUE>.
IF SY-SUBRC NE '0'.
EXIT.
ENDIF.
WRITE : <GV_VALUE>.
ENDDO.
ENDLOOP. -
Internal Table with variable field lengths
Hi Guys,
I have a requirement to populate an internal table whose structure is as follows.
Internal Table will have 5 lines.
Line1: 050 char
Line2: 100 char
Line3: 100 char
Line4: 100 char
Line5: 050 char.
I have all the required data with me. I just need to populate the table.
Reward points up for grabs
Regards,
SuhasHi,
Wher do you have the data?
You can define a work area and internal table of two rows..
wa-row1 = 'yourdata'
wa-row2 = 'your data'
append wa to itab.
wa-row1 = 'yourdata'
wa-row2 = 'your data'
append wa to itab.
wa-row1 = 'yourdata'
wa-row2 = 'your data'
append wa to itab.
wa-row1 = 'yourdata'
wa-row2 = 'your data'
append wa to itab.
wa-row1 = 'yourdata'
wa-row2 = 'your data'
append wa to itab.
If you have your data in Db table then you need to write a select query..
select <fields,,,> from DBtable into tableITAb.
Be clear with your question we can help you...
rewads if useful,
regards,
nazeer -
Unable to modify the final internal table with month field
hi everybody
I am having one material which has a qty in different months lets say that jan feb mar apr may june..... now i have caluculated the total of the material monthly wise and i have to display in the output. if the material of the first month displayed and then again the same material comes in the loop and that matrial is going to be checked by the month wise and has to diaplyed in the corresponding month fied in the output. so i am using the index in the loop using the AT new command for the matnr and appending the final output structure and now if the same matrial comes again with different month the final output internal table should modify. but the statement is executing but the value is not coming in the final output structure.
the syntax which i am using is
MODIFY GT_OUTPUT FROM WA_OUTPUT INDEX lv_index TRANSPORTING MATNR.
OUTPUT FORMAT IS
MATERIAL NO : JANQTY : FEBQTY : MARQTY : ...... :DECQTY.
THANKS IN ADVANCEmy issue is....
lets say that i am having three materials now
381, 391, 401. and the material 381 has used in jan month 5 times and feb month 6 times like that. each material is used in different months. now i have calculated all the matrerials qty monthly wise and i have to display the material one time only the qty's in jan feb mar and so on....
material no 383
jan 31064
feb 67312
mar 65107
apr 31222
material no 391
jan 74677
feb 8952
mar 75501
so my output should be like this
OUTPUT FORMAT IS
MATERIAL NO : JANQTY : FEBQTY : MARQTY
381 31064 67312 65107
391 74677 8952 75501
now i have written the code like this
LOOP AT GT_OUTPUT1 INTO WA_OUTPUT1.
WA_OUTPUT-MATNR = WA_OUTPUT1-MATNR.
WA_OUTPUT-MJAHR = WA_OUTPUT1-MJAHR.
at NEW matnr.
l_matnr = 'X'.
lv_index = sy-tabix.
endat.
IF L_MATNR = 'X'.
PERFORM CASE_STATEMENT.
append wa_OUTPUT to gt_OUTPUT.
clear : wa_OUTPUT, l_matnr, WA_OUTPUT1, WA_ZQCALWT.
ELSE.
PERFORM CASE_STATEMENT.
MODIFY GT_OUTPUT FROM WA_OUTPUT. " INDEX lv_index TRANSPORTING MAR. " EQ WA_OUTPUT1-MATNR.
clear : wa_OUTPUT, l_matnr, WA_OUTPUT1, WA_ZQCALWT.
ENDIF.
endloop. -
Create an internal table with the rows of another internal table.
Hi I want to know if posible to create an internal table structure with the rows of another internal table?
ex.
If in i_tab column A has this values: row 1 = first, row 2 = second, row 3 = third.
Now I want that the structure of my internal table be: first, second, thirdHi,
If you do this way then what will be the difference between the two table anyway?? First internal table has the same structure irrespective of which row you select. and you are going to store the data from each row to the rows of the second internal table. In that case, the structure of the internal table is the same as first table. and it would have same rows.
Am I missing something here? or you want to declare the internal table with each field being the structure of the first table? In this case you'd have to do a dynamic declaration of data as the first table can have any no of rows then the second table would have any no of fields in the structure.
Now if you know that your first internal table is going to have a fixed no of rows eg 3 rows then it becomes simple. Do the following then
Data: begin of second_table occurs 0,
first type <first_table type>,
second type <first_table type>,
third type <first_table type>,
end of second_table.
Regards
Prasenjit -
Create dynamic internal table with deep structure;cell coloring dynamic ALV
Hi,
My requirement is to do cell colouring for a dynamic ALV.
So I am creating a dynamic internal table using the following method.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = i_fieldcatalog[]
IMPORTING
ep_table = i_output.
But how do I define field COLORS which should be again an internal table ?
Is there any other way for cell colouring?
Putting my problem in another way:
How do I create a dynamic internal table with one field as another internal table.
Quick replies are highly appreciated.
Thanks,
Nisha Vengal.halo Nisha
Before building the display table . you can add the field in the feild catalog right . This display table gets generated from the field catalog right
1 Create a global structute say ZEXTEND_FIELDCAT
2 Have fields like STYLE type lvc_t_styl
COLOR type LVC_T_SCOL.
3 Now you have to extend ur fieldcatalog
l_fieldcat-fieldname = COLOR'.
l_fieldcat-ref_field = 'COLOR'.
l_fieldcat-ref_table = 'ZEXTEND_FIELDCAT'.
APPEND l_fieldcat TO lt_field_catalog.
CLEAR l_fieldcat. -
How to Fill Internal Table with contents of Select-Option
Hi all:
There is a select-option s_matnr on the self-made screen. An internal table t_int is declared in the program. The requirement is that users makes selection with multiple material numbers. I want to put the values of s_matnr into internal table t_int directly. Would you please tell me how?
Thank you very much in advance.
Edited by: dongdong guo on Jun 13, 2008 3:40 AMHi,
Select option works like an internal table only.
For table selection you can use it directly using IN operator in where clause
eg : where matnr IN s_matnr.
Before that you may need to validate the content of the select-option. For that also you need to transfer the content to a new internal table.
u can loop at the select-option.
eq: loop at s_matnr.
if s_matnr-low = 'MAT1'.
condition.
endif.
endloop.
if you just want to check whether any single valid material number exist in your user screen, then u can use a select single option with s_matnr directly.
select single matnr from mara
where matnr in s_matnr.
select-option s_matnr behaves like an internal table with four fields.
sign, option, low, high. -
How to update database table with key field?
Hello Experts,
I have a database table with following fields
MATNR - Key
SSOUR - Key
KUNNR - Key
MENG1
MENG2
MENG3
And this table contains records like...
MSD50001 R 1000001 5.30 2.30 5.25
MSD50002 R 1000002 5.30 2.30 5.25
MSD50003 R 1000003 5.30 2.30 5.25
MSD50005 R 1000004 5.30 2.30 5.25
MSD50004 R 1000005 5.30 2.30 5.25
I have an internal table with same fields of above database table.
MSD50001 A 1000001 5.30 2.30 5.25
MSD50002 A 1000002 5.30 2.30 5.25
MSD50003 A 1000003 5.30 2.30 5.25
MSD50005 A 1000004 5.30 2.30 5.25
MSD50004 A 1000005 5.30 2.30 5.25
MSD50006 A 1000006 5.30 2.30 5.25
I want to update the DB table with following internal table records.
If internal table records = db table records are same then Update....else insert from internal table to db table.
But here, SSOUR is key field so i am not able to use
MODIFY dbtab from itab.
It results me , entries in internal table are inserted into db table.
So i have double records.
Is there any statement which updates the key field? and if no fields in db table then insert it?
Regards
RHhi,
u cannot update akey field.u can update only non key fields by using key field as a selection criteria.For example if u go to sm30 if u enter any table for inserting values, the key field will always be greyed out it is not succumbed to chnges.but u can insert value into ,if ur inserting and in the insert staemnet if u have key field which is already present in the table it will return sy-subrc = 4 otherwise it will insert the record and return 0.
eg for update :
UPDATE zdm_wtyprof SET upload_status = 'S'
WHERE spart = wa_upd-spart.
here spart is the key field and it will update the status field in the table as S.
if updated succesfully it will return 0.
SIMILARLY U CAN USE select. -
Create Internal table with fields coming as query result of multiple tables
Hi
I want to create internal table with the fileds which come as a result of a select query from multiple tablesMy code is something like this. I need the data from various fields of diff tables depending on the excel file. This data is then to be put in a internal table
*& Report Z_EXTC
report z_extc.
type-pools : abap.
parameter: objname(25) type c.
data : idetails type abap_compdescr_tab,
xdetails type abap_compdescr.
data : ref_table_des type ref to cl_abap_structdescr.
data: p_table type string.
data:l_string type string,
l_filename(200) type c,
dy_line type ref to data,
xfc type lvc_s_fcat,
ifc type lvc_t_fcat.
types:begin of itab,
tabname type dd03l-tabname,
fieldname type dd03l-fieldname,
end of itab.
types:begin of atab,
tabname type dd03l-tabname,
cnt type string,
end of atab.
field-symbols: <dyn_table> type table,
<dyn_table1> type standard table,
<dyn_wa>,
<dyn_field>.
data: dy_table type ref to data,
dy_table1 type ref to data.
data: itab1 type itab occurs 0 with header line.
data atab1 type atab occurs 0 with header line.
data frstrec type i value 0.
data lastrec type i value 0.
l_string = ''.
call function 'GUI_UPLOAD'
exporting
filename = 'C:\excel_files\FIELDS_CC.TXT'
filetype = 'TXT'
has_field_separator = 'X' .
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
*Refresh itab1.
loop at itab1.
on change of: itab1-tabname.
if lastrec = 1.
move l_string to atab1-cnt.
move itab1-tabname to atab1-tabname.
append atab1.
l_string = ''.
endif.
move itab1-tabname to atab1-tabname.
frstrec = 1.
endon.
if frstrec = 1.
concatenate l_string itab1-fieldname into l_string separated by
space.
lastrec = 1.
endif.
*write:/ itab1-tabname,40 itab1-fieldname.
endloop.
move l_string to atab1-cnt.
append atab1.
loop at atab1.
write:/ atab1-tabname,5 atab1-cnt.
endloop. -
How to read an internal table with more than one (2 or 3) key field(s).
how to read an internal table with more than one (2 or 3) key field(s). in ecc 6.0 version
hi ,
check this..
report.
tables: marc,mard.
data: begin of itab occurs 0,
matnr like marc-matnr,
werks like marc-werks,
pstat like marc-pstat,
end of itab.
data: begin of itab1 occurs 0,
matnr like mard-matnr,
werks like mard-werks,
lgort like mard-lgort,
end of itab1.
parameters:p_matnr like marc-matnr.
select matnr
werks
pstat
from marc
into table itab
where matnr = p_matnr.
sort itab by matnr werks.
select matnr
werks
lgort
from mard
into table itab1
for all entries in itab
where matnr = itab-matnr
and werks = itab-werks.
sort itab1 by matnr werks.
loop at itab.
read table itab1 with key matnr = itab-matnr
werks = itab-werks.
endloop.
regards,
venkat. -
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 -
Declare the internal table with only one 10 character field and use
Hi,
I want to declare the internal table with only one 10 character field and use.
JayaHi,
Go ahead. U can declare IT with only one field
Example:
data: begin of zcustlist occurs 1000,
custmer(10) type c,
end of zcustlist.
Narendra Reddy.
Edited by: Narendra Reddy C on Aug 8, 2008 11:39 AM
Maybe you are looking for
-
How to connect DVD player to FIOS TV (with standard TV)
The Verizon techs installed my FIOS system. I already have the router, DVR and standard TV connected and working. How do I add a DVD player to the mix? I found wiring diagrams for my FIOS DVR, but they do not include my configuration. Here is what I
-
Hi all, I need to output several analog waveforms, while at the same time acquiring analog input, and synchronise the two. For this, I'm using a cDAQ-9178, a 9264 module for AO, and 9220 for AI. I managed to this all right following this example: htt
-
PI 7.4 Single Stack support for Principle Propagation SAML
Hi Folks, Que: Does the single stack now support Principle Propagation using SAML? The posts I have read so far conclude that SAML is only supported on the dual stack, not the single stack. SAP Help gives steps for dual stack: Configuring Principal P
-
My MacBook Pro don't boot - Help me please ! :/
Hi everyone. I've a very ungry bug on my macbook pro early 2008 (not unibody). When i want to boot, screen works, but boot stop process when apple display, and circular advancement was blocked.. - I try to change ram => not works - Try to reset PRAM
-
Using sample lite for 11.1.1.5 -getting error
Hi Experts, I downloaded the sample lite from OTn and followed the procedure step by step. When I start the BI presentation services. It is showing me the following error . This environment is i linux. Error :--Error 500--Internal Server Error From R