SAP系统变量用法ABAP程序系统字段中英文详解.docx
- 文档编号:7540591
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:23
- 大小:25.16KB
SAP系统变量用法ABAP程序系统字段中英文详解.docx
《SAP系统变量用法ABAP程序系统字段中英文详解.docx》由会员分享,可在线阅读,更多相关《SAP系统变量用法ABAP程序系统字段中英文详解.docx(23页珍藏版)》请在冰豆网上搜索。
SAP系统变量用法ABAP程序系统字段中英文详解
SAP系统变量用法----ABAP程序系统字段中英文详解
更新时间:
2015-04-0509:
40:
39编辑:
SAP中文学习网点击:
55发表评论
本文标签:
系统字段变量
SY-SUBRC:
系统执行某指令后,表示执行成功与否的变量,’0’表示成功
SY-DBLNT:
被处理过的记录的笔数
SY-UNAME:
当前使用者登入SAP的USERNAME;
SY-DATUM:
当前系统日期;
SY-UZEIT:
当前系统时间;
SY-TCODE:
当前执行程序的Transactioncode
SY-INDEX:
当前LOOP循环过的次数
SY-TABIX:
当前处理的是internaltable的第几笔
SY-TMAXL:
Internaltable的总笔数
SY-SROWS:
屏幕总行数;
SY-SCOLS:
屏幕总列数;
SY-MANDT:
當前系統編號(CLIENTNUMBER)
SY-VLINE:
画竖线
SY-ULINE:
画横线
SY-PAGNO:
当前页号
SY-LINSZ:
当前报表宽度
SY-LINCT:
当前报表长度
SPACE:
空字符串
SY-LSIND:
列表索引页
SY-LISTI:
上一个列表的索引
SY-LILLI:
绝对列表中选定行的行号
SY-CUROW:
屏幕上的行
SY-CUCOL:
光标列
SY-CPAGE:
列表的当前显示页
SY-STARO:
真实行号
SY-LISEL:
选择行的内容,长度为255
SY-LINNO:
当前行
系统内部有一个专门存放系统变量的结构SYST,其中最常用的系统变量有:
SY-SUBRC:
系统执行某指令后,表示执行成功与否的变量,’0’表示成功
SY-UNAME:
当前使用者登入SAP的USERNAME;
SY-DATUM:
当前系统日期;
SY-UZEIT:
当前系统时间;
SY-TCODE:
当前执行程序的Transactioncode
SY-REPID:
ABAP程式名,目前的主程式
SY-CPROG:
ABAP程式名
SY-SYSID:
R/3系統,R/3系統名稱
SY-UCOMM:
畫面,PAI驅動的功能代碼,一般用來參照定義變量
SY-INDEX:
当前LOOP循环过的次数 READTABLEit_poINDEX1 此時變量值1
SY-TABIX:
当前处理的是internaltable的第几笔
下面說下sy-index和sy-tabix的區別
sy-index和sy-tabix都是系统字段,用来记录循环的次数。
sy-index在DO....ENDDO循环里有效,而sy-tabix在loopat......endloop里有效。
運行下面的例子能更好的理解:
DATA:
BEGINOFline,
col1TYPEi,
col2TYPEi,
ENDOFline.
DATAitabLIKETABLEOFlineWITHHEADERLINE.
DO30TIMES.
line-col1=sy-index.
line-col2=sy-index*sy-index.
APPENDlineTOitab.
ENDDO.
LOOPATitab.
DO2TIMES.
WRITE:
/'sy-tabix:
',sy-tabix,itab-col1,
'sy-index:
',sy-index,itab-col2.
ENDDO.
ENDLOOP.
sy-dbcnt:
Sy-dbcnt代表有多少条记录被处理了
例如:
當我們查詢記錄放入內表,判斷內表中是否有數據就可以用 ifsy-dbcnt=0 MESSAGEs000.
STOP.ENDIF.
sy-tfill:
返回当前内表(InternalTable)内的记录数。
但是要小心,那些字段随各自的内表(InternalTable)改变。
例:
如果你循环(Loopat)(读取)itab,sy-tfill返回itab的记录数。
如果你在循环(Loopat)(读取)内表(InternalTable)itab的内部嵌套循环(Loopat)(读取)内表(InternalTable)jtab,sy-tfill返回的不再是itab的记录数,而是jtab的!
所以如果你需要使用itab的记录数,请先把sy-tfill的值传递给其它变量。
无论如何,sy-tfill永远保存当前的记录数。
例如記錄內表記錄條數:
DESCRIBETABLEitabLINESsy-tfill.
SY-TMAXL:
Internaltable的总笔数
SY-SROWS:
屏幕总行数;
SY-SCOLS:
屏幕总列数;
SY-MANDT:
当前系统编号(CLIENTNUMBER)
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:
當前系統編號(CLIENTNUMBER)
SY-SLSET:
SY-SUBRC的含义
=================FUNCTIONMODULE(或RFC中)SY-SUBRC的含义================
使用SELECT语句选择查询:
SY-SUBRC=0:
至少有一行数据,当ENDSELECT语句执行完,SY-DBCNT中保存着记录的个数。
SY-SUBRC=4:
没有数据。
SY-SUBRC=8:
只有使用“SELECTSINGLEFORUPDATE”时才会有,
表示:
WHERE条件指定的记录不止一行,结果是没有记录被选中。
使用INSERT语句,向表中插入一行,必须注意INSERT的顺序与表中字段的顺序一致:
SY-SUBRC=0:
插入成功,SY-DBCNT包含了插入的行数,0或1。
SY-SUBRC=4:
由于有相同的KEY存在,所以插入失败。
使用LOOP语句来遍历一个内表:
SY-SUBRC=0:
循环至少被执行一次。
SY-SUBRC=4:
循环没有被执行,可能是没有数据,也可能是没有符合条件的记录。
使用DELETE语句来删除一条记录:
SY-SUBRC=0:
找到一行并删除之,如果该表有不唯一主键,也就是有多条重复的记录,则只删除第一条记录。
SY-SUBRC=4:
没有找到符合条件的记录,也没有删除。
使用UPDATE语句来更新一条记录:
SY-SUBRC=0:
找到记录并更新,(如果有多条记录呢?
)
SY-SUBRC=4:
没有找到符合条件的记录,也没有更新。
ABAP程序系统字段中英文详解
-注_华亭慧剑译
系统字段由ABAP运行时环境填写,并且可以用来在ABAP程序中查询系统状态。
除了一个例外(sy-repid),系统字段都是变量,但是它们都是只读的。
此外,更多程序执行的重要信息通常都被丢弃。
ABAP程序中的系统字段只在极少需要控制系统行为的时候才能被重写。
SystemfieldsarefilledbytheABAPruntimeenvironmentandcanbeusedinanABAPprogramtoquerysystemstatuses.Withoneexception(sy-repid),systemfieldsarevariables,buttheyshouldonlybeaccessedonaread-onlybasis.Otherwise,importantinformationforfurtherprogramexecutionoftengetslost.SystemfieldsinABAPprogramscanonlybeoverwritteninafewcasestocontrolsystembehavior.
对于例外的sy-repid,这个系统字段的数据类型在ABAP字典的SYST结构(6.10版以后)中定义,作为sy结构(也可以用SYST来定位)的组件在ABAP程序中有示例。
sy结构在一个内部会话期间内只存在一次,并且在这个内部会话期间内被所有程序使用。
下表列出了在ABAP程序中可以使用的系统字段。
所有sy结构的其他组件则或者在ABAP运行时环境内部使用或者已经废弃。
Withtheexceptionofsy-repid,thedatatypesofthesystemfieldsaredefinedintheABAPDictionaryinthestructureSYST(asofrelease6.10),andareinstantiatedinABAPprogramsascomponentsofthepredefinedstructuresy,whichcanalsobeaddressedusingSYST.Thestructuresyexistsonlyonceinaninternalsessionandisusedbyallprogramsofaninternalsessionatthesametime.ThefollowingtableshowsthesystemfieldsthatcanbeusedinABAPprograms.AllothercomponentsofthestructuresyareeitherintendedforinternalusebytheABAPruntimeenvironmentorareobsolete.
名称
Name
类型
Type
说明
Content
sy-abcde
c(26)
包含了字母表。
可以用来通过指定偏移/长度直接访问独立的字母,而无需考虑代码页。
Containsthealphabet.Canbeusedtoaccessindividuallettersdirectlybyspecifyingtheoffset/length,regardlessofthecodepage.
sy-batch
c
(1)
在一个后台运行的ABAP程序中设置为“X”,否则就是初始值。
Setto"X"inanABAPprogramthatrunsinthebackground,otherwiseinitial.
sy-binpt
c
(1)
在批处理输入会话中设置为“X”,在ABAP程序中调用usingCALLTRANSACTIONUSING。
否则就是初始值。
Setto"X"duringprocessingofbatchinputsessions,andinABAPprogramscalledusingCALLTRANSACTIONUSING.Otherwiseinitial.
sy-calld
c
(1)
在一个调用序列中的第一个程序里为空字符串,否则为值“X”。
在调用usingCALLTRANSACTION,CALLDIALOG或者SUBMIT...ANDRETURN后变为“X”。
如果程序以LEAVETOTRANSACTION或者从一个屏幕事务开始的话,则为空。
使用SUBMIT(没有ANDRETURN)时设定为调用它的程序的值。
Containsablankcharacterinthefirstprograminacallsequence,otherwisecontainsthevalue"X".Issetto"X"aftercallsusingCALLTRANSACTION,CALLDIALOG,orSUBMIT...ANDRETURN.EmptyiftheprogramwasstartedusingLEAVETOTRANSACTIONoratransactionfromthescreen.AcallusingSUBMIT(withoutANDRETURN)assumesthevalueofthecallingprogram.
sy-callr
c(8)
当打印清单时,显示打印从何处开始的值,例如NEW-PAGE为程序控制的打印,或者RSDBRUNT为从一个选择屏幕打印。
Whenprintinglists,containsavaluethatdisplayswheretheprintingwasstarted,forexample,NEW-PAGEforprogram-controlledprinting,orRSDBRUNTforprintingfromtheselectionscreen.
sy-colno
i
在清单缓冲区中创建清单过程中的当前位置。
从1开始计算。
在非Unicode系统中,这个位置也符合显示清单中的列。
在Unicode系统中,由于清单缓冲区中的一个字符可能占多列,这只保证每个输出的最低和最高的输出能力。
Currentpositionduringcreationofalistinthelistbuffer.Countingbeginsat1.Innon-Unicodesystems,thispositionalsocorrespondstothecolumninthedisplayedlist.InUnicodesystems,thisisonlyguaranteedforthelowerandupperoutputlimitsapplicabletoeachoutput,asonecharactermaytakeupmorecolumnsinthelistthanpositionsinthelistbuffer.
sy-cpage
i
当清单事件被触发时,显示在清单顶端的页码。
从1开始。
Pagenumberofthepagedisplayedatthetopofthelistforwhichalisteventwastriggered.Countingbeginsat1.
sy-cprog
c(40)
在外部程序调用中,调用程序的名字,否则就是当前程序的名字。
如果一个程序包含多级程序调用,sy-cprog包含框架程序的名字,而不是设置为程序调用序列中的框架程序名字。
Inprocedurescalledexternally,thenameofthecallingprogram,Otherwisethenameofthecurrentprogram.Ifaprocedurecalledexternallycallsanotherexternalprocedure,sy-cprogcontainsthenameoftheframeworkprogram,andisnotsettothenameoftheframeworkprogramofthesubsequentcallingprogram.
sy-cucol
i
在屏幕上显示的横向指针的位置。
从第2列开始。
Horizontalcursorpositioninthedisplayonascreen.Countingbeginsatcolumn2.
sy-curow
i
在屏幕上显示的纵向指针的位置。
从第1行开始。
Verticalcursorpositiononthescreendisplayofascreen.Countingbeginsatline1.
sy-datar
c
(1)
在PAI中,如果屏幕上至少有一个输入字段的值被用户或其他数据传输所更改,则为“X”,否则为初始值。
AtPAI,contains"X"ifatleastoneinputfieldofascreenhasbeenchangedbyauserorbyfurtherdatatransfer,otherwiseinitial.
sy-datlo
d
用户的当前日期,例如:
,。
可以用GETTIME来设置。
Localdateoftheuser,forexample,.CanbesetusingGETTIME.
sy-datum
d
SAP系统的本地日期。
可以用GETTIME来设置。
LocaldateoftheSAPsystem.CanbesetusingGETTIME.
sy-dayst
c
(1)
在夏令时中设置为“X”,否则为初始值。
"X"duringsummertime,otherwiseinitial.
sy-dbcnt
i
SQL语句把sy-dbcnt的内容设置为处理过的表行数。
SQLstatementssetthecontentofsy-dbcnttothenumberofprocessedtablelines.
sy-dbnam
c(20)
在执行程序中,表示连接的逻辑数据库。
Inexecutableprograms,thelinkedlogicaldatabase.
sy-dbsys
c(10)
使用的数据库系统,例如ORACEL,INFORMIX。
Centraldatabasesystem,forexample,ORACLE,INFORMIX.
sy-dyngr
c(4)
当前屏幕的屏幕组。
在屏幕画笔中,几个屏幕可以指定给一个公共屏幕组,例如,可以用来一次修改同一个屏幕组中的全部屏幕。
Screengroupofthecurrentscreen.IntheScreenPainter,severalscreenscanbeassignedtoacommonscreengroup,whichcanbeused,forexample,formakingmodificationstoallscreensinthegroupatonce.
sy-dynnr
c(4)
当前的屏幕号。
在选择屏幕处理过程中,这指定了当前被选中的屏幕。
在列表处理过程中,说明了子屏幕容器的数量。
在子屏幕屏幕过程中(包括选项卡),说明了屏幕数量。
Numberofthecurrentscreen.Duringselectionscreenprocessing,thisisthecurrentselectionscreen.Duringlistprocessing,thenumberofthesubscreencontainer.Duringprocessingofasubscreenscreen(includingintabstrips),thisscreennumber.
sy-fdayw
b
工厂日历的周日,Monday为1,…,Friday为5。
Factorycalendarweekday,Monday=1,...,Friday=5.
sy-fdpos
i
在字符类型数据对象操作时查找定位。
Foundlocationinoperationswithcharacter-typedataobjects.
sy-host
c(8)
应用服务器的名字,例如,KSAP0001,HS01234。
Nameoftheapplicationserver,forexample,KSAP0001,HS01234.
sy-index
i
循环索引。
在DO和WHILE循环中,指包含了本次循环的循环次数。
Loopindex.InDOandWHILEloops,containsthenumberofthelooppassesincludingthecurrentpass.
sy-langu
c
(1)
单字符的语言键,例如,D,E,F,给当前的文本环境使用。
通过依照当前用户的登录语言,或使用SETLOCALE语句设定。
Single-characterlanguagekey,forexample,D,E,F,forthecurrenttextenvironment.SetaccordingtothelogonlanguageoftheuserorbyusingthestatementSETLOCALE.
sy-ldbpg
c(40)
在可执行程序中,指定了连接的逻辑数据库的数据库程序。
Inexecutableprograms,thedatabaseprogramofthelinkedlogicaldatabase.
sy-lilli
i
当清单事件被触发时的清单行数,从1开始计算并包含页抬头。
Listlineforwhichalisteventwastriggered.Countingbeginsat1andincludesthepageheader.
sy-linct
i
在当前清单创建时的页长。
sy-linct在一个任意长度的标准清单中的值为0,而在定义了页长的清单中不为0。
Pagelengthofthecurrentlistduringlistcreation.sy-linctis0forastandardlistofanylength,andhasavaluethatisnot0forlistswithadefinedpagelength.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SAP 系统 变量 用法 ABAP 程序 字段 中英文 详解