前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >根据application ID打印该application所包含的object

根据application ID打印该application所包含的object

作者头像
Jerry Wang
发布2019-07-09 18:55:29
7130
发布2019-07-09 18:55:29
举报

Created by Jerry Wang, last modified on Sep 03, 2014

输入application id:

clipboard1
clipboard1

输出是application包含object的name和类型:

clipboard2
clipboard2
代码语言:javascript
复制
REPORT zdisplay_app.
PARAMETERS: id TYPE if_fdt_types=>id OBLIGATORY DEFAULT
'FA163E8EAB031EE48B847A9EF751D5F0'.
START-OF-SELECTION.
  TYPES: BEGIN OF ty_code,
           code TYPE if_fdt_types=>object_type,
           text TYPE string,
         END OF ty_code.
  DATA:      lo_instance TYPE REF TO if_fdt_admin_data,
             lo_app      TYPE REF TO cl_fdt_application,
             lt_all      TYPE if_fdt_types=>ts_object_id,
             lv_unknown  TYPE boolean,
             lt_map      TYPE STANDARD TABLE OF ty_code WITH KEY code.
  CALL METHOD cl_fdt_factory=>get_instance_generic
    EXPORTING
      iv_id         = id
    IMPORTING
      eo_instance   = lo_instance
      ev_id_unknown = lv_unknown.
  lo_app ?= lo_instance.
  lo_app->if_fdt_application_objects~get_all( IMPORTING ets_object_id = lt_all ).
  LOOP AT lt_all ASSIGNING FIELD-SYMBOL(<id>).
    PERFORM display USING <id>.
  ENDLOOP.
FORM display USING id TYPE if_fdt_types=>id.
  CALL METHOD cl_fdt_factory=>get_instance_generic
    EXPORTING
      iv_id         = id
    IMPORTING
      eo_instance   = lo_instance
      ev_id_unknown = lv_unknown.
  IF lv_unknown = abap_true.
    WRITE: / 'ID Unknown.' COLOR COL_NEGATIVE.
    EXIT.
  ENDIF.
  DATA(lo_object) = cl_abap_classdescr=>describe_by_object_ref( lo_instance ).
  DATA(lv_type) = lo_object->get_relative_name( ).
  WRITE: / lv_type COLOR COL_NEGATIVE.
  PERFORM display_by_type USING lo_instance lv_type.
ENDFORM.
FORM display_by_type USING io_obj TYPE REF TO if_fdt_admin_data
                            iv_type TYPE string.
  DATA: lv_type_full TYPE string,
        lv_text      TYPE string,
        lt_dt_all    TYPE if_fdt_types=>ts_object_id,
        lt_fo_all    LIKE lt_dt_all.
  CASE iv_type.
    WHEN 'CL_FDT_ELEMENT'.
      DATA(lo_element) = CAST cl_fdt_element( io_obj ).
      lv_text = lo_element->if_fdt_admin_data~get_name( ).
      DATA(lv_type) = lo_element->if_fdt_admin_data~get_object_type( ).
      PERFORM get_type USING lv_type CHANGING lv_type_full.
      WRITE: / 'element text: ', lv_text, ' type: ', lv_type_full COLOR COL_POSITIVE.
    WHEN 'CL_FDT_DECISION_TABLE'.
      DATA(lo_dt) = CAST cl_fdt_decision_table( io_obj ).
      lv_text = lo_dt->if_fdt_admin_data~get_name( ).
      WRITE: / 'Decision table name: ', lv_text COLOR COL_GROUP.
      CLEAR: lt_dt_all.
      lo_dt->if_fdt_admin_data~get_referenced_objects( IMPORTING ets_object_id = lt_dt_all ).
      WRITE: / 'Below elements are within decision table' COLOR COL_POSITIVE.
      LOOP AT lt_dt_all ASSIGNING FIELD-SYMBOL(<dt_id>).
        PERFORM display USING <dt_id>.
      ENDLOOP.
      WRITE: / 'Decision table element display finished' COLOR COL_POSITIVE.
    WHEN 'CL_FDT_FORMULA'.
      DATA(lo_fo) = CAST cl_fdt_formula( io_obj ).
      lv_text = lo_fo->if_fdt_admin_data~get_name( ).
      WRITE: / 'Formula name: ' , lv_text COLOR COL_KEY.
      lo_fo->if_fdt_admin_data~get_referenced_objects( IMPORTING ets_object_id = lt_fo_all ).
      LOOP AT lt_fo_all ASSIGNING FIELD-SYMBOL(<fo_id>).
        WRITE: / 'Below elements are within formula' COLOR COL_POSITIVE.
        PERFORM display USING <fo_id>.
        WRITE: / 'formula element display finished' COLOR COL_POSITIVE.
      ENDLOOP.
  ENDCASE.
ENDFORM.
FORM get_type USING iv_code TYPE if_fdt_types=>object_type CHANGING cv_type TYPE string.
  DATA: ls_posttype TYPE ty_code,
        lv_code     TYPE dd07l-domvalue_l,
        lv_result   TYPE dd07v.
  READ TABLE lt_map WITH KEY code = iv_code INTO ls_posttype.
  IF sy-subrc = 0.
    cv_type = ls_posttype-text.
  ELSE.
    CLEAR ls_posttype.
    lv_code = iv_code.
    CALL FUNCTION 'DD_DOMVALUE_TEXT_GET'
      EXPORTING
        domname  = 'FDT_OBJECT_TYPE'
        value    = lv_code
      IMPORTING
        dd07v_wa = lv_result.
    ls_posttype-code = iv_code.
    ls_posttype-text = lv_result-ddtext.
    APPEND ls_posttype TO lt_map.
    cv_type = lv_result-ddtext.
  ENDIF.
ENDFORM.
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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