第一步:安装 SAP NetWeaver 的 ABAP 开发工具 (ADT)
开发工具下载地址:https://tools.hana.ondemand.com/#abap
也可以在SAP Development Tools下载工具页面直接跳转到对应公开课教程页面,按课程步骤下载eclipse解压安装即可,过程简单这里不赘述,如下图选择Eclipse IDE for Java Developement。
PS:现在最新的 Eclipse 软件包与 Eclipse Temurin 捆绑在一起Eclipse Temurin 是 Eclipse Adoptium 项目提供的OpenJDK 二进制发行版。不使用系统上找到的任何其他JRE。如果您想要删除捆绑的 JRE 并使用自定义 JRE,请参阅 SAP note 3035242。
Eclipse 安装完成后打开运行,选择对应的项目默认文件的存储目录
点击Help->Install New Software,
输入https://tools.hana.ondemand.com/latest,选择ADT,按步骤操作完成后,重启软件。
重启后,点击切换开发视图到ABAP开发环境视图。
打开如下所示即安装完成,如果需要安装Abapgit,大家可以参考公开课的教程安装。
第二步:创建一个ABAP项目
这个可以理解为SAP GUI配置DEV系统的连接。可以点击File->New->ABAP Project
跳转到如下界面,可以直接新建,也可以用SAPGUI中已有的地址
填写完成,点击Next,输入账号密码,点击Finish
ADT加载对应系统信息,配置即完成。
第三步,创建简单的CDS
选择开发包,这里选择本地包,点击右键,选择新建,选择CDS的定义。
如下输入,CSD的名称和描述。参考对象这里为可选项,理解为数据的来源。右侧的帮助文档按F1即可显示。
点击下一步,这里为选择请求号,示例为本地包,不传输,所以不选择
点下一步,选择模板。
这里要注意:基于DDIC((Data Dictionary,简称DDIC)的CDS 已经被弃用了,采用基于实体(CDS View Entity)
两者的区别
推荐:两者的区别
点击保存后,写入DDL代码
@AbapCatalog.viewEnhancementCategory:[#PROJECTION_LIST]
@AccessControl.authorizationCheck:#NOT_REQUIRED
@EndUserText.label:'预留行项目信息查询'
@Metadata.ignorePropagatedAnnotations:true
@ObjectModel.usageType:{
serviceQuality:#X,
sizeCategory:#S,
dataClass:#MIXED
}
defineviewentityZ_RESB_ITEMSasselectfromresb
{
keyrsnumasRsnum,
keyrsposasRspos,
keyrsartasRsart,
bdartasBdart,
rsstaasRssta,
xloekasXloek,
xwaokasXwaok,
kzearasKzear,
xfehlasXfehl,
matnrasMatnr,
werksasWerks,
lgortasLgort,
prvbeasPrvbe,
chargasCharg,
plplaasPlpla,
sobkzasSobkz,
bdterasBdter,
@Semantics.quantity.unitOfMeasure:'Meins'
bdmngasBdmng,
meinsasMeins,
wtysc_clmitemasWtyscClmitem
}
点击激活,然后执行。
创建程序,调用CDS展示。
class lcl_main definition create private.
public section.
class-methods create
returning
value(r_result) type ref to lcl_main.
methods run.
protected section.
private section.
endclass.
class lcl_main implementation.
method create.
r_result = new #( ).
endmethod.
method run.
cl_salv_gui_table_ida=>create_for_cds_view( 'Z_RESB_ITEMS' )->fullscreen( )->display( ).
endmethod.
endclass.
start-of-selection.
*class methods called using =>,instance methonscalled using ->
lcl_main=>create( )->run( ).