下面介绍如果通过ABAP程序创建透明表。
主要利用了4个函数:
DDIF_TABL_ACTIVATE :激活透明表
GOX_GEN_TABLE_STD :生成透明表
DDIF_TABL_PUT :设置表的相关信息
DDIF_TABL_GET :获得表的相关信息
参数:
Import:
NAME:数据库表的名字
STATE:状态
STATE = ‘A’ (read the active version)
STATE = ‘M’ (read the latest version)
LANGU: 语言设定,默认sy-langu
Export:
GOTSTATE:状态信息
DD02V_WA:表头
DD09L_WA:表表的技术信息
Tables:
DD03P_TAB:表的字段列表
DD05M_TAB:表的外键字段
DD08V_TAB:表的外键
DD12V_TAB:表索引
DD17V_TAB:表的索引字段
DD35V_TAB:检索help相关
DD36M_TAB:检索help相关
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
REPORT ZTEST_CREATE_TABLE. 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. * technical setting 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'. "field name 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'. "Key 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'. "initial 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'. "data element 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' "local 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. * active table CALL FUNCTION 'DDIF_TABL_ACTIVATE' EXPORTING name = lv_ddobjname auth_chk = ' '. CHECK sy-subrc = 0. WRITE:/ 'Table: ', lv_ddobjname, ' generated successfully'. |
运行:
输入内表名字,运行。
运行后,提示创建成功
去SE11查看结果:
技术设置
以上。
发表评论