SY-SUBRC:语句执行后的返回值,0表示成功
SY-DATUM:当前服务器日期
SY-UZEIT:当前服务器时间
SY-ULINE:255长度的水平线
SY-VLINE:垂直线
SY-INDEX:循环说执行的次数
SY-TABIX:内表循环的次数
SY-DYNNR:当前Screen号
SY-MANDT:当前登录的Client号
SY-STEPL:返回当前操作的屏幕行号(Table Control)
SY-LOOPC:当前表格控件在屏幕中的总行数(Table Control)
SY-UCOMM:PAI所出发的功能代码
SY-DYNNR:当前屏幕号
SY-MSGID:Message Class
SY-MSGNR:Message Number
SY-MSGTY:Message Type
SY-MSGV1~4:Message Variant
SY-LINCT:REPROT语句中设定的LINE-COUNT
SY-LINSZ:REPROT语句中设定的LINE-SIZE
SY-SROWS:当前窗口的列表行数
SY-SCOLS:当前窗口的列表栏目数
SY-PAGNO:当前页的页码
SY-LINNO:当前选定行的行号
SY-COLNO:当前选定列的列号
SY-LSIND:当前列表索引,第一级列表为1
SY-LILLI:选择某行时光标行位置
SY-CUROW:选择某行时光标列位置
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/1681.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。
评论列表(3条)
请注意:sy-batch只能表明程序是否是通过SM36定义的job来执行的,并不等表明程序时通过dialog执行还是系统间直接对接。
例如,当你在SM36定义了一个job来跑某个abap程序,则运行改job的时候,sy-batch值变为X。
当你在系统间交互的时候用sy-batch做判断,是没有意义的,因为改字段的值始终会为space。
例如,SAP和第三方系统做交互的时候,如果你用下面的代码作为判断用户是通过dialog登录还是后台登录的,则会报这样的错:
Screen output without connection to user.
Attempt made to send an image to a user during background processing.
Current screen: “SAPMSSY0 ” 0120.
Additional information from system:
“currently running as cpic server”
=============================
END-OF-SELECTION.
CASE sy-batch.
WHEN ”.
PERFORM frm_alv_data.
WHEN ‘X’.
“导出到内存供后台程序(网页等)调用
EXPORT s1 = gt_detail[] TO MEMORY ID ‘SGT_DETAIL’. “回款详细
EXPORT s2 = gt_data[] TO MEMORY ID ‘SGT_DATA’. “回款汇总信息
ENDCASE.
@ag:要判断用户是通过dialog登录还是系统间交互,还得依靠sm04这张表里的状态来看。
@ag:*判断用户登录类型(后台登录还是前台dialog登录)用.
DATA: gt_usrinfo TYPE TABLE OF usrinfo WITH HEADER LINE,
gt_uinfo TYPE TABLE OF uinfo WITH HEADER LINE,
gv_ulogtyp TYPE usrinfo-type.
“判断是dialog登录还是说系统间直接交互(GV_ULOGTYP = 32表示后台登录).
* CALL FUNCTION ‘TH_USER_LIST’
* TABLES
* LIST = GT_UINFO
* USRLIST = GT_USRINFO.
*
* READ TABLE GT_USRINFO WITH KEY BNAME = SY-UNAME.
* GV_ULOGTYP = GT_USRINFO-TYPE.