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

SAP AET fields的自定义行为

阅读更多

If the customer specific logic is too complex to be covered by the embedded formula in calculated field editor in AET, for example there are some ABAP coding involved, we can try custom behavior logic provided by AET:

(1) Create a new entry in table AXT_BEHAVIOR

(2) Your custom behavior could be implemented in class ZCL_AXT_CUSTOM_BEHAVIOR, which inherites from class CL_AXT_ABST_BEHAVIOR_HDLR.

Source code for ZCL_AXT_CUSTOM_BEHAVIOR:

class ZCL_AXT_CUSTOM_BEHAVIOR definition
  public
  inheriting from CL_AXT_ABST_BEHAVIOR_HDLR
  final
  create public
  shared memory enabled .

public section.

  methods IF_AXT_BEHAVIOR_HANDLER~GET_BEHAVIOR_TYPE
    redefinition .
  methods IF_AXT_BEHAVIOR_HANDLER~GET_COMPATIBLE_DATATYPES
    redefinition .
  methods IF_AXT_BEHAVIOR_HANDLER~IS_SUPPORTED
    redefinition .
  methods IF_AXT_DATATYPE_HANDLER~ADJUST_GET_P
    redefinition .
  methods IF_AXT_DATATYPE_HANDLER~ADJUST_SET
    redefinition .
protected section.
  PRIVATE SECTION.
*"* private components of class ZCL_AXT_CUSTOM_BEHAVIOR
*"* do not include other source files here!!!
ENDCLASS.



CLASS ZCL_AXT_CUSTOM_BEHAVIOR IMPLEMENTATION.


* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_AXT_CUSTOM_BEHAVIOR->IF_AXT_BEHAVIOR_HANDLER~GET_BEHAVIOR_TYPE
* +-------------------------------------------------------------------------------------------------+
* | [<-()] RV_BEHAVIOR_TYPE               TYPE        AXT_FIELD_BEHAVIOR_TYPE
* +--------------------------------------------------------------------------------------</SIGNATURE>
  METHOD IF_AXT_BEHAVIOR_HANDLER~GET_BEHAVIOR_TYPE.
    rv_behavior_type = 'ZAXT_BEHAVIOR'.
  ENDMETHOD.                    "IF_AXT_BEHAVIOR_HANDLER~GET_BEHAVIOR_TYPE


* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_AXT_CUSTOM_BEHAVIOR->IF_AXT_BEHAVIOR_HANDLER~GET_COMPATIBLE_DATATYPES
* +-------------------------------------------------------------------------------------------------+
* | [<-()] RT_DATATYPES                   TYPE        AXTT_FIELD_DATA_TYPE
* +--------------------------------------------------------------------------------------</SIGNATURE>
  METHOD IF_AXT_BEHAVIOR_HANDLER~GET_COMPATIBLE_DATATYPES.
    APPEND 'CHAR' TO rt_datatypes.
    APPEND 'STRING' TO rt_datatypes.
  ENDMETHOD.                    "IF_AXT_BEHAVIOR_HANDLER~GET_COMPATIBLE_DATATYPES


* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_AXT_CUSTOM_BEHAVIOR->IF_AXT_BEHAVIOR_HANDLER~IS_SUPPORTED
* +-------------------------------------------------------------------------------------------------+
* | [--->] IT_BO_PART                     TYPE        AXTT_EXT_BO_PART(optional)
* | [--->] IT_SUPPORTED_UI_FRAMEWORKS     TYPE        AXTT_UI_FRAMEWORK(optional)
* | [--->] IV_EXTENSION_TYPE              TYPE        AXT_EXTENSION_TYPE
* | [--->] IV_BOL_REGISTERED              TYPE        AXT_BOOLEAN (default =ABAP_TRUE)
* | [--->] IV_RENDERING_TABLE_ONLY        TYPE        AXT_BOOLEAN (default =ABAP_FALSE)
* | [--->] IV_RENDERING_TABLE_POSSIBLE    TYPE        AXT_BOOLEAN (default =ABAP_TRUE)
* | [--->] IV_TRANSIENT_CALCULATE_SET     TYPE        AXT_BOOLEAN (default =ABAP_FALSE)
* | [--->] IV_MANUAL_DATA_ELEMENT_SET     TYPE        AXT_BOOLEAN (default =ABAP_FALSE)
* | [<-()] RV_SUPPORTED                   TYPE        AXT_BOOLEAN
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_AXT_BEHAVIOR_HANDLER~IS_SUPPORTED.


  RV_SUPPORTED = abap_true.
endmethod.


* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_AXT_CUSTOM_BEHAVIOR->IF_AXT_DATATYPE_HANDLER~ADJUST_GET_P
* +-------------------------------------------------------------------------------------------------+
* | [--->] IS_FIELD                       TYPE        AXTS_RUNTIME_EXT_FIELD
* | [--->] IV_COMPONENT                   TYPE        STRING
* | [--->] IO_CURRENT                     TYPE REF TO IF_BOL_BO_PROPERTY_ACCESS(optional)
* | [--->] IV_PROPERTY                    TYPE        STRING
* | [--->] IV_DISPLAY_MODE                TYPE        ABAP_BOOL
* | [--->] IV_ORIGINAL_VALUE              TYPE        STRING
* | [--->] IV_IS_TABLE                    TYPE        ABAP_BOOL (default =ABAP_FALSE)
* | [--->] IV_IS_SEARCH                   TYPE        ABAP_BOOL (default =ABAP_FALSE)
* | [<-()] RV_VALUE                       TYPE        STRING
* +--------------------------------------------------------------------------------------</SIGNATURE>
  METHOD IF_AXT_DATATYPE_HANDLER~ADJUST_GET_P.

    CASE iv_property.
      WHEN if_bsp_wd_model_setter_getter=>fp_fieldtype.
        IF iv_is_table = abap_true OR iv_is_search = abap_true.
          rv_value = cl_bsp_dlc_view_descriptor=>field_type_input.
        ELSE.
          rv_value = cl_bsp_dlc_view_descriptor=>field_type_textarea.
        ENDIF.
      WHEN if_bsp_wd_model_setter_getter=>fp_textarea_rows.
        rv_value = 10.
      WHEN OTHERS.
        rv_value = super->if_axt_datatype_handler~adjust_get_p(
           is_field          = is_field
           iv_component      = iv_component
           io_current        = io_current
           iv_property       = iv_property
           iv_display_mode   = iv_display_mode
           iv_original_value = iv_original_value ).
    ENDCASE.
  ENDMETHOD.                    "IF_AXT_DATATYPE_HANDLER~ADJUST_GET_P


* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_AXT_CUSTOM_BEHAVIOR->IF_AXT_DATATYPE_HANDLER~ADJUST_SET
* +-------------------------------------------------------------------------------------------------+
* | [--->] IS_FIELD                       TYPE        AXTS_RUNTIME_EXT_FIELD
* | [--->] IV_ATTRIBUTE_PATH              TYPE        STRING
* | [--->] IV_COMPONENT                   TYPE        STRING
* | [--->] IO_CURRENT                     TYPE REF TO IF_BOL_BO_PROPERTY_ACCESS
* | [--->] IV_UI_VALUE                    TYPE        STRING
* | [--->] IT_FORM_FIELDS                 TYPE        TIHTTPNVP(optional)
* | [<-->] CV_VALUE                       TYPE        ANY
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_AXT_DATATYPE_HANDLER~ADJUST_SET.
DATA: tsl TYPE timestampl,
      lv_zone type TZONREF-TZONE value 'UTC',
      lv_time TYPE string.

GET TIME STAMP FIELD tsl.

lv_time = | Edited by: { tsl TIMESTAMP = ISO
                   TIMEZONE = lv_zone }|.
 CONCATENATE cv_value lv_time INTO cv_value SEPARATED BY cl_abap_char_utilities=>cr_lf.
endmethod.
ENDCLASS.

When you create extension field, choose "Not defined" as Field type, and choose the entry maintained in step1 as "Render/Validate As":

Click Enable Expert Mode and assign one data element to this extension field:

Generate the extension field and make it visible in WebUI. After I maintain some value for this field and click save:

the ADJUST_SET method of handler class is called and the timestamp is appended:

0
0
分享到:
评论

相关推荐

    AET活性边表法

    - **数据结构选择**: 在C#中,可以使用`LinkedList`类作为AET的基础,自定义`Edge`类存储边的信息。 - **排序与查找**: 利用`LinkedList`的特性,结合`OrderBy`或`Sort`方法进行排序和查找。 - **边的插入与删除**: ...

    AET边表的X扫描线转换源代码

    此外,为了在屏幕上显示结果,你可能需要与Windows API或OpenGL接口进行交互,创建窗口,设置绘图上下文,然后调用自定义的绘制函数,该函数会调用扫描线算法填充多边形。VS2005提供了方便的调试工具,可以帮助你在...

    AET边表填充

    使用AET边表法对任意多边形填充,多边形没给出,可自行设计几个文档数据,以验证成功

    AET.tar.gz

    为了更好地利用这个工具,用户需要对Python编程有一定的了解,并且熟悉基本的测试概念,如测试驱动开发(TDD)和行为驱动开发(BDD)。 要解压并访问"AET.tar.gz"中的文件,用户需要在命令行环境中使用`tar`和`gzip...

    aet.zip_.net编程_The Business_aet

    标题中的"aet.zip_.net编程_The Business_aet"表明这是一个与.NET编程相关的项目,具体可能是一个业务管理系统,其中"The Business"可能是指电信行业的商业运营。这个压缩包包含了一系列的PBL(Progress数据库对象)...

    brutus-aet2_daughtervyb_zip_brutus_

    Brutus program actived

    brutus aet2.7z

    超级网络解密之王—Brutus ,Brutus可以说是能够破解任何认证系统的密码,像一般的认证系统如Telnet、FTP、POP3等基于明文的密码...不过话说回来,如果认证系统是使用了SSL之类的加密系统,那么Brutus就无用武之地了。

    aet:AET-一种检测网站上视觉变化并执行基本页面运行状况检查的系统

    AET被设计为一种灵活的系统,可以根据给定项目的回归要求进行调整和定制。 该工具的开发旨在帮助前端客户端对网站或投资组合进行布局回归测试,从本质上评估网站从一个快照到下一个快照的影响或变化。AET背后的哲学...

    TI1-TMS28F008AET.pdf

    本文档介绍的是TI公司的TMS28F008AET芯片,这是一款高性能、低功耗的闪存存储器。该芯片具有多种组织结构,包括1048576位(1MB)的8位宽组织、524288位(512KB)的16位宽组织等,适用于不同的数据存储需求。 阵列...

    AET-一种检测网站视觉变化并执行基本页面健康检查的系统-Java-JavaScript-下载

    AET系统通过自动化测试来解决这个问题,它能够模拟用户行为,捕获页面的不同状态,并对比不同时间点的页面截图,找出任何可能的视觉差异。这对于保持用户体验的一致性和避免潜在错误至关重要。 Java在这里主要作为...

    PyPI 官网下载 | aet-0.1.3-py3-none-any.whl

    标题中的"PyPI 官网下载 | aet-0.1.3-py3-none-any.whl"指的是一款名为AET的Python库,版本号为0.1.3,该库已打包成`.whl`格式的文件,可以在Python的包索引平台PyPI(Python Package Index)上找到并下载。...

    高级逃逸技术(AET)的分析.docx

    高级逃逸技术(AET)的分析 高级逃逸技术(AET)是指一类可以躲避检测系统的技术,这类技术可以对企业的信息安全系统构成严峻的挑战。随着信息科技的发展,计算机的应用范围已经遍及世界各个角落,企业都纷纷依靠IT...

    aet-calc:基于浏览器的心率漂移计算器,可确定有氧阈(AeT)

    AeT计算器道格拉斯·沃森(Douglas Watson),2020年5月麻省理工学院执照这是一个基于浏览器的工具,可以计算在GPS手表上记录的活动期间心率漂移时的心率漂移。 此指标用于确定您的有氧阈值(由上坡运动员定义): :...

    aet_1123_形码和物流包装技术.pptx

    aet_1123_形码和物流包装技术.pptx

    AET

    标题"AET"可能指的是"Advanced Encryption Technology",这是一种高级加密技术,通常用于保护数据安全,尤其是在数字通信和存储中。AET可能涉及到多种与信息安全相关的概念和技术,包括但不限于密码学、对称加密、非...

    OfficeHomeDataset_Aet_Clipart_Product.zip

    Office_HomeDataset数据集,参考参考http://hemanthdv.org/OfficeHome-Dataset/,只有Aet、Clipart、Product,只能1GB,Real World另外传

    aet%tzlu创建检调对接工作机制有效化解矛盾纠纷.doc

    aet%tzlu创建检调对接工作机制有效化解矛盾纠纷.doc

    aet_ISO9001:2000实施范例0.doc

    aet_ISO9001:2000实施范例0.doc 本资源为一份ISO9001:2000质量管理体系实施范例,旨在帮助企业建立和实施质量管理体系,提高产品质量和服务水平。本文档包括质量手册、质量管理体系结构图、质量管理体系过程职责...

Global site tag (gtag.js) - Google Analytics