ABAP里的断言ASSERT

ABAP里的断言ASSERT

* 假设当前登录系统的用户是basis或其他用户
* 断言lv_assert等于basis,如果不等则会dump并报:The ASSERT condition was violated.
* 与check功能类似,check是如果不成立则停止往下执行,assert是直接dump(当然还有其他参数可以让程序不dump).
* assert的目的是当假设不成立时,报错&&终止程序,避免由程序运行引起更大的错误.免去写一大堆if else的烦恼.
* 使用 assert 的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。

* 用法总结与注意事项
*1)在函数开始处检验传入参数的合法性
*2)每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败
*3)assert和后面的语句应空一行,以形成逻辑和视觉上的一致感
DATA(LV_ASSERT) = SY-UNAME.
ASSERT LV_ASSERT = ‘BASIS1’.

*其他写法:
*IF LV_ASSERT NE ‘BASIS1’.
*  MESSAGE X000(ZFI01) WITH ‘xxxx’.
*ENDIF.

*如果没有dump,输出.
WRITE : / LV_ASSERT.

* 当然,assert还有其他用法,例如下面的代码:1不等于2,断言不成立,dump.
***代码来源于S4 HANA函数FDC_TIMER_DAEMON
*IF lv_number_of_failure > 2. “create dump after three failures
*  cl_fdc_clean_up_temp_data=>write_appl_log_clnup_start_err( iv_message_txt = ‘Abort timer daemon after three errors’ ).
*  ASSERT 1 = 2.
*ENDIF.

*思考:停止程序执行的几个语法
*continue调过本次循环
*exit退出本form
*check和assert,if 和 if not.
*leave list-processing.
*leave programe.

如若转载,请注明出处:https://www.gavindong.com/7101.html

微信沟通
自2021年2月16日开始,全站文章免费阅读。