`
JerryWang_SAP
  • 浏览: 1030626 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

ABAP数据库表的元数据

阅读更多

For project reason I need to fill some excel.

 

 

The content of each column comes from content in SE11:

 

 

In order to avoid such boring task, I write a small ABAP class to automate it.

This class will first read corresponding database table name based on CRM settype id, then call function module DDIF_NAMETAB_GET to get all metadata of each table field, and then send the data to clipboard.

Once done, put the focus on the first cell of content row, press Ctrl+V, all the data from clipboard will be copied into excel automatically.

 

 

The source code could be found below:

class ZCL_EXCEL_TOOL definition
  public
  final
  create public .

public section.

  methods GET_SETTYPE_FIELDS
    importing
      !IV_SETTYPE_ID type COMT_FRGTYPE_ID default 'COMM_PR_SHTEXT' .
  PROTECTED SECTION.
private section.

  types:
    BEGIN OF ty_column,
        a_index       TYPE char3,
        b_table       TYPE dd03l-tabname,
        c_fieldname   TYPE dd03l-fieldname,
        d_element     TYPE dd03l-rollname,
        e_datatype    TYPE x031l-dtyp,
        f_length      TYPE char4,
        g_description TYPE char40,
      END OF ty_column .
  types:
    tt_column TYPE STANDARD TABLE OF ty_column WITH KEY a_index b_table c_fieldname .
  types:
    BEGIN OF ty_clipdata,
        data TYPE c LENGTH 500,
      END   OF ty_clipdata .
  types:
    tt_formatted TYPE STANDARD TABLE OF ty_clipdata .

  data MT_COLUMN type TT_COLUMN .
  data MT_FORMATTED type TT_FORMATTED .
  constants C_TAB type CHAR1 value CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB ##NO_TEXT.

  methods CONVERT .
  methods GET_FIELD_LABEL
    importing
      !IV_TAB_NAME type DDOBJNAME
      !IV_FIELD_NAME type DFIES-FIELDNAME
    returning
      value(RV_LABEL) type STRING .
ENDCLASS.



CLASS ZCL_EXCEL_TOOL IMPLEMENTATION.


* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZCL_EXCEL_TOOL->CONVERT
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
  METHOD convert.

    LOOP AT mt_column ASSIGNING FIELD-SYMBOL(<raw>).
      APPEND INITIAL LINE TO mt_formatted ASSIGNING FIELD-SYMBOL(<converted>).
      CONCATENATE <raw>-a_index <raw>-b_table <raw>-c_fieldname <raw>-d_element <raw>-e_datatype
      <raw>-f_length <raw>-g_description INTO <converted> SEPARATED BY c_tab.
    ENDLOOP.
  ENDMETHOD.


* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZCL_EXCEL_TOOL->GET_FIELD_LABEL
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_TAB_NAME                    TYPE        DDOBJNAME
* | [--->] IV_FIELD_NAME                  TYPE        DFIES-FIELDNAME
* | [<-()] RV_LABEL                       TYPE        STRING
* +--------------------------------------------------------------------------------------</SIGNATURE>
  METHOD get_field_label.
    CALL FUNCTION 'DDIF_FIELDLABEL_GET'
      EXPORTING
        tabname   = iv_tab_name
        fieldname = iv_field_name
        langu     = sy-langu
      IMPORTING
        label     = rv_label.
  ENDMETHOD.


* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_EXCEL_TOOL->GET_SETTYPE_FIELDS
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_SETTYPE_ID                  TYPE        COMT_FRGTYPE_ID (default ='COMM_PR_SHTEXT')
* +--------------------------------------------------------------------------------------</SIGNATURE>
  METHOD get_settype_fields.
    DATA: lv_tab  TYPE comc_settype-frgtype_tab,
          lv_ret  TYPE int4,
          lt_list TYPE STANDARD TABLE OF x031l.

    SELECT SINGLE frgtype_tab INTO lv_tab FROM comc_settype WHERE frgtype_id = iv_settype_id.
    IF sy-subrc <> 0.
      WRITE: / 'no database table maintained for settype: ', iv_settype_id.
      RETURN.
    ENDIF.

    CALL FUNCTION 'DDIF_NAMETAB_GET'
      EXPORTING
        tabname   = CONV ddobjname( lv_tab )
        status    = 'A'
      TABLES
        x031l_tab = lt_list
      EXCEPTIONS
        not_found = 1
        OTHERS    = 2.
    IF sy-subrc <> 0.
      WRITE:/ 'table metadata parse error'.
      RETURN.
    ENDIF.

    LOOP AT lt_list ASSIGNING FIELD-SYMBOL(<list>).
      APPEND INITIAL LINE TO mt_column ASSIGNING FIELD-SYMBOL(<insert>).
      <insert>-a_index = sy-tabix.
      <insert>-b_table = lv_tab.
      <insert>-c_fieldname = <list>-fieldname.
      <insert>-d_element = <list>-rollname.
      <insert>-e_datatype = <list>-dtyp.
      <insert>-f_length = CONV i( <list>-exlength ). "cast CL_ABAP_ELEMDESCR( CL_ABAP_ELEMDESCR=>describe_by_name( <list>-rollname ) )->output_length.
      <insert>-g_description = get_field_label( EXPORTING iv_tab_name = CONV #( lv_tab ) iv_field_name = <list>-fieldname ).
    ENDLOOP.

    convert( ).
    cl_gui_frontend_services=>clipboard_export(
    EXPORTING
        no_auth_check        = abap_true
        IMPORTING
          data                 = mt_formatted
        CHANGING
          rc                   = lv_ret
        EXCEPTIONS
          cntl_error           = 1
          error_no_gui         = 2
          not_supported_by_gui = 3
      ).

  ENDMETHOD.
ENDCLASS.
0
1
分享到:
评论

相关推荐

    ABAP详细语法开发2(数据库表)

    头行可以包含额外的信息,如表的统计信息或其他元数据。如果内表定义为`WITH HEADER LINE`,那么可以使用特定的操作来访问和修改头行。 ### 总结 内表是ABAP中非常重要的数据结构,掌握其定义、填充以及处理方法...

    ABAP读数据

    第四章“数据字典和数据表的读取.pdf”可能详细讲解了如何创建和使用数据字典对象,如表、域、结构等,以及如何通过它们读取数据。 7. **使用ABAP CDS视图(Core Data Services)**:CDS视图是一种声明式的方式来...

    ABAP Dictionary

    ABAP字典提供了元数据的存储和管理,使得开发人员可以高效地设计、实现和维护业务逻辑。以下是关于ABAP字典的一些详细知识点: 1. 数据类型:在ABAP字典中,我们定义各种数据类型,如基本类型(如I,N,C,D等)、...

    DM组ABAP考试题

    1. ABAP Dictionary事务码:在SAP系统中,使用SE11事务码可以打开ABAP Dictionary,这是一个用于管理和查看SAP数据库表、结构、域等元数据的工具。 2. 数据类选择:在创建表时,如果存储的数据主要是静态数据(如主...

    ABAP入门教程试用于初学者,很友好.pdf

    ABAP程序员在编写程序时,还需要熟悉ABAP的数据字典,它包含了系统中所有对象的定义和元数据,这对于创建和使用ABAP数据类型至关重要。ABAP的数据字典还包括了对标准数据元素的定义,这些数据元素由SAP系统预先定义...

    ABAP_SAP_Tables

    6. **ABAP Dictionary**:这是SAP系统中的元数据存储库,包含了所有表格、域、结构和视图的定义。开发者可以利用ABAP Dictionary来获取表格的相关信息,如字段描述、数据类型、键字段等。 7. **ABAP SQL(Open SQL...

    SAP ABAP开发学习——第3课:数据字典2(视频教程)

    在SAP ABAP开发的学习过程中,数据字典是至关重要的组成部分,它为系统中的所有数据库对象提供了元数据的定义和管理。本课程“SAP ABAP开发学习——第3课:数据字典2”深入讲解了这个核心概念,旨在帮助初学者掌握...

    ABAP_DOCU_HTML. 学习大全,以网页的形式文档

    7. **ABAP字典**:字典是ABAP的元数据存储区,包含表、结构、域和其他数据元素的定义。学习如何使用ABAP字典可以帮助开发者更好地管理数据库对象。 8. **事务码**:SAP系统中,事务码是一串字符,用于启动特定的...

    ABAP Programming

    ABAP Dictionary是元数据存储库,用于定义和管理业务对象(如表、结构、域和视图)。这些定义可以被ABAP程序直接使用,确保了数据的一致性和完整性。 8. **ABAP SQL** ABAP支持OpenSQL,这是一种扩展的SQL语法,...

    ABAP Code Sample for ALV Grid from Dynamically Created Internal Table

    `i_fcat`、`wa_fcat`、`i_fieldcat`、`i_event`、`i_listheader`、`i_layout`等变量是用来构建ALV Grid的元数据和事件处理的。 `wa_fieldcat`是ALV字段目录表,`i_fieldcat`是ALV字段目录结构,用于定义显示在ALV ...

    深入ABAP程序设计

    - **数据字典**:存储所有系统元数据,定义了程序使用的数据结构,包括表格、字段、视图和数据元素,以及表格间的关系。 - **商业对象库**:管理商业对象、组织对象和技术对象,采用层次结构展示,与R/3系统的组件...

    ABAP培训标准教材.zip

    SAP数据字典是系统中的元数据存储库,定义了所有业务数据的结构和属性。通过学习数据字典,开发者可以了解如何创建、修改和管理数据库表,以及如何使用这些表在ABAP程序中处理数据。这部分还会讲解结构、字段符号、...

    Sams - Teach Yourself ABAP 4 in 21 Days

    15. **ABAP Dictionary**:提供了一种定义数据库表和视图的元数据的方式,同时支持数据类型和域的定义。 通过这本书的学习,你不仅能掌握ABAP的基本语法,还能了解如何在实际项目中应用这些知识,提升在SAP系统开发...

    实战SAP程序开发——从实例学SAP ABAP编程

    - 数据字典:了解SAP系统中的数据模型,包括数据库表、结构、域等元数据的管理。 - SELECT语句:学习如何使用SQL查询语言在SAP系统中读取和操作数据表。 4. **第五章 标准列表和选择屏幕**: - 标准列表:创建和...

    SAP--HR模块常用的表(供参考)

    除了上述表格,还有一些其他关键的DD系列表,这些表在SAP中定义了数据结构和元数据: - **DD01L**:域定义 - **DD02L**:SAP系统中的表定义 - **DD03L**:表字段的详细信息 - **DD03T**:字段的文本描述(语言依赖...

    ABAP语法详解教材

    此外,ABAP Workbench是SAP开发环境,包含SE80(用于编辑、测试和调试ABAP代码)、SE16(用于数据库表操作)和SE24(用于查看和修改ABAP对象元数据)等工具。开发者可以利用这些工具进行日常的ABAP开发工作。 最后...

    ABAP程序性能优化

    通过查询表元数据确定是否支持缓冲。 - 避免编写导致无法利用缓冲的SQL语句。 - 利用应用服务器级别的缓存机制,提高多次访问相同数据的效率。 #### 三、简化复杂的嵌套循环 1. **批量处理**:通过使用批量处理...

    ABAP351高级编程-动态编程.rar

    同时,内部表作为ABAP的数据结构,可以用于存储和操作动态数据。 6. **CL_AS_DYNAMIC_PROGRAM** Class: SAP提供了一个类,用于在运行时创建和执行ABAP源代码。这对于构建灵活的脚本或者根据业务需求自动生成代码的...

Global site tag (gtag.js) - Google Analytics