Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create dynamic ABAP internal table

Tags:

abap

alv

rtts

On selection screen, the user needs to insert a table name, and I need to get first 3 fields from that table and display them in an ALV for the output. What I understand from reading tutorials is that I need to call method cl_alv_table_create=>create_dynamic_table, but I don't know how to create the fieldcatalog.

DATA: t_newtable   TYPE REF TO data,
      t_fldcat     TYPE lvc_t_fcat,

CALL METHOD cl_alv_table_create=>create_dynamic_table
  EXPORTING
    it_fieldcatalog = t_fldcat
  IMPORTING
    ep_table        = t_newtable.
like image 998
usesser Avatar asked Oct 10 '16 10:10

usesser


People also ask

How do you populate a dynamic internal table?

* Create Dynamic Table CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = lt_fcat[] 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>.

What is a dynamic internal?

Dynamic Internal Tables are tables created at RUN TIME Using Field Symbols. It's useful in creating a program where you don't know name of table till run time. In other words it's very useful in creating Dynamic Programs.

What is a dynamic table?

. A dynamic tables is a table that changes its number of rows depending on the input received in your launch form. As business users fill out the launch form, their responses generate the appropriate number of rows in the table.

How do I add a column dynamically in ALV?

Create your field catalog either manually or automatically using the function module, LVC_FIELDCATALOG_MERGE. Add more rows to the field catalog table (T_FIELDCAT) at run time. 2. Use the field catalog to create a table dynamically using the method below.


1 Answers

I assume that the table name which user enters is a data dictionary table (like SFLIGHT). If yes, then you can generate the field catalog as follows.


data : it_tabdescr type abap_compdescr_tab,
     wa_tabdescr type abap_compdescr.
data : ref_table_descr type ref to cl_abap_structdescr.

  ref_table_descr ?= cl_abap_typedescr=>describe_by_name( p_table ).
  it_tabdescr[] = ref_table_descr->components[].
  loop at it_tabdescr into wa_tabdescr.
    clear wa_fieldcat.
    wa_fieldcat-fieldname = wa_tabdescr-name .
    wa_fieldcat-datatype  = wa_tabdescr-type_kind.
    wa_fieldcat-inttype   = wa_tabdescr-type_kind.
    wa_fieldcat-intlen    = wa_tabdescr-length.
    wa_fieldcat-decimals  = wa_tabdescr-decimals.
    append wa_fieldcat to it_fieldcat.
  endloop.

Here, "p_table" is the selection screen parameter containing the table name.

like image 182
greenPadawan Avatar answered Sep 24 '22 04:09

greenPadawan