天天看点

使用ABAP代码创建透明表Created by Jerry Wang on Feb 20, 2014

Created by Jerry Wang on Feb 20, 2014

Report source code could be found below:

REPORT ztable.

PARAMETERS: tabname TYPE char32 OBLIGATORY.

DATA: lt_new_object         TYPE comt_gox_def_header,

     lt_old_object         LIKE lt_new_object,

     lv_dbtab1_name        TYPE char32,

     ls_new_object         LIKE LINE OF lt_new_object,

     ls_new_object_details TYPE LINE OF comt_gox_table_entry_fields,

     lt_returntab          TYPE bapirettab,

     ls_return             LIKE LINE OF lt_returntab.

ls_new_object-object_type = 'TABLE'.

ls_new_object-object_name = tabname.

TRY.

   DATA(lv_guid) = cl_system_uuid=>if_system_uuid_static~create_uuid_c32( ).

 CATCH cx_uuid_error .

ENDTRY.

ls_new_object-key_guid = lv_guid.

DATA(lv_parent_guid) = ls_new_object-key_guid.

ls_new_object_details-fieldname = 'TABCLASS'.

ls_new_object_details-fieldvalue = 'TRANSP'.

APPEND ls_new_object_details TO ls_new_object-details.

CLEAR ls_new_object_details.

ls_new_object_details-fieldname = 'TABKAT'.

ls_new_object_details-fieldvalue = '0'.

ls_new_object_details-fieldname = 'TABART'.

ls_new_object_details-fieldvalue = 'APPL2'.

ls_new_object_details-fieldname = 'PUFFERUNG'.

ls_new_object_details-fieldvalue = 'X'.

ls_new_object_details-fieldname = 'CONTFLAG'.

ls_new_object_details-fieldvalue = 'S'.

ls_new_object_details-fieldname = 'MAINFLAG'.

ls_new_object_details-fieldname = 'BUFFALLOW'.

ls_new_object_details-fieldname = 'SCHFELDANZ'.

APPEND ls_new_object TO lt_new_object.

CLEAR ls_new_object.

ls_new_object-object_type = 'TABLE_FIELD'.

   lv_guid = cl_system_uuid=>if_system_uuid_static~create_uuid_c32(

          ).

ls_new_object-parent_key = lv_parent_guid.

lv_parent_guid = lv_guid.

ls_new_object-object_name = 'CODE_VALUE'.

ls_new_object_details-fieldname = 'POSITION'.

ls_new_object_details-fieldvalue = '1'.

ls_new_object_details-fieldname = 'KEYFLAG'.

ls_new_object_details-fieldname = 'NOTNULL'.

ls_new_object_details-fieldname = 'ROLLNAME'.

ls_new_object_details-fieldvalue = 'COMT_PRODUCT_ID'.

REFRESH lt_returntab.

CLEAR lv_parent_guid.

lv_dbtab1_name = tabname.

CALL FUNCTION 'GOX_GEN_TABLE_STD'

 EXPORTING

   iv_object_name = lv_dbtab1_name

   it_object_new  = lt_new_object

   it_object_old  = lt_old_object

   iv_devclass    = '$TMP'

 IMPORTING

   et_bapireturn  = lt_returntab.

CHECK lt_returntab IS NOT INITIAL.

DATA: lv_ddobjname TYPE ddobjname,

     ls_dd02v     TYPE dd02v.

lv_ddobjname = lv_dbtab1_name.

CALL FUNCTION 'DDIF_TABL_GET'

   name          = lv_ddobjname

   state         = 'A'

   langu         = sy-langu

   dd02v_wa      = ls_dd02v

 EXCEPTIONS

   illegal_input = 1

   OTHERS        = 2.

IF sy-subrc <> 0.

  RETURN.

ENDIF.

ls_dd02v-mainflag = 'X'.

CALL FUNCTION 'DDIF_TABL_PUT'

   name              = lv_ddobjname

   dd02v_wa          = ls_dd02v

   tabl_not_found    = 1

   name_inconsistent = 2

   tabl_inconsistent = 3

   put_failure       = 4

   put_refused       = 5

   OTHERS            = 6.

CALL FUNCTION 'DDIF_TABL_ACTIVATE'

   name     = lv_ddobjname

   auth_chk = ' '.

CHECK sy-subrc = 0.

WRITE:/ 'Table: ', lv_ddobjname, ' generated successfully'.

使用ABAP代码创建透明表Created by Jerry Wang on Feb 20, 2014

继续阅读