在Eclipse中创建一个ABAP项目

第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 NetWeaverABAP开发工具,然后单击下一步
  • 在下一个向导页面上,您将看到要安装的功能的概述。点击下一步
  • 确认许可协议,然后单击完成开始安装
  • 第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 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
 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_statusP到被设定标识X(真)当发票已支付。

ORDER BYSELECT语句的子句后面输入以下代码:

复制代码

LOOP AT lt_result ASSIGNING FIELD-SYMBOL(<entry>).
    CASE <entry>-payment_status.
        WHEN 'P'.
            <entry>-payment_status = abap_true.
        WHEN OTHERS.
            <entry>-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(<entry>).

        CASE <entry>-payment_status.

            WHEN 'P'.

                <entry>-payment_status = abap_true.

            WHEN OTHERS.

                <entry>-payment_status = abap_false.

        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文档中将您的方法的短文本标记为“同步” <p class="shorttext synchronized">...</p>
湾 对参数的简短文本执行相同的操作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 InfoF2)来显示方法的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.

 

"! <p class="shorttext synchronized">Read items from DB</p>

"! Method reads invoice items from the database

"! @parameter lt_result | <p class="shorttext synchronized">Table of invoice items</p>

"!

    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(<entry>).

        CASE <entry>-payment_status.

            WHEN 'P'.

                <entry>-payment_status = abap_true.

            WHEN OTHERS.

                <entry>-payment_status = abap_false.

        ENDCASE.

    ENDLOOP.

  ENDMETHOD.

ENDCLASS.

 

posted @ 2018-12-20 11:50  方形固体移动工程师  阅读(1049)  评论(0编辑  收藏  举报