‎2008 Apr 03 9:58 AM
Hi to all
Can you explain me what is dynamic internal table?
thanks in advance
‎2008 Apr 03 10:00 AM
Hi,
please refer to this link there u can find examples on dynamic itab
http://www.sap-img.com/ab030.htm
rgds,
bharat.
‎2008 Apr 03 10:00 AM
Hi,
REPORT Z_DYNITALV.
TYPE-POOLS: slis.
DATA :
VARIABLES for function REUSE_ALV_DISPLAY
Interface consistency check log output
i_interface_check,
Ignore all buffers?
i_bypassing_buffer TYPE char01,
Buffer active
i_buffer_active VALUE space,
Name of the calling program
i_callback_program LIKE sy-repid VALUE space,
Set EXIT rountine to status
i_callback_pf_status_set TYPE slis_formname VALUE space,
EXIT routine for command handling
i_callback_user_command TYPE slis_formname VALUE space,
Internal output table structure name
i_structure_name LIKE dd02l-tabname,
List layout specifications
is_layout TYPE slis_layout_alv,
Field catalog with field descriptions
it_fieldcat TYPE slis_t_fieldcat_alv,
Table of inactive function codes
it_excluding TYPE slis_t_extab,
Grouping fields for column selection
it_special_groups TYPE slis_t_sp_group_alv,
Sort criteria for first list display
it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,
Filter criteria for first list output
it_filter TYPE slis_t_filter_alv,
Selection information modification
is_sel_hide TYPE slis_sel_hide_alv,
Initial variant active/inactive logic
i_default VALUE 'X',
Variants can be saved
i_save VALUE space,
Variant information
is_variant LIKE disvariant,
Table of events to perform
it_events TYPE slis_t_event,
Standard fcode exit requests table
it_event_exit TYPE slis_t_event_exit,
Print information
is_print TYPE slis_print_alv,
Initialization key for Re/Re interface
is_reprep_id TYPE slis_reprep_id,
Coordinates for list in dialog box
i_screen_start_column VALUE 0,
Coordinates for list in dialog box
i_screen_start_line VALUE 0,
Coordinates for list in dialog box
i_screen_end_column VALUE 0,
Coordinates for list in dialog box
i_screen_end_line VALUE 0,
e_exit_caused_by_caller,
es_exit_caused_by_user TYPE slis_exit_by_user,
Temporary structure for it_fieldcat
xfield TYPE slis_fieldcat_alv,
Temporary structure for it_events
xxevent TYPE slis_alv_event.
DATA: new_table TYPE REF TO data,
new_line TYPE REF TO data,
IS_LVC_CAT type LVC_S_FCAT,
IT_LVC_CAT type LVC_T_FCAT,
IS_FIELDCAT type SLIS_FIELDCAT_ALV.
FIELD-SYMBOLS: <l_table> TYPE TABLE,
<l_line> TYPE ANY,
<l_field> TYPE ANY.Main Program
START-OF-SELECTION.
PERFORM Field_Catalog.
PERFORM SET_DATA.
PERFORM DISPLAY_ALV.FORM Field_Catalog.
Here we create the field catalog for dynamic internal table.
And create table dynamicly using method: create_dynamic_table from class: cl_alv_table_create.
FORM Field_Catalog .
IS_LVC_CAT-fieldname = 'BUKRS'.
IS_LVC_CAT-ref_field = 'BUKRS'.
IS_LVC_CAT-ref_table = 'PA0001'.
IS_LVC_CAT-SCRTEXT_S = IS_LVC_CAT-SCRTEXT_M =
IS_LVC_CAT-SCRTEXT_L = 'Company Code'.
APPEND IS_LVC_CAT TO IT_LVC_CAT.
IS_FIELDCAT-fieldname = 'BUKRS'.
IS_FIELDCAT-ref_fieldname = 'BUKRS'.
IS_FIELDCAT-ref_tabname = 'PA0001'.
IS_FIELDCAT-OUTPUTLEN = 10.
IS_FIELDCAT-SELTEXT_S = IS_FIELDCAT-SELTEXT_M =
IS_FIELDCAT-SELTEXT_L = 'Company Code'.
APPEND IS_FIELDCAT TO IT_FIELDCAT.
IS_LVC_CAT-fieldname = 'WERKS'.
IS_LVC_CAT-ref_field = 'WERKS'.
IS_LVC_CAT-ref_table = 'PA0001'.
IS_LVC_CAT-SCRTEXT_S = IS_LVC_CAT-SCRTEXT_M =
IS_LVC_CAT-SCRTEXT_L = 'Pers.Area'.
APPEND IS_LVC_CAT TO IT_LVC_CAT.
IS_FIELDCAT-fieldname = 'WERKS'.
IS_FIELDCAT-ref_fieldname = 'WERKS'.
IS_FIELDCAT-ref_tabname = 'PA0001'.
IS_FIELDCAT-OUTPUTLEN = 10.
IS_FIELDCAT-SELTEXT_S = IS_FIELDCAT-SELTEXT_M =
IS_FIELDCAT-SELTEXT_L = 'Pers.Area'.
APPEND IS_FIELDCAT TO IT_FIELDCAT.
IS_LVC_CAT-fieldname = 'BTRTL'.
IS_LVC_CAT-ref_field = 'BTRTL'.
IS_LVC_CAT-ref_table = 'PA0001'.
IS_LVC_CAT-SCRTEXT_S = IS_LVC_CAT-SCRTEXT_M =
IS_LVC_CAT-SCRTEXT_L = 'Pers.SubArea'.
APPEND IS_LVC_CAT TO IT_LVC_CAT.
IS_FIELDCAT-fieldname = 'BTRTL'.
IS_FIELDCAT-ref_fieldname = 'BTRTL'.
IS_FIELDCAT-ref_tabname = 'PA0001'.
IS_FIELDCAT-OUTPUTLEN = 10.
IS_FIELDCAT-SELTEXT_S = IS_FIELDCAT-SELTEXT_M =
IS_FIELDCAT-SELTEXT_L = 'Pers.SubArea'.
APPEND IS_FIELDCAT TO IT_FIELDCAT.
IS_LVC_CAT-fieldname = 'CNAME'.
IS_LVC_CAT-ref_field = 'CNAME'.
IS_LVC_CAT-ref_table = 'PA0002'.
IS_LVC_CAT-SCRTEXT_S = IS_LVC_CAT-SCRTEXT_M =
IS_LVC_CAT-SCRTEXT_L = 'Name'.
APPEND IS_LVC_CAT TO IT_LVC_CAT.
IS_FIELDCAT-fieldname = 'CNAME'.
IS_FIELDCAT-ref_fieldname = 'CNAME'.
IS_FIELDCAT-ref_tabname = 'PA0002'.
IS_FIELDCAT-OUTPUTLEN = 20.
IS_FIELDCAT-SELTEXT_S = IS_FIELDCAT-SELTEXT_M =
IS_FIELDCAT-SELTEXT_L = 'Name'.
APPEND IS_FIELDCAT TO IT_FIELDCAT.
Create a new Table
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = IT_LVC_CAT
IMPORTING
ep_table = new_table.
Create a new Line with the same structure of the table.
ASSIGN new_table->* TO <l_table>.
CREATE DATA new_line LIKE LINE OF <l_table>.
ASSIGN new_line->* TO <l_line>.
ENDFORM. " CREATE_LAYOUTForm Set_Data.
Here we input our data.
FORM SET_DATA .
Test it...
DO 3 TIMES.
ASSIGN COMPONENT 'BUKRS' OF STRUCTURE <l_line> TO <l_field>.
<l_field> = '8369'.
ASSIGN COMPONENT 'WERKS' OF STRUCTURE <l_line> TO <l_field>.
<l_field> = '1000'.
ASSIGN COMPONENT 'BTRTL' OF STRUCTURE <l_line> TO <l_field>.
<l_field> = '0100'.
ASSIGN COMPONENT 'CNAME' OF STRUCTURE <l_line> TO <l_field>.
<l_field> = 'Test Employee Name'.
INSERT <l_line> INTO TABLE <l_table>.
ENDDO.
ENDFORM. " SET_DATAForm Display_ALV
We display our data using FM: 'REUSE_ALV_LIST_DISPLAY'.
FORM DISPLAY_ALV .
SET PAGE HEADER & END LIST.
CLEAR xxevent.
xxevent-name = 'TOP_OF_PAGE'.
xxevent-form = 'TOP_OF_PAGE_ALV'.
APPEND xxevent TO it_events.
CLEAR xxevent.
xxevent-name = 'END_OF_LIST'.
xxevent-form = 'END_OF_LIST_ALV'.
APPEND xxevent TO it_events.
Layout
IS_LAYOUT-COLWIDTH_OPTIMIZE = ''.
setting variant
is_variant-variant = p_var.
is_variant-report = sy-repid.
is_variant-username = sy-uname.
others
i_save = 'A'.
i_callback_program = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_interface_check = i_interface_check
i_bypassing_buffer = i_bypassing_buffer
i_buffer_active = i_buffer_active
i_callback_program = i_callback_program
i_callback_pf_status_set = i_callback_pf_status_set
i_callback_user_command = i_callback_user_command
i_structure_name = i_structure_name
is_layout = is_layout
it_fieldcat = it_fieldcat
it_excluding = it_excluding
it_special_groups = it_special_groups
it_sort = it_sort[]
it_filter = it_filter
is_sel_hide = is_sel_hide
i_default = i_default
i_save = i_save
is_variant = is_variant
it_events = it_events
it_event_exit = it_event_exit
is_print = is_print
is_reprep_id = is_reprep_id
i_screen_start_column = i_screen_start_column
i_screen_start_line = i_screen_start_line
i_screen_end_column = i_screen_end_column
i_screen_end_line = i_screen_end_line
IMPORTING
e_exit_caused_by_caller = e_exit_caused_by_caller
es_exit_caused_by_user = es_exit_caused_by_user
TABLES
t_outtab = <l_table>
EXCEPTIONS
program_error = 1
OTHERS = 2.
.
IF SY-SUBRC 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALVForm TOP_OF_PAGE_ALV and END_OF_LIST_ALV.
Here where we can put Report header and footer text.
FORM TOP_OF_PAGE_ALV .
WRITE: 'Here Your Report Header'.
WRITE:/'Sub Report Header '.
SKIP.
ENDFORM. " TOP_OF_PAGE_ALV
FORM END_OF_LIST_ALV .
WRITE:/'Here Your Report Footer'.
WRITE:/'Sub Report Footer '.
SKIP.
ENDFORM. " END_OF_LIST_ALVRegards,
V.Balaji
Reward if Usefull...
‎2008 Apr 03 10:01 AM
Hi Mahesh,
DEFINITION
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
SAMPLE CODE
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.
Kindly Reward Points If You Found The Reply Helpful,
Cheers,
Chaitanya.
‎2008 Apr 03 10:05 AM
Hi,
Description:
Below is a simple program that create Internal Table dynamicly and display it as ALV with header and footer text.
Type, Data and Fields-Symbols declaration:
REPORT Z_DYNITALV.
TYPE-POOLS: slis.
DATA :
VARIABLES for function REUSE_ALV_DISPLAY
Interface consistency check log output
i_interface_check,
Ignore all buffers?
i_bypassing_buffer TYPE char01,
Buffer active
i_buffer_active VALUE space,
Name of the calling program
i_callback_program LIKE sy-repid VALUE space,
Set EXIT rountine to status
i_callback_pf_status_set TYPE slis_formname VALUE space,
EXIT routine for command handling
i_callback_user_command TYPE slis_formname VALUE space,
Internal output table structure name
i_structure_name LIKE dd02l-tabname,
List layout specifications
is_layout TYPE slis_layout_alv,
Field catalog with field descriptions
it_fieldcat TYPE slis_t_fieldcat_alv,
Table of inactive function codes
it_excluding TYPE slis_t_extab,
Grouping fields for column selection
it_special_groups TYPE slis_t_sp_group_alv,
Sort criteria for first list display
it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,
Filter criteria for first list output
it_filter TYPE slis_t_filter_alv,
Selection information modification
is_sel_hide TYPE slis_sel_hide_alv,
Initial variant active/inactive logic
i_default VALUE 'X',
Variants can be saved
i_save VALUE space,
Variant information
is_variant LIKE disvariant,
Table of events to perform
it_events TYPE slis_t_event,
Standard fcode exit requests table
it_event_exit TYPE slis_t_event_exit,
Print information
is_print TYPE slis_print_alv,
Initialization key for Re/Re interface
is_reprep_id TYPE slis_reprep_id,
Coordinates for list in dialog box
i_screen_start_column VALUE 0,
Coordinates for list in dialog box
i_screen_start_line VALUE 0,
Coordinates for list in dialog box
i_screen_end_column VALUE 0,
Coordinates for list in dialog box
i_screen_end_line VALUE 0,
e_exit_caused_by_caller,
es_exit_caused_by_user TYPE slis_exit_by_user,
Temporary structure for it_fieldcat
xfield TYPE slis_fieldcat_alv,
Temporary structure for it_events
xxevent TYPE slis_alv_event.
DATA: new_table TYPE REF TO data,
new_line TYPE REF TO data,
IS_LVC_CAT type LVC_S_FCAT,
IT_LVC_CAT type LVC_T_FCAT,
IS_FIELDCAT type SLIS_FIELDCAT_ALV.
FIELD-SYMBOLS: <l_table> TYPE TABLE,
<l_line> TYPE ANY,
<l_field> TYPE ANY.Main Program
START-OF-SELECTION.
PERFORM Field_Catalog.
PERFORM SET_DATA.
PERFORM DISPLAY_ALV.FORM Field_Catalog.
Here we create the field catalog for dynamic internal table.
And create table dynamicly using method: create_dynamic_table from class: cl_alv_table_create.
FORM Field_Catalog .
IS_LVC_CAT-fieldname = 'BUKRS'.
IS_LVC_CAT-ref_field = 'BUKRS'.
IS_LVC_CAT-ref_table = 'PA0001'.
IS_LVC_CAT-SCRTEXT_S = IS_LVC_CAT-SCRTEXT_M =
IS_LVC_CAT-SCRTEXT_L = 'Company Code'.
APPEND IS_LVC_CAT TO IT_LVC_CAT.
IS_FIELDCAT-fieldname = 'BUKRS'.
IS_FIELDCAT-ref_fieldname = 'BUKRS'.
IS_FIELDCAT-ref_tabname = 'PA0001'.
IS_FIELDCAT-OUTPUTLEN = 10.
IS_FIELDCAT-SELTEXT_S = IS_FIELDCAT-SELTEXT_M =
IS_FIELDCAT-SELTEXT_L = 'Company Code'.
APPEND IS_FIELDCAT TO IT_FIELDCAT.
IS_LVC_CAT-fieldname = 'WERKS'.
IS_LVC_CAT-ref_field = 'WERKS'.
IS_LVC_CAT-ref_table = 'PA0001'.
IS_LVC_CAT-SCRTEXT_S = IS_LVC_CAT-SCRTEXT_M =
IS_LVC_CAT-SCRTEXT_L = 'Pers.Area'.
APPEND IS_LVC_CAT TO IT_LVC_CAT.
IS_FIELDCAT-fieldname = 'WERKS'.
IS_FIELDCAT-ref_fieldname = 'WERKS'.
IS_FIELDCAT-ref_tabname = 'PA0001'.
IS_FIELDCAT-OUTPUTLEN = 10.
IS_FIELDCAT-SELTEXT_S = IS_FIELDCAT-SELTEXT_M =
IS_FIELDCAT-SELTEXT_L = 'Pers.Area'.
APPEND IS_FIELDCAT TO IT_FIELDCAT.
IS_LVC_CAT-fieldname = 'BTRTL'.
IS_LVC_CAT-ref_field = 'BTRTL'.
IS_LVC_CAT-ref_table = 'PA0001'.
IS_LVC_CAT-SCRTEXT_S = IS_LVC_CAT-SCRTEXT_M =
IS_LVC_CAT-SCRTEXT_L = 'Pers.SubArea'.
APPEND IS_LVC_CAT TO IT_LVC_CAT.
IS_FIELDCAT-fieldname = 'BTRTL'.
IS_FIELDCAT-ref_fieldname = 'BTRTL'.
IS_FIELDCAT-ref_tabname = 'PA0001'.
IS_FIELDCAT-OUTPUTLEN = 10.
IS_FIELDCAT-SELTEXT_S = IS_FIELDCAT-SELTEXT_M =
IS_FIELDCAT-SELTEXT_L = 'Pers.SubArea'.
APPEND IS_FIELDCAT TO IT_FIELDCAT.
IS_LVC_CAT-fieldname = 'CNAME'.
IS_LVC_CAT-ref_field = 'CNAME'.
IS_LVC_CAT-ref_table = 'PA0002'.
IS_LVC_CAT-SCRTEXT_S = IS_LVC_CAT-SCRTEXT_M =
IS_LVC_CAT-SCRTEXT_L = 'Name'.
APPEND IS_LVC_CAT TO IT_LVC_CAT.
IS_FIELDCAT-fieldname = 'CNAME'.
IS_FIELDCAT-ref_fieldname = 'CNAME'.
IS_FIELDCAT-ref_tabname = 'PA0002'.
IS_FIELDCAT-OUTPUTLEN = 20.
IS_FIELDCAT-SELTEXT_S = IS_FIELDCAT-SELTEXT_M =
IS_FIELDCAT-SELTEXT_L = 'Name'.
APPEND IS_FIELDCAT TO IT_FIELDCAT.
Create a new Table
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = IT_LVC_CAT
IMPORTING
ep_table = new_table.
Create a new Line with the same structure of the table.
ASSIGN new_table->* TO <l_table>.
CREATE DATA new_line LIKE LINE OF <l_table>.
ASSIGN new_line->* TO <l_line>.
ENDFORM. " CREATE_LAYOUTForm Set_Data.
Here we input our data.
FORM SET_DATA .
Test it...
DO 3 TIMES.
ASSIGN COMPONENT 'BUKRS' OF STRUCTURE <l_line> TO <l_field>.
<l_field> = '8369'.
ASSIGN COMPONENT 'WERKS' OF STRUCTURE <l_line> TO <l_field>.
<l_field> = '1000'.
ASSIGN COMPONENT 'BTRTL' OF STRUCTURE <l_line> TO <l_field>.
<l_field> = '0100'.
ASSIGN COMPONENT 'CNAME' OF STRUCTURE <l_line> TO <l_field>.
<l_field> = 'Test Employee Name'.
INSERT <l_line> INTO TABLE <l_table>.
ENDDO.
ENDFORM. " SET_DATAForm Display_ALV
We display our data using FM: 'REUSE_ALV_LIST_DISPLAY'.
FORM DISPLAY_ALV .
SET PAGE HEADER & END LIST.
CLEAR xxevent.
xxevent-name = 'TOP_OF_PAGE'.
xxevent-form = 'TOP_OF_PAGE_ALV'.
APPEND xxevent TO it_events.
CLEAR xxevent.
xxevent-name = 'END_OF_LIST'.
xxevent-form = 'END_OF_LIST_ALV'.
APPEND xxevent TO it_events.
Layout
IS_LAYOUT-COLWIDTH_OPTIMIZE = ''.
setting variant
is_variant-variant = p_var.
is_variant-report = sy-repid.
is_variant-username = sy-uname.
others
i_save = 'A'.
i_callback_program = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_interface_check = i_interface_check
i_bypassing_buffer = i_bypassing_buffer
i_buffer_active = i_buffer_active
i_callback_program = i_callback_program
i_callback_pf_status_set = i_callback_pf_status_set
i_callback_user_command = i_callback_user_command
i_structure_name = i_structure_name
is_layout = is_layout
it_fieldcat = it_fieldcat
it_excluding = it_excluding
it_special_groups = it_special_groups
it_sort = it_sort[]
it_filter = it_filter
is_sel_hide = is_sel_hide
i_default = i_default
i_save = i_save
is_variant = is_variant
it_events = it_events
it_event_exit = it_event_exit
is_print = is_print
is_reprep_id = is_reprep_id
i_screen_start_column = i_screen_start_column
i_screen_start_line = i_screen_start_line
i_screen_end_column = i_screen_end_column
i_screen_end_line = i_screen_end_line
IMPORTING
e_exit_caused_by_caller = e_exit_caused_by_caller
es_exit_caused_by_user = es_exit_caused_by_user
TABLES
t_outtab = <l_table>
EXCEPTIONS
program_error = 1
OTHERS = 2.
.
IF SY-SUBRC 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALVForm TOP_OF_PAGE_ALV and END_OF_LIST_ALV.
Here where we can put Report header and footer text.
FORM TOP_OF_PAGE_ALV .
WRITE: 'Here Your Report Header'.
WRITE:/'Sub Report Header '.
SKIP.
ENDFORM. " TOP_OF_PAGE_ALV
FORM END_OF_LIST_ALV .
WRITE:/'Here Your Report Footer'.
WRITE:/'Sub Report Footer '.
SKIP.
ENDFORM. " END_OF_LIST_ALV
Reward Points if found helpfull..
Cheers,
Chandra Sekhar.
‎2008 Apr 04 10:14 AM
Hi
check the blog
/people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap
Regards,
jyothsna.