REPORT zfsl_show_desktop.
TABLES : seoclass.
DATA : zcl_oo_class TYPE REF TO cl_oo_class.
DATA : lt_attributes TYPE seo_attributes,
ls_attributes TYPE vseoattrib,
lt_methods TYPE seo_methods,
ls_methods TYPE vseomethod,
ls_signature TYPE seocmpsign,
lt_params TYPE seo_parameters,
ls_params TYPE vseoparam,
lt_exceps TYPE seo_exceptions,
ls_exceps TYPE vseoexcep.
DATA : ls_seotype TYPE seotype,
lt_subclass TYPE seo_relkeys,
ls_subclass TYPE seorelkey.
DATA : lv_cpdname TYPE seocpdname,
lv_type TYPE char30,
lv_exposure TYPE seoexpose,
lv_text TYPE char30,
lv_superclass TYPE seoclsname.
DATA : lt_domval TYPE re_t_rsdomaval,
ls_domval TYPE dd07v.
PARAMETER : p_class TYPE seoclass-clsname.
TRY.
CREATE OBJECT zcl_oo_class
EXPORTING
clsname = p_class
with_inherited_components = seox_true
with_interface_components = seox_true.
WRITE :/ 'Class Name : ', zcl_oo_class->class-clsname.
WRITE :/ 'Class Description : ', zcl_oo_class->class-descript.
WRITE :/ 'Class Author : ', zcl_oo_class->class-author.
CATCH cx_class_not_existent .
ENDTRY.
IF zcl_oo_class IS NOT INITIAL.
** Get attributes of the Class **
REFRESH : lt_attributes.
zcl_oo_class->get_attributes(
EXPORTING
public_attributes_only = seox_false
instance_attributes_only = seox_false
reference_attributes_only = seox_false
RECEIVING
result = lt_attributes ).
WRITE :/ 'Attributes List'.
WRITE :/ '---------------'.
LOOP AT lt_attributes INTO ls_attributes.
WRITE :/ ls_attributes-clsname, ls_attributes-cmpname.
ENDLOOP.
WRITE :/.
* Get components list **
REFRESH : lt_methods.
zcl_oo_class->get_methods(
EXPORTING
public_methods_only = seox_false
instance_methods_only = seox_false
RECEIVING
result = lt_methods ).
WRITE :/ 'Components List '.
WRITE :/ '----------------'.
LOOP AT lt_methods INTO ls_methods.
WRITE :/ ls_methods-clsname, ls_methods-cmpname.
ENDLOOP.
WRITE :/.
** Get Component Signature **
IF lt_methods[] IS NOT INITIAL.
REFRESH : lt_params, lt_exceps.
WRITE :/ 'Component Signatures '.
WRITE :/ '---------------------'.
LOOP AT lt_methods INTO ls_methods.
MOVE ls_methods-cmpname TO lv_cpdname.
CLEAR : ls_signature.
TRY.
zcl_oo_class->get_component_signature(
EXPORTING
cpdname = lv_cpdname
RECEIVING
result = ls_signature ).
CATCH cx_component_not_existing .
ENDTRY.
IF ls_signature IS NOT INITIAL.
APPEND LINES OF ls_signature-params TO lt_params.
APPEND LINES OF ls_signature-exceps TO lt_exceps.
ENDIF.
ENDLOOP.
WRITE :/ ':: Parameters ::'.
LOOP AT lt_params INTO ls_params.
MOVE ls_params-type TO lv_type.
WRITE :/ ls_params-cmpname,ls_params-sconame, lv_type.
ENDLOOP.
IF lt_exceps[] IS NOT INITIAL.
WRITE :/ ':: Exceptions ::'.
LOOP AT lt_exceps INTO ls_exceps.
WRITE :/ ls_exceps-cmpname, ls_exceps-sconame, ls_exceps-descript.
ENDLOOP.
ENDIF.
ENDIF.
WRITE :/.
** Get Component Exposure **
REFRESH : lt_domval.
cl_reca_ddic_doma=>get_values(
EXPORTING
id_name = 'SEOEXPOSE'
id_langu = sy-langu
IMPORTING
et_values = lt_domval
EXCEPTIONS
not_found = 1
OTHERS = 2 ).
WRITE :/ 'Components Visibility '.
WRITE :/ '----------------------'.
LOOP AT lt_methods INTO ls_methods.
CLEAR : lv_exposure.
MOVE ls_methods-cmpname TO lv_cpdname.
TRY.
zcl_oo_class->get_component_exposure(
EXPORTING
cpdname = lv_cpdname
RECEIVING
result = lv_exposure ).
CLEAR : ls_domval.
READ TABLE lt_domval INTO ls_domval WITH KEY domvalue_l = lv_exposure.
IF sy-subrc EQ 0.
WRITE :/ lv_cpdname, ls_domval-ddtext.
ENDIF.
CATCH cx_component_not_existing .
ENDTRY.
ENDLOOP.
WRITE :/.
** Get attribute Type **
REFRESH : lt_domval.
cl_reca_ddic_doma=>get_values(
EXPORTING
id_name ='SEOTYPTYPE'
id_langu = sy-langu
IMPORTING
et_values = lt_domval
EXCEPTIONS
not_found = 1
OTHERS = 2 ).
WRITE :/ 'Class Attributes details'.
WRITE :/ '------------------------'.
LOOP AT lt_attributes INTO ls_attributes.
TRY.
MOVE ls_attributes-cmpname TO lv_cpdname.
zcl_oo_class->get_attribute_type(
EXPORTING
cpdname = lv_cpdname
RECEIVING
result = ls_seotype ).
CLEAR :ls_domval.
READ TABLE lt_domval INTO ls_domval WITH KEY domvalue_l = ls_seotype-typtype.
IF sy-subrc EQ 0.
MOVE ls_seotype-type TO lv_type.
MOVE ls_domval-ddtext TO lv_text.
WRITE :/ lv_cpdname, lv_text, lv_type.
ENDIF.
CATCH cx_component_not_existing .
CATCH cx_wrong_component_type .
ENDTRY.
ENDLOOP.
WRITE :/.
** Get list of sub classes **
REFRESH : lt_subclass.
lt_subclass = zcl_oo_class->get_subclasses( ).
IF lt_subclass[] IS NOT INITIAL.
WRITE :/ 'Subclass Details'.
WRITE :/ '----------------'.
LOOP AT lt_subclass INTO ls_subclass.
WRITE :/ ls_subclass-refclsname, ls_subclass-clsname.
ENDLOOP.
ENDIF.
WRITE :/.
** Get list of super classes **
CLEAR : lv_superclass.
lv_superclass = zcl_oo_class->get_superclass( ).
WRITE :/ 'Super Class -> ' ,lv_superclass.
ENDIF.
source link:
http://wiki.sdn.sap.com/wiki/display/stage/Information+of+Class+Objects+using+CL_OO_CLASS
分享到:
相关推荐
### SAP-ABAP-OO 实现 CL-SALV-TABLE 的关键知识点 #### 1. ABAP 面向对象的 ALV 显示方法 在 SAP 的 ABAP 环境中,ALV (Application List Viewer) 是一种非常常用的技术,用于在屏幕上以表格的形式展示数据。传统...
标题中的"ZUI2_JSON2_/UI2/CL_JSON_ui2/cl_json_abap_Ui2_cl_json_zui2_json_源"可能指的是一个与ZUI2相关的项目,它利用了ABAP类/UI2/CL_JSON来解析和生成JSON数据。描述中提到,我们需要用到这个类来将JSON格式的...
标题:“ABAP官方教程--- BC400_EN_Col32”和“Introduction to the ABAP Workbench”(ABAP工作台介绍)。 描述:本文件是一份关于ABAP官方教程的介绍,该教程的全称为“BC400_EN_Col32”,涵盖了ABAP工作台的入门...
标题“abap-ALV.rar_ABAP系统ALV_abap_abap开发alv”暗示我们将深入探讨ABAP ALV的使用,特别是在ABAP系统中的应用以及如何进行开发。 描述中提到“ABAP ALV总结,ALV格式,REUSE_ALV_GRID_DISPLAY_LVC函数使用”,...
本文档是《SAP中文教材全系列之ABAP-BC400_ZH》,为SAP ABAP编程语言的学习提供参考。文档包含了详细的ABAP课程内容,旨在帮助学员理解并掌握ABAP编程的基础知识和高级技能。以下将详细阐释文档所涵盖的知识点。 ...
- `DEFERRED CLASS LCL_EVENT_RECEIVER DEFINITION`: 定义一个类`LCL_EVENT_RECEIVER`,用于处理ALV的事件。 - `HANDLE_DATA_CHANGED`: 这个方法处理`DATA_CHANGED`事件,当用户更改数据时触发。 - `UPDATE_DELTA...
根据提供的文件信息,以下是关于标题、描述和部分内容的知识点整理: 标题: "ABAP官方教程---BC400_EN_46D_FV" 描述: "ABAP官方教程系列---BC400_EN_46D_FV ABAP Workbench: Foundations and Concepts" 标签: ...
在ABAP编程中,ALV (ABAP List Viewer) 是一个强大的工具,用于展示和编辑数据表。在处理用户输入时,我们有时需要对特定字段应用格式化或限制,这时`EDIT_MASK`就派上用场了。`EDIT_MASK`是ABAP中的一种功能,允许...
为了更好地理解这一过程,你可以参考提供的文档:《用OLE DOI 实现ABAP导出EXCEL表格.docx》和《ABAP-透過OLE操作OFFICE.docx》。同时,《OLE.pdf》可能包含更深入的OLE和DOI技术细节,这对于优化和调试代码会非常有...
- 使用`cl_abap_typedescr`类和`cl_abap_structdescr`类来描述动态内表的结构。 - 使用`cl_abap_tabledescr`类创建动态内表的描述符,并通过`cl_abap_table_descr=>create`方法生成内表。 在进行动态更新时,需要...
3. **初始化ALV**:使用`cl_salv_table`类初始化ALV对象。这是创建ALV实例并设置其属性的关键步骤,如是否允许用户编辑数据,以及列的宽度等。例如: ```abap DATA: lo_salv_table TYPE REF TO cl_salv_table. lo...
标题:“TAW12_1_-_2005-Q2_-_A4_ABAP_Workbench_Concepts.pdf” - **TAW12_1**:这可能是文档的内部编号或名称。 - **2005-Q2**:表明文档的出版时间是2005年第二季度。 - **A4**:可能指的是文档的格式为A4纸张...
在ABAP中,我们可以使用`CL_EXCEL_WRITER`类来创建和操作Excel文件。首先,我们需要实例化该类,并设置工作表、行和列的数量。然后,使用`SET_CELL_VALUE`方法将字段值写入指定单元格。例如,要在A1单元格中写入字段...
在ABAP面向对象编程(ABAP OO)中,经常需要对ALV(Application List Viewer)进行定制化的控制,包括移除或隐藏某些默认显示的工具栏功能。这通常是为了提供更简洁、更符合业务需求的用户界面。本文将详细介绍如何...
2. **生成Proxy代码**:在目标系统中,使用SE80事务码,通过“生成ABAP Proxy”功能,输入源系统的服务接口信息,自动生成对应的ABAP Proxy类和相关代码。 3. **编译与激活**:生成的Proxy代码需要在目标系统中进行...
通过分析给定的文件信息,“abap pa - BC400_Col63”可以理解为一份针对ABAP Workbench的培训课程资料,其重点在于向学员介绍如何使用ABAP Workbench进行开发工作。此外,文件还强调了版权、商标和免责声明等内容,...
在“web-dynpro-abap-ui-element-tree”这个主题中,我们主要探讨的是Web Dynpro ABAP中的UI元素树结构,以及如何在Chapter 1, Curriculum (CV) Introduction中理解和应用这些知识。 在Web Dynpro ABAP中,UI元素是...
ABAP - Keyword Documentation This documentation describes the syntax and meaning of the keywords of the ABAP language and its object-oriented part ABAP Objects. Alongside this, language frameworks ...
SAP ABAP 动态内表详解 SAP ABAP 中的动态内表是一种特殊的内表结构,它可以根据实际情况动态地生成和赋值。本文将详细介绍动态内表的创建、赋值和读取显示。 动态内表的创建 动态内表的创建主要分为两步:首先...
在给定的示例中,作者通过一段ABAP程序展示了如何使用ALV进行一般列表显示。这段程序的主要功能是显示物料细节信息,包括物料编号(MATNR)、创建者(ERNAM)、创建日期(ERSDA)以及物料类别(LABOR)。 1. **数据...