第1步:下载,安装并启动Eclipse IDE
ABAP开发是在Eclipse IDE中使用自定义ABAP工具完成的。如果您尚未安装Eclipse,请下载适用于Java开发人员的Eclipse IDE,然后立即安装并启动该应用程序。
第2步:为SAP NetWeaver(ADT)安装ABAP开发工具
- 在Eclipse菜单栏中,选择:帮助>安装新软件...
- 在对话框中添加URL https://tools.hana.ondemand.com/neon(例如Eclipse Neon 4.6)
- 按Enter显示可用的功能
- 选择适用于SAP NetWeaver的ABAP开发工具,然后单击下一步
- 在下一个向导页面上,您将看到要安装的功能的概述。点击下一步
- 确认许可协议,然后单击完成开始安装
- 第3步:切换视角
- 单击Open Perspective按钮或使用菜单:Window> Open Perspective> Other切换到ABAP透视图。
- 第4步:关闭欢迎页面
- 欢迎页面可能会出现。它给出了关于Eclipse的一些一般信息。点击工作台按钮离开欢迎页面。
- 第5步:选择ABAP透视图
- 点击Open Perspective按钮。
- 然后通过在列表中选择ABAP并单击确定按钮切换到ABAP透视图。
- 第6步:熟悉工具布局
- 在ABAP透视图中,ABAP工具理想地位于IDE中,以便于开发任务。不过,您可以根据自己的需要自由重新排列所有视图和编辑。
- 第7步:新的ABAP项目
- 打开文件菜单,选择新建,然后点击ABAP项目。从SAP系统连接列表中选择ABAP后端系统,然后按下一步按钮。
- 第8步:选择连接设置
- 在连接设置对话框中单击下一步。
- 第9步:输入您的登录数据
- 在下一个屏幕上输入您的登录数据并单击完成按钮。
第10步:创建项目
ABAP项目已创建。它表示与您选择的SAP系统的系统连接。
显示数据库内容并运行SQL查询
你将学习
在本教程中,您将学习如何使用数据预览来显示表和视图的内容,以及如何使用SQL控制台执行临时SQL查询。
本教程从SAP NetWeaver Demo样本EPM模型的表格开始(您可以在SAP Community NetWeaver企业采购模型 - 简介中找到详细信息 ),因此您可以在任何SAP NetWeaver 7.5系统上重复教程。
第1步:打开数据预览
在Eclipse中,单击或使用键盘快捷键Alt+F8执行ABAP开发对象。您将“执行”数据库表snwd_so_inv_item。这将打开数据预览,这将允许您浏览EPM模型中的发票项目。
第2步:选择一个数据库表
snwd_so_inv_item在搜索字段中输入。一旦搜索结果已经传递或者表格已经在历史列表中,点击条目** SNWD_SO_INV_ITEM**。点击确定打开数据预览。
第3步:数据预览
在数据预览中单击选择列以更改从数据库中检索哪些字段。
第4步:选择列
首先点击取消全选。只选择字段GROSS_AMOUNT和CURRENCY_CODE。点击确定确认您的选择。
数据预览会相应地刷新。
第5步:添加一个过滤器
按添加过滤器并选择CURRENCY_CODE。
第6步:输入过滤条件
USD在文本字段中输入以过滤美元的项目并按Enter键。
数据预览会相应地刷新。
第7步:打开SQL控制台
单击SQL控制台按钮以打开SQL控制台。
第8步:初始化SQL SELECT语句
SQL控制台显示SELECT用于检索数据预览数据的语句。在以下步骤中,您将调整SELECT报表以读取订单的付款状态和买方的公司名称。
第9步:添加JOIN条件
调整SQL控制台中的SELECT语句,以通过执行以下操作来从订单标题中获取付款状态:JOIN为表添加条件snwd_so_inv_head
注意:您可能会遇到错误。你会在下一步中解决这个问题。
FROM查询的部分应该如下所示:
复制代码
SNWD_SO_INV_ITEM join SNWD_SO_INV_HEAD
on SNWD_SO_INV_ITEM~parent_key = SNWD_SO_INV_HEAD~node_key
第10步:更新WHERE子句
修改WHERE子句以匹配以下内容:
复制代码
SNWD_SO_INV_ITEM~CURRENCY_CODE = 'USD'
第11步:将字段添加到SELECT列表
payment_status将表中的字段添加snwd_so_inv_head到SELECT列表中。
第12步:运行查询
单击运行以执行当前查询或按F8键。
第13步:检查查询结果
检查右侧的输出是否包含付款状态。
第14步:调整SELECT语句
再次调整SELECT语句以snwd_bpa通过添加表的JOIN条件从表中检索公司名称snwd_bpa。
复制代码
join SNWD_BPA
on SNWD_SO_INV_HEAD~buyer_guid = SNWD_BPA~node_key
步骤15:添加公司名称字段
company_name将表中的字段添加snwd_bpa到SELECT列表中。
复制代码
SNWD_BPA~company_name,
SNWD_SO_INV_ITEM~GROSS_AMOUNT,
SNWD_SO_INV_ITEM~CURRENCY_CODE,
SNWD_SO_INV_HEAD~PAYMENT_STATUS
第16步:添加一个order by子句
添加一个ORDER BY条款按照买方的公司名称对结果进行排序。
复制代码
ORDER BY SNWD_BPA~company_name
第17步:运行修改后的查询
单击运行以执行当前查询或按F8。
第18步:查看更新的结果
检查右侧的输出是否包含公司名称。您稍后将重复使用此SELECT语句在ABAP类中进行数据检索。所以只需保持SQL控制台处于打开状态
创建并运行ABAP应用程序
根据样本EPM数据模型中的表创建并运行ABAP应用程序。
你将学习
在本教程中,您将学习如何基于SAP NetWeaver Demo样本EPM模型的表创建和运行ABAP应用程序(SAP社区中的详细信息)SAP NetWeaver企业采购模型 - 介绍,因此您可以在任何SAP上重申本教程NetWeaver 7.5系统。
第1步:创建新的ABAP程序
一个。创建全球数据字典(“DDIC”)结构:在工具栏中,选择新图标,然后选择ABAP程序...:
向导似乎创建一个新的ABAP程序。z_invoice_items_euro
在名称字段中输入。在描述字段中输入一个有意义的文本。点击完成创建报告。
之后会打开一个编辑器,显示空白报告。
第2步:创建ABAP本地类
键入lcl并按下Ctrl+Space即可获取代码完成建议。通过双击选择用于插入本地类的代码模板,lcl - Local class或者Enter如果已经选择了正确的条目,请按。
调整本地类的名称以lcl_main使用内联编辑。
第3步:创建CREATE方法
将光标定位在类定义语句中,然后按Ctrl + 1打开快速修复菜单。双击Generate factory method create来创建静态工厂方法。
第4步:执行RUN方法
一个。添加额外的实例方法的定义运行输入methods run.公共部分。
湾 然后将光标定位在方法名称上,然后按Ctrl + 1打开Quick-Fix菜单。双击运行添加实施。
在方法运行中实现一个简单的WRITE语句。
第5步:使ABAP程序可以运行
一个。在您的报告中添加START-OF-SELECTION事件
b。创建本地类的实例lcl_main。
C。调用run方法。
即,输入以下代码:
复制代码
START-OF-SELECTION.
lcl_main=>create( )->run( ).
第6步:保存并激活ABAP程序
单击工具栏上的保存并激活按钮,保存并激活您的程序。
第7步:运行ABAP程序
按F8运行您的程序。嵌入式SAP GUI将在Eclipse编辑器中打开。检查报告的输出后,单击关闭图标关闭选项卡。
创建一个新的数据字典结构
您将学习如何创建数据字典结构
第1步:创建全局数据字典结构
现在您将创建一个全局数据字典(“DDIC”)结构:在工具栏中,选择New图标,然后选择Other ...:
第2步:过滤对象类型的列表
在出现的向导中,通过输入过滤ABAP存储库对象类型列表**struct**。
第3步:输入名称和说明
然后输入以下内容并选择完成。
•名称= •说明=例如发票项目结构ZSO_INVOICE_ITEM
打开一个新的文本编辑器,显示新创建的数据字典结构的内容。
第4步:删除生成的组件
component_to_be_changed从结构中移除生成的示例组件:
第5步:为结构定义字段
在该项目的结构中,定义的字段company_name,amount,currency_code,和payment_status,如下所示:
复制代码
company_name : snwd_company_name;
amount : snwd_ttl_gross_amount;
currency_code : snwd_curr_code;
payment_status : snwd_soi_payment_status_code;
编辑器显示语法错误,因为数量尚未绑定到货币代码。
第6步:绑定金额代码注释
将金额绑定到货币代码:
a。在字段前添加一个新行,通过输入Ctrl +空格来amount添加@并打开代码完成。显示所有可能的注释列表。
湾 选择注释@Semantics.amount.currencyCode。
C。再次触发代码完成:: '在之后输入@Semantics.amount.currencyCode,然后选择Ctrl +空格,然后选择注释zso_invoice_item.currency_code:
d。最后选择保存(Ctrl + S)
你不应该再有这个语法错误。
步骤7:检查并激活结构
回到结构中ZSO_INVOICE_ITEM,选择检查ABAP开发对象(Ctrl + F2)。然后选择激活(Ctrl + F3)。
数据字典结构ZSO_INVOICE_ITEM现在被激活。
你的代码应该是这样的:
复制代码
@EndUserText.label : 'Invoice Item Structure'
@AbapCatalog.enhancementCategory : #NOT_EXTENSIBLE
define type zso_invoice_item {
company_name : snwd_company_name;
@Semantics.amount.currencyCode : 'zso_invoice_item.currency_code'
amount : snwd_ttl_gross_amount;
currency_code : snwd_curr_code;
payment_status : snwd_soi_payment_status_code;
}
创建一个全局ABAP类
您将学习如何创建一个全局的ABAP类,其中您将从数据库中检索数据。
先决条件
开发环境: ABAP开发工具,AS ABAP 7.50或更高版本
你将学习
在之前的教程中,您学习了如何:
1. 创建并运行ABAP程序
2. 显示数据库内容并运行SQL查询
3. 创建ABAP数据字典结构
现在,您将把所有这些放在一起:在ABAP程序中,您将:
- 创建一个全局类
- ...使用数据预览和SQL工具从后端检索数据
- ...然后使用ABAP结构作为类型返回参数。
将数据检索逻辑封装在全局ABAP类中,使您能够正确分离关注点并熟悉更广泛的工具集。
最后,您将学习如何在SAP列表查看器(“ ALV Grid
”)中显示数据。
第1步:打开您的ABAP程序
首先,打开你ZSO_INVOICE_ITEMS_EURO
在上一篇教程中创建的ABAP程序,创建并运行一个ABAP应用程序。
第2步:删除WRITE语句
在程序中ZSO_INVOICE_ITEMS_EURO,删除WRITE语句:通过将光标放在WRITE语句的某处并选择Ctrl + D来删除整行:
第3步:创建全球课程
现在创建数据检索的全局类:
一个。在run方法中,创建一个类型的局部变量zcl_invoice_retrieval:
data: invoices type ref to zcl_invoice_retrieval。
湾 由于这个类还不存在,你会得到一个语法错误。要创建班级,请将光标放在班级名称上,然后通过选择Ctrl + 1打开快速帮助。在快速帮助菜单中,双击创建全局类zcl_invoice_retrieval:
C。将出现一个向导来创建一个新的ABAP类。输入:
- 名称- 说明发票检索ZCL_INVOICE_RETRIEVAL
d。选择完成:
将会打开一个新编辑器,显示您创建的课程,ZCL_INVOICE_RETRIEVAL。
第4步:检查语法
如有必要,请返回到您的程序并使用键盘快捷键触发语法检查Ctrl+F2。
语法错误不应再发生。
第5步:实例化类
仍然在你的程序中,zcl_invoice_retrieval使用new运算符创建一个类的实例:
第6步:创建一个获取数据库记录的方法
要从数据库中读取记录,您需要调用一个方法get_items_from_db。
该方法尚不存在,所以我们将使用快速辅助创建它,如下所示:
一个。仍然在你的程序中,输入一个方法调用:
invoices->get_items_from_db
湾 由于该方法不存在,您将收到错误。将光标定位在缺失方法的名称上,然后选择快速辅助(Ctrl+1)。在快速帮助菜单中,选择创建方法get_items_from_db
C。在出现的Create class向导中,只需选择Finish,创建一个不带参数的公共方法:
在该类中ZCL_INVOICE_RETRIEVAL,快速辅助创建:
- 方法定义
- 空方法实现:
第7步:添加方法实现
在以前的教程(显示数据库内容和运行SQL查询)中,您SELECT
使用SQL控制台生成了一条语句。使用SQL控制台的优点是,您可以通过定义子句来减少错误 - 就像JOIN, WHERE, or ORDER BY
- 只需操作数据预览即可。SQL控制台会自动为您生成正确的SELECT语句。
您现在将SELECT
在您的类中使用此生成的语句从数据库检索数据。
注意:我们强烈建议您通过完成此前的教程来了解SQL控制台。但是,如果您不再打开SQL控制台,则可以简单地将以下SELECT
语句复制到方法实现中(请参阅下面的步骤c)。
一个。回到SQL控制台:
湾 调整查询部分的大小并使用快捷键Ctrl + C复制Open SQL语句:
C。现在,在你的类中ZCL_INVOICE_RETRIEVAL
,将语句粘贴到get_items_from_db
(使用Ctrl + V)的方法实现中:
来自SQL控制台的代码应该如下所示。请注意,SQL控制台查询部分自动添加INTO子句INTO TABLE @DATA(LT_RESULT)
:
复制代码
SELECT
SNWD_BPA
~COMPANY_NAME
,
SNWD_SO_INV_ITEM
~GROSS_AMOUNT
,
SNWD_SO_INV_ITEM
~CURRENCY_CODE
,
SNWD_SO_INV_HEAD
~PAYMENT_STATUS
FROM
SNWD_SO_INV_ITEM
JOINSNWD_SO_INV_HEAD
ONSNWD_SO_INV_ITEM
~PARENT_KEY
=SNWD_SO_INV_HEAD
~NODE_KEY
JOINSNWD_BPA
ONSNWD_SO_INV_HEAD
~BUYER_GUID
=SNWD_BPA
~NODE_KEY
WHERE
SNWD_SO_INV_ITEM
~CURRENCY_CODE
='USD'
ORDER
BY
SNWD_BPA
~COMPANY_NAME
INTO
TABLE
@DATA
(LT_RESULT
).
UP
TO
100
ROWS.
该声明UP TO 100 ROWS
将导致错误。你将在下一步中解决这个问题。
第8步:格式化代码
现在您可以格式化(即“漂亮打印”)源代码:打开“ 源”菜单并选择“ 格式”。(或者,您可以使用快捷键Shift + F1)。
如果你想指定你的格式设置,你可以在项目的属性中做到这一点。在项目浏览器中右键单击项目并选择属性。
一个。删除添加UP TO 100 ROWS。
湾 要使SELECT语句更具可读性,请在JOIN条件中添加一些换行符:
第9步:显式声明局部变量
在前面的教程(创建结构)中,您创建了一个ABAP数据字典结构。现在,你将使用这个结构:
首先,我们将lt_result
明确声明一个局部变量。然后,使用这个结构,我们将定义类型。您的方法的返回参数get_items_from_db
。
一个。首先将光标置于内联声明的变量上,lt_result
然后通过选择Ctrl + 1打开Quick Fix :
湾 lt_result
通过双击快速修复菜单,选择显式声明本地变量:
这将创建一个引用本地类型的本地变量,并自动生成以下代码:
```ABAP
类型:开始为helper_type,
company_name TYPE snwd_bpa-company_name,
gross_amount TYPE snwd_so_inv_item-gross_amount,
currency_code TYPE snwd_so_inv_item_ currency_code,
payment_status TYPE snwd_so_inv_head-payment_status,
结束的helper_type。
DATA:lt_result类型标准表helper_type.`
```
它也取代INTO TABLE @DATA(lt_result)
了INTO TABLE @lt_result
第10步:用Dictionary结构替换helper_type
在接下来的步骤中,您将使用helper_type
您创建的数据字典结构(在前面的教程创建ABAP数据字典结构中)替换本地类型。
仍然在发票检索类的编辑器中ZCL_INVOICE_RETRIEVAL
:
a。在该方法中get_items_from_db
,将变量的类型更改lt_result
为以下标准表格zso_invoice_item
:
湾 删除本地类型helper_type
:
第11步:声明局部变量作为返回参数
你的方法仍然不会返回任何数据。因此,您将使用另一个Quick Assist将本地变量转换为返回参数 - 以便您可以从程序中访问结果:
一个。为此,请将光标置于变量上lt_result并通过输入Ctrl + 1来获得快速辅助。
湾 选择转换lt_result为返回参数:
请注意,返回的参数已添加到方法中,并生成了基于结构的附加表类型:
第12步:保存并激活你的类
保存(Ctrl + S)和激活(Ctrl + F3)你的类。
第13步:在程序中使用返回参数
现在,在您的程序中,声明一个内联声明的变量data(invoice_items),以接收返回参数的结果,invoices->get_items_from_db( )如下所示:
第14步:生成ALV网格
最后,您可以ALV Grid使用该类将发票项目显示为SAP列表查看器(“ ”)cl_salv_table。
在你的程序中,ZSO_INVOICE_ITEMS_EURO:
a。cl_salv_table=>通过输入Ctrl +空格键
b来输入并获取代码完成建议。选择静态方法factory并...
c。按Shift + Enter键插入方法调用的完整签名:
如果您希望默认插入完整签名,则可以在首选项中更改代码完成的行为。在菜单中选择窗口并点击首选项。在“首选项”对话框中,在过滤器字段中输入代码完成,或者打开以下路径ABAP开发>编辑器>源代码编辑器>代码完成。在代码完成设置中,您可以激活复选框以完成时始终插入完整签名。
步骤15:改编ALV Grid工厂方法
在您生成的方法调用中:
一个。list_display, r_container, and container_name使用快捷键Ctrl + D删除注释的导出参数
湾 取消对导入参数r_salv_table使用快捷按Ctrl + 7和手动内嵌变量分配alv_table给它
C。将变量分配invoice_items给变化的参数t_table
d。然后调用的显示方法ALV_TABLE:alv_table->display( ):
你的方法应该是这样的:
复制代码
cl_salv_table=>factory(
IMPORTING
r_salv_table = data(alv_table)
CHANGING
t_table = invoice_items ).
alv_table->display( ).
第16步:检查你的代码
你的程序代码应该如下所示:
复制代码
*&---------------------------------------------------------------------*
*& Report z_invoice_items_euro
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_invoice_items_euro.
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.
create object r_result.
endmethod.
method run.
data: invoices type ref to zcl_invoice_retrieval.
invoices = new ZCL_INVOICE_RETRIEVAL( ).
data(invoice_items) = invoices->get_items_from_db( ).
cl_salv_table=>factory(
IMPORTING
r_salv_table = data(alv_table)
CHANGING
t_table = invoice_items ).
alv_table->display( ).
endmethod.
endclass.
start-of-selection.
lcl_main=>create( )->run( ).
你的班级代码现在应该如下所示:
复制代码
CLASS zcl_invoice_retrieval DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES: ty_table_of_zso_invoice_item TYPE STANDARD TABLE OF zso_invoice_item WITH DEFAULT KEY.
METHODS get_items_from_db
RETURNING
VALUE(lt_result) type ty_table_of_zso_invoice_item.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_invoice_retrieval IMPLEMENTATION.
METHOD get_items_from_db.
SELECT
snwd_bpa~company_name,
snwd_so_inv_item~gross_amount,
snwd_so_inv_item~currency_code,
snwd_so_inv_head~payment_status
FROM
snwd_so_inv_item
JOIN snwd_so_inv_head ON snwd_so_inv_item~parent_key = snwd_so_inv_head~node_key
JOIN snwd_bpa ON snwd_so_inv_head~buyer_guid = snwd_bpa~node_key
INTO TABLE @lt_result
WHERE
snwd_so_inv_item~currency_code = 'USD'
ORDER BY
snwd_bpa~company_name.
ENDMETHOD.
ENDCLASS.
第17步:保存并激活程序
通过单击工具栏中的激活图标或使用键盘快捷键Ctrl + F3来激活您的程序。
现在运行该程序。你应该像这样获得一个SAP列表查看器:
创建一个数据元素
您将学习如何创建一个数据元素,您将在稍后的教程中使用它。
你将学习
您将学习如何创建数据元素。然后,您将使用此数据元素为表中的某一列提供布尔逻辑,而该列又包含您从数据库检索到的数据。(在前面的教程中,创建一个ABAP类。)
第1步:更改字段类型(到新的数据元素)
返回到您的ABAP字典结构zso_invoice_item并将字段类型更改payment_status为zso_invoice_payment_status:
由于数据元素zso_invoice_payment_status不存在,因此会出现语法错误,您将使用快速修复来解决该问题:
第2步:选择一个快速修复
打开快速修复:
一个。选择数据元素并通过选择Ctrl + 1来显示所有可用的快速修复。
湾 然后选择创建数据元素zso_invoice_payment_status并选择回车。
第3步:创建一个新的数据元素
在字段说明中输入新数据元素的说明,然后选择完成:
第4步:输入类型和字段标签
在出现的数据元素编辑器中,输入以下内容:
一个。在类型名称框中,输入标志。
湾 在右侧的字段标签下,输入以下内容:
•短= 已付
•中= 已付发票
•长= 已付发票
•标题= 已付发票
第5步:保存并激活数据元素
然后选择保存(Ctrl + S),然后激活(Ctrl + F3)您的数据元素。
第6步:检查结构的语法错误
回到结构ZSO_INVOICE_ITEM并选择检查ABAP开发对象(Ctrl + F2):
激活结构
选择激活(Ctrl + F3)。
第8步:在ABAP类中使用您的数据元素
回到班级,**ZCL_INVOICE_RETRIEVAL**
,你在前面的教程中创建(创建ABAP类)。)
现在,您将改变的值payment_status
从P到被设定标识X(真)当发票已支付。
ORDER BY
在SELECT
语句的子句后面输入以下代码:
复制代码
LOOPAT
lt_result
ASSIGNINGFIELD-SYMBOL(
).
CASE
.
-payment_status
WHEN
'P'.
=
-payment_status abap_true
.
WHEN
OTHERS.
=
-payment_status abap_false
.
ENDCASE.
ENDLOOP.
第9步:保存并激活课程
最后,选择保存(Ctrl + S),然后激活(Ctrl + F3)你的班级。
你的代码应该是这样的:
复制代码
CLASS zcl_invoice_retrieval DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES: ty_table_of_zso_invoice_item TYPE STANDARD TABLE OF zso_invoice_item WITH DEFAULT KEY.
METHODS get_items_from_db
RETURNING
VALUE(lt_result) type ty_table_of_zso_invoice_item.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_invoice_retrieval IMPLEMENTATION.
METHOD get_items_from_db.
SELECT
snwd_bpa~company_name,
snwd_so_inv_item~gross_amount,
snwd_so_inv_item~currency_code,
snwd_so_inv_head~payment_status
FROM
snwd_so_inv_item
JOIN snwd_so_inv_head ON snwd_so_inv_item~parent_key = snwd_so_inv_head~node_key
JOIN snwd_bpa ON snwd_so_inv_head~buyer_guid = snwd_bpa~node_key
INTO TABLE @lt_result
WHERE
snwd_so_inv_item~currency_code = 'USD'
ORDER BY
snwd_bpa~company_name.
LOOP AT lt_result ASSIGNING FIELD-SYMBOL(
CASE
WHEN 'P'.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
ENDMETHOD.
ENDCLASS.
第10步:测试您的更改
您现在可以在SAP列表查看器中测试更改的结果。
有一个首选项允许您在运行应用程序时重用SAP GUI窗口。要启用此功能,请选择窗口>首选项。在“首选项”对话框中,打开“ ABAP开发”>“SAP GUI集成”并勾选相应的复选框。
返回到您的报告并通过选择F8执行它。您的SAP列表查看器应该大致如下所示:
在你的类上创建ABAPDoc
了解如何为您的班级维护ABAP Doc文档
你将学习
在下面的练习中,您将通过学习如何维护ABAP Doc来使程序更具可读性。您还将学习如何在ABAP开发工具(ADT)和SAP GUI中同步文档并进行显示。
第1步:打开你的ABAP类
首先,打开您在创建ABAP类中创建的ABAP类:
第2步:添加ABAP文档注释
为了提高可读性,请在方法定义之前立即在该类中添加ABAP Doc注释,例如
**"! Method reads invoice items from database**::
注意:您必须在声明之前立即插入ABAP Doc注释; 否则你会收到ADT的警告。
ABAP Doc注释可用于记录API并显示在Element Info中。ABAP文档注释以开始"!。
第3步:将参数添加到ABAP Doc
您也可以使用ABAP Doc通过Quick Assist记录方法参数。将光标放在ABAP文档注释中。然后选择**Ctrl+1**打开Quick Assist菜单,然后双击将缺少的参数添加到文档中:
ABAP文档评论由a扩展@parameter ... |。您现在可以使用它来记录方法参数:为此,只需在管道符号(|)后面输入文档即可。
第4步:同步短文本
我们已经使用ABAP Doc记录了我们的方法。但是,我们也希望在SAP GUI中基于表单的类构建器的描述字段中看到相同的简短文本。 ...
为此,我们需要将ABAP Doc中所需的文本标记为“同步”,以确保它与类生成器同步。
一个。在ABAP文档中将您的方法的短文本标记为“同步”
湾 对参数的简短文本执行相同的操作lt_result:
第5步:保存并激活
保存(Ctrl + S)并激活(Ctrl + F3)该类。
第6步:与编辑器链接
最后,您将检查同步短文本是否也显示在类生成器中。首先,我们必须在SAP GUI中打开课程。
要在SAP GUI中轻松找到该类,请先选择“使用编辑器链接”:
第7步:在SAP GUI中查看ABAP Doc注释
一个。在Project Explorer中,选择该类ZCL_INVOICE_RETRIEVAL并从上下文菜单中选择使用SAP GUI打开:
湾 方法描述显示了我们在同步标记中的ABAP Doc注释中输入的文本:
C。现在选择参数。你会看到参数的描述也被同步了:
d。最后,在SAP GUI中关闭该类并通过选择关闭返回到您的ABAP程序:
第8步:显示元素信息
一个。回到ABAP程序中,将光标定位在方法调用上,GET_ITEMS_FROM_DB并通过选择Element Info(F2)来显示方法的Element Info。除了方法签名之外,它还显示您之前编写的ABAP文档:
湾 通过选择ESC关闭元素信息。
现在你的类的代码应该是这样的:
复制代码
CLASS zcl_invoice_retrieval DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES: ty_table_of_zso_invoice_item TYPE STANDARD TABLE OF zso_invoice_item WITH DEFAULT KEY.
"!
Read items from DB
"! Method reads invoice items from the database
"! @parameter lt_result |
Table of invoice items
"!
METHODS get_items_from_db
RETURNING
VALUE(lt_result) type ty_table_of_zso_invoice_item.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_invoice_retrieval IMPLEMENTATION.
METHOD get_items_from_db.
SELECT
snwd_bpa~company_name,
snwd_so_inv_item~gross_amount,
snwd_so_inv_item~currency_code,
snwd_so_inv_head~payment_status
FROM
snwd_so_inv_item
JOIN snwd_so_inv_head ON snwd_so_inv_item~parent_key = snwd_so_inv_head~node_key
JOIN snwd_bpa ON snwd_so_inv_head~buyer_guid = snwd_bpa~node_key
INTO TABLE @lt_result
WHERE
snwd_so_inv_item~currency_code = 'USD'
ORDER BY
snwd_bpa~company_name.
LOOP AT lt_result ASSIGNING FIELD-SYMBOL(
CASE
WHEN 'P'.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
ENDMETHOD.
ENDCLASS.