1.ABAP程序运行过程
abap 程序运行在SAP的应用服务器中,应用服务器运行时系统负责处理abap语句,控制逻辑,数据库的访问和响应事件。
abap抓取异常消息
DATA:
gv_exerf TYPE REF TO cx_root, "定义一个类(接口) 的对象
gv_result TYPE p LENGTH 8 DECIMALS 2,
gv_txt TYPE string.
DATA:
gv_s_number TYPE string VALUE '1234567890',
gv_position_11 TYPE i VALUE 11.
CLEAR:
gv_exerf,
gv_result,
gv_txt.
TRY.
gv_result = 1 / 0. "抓取异常
CATCH cx_root INTO gv_exerf . "抛出异常
gv_txt = gv_exerf->get_text( ). "对象调用方法
WRITE : / gv_txt.
ENDTRY.
CLEAR:
gv_s_number,
gv_txt.
TRY.
gv_s_number = gv_s_number(gv_position_11).
CATCH cx_root INTO gv_exerf .
gv_txt = gv_exerf->get_text( ).
WRITE: / gv_txt.
ENDTRY.
write 和 write at 语法
DATA: len TYPE i VALUE 10,
pos TYPE i VALUE 11,
text(10) VALUE '1234567890'.
WRITE 'The text ------------ appears in the text.'.
注,这里的AT关键字不能省略,因为后面的pos len为变量,而不是直接量
WRITE AT pos(len) text."可以重新绘制屏幕,覆写已经输入的内容
the text -1234567890- appears in the text.
2.ABAPA 开发实例
2.1 ABAP中数据和对象的动态创建
定义一个本地类:包含(类定义的声明DEFINITION和实现部分IMPLMENTATION)
"定义本地类
CLASS zlcl_class DEFINITION.
PUBLIC SECTION.
DATA: mv_value TYPE string.
METHODS:
set_value IMPORTING iv_value TYPE string,
display_value.
ENDCLASS.
"类有实现部分
CLASS zlcl_class IMPLEMENTATION .
METHOD display_value.
WRITE:/ 'Class Instance Attribute:',mv_value.
ENDMETHOD.
METHOD set_value.
mv_value = iv_value.
ENDMETHOD.
ENDCLASS.
"程序部分
START-OF-SELECTION.
TYPES: ty_i TYPE i.
DATA: gv_dref TYPE REF TO ty_i.
DATA: go_oref TYPE REF TO zlcl_class.
"异常的处理
DATA:exc_ref TYPE REF TO cx_root,
exc_text TYPE string.
"根据基本类型名动态创建数据【此法不推荐使用】
CREATE DATA gv_dref TYPE ('ty_i').
gv_dref->* = 1.
WRITE:/ gv_dref->*.
"异常
TRY.
"根据类别动态创建实例对象,类名必须大写
* CREATE DATA go_oref TYPE ('ZLCL_CLASS')."注意
CREATE OBJECT go_oref TYPE ('ZLCL_CLASS').
go_oref->set_value(' jj ').
go_oref->display_value( ).
CATCH cx_sy_create_object_error INTO exc_ref.
exc_text = exc_ref->get_text( ).
MESSAGE exc_text TYPE 'I'.
ENDTRY.