2020-08-31 12:30发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
这里是所有ABAP专家的一个简单问题。对于以下代码,我应该对ASSIGN关键字使用SY-SUBRC = 0还是对表表达式使用CATCH CX_SY_ITAB_LINE_NOT_FOUND? 不确定其工作原理...感谢您的见解!
"检查是否在BPC主数据昏暗表中找到了员工 ASSIGN [(lc_id)= ]到FIELD-SYMBOL()。
如官方 ASSIGN table_exp TO的ABAP文档所述 :
在此变体中,语句ASSIGN设置返回码sy-subrc。
如果找不到指定的行,则不会引发异常(与表的其他用法不同)
因此,无需使用TRY ... CATCH(除非您更改ASSIGN itab [XXX]的XXX以便引发异常。
DATA(itab)= VALUE string_table()。 将itab [1]分配给FIELD-SYMBOL()。 "它不需要TRY/CATCH 未分配sy-subrc <> 0和。 尝试。 将itab [1/0]分配给。 "它需要TRY/CATCH 捕获cx_root INTO DATA(lx)。 ENDTRY。 ASSERT lx是cx_sy_zerodivide的实例。
感谢捕获有关细节。 非常感谢!
您好肯尼思·默里,
您还可以使用SY-SUBRC,当您尝试使用字段符号时会出现真正的问题。
使用Try Catch块可以更好地处理异常,以防您使用SY-SUBRC 只需确保SY-SUBRC不为0时就不要再使用该字段符号。
还有另外一个关键字,如下所示,以防您正在寻找选项:
CHECK <
此致!
肯尼斯·默里(Kenneth Murray),
是的,如果分配不成功,您将不会获得例外,只有在分配失败的情况下进一步使用分配的字段符号时,才会出现问题 分配。
致谢!
嗨,肯尼思,
在许多情况下,答案是"取决于"。
原则上,Satish说" TRY-CATCH"更干净是正确的。 但是它也带来很多负担……您必须管理异常,传播,做出反应,以及所有这些爵士乐。 如果您的陈述是在具有例外管理策略的较大环境中,那将是我所采用的方法。
另一方面,如果您仅想快速进行一次成功检查,例如,根据ASSIGN的成功或失败,向左或向右走,请选择SY_SUBRC。 快速,简单且无需托运行李。
希望有帮助,迈克
我只想在这里再增加1点,如果您在表表达式(table [number])中使用索引,则可以将其包装起来 用TRY ... CATCH编码,但是如果您要使用组件名称(作为示例)而组件名称错误,那么它将成为不可捕获的异常。 因此,我认为使用组件名称的最佳方法是首先检查组件的存在:
DATA(ref)= NEW flighttab()。 将ref-> *分配给FIELD-SYMBOL()。 选择* FROM sflight进入表@ 。 "尝试。 尝试。 将 [1/0]指定为FIELD-SYMBOL()。 捕获cx_root。 BREAK-POINT。 ENDTRY。 "倾倒 尝试。 将 [('CARRRID')='AA']分配到场符号()。 捕获cx_root。 BREAK-POINT。 ENDTRY。
最多设置5个标签!
如官方 ASSIGN table_exp TO的ABAP文档所述 :
在此变体中,语句ASSIGN设置返回码sy-subrc。
如果找不到指定的行,则不会引发异常(与表的其他用法不同)
因此,无需使用TRY ... CATCH(除非您更改ASSIGN itab [XXX]的XXX以便引发异常。
>感谢捕获有关细节。 非常感谢!
您好肯尼思·默里,
< p>在TRY和CATCH Block中使用表达式是一种更好的编码方式。您还可以使用SY-SUBRC,当您尝试使用字段符号时会出现真正的问题。
< p>如果"字段符号"分配不成功,则当进一步使用"字段"符号时,代码将转储。使用Try Catch块可以更好地处理异常,以防您使用SY-SUBRC 只需确保SY-SUBRC不为0时就不要再使用该字段符号。
还有另外一个关键字,如下所示,以防您正在寻找选项:
此致!
肯尼斯·默里(Kenneth Murray),
是的,如果分配不成功,您将不会获得例外,只有在分配失败的情况下进一步使用分配的字段符号时,才会出现问题 分配。
致谢!
嗨,肯尼思,
在许多情况下,答案是"取决于"。
原则上,Satish说" TRY-CATCH"更干净是正确的。 但是它也带来很多负担……您必须管理异常,传播,做出反应,以及所有这些爵士乐。 如果您的陈述是在具有例外管理策略的较大环境中,那将是我所采用的方法。
另一方面,如果您仅想快速进行一次成功检查,例如,根据ASSIGN的成功或失败,向左或向右走,请选择SY_SUBRC。 快速,简单且无需托运行李。
希望有帮助,
迈克
我只想在这里再增加1点,如果您在表表达式(table [number])中使用索引,则可以将其包装起来 用TRY ... CATCH编码,但是如果您要使用组件名称(作为示例)而组件名称错误,那么它将成为不可捕获的异常。 因此,我认为使用组件名称的最佳方法是首先检查组件的存在:
一周热门 更多>