最近在解决用户账号问题的时候,需要通过ABAP程序创建透明表,查询了相关资料,总结如下。

通过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相关

代码:

REPORT z_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 = ''.
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 = ''.
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 = ''.
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 =
OTHERS = .
IF sy-subrc <> .
RETURN.
ENDIF. ls_dd02v-mainflag = 'X'.
CALL FUNCTION 'DDIF_TABL_PUT'
EXPORTING
name = lv_ddobjname
dd02v_wa = ls_dd02v
EXCEPTIONS
tabl_not_found =
name_inconsistent =
tabl_inconsistent =
put_failure =
put_refused =
OTHERS = .
IF sy-subrc <> .
RETURN.
ENDIF. * active table
CALL FUNCTION 'DDIF_TABL_ACTIVATE'
EXPORTING
name = lv_ddobjname
auth_chk = ' '. CHECK sy-subrc = . WRITE:/ 'Table: ', lv_ddobjname, ' generated successfully'.

输入透明表名运行,即可创建成功。

进入SE11查看结果:

通过ABAP程序创建透明表的更多相关文章

  1. ABAP 自建透明表维护

    *&---------------------------------------------------------------------* *& Report  ZMMR011 ...

  2. sap透明表、结构、簇介绍以及查找表方法

    sap透明表.结构.簇介绍以及查找表方法 一些人在写开发功能说明书的时候不知道如何去找屏幕字段对应的透明表,下面我来介绍一个比较有效的方法:首先简单介绍一下概念:在SAP中的表的种类有以下三种:Tra ...

  3. ABAP 动态生成内表的几种方法

    最近要写个程序,既有更新的,也有删除的,需要涉及到很多系统表,如果一个表一个表进行更新或者删除太慢了,于是就想通过创建动态内表来实现这些功能,在网上找了一些资料,经过多次尝试,终于测试成功了.网上讲述 ...

  4. 你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧

    最近Jerry在忙一个项目,技术栈换成了nodejs平台,语言换成了JavaScript,因为赶项目进度,一直没时间更新公众号.感谢大家的支持,关注人数还是慢慢地增长到了3000. 今天我们来聊聊一个 ...

  5. 在SAP云平台ABAP编程环境上编写第一段ABAP程序

    距2017年秋季的SAP TechEd大会上一位大佬Björn Goerke,SAP's Chief Technology Officer宣布了SAP Cloud Platform即将支持ABAP至今 ...

  6. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序创建更复杂的数据模型

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第六篇:为ASP.NET MVC应用程序 ...

  7. Oracle 给已创建的表增加自增长列

    对于已经创建的表,在特殊需求下,需要增加一个自增长列步骤: --1. 增加 自增长列 ); --2. 程序方式更新设置 IdNum 列 值 --3.查询最大 ) From Limsbusinessen ...

  8. [SAP ABAP开发技术总结]ABAP程序之间数据共享与传递

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. SAP 通过屏幕字段查看透明表

    我要查看创建采购订单屏幕上抬头部分付款条件的这个透明表中的字段. 图1. 1.首先准备好MM模块中的常用透明表. 图2. 2.把光标放在字段上,按F1,再点击图中技术信息按钮. 图3. 3.在弹出的技 ...

随机推荐

  1. (转)Python中的split()函数的用法

    Python中的split()函数的用法 原文:https://www.cnblogs.com/hjhsysu/p/5700347.html Python中有split()和os.path.split ...

  2. [Silverlight]调用外部可执行程序

    public void InvokeExternalExecutableApp() { if (Application.Current.HasElevatedPermissions) {using ( ...

  3. 04-cglib(code generator library)代理(没有接口)

    1 UserServiceProxyFactory4代码 package www.test.c_proxy; import java.lang.reflect.Method; import org.s ...

  4. 断路器hystrix

    分布式系统中不可避免的会出现一些故障,因为服务间错综复杂的依赖关系,有时候一个服务出现问题后,会导致依赖于它的服务出现远程调度的线程受阻,给服务造成压力,当然同样的,祖父级调用者(暂且这么叫吧)当然也 ...

  5. Ubuntu14.04-PXE搭建

    什么是PXE? PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从 ...

  6. React.js 小书 Lesson6 - 使用 JSX 描述 UI 信息

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson6 转载请注明出处,保留原文链接和作者信息. 这一节我们通过一个简单的例子讲解 React.j ...

  7. DIV+CSS图片不间断滚动jquery特效(Marquee插件)及移动标签marquee整理

    推荐一个jQuery的无缝文字滚动效果,同时也可以滚动图片,也叫做跑马灯效果. 此jquery插件,依托jquery库,能实现各种滚动效果,且让HTML代码符合W3C标准. marquee标签:创建一 ...

  8. Mysql 求时间 between 昨天 and 上个月的今天 等时间函数

    问题: Mysql表中一列create_time,类型datetime(YYYY-MM-DD HH:MM:SS),想获取上个月今天到昨天的数据. select * from 表名 where date ...

  9. ios 开发常用函数

    rand() ----随机数 abs() / labs() ----整数绝对值 fabs() / fabsf() / fabsl() ----浮点数绝对值 floor() / floorf() / f ...

  10. 切片操作:MATLAB VS Python

    切片操作:MATLAB VS Python 一.MATLAB 矩阵的拆分 1.冒号表达式: t = e1:e2:e3 e1表示初始值,e2为步长,e3为终止值(包括e3),产生一个从e1到e3,步长为 ...