健全性检查:使用界面选择表格数据的简单方法是否还可以,还是可以"过度杀伤"?

2020-08-13 17:14发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


人们好,

许多人都知道,我还没有真正和ABAP OO对话,所以即使是最简单的任务也很难解决,因为我不确定自己在做什么是正确和/或最佳方法 为此(即使在清洁代码中填充内容之后) 或各种书籍)。 因此,这是我想做的事情,已经为它编写的代码,然后是一些"健全性检查"问题。

我们有一个通用的参数表-我们称它为ZPARAMETERS-用于很多东西,例如,如果有特定值的条目或为字段提供特定值,则决定是否应执行例程。 它虽然不漂亮,但不会很快消失。 查询表的方式有多种,我至少会尝试使其更加简化。 这就是为什么我对功能方法有些涉猎的原因。

创建了一个接口:

界面zif_table_zparameters_dao
   上市 。

   方法:
     entry_exists
       输入
         i_zparameters TYPE zparameters
       正在返回
         VALUE(entry_found)TYPE abap_bool,

     return_value2
       输入
         i_zparameters TYPE zparameters
       正在返回
         VALUE(结果)TYPE zparameters-value2。

 终端接口。

实现该接口的全局类:

 CLASS zcl_table_zparameters定义
   公开创建公众。

   公共部分。
     接口zif_table_zparameters_dao。
   受保护的部分。
   专用部分。
 ENDCLASS。

 类别zcl_table_zparameters的实现。

   方法zif_table_zparameters_dao〜entry_exists。
     清除entry_found。

     选择单个@abap_true
          从z参数
          INTO @entry_found
         哪里调EQ @ i_zparameters-modul
           AND z_program EQ @ i_zparameters-z_program
           AND字段EQ @ i_zparameters-field
           AND值1 EQ @ i_zparameters-value1
           AND value2 EQ @ i_zparameters-value2。

   终结法。

   方法zif_table_zparameters_dao〜return_value2。
     清除结果。

     选择单值2
          从z参数
          INTO @结果
         哪里调EQ @ i_zparameters-modul
           AND z_program EQ @ i_zparameters-z_program
           AND字段EQ @ i_zparameters-field
           AND值1 EQ @ i_zparameters-value1。

   终结法。

 ENDCLASS。

在程序,出口和增强中将如何使用此示例代码:

数据:int_zparameters类型参考zif_table_zparameters_dao。
 DATA(cls_zparameters)=新的zcl_table_zparameters()。

 int_zparameters?= cls_zparameters。

 类型:l_zparameters TYPE zparameters。

 "只需检查条目是否存在
 如果int_zparameters-> entry_exists(VALUE l_zparameters(modul ='SD'
                                                        z_program ='ZPROG'
                                                        字段='FIELD'
                                                        value1 ='VALUE1'
                                                        value2 ='VALUE2'
                                                    ))。
   "如果找到条目,应做任何事情
 万一。

 "如果提供了其他字段,请返回VALUE2
 DATA(value2)= int_zparameters-> return_value2(VALUE l_zparameters(
                                                        模块化='SD'
                                                        z_program ='ZPROG'
                                                        字段='FIELD'
                                                        value1 ='VALUE1'
                                                    ))。
 如果value2不是初始值。
   "根据需要使用VALUE2
 万一。
 

所以,这是我的"健全性检查"问题:

  1. 我在这里做什么甚至需要接口-尤其是。 因为极不可能针对逻辑进行单元测试? 我创建它的主要原因是,这似乎是公共类/方法的推荐方法。
  2. 为不同实体命名是否有意义?
  3. 如何让调用例程知道在RETURN_VALUE2的函数方法中可能仅返回仅一个值(在这种情况下为VALUE2的内容)的任何条目? 目前,我通过查询VALUE2是否已填充来解决该问题,但我不确定这是否是最佳/正确的方法。
  4. 还有其他发现吗?

非常感谢和欢呼

贝尔贝尔

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


人们好,

许多人都知道,我还没有真正和ABAP OO对话,所以即使是最简单的任务也很难解决,因为我不确定自己在做什么是正确和/或最佳方法 为此(即使在清洁代码中填充内容之后) 或各种书籍)。 因此,这是我想做的事情,已经为它编写的代码,然后是一些"健全性检查"问题。

我们有一个通用的参数表-我们称它为ZPARAMETERS-用于很多东西,例如,如果有特定值的条目或为字段提供特定值,则决定是否应执行例程。 它虽然不漂亮,但不会很快消失。 查询表的方式有多种,我至少会尝试使其更加简化。 这就是为什么我对功能方法有些涉猎的原因。

创建了一个接口:

界面zif_table_zparameters_dao
   上市 。

   方法:
     entry_exists
       输入
         i_zparameters TYPE zparameters
       正在返回
         VALUE(entry_found)TYPE abap_bool,

     return_value2
       输入
         i_zparameters TYPE zparameters
       正在返回
         VALUE(结果)TYPE zparameters-value2。

 终端接口。

实现该接口的全局类:

 CLASS zcl_table_zparameters定义
   公开创建公众。

   公共部分。
     接口zif_table_zparameters_dao。
   受保护的部分。
   专用部分。
 ENDCLASS。

 类别zcl_table_zparameters的实现。

   方法zif_table_zparameters_dao〜entry_exists。
     清除entry_found。

     选择单个@abap_true
          从z参数
          INTO @entry_found
         哪里调EQ @ i_zparameters-modul
           AND z_program EQ @ i_zparameters-z_program
           AND字段EQ @ i_zparameters-field
           AND值1 EQ @ i_zparameters-value1
           AND value2 EQ @ i_zparameters-value2。

   终结法。

   方法zif_table_zparameters_dao〜return_value2。
     清除结果。

     选择单值2
          从z参数
          INTO @结果
         哪里调EQ @ i_zparameters-modul
           AND z_program EQ @ i_zparameters-z_program
           AND字段EQ @ i_zparameters-field
           AND值1 EQ @ i_zparameters-value1。

   终结法。

 ENDCLASS。

在程序,出口和增强中将如何使用此示例代码:

数据:int_zparameters类型参考zif_table_zparameters_dao。
 DATA(cls_zparameters)=新的zcl_table_zparameters()。

 int_zparameters?= cls_zparameters。

 类型:l_zparameters TYPE zparameters。

 "只需检查条目是否存在
 如果int_zparameters-> entry_exists(VALUE l_zparameters(modul ='SD'
                                                        z_program ='ZPROG'
                                                        字段='FIELD'
                                                        value1 ='VALUE1'
                                                        value2 ='VALUE2'
                                                    ))。
   "如果找到条目,应做任何事情
 万一。

 "如果提供了其他字段,请返回VALUE2
 DATA(value2)= int_zparameters-> return_value2(VALUE l_zparameters(
                                                        模块化='SD'
                                                        z_program ='ZPROG'
                                                        字段='FIELD'
                                                        value1 ='VALUE1'
                                                    ))。
 如果value2不是初始值。
   "根据需要使用VALUE2
 万一。
 

所以,这是我的"健全性检查"问题:

  1. 我在这里做什么甚至需要接口-尤其是。 因为极不可能针对逻辑进行单元测试? 我创建它的主要原因是,这似乎是公共类/方法的推荐方法。
  2. 为不同实体命名是否有意义?
  3. 如何让调用例程知道在RETURN_VALUE2的函数方法中可能仅返回仅一个值(在这种情况下为VALUE2的内容)的任何条目? 目前,我通过查询VALUE2是否已填充来解决该问题,但我不确定这是否是最佳/正确的方法。
  4. 还有其他发现吗?

非常感谢和欢呼

贝尔贝尔

付费偷看设置
发送

一周热门 更多>