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

Getting dump whne creating tables by dynamically...

Former Member
0 Likes
1,688

Hi All,

I am getting dump when creating dynami ctable by using class-->

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = i_fieldcat

IMPORTING

ep_table = new_table.

Dump detilas:

Exception condition "GENERATE_SUBPOOL_DIR_FULL" raised.

But i came to know that the dump is coming when the class is created 36 tables sucessfully. but it is reacehed to to 37 table creation it is getting dump...please check the below code give your valuable suggetionsss....

here is my full code:

-


TYPES : BEGIN OF gy_dom,

tabname TYPE tabname,

fieldname TYPE fieldname,

domname TYPE domname,

rollname TYPE rollname,

checktable TYPE checktable,

flag TYPE c,

END OF gy_dom,

BEGIN OF gy_ent,

  • TABNAME TYPE TABNAME,

route TYPE route,

  • DOMNAME TYPE DOMNAME,

  • ROLLNAME TYPE ROLLNAME,

  • CHECKTABLE TYPE CHECKTABLE,

END OF gy_ent,

BEGIN OF gy_domt,

tabname TYPE tabname,

END OF gy_domt.

DATA: i_fieldcat TYPE lvc_t_fcat,

gy_fieldcat TYPE lvc_t_fcat,

ls_fieldcat LIKE LINE OF i_fieldcat.

DATA:l_field TYPE name_feld,

l_tab TYPE tabname,

new_table TYPE REF TO data.

DATA:v_cols TYPE i,

v_col TYPE i.

FIELD-SYMBOLS: <dyn_dedn> TYPE STANDARD TABLE.

DATA : route TYPE route.

DATA : g_wa_dom TYPE gy_dom,

g_wa_domt TYPE gy_dom,

g_wa_chktab1 TYPE gy_dom,

g_wa_chktab2 TYPE gy_dom,

g_wa_ent TYPE gy_ent,

g_wa_dom_tmp TYPE gy_dom,

gyt_domt TYPE TABLE OF gy_domt,

gyt_ent TYPE TABLE OF gy_ent,

gyt_chktab1 TYPE TABLE OF gy_dom,

gyt_chktab2 TYPE TABLE OF gy_dom,

gyt_dom TYPE TABLE OF gy_dom,

gyt_dom_tmp TYPE TABLE OF gy_dom,

gyt_de TYPE TABLE OF gy_dom.

SELECT tabname fieldname domname rollname FROM dd03l INTO TABLE gyt_dom

WHERE domname LIKE '%ROUTE%'

AND keyflag EQ 'X'.

IF gyt_dom IS NOT INITIAL.

SELECT tabname FROM dd02l INTO TABLE gyt_domt FOR ALL ENTRIES IN gyt_dom

WHERE tabname = gyt_dom-tabname AND

tabclass = 'TRANSP'.

gyt_dom_tmp[] = gyt_dom[].

REFRESH: gyt_dom[].

LOOP AT gyt_domt INTO g_wa_domt.

READ TABLE gyt_dom_tmp INTO g_wa_dom_tmp WITH KEY tabname = g_wa_domt-tabname.

IF sy-subrc = 0.

g_wa_dom-tabname = g_wa_dom_tmp-tabname.

g_wa_dom-fieldname = g_wa_dom_tmp-fieldname.

g_wa_dom-domname = g_wa_dom_tmp-domname.

g_wa_dom-rollname = g_wa_dom_tmp-rollname.

APPEND g_wa_dom TO gyt_dom.

ENDIF.

ENDLOOP.

ENDIF.

DATA: cond(72) TYPE c,

itab LIKE TABLE OF cond,

l_count TYPE i.

LOOP AT gyt_dom INTO g_wa_dom.

l_count = l_count + 1.

MOVE 'X' TO g_wa_dom-flag.

l_field = g_wa_dom-fieldname.

l_tab = g_wa_dom-tabname.

  • v_cols = v_cols + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = '0'.

ls_fieldcat-col_pos = '1'."v_cols.

  • ls_fieldcat-just = 'R'.

ls_fieldcat-datatype = 'CHAR'.

ls_fieldcat-inttype = 'C'.

ls_fieldcat-intlen = '6'.

ls_fieldcat-dd_outlen = '6'.

ls_fieldcat-domname = 'ROUTE'.

  • ls_fieldcat-ref_table = 'TVRO'.

ls_fieldcat-fieldname = g_wa_dom-fieldname.

APPEND ls_fieldcat TO i_fieldcat.

APPEND ls_fieldcat TO gy_fieldcat.

clear: ls_fieldcat.

MODIFY gyt_dom FROM g_wa_dom.

  • Create dynamic internal table and assign to FS

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = i_fieldcat

IMPORTING

ep_table = new_table.

ASSIGN new_table->* TO <dyn_dedn>.

CONCATENATE l_field ' = ''' 'A%' '''' INTO cond.

APPEND cond TO itab.

SELECT (l_field)

FROM (l_tab)

INTO TABLE <dyn_dedn>

WHERE (itab). "( l_field like 'A%' ).

    • OR l_field like 'B%'.

CLEAR itab[].

CLEAR: i_fieldcat.

ENDLOOP.

IF sy-subrc = 0.

ENDIF.

1 ACCEPTED SOLUTION
Read only

franois_henrotte
Active Contributor
0 Likes
1,450

this is because the class works with dynamic subroutines in memory and this is subject to limitation

I suggest you use class CL_ABAP_TABLEDESCR to create your internal tables. This is a bit more complex but there is no limitation.

The way to do it:

for each field create an instance of CL_ABAP_TYPEDESCR with global method DESCRIBE_BY_NAME (give the TABLE-FIELD as input parameter)

put all the instances into a table of type ABAP_COMPONENT_TAB (from type-pool ABAP)

create an instance of CL_ABAP_STRUCTDESCR with the global method CREATE and give the table as parameter

create an instance of CL_ABAP_TABLEDESCR with the global method CREATE and give the struct instance as parameter

now you have an instance of table description for your internal table, let's say ob_instance

in order to get the table, do:

CREATE DATA ob_data TYPE HANDLE ob_instance.

still some ASSIGN statements and you are gone )

Hi All,

I am getting dump when creating dynami ctable by using class-->

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = i_fieldcat

IMPORTING

ep_table = new_table.

Dump detilas:

Exception condition "GENERATE_SUBPOOL_DIR_FULL" raised.

But i came to know that the dump is coming when the class is created 36 tables sucessfully. but it is reacehed to to 37 table creation it is getting dump...please check the below code give your valuable suggetionsss....

here is my full code:

-


TYPES : BEGIN OF gy_dom,

tabname TYPE tabname,

fieldname TYPE fieldname,

domname TYPE domname,

rollname TYPE rollname,

checktable TYPE checktable,

flag TYPE c,

END OF gy_dom,

BEGIN OF gy_ent,

  • TABNAME TYPE TABNAME,

route TYPE route,

  • DOMNAME TYPE DOMNAME,

  • ROLLNAME TYPE ROLLNAME,

  • CHECKTABLE TYPE CHECKTABLE,

END OF gy_ent,

BEGIN OF gy_domt,

tabname TYPE tabname,

END OF gy_domt.

DATA: i_fieldcat TYPE lvc_t_fcat,

gy_fieldcat TYPE lvc_t_fcat,

ls_fieldcat LIKE LINE OF i_fieldcat.

DATA:l_field TYPE name_feld,

l_tab TYPE tabname,

new_table TYPE REF TO data.

DATA:v_cols TYPE i,

v_col TYPE i.

FIELD-SYMBOLS: <dyn_dedn> TYPE STANDARD TABLE.

DATA : route TYPE route.

DATA : g_wa_dom TYPE gy_dom,

g_wa_domt TYPE gy_dom,

g_wa_chktab1 TYPE gy_dom,

g_wa_chktab2 TYPE gy_dom,

g_wa_ent TYPE gy_ent,

g_wa_dom_tmp TYPE gy_dom,

gyt_domt TYPE TABLE OF gy_domt,

gyt_ent TYPE TABLE OF gy_ent,

gyt_chktab1 TYPE TABLE OF gy_dom,

gyt_chktab2 TYPE TABLE OF gy_dom,

gyt_dom TYPE TABLE OF gy_dom,

gyt_dom_tmp TYPE TABLE OF gy_dom,

gyt_de TYPE TABLE OF gy_dom.

SELECT tabname fieldname domname rollname FROM dd03l INTO TABLE gyt_dom

WHERE domname LIKE '%ROUTE%'

AND keyflag EQ 'X'.

IF gyt_dom IS NOT INITIAL.

SELECT tabname FROM dd02l INTO TABLE gyt_domt FOR ALL ENTRIES IN gyt_dom

WHERE tabname = gyt_dom-tabname AND

tabclass = 'TRANSP'.

gyt_dom_tmp[] = gyt_dom[].

REFRESH: gyt_dom[].

LOOP AT gyt_domt INTO g_wa_domt.

READ TABLE gyt_dom_tmp INTO g_wa_dom_tmp WITH KEY tabname = g_wa_domt-tabname.

IF sy-subrc = 0.

g_wa_dom-tabname = g_wa_dom_tmp-tabname.

g_wa_dom-fieldname = g_wa_dom_tmp-fieldname.

g_wa_dom-domname = g_wa_dom_tmp-domname.

g_wa_dom-rollname = g_wa_dom_tmp-rollname.

APPEND g_wa_dom TO gyt_dom.

ENDIF.

ENDLOOP.

ENDIF.

DATA: cond(72) TYPE c,

itab LIKE TABLE OF cond,

l_count TYPE i.

LOOP AT gyt_dom INTO g_wa_dom.

l_count = l_count + 1.

MOVE 'X' TO g_wa_dom-flag.

l_field = g_wa_dom-fieldname.

l_tab = g_wa_dom-tabname.

  • v_cols = v_cols + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = '0'.

ls_fieldcat-col_pos = '1'."v_cols.

  • ls_fieldcat-just = 'R'.

ls_fieldcat-datatype = 'CHAR'.

ls_fieldcat-inttype = 'C'.

ls_fieldcat-intlen = '6'.

ls_fieldcat-dd_outlen = '6'.

ls_fieldcat-domname = 'ROUTE'.

  • ls_fieldcat-ref_table = 'TVRO'.

ls_fieldcat-fieldname = g_wa_dom-fieldname.

APPEND ls_fieldcat TO i_fieldcat.

APPEND ls_fieldcat TO gy_fieldcat.

clear: ls_fieldcat.

MODIFY gyt_dom FROM g_wa_dom.

  • Create dynamic internal table and assign to FS

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = i_fieldcat

IMPORTING

ep_table = new_table.

ASSIGN new_table->* TO <dyn_dedn>.

CONCATENATE l_field ' = ''' 'A%' '''' INTO cond.

APPEND cond TO itab.

SELECT (l_field)

FROM (l_tab)

INTO TABLE <dyn_dedn>

WHERE (itab). "( l_field like 'A%' ).

    • OR l_field like 'B%'.

CLEAR itab[].

CLEAR: i_fieldcat.

ENDLOOP.

IF sy-subrc = 0.

ENDIF.

7 REPLIES 7
Read only

Former Member
0 Likes
1,450

Hi,

Please refer to SAP note : 539253

Regards,

Srini.

Read only

franois_henrotte
Active Contributor
0 Likes
1,451

this is because the class works with dynamic subroutines in memory and this is subject to limitation

I suggest you use class CL_ABAP_TABLEDESCR to create your internal tables. This is a bit more complex but there is no limitation.

The way to do it:

for each field create an instance of CL_ABAP_TYPEDESCR with global method DESCRIBE_BY_NAME (give the TABLE-FIELD as input parameter)

put all the instances into a table of type ABAP_COMPONENT_TAB (from type-pool ABAP)

create an instance of CL_ABAP_STRUCTDESCR with the global method CREATE and give the table as parameter

create an instance of CL_ABAP_TABLEDESCR with the global method CREATE and give the struct instance as parameter

now you have an instance of table description for your internal table, let's say ob_instance

in order to get the table, do:

CREATE DATA ob_data TYPE HANDLE ob_instance.

still some ASSIGN statements and you are gone )

Read only

0 Likes
1,450

Hi Franc,

Thanks for you are reply.. C0uld you please send one example. so that it is very helpful for me...

Thanks again.....

Read only

0 Likes
1,450

Check this example here given by our friend Marcin

Read only

0 Likes
1,450

Hi Keshav,

Thanks a lot boss......my issue is solved.....I have given 10 points for you...:))

Thanks to every one....................

Read only

Former Member
0 Likes
1,450

Hi,

try the below code...

try to use the below five field catalog params and check the table creation......

xfc-inttype = xdetails-type_kind.

xfc-intlen = xdetails-length / 2.

xfc-decimals = xdetails-decimals.

xfc-fieldname = xdetails-name .

xfc-datatype = 'CHAR'.



* Dynamic Internal table Declarations
field-symbols: <dyn_table>  type standard table,
               <dyn_wa>,
               <dyn_field>.
data : xfc              type lvc_s_fcat ,
       jfc              type lvc_t_fcat,
       dy_table         type ref to data,
       dy_line          type ref to data,
       w_char_name(40)  type c.                       "run time field assign.



* Get the Structure details
  ref_table_des ?=
       cl_abap_typedescr=>describe_by_name( p_tablename ).
  jdetails[] = ref_table_des->components[].
  loop at jdetails into xdetails.
    clear xfc.
    xfc-fieldname = xdetails-name .
    case xdetails-type_kind.
      when 'C'.
        xfc-datatype = 'CHAR'.
      when 'N'.
        xfc-datatype = 'NUMC'.
      when 'D'.
        xfc-datatype = 'DATE'.
      when 'P'.
        xfc-datatype = 'PACK'.
      when others.
        xfc-datatype = xdetails-type_kind.
    endcase.
    xfc-inttype = xdetails-type_kind.
    xfc-intlen = xdetails-length / 2.
    xfc-decimals = xdetails-decimals.
    append xfc to jfc.
  endloop.

* Create dynamic internal table and assign to FS
  call method cl_alv_table_create=>create_dynamic_table
    exporting
      it_fieldcatalog = jfc
    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>.


Prabhudas

Read only

kesavadas_thekkillath
Active Contributor
0 Likes
1,450

Hi,

As suggested use the RTTS ( Run Time Type Services ) Methods to do this. There are lot of information in SDN regarding this.

Donot use cl_alv_table_create=>create_dynamic_table.