Application Development 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: 

Problem when creating a transparent ddic table in a report

toni_fabijancic
Explorer
0 Kudos

Hi!

I have a problem creating a transparent table dynamical in a report. I tried both function modules that I could find (DDIF_TABL_PUT and RPY_TABLE_INSERT) but I wasn't able to get a table created.

Now I'm trying it with RPY_TABLE_INSERT (seems easier) but I'm getting an error (i think IX008) after running the report that the name is not proper for a view... I don't even want to create an view... I want to create a transparent table.

Here is the coding passage:


...

lv_tabname = 'ZD000000_0000000'.

CLEAR: lt_tabl_fields.
lt_tabl_fields-tablname = lv_tabname.
lt_tabl_fields-fieldname = 'GUID'.
lt_tabl_fields-dtelname = 'ZMODULE_GUID'.
lt_tabl_fields-checktable = ''.
lt_tabl_fields-keyflag = 'X'.
lt_tabl_fields-position = 1.
lt_tabl_fields-reftable = ''.
lt_tabl_fields-reffield = ''.
lt_tabl_fields-inclname = ''.
lt_tabl_fields-notnull = 'X'.
APPEND lt_tabl_fields.
CLEAR: lt_tabl_fields.
lt_tabl_fields-tablname = lv_tabname.
lt_tabl_fields-fieldname = 'TIMESTAMP'.
lt_tabl_fields-dtelname = 'ZCREATION_TSTMP'.
lt_tabl_fields-checktable = ''.
lt_tabl_fields-keyflag = ''.
lt_tabl_fields-position = 2.
lt_tabl_fields-reftable = ''.
lt_tabl_fields-reffield = ''.
lt_tabl_fields-inclname = ''.
lt_tabl_fields-notnull = 'X'.
APPEND lt_tabl_fields.

j = 3.
*& Get structure of current module
CALL METHOD lr_analysis_module->get_field_list
  IMPORTING
    er_field_list = lr_field_list.

*& Get first field
i = 1.
CALL METHOD lr_field_list->get_field
  EXPORTING
    index = i
  RECEIVING
    field = lr_field.

WHILE lr_field IS NOT INITIAL.

  CLEAR: lt_tabl_fields.
  lt_tabl_fields-tablname = lv_tabname.
  lt_tabl_fields-fieldname = lr_field->get_name( ). "fieldname in module
  lt_tabl_fields-dtelname = lr_field->get_reference_type( ). "fieldtype for current field
  IF lt_tabl_fields-dtelname IS INITIAL.
    lt_tabl_fields-dtelname = lr_field->get_type( ).
  ENDIF.
  lt_tabl_fields-checktable = ''.
  lt_tabl_fields-keyflag = ''.
  lt_tabl_fields-position = j.
  lt_tabl_fields-reftable = ''.
  lt_tabl_fields-reffield = ''.
  lt_tabl_fields-inclname = ''.
  lt_tabl_fields-notnull = 'X'.
  APPEND lt_tabl_fields.

  j = j + 1.
  i = i + 1.
  CALL METHOD lr_field_list->get_field
    EXPORTING
      index = i
    RECEIVING
      field = lr_field.
ENDWHILE.

CLEAR: ls_tabl_inf.
ls_tabl_inf-tablname = lv_tabname.
ls_tabl_inf-language = sy-langu.
ls_tabl_inf-tablclass = 'TRANSP'.
ls_tabl_inf-sqltab = ''.
ls_tabl_inf-buffered = ''.
ls_tabl_inf-shorttext = lv_comment.
ls_tabl_inf-acttype = '00'.
ls_tabl_inf-inclexist = ''.
ls_tabl_inf-masterlang = sy-langu.
ls_tabl_inf-maintflag = 'X'.
ls_tabl_inf-deliverycl = 'A'.
ls_tabl_inf-mod_user = sy-uname.
ls_tabl_inf-mod_date = sy-datum.
ls_tabl_inf-mod_time = sy-uzeit.

CLEAR: ls_tabl_technics.
ls_tabl_technics-tablname = lv_tabname.
ls_tabl_technics-language = sy-langu.
ls_tabl_technics-tablcat = 4.
ls_tabl_technics-tablclass = 'APPL0'.
ls_tabl_technics-buffering = ''.
ls_tabl_technics-keyfieldno = ''.
ls_tabl_technics-logging = ''.
ls_tabl_technics-storetype = ''.
ls_tabl_technics-moduser = sy-uname.
ls_tabl_technics-moddate = sy-datum.
ls_tabl_technics-modtime = sy-uzeit.
ls_tabl_technics-transpflag = 'X'.
ls_tabl_technics-translate = ''.

CALL FUNCTION 'RPY_TABLE_INSERT'
  EXPORTING
*   LANGUAGE                = SY-LANGU
    table_name              = lv_tabname
*   WITH_DOCU               = ' '
*   DOCUTYPE                = 'T'
*   TRANSPORT_NUMBER        = ' '
   DEVELOPMENT_CLASS       = 'ZD000000'
    tabl_inf                = ls_tabl_inf
   tabl_technics            = ls_tabl_technics
  TABLES
    tabl_fields             = lt_tabl_fields
*   DOCU_TABLE_USER         =
*   DOCU_TABLE_TECH         =
* EXCEPTIONS
*   CANCELLED               = 1
*   ALREADY_EXIST           = 2
*   PERMISSION_ERROR        = 3
*   NAME_NOT_ALLOWED        = 4
*   NAME_CONFLICT           = 5
*   DB_ACCESS_ERROR         = 6
*   OTHERS                  = 7
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.


...

Any ideas?

Thanks and best regards.

2 REPLIES 2

former_member226519
Active Contributor
0 Kudos

use function module DB_CREATE_TABLE

0 Kudos

thanks for the quick response Volker.

When I use the DB_CREATE_TABLE fm I only can create fields with datatype declaration (ddfield-datatype), but I need a fm where I can also create a field with a data element, because I'm generating the fields dynamically in the report based on the datatype/data element for a field.

edit: I'll use the datatype/length/decimal of the corresponding data element. this should work...

Edited by: Toni Fabijancic on Feb 10, 2009 3:42 PM