‎2007 Sep 11 7:29 AM
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.
‎2007 Sep 11 7:42 AM
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
‎2007 Sep 11 7:55 AM
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.