Exception 在函数模块中使用异常

Exception 在函数模块中使用异常,exception,abap,function-module,Exception,Abap,Function Module,我是ABAP的新手,我尝试学习ABAP中的功能模块。我创建了一个函数,并为它提供了导入和导出的参数,我还想为用户提供一个例外,当他/她制作我不想要的东西时 因此,我有两个导入参数:这些行是导入和导出字段的列项 i_x TYPE xx i_type TYPE char2 我有1个表参数,即: et_xx_sorted LIKE xx 'this is an exception' 我有一个例外行: MAX_RECORD 'There is no record for this.' 我的源代码是

我是ABAP的新手,我尝试学习ABAP中的功能模块。我创建了一个函数,并为它提供了导入和导出的参数,我还想为用户提供一个例外,当他/她制作我不想要的东西时

因此,我有两个导入参数:这些行是导入和导出字段的列项

i_x TYPE xx
i_type TYPE char2
我有1个表参数,即:

et_xx_sorted LIKE xx 'this is an exception'
我有一个例外行:

MAX_RECORD 'There is no record for this.'
我的源代码是:

 SELECT * INTO TABLE et_xx_sorted[] FROM xx WHERE yy = i_x.
当用户向I_x提供的输入大于我选择的边框时,我希望使用我的异常行。我的意思是有1到30个数字,但我希望用户能给出1到20个数字。他/她不能给出20到30。如果在20到30之间有输入,程序需要给出MAX_记录异常,并对用户说‘这没有记录’

我用过:

IF sy-subrc <> 0.
    MESSAGE 'No record' TYPE 'E' RAISING MAX_RECORD.
  ENDIF.
IF sy subrc 0。
消息“无记录”类型“E”引发最大记录。
恩迪夫。

但这不是我想要的。有一行是20-30,所以这个代码块对我的边界项不起作用。有1到30行,但用户只能看到1到20行。若他/她给出20到30,那个么程序应该给出一个异常,我使用它来确定异常字段

我从你的话中理解的是,我认为你可以做这样的事情

IF i_x LT 20.  "less than

   SELECT * INTO TABLE et_xx_sorted[] FROM xx WHERE yy = i_x.

ELSEIF i_x GT 20.  "greater than

   MESSAGE 'No record' TYPE 'E' RAISING MAX_RECORD.

ENDIF.
希望对你有帮助


Talha

我现在正在使用这个,我想要的是;我们正在将异常定义到功能模块“MAX_RECORD”中,并编写其短文本“There is no RECORD”。但是,当我们使用异常时,我们正在编写消息“No record”,类型为“E”,引发MAX_record。但是,我想将MAX_记录的短文本调用到异常中,并在页面下显示它。如果我们不使用短文本,为什么要定义它?我希望我能用土耳其语告诉你我的问题,我希望这个答案对youMerve来说是可以理解的,MAX_RECORD不是一个标准的功能模块,如果你创建了这样一个功能模块,你应该将它重命名为Z_MAX_RECORD或Y_MAX_RECORD。如果不是标准,我们需要在自定义创建的对象上使用Z或Y。我上面的代码应该按照你的意思做,但是如果你真的想使用一个功能模块,这里有一个快速的教程:[链接]通过这个教程,你可以创建你自己的功能模块,你可以通过点击ABAP编辑器(se38)中的“模式”按钮来使用它。