前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用代码创建ABAP transparent table

使用代码创建ABAP transparent table

作者头像
Jerry Wang
发布2019-07-03 16:57:01
5580
发布2019-07-03 16:57:01
举报

Created by Jerry Wang on May 06, 2014

下列report可以创建一个新的transparent table,包含一个column如下:

clipboard1
clipboard1

执行report, 输入待创建的table name:

clipboard2
clipboard2
clipboard3
clipboard3

SE11查看创建table的status为Active:

clipboard4
clipboard4
代码语言:javascript
复制
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'.
APPEND ls_new_object_details TO ls_new_object-details.
CLEAR ls_new_object_details.
ls_new_object_details-fieldname = 'TABART'.
ls_new_object_details-fieldvalue = 'APPL2'.
APPEND ls_new_object_details TO ls_new_object-details.
CLEAR ls_new_object_details.
ls_new_object_details-fieldname = 'PUFFERUNG'.
ls_new_object_details-fieldvalue = 'X'.
APPEND ls_new_object_details TO ls_new_object-details.
CLEAR ls_new_object_details.
ls_new_object_details-fieldname = 'CONTFLAG'.
ls_new_object_details-fieldvalue = 'S'.
APPEND ls_new_object_details TO ls_new_object-details.
CLEAR ls_new_object_details.
ls_new_object_details-fieldname = 'MAINFLAG'.
ls_new_object_details-fieldvalue = 'X'.
APPEND ls_new_object_details TO ls_new_object-details.
CLEAR ls_new_object_details.
ls_new_object_details-fieldname = 'BUFFALLOW'.
ls_new_object_details-fieldvalue = 'X'.
APPEND ls_new_object_details TO ls_new_object-details.
CLEAR ls_new_object_details.
ls_new_object_details-fieldname = 'SCHFELDANZ'.
ls_new_object_details-fieldvalue = '0'.
APPEND ls_new_object_details TO ls_new_object-details.
CLEAR ls_new_object_details.
APPEND ls_new_object TO lt_new_object.
CLEAR ls_new_object.

ls_new_object-object_type = 'TABLE_FIELD'.
TRY.
    lv_guid = cl_system_uuid=>if_system_uuid_static~create_uuid_c32(
           ).
  CATCH cx_uuid_error .
ENDTRY.
ls_new_object-key_guid = lv_guid.
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'.
APPEND ls_new_object_details TO ls_new_object-details.
CLEAR ls_new_object_details.
ls_new_object_details-fieldname = 'KEYFLAG'.
ls_new_object_details-fieldvalue = 'X'.
APPEND ls_new_object_details TO ls_new_object-details.
CLEAR ls_new_object_details.
ls_new_object_details-fieldname = 'NOTNULL'.
ls_new_object_details-fieldvalue = 'X'.
APPEND ls_new_object_details TO ls_new_object-details.
CLEAR ls_new_object_details.
ls_new_object_details-fieldname = 'ROLLNAME'.
ls_new_object_details-fieldvalue = 'COMT_PRODUCT_ID'.
APPEND ls_new_object_details TO ls_new_object-details.
CLEAR ls_new_object_details.
APPEND ls_new_object TO lt_new_object.
CLEAR ls_new_object.
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 INITIAL.

DATA: lv_ddobjname TYPE ddobjname,
      ls_dd02v     TYPE dd02v.

lv_ddobjname = lv_dbtab1_name.
CALL FUNCTION 'DDIF_TABL_GET'
  EXPORTING
    name          = lv_ddobjname
    state         = 'A'
    langu         = sy-langu
  IMPORTING
    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'
  EXPORTING
    name              = lv_ddobjname
    dd02v_wa          = ls_dd02v
  EXCEPTIONS
    tabl_not_found    = 1
    name_inconsistent = 2
    tabl_inconsistent = 3
    put_failure       = 4
    put_refused       = 5
    OTHERS            = 6.
IF sy-subrc <> 0.
   RETURN.
ENDIF.

CALL FUNCTION 'DDIF_TABL_ACTIVATE'
  EXPORTING
    name     = lv_ddobjname
    auth_chk = ' '.

CHECK sy-subrc = 0.

WRITE:/ 'Table: ', lv_ddobjname, ' generated successfully'.
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月02日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Created by Jerry Wang on May 06, 2014
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档