SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style: italic;
color: #808080;
}
.L1S32 {
color: #3399FF;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
REPORTdemo_abap_objects.
*---------------------------------------------------------------------*
*GlobalSelectionScreen
*---------------------------------------------------------------------*
SELECTION-SCREENBEGINOFSCREEN100ASWINDOWTITLEtext-100.
PARAMETERS:button1RADIOBUTTONGROUPgrp,
button2RADIOBUTTONGROUPgrp,
button3RADIOBUTTONGROUPgrp,
button4RADIOBUTTONGROUPgrp.
SELECTION-SCREENENDOFSCREEN100.
*---------------------------------------------------------------------*
*INTERFACEstatus
*---------------------------------------------------------------------*
*Interfacedefinition*
*---------------------------------------------------------------------*
INTERFACEstatus.
METHODSwrite.
ENDINTERFACE.
*---------------------------------------------------------------------*
*CLASSvesselDEFINITION
*---------------------------------------------------------------------*
*Superclassdefinition*
*---------------------------------------------------------------------*
CLASSvesselDEFINITION.
PUBLICSECTION.
METHODS:constructor,
driveIMPORTINGspeed_upTYPEi,
get_idRETURNINGvalue(id)TYPEi.
PROTECTEDSECTION.
DATA:speedTYPEi,
max_speedTYPEiVALUE100.
PRIVATESECTION.
CLASS-DATAobject_countTYPEi.
DATAidTYPEi.
ENDCLASS.
*---------------------------------------------------------------------*
*CLASSvesselIMPLEMENTATION
*---------------------------------------------------------------------*
*Superclassimplementation*
*---------------------------------------------------------------------*
CLASSvesselIMPLEMENTATION.
METHODconstructor.
object_count=object_count+1.
id=object_count.
ENDMETHOD.
METHODdrive.
speed=speed+speed_up.
IFspeed>max_speed.
speed=max_speed.
ENDIF.
ENDMETHOD.
METHODget_id.
id=me->id.
ENDMETHOD.
ENDCLASS.
*---------------------------------------------------------------------*
*CLASSshipDEFINITION
*---------------------------------------------------------------------*
*Subclassdefinition*
*---------------------------------------------------------------------*
CLASSshipDEFINITIONINHERITINGFROMvessel.
PUBLICSECTION.
INTERFACESstatus.
DATAnameTYPEstringREAD-ONLY.
METHODS:constructorIMPORTINGnameTYPEstring,
driveREDEFINITION.
EVENTSemergency_call.
ENDCLASS.
*---------------------------------------------------------------------*
*CLASSshipIMPLEMENTATION
*---------------------------------------------------------------------*
*Subclassimplementation*
*---------------------------------------------------------------------*
CLASSshipIMPLEMENTATION.
METHODconstructor.
CALLMETHODsuper->constructor.
max_speed=30.
me->name=name.
ENDMETHOD.
METHODstatus~write.
DATAid.
id=me->get_id().
WRITE:/name,'isvessel',id,
'andhasspeed',speed.
ENDMETHOD.
METHODdrive.
speed=speed+speed_up.
IFspeed>max_speed.
max_speed=0.
speed=0.
RAISEEVENTemergency_call.
ENDIF.
ENDMETHOD.
ENDCLASS.
*---------------------------------------------------------------------*
*CLASScoast_guardDEFINITION
*---------------------------------------------------------------------*
*Eventhandlerdefinition*
*---------------------------------------------------------------------*
CLASScoast_guardDEFINITION.
PUBLICSECTION.
INTERFACESstatus.
METHODSreceiveFOREVENTemergency_callOFshipIMPORTINGsender.
ALIASESwriteFORstatus~write.
PRIVATESECTION.
DATAcallerTYPEstring.
ENDCLASS.
*---------------------------------------------------------------------*
*CLASScoast_guardIMPLEMENTATION
*---------------------------------------------------------------------*
*Eventhandlerimplementation*
*---------------------------------------------------------------------*
CLASScoast_guardIMPLEMENTATION.
METHODstatus~write.
IFcallerISINITIAL.
WRITE:/'Coastguardreceivednocall'.
ELSE.
WRITE:/'Coastguardreceivedacallfrom',caller.
ENDIF.
ENDMETHOD.
METHODreceive.
caller=sender->name.
CALLMETHODwrite.
ENDMETHOD.
ENDCLASS.
*---------------------------------------------------------------------*
*CLASSmainDEFINITION
*---------------------------------------------------------------------*
*Mainclassdefinition*
*---------------------------------------------------------------------*
CLASSmainDEFINITION.
PUBLICSECTION.
CLASS-METHODS:start,
objects,
inheritance,
interfaces,
events.
ENDCLASS.
*---------------------------------------------------------------------*
*CLASSmainIMPLEMENTATION
*---------------------------------------------------------------------*
*Mainclassimplementation*
*---------------------------------------------------------------------*
CLASSmainIMPLEMENTATION.
METHODstart.
CALLSELECTION-SCREEN100STARTINGAT103
ENDINGAT427.
IFsy-subrcNE0.
EXIT.
ELSEIFbutton1='X'.
CALLMETHODobjects.
ELSEIFbutton2='X'.
CALLMETHODinheritance.
ELSEIFbutton3='X'.
CALLMETHODinterfaces.
ELSEIFbutton4='X'.
CALLMETHODevents.
ENDIF.
ENDMETHOD.
METHODobjects.
DATA:vessel1TYPEREFTOvessel,
vessel2TYPEREFTOvessel.
DATA:vessel_idTYPEi.
CREATEOBJECT:vessel1TYPEvessel,
vessel2TYPEvessel.
CALLMETHOD:vessel1->drive(50),
vessel2->drive(80).
vessel_id=vessel1->get_id().
WRITE:/'VesselIDis',vessel_id.
vessel_id=vessel2->get_id().
WRITE:/'VesselIDis',vessel_id.
ENDMETHOD.
METHODinheritance.
DATA:vesselTYPEREFTOvessel,
shipTYPEREFTOship.
CREATEOBJECTshipTYPEshipEXPORTINGname='Titanic'.
CALLMETHODship->drive(20).
MOVEshipTOvessel.
CALLMETHODvessel->drive(10).
CALLMETHODship->status~write.
ENDMETHOD.
METHODinterfaces.
DATA:status_tabTYPETABLEOFREFTOstatus,
statusTYPEREFTOstatus.
DATA:shipTYPEREFTOship,
stationTYPEREFTOcoast_guard.
CREATEOBJECT:shipEXPORTINGname='Titanic'.
APPENDshipTOstatus_tab.
CREATEOBJECTstation.
APPENDstationTOstatus_tab.
LOOPATstatus_tabINTOstatus.
CALLMETHODstatus->write.
ENDLOOP.
ENDMETHOD.
METHODevents.
DATA:shipTYPEREFTOship,
stationTYPEREFTOcoast_guard.
CREATEOBJECT:shipEXPORTINGname='Titanic',
station.
SETHANDLERstation->receiveFORship.
DO5TIMES.
CALLMETHODship->drive(10).
ENDDO.
ENDMETHOD.
ENDCLASS.
*---------------------------------------------------------------------*
*SystemeventSTART-OF-SELECTION
*---------------------------------------------------------------------*
*TriggeredbytheABAPruntimeenvironmentautomatically*
*---------------------------------------------------------------------*
START-OF-SELECTION.
CALLMETHODmain=>start.
*---------------------------------------------------------------------*
相关推荐
在 ABAP Objects、RAP 与 ABAP Cloud 时代,如何正确使用 Function Module 与 Subroutine
摘要 在ABAP开发中,Function Module和Subroutine曾是结构化编程的核心,但随着面向对象编程(OOP)的普及,它们已演变为技术适配层而非业务逻辑载体。现代ABAP开发应遵循核心原则:能用Method就不在Procedure中实现业务逻辑。Function Module仍适用于RFC远程调用、Update Task异步处理等特定场景,但应仅作为技术入口包装类方法。Subroutine的使用更需谨慎,仅用于必须依赖特定语句(如ON COMMIT回调)的场景,同样应封装为对类方法的调用。这
【VC基础】 5、对象相关性(Object Dependencies)
对象相关性(Object Dependencies) 对象相关性的创建与分配 1、创建对象相关性 事务代码:CU01 之前我们在CS01中直接双击OD维护创建的对象相关性是局部的(系统会自动给号),只限于该BOM中使用,那么创建一个全局的对象相关性就需要用到CU01(可以外部手动给号)。 在“相关性编辑器”中按照语法要求维护好之后保存即可。 2、分配对象相关性 事务代码:CS02 需要在BOM中使用的时候直接分配即可(附加→对象相关性→分配)。...
COMMIT WORK 背后的真相:在 ABAP Object Services 里正确保存 Persistent Objects
摘要:ABAP中COMMIT WORK在Persistent Objects场景下的作用远超简单提交。它触发Persistence Service将对象变更打包注册到Update Task,并在提交后使对象失效。文章解析了该机制如何与SAP LUW协同工作,以及对象失效(INVALIDATE)的原因。同时指出在兼容模式下显式COMMIT WORK的必要性,并强调在OData服务等场景中需注意提交后重新加载对象的重要性。
SAP|Dependency Syntax: General Rules 相关性语法规则
参考资料: https://help.sap.com/doc/saphelp_aii710/7.1/en-US/d8/fa9bd49ede11d1903b0000e8a49aad/frameset.htm Dependency Syntax: General Rules相关性语法规则 AND Two statements that are both either true ornot true are linked with AND. 两个同时为真或不为真的语句用AND关联。 Length .
在 ABAP 生态里把 Encapsulation 做到极致:从 ABAP Objects 到 SAP Gateway、RAP、CAP 的可维护性工程
本文探讨了ABAP项目中封装原则的重要性与实践方法。传统ABAP过程式编程中全局变量和表单的滥用会导致维护成本激增,而面向对象中的封装机制能有效解决这一问题。文章提出了ABAP封装的三个核心工具:可见性分区(PUBLIC/PROTECTED/PRIVATE)、受控对象创建(CREATE PRIVATE)和继承控制(FINAL类)。重点分析了公共接口设计原则,建议将公共方法作为能力暴露而非公共属性,并详细说明了READ-ONLY属性的使用边界。通过销售订单业务对象的代码示例,展示了如何实现受控创建、工厂方法和
ABAP 里最接近 JavaBean 的概念,是一类带封装属性和访问方法的 ABAP Objects 类
在 ABAP 里讨论 JavaBean,不能直接找一个一模一样的语法关键字。更准确的答案是,最接近 JavaBean 的,是一个普通的 ABAP Objects 类,它用保存对象状态,用暴露get_...和set_...方法,让外部代码通过方法读写属性,而不是直接改内部数据。这个答案看起来很朴素,但放到真实 SAP 开发里,它其实能解释很多老项目和新项目之间的差异。Java 世界里的 JavaBean,长期以来是一种约定,而不是一种特殊语法。
非法修改系统中的程式
今天给大家提供两个非法修改系统程式的方法,比较实用。对于ABAPer,有时在写程式时总会遇到反复测试的问题,可是在DEV中,数据会不全,测不出效果。在QAS上测每次都要请BASIS传请求号到QAS,反反复复大家都不方便。用下面的...
让枚举成为业务规则的护栏:ABAP Enumerated Objects 从语法到序列化的全景指南
文章摘要:本文深入解析了ABAP中的枚举对象(Enumerated Objects)及其在项目开发中的实际应用。枚举对象通过将允许值集合转化为类型系统约束,有效解决了魔法数字、状态码分散等问题。文章详细介绍了枚举类型的三种形态(变量、常量、结构组件),并通过订单查询接口案例展示了其在接口参数硬约束中的优势。同时阐述了枚举对象的操作规则、赋值语义和比较原则,强调应避免将其当作基础类型使用。最后指出枚举类型可传播到过程边界,为ABAP开发提供了一种类型安全的解决方案。
SAP HANA中一些重要的系统表或视图(2)——查询依赖关系
此视图提供了如何在HANA中查询相关的查询依赖关系,解决“我想要知道我的视图用了哪些模型底表”和“我想要知道我的底表被哪些模型用了”
用 ABAP Shared Objects 打造高性能共享缓存:锁机制、适用场景与封装实践
摘要:ABAP中的Shared Objects提供了一种带锁语义的共享内存对象模型,主要用于解决高并发读取和跨会话数据共享问题。其核心价值在于让大量会话安全读取同一份数据,同时控制写入一致性。文章指出Shared Objects最适合两类场景:少写多读的共享数据集(如配置数据)和长期存在的业务态数据(如购物车)。为避免误用,建议采用Loader与Broker模式进行封装,统一管理共享内存访问、锁策略和权限控制。通过产品目录案例展示了如何工程化实现Shared Buffer模式,强调封装层对提升系统稳定性的关
在 ABAP Objects 里读懂自我:自引用 me 的语义、陷阱与工程化用法
本文深入解析SAP ABAP中的自引用me机制。me是ABAP在实例方法中隐式创建的局部引用变量,始终指向当前执行方法的对象实例。文章从基础概念出发,阐述了me的静态类型特性及其在继承、多态中的行为表现,特别强调了构造阶段me的特殊限制。通过实例分析同名变量冲突、Gateway和RAP框架中的工程实践,展示了me在提升代码可读性、避免歧义方面的重要价值。文中还介绍了me在链式调用等高级用法中的应用,为ABAP开发者提供了全面而实用的指导。
【转载】START-OF-SELECTION
START-OF-SELECTION Syntax 语法 START-OF-SELECTION. Effect 作用 This event keyword defines an event block whose event is triggered by the ABAP runtime environment when calling the executable program selection screen processing of a selection screen. 这个事件关键字.
实测OV5640 DVP/MIPI接口720p@60fps配置,为什么我的Zynq-7020开发板只有30帧?
本文深入解析了OV5640摄像头在Zynq-7020开发板上帧率减半的问题,从寄存器配置到硬件链路进行全面排查。重点分析了DVP/MIPI接口的720p@60fps配置,提供了关键寄存器设置、时序参数调整及硬件带宽验证方法,帮助开发者快速定位并解决帧率下降问题。
测试驱动开发与ABAP Objects资源下载
测试驱动开发与ABAP Objects资源下载 去发现同类优质开源项目:https://gitcode.com/ 欢迎来到我们的资源下载仓库!这里为您提供了《测试驱动开发与ABAP Objects》的学习资料压缩包,文件名为“Test-Driven Development with ABAP Objects.zip”。 此压缩文件包含了SAP Press出版的相关文档,旨在帮助ABAP开发者深入理...
R语言安装包镜像报错?5分钟教你快速切换国内镜像源(含清华/阿里云配置)
本文详细介绍了R语言安装包镜像报错的解决方案,包括如何快速切换国内镜像源(如清华、阿里云等),解决'无法读写貯藏處索引'等常见问题。通过图形界面和命令行两种方式,帮助用户高效配置镜像源,提升R语言包安装速度与稳定性。
[ESP32S3N16R8][LVGL8.3.0][IDF5.2.3]ST7701S RGB屏幕驱动[vscode最详细配置]
ST7701S ESP32S3 基于ESP-IDF5.2.3编写,编程环境为vscode。本教程详细讲述了esp32s3配置st7701s屏幕驱动以及gt911触摸驱动并关联到lvgl8.3.0,使用IDF5.23示例rgb_panel进行测试删除了其里面的屏幕驱动,改为单独编写屏幕和触摸驱动,最后完成了实列。
Multiple ALVs on Single Screen Using ABAP Objects
Keywords ABAP, ALV, Splitter, Custom Controller,Double click event of ALV Introduction There aremany situations in which one needs to display multiple ALV’s in a single Report.In such a situation
开启虚拟人物互动新时代:探索相芯Avatar SDK驱动功能(Android)
相芯SDK提供了男孩和女孩Avatar驱动模型,这些模型具备半身驱动和全身驱动的功能,使得虚拟角色能够根据用户的面部表情和动作实时模仿和响应。半身驱动功能: 相芯SDK的男孩和女孩Avatar驱动模型具备上身驱动功能,即能够通过用户的面部表情和动作来驱动虚拟角色的上半身行为。这意味着用户的面部表情、头部转动和上半身姿态等动作可以直接映射到虚拟角色上,使得虚拟角色能够栩栩如生地模仿用户的动作。例如,用户微笑时,虚拟角色会展现出笑容;用户转动头部时,虚拟角色也会相应地转动头部。
ABAP Objects: Overriding (Redefinition)
Lets check out how we can implement Overriding in ABAP Objects. This is also known as the Redefinition of the method. When do we need to use the Overriding: Overriding is useful, when we want to
Quanto option期权公式推导(更新中)
Quanto期权不同于以标的股票或资产的计价货币支付最终收益的普通欧式期权,它以另一种货币以预先确定的汇率支付最后的收益。以股票B的计价货币来计价的quanto看涨期权的收益为F0×max(Sa(T)−K,0)×Sb(T)F_0 \times \max(S_a(T)-K, 0) \times S_b(T)F0×max(Sa(T)−K,0)×Sb(T) 其中SaS_aSa以货币A计价,SbS_bSb以货币B计价,F0F_0F0是预先固定的汇率. 假设上述股票均遵循几何布朗运动,可以得到以下恒等式
高德地图API如何使用
通过以上步骤,您可以成功接入并使用高德地图API来为您的应用添加丰富的地图功能。
abap TRINT_OBJECTS_CHECK_AND_INSERT
TRINT_OBJECTS_CHECK_AND_INSERT ,进入断点 把 ct_ko200 内表数据清空,可以编辑无法编辑的程序。
解决QT5调用软键盘qvirtualkeyboard时崩溃问题ime_pinyin::MatrixSearch::init_user_dictionary
但是偶尔也会出现问题,譬如,我这边在Arm系统上跑着程序的时候,点击用户编辑框,输入法弹出,但是再次点击密码输入框,连程序都给我崩溃了。只是提示错误:void ime_pinyin::MatrixSearch::init_user_dictionary。首先确保你的Arm版QT库已经编译了软键盘,位置有时候就和lib同级目录,qtvirtualkeyboard。QT5中的软键盘qvirtualkeyboard很好用,很多人开发嵌入式端应用的时候都会用到。此外还有很多其他的输入法字典,像。
ABAP Objects
ABAP Objects ABAP Objects既指整个ABAP的运行环境,也指ABAP语言中新增的面向对象部分。学习OO,主要是因为SAP自带的程序很多是OO编写的,看不懂,感觉深入学习ABAP必须掌握OO。REPORT Z_XP_LEARN .class application definition. public section.methods show_text.priv
YOLOv8 Neck改进:BiFPN双向特征金字塔网络解析与实践
本文详细介绍了如何在YOLOv8中集成BiFPN双向特征金字塔网络,包括原理解析、代码实现、配置文件修改和性能分析。BiFPN通过双向特征融合和加权特征机制,显著提升了多尺度目标检测的性能。希望通过本文的讲解,大家能够深入理解BiFPN的工作原理,并成功将其应用到自己的目标检测项目中。如果你有任何问题或建议,欢迎在评论区留言讨论!在下一篇文章中,我们将探讨YOLOv8的其他改进技术,包括注意力机制、新的损失函数等,敬请期待!
Outlook Express 6 (OE6) for Win7/Win8/Win10
英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。
2066



被折叠的 条评论
为什么被折叠?



