这个行为也能在下图的 ABAP 调试器里清楚地观察到:在 ABAP 调试器里,实例1 和实例 2 的 id 相同,都是 10,而实例 3 的编号为 11. 本文介绍了 ABAP 单例模式中一个不为人熟知的知识点:可序列化 Tag 接口 IF_SERIALIZABLE_OBJECT,算是给 ABAP 单例模式的实现,开了一个口子。然而避免踏入这个坑的措施也...
单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。 然而在某些场景下,这种设计模式的单例特性会被破坏,看下面这个例子: 代码的第三行,这个ABAP类实现了接口if_serializable_object,这意味着它可以被关键字CALL TRANSFORMATION进行序列化和反序列化操作。 使用下面的ABAP代码: DATA(lo_instance) = zc...
这个行为也能在下图的 ABAP 调试器里清楚地观察到:在 ABAP 调试器里,实例1 和实例 2 的 id 相同,都是 10,而实例 3 的编号为 11. 本文介绍了 ABAP 单例模式中一个不为人熟知的知识点:可序列化 Tag 接口 IF_SERIALIZABLE_OBJECT,算是给 ABAP 单例模式的实现,开了一个口子。然而避免踏入这个坑的措施也...
ABAP源代码如下: REPORTzst.CLASSc1DEFINITION.PUBLICSECTION.INTERFACESif_serializable_object.PROTECTEDSECTION.DATAcarriersTYPETABLEOFscarr.ENDCLASS.CLASSc2DEFINITIONINHERITINGFROMc1.PUBLICSECTION.METHODSconstructor.PRIVATESECTION.DATAlinesTYPEi.METHODS:serialize_helperEXPORTINGcountTYPEi,deserialize_helperIMPORTINGcountTYP...
CREATE OBJECT lo. 简单说明一下这个报表的要点: 第三行定义了一个 ABAP 类 c1,实现了一个名叫if_serializable_object的接口。这个接口内没有定义任何方法,只是起一个标志作用,告诉 ABAP 框架,带有这个接口的 ABAP 类实例,可以被序列化成 XML。 c1 的PROTECTED SECTION定义了一个成员属性carriers,该属性能够被 ...
顺便提一句,除了IF_AMDP_MARKER_HDB,ABAP还有很多其他的标记接口,比如表明一个ABAP类支持序列化操作的接口,IF_SERIALIZABLE_OBJECT: 以及标注一个接口需要被BAdI Definition使用的IF_BADI_INTERFACE. 我们在创建或修改ABAP新式BAdI时,任何定义在BAdI Definition中的接口,如果没有声明接口IF_BADI_INTERFACE,会无法通过ABAP...
说明:为了导入被引用变量引用的对象,如果这些对象实现了接口IF_SERIALIZABLE_OBJECT,使用语句CALL TRANSFORMATION序列化并且导入这些对象 压缩开关:[COMPRESSION {ON|OFF}] 可以指定数据是否以压缩的形式存储与簇中,默认的对于除了数据库表所有的介质的内存区域压缩是不激活的。当使用IMPORT导入数据,系统自动会识别数据是否被...
INTERFACES if_serializable_object. …. ENDCLASS. CLASS customer DEFINITION. INTERFACES if_serializable_object. ENDCLASS. DATA:account TYPE REF TO account, Customer TYPE REF TO customer, Serializable_objects TYPE TABLE OF REF TO if_seriazable_object, ...
顺便提一句,除了IF_AMDP_MARKER_HDB,ABAP还有很多其他的标记接口,比如表明一个ABAP类支持序列化操作的接口,IF_SERIALIZABLE_OBJECT: 以及标注一个接口需要被BAdI Definition使用的IF_BADI_INTERFACE. 我们在创建或修改ABAP新式BAdI时,任何定义在BAdI Definition中的接口,如果没有声明接口IF_BADI_INTERFACE,会无法通过ABAP...
One of the most famous tag interface in ABAP is if_serializable_object. I used it in my blog Singleton bypass – ABAP and Java. An object instance of class which implements this tag interface could be serialized to an XML String. The actual serialization and deserialization is done in the ...