2008 Feb 02 7:43 AM
hi experts,
i am facing a problem of how to create a internal table of variable size.some what like creating dynamic arrays.
depending upon the data in the database i have to create a internal table of that size.
actually what i am exactly looking at is a internal table having a dynamic structure determining its structure at runtime.
kindly help me out.
thanks in advance.
MA
Edited by: mayank agarwal on Feb 2, 2008 8:53 AM
Edited by: mayank agarwal on Feb 2, 2008 9:06 AM
hi experts,
i am facing a problem of how to create a internal table of variable size.some what like creating dynamic arrays.
depending upon the data in the database i have to create a internal table of that size.
actually what i am exactly looking at is a internal table having a dynamic structure determining its structure at runtime.
kindly help me out.
thanks in advance.
MA
Edited by: mayank agarwal on Feb 2, 2008 8:53 AM
Edited by: mayank agarwal on Feb 2, 2008 9:06 AM
2008 Feb 02 7:46 AM
Hi Mayank,
Check this blog, Code to create dynamic internal table and structure explained clearly.
[Dynamic IT|https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2071] [original link is broken] [original link is broken] [original link is broken];
Regards,
Shrinivas
2008 Feb 02 7:48 AM
Hi
Check this webblog of Dynamic Internal Table
/people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap
Regards
if help full reward points
2008 Feb 02 8:02 AM
link: [http://www.saptechnical.com/Tutorials/ABAP/DynamicInternaltable/DynamicInternalTable.htm]
regards.
santhosh reddy
2008 Feb 14 6:25 AM
Hi,
pls 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,
Gowri sankar
if it is usful reward points
2008 Oct 03 3:31 PM
form create_fcat .
data: new_table type ref to data ,
new_line type ref to data ,
lwa_fldcat type lvc_s_fcat ,
wa_fldcat type lvc_t_fcat ,
lwa_alv_fcat like line of fcat.
*Workcenter
lv_col_post = lv_col_post + 1.
clear lwa_fldcat.
fcat-col_pos = lv_col_post.
lwa_fldcat-fieldname = 'ARBPL' .
lwa_fldcat-datatype = 'CHAR'.
lwa_fldcat-inttype = 'C'.
lwa_fldcat-intlen = '10'.
lwa_fldcat-ref_table = 'CRHD'.
lwa_fldcat-scrtext_l = 'İşyeri'.
lwa_fldcat-scrtext_m = 'İşyeri'.
lwa_fldcat-scrtext_s = 'İşyeri'.
append lwa_fldcat to wa_fldcat .
*Tanım
lv_col_post = lv_col_post + 1.
clear lwa_fldcat.
fcat-col_pos = lv_col_post.
lwa_fldcat-fieldname = 'KTEXT' .
lwa_fldcat-datatype = 'CHAR'.
lwa_fldcat-inttype = 'C'.
lwa_fldcat-intlen = '10'.
lwa_fldcat-ref_table = 'CRtx'.
lwa_fldcat-scrtext_l = 'Tanım'.
lwa_fldcat-scrtext_m = 'Tanım'.
lwa_fldcat-scrtext_s = 'Tanım'.
append lwa_fldcat to wa_fldcat .
*Gerçekleşen
lv_col_post = lv_col_post + 1.
clear lwa_fldcat.
fcat-col_pos = lv_col_post.
lwa_fldcat-fieldname = 'GMAKS' .
lwa_fldcat-datatype = 'CHAR'.
lwa_fldcat-inttype = 'C'.
lwa_fldcat-intlen = '10'.
LWA_FLDCAT-REF_TABLE = 'CRtx'.
lwa_fldcat-scrtext_l = 'Gerçekleşen Makine Süresi'.
lwa_fldcat-scrtext_m = 'Gerçekleşen Makine Süresi'.
lwa_fldcat-scrtext_s = 'Gerçekleşen Makine Süresi'.
append lwa_fldcat to wa_fldcat .
*Gerçekleşen
lv_col_post = lv_col_post + 1.
clear lwa_fldcat.
fcat-col_pos = lv_col_post.
lwa_fldcat-fieldname = 'GISCS' .
lwa_fldcat-datatype = 'CHAR'.
lwa_fldcat-inttype = 'C'.
lwa_fldcat-intlen = '10'.
LWA_FLDCAT-REF_TABLE = 'CRtx'.
lwa_fldcat-scrtext_l = 'Gerçekleşen İşçilik Süresi'.
lwa_fldcat-scrtext_m = 'Gerçekleşen İşçilik Süresi'.
lwa_fldcat-scrtext_s = 'Gerçekleşen İşçilik Süresi'.
append lwa_fldcat to wa_fldcat .
*Birim
lv_col_post = lv_col_post + 1.
clear lwa_fldcat.
fcat-col_pos = lv_col_post.
lwa_fldcat-fieldname = 'BIRIM' .
lwa_fldcat-datatype = 'CHAR'.
lwa_fldcat-inttype = 'C'.
lwa_fldcat-intlen = '4'.
LWA_FLDCAT-REF_TABLE = 'CRtx'.
lwa_fldcat-scrtext_l = 'Birim'.
lwa_fldcat-scrtext_m = 'Birim'.
lwa_fldcat-scrtext_s = 'Birim'.
append lwa_fldcat to wa_fldcat .
*Doluluk
lv_col_post = lv_col_post + 1.
clear lwa_fldcat.
fcat-col_pos = lv_col_post.
lwa_fldcat-fieldname = 'DLLK' .
lwa_fldcat-datatype = 'CHAR'.
lwa_fldcat-inttype = 'C'.
lwa_fldcat-intlen = '7'.
LWA_FLDCAT-REF_TABLE = 'CRtx'.
lwa_fldcat-scrtext_l = 'Makine Doluluk'.
lwa_fldcat-scrtext_m = 'Makine Doluluk'.
lwa_fldcat-scrtext_s = 'Makine Doluluk'.
append lwa_fldcat to wa_fldcat .
sort lt_tar1 by tarih1.
clear lwa_fldcat.
loop at lt_tar1.
lwa_fldcat-fieldname = lt_tar1-tarih1.
lwa_fldcat-datatype = 'QUAN'.
lwa_fldcat-inttype = 'P'.
lwa_fldcat-intlen = '000013'.
lwa_fldcat-outputlen = '000018'.
lwa_fldcat-qfieldname = 'MEINS'.
concatenate lt_tar1-tarih1 'M' into lwa_fldcat-scrtext_l .
concatenate lt_tar1-tarih1 'M' into lwa_fldcat-scrtext_m .
concatenate lt_tar1-tarih1 'M' into lwa_fldcat-scrtext_s .
append lwa_fldcat to wa_fldcat .
lwa_fldcat-fieldname = lt_tar1-isci.
lwa_fldcat-datatype = 'QUAN'.
lwa_fldcat-inttype = 'P'.
lwa_fldcat-intlen = '000013'.
lwa_fldcat-outputlen = '000018'.
lwa_fldcat-qfieldname = 'MEINS'.
concatenate lt_tar1-tarih1 'I' into lwa_fldcat-scrtext_l .
concatenate lt_tar1-tarih1 'I' into lwa_fldcat-scrtext_m .
concatenate lt_tar1-tarih1 'I' into lwa_fldcat-scrtext_s .
append lwa_fldcat to wa_fldcat .
endloop.
*-planlanan makine suresi
lv_col_post = lv_col_post + 1.
clear lwa_fldcat.
fcat-col_pos = lv_col_post.
lwa_fldcat-fieldname = 'PMAKS' .
lwa_fldcat-datatype = 'CHAR'.
lwa_fldcat-inttype = 'C'.
lwa_fldcat-intlen = '3'.
LWA_FLDCAT-REF_TABLE = 'CRtx'.
lwa_fldcat-scrtext_l = 'Planlanan Makine Süresi'.
lwa_fldcat-scrtext_m = 'Planlanan Makine Süresi'.
lwa_fldcat-scrtext_s = 'Planlanan Makine Süresi'.
append lwa_fldcat to wa_fldcat .
*-planlanan iscilik suresi
lv_col_post = lv_col_post + 1.
clear lwa_fldcat.
fcat-col_pos = lv_col_post.
lwa_fldcat-fieldname = 'PISCS' .
lwa_fldcat-datatype = 'CHAR'.
lwa_fldcat-inttype = 'C'.
lwa_fldcat-intlen = '3'.
LWA_FLDCAT-REF_TABLE = 'CRtx'.
lwa_fldcat-scrtext_l = 'Planlanan İşçilik Süresi'.
lwa_fldcat-scrtext_m = 'Planlanan İşçilik Süresi'.
lwa_fldcat-scrtext_s = 'Planlanan İşçilik Süresi'.
append lwa_fldcat to wa_fldcat .
*Doluluk2
lv_col_post = lv_col_post + 1.
clear lwa_fldcat.
fcat-col_pos = lv_col_post.
lwa_fldcat-fieldname = 'DLLK2' .
lwa_fldcat-datatype = 'CHAR'.
lwa_fldcat-inttype = 'C'.
lwa_fldcat-intlen = '7'.
LWA_FLDCAT-REF_TABLE = 'CRtx'.
lwa_fldcat-scrtext_l = 'Planlanan Doluluk'.
lwa_fldcat-scrtext_m = 'Planlanan Doluluk'.
lwa_fldcat-scrtext_s = 'Planlanan Doluluk'.
append lwa_fldcat to wa_fldcat .
sort lt_tar2 by tarih1.
clear lwa_fldcat.
loop at lt_tar2.
lwa_fldcat-fieldname = lt_tar2-tarih1.
lwa_fldcat-datatype = 'QUAN'.
lwa_fldcat-inttype = 'P'.
lwa_fldcat-intlen = '000013'.
lwa_fldcat-outputlen = '000018'.
lwa_fldcat-qfieldname = 'MEINS'.
concatenate lt_tar2-tarih1 'M' into lwa_fldcat-scrtext_l .
concatenate lt_tar2-tarih1 'M' into lwa_fldcat-scrtext_m .
concatenate lt_tar2-tarih1 'M' into lwa_fldcat-scrtext_s .
append lwa_fldcat to wa_fldcat .
lwa_fldcat-fieldname = lt_tar2-isci.
lwa_fldcat-datatype = 'QUAN'.
lwa_fldcat-inttype = 'P'.
lwa_fldcat-intlen = '000013'.
lwa_fldcat-outputlen = '000018'.
lwa_fldcat-qfieldname = 'MEINS'.
concatenate lt_tar2-tarih1 'I' into lwa_fldcat-scrtext_l .
concatenate lt_tar2-tarih1 'I' into lwa_fldcat-scrtext_m .
concatenate lt_tar2-tarih1 'I' into lwa_fldcat-scrtext_s .
append lwa_fldcat to wa_fldcat .
endloop.
Create internal table
Create dynamic internal table and assign to FS
call method cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = wa_fldcat
IMPORTING
ep_table = new_table.
assign new_table->* to .
Create dynamic work area and assign to FS
create data new_line like line of .
loop at wa_fldcat into lwa_fldcat.
move-corresponding lwa_fldcat to lwa_alv_fcat.
move: lwa_fldcat-scrtext_l to lwa_alv_fcat-seltext_l,
lwa_fldcat-scrtext_m to lwa_alv_fcat-seltext_m,
lwa_fldcat-scrtext_s to lwa_alv_fcat-seltext_s.
append lwa_alv_fcat to fcat.
endloop.
Meins için trik..ref tab. vermeyince conv-exit yapmıyor o yüzdden
*aşağıdaki kod eklendi.
loop at fcat where fieldname = 'MEINS'.
fcat-ref_tabname = 'MSEG'.
modify fcat.
endloop.
endform. " CREATE_FCAT
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |