ABAP 常用的系统变量說明
系统内部有一个专门存放系统变量的结构SYST,其中最常用的系统变量有:
SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,’0’ 表示成功
SY-UNAME: 当前使用者登入SAP的USERNAME;
SY-DATUM: 当前系统日期;
SY-UZEIT: 当前系统时间;
SY-TCODE: 当前执行程序的Transaction code
SY-REPID: ABAP 程式名,目前的主程式
SY-CPROG: ABAP 程式名
SY-SYSID: R/3 系統,R/3 系統名稱
SY-UCOMM: 畫面,PAI 驅動的功能代碼,一般用來參照定義變量
SY-INDEX : 当前LOOP循环过的次数 READ TABLE it_po INDEX 1 此時變量值1
SY-TABIX: 当前处理的是internal table 的第几笔
下面說下sy-index 和 sy-tabix的區別
sy-index和sy-tabix都是系统字段,用来记录循环的次数。
sy-index 在DO....ENDDO循环里有效,而sy-tabix在loop at ......endloop里有效。
運行下面的例子能更好的理解:
DATA: BEGIN OF line,
col1 TYPE i,
col2 TYPE i,
END OF line.
DATA itab LIKE TABLE OF line WITH HEADER LINE.
DO 30 TIMES.
line-col1 = sy-index.
line-col2 = sy-index * sy-index.
APPEND line TO itab.
ENDDO.
LOOP AT itab .
DO 2 TIMES.
WRITE: / sy-tabix:,sy-tabix,itab-col1,
sy-index:,sy-index,itab-col2.
ENDDO.
ENDLOOP.
sy-dbcnt:Sy-dbcnt代表有多少条记录被处理了
例如:當我們查詢記錄放入內表,判斷內表中是否有數據就可以用 if sy-dbcnt = 0 MESSAGE s000.
STOP. ENDIF.
sy-tfill:返回当前内表(Internal Table)内的记录数。
但是要小心,那些字段随各自的内表(Internal Table)改变。
例:如果你循环(Loop at)(读取)itab,sy-tfill返回itab的记录数。
如 果你在循环(Loop at)(读取)内表(Internal Table)itab的内部嵌套循环(Loop at)(读取)内表(Internal Table)jtab,
sy-tfill返回的不再是itab的记录数,而是jtab的!
所以如果你需要使用itab的记录数,请先把sy-tfill的 值传递给其它变量。
无论如何,sy-tfill永远保存当前的记录数。
例如記錄內表記錄條數:DESCRIBE TABLE itab LINES sy-tfill.
SY-TMAXL: Internal table的总笔数
SY-SROWS: 屏幕总行数;
SY-SCOLS: 屏幕总列数;
SY-MANDT: 当前系统编号(CLIENT NUMBER)
SY-VLINE: 画竖线
SY-ULINE: 画横线
sy-pagno 当前页号
sy-lsind 列表索引页
sy-listi 上一个列表的索引
sy-linsz 当前报表宽度
sy-lilli 绝对列表中选定的行号
sy-linct 当前报表长度
sy-curow 屏幕上的行
space 空字符
sy-cucol 光标列
sy-cpage 列表的当前显示页
sy-staro 真实行号
sy-lisel 选择行的内容,长度为255
sy-linno 当前行
SY-MANDT: 當前系統編號(CLIENT NUMBER)
SY-SLSET: 选择屏幕的变式名称
SY-MSGID: 消息, 消息类
SY-MSGTY: 消息,消息类型
SY-MSGNO: 消息, 消息编号
SY-MSGV1: 消息,消息变量1
SY-DYNGR: Screen group of the current screen ABAP 程式,目前畫面上的畫面群組
SY-DYNNR: ABAP 程式,目前的畫面號碼
SY-BATCH: Program running in background
SY-HOST: R/3 系統,應用伺服器名稱
来源:
更多信息,参考:
SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,’0’ 表示成功
SY-UNAME: 当前使用者登入SAP的USERNAME;
SY-DATUM: 当前系统日期;
SY-UZEIT: 当前系统时间;
SY-TCODE: 当前执行程序的Transaction code
SY-REPID: ABAP 程式名,目前的主程式
SY-CPROG: ABAP 程式名
SY-SYSID: R/3 系統,R/3 系統名稱
SY-UCOMM: 畫面,PAI 驅動的功能代碼,一般用來參照定義變量
SY-INDEX : 当前LOOP循环过的次数 READ TABLE it_po INDEX 1 此時變量值1
SY-TABIX: 当前处理的是internal table 的第几笔
下面說下sy-index 和 sy-tabix的區別
sy-index和sy-tabix都是系统字段,用来记录循环的次数。
sy-index 在DO....ENDDO循环里有效,而sy-tabix在loop at ......endloop里有效。
運行下面的例子能更好的理解:
DATA: BEGIN OF line,
col1 TYPE i,
col2 TYPE i,
END OF line.
DATA itab LIKE TABLE OF line WITH HEADER LINE.
DO 30 TIMES.
line-col1 = sy-index.
line-col2 = sy-index * sy-index.
APPEND line TO itab.
ENDDO.
LOOP AT itab .
DO 2 TIMES.
WRITE: / sy-tabix:,sy-tabix,itab-col1,
sy-index:,sy-index,itab-col2.
ENDDO.
ENDLOOP.
sy-dbcnt:Sy-dbcnt代表有多少条记录被处理了
例如:當我們查詢記錄放入內表,判斷內表中是否有數據就可以用 if sy-dbcnt = 0 MESSAGE s000.
STOP. ENDIF.
sy-tfill:返回当前内表(Internal Table)内的记录数。
但是要小心,那些字段随各自的内表(Internal Table)改变。
例:如果你循环(Loop at)(读取)itab,sy-tfill返回itab的记录数。
如 果你在循环(Loop at)(读取)内表(Internal Table)itab的内部嵌套循环(Loop at)(读取)内表(Internal Table)jtab,
sy-tfill返回的不再是itab的记录数,而是jtab的!
所以如果你需要使用itab的记录数,请先把sy-tfill的 值传递给其它变量。
无论如何,sy-tfill永远保存当前的记录数。
例如記錄內表記錄條數:DESCRIBE TABLE itab LINES sy-tfill.
SY-TMAXL: Internal table的总笔数
SY-SROWS: 屏幕总行数;
SY-SCOLS: 屏幕总列数;
SY-MANDT: 当前系统编号(CLIENT NUMBER)
SY-VLINE: 画竖线
SY-ULINE: 画横线
sy-pagno 当前页号
sy-lsind 列表索引页
sy-listi 上一个列表的索引
sy-linsz 当前报表宽度
sy-lilli 绝对列表中选定的行号
sy-linct 当前报表长度
sy-curow 屏幕上的行
space 空字符
sy-cucol 光标列
sy-cpage 列表的当前显示页
sy-staro 真实行号
sy-lisel 选择行的内容,长度为255
sy-linno 当前行
SY-MANDT: 當前系統編號(CLIENT NUMBER)
SY-SLSET: 选择屏幕的变式名称
SY-MSGID: 消息, 消息类
SY-MSGTY: 消息,消息类型
SY-MSGNO: 消息, 消息编号
SY-MSGV1: 消息,消息变量1
SY-DYNGR: Screen group of the current screen ABAP 程式,目前畫面上的畫面群組
SY-DYNNR: ABAP 程式,目前的畫面號碼
SY-BATCH: Program running in background
SY-HOST: R/3 系統,應用伺服器名稱
来源:
更多信息,参考:
下一篇:
java中的循环依赖以及解决方案