Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

DYNAMIC INTERNAL TABLE -HELP

Former Member
0 Likes
412

Hi Experts ,

Iv tried to create a dynamic internal table. and display the same using REUSE_ALV_GRID_DISPLAY.

i have not recreated any field catalog and have Tried to use the function module LVC_TRANSFER_TO_SLIS.

The ALV gets displayed but im not able to display data in it....rather im not sure how to go about the data display,iv posted a simpler sample code of my req ...can someone pls give me a solution.

i need help

Thanks&Regards,

Goldie

REPORT zdyintab1 .

TABLES: spfli,scarr,sflight.

TYPE-POOLS: slis.

DATA: my_table TYPE REF TO data,

my_line TYPE REF TO data.

data: index(3) TYPE c.

*structure/work-area

DATA: BEGIN OF wa1,

carrid TYPE spfli-carrid,

connid TYPE sflight-connid,

cityfrom TYPE spfli-cityfrom,

fldate TYPE sflight-fldate,

END OF wa1.

*internal table

DATA: itab1 LIKE TABLE OF wa1.

DATA : i_fc1 TYPE slis_t_fieldcat_alv,

w_fc1 type slis_fieldcat_alv,

wa_it_fldcat type lvc_s_fcat,

it_fldcat type lvc_t_fcat.

FIELD-SYMBOLS : <fs_table> TYPE table,

<fs_wa> TYPE ANY,

<fs_value_out> TYPE ANY,

<fs_value_in> TYPE ANY.

SELECT spflicarrid sflightconnid spflicityfrom sflightfldate INTO

TABLE itab1 FROM spfli INNER JOIN sflight ON spfli~connid =

sflight~connid.

LOOP AT itab1 INTO wa1.

WRITE 😕 wa1.

ENDLOOP.

SELECTION-SCREEN BEGIN OF BLOCK radio_button WITH FRAME.

PARAMETERS: itab RADIOBUTTON GROUP rgrp,

dyitab RADIOBUTTON GROUP rgrp.

SELECTION-SCREEN END OF BLOCK radio_button.

PERFORM display.

----


  • FORM display *

----


  • ........ *

----


FORM display.

PERFORM build_dyn_itab.

IF itab = 'X'.

PERFORM itab.

ELSEIF dyitab = 'X'.

PERFORM dyitab.

PERFORM data.

ENDIF.

.

ENDFORM. " Display

----


  • FORM itab *

----


  • ........ *

----


FORM itab.

CLEAR w_fc1.

w_fc1-col_pos = 1.

w_fc1-fieldname = 'CARRID'.

w_fc1-ref_tabname = 'SPFLI'.

w_fc1-ref_fieldname = 'CARRID'.

w_fc1-seltext_m = 'Material code'.

APPEND w_fc1 TO i_fc1.

CLEAR w_fc1.

w_fc1-col_pos = 2.

w_fc1-fieldname = 'CONNID'.

w_fc1-ref_tabname = 'SFLIGHT'.

w_fc1-ref_fieldname = 'CONNID'.

w_fc1-seltext_m = 'Description'.

APPEND w_fc1 TO i_fc1.

CLEAR w_fc1.

w_fc1-col_pos = 3.

w_fc1-fieldname = 'CITYFROM'.

w_fc1-ref_tabname = 'SPFLI'.

w_fc1-ref_fieldname = 'CITYFROM'.

w_fc1-seltext_m = 'Material Group'.

APPEND w_fc1 TO i_fc1.

CLEAR w_fc1.

w_fc1-col_pos = 4.

w_fc1-fieldname = 'FLDATE'.

w_fc1-ref_tabname = 'SFLIGHT'.

w_fc1-ref_fieldname = 'FLDATE'.

w_fc1-seltext_m = 'Division'.

APPEND w_fc1 TO i_fc1.

CLEAR w_fc1.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

it_fieldcat = i_fc1

TABLES

t_outtab = itab1.

ENDFORM.

----


  • FORM build_dyn_itab *

----


  • ........ *

----


FORM build_dyn_itab.

*

*CLEAR wa_it_fldcat.

CLEAR index.

DO 6

TIMES.

index = sy-index.

CLEAR wa_it_fldcat.

CASE index.

WHEN 1 .

CONCATENATE 'Field' index INTO

wa_it_fldcat-fieldname .

CONDENSE wa_it_fldcat-fieldname NO-GAPS.

wa_it_fldcat-ref_table = 'SPFLI'.

wa_it_fldcat-ref_field = 'CARRID'.

  • wa_it_fldcat-col_pos = .

wa_it_fldcat-datatype = 'CHAR'.

wa_it_fldcat-intlen = 3.

APPEND wa_it_fldcat TO it_fldcat.

CLEAR wa_it_fldcat.

WHEN 2 .

CONCATENATE 'Field' index INTO

wa_it_fldcat-fieldname .

CONDENSE wa_it_fldcat-fieldname NO-GAPS.

wa_it_fldcat-ref_table = 'SFLIGHT'.

wa_it_fldcat-ref_field = 'CONNID'.

  • wa_it_fldcat-col_pos = 2.

wa_it_fldcat-datatype = 'NUMC'.

wa_it_fldcat-intlen = 4.

APPEND wa_it_fldcat TO it_fldcat.

CLEAR wa_it_fldcat.

WHEN 3 .

CONCATENATE 'Field' index INTO

wa_it_fldcat-fieldname .

CONDENSE wa_it_fldcat-fieldname NO-GAPS.

wa_it_fldcat-ref_table = 'SPFLI'.

wa_it_fldcat-ref_field = 'CITYFROM'.

  • wa_it_fldcat-col_pos = 3.

wa_it_fldcat-datatype = 'CHAR'.

wa_it_fldcat-intlen = 20.

APPEND wa_it_fldcat TO it_fldcat.

CLEAR wa_it_fldcat.

WHEN 4 .

CONCATENATE 'Field' index INTO

wa_it_fldcat-fieldname .

CONDENSE wa_it_fldcat-fieldname NO-GAPS.

wa_it_fldcat-ref_table = 'SFLIGHT'.

wa_it_fldcat-ref_field = 'FLDATE'.

  • wa_it_fldcat-col_pos = 4.

wa_it_fldcat-datatype = 'DATS'.

wa_it_fldcat-intlen = 8.

APPEND wa_it_fldcat TO it_fldcat.

CLEAR wa_it_fldcat.

WHEN 5.

CONCATENATE 'Field' index INTO

wa_it_fldcat-fieldname .

CONDENSE wa_it_fldcat-fieldname NO-GAPS.

  • wa_it_fldcat-col_pos = 5.

wa_it_fldcat-datatype = 'CHAR'.

wa_it_fldcat-intlen = 3.

APPEND wa_it_fldcat TO it_fldcat.

CLEAR wa_it_fldcat.

WHEN OTHERS.

CONCATENATE 'Field' index INTO

wa_it_fldcat-fieldname .

CONDENSE wa_it_fldcat-fieldname NO-GAPS.

wa_it_fldcat-datatype = 'CLNT'.

wa_it_fldcat-intlen = 3.

APPEND wa_it_fldcat TO it_fldcat.

CLEAR wa_it_fldcat.

ENDCASE.

ENDDO.

CLEAR wa_it_fldcat.

**Create the table

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_fldcat

IMPORTING

ep_table = my_table

EXCEPTIONS

generate_subpool_dir_full = 1

OTHERS = 2.

IF sy-subrc <> 0.

STOP.

ENDIF.

ASSIGN my_table->* TO <fs_table>.

  • Create header line of table

CREATE DATA my_line LIKE LINE OF <fs_table>.

ASSIGN my_line->* TO <fs_wa>.

WRITE:/ sy-subrc.

WRITE:/ 'from dynamic itab'.

ENDFORM. "build_dyn_itab

----


  • FORM dyitab *

----


  • ........ *

----


FORM dyitab.

CALL FUNCTION 'LVC_TRANSFER_TO_SLIS'

EXPORTING

it_fieldcat_lvc = it_fldcat

  • IT_SORT_LVC =

  • IT_FILTER_LVC =

  • IS_LAYOUT_LVC =

IMPORTING

et_fieldcat_alv = i_fc1

  • ET_SORT_ALV =

  • ET_FILTER_ALV =

  • ES_LAYOUT_ALV =

  • TABLES

  • IT_DATA =

  • EXCEPTIONS

  • IT_DATA_MISSING = 1

  • IT_FIELDCAT_LVC_MISSING = 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.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

it_fieldcat = i_fc1

TABLES

t_outtab = <fs_table>.

ENDFORM.

----


  • FORM data *

----


  • ........ *

*----


FORM data.

LOOP AT itab1

INTO wa1.

LOOP AT i_fc1 INTO w_fc1.

ASSIGN COMPONENT w_fc1-fieldname OF STRUCTURE <fs_wa> TO

<fs_value_out>.

WRITE:/ sy-subrc.

IF sy-subrc = 0.

WRITE:/'its assigned!'.

ASSIGN COMPONENT w_fc1-fieldname OF STRUCTURE wa1 TO

<fs_value_in>.

<fs_value_out> = <fs_value_in>.

ENDIF.

ENDLOOP.

APPEND <fs_wa> TO <fs_table>.

ENDLOOP.

ENDFORM.

2 REPLIES 2
Read only

seshatalpasai_madala
Product and Topic Expert
Product and Topic Expert
0 Likes
380

Hi,

<b>To create dynamic table</b>

Use the following data.

DATA: lt_comp TYPE cl_abap_structdescr=>component_table.

DATA: ls_comp LIKE LINE OF lt_comp.

DATA: lr_rtti_struc TYPE REF TO cl_abap_structdescr.

DATA: wa_data type ref to data,

table_data type ref to data.

FIELD-SYMBOLS: <fs_data> TYPE ANY.

FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE.

LOOP AT it_elements INTO wa_element.

ls_comp-name = wa_element.

CONDENSE ls_comp-name NO-GAPS.

ls_comp-type = cl_abap_elemdescr=>get_string( ).

APPEND ls_comp TO lt_comp.

ENDLOOP.

CALL METHOD cl_abap_structdescr=>create

EXPORTING

p_components = lt_comp

p_strict = abap_false

RECEIVING

p_result = lr_rtti_struc.

CREATE DATA wa_data TYPE HANDLE lr_rtti_struc.

ASSIGN wa_data->* TO <fs_data>.

CREATE DATA table_data LIKE STANDARD TABLE OF <fs_data>.

ASSIGN table_data->* TO <fs_table>.

<b>To create field catalog.</b>

LOOP AT lt_comp INTO ls_comp.

CLEAR ls_fieldcat.

ls_fieldcat-col_pos = sy-tabix.

ls_fieldcat-fieldname = ls_comp-name.

ls_fieldcat-outputlen = ls_comp-type->length.

ls_fieldcat-inttype = ls_comp-type->type_kind.

IF ls_comp-type->is_ddic_type( ) = abap_true.

ls_fieldcat-rollname = ls_comp-type->get_relative_name( ).

ls_sort-spos = ls_fieldcat-col_pos.

ls_sort-fieldname = ls_fieldcat-fieldname.

ls_sort-group = abap_true.

APPEND ls_sort TO lt_sort.

ELSE.

l_string = ls_comp-name.

ls_fieldcat-tooltip = l_string.

ls_fieldcat-reptext = l_string.

ls_fieldcat-seltext = l_string.

ENDIF.

APPEND ls_fieldcat TO lt_fieldcat.

ENDLOOP.

Regards,

Sesh

Read only

0 Likes
380

the version im working with does not support RTTC (no create methods in d mentioned class)iv tried dat approach...so il have to use only cl_alv_table_create=>create_dynamic_table

....d method stated in my example above!

Thanks & Regards

Goldie.