Regarding dynamic internal table
Hi ,
I have a requirement where in my date is present in an internal table which is created dynamically . now based on some inputs i need to narrow down the records ,presently I'am deleting the records in a loop which causes performance problem, Please let me know if there is any other way to do this.
I have also tried declaring another field sybol of the same type that of the dynamic internal table and tried moving all the successful records to this table but these records were getting updated in the initial table also.
Any pointers to this would be of a great help
thanks in advance.
Reagards,
Chaitanya
Hi Andrew ,
Here is my code.
LOOP AT <int_dyn>
ASSIGNING <wa_dyn>.
check for date.
ASSIGN COMPONENT 'DATAB' OF STRUCTURE <wa_dyn> TO <fs>.
IF sy-subrc = 0.
IF <fs> > p_valid. ( selection screen parameter)
DELETE <int_dyn> FROM <wa_dyn>.
UNASSIGN <fs>.
ENDIF.
ENDIF.
ENDLOOP.
Regards,
Chaitanya
Similar Messages
-
Logic for retreiving the values from a dynamic internal table
Hi all,
I have an issue with the logic to fetch data from a dynamic internal table into fields. let me give you guys an example the sy-tfill = 9 (subject to vary). I need to populate the fields.
Regards,
SukumarHi,
this is for printing out the info in a dynamic table,
it will work likewise to insert data.
PARAMETERS:
p_tabnam TYPE tabname DEFAULT 'DB_TABLE_NAME'.
DATA:
lv_dref TYPE REF TO data,
ls_dd03l LIKE dd03l,
lt_fieldname TYPE TABLE OF fieldname,
ls_fieldname TYPE fieldname.
FIELD-SYMBOLS:
<fs> TYPE STANDARD TABLE,
<wa_comp> TYPE fieldname,
<wa_data> TYPE ANY,
<wa_field> TYPE ANY.
REFRESH lt_fieldname.
SELECT * FROM dd03l INTO ls_dd03l
WHERE as4local = 'A'
AND as4vers = '0000'
AND tabname = p_tabnam
ORDER BY position.
ls_fieldname = ls_dd03l-fieldname.
APPEND ls_fieldname TO lt_fieldname.
ENDSELECT.
IF NOT ( lt_fieldname[] IS INITIAL ).
CREATE DATA lv_dref TYPE TABLE OF (p_tabnam).
ASSIGN lv_dref->* TO <fs>.
SELECT * FROM (p_tabnam) INTO TABLE <fs>.
WRITE:
/ 'CONTENTS OF TABLE', p_tabnam.
LOOP AT <fs> ASSIGNING <wa_data>.
SKIP.
WRITE:
/ 'LINE', sy-tabix.
ULINE.
LOOP AT lt_fieldname ASSIGNING <wa_comp>.
ASSIGN COMPONENT sy-tabix OF STRUCTURE <wa_data> TO <wa_field>.
WRITE:
/ <wa_comp>, <wa_field>.
ENDLOOP.
ENDLOOP.
ENDIF.
grtz
Koen -
Distinct values from dynamic internal tabls
Hi All,
I have a dynamic internal tables like <dy_table> , i want to get distinct values from this internal tables,
how to do that, structure of dynamic internal tables is dynamic acc. to user conditions.
regards,
AnujHi Anuj
Just try this,
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = tb_fields_for_it
IMPORTING
ep_table = gp_dyn_table.
ASSIGN gp_dyn_table->* TO <gt_table>.
ASSIGN LOCAL COPY OF INITIAL LINE OF <gt_table> TO <fs_table>.
LOOP AT tb_output.
*To assign value for serial number.
ASSIGN COMPONENT 1 OF STRUCTURE <fs_table> TO <ls_field>.
<ls_field> = tb_output-sno.
UNASSIGN <ls_field>.
*To assign value for Sales Organization.
ASSIGN COMPONENT 2 OF STRUCTURE <fs_table> TO <ls_field>.
<ls_field> = tb_output-vkorg.
UNASSIGN <ls_field>.
*To assign Rate for its respective Condition type.
LOOP AT tb_konp WHERE knumh = tb_output-knumh.
READ TABLE tb_fieldcat1 WITH KEY fieldname = tb_output-kschl.
IF sy-subrc EQ 0.
lv_count = tb_fieldcat1-col_pos.
ASSIGN COMPONENT lv_count OF STRUCTURE <fs_table> TO <ls_field>.
IF tb_konp-konwa EQ '%'.
tb_konp-kbetr = tb_konp-kbetr / co_10.
<ls_field> = tb_konp-kbetr.
ELSE.
<ls_field> = tb_konp-kbetr.
ENDIF.
ENDIF.
ENDLOOP.
lv_count = lv_count + 1.
APPEND <fs_table> TO <gt_table>.
CLEAR <fs_table>.
ENDLOOP.
Hope this proves helpful to you. -
How to delete data from dynamic internal table
Hi,
I have dynamic internal table and I have some slection screen fields , using these selection screen fields
(select -options), I have to filter the data? assigning will work with READ , but I have select options not the parametre,
and also delete will not work for dynamic table..
as we cannot use assigning with delete..
So how to do this?
and one more thing is , I cannot filter the data while selection( in select, I cannot filter the data-> as it's not coming directly from table, it's coming from buffer),
so now after selection of data, I need to filter the data from dynamic table.
Is there any way to do this?
Regards,
MrunalHi matt,
I tried with below code as you said. But I am getting dump. can you help?
here is my piece of code.
FIELD-SYMBOLS: <LS_DATA> type any,
<LT_DATA> TYPE table,
<L_FIELD> type any.
ASSIGN <l_buffer_entry>-dataptr->* TO <LS_DATA>.
ASSIGN <l_buffer_entry>-dataptr->* TO <LT_DATA>.
LOOP AT <LT_DATA> ASSIGNING <LS_DATA>.
ASSIGN COMPONENT 'BUKRS' OF STRUCTURE <LS_DATA> TO <L_FIELD>.
IF <L_FIELD> NOT IN SO_BUKRS.
DELETE <LT_DATA>.
ENDIF.
UNASSIGN <L_FIELD>.
ASSIGN COMPONENT 'BELNR' OF STRUCTURE <LS_DATA> TO <L_FIELD>.
IF <L_FIELD> NOT IN SO_BELNR.
DELETE <LT_DATA>.
ENDIF.
UNASSIGN <L_FIELD>.
ENDLOOP.
and here is the description of my dump:->>>
You attempted to access an unassigned field symbol
(data segment 32772).
This error may occur for any of the following reasons:
- You address a typed field symbol before it is set using ASSIGN
- You address a field symbol that points to a line in an internal table
that has been deleted
- You address a field symbol that had previously been reset using
UNASSIGN, or that pointed to a local field that no longer exists
- You address a global function interface parameter, even
though the relevant function module is not active,
that is it is not in the list of active calls. You can get the list
of active calls from the this short dump. -
How to use dynamic internal table when using gui_upload?
Hi Experts,
my scenario is like i have header data, item data and serial numbers.
so with respect to the quantity in unit of measure ,there will be number of serial numbers..
i have declared the dynamic internal table,but i am not getting the logic to change the structure accordingly with respect to the flat file entries..
is it possible to do or its not possible....any suggestion!!!!i have declared like this....
TYPES: BEGIN OF ty_final,
bldat TYPE string, "Document Date
budat TYPE string, "Psting Date
bktxt TYPE string, "Document Header Text
werks TYPE string, "Plant
lgort TYPE string, "Storage Location
matnr TYPE string, "Material Number
erfmg TYPE string, "Quantity in Unit Of Entry
anln1 TYPE string, "Asset Number
anln2 TYPE string, "Asset Subnumber
sernr TYPE string, "serial Number
END OF ty_final.
DATA : it_final TYPE TABLE OF ty_final,
wa_final TYPE ty_final.
FIELD-SYMBOLS : <fs_final> TYPE table.
ASSIGN it_final TO <fs_final>.
after this i called gui upload and passed internal table it_final..
but i have to change the internal table structure dynamically before the upload function.so that it will match with the flat file...
Regards
KarthickThere are at least two approaches you can use to change/generate new dynamic-structured table. Either with [RTTI + RTTS|https://wiki.sdn.sap.com/wiki/display/Snippets/CreatingFlatandComplexInternalTablesDynamicallyusingRTTI] or using [CL_ALV_TABLE_CREATE|http://www.sdn.sap.com/irj/scn/advancedsearch?query=cl_alv_table_create] . In this one just determine fieldcatalog of current table and change it accordingly, then regenarate table.
There are plenty of examples in SCN for this. You should not face difficulties applying this.
Regards
Marcin -
How to do parallel processing with dynamic internal table
Hi All,
I need to implement parallel processing that involves dynamically created internal tables. I tried doing so using RFC function modules (using starting new task and other such methods) but didn't get success this requires RFC enabled function modules and at the same time RFC enabled function modules do not allow generic data type (STANDARD TABLE) which is needed for passing dynamic internal tables. My exact requirement is as follows:
1. I've large chunk of data in two internal tables, one of them is formed dynamically and hence it's structure is not known at the time of coding.
2. This data has to be processed together to generate another internal table, whose structure is pre-defined. But this data processing is taking very long time as the number of records are close to a million.
3. I need to divide the dynamic internal table into (say) 1000 records each and pass to a function module and submit it to run in another task. Many such tasks will be executed in parallel.
4. The function module running in parallel can insert the processed data into a database table and the main program can access it from there.
Unfortunately, due to the limitation of not allowing generic data types in RFC, I'm unable to do this. Does anyone has any idea how to implement parallel processing using dynamic internal tables in these type of conditions.
Any help will be highly appreciated.
Thanks and regards,
Ashintry the below code...
DATA: w_subrc TYPE sy-subrc.
DATA: w_infty(5) TYPE c.
data: w_string type string.
FIELD-SYMBOLS: <f1> TYPE table.
FIELD-SYMBOLS: <f1_wa> TYPE ANY.
DATA: ref_tab TYPE REF TO data.
CONCATENATE 'P' infty INTO w_infty.
CREATE DATA ref_tab TYPE STANDARD TABLE OF (w_infty).
ASSIGN ref_tab->* TO <f1>.
* Create dynamic work area
CREATE DATA ref_tab TYPE (w_infty).
ASSIGN ref_tab->* TO <f1_wa>.
IF begda IS INITIAL.
begda = '18000101'.
ENDIF.
IF endda IS INITIAL.
endda = '99991231'.
ENDIF.
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
pernr = pernr
infty = infty
begda = '18000101'
endda = '99991231'
IMPORTING
subrc = w_subrc
TABLES
infty_tab = <f1>
EXCEPTIONS
infty_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
subrc = w_subrc.
ELSE.
ENDIF. -
How to create Dynamic Internal table in ALV?
Hi all,
I have to create a ALV report based on dynamic internal table. The requirement is that when I enter the months in my selection screen I should get the data relevant to those many months only. For eg if in selection I have given January to March, I should get an ALV output with columns from January to March only.
Please help me with the coding part as I find it a bit confusing.
Please reply immediately.
Regards,
Bhavani.Hi BHAVANI,
first you have to prapare a field catalog [(see this)|http://help.sap.com/saphelp_470/helpdata/en/52/5f060de02d11d2b47d006094192fe3/frameset.htm]
and than you can use a Method cl_alv_table_create=>create_dynamic_table
I hope that help a little.
Regards Bogdan -
How to transfer data from a dynamic internal table
Hi All
I want to transfer data from a dynamic internal table<dyn_table>
to a non dynamic internal table itab which should have the same structure as <dyn_table>.
How can this be done?
Regards,
Harshit RungtaAs stated earlier this can be done only through field symbols...
You cannot create an non dynamic internal table with ANY structure...using DATA statement
If the strucutre is defined well and good...you can create an non-dynamic internal table...
If you do not know the structure then the internal table has to be dynamic...and to be generated using field symbols
DATA: lv_ref TYPE REF TO data.
FIELD-SYMBOLS: <fs_dyn_table> TYPE STANDARD TABLE.
* You create a dynamic internal table...
CREATE DATA lv_ref LIKE (your_dynamic_internal_table).
ASSIGN lv_ref->* TO <fs_dyn_table>.
Now...do the transfer.
<fs_dyn_table> = "your_dynamic_internal_Table
Hope it helps! -
Error while creating dynamic internal table.
Hello Expert,
While creating a dynamic internal table, it throw an run time error as :
" LOAD PROGRAM NOT FOUND
CX_SY_PROGRAM_NOT_FOUND"
i tried to debug the program, it found this error comes while calling
CALL METHOD cl_alv_table_create=>create_dynamic_table
please anyone help me out to resolve this problem.
what could be the reason of error? and how to avoid it?
<REMOVED BY MODERATOR>
thanks in advance.
~ shweta.
Edited by: Alvaro Tejada Galindo on Feb 28, 2008 2:41 PMHi,
Go through this program.
Report z_dynamic.
type-pools : abap.
field-symbols: <dyn_table> type standard table,
<dyn_wa>,
<dyn_field>.
data: dy_table type ref to data,
dy_line type ref to data,
xfc type lvc_s_fcat,
ifc type lvc_t_fcat.
selection-screen begin of block b1 with frame.
parameters: p_table(30) type c default 'T001'.
selection-screen end of block b1.
start-of-selection.
perform get_structure.
perform create_dynamic_itab.
perform get_data.
perform write_out.
form create_dynamic_itab.
Create dynamic internal table and assign to FS
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = ifc
importing
ep_table = dy_table.
assign dy_table->* to <dyn_table>.
Create dynamic work area and assign to FS
create data dy_line like line of <dyn_table>.
assign dy_line->* to <dyn_wa>.
endform.
Regards, -
DYNAMIC INTERNAL TABLE CREATION BASED ON THE CONTENT OF ANOTHER INTERNAL TA
Hi All
I need to create an internal table at runtime.
I have a selection screen parameter which is specific to country, Which can take values below
eg:- IT_AREA for Italy(IT)
FR_AREA for France(FR)
IE_AREA for Ireland(IE).....And similary for other countries
Based on the Above parameter, I need to create Internal Table as below
DATA: itab TYPE italy_data Occurs 0.
If I declare as above, Then itab has fields from italy_data. And this internal table i will be sending it to Function Module to get data into it.
My Requirement is to Create the Internal table itab during runtime for tables italy_data OR france_data OR ireland_data based on selection screen parameter. Tables on Country may have different number of fields in it.
Can anyone help me on this??Hi,
Here is a sample code to create a dynamic internal table.
REPORT ytrab03.
TABLES: mara, makt.
TYPE-POOLS: slis.
DATA: it_fcat TYPE slis_t_fieldcat_alv,
is_fcat LIKE LINE OF it_fcat,
ls_layout TYPE slis_layout_alv.
DATA: it_fieldcat TYPE lvc_t_fcat,
is_fieldcat LIKE LINE OF it_fieldcat.
DATA: new_table TYPE REF TO data,
new_line TYPE REF TO data,
ob_cont_alv TYPE REF TO cl_gui_custom_container,
ob_alv TYPE REF TO cl_gui_alv_grid,
vg_campos(255) TYPE c,
i_campos LIKE TABLE OF vg_campos,
vg_campo(30) TYPE c,
vg_tables(60) TYPE c.
DATA: e_params LIKE zutsvga_alv_01.
FIELD-SYMBOLS: <l_table> TYPE table,
<l_line> TYPE ANY,
<l_field> TYPE ANY.
PARAMETERS: p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
is_fcat-fieldname = 'COL01'.
is_fcat-ref_fieldname = 'MATNR'.
is_fcat-ref_tabname = 'MARA'.
APPEND is_fcat TO it_fcat.
is_fcat-fieldname = 'COL02'.
is_fcat-ref_fieldname = 'MAKTX'.
is_fcat-ref_tabname = 'MAKT'.
APPEND is_fcat TO it_fcat.
LOOP AT it_fcat INTO is_fcat.
is_fieldcat-fieldname = is_fcat-fieldname.
is_fieldcat-ref_field = is_fcat-ref_fieldname.
is_fieldcat-ref_table = is_fcat-ref_tabname.
APPEND is_fieldcat TO it_fieldcat.
CONCATENATE is_fieldcat-ref_table is_fieldcat-ref_field
INTO vg_campos SEPARATED BY '~'.
APPEND vg_campos TO i_campos.
ENDLOOP.
*... Create the dynamic internal table
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcat
IMPORTING
ep_table = new_table.
*... Create a new line
ASSIGN new_table->* TO <l_table>.
CREATE DATA new_line LIKE LINE OF <l_table>.
ASSIGN new_line->* TO <l_line>.
SELECT (i_campos) FROM mara INNER JOIN makt
ON mara~matnr = makt~matnr
UP TO p_max ROWS
INTO TABLE <l_table>.
LOOP AT <l_table> INTO <l_line>.
LOOP AT it_fcat INTO is_fcat.
ASSIGN COMPONENT is_fcat-fieldname
OF STRUCTURE <l_line> TO <l_field>.
IF sy-tabix = 1.
WRITE: /2 <l_field>.
ELSE.
WRITE: <l_field>.
ENDIF.
ENDLOOP.
ENDLOOP.
Regards,
Karuna. -
At end of field, for dynamic internal table entries ?
Dear All,
I've data in my dynamic internal table.
But, to understand in a better way I created a test program with static entries.
Case 1 -->
DATA: BEGIN OF itab OCCURS 0,
year TYPE char4,
name TYPE char10,
END OF itab.
DATA: BEGIN OF itab2 OCCURS 0 ,
year TYPE char4,
name TYPE char10,
count TYPE i,
END OF itab2.
DATA: gv_count TYPE i,
gv_flag TYPE char1.
itab-name = 'AAAA'.
itab-year = '2008'.
APPEND itab.
CLEAR itab.
itab-name = 'AAAB'.
itab-year = '2008'.
APPEND itab.
CLEAR itab.
itab-name = 'AAAC'.
itab-year = '2008'.
APPEND itab.
CLEAR itab.
itab-name = 'AAAD'.
itab-year = '2008'.
APPEND itab.
CLEAR itab.
itab-name = 'BBBB'.
itab-year = '2007'.
APPEND itab.
CLEAR itab.
itab-name = 'BBBA'.
itab-year = '2007'.
APPEND itab.
CLEAR itab.
itab-name = 'BBBC'.
itab-year = '2007'.
APPEND itab.
CLEAR itab.
itab-name = 'BBBD'.
itab-year = '2007'.
APPEND itab.
CLEAR itab.
itab-name = 'CCCC'.
itab-year = '2006'.
APPEND itab.
CLEAR itab.
itab-name = 'CCCA'.
itab-year = '2006'.
APPEND itab.
CLEAR itab.
itab-name = 'CCCB'.
itab-year = '2006'.
APPEND itab.
CLEAR itab.
itab-name = 'CCCD'.
itab-year = '2006'.
APPEND itab.
CLEAR itab.
itab-name = 'CCCE'.
itab-year = '2006'.
APPEND itab.
CLEAR itab.
itab-name = 'CCCf'.
itab-year = '2006'.
APPEND itab.
CLEAR itab.
itab-name = 'DDDD'.
itab-year = '2005'.
APPEND itab.
CLEAR itab.
itab-name = 'DDDA'.
itab-year = '2005'.
APPEND itab.
CLEAR itab.
itab-name = 'DDDB'.
itab-year = '2005'.
APPEND itab.
CLEAR itab.
itab-name = 'DDDC'.
itab-year = '2005'.
APPEND itab.
CLEAR itab.
itab-name = 'DDDE'.
itab-year = '2005'.
APPEND itab.
CLEAR itab.
SORT itab BY year.
LOOP AT itab.
* Counter
gv_count = gv_count + 1.
AT END OF year.
itab2-count = gv_count.
MOVE-CORRESPONDING itab TO itab2.
APPEND itab2.
CLEAR gv_count.
WRITE:/ itab2-name,
itab2-year,
itab2-count.
CLEAR itab2.
CLEAR gv_flag.
ENDAT.
ENDLOOP.
Now for the above program the Output is :
Name Year Count
********** 2005 5
********** 2006 6
********** 2007 4
********** 2008 4
" Forget about the asterisk values as it's an example !
The above output is correct, But in my real case the table structure is not like the above .
The order of the field are in reverse.
i.e. The internal table is like this :
Case 2 -->
DATA: BEGIN OF itab OCCURS 0,
name TYPE char10,
year TYPE char4,
END OF itab.
DATA: BEGIN OF itab2 OCCURS 0 ,
name TYPE char10,
year TYPE char4,
count TYPE i,
END OF itab2.
In this case if I'm using at end of year the output is coming wrong.
Even on change of is also not working.
Request you guys to help me out so that I can achieve the same output as of case 1 with the table declaration as of CASE 2.
Regards,
Deepu.kHello Rich Heilman,
Again you came for my rescue ............
My code for this scenario is like this :
DATA: BEGIN OF itab OCCURS 0,
name TYPE char10,
year TYPE char4,
END OF itab.
DATA: BEGIN OF itab2 OCCURS 0 ,
name TYPE char10,
year TYPE char4,
count TYPE i,
END OF itab2.
DATA: gv_count TYPE i,
gv_flag TYPE char1.
itab-name = 'AAAA'.
itab-year = '2008'.
APPEND itab.
CLEAR itab.
itab-name = 'AAAB'.
itab-year = '2008'.
APPEND itab.
CLEAR itab.
itab-name = 'AAAC'.
itab-year = '2008'.
APPEND itab.
CLEAR itab.
itab-name = 'AAAD'.
itab-year = '2008'.
APPEND itab.
CLEAR itab.
itab-name = 'BBBB'.
itab-year = '2007'.
APPEND itab.
CLEAR itab.
itab-name = 'BBBA'.
itab-year = '2007'.
APPEND itab.
CLEAR itab.
itab-name = 'BBBC'.
itab-year = '2007'.
APPEND itab.
CLEAR itab.
itab-name = 'BBBD'.
itab-year = '2007'.
APPEND itab.
CLEAR itab.
itab-name = 'CCCC'.
itab-year = '2006'.
APPEND itab.
CLEAR itab.
itab-name = 'CCCA'.
itab-year = '2006'.
APPEND itab.
CLEAR itab.
itab-name = 'CCCB'.
itab-year = '2006'.
APPEND itab.
CLEAR itab.
itab-name = 'CCCD'.
itab-year = '2006'.
APPEND itab.
CLEAR itab.
itab-name = 'CCCE'.
itab-year = '2006'.
APPEND itab.
CLEAR itab.
itab-name = 'CCCf'.
itab-year = '2006'.
APPEND itab.
CLEAR itab.
itab-name = 'DDDD'.
itab-year = '2005'.
APPEND itab.
CLEAR itab.
itab-name = 'DDDA'.
itab-year = '2005'.
APPEND itab.
CLEAR itab.
itab-name = 'DDDB'.
itab-year = '2005'.
APPEND itab.
CLEAR itab.
itab-name = 'DDDC'.
itab-year = '2005'.
APPEND itab.
CLEAR itab.
itab-name = 'DDDE'.
itab-year = '2005'.
APPEND itab.
CLEAR itab.
SORT itab BY year.
LOOP AT itab.
* Counter
gv_count = gv_count + 1.
IF sy-tabix GT 1.
ON CHANGE OF itab-year.
itab2-count = gv_count.
MOVE-CORRESPONDING itab TO itab2.
APPEND itab2.
CLEAR gv_count.
WRITE:/ itab2-name,
itab2-year,
itab2-count.
CLEAR itab2.
CLEAR gv_flag.
ENDON.
ENDIF.
ENDLOOP.
The Output is :
DDDC 2005 2
CCCf 2006 4
BBBD 2007 6
AAAD 2008 4
The above output is wrong.
Can u correct me where I'm doing wrong ?
Regards,
Deepu.K -
Creation of dynamic internal table is not synchronous
In my code following lines are used to create a dynamic table.
REFRESH : INCTABL .
CLEAR INCTABL .
INCTABL-LINE = 'data: begin of dyntab occurs 10,'. APPEND INCTABL.
INCTABL-LINE = 'zpltnamec like zvendplt-zpltnamec,'. APPEND INCTABL.
INCTABL-LINE = 'sourcing like zopsdwbom-sourcing,'. APPEND INCTABL.
INCTABL-LINE = 'zmatgrp like zrmrpmaterial-zmatgrp,'. APPEND INCTABL.
INCTABL-LINE = 'zcollection like zrmrpmaterial-zcollection,'.
APPEND INCTABL.
INCTABL-LINE = 'fiscintrodt like zrmrpmaterial-zfiscintrodt,'.
APPEND INCTABL.
INCTABL-LINE = 'bednr like ekpo-bednr,'. APPEND INCTABL.
INCTABL-LINE = 'revlv like ekpo-revlv,'. APPEND INCTABL.
INCTABL-LINE = 'ematn like ekpo-ematn,'. APPEND INCTABL.
INCTABL-LINE = 'menge like mara-eannr,'. APPEND INCTABL.
INCTABL-LINE = 'stprs like mara-eannr,'. APPEND INCTABL.
*inctabl-line = 'kbetr like cdred-f_new,'. append inctabl.
DATA : T_KBETR(72) .
DATA :CNT(2).
DO LIN TIMES .
CNT = SY-INDEX .
CONCATENATE 'kbetr' CNT ' like cdred-f_new,' INTO T_KBETR .
CONDENSE T_KBETR .
INCTABL-LINE = T_KBETR . APPEND INCTABL.
ENDDO .
INCTABL-LINE = 'end of dyntab. '. APPEND INCTABL.
INSERT REPORT 'zcrchangereport_3'(001) FROM INCTABL.
but during run time it is using the previously created dynamic internal table structure and then creating currently required internal table.
how to overcome this problem/
Thanks.Hello,
Instead of creating report, create subroutine pool. Like
INCTABL-LINE = 'report ztest.'. APPEND INCTABL.
INCTABL-LINE = 'form main'. APPEND INCTABL.
INCTABL-LINE = 'data: begin of dyntab occurs 10,'. APPEND INCTABL.
INCTABL-LINE = 'zpltnamec like zvendplt-zpltnamec.'. APPEND INCTABL.
INCTABL-LINE = 'data: end of dyntab.'. APPEND INCTABL.
CATCH SYSTEM-EXCEPTIONS GENERATE_SUBPOOL_DIR_FULL = 9.
GENERATE SUBROUTINE POOL inctabl NAME l_name
MESSAGE L_MESSAGE LINE L_LINE WORD L_WORD.
ENDCATCH.
IF L_MESSAGE IS INITIAL.
PERFORM (L_FORM) IN PROGRAM (L_NAME).
ELSE.
WRITE : L_MESSAGE, L_LINE.
ENDIF.
You can get the message in L_message variable, if any error occurs.
Regards,
Naimesh -
Need information on Dynamic internal table
Hi All,
I need some information on dynamic internal table.
I want what are the field names and the values in dynamic internal table.
Is there any function module, which tells us the field names and values of corresponding fields from a dynamic internal table ?
Thank you very much in advance.Hi,
Program to display/edit database tables dynamically.
REPORT zdyn_table_display.
PARAMETERS: p_table TYPE tabname OBLIGATORY,
p_rows TYPE I.
* Creation of dynamic internal table
DATA: lv_dref TYPE REF TO data.
FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE.
DATA: lv_table TYPE string.
START-OF-SELECTION.
* Dynamic internal table.
CREATE DATA lv_dref TYPE TABLE OF (p_table).
ASSIGN lv_dref->* TO <fs_table>.
IF sy-subrc EQ 0.
* EXIT.
ENDIF.
data i type i.
* Get the data
SELECT *
FROM (p_table)
UP TO p_rows ROWS
INTO TABLE <fs_table>.
CONCATENATE 'Table contents : ' p_table INTO lv_table.
* display the table control.
CALL FUNCTION 'STC1_FULLSCREEN_TABLE_CONTROL'
EXPORTING
header = lv_table
tabname = p_table
no_button = space
TABLES
table = <fs_table>
EXCEPTIONS
no_more_tables = 1
too_many_fields = 2
nametab_not_valid = 3
handle_not_valid = 4
OTHERS = 5.
IF sy-subrc EQ 0.
EXIT.
ENDIF.
Getting internal table definition
Try this...
DATA : l_descr_ref TYPE REF TO cl_abap_structdescr.
l_descr_ref ?= cl_abap_typedescr=>describe_by_data( itab ).
Now l_descr_ref->components holds the entire list of fields in itab.
Thanks & Regards,
ShreeMohan -
How to populate dynamic internal table fields with data??
Hi Folks,
How to assign a particular internal table field to a dynamically assigned internal table?
I have an excel sheet, and i upload the excel sheet data into an internal IT_EXLOAD table using FM ALSM_EXCEL_TO_INTERNAL_TABLE
Now i created a dynamic internal table which has the same column as in my DB table.
I have to fill the dynamically created Internal table with the IT_EXLOAD data dynamically.
Suppose in future if i add some field in DB table and for that field if i add some column in excel sheet there is no need to change in the program.
Looking for reply...
Best Regards,
Sayakhi,
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_path
i_begin_col = '1'
i_begin_row = '2'
i_end_col = '2'
i_end_row = '1000'
TABLES
intern = intern
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
*declare intern_tmp as internal table tb_data in wich you want the data
*and declare a field symbol <fs_123>
LOOP AT intern.
ASSIGN COMPONENT intern-col OF STRUCTURE
intern_tmp TO <fs_123>.
IF NOT <fs_123> IS ASSIGNED.
CLEAR intern.
CLEAR intern_tmp.
CONTINUE.
ENDIF.
<fs_123> = intern-value.
AT END OF row.
CLEAR tb_data.
MOVE-CORRESPONDING: intern_tmp TO tb_data.
APPEND tb_data.
CLEAR intern_tmp.
ENDAT.
CLEAR intern.
ENDLOOP.
**paste this code and you can see the data in ur tables dynamically.
Thanks
Nitin Sachdeva -
How to populate field catalogue fields in ALV using dynamic internal table
Hi All,
Please let me know how to populate field catalogue fields in ALV using dynamic internal table.
I have created <dyn_table> using code below.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = g_t_ifc
it_fieldcatalog = g_t_fieldcat
IMPORTING
ep_table = dy_table.
ASSIGN dy_table->* TO <dyn_table>.
Create dynamic work area and assign to FS
CREATE DATA dy_line LIKE LINE OF <dyn_table>.
ASSIGN dy_line->* TO <dyn_wa>.
Now this <dyn_table> has fields like idoc no.,creation date ,
segment field 1, segment field 2 etc..Now idoc no.,creation date are static fields from table EDIDC. And segment field 1, segment field 2 etc are dynamic fields from table EDSAPPL.
In my ALV report I am getting the final layout properly but I am unable to move values to corresponding fields in the final layout shown.Please let me know how to populate these fields from different tables.
I tried this way but its not working.
SORT g_t_edid4 BY docnum.
LOOP AT g_t_edidc INTO g_r_edidc.
READ TABLE g_t_edid4 into g_r_edid4
WITH KEY docnum = g_r_edidc-docnum
BINARY SEARCH.
IF sy-subrc = 0.
<dyn_wa> = g_r_edid4-sdata.
MOVE-CORRESPONDING g_r_edid4 to <dyn_wa>.
CLEAR g_r_edid4.
ENDIF.
MOVE-CORRESPONDING g_r_edidc to <dyn_wa>.
APPEND <dyn_wa> TO <dyn_table>.You have to assign each field to field symbol and then assign the value to that field symbol and asssign that field symbol to workarea field symbol.
LOOP AT g_t_edidc INTO g_r_edidc.
READ TABLE g_t_edid4 into g_r_edid4
WITH KEY docnum = g_r_edidc-docnum
BINARY SEARCH.
IF sy-subrc = 0.
ASSIGN COMPONENT 'SDATA' OF STRUCTURE <DYN_WA> TO <DYN_FLD>.
<DYN_FLD> = g_r_edid4-sdata.
" <dyn_wa> = g_r_edid4-sdata.
" Assign each fields like this.
" MOVE-CORRESPONDING g_r_edid4 to <dyn_wa>.
CLEAR g_r_edid4.
ENDIF.
" MOVE-CORRESPONDING g_r_edidc to <dyn_wa>.
APPEND <dyn_wa> TO <dyn_table>.
Regards,
Naimesh Patel
Maybe you are looking for
-
Is it possible to share an iTunes Library?
I have 3 macs and the airport extreme. I would like to have one iTunes library on an external drive attached to the extreme where I download and rip all music and then be able to share it across all 3 macs.
-
Is there a command to determine the events per second that an ASA is generating? I can see the total messages logged, but can't tell what measurement of time they're associated with. thank you
-
All of a sudden, I can't seem to load any apps. They set there with a gray screen and it says waiting... under it. The problem is, they seemed frozen. Any solution??
-
Help , I am using CS2 and the tiff files that I have been working on I want to convert to jpeg format , I select "save as" but when the box opens I do not have an option to save as a jpeg all other relevent files seem to be there but no jpeg option,
-
New Local Move Request Script for Exchange 2010 mailboxes
Hi I would like to have a script that can enable me automatically move mailboxes of certain domains to a new mailbox database. E.g. new local move request to move only 20 mailboxes in mailboxdatabase01 with the domain name: mymove.com, moving it to