调用在OOABAP中隐式给出正式参数名称的方法?

2020-09-19 13:35发布

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

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


我的方法声明

fill_finaltab

导入

VALUE(im_toc)TYPE char30

VALUE(im_check)TYPE char50

上述方法的实现

 METHOD fill_finaltab。
   数据:lwa_final TYPE gty_final。
   lwa_final-toc = im_toc。
   lwa_final-check = im_check。
   追加lwa_final至gt_final。
   清除lwa_final。
 终结法。
 

调用方法

 fill_finaltab(im_toc ='text1'im_check ='text2')。
 

我要调用该方法的方式

fill_finaltab(text1 text2 text3 text4 text5)。

是的,为了方便起见,我想省略形式参数名称,因为我会在程序中多次使用它。

我尝试将导入参数设置为可选,通过引用和值声明,使用首选参数选项等。

基本上,我在声明方法签名时尝试了所有排列和组合。

代码工作正常,但我想学习为什么不能像在Perform(旧学校)中一样发送参数? 执行f_data:PARAM1 PARAM2 PARAM3 ETC。

注意:这不是我的任务,也不是办公室工作,而只是我的个人研究。

问候,

kk

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

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


我的方法声明

fill_finaltab

导入

VALUE(im_toc)TYPE char30

VALUE(im_check)TYPE char50

上述方法的实现

 METHOD fill_finaltab。
   数据:lwa_final TYPE gty_final。
   lwa_final-toc = im_toc。
   lwa_final-check = im_check。
   追加lwa_final至gt_final。
   清除lwa_final。
 终结法。
 

调用方法

 fill_finaltab(im_toc ='text1'im_check ='text2')。
 

我要调用该方法的方式

fill_finaltab(text1 text2 text3 text4 text5)。

是的,为了方便起见,我想省略形式参数名称,因为我会在程序中多次使用它。

我尝试将导入参数设置为可选,通过引用和值声明,使用首选参数选项等。

基本上,我在声明方法签名时尝试了所有排列和组合。

代码工作正常,但我想学习为什么不能像在Perform(旧学校)中一样发送参数? 执行f_data:PARAM1 PARAM2 PARAM3 ETC。

注意:这不是我的任务,也不是办公室工作,而只是我的个人研究。

问候,

kk

付费偷看设置
发送
7条回答
悠然的二货
1楼 · 2020-09-19 14:20.采纳回答

您不能做您想做的事情,因为ABAP并不是按照这种方式设计的。 参数已命名-唯一的例外是单个参数或单个首选参数。

一旦达到7.40,就可以直接插入值。

插入值#(im_toc ='text1'im_check ='text2')插入表gt_final。

甚至

 gt_final =值#(('text1'im_check ='text2')
                     ('text3'im_check ='text4'))。  
me_for_i
2楼-- · 2020-09-19 14:30

请以后使用编辑器中的"代码"按钮来正确格式化您发布的任何代码。

宇峰Kouji
3楼-- · 2020-09-19 14:16

方法具有关键字参数是有充分理由的。

不再使用子例程的一个原因是它们的位置参数。

https: //help.sap.com/http.svc/rc/abapdocu_752_index_htm/7.52/zh-CN/index.htm?file=abenabap_subroutines.htm

粗暴的香蕉
4楼-- · 2020-09-19 14:37

如果公平的话 您曾经尝试用<7.4编写测试类,但是建立测试数据表是一件很痛苦的事情。 宏很诱人...

lukcy2020
5楼-- · 2020-09-19 14:17

我会使用宏,例如

定义m_fill。
   fill_finaltab(im_toc =&1
                  im_check =&2)。
 定义结束。

 m_fill:'text1''text2',
         'text3''text4',
         'text5''text6'。

但要注意语法糖 ..

粗暴的香蕉
6楼-- · 2020-09-19 14:28

我记得当带有SET的UPDATE文档给出了一个使用冒号的示例时。 这引起了很多混乱。 早已修复。

SC_Yao
7楼-- · 2020-09-19 14:37

您只能省略首选参数名称。 但是您仍然可以在调用方法时使用:。

 CLASS lcl_class定义。
   公共部分。
     方法m1导入p1类型的char30首选参数p1。
 ENDCLASS。

 CLASS lcl_class实施。
   方法m1。

   终结法。
 ENDCLASS。

 选择开始。
   DATA(obj)=新的lcl_class()。
   obj-> m1(:'Text1'),'Text2'),'Text3')。
 

一周热门 更多>