ABAP中 将行号分奇 偶 excel公式IF赋值并添加颜色颜色.请问 mod该怎么定义

第三.通过字段目录FIELDCATLOG来指定相应的句柄字段.

第四:在数据显示的内表中,指定对应的句柄:

功能七:把字段设置为下拉

     有时候我们可以把一些字段设置为下拉,比如一些类型,一些字段的值是比较固定的一些值,当然,我们也可以通过搜索帮助来做,这些只是看各自的爱好和需要了.

   如果我们希望把这个列都设置为下拉,那么我们可以在字段目录中,把控制字段"DRDN_HNDL"指向对应的下拉内表的句柄就可以了.例如:

如果是某个单元格设置为下拉,那我们就需要在数据显示的内表中增加一个句柄字段(如果是有多个不同的字段需要设置下拉,可以增加多个字段),同时得在字段目录里设置"DRDN_FIELD".例如:

    作为使用面向对象的方法开发的一个组件,ALV GRID控制器有很多响应用户交互的事件.这些事件经常被用来增强一些用户响应的功能.为实现这样的功能,我们必须在程序中创建一个类的实例来作为ALV GRID实例的事件处理者.

自定义功能的定义(自定义按钮,菜单等等)

下面是一段代码,例举说明如果定义我们的事件处理类,可以根据实际需求定制。

*--ALV的工具条上增加新的按钮

*--在用户命令触发之前

*--在用户命令触发之后

*--ALV可修改的情况下,控制数据修改

*--在数据修改完成之后

其次是类的实现的一些概要代码,参数可以从ALV的事件中直接获取出来。

光定义了这些还不够,我们需要把事件管理类注册到ALV GRID的实例事件.

1.热点事件(单击事件)

     双击事件和单击事件的处理是类似的,同样也是3个参数.我们不需要设置字段目录就可以响应双击事件了.

3.添加自定义的按钮和响应命令

     我们在ALV的工具条上增加一些按钮来增加我们自定义的功能,当然也可以在GUI状态中增加,2种的处理方式是不一样的.

增加自定义按钮的结构如下:

按钮的悬停文本(可选)

把需要设置为按钮的字段填进内表字段中:

然后在布局中指定对应的STYLE内表字段,注意字段名字一定要对上:

这里的按钮点击事件和单击事件类似,也是需要2个参数来确定位置.

5.2 设置单元格级别的可编辑和不可编辑

     单元格级别的可编辑和不可编辑是个非常有用的功能,在SAP标准的一些事务中,经常可以看到这些方面的应用.通常用到的比较多的地方,是需要数据验证的,比如输入类型A,后面的某个字段才可以编辑,如果输入了类型B,后面的这个字段就不可编辑.

    想让一列可以编辑,我们可以在字段目录中设置EDIT为"X".在可编辑的情况下,ALV会自动多出来几个编辑按钮,删除,新增,插入,复制. 

单元格级别的可编辑和不可编辑,实现起来和5.1是类似的,也是内表字段,参考表类型"LVC_T_STYL".不过填入的style应该为

当然也是一样,需要告诉ALV哪个字段是控制STYLE的内表字段.

一般情况下,单元格的设置会覆盖整列的设置。如果想在程序里动态切换各种模式。只需要修改内表里关于STYLE设置的值然后刷新.使用方法set_ready_for_input传入参数i_ready_for_input = 1可以是ALV进入编辑状态。

使用这个方法可以使ALV在编辑和不可编辑模式之间切换。显然如果把参数i_ready_for_input设置为0就进入不可编辑状态。

grid有两个事件:data_changeddata_changed_finished.第一个事件在可编辑字段的数据发生变化时触发,可用来检查数据的输入,第二个事件是当数据修改完成后触发。

我们可以通过方式REGISTER_EDIT_EVENT来设置,如何触发数据改变事件.2种方式:

必须设置一种方式,要不然数据变化事件不会被触发.

  通过这个类的属性,我们可以查到一些修改信息:

通过上述一系列方式和属性,可以获取修改的值,而进行一些输入的检查.

1.类中增加一个事件的方法

  1.常用的控制字段如下

列的位置,第几列,例如1,2,…..

表名,如果是内表,是1

ALV 控制:流动表示的指数

X'.也是隐藏,但是有点不一样

X',下面出现下划线,响应单击

输出状态.'X'可输入

树控制: 列名称/项目名称

标识是否可以选择树控制中的列

2布局控制[layout]详细的结构说明

小标题,如果设置了这个字段,
则标题与列标题大小一样

标题,在网格和工具条之间

如果被设置,列标题隐藏

如果被设置,选择列在选择模式

带有复杂单元格颜色编码的字段名称

带有简单行彩色代码的字段名称

可选行颜色,如果设置了,出现了间隔色带

可以对NUMC字段进行合计

总计输出在第一行,小计在新的值之前

如果方法调用是静态的,可以设置这个标记,这表示,如果每次显示ALV都是
相同的字段目录.既然这样,那么字段目录会被放到一个特殊的缓存里,
这样加速了ALV的显示

输出数据参考的数据字典的结构名,例如'SFLIGHT'.如果指定了这个参数,字段

决定用户是否可以保存变式:

决定用户是否可以定义默认的布局:
'X' 可以定义默认布局,这个参数是默认的

布局参数,传递布局控制的一些信息

如果在字段目录中,一些字段通过SP_GROUP被分组在一起.我们就必须为这些
组传递一个组的文本内表进去

需要隐藏的标准的按钮的内表

为每个句柄分配了超连接的内表,LVC_S_HYPE中的HREF存放了超连接的地址,
HANDLE指定了句柄,使用这些句柄,你可以在GRID中使用超连接

比较复杂,没有用过,意思好象是可以在图表中显示ALV.

输出数据存放的内表,数据都是存放在这个内表里

刷新的稳定性,有2个参数,一个是行,一个是列.如果设置了相应的值,
那么对应的行,或者列,在刷新的时候,将会保持稳定,就是滚动条保持不动.

这个参数只是在异常情况下被使用,如果设置了这个参数,任何创建的合计,
任何排序次序,任何为了显示数据而设置的过滤都将保持不变.这个是非常
有意义的.例如:当然你没有修改数据内表里的数据而想刷新ALV,仅仅只是
改变一下布局和字段目录.

  Excel函数大全

  数据库和清单管理函数

  DGET   从数据库中提取满足指定条件的单个记录

  DPRODUCT   乘以特定字段(此字段中的记录为数据库中满足指定条件的记录)中的值

  DSTDEV   根据数据库中选定项的示例估算标准偏差

  DSTDEVP   根据数据库中选定项的样本总体计算标准偏差

  DSUM   对数据库中满足条件的记录的字段列中的数字求和

  DVAR   根据数据库中选定项的示例估算方差

  DVARP   根据数据库中选定项的样本总体计算方差

  EDATE   返回在开始日期之前或之后指定月数的某个日期的系列数

  EOMONTH   返回指定月份数之前或之后某月的最后一天的系列数

  WORKDAY   返回指定工作日数之前或之后某日期的系列数

  DDE 和外部函数

  SQL.REQUEST   连接外部数据源,并从工作表中运行查询,然后将结果作为数组返回,而无需进行宏编程。

  CONVERT   将一种度量单位制中的数字转换为另一种度量单位制

  DB   使用固定余额递减法,返回一笔资产在指定期间内的折旧值

  DDB   使用双倍余额递减法或其他指定方法,返回一笔资产在指定期间内的折旧值

  DOLLARDE   将按分数表示的价格转换为按小数表示的价格

  DOLLARFR   将按小数表示的价格转换为按分数表示的价格

  MIRR   返回正负现金流使用不同利率的修正内部收益率

  NPV   基于一系列现金流和固定的各期贴现率,返回一项投资的净现值

  PPMT   返回投资在某一给定期次内的本金偿还额

  SYD   返回某项资产按年限总和折旧法计算的某期的折旧值

  VDB   使用递减余额法,返回指定期间内或某一时间段内的资产折旧额

  XIRR   返回一组不定期发生的现金流的内部收益率

  XNPV   返回一组不定期发生的现金流的净现值

  YIELDDISC   返回折价发行的有价证券的年收益率,例如:国库券

  CELL   返回有关单元格格式、位置或内容的信息

  ADDRESS   以文本形式返回对工作表中单个单元格的引用

  HYPERLINK   创建快捷方式或跳转,打开存储在网络服务器、企业内部网或 Internet 上的文档

  VLOOKUP   查找数组的第一列并移过行,然后返回单元格的值

  CEILING   对数字取整为最接近的整数或最接近的多个有效数字

  COUNTIF   计算符合给定条件的区域中的非空单元格数

  ROMAN   将阿拉伯数字转换为文本形式的罗马数字

  AVEDEV   返回一组数据与其均值的绝对偏差的平均值

  AVERAGEA   返回参数的平均值,包括数字、文本和逻辑值

  COVAR   返回协方差,即成对偏移乘积的平均数

  CRITBINOM   返回使累积二项式分布小于等于临界值的最小值

  MAXA   返回参数列表中的最大值,包括数字、文本和逻辑值

  MINA   返回参数列表中的最小值,包括数字、文本和逻辑值

  PROB   返回区域中的值在两个限制之间的概率

  STDEVA   估计样本的标准偏差,包括数字、文本和逻辑值

  STDEVPA   计算整个样本总体的标准偏差,包括数字、文本和逻辑值

  STEYX   返回通过线性回归法计算 y 预测值时所产生的标准误差

  VARA   估计样本的方差,包括数字、文本和逻辑值

  VARPA   计算整个样本总体的方差,包括数字、文本和逻辑值

  ASC   将字符串中的全角(双字节)英文字母或片假名更改为半角(单字节)字符。

  CODE   返回文本串中第一个字符的数字编码

  FIND   在其他文本值中查找文本值(区分大小写)

  FIXED   使用固定的十进制数将数字设置为文本格式

  JIS   将字符串中的半角(单字节)英文字符或片假名更改为全角(双字节)字符。

  MID   从文本串中的指定位置开始返回特定数目的字符

  PROPER   将文本值中每个单词的首字母设置为大写

  SEARCH   在其他文本值中查找文本值(不区分大小写)

21.  检查数据对象f的内容是否遵从某个选择表的逻辑条件:f in

25.  循环的中止:CONTINUE无条件中止当前循环并开始下一轮循环,CHECK条件为真时循环,为假时结束本次循环并开始下一轮循环,EXIT无条件中止并退出整个循环.

sep].如果结果出现被截断的情况,SY-SUBRC返回4,否则返回0.符号&用于在字字符串换行时的连接.

37.  字符串比较中的换码字符:#,用于转换比较时使用的通配符:*+.及进行区分大小写,空格的比较,#A表示比较大写的A.

44.  程序打包release:SE01:找到对应的程序,点开后点上面小汽车,再选中上面的后再点小汽车.check.程序修改后需要重新打包.

2.结束程序:LEAVE PROGRAM.可在任意点强制结束当前运行的程序.

扁平类型:运行时长度固定的类型.

纵深类型:运行时长度可峦的类型.

2.类型T,D,I,F的数据存储长度是固定的,不能指定参照其生成的数据对象占用的内存字节数.

3.基于类型C,N,P,X生成的数据对象需要在声明时指定其长度.否则取默认值.

4.如果在声明一个数据对象时未指明其数据类型,则该数据默认为C类型.

5.类型I的数值范围:-231到231-1的整数.如果运算时出现非整型结果则进行四舍五入取值.而不是截断小数.

6.类型P用于声明小数字固定的压缩数,其占据内存字节数和数值范围取决于定义时指定的整个数据的大小和小数点后位数,如果不指定小数字,则将其视为I类型数据.有效大小可以是从1~16字节的任意值,小数点后最多允许14个数字.

7,类型F为浮点数,浮点意思是数字在内存中以字节形式表示,数值范围:1*10-3071*10308,因系统将F类型转换为二进制数,所以可能出现舍入误差,若用户要求较高精度且数值较大时,应使用P类型数据.

8.长度可峦的内置类型String, XString是通过引用实际动态的数据对象的固定内存地址来操作.

参照自定义类型或内置类型生成数据的语法格式:

参照程序中已经声明的数据对象生成新数据语法:

参照结构类型生成的数据对象称为结构体.

表类型的对象称为内表.

数据字典中的数据类型与ABAP中的中数据类型对应关系:

长字符(V3.0前可用)

两个结构体的同名字段之间可以整体进行算术运算:

以上将对两个结构体中的同名字段进行相应运算(非数值类型数据会引起错误).

任意类型参数的函数列表:

返回参数符号:正数返回1,0返回0,负数返回-1.

返回不小于输入参数的最小整数值

返回不大于输入参数的最大整数值

注意:函数名与左括号间不能有空格,括号与参数间必须有空格.

F类型参数的函数列表(其它类型参数将首先被转换为F类型).

底数为e(2.)的幂函数

忽略输出时字段后的一位空格

指定数据字典中定义的格式模板m

用空格替代所有有前导零

输出d定义小数点后的数字位数,如需截断,则四舍五入

F类型字段在e>定义幂指数

10的负r次方乘P类型字段,然后取整

按系统表格TCURX中定义的格式将货币c格式化

格式调整,”/”为用户主记录中定义的分隔符

格式调整,”/”为用户主记录中定义的分隔符

其中,f为变量,fij可以是变量或者固定值.

说明:n为循环次数,可以是文字或变量,如果没有限定n,则必须用EXIT,STOPREJECT等语句强制结束循环.DO循环可嵌套,SY-INDEX为当前循环次数.

:可嵌套,其它同上.

:所有字符串操作将忽略s1....sn中的尾部空格(如需保留空格,可使用指定偏移量).

如果出现截断情况,SY-SUBRC设为4,否则返回0.

如果所有子串足够长且不必截断任何部分,则将SY-SUBRC设为0,否则返回4,

如果源字符串能够拆分的子串多过指定的数目,则源子串最后的剩余部分包括其后的分隔符都将写入最后一个子串,要避免这种情况,需要使用内表进行操作:

n = STRLEN( str ).函数将str作为字符数据类型处理,不考虑其实际类型,也不进行转换.计算其首字符到最后一个非空字符的长度,不包括结尾空格.

4.5.2字符数据比较(用于判断两个字符串之间的包含关系):

如果s1仅包含s2中的字符,逻辑表达式为真

如果s1还包含s2之外的字符,逻辑表达式为真

如果s1包含任何一个s2中的字符,逻辑表达式为真

如果s1不包含s2的任何字符,逻辑表达式为真

如果s1包含字符串s2,逻辑表达式为真

如果s1不包含字符串s2,逻辑表达式为真

如果s1包含模式s2,逻辑表达式为真

如果s1不包含模式s2,逻辑表达式为真

:CO,CN,CA,NA比较时区分大小写,且尾部空格也在比较范围之内,CS,NS,CP,NP比较时忽略尾部空格且不区分大小写,比较结束后,如果结果为真,SY-FDPOS将给出s2s1中的偏移量信息.模式表示可以使用通配符,”*”用于替代任何字符串,”+”用于替代单个字符.

4.5.3定位操作子串

可动态指定偏移量及长度的情况(positionlen可为变量):

types定义的并不是结构体对象,只是结构类型,不能作为工作区,当定义的内表没有表头行(工作区),必须为其定义一个结构体作为工作区,否则无法使用此内表.如果没有给内表定义工作区,则在定义内表时必须声明表头行(with

1.TYPESDATA区别:TYPES是用来定义某种类(),(DATA语句)实例化以后才可以使用,DATA是用来定义数据对象(实例变量),对于用DATA直接定义的结构体对象(不参照其它结构类型),其同时也是一个结构类型.

2.TYPELIKE区别:TYPE后面跟随的只能是某种类(),LIKE后面可以跟随类型或实例对象,参照结构体对象生成内表时只能用LIKE,不能用TYPE,因为结构体对象不是类型,只是一种实例对象,参照结构类型生成内表时可以用LIKE也可以用TYPE.其中通过LIKE定义的内表直接拥有参照结构类型的元素结构,而通过TYPE定义的内表只能间接拥有被参照结构类型的元素结构,结构类型不能作为内表的工作区,只有结构体对象才可以.

1.标准表:可指定或不指定关键词,可重复.逻辑索引,操作数据时数据内存位置不峦,系统只重排数据行的索引值.

2.排序表:可指定唯一或不唯一的关键词,也可不指定,逻辑索引,按关键词升序存储.

3.哈希表:必须指定唯一关键词.无索引

:如果n值为0或不指定的话,程序会为内表对象分配8KB大小内存,所以,如果内表比较小,不要把该值设为0,以避免内存浪费.

itab.当itab有表头行时表示操作表头行,如无表头行时表示操作内表对象.

当一个操作语句结束后,SY-TABIX返回该行的索引值,对于所有行操作,如果访问成功,SY-SUBRC返回0,否则返回非0.

itab.此语句对于标准表来说与append效果相同,对于排序表来说,插入的行不可以打乱按照关键词排序的顺序,否则插入不成功,对于哈希表来说,插入过程中系统按照关键词对行进行定位.INITIAL关键词是用于向内表中插入结构中各类型的初始值的.

5.附加行—APPEND(只能操作索引表)

itab.对于需要附加的数据,如果在内表中存在关键词内容与其相同的数据行,则此语句将需要附加的数据累加到内表中的这一行上,而不会另外再添加一行,操作成功后,SY-TABIX返回被处理过的行的索引.

:关键词以外的所有字段必须是数字类型

7.读取行—READ(可用于任何类型内表)

4.6.3操作整个内表

l   AS TEXT:根据当前语言按字母顺序排序字符字段,否则按字符平台相关内部编码进行排序.

2.控制级操作(用于总计,缩进,格式控制等)

l   FIRST:当循环为内表的第一行时,执行语句块中语句.在工作区中,系统用*填充所有关键词内容.

f:字段f前面(即左边)的全部字段内容之一不同于上一行时执行语句块中语句.在工作区中,系统用*填充f后面所有关键词内容.

l   END OF f:如果下一行行组中的任何字段内容不同于上一行执行语句块中语句.在工作区中,系统用*填充f后面所有关键词内容.

:在控制级操作期间,在工作区中,对于非标准关键词段,将全部进行初始化,在执行完控制操作后(ENDAT语句后)工作区中的数据将全部还原到进入控制级操作语句前(即进入AT)状态.

l   VALUE参数表未示值传递,此方式在子程序调用后实参的值不会被改变.

包含程序是单纯的代码复用,不是可执行程序,不能单独运行,必须被其它程序调用,包含程序不能调用自身.

4.9.1静态错误检查

4.9.2运行时错误控制

其中exci表示一个单一可捕捉错误或者一个ERROR,rci则代表一个数字.如果其中错误之一在CATCHENDCATCH语句之间出现,程序就不会中止,而是直接跳至ENDCATCH,把系统指定的错误代码rci赋给字段SY-SUBRC.此语句可嵌套.例如:

2.不可捕捉的错误(通过ST22查看,SAP系统中保存14,可通过Keep功能保存更长时间).

第六章 数据库操作

在数据字典中,每创建一个数据库表后,都将同时生成一个同名的结构化数据类型.

外部关键词内容必须在其对应的约束表(check table)中存在,否则无法插入.

            缓冲机制的意义在于首次查询时将数据表中的数据放入应用服务器缓冲区,以提高后续查询效率,注意最好不要对经常需要的数据库表设置该机制,对于经常读取但很少更新或者通常只有在60秒后才可能被其他应用服务器程序修改的数据库表,开启缓冲机制可以上百倍地提高效率.

一个数据库表可以包含一个主索引(Primary Index)和多个附属索引(Secondary Indexes).主索引只包含表关键词和指向整个数据条目的指针,由系统自动生成并在添加数据库条目时进行维护.索引中的数据已经排序.

6.3.3选择多行数据

系统字段SY-DBCNT给读取的行计数.

其中INTO选项将复盖itab中的数据,如果不想复盖只想追加则用APPENDING.

3.指定选择包大小(一次选择到内表的行数):

6.3.4指定查询条件

6.3.5多表结合查询

6.3.6组合查询结果

a1]...其中DISTINCT选项将在统计之前先排除相同的选择结果.

OF附加项,使用后者时需要通过AS后面的别名将总计结果存放在与别名同名的字段中.

6.3.7其它格式说明

(s1,...)...动态指定数据库表,注意数据库表名必须大写.

6.3.8使用光标(多个光标可指向同一个选择)

SELECT语句中,数据从数据库中以大小为32KB的数据包传递至应用服务器,并通过INTO子句传至ABAP程序.

l   在另一个工作过程继续程序的执行,这一般出现在RFC(远程功能模块)的调用或返回过程中.

相应地,下列情况将使数据库隐式地进行返回操作:

SQL语句不能被分隔为几个对话步骤,即通过SAP LUW可以将多个数据库LUW进行捆绑,并保存整体初始状态,不进行真正的数据库修改,SAP LUW中的最后一个数据库LUW结束时,再进行整体修改,或者整体取消操作.

SAP LUW提供两种具体数据库LUW捆绑机制:

process),因此可以将多个分布在不同对话过程中的类似模块捆扎在一起,SAP LUW结束时,确保所有模块被同时成功执行或整体放弃,因此可通过该方式封装分布在不同对话过程中的所有数据库更新操作.一个SAP LUW并触发更新工作过程,该过程在同一个数据库LUW中进行更新操作,因而数据库LUW此时可以替代SAP开始进行一致性控制.这些进行更新工作的FUNCTION可以被设为同步(AND WAIT)或异步模式.即是否要等到更新任务完成后才继续执行后续语句.

OBJECT>,调用这两个功能模块时可以分别锁定或解除锁定对象.被锁定的对象只有在解除锁定之后才可以被其它应用读取或写入.锁定模式:

l   共享锁定(shared):该模式允许 多个用户访问指定表行,但只能读访问.任何时候都不允许写访问。

l   扩展排他锁定(exclusive,cumulative): 该模式避免具有读写访问权限的单个用户获得对相同表行集的进一步锁定。当使用递归例程更新时,该模式很有用。

激活锁定对象导致系统生成用于锁定和解锁对象的特殊功能模块。这些功能模块称为:

这两个EXPORTING参数,存在于锁定参数的每个字段arg中。将arg设置为所需的关键字字段值。如果该字段不需要特殊值,则忽略arg参数,或者将其设置为字段的初始值。如果要将字段的初始值作为实际选择值,请将x_arg设置为‘X

如果事务不调用更新任务功能,则只在对话任务中更新。应该使用相应的DEQUEUE功能直接释放锁定。

如果调用任意的V1更新任务功能,请设置参数_SCOPE以告知系统应该如何释放SAP锁定。可能的值为:

1该值用于创建更新任务中不需要的锁定。在整个对话任务处理中保持使用_SCOPE=1设置的锁定,但该锁定并不能用于任意的更新任务请求。要保证不将锁定保持超过必要的时间,在事务结束时应该直接释放它(通过相应的DEQUEUE功能)。

ROLLBACKWORK时释放:系统不释放使用_SCOPE=1设置的锁定。在编制反转程序时,请使用DEQUEUE功能。

2该值用于创建下列锁定:

-在更新任务触发之前在对话任务中使用

-一旦已经触发了更新任务,则只在更新任务中使用。

这意味着在COMMITWORK已经触发更新任务之后,如果该任务继续运行,则锁定不再可用于对话任务事务。系统在V1更新任务处理结束之后(或者在下一ROLLBACKWORK)释放锁定。

如果不指定_SCOPE,该值就是缺省值。不需要将DEQUEUE用于使用_SCOPE值创建的锁定。但是,如果_SCOPE=2,并且不调用更新任务功能,则不触发更新任务而且系统不释放锁定。

ROLLBACKWORK释放:如果在提交前发生反转,则系统释放使用_SCOPE=2设置的锁定。在提交之后,锁定保持到更新任务处理结束。

3使用该值创建以下锁定:

-在触发更新任务之前在对话任务中使用

-在触发更新任务之后,由对话任务和更新任务使用。

也就是说,对话任务程序继续使用该锁定,甚至该更新任务功能正在运行时也是如此。在这种情况下,锁定由对话事务和更新任务功能所“共有”。

V1更新任务处理之后的某个时刻系统释放锁定。但是,应该直接释放锁定(通过相应的DEQUEUE函数)以确保尽可能早地释放。

ROLLBACKWORK释放:一旦已经触发更新任务,则使用_SCOPE=3设置的锁定有两个独立的所有者。要删除锁定,必须在对话任务和更新任务两方同时删除此锁定。如果在提交前发生反转,则在更新任务方释放锁定,但是对话任务方仍然保留它。如果在提交后发生反转,则系统在双方都不释放该锁定。在这种情况下,必须使用DEQUEUE功能在对话方直接释放该锁定。更新任务方将自动释放锁定。

如果用户在事务完成前已经退出了该事务(例如通过“/n)或者程序异常终止,则系统释放所有锁定。V2功能也不能继承对话任务所创建的锁定。

EXPORTING参数告知:如果即将锁定的对象已经由其它用户锁定,ENQUEUE是否应该等待。如果要等待则将_WAIT设置为'X'。在这种情况下,系统试图以指定时间长度的重复间隔锁定该对象。如果这些尝试失败,则ENQUEUE导致FOREIGN_LOCK例外。

如果程序不想等待,则将_WAIT设置为其它任何值。在这种情况下,ENQUEUE导致FOREIGN_LOCK例外,并且将系统字段SY-MSGV1设置为已经拥有该锁定的用户名。

在调用ENQUEUE功能模块之后,应该检查在程序中该对象是否已经锁定。在功能模块中定义了下列例外:

其它用户已经锁定了对象。系统字段SY-MSGV1包含该用户名。

6.5.3用户权限检查

(3)程序内部权限检查

6.6其它数据操作形式

INPUT:读取方式,如果文件不存在则忽略此命令.如果文件己打开,操作指针将复位到文件的起始位置.

OUTPUT:写入方式,如果文件不存在则创建文件,如果文件存在但处于关闭状态则删除其内容,如果文件存在且己打开,指针复位.

MODE:文本模式,读取或写入数据时,数据逐行传输,系统假定文件具有行结构,如果要将字符串写入文件或己知现有文件是基于行结构的格式,则应用使用此模式.

MODE:二进制模式,读取或写入数据时系统逐字节地传输数据,传输期间系统不解释文件内容,在将某文件内容写入到另一文件时,系统将传输源文件的所有字节,在从文件读取到字段时,传输的字节数取决于目标字段的大小.

msg:系统将在变量msg中放置相关操作系统消息.要进行错误处理,应与通过该选项和系统字段SY-SUBRC返回值一起接收完整的错误消息.

2.关闭文件:CLOSE DATASET dsn.只有在写入文件前要删除当前文件内容时,才有必要关闭文件.

len].将数据对象f的值写入文件dsn.字段f可以是基本数据类型,或者不包含作为内表组件的结构体,文件写入模式由OPEN DATASET语句在打开时指定的,如果没有打开,系统将尝试用二进制方式打开,或使用上一个OPEN DATASET语句的模式,LENGTH指定传输数据的长度,如果f的长度大于len则截断,否则填充空格,如果文件以文本模式打开,则每个TRASFER语句中,系统向文件中传输除结尾空格之外的所有字节,并在其后作结束标记.

DATASET语句指定传输模式,读取成功SY-SUBRC返回0,读到文件末尾返回4,不能打开时返回8,如文件以二进制模式打开,可用LENGTH指定传输长度,如文件以文本模式打开,则每个READ DATASET语句中,系统将读取下一个行结束标记之前的所有数据.

该程序在应用服务器的\tmp目录中创建了一个文件myfile存储程序内表中的数据,SAP应用服务器文件及目录可以通过事务AL11(SAP

此语句将列表中指定的数据对象存储为ABAP/4内存中的数据簇。如果忽略选项FROM<gi>,则将数据对象<fi>存储到自己的名称之下。如果使用该选项,则将数据对象<gi>存储到<fi>下面。

<key>相同的任何现有数据簇的内容.对于有表头行的内表,只可以存储表本身,而不能存储表头行。在EXPORT语句中,将表名解释为表。这是例外。通常情况下,语句将表名解释为表工作区

此语句从ABAP/4内存的数据簇中读取列表中指定的数据对象。如果忽略选项TO<gi>,则将内存中的数据对象<fi>赋给程序中的同名数据对象。如果使用此选项,则将内存中的数据对象<fi>写入字段<gi>中。ID<key>用于标识内存数据,不得超过32个字符。

不必读取存储在特定ID<key>下的所有对象。相反,可以从名称<fi>中进行选择。如果内存中不包含指定ID<key>下的对象,则将SY-SUBRC设置为4。但是,如果内存中存在带此ID的数据簇,无论数据对象<fi>是否也存在,SY-SUBRC之值总是为0。如果簇中不存在数据对象<fi>,则目标字段保持不变。

此语句不进行这种检查:即内存中的对象结构与要写入的结构是否匹配。因为数据是按位进行传送的,所以不匹配的结构可能会引起不一致。

3.删除内存中的数据簇

(2)数据库中的数据簇

建立簇数据库的规则如下所述。必须创建第一点到第四点中列出的关键字段。上述数据类型都是ABAP/4词典类型。

1.如果该表是针对客户的,第一个字段必须这样定义:名称为MANDT,类型为CHAR,长度为3字节,用于存储客户ID。存储数据簇时,系统既可自动使用当前客户填写字段MANDT,还可使用EXPORT语句中显式指定的客户进行填写。2.下一字段(对于与客户无关的表,这是第一个字段)必须这样定义:名称为RELID,类型为CHAR,长度为2字节。该字段包含区域ID。簇数据库被分成不同的区域。存储数据簇时,系统用EXPORT语句中指定的区域ID填写字段RELID3.下一字段类型为CHAR,长度可变。它包含簇的名称<key>,存储数据簇时,在程序中用EXPORT语句的附加ID指定了该簇。因为后面的字段要对齐,所以系统应最多使用3个未用字节填充在字段RELID的结尾。如果创建自己的簇数据库,应该相应地定义此字段的长度。

4.下一字段必须名称为SRTF2,类型为INT4,长度为4。单个数据簇可以扩展到数据库表的好几行中。在理论上,每个簇可能有2**31行。字段SRTF2包含存储的数据簇内行的顺序号码,可以是02**31-1之间的任何值。存储数据簇时,系统自动填写此字段(参见第7点)。

5.SRTF2的后面可以是任何数目的数据字段,这些字段名称和类型可任意交换。存储数据簇时,系统并不自动填写这些字段。必须在程序中的EXPORT语句之前将值显式分配到这些字段。通常包含诸如程序名、用户ID等控制信息。

6.行上的倒数第二个字段名称必须为CLUSTR,类型为INT2,并且长度必须为2。它包含后面的字段CLUSTD中的数据长度。存储数据簇时,系统自动填写此字段。

7.行上的最后一个字段必须名称为CLUSTD,类型为VARC。其长度可以任意,但通常为1000个字节左右。存储数据簇时,系统按压缩格式用实际数据填写此字段。如果CLUSTD的长度不足以存储簇数据,则数据就被分布到多行上。这些行在字段SRTF2中进行编号(参见上面的第4点)。

既可以按照上述规则创建自己的簇数据库(此时参见文档ABAP/4词典),也可以使用系统定义的簇数据库INDX

(2)在簇数据库中存储数据对象

此语句将列表中指定的数据对象存储为簇数据库<dbtab>中的簇。必须用TABLES语句对<dbtab>加以声明。如果不附加FROM<gi>,则将数据对象<fi>存储在自己的名称之下。如果有附件项,则将数据对象<gi>存储到名称<fi>之下。

l   在处理特定客户的簇数据库时可以使用选项CLIENT <cli>关闭自动客户处理,然后自己指定客户。必须在指定数据库名称之后立即指定此选项。

l   EXPORT语句也将表工作区<dbtab>的用户字段内容传输到数据库表。根据需要,可以预先填写这些字段。

在具有相同名称<key>的相同工作区<ar>和相同客户系统<cli>中,EXPORT语句总是完全改写任何现有数据簇的内容。对于含有表头行的内表,只可以存储表本身,而不能存储表头行。在EXPORT语句中,将表名解释为表。这是例外。通常将表名解释为表工作区

(3)创建数据簇目录表

<ar>是即将存储数据库的簇的两字符ID<key>标识数据库中的数据,其最大长度取决于<dbtab>中名称字段的长度。在处理特定客户的簇数据库时,可以使用选项CLIENT<cli>关闭自动客户处理,然后自己指定客户。必须在指定数据库名称之后立即指定此选项。

IMPORT语句也自动从数据库表中读取表工作区<dbtab>的用户字段内容。如果可以创建某个目录表,则把SY-SUBRC设置为0。否则,设置为4

(4)从簇数据库中读取数据对象

此语句从数据库<dbtab>中的数据簇中读取列表中指定的数据对象。必须用TABLES语句声明<dbtab>。如果不附加TO<gi>,则将数据库的数据对象<fi>分配给程序中的同名数据对象。如果不附加此选项,则将数据库的数据对象<fi>写入字段<gi>

<ar>是即将存储数据库的簇的两字符区域ID<key>标识数据库中的数据,其最大长度取决于<dbtab>中名称字段的长度。可以用MAJOR-ID<maid>代替附加ID<key>。然后,就选定名称的第一部分与<maid>相符的数据簇。如果指定具有MAJOR-ID的附加MINOR-ID<miid>,则选择名称的第二部分(也就是<maid>长度之后的位置)大于或等于<miid>的数据簇。在处理特定客户簇数据库时,可以使用选项CLIENT<cli>关闭自动客户处理,然后自己指定客户。必须在输入数据库名之后立即指定此选项。IMPORT语句也自动从数据库表中读取表工作区<dbtab>的用户字段内容。

不必读取存储在特殊名称<key>之下的所有对象,但可以使用名称<fi>作出选择。如果数据库不包含具有指定关键字<ar><key><cli>的对象,则将SY-SUBRC设置为4。但是,如果数据库中存在具有这些关键字的数据簇,那么,无论是否存在数据对象<fi>SY-SUBRC之值总是为0。如果簇中没有数据对象<fi>,则目标字段保持不变。

运行时,系统检查此语句以查看数据库中对象的结构是否与要写入的结构相符。如果不符合,将出现运行时间错误。类型C字段是此规则的例外,也可显示在结构数据字段结尾。可以加长、缩短、附加或忽略。

(5)从簇数据库中删除数据簇

例如:将一个屏幕字段由可以将接受输入状态改为显示状态:

FIELDf:PAI中屏幕字段f的值在此语句后才传给abap程序.

3.LEAVESCREEN:如果需要未完成当前屏幕控制流就要转入后续屏幕,使用此语句.

3.组合字段条件调用:

fi之一满足条件时,mod1被调用,figi满足条件时,mod2被调用.

只有f3包含非初始值时才调用mod1.

f1,f2,f3中任一字段包含非初始值时都调用mod1.

:条件调用也将使值被延迟传输.

  1. 自行设计对话模块,通过代码设计帮助文档:

在屏幕元素属性对话框中填充ON_CTMENU字段,同时创建同名子程序

当在屏幕相应字段上单击右键并选择相应的菜单时,程序调用PAI事件,同时将此子程序中设定的功能代码传递给OK_CODE字段.而不是屏幕中设定的功能代码,所以一定要注意此处的功能代码要与屏幕中的功能代码设置为一致.

在屏幕的流逻辑中定义字段的下拉列表(POV事件):

71.  表格控件:SAP的标准控件,是一种平台无关的软件元素,定义方式如下:

SY-STEPL:表格控件中当前操作的屏幕行号.

SY-LOOPC:当前表格控件在屏幕中总行数.

要离开列表自理过程,可以按BACK,EXITCANCEL或者使用下列语句:

我要回帖

更多关于 excel公式IF赋值并添加颜色 的文章

 

随机推荐