学习SAP程序语法总结

来源:互联网 发布:php企业网站模版 编辑:程序博客网 时间:2024/05/16 04:57
 1, 类型转换:如果从字符转到数字字符,则只转化数字部分。如果是时间转化为数字,则全部转化为秒来存储。
2, 数值运算,运算符+,-,*,/和()都是ABAP的关键字,前后均必须有空格。
3, 格式化输出:DATA pack TYPE p VALUE ‘123.456’ DECIMALS 3.
4, 逻辑表达式 EQ,NE,LT,LE,GT,GE用于数字类型,而字符类型则使用CO(等于),CS(包括).
5, IS操作符,IS INITIAL; IS ASSIGNED;
6, 一般性类型(非完全限定类型 Generically types)和完全限定类型(fully qualified type).
7, 扁平类型 (数据对象保存的是对象的值)和纵深类型(数据对象保存的是另外一个对象的地址域)
8, 局域类型(分两种,一种是在一个程序内,另一种是在一个模块内)与全局类型(在数据字典中定义).
9, 数据字典类型的数据元素必须在域中创建,数据字典类型也有预定义的(内置的)数据类型,其创建的对象与普通的数据对象区别在在作用范围更广。
10, 数据对象分为三类:一,有名的数据对象(如变量)二,文字;三,系统字段(如系统时间)。通过DESCRIBE来显示数据对象属性。
11, R/3业务模块,一生产计划控制(PP);二,物料管理(MM);三,销售与分销(SD);四,财务会计(FI);五,管理会计(CO);六,人力资源(HR)。
12, APAB内存的作用域只有一个主会话中有用,(作用:如果一个程序内部调用另一个程序,则可先用EXPROT TO MEMORY将数据存入APAB内存,在被调用程序中通过IMPORT FROM MEMORY语句读取APAB内存数据);而SAP内存则在各个主会话间共享,通过SET PARAMETER 和GET PARAMETER 实现参数设置。
13, 数据赋值,MOVE source TO destination等价于=;而结构体赋值则使用=号或者MOVE-CORRESPONDING.(相同组件逐个赋值)
14, 截取某一段字符的操作为:string + i (j); 意思就是截取字符串string ,从I 开始,共J个字符。
15, 创建一个内表过程:使用DATA 语句根据结构体作为行类型,创建一个标准表,然后使用APPEND语句对内表进行填充,然后通过LOOP AT 逐行处理已填充的数据。
16, ABAP 有三种内表类型:标准表,排序表,哈希表。内表的表关键字也就是根据哪个字段进行索引,可指定UNIQUE,标准表只以能是NON-UNIQUE(默认设置,无需指定),而哈希表只能是UNIQUE(必须指定),而排序表则可有可无。内表的大小默认为8KB.
17, 数据传输的过程,从数据库到工作区再到内表;访问内表,则表内表数据写入工作区,再对工作区进行访问。
18, 对内表进行插入:insert line into itab;或者insert lines of itab1 into itab2;此种方式比前者方式快出将近20倍。
19, 聚集附加:COLLECT line into ital;作用:根据表关键字附加行。要求一,内表一定只能是扁平结构;二,工作区与内表行类型完全兼容;三,非表关键字字段必须是数字类型。
20, 读取内表的行两种方式:一,根据索引read table itab into wa index idx.二,根据关键字read table itab from key into wa.
21, 修改内表的两种方式:,一,根据索引 modify itab from wa index idx; 二,根据关键字, modify table itab from wa.三,一次性个修改多行 modify itab transporting seqno(修改的字段) where ..... ;
22, 内表的排序 sort itab descending as text by f1.
23, 内表的控制级操作at level //<statement block >endat. 行组指的是字段F和F前面的全部字段,如果行组中的任何字段内容不同于上一行,则执行语句块中的内容。
24, 对内表进行初始化,清空,四放,CLEAR itab; clear itab[];refresh itab; free itab;
25, 字段符号:<fs> 可以理解为一个可以指向所有类型的指针,例:FIELD-SYMBOLS <fs> TYPE INDEX TABALE. ASSING itab to <fs>; 解为定义一个指向索引表的字段符号,然后对字段符号赋值。
26, 按值传递和按引用传递:语法上最大的区别在开,定义一个子程序时的形式参数有没有使用VALUE;例:form self_add using p1 type I,value(p2) type i.那样P1就是按照引用传递。
27, 子程序(form)与功能模块(function)的区别
28, 包含程序:只相当于把代码段插入到引用该名包含程序的位置,但不能与调用它的程序进行显式的数据传递,且包含程序不可单独运运,必须由其它程序调用。
29, 运行时错误控控制,一,直接把CATCH SYSTEM-EXCEPTIONS ***** ENDCATCH 来包含需要捕捉错误的代码块,再根据错误的返回代码进行相应的处理。 二,不可捕捉的错误,系统直接创建并进入Short Dump 界面,使用ST22事务代码查看。
===========2007-11-28==================
1,标准屏幕必须隶属于一个类型为I,M或F的ABAP程序,其中须要设计的内容包括屏幕布局(layout)以及隐含在其后的流逻辑(flow logic)。
2,所有的输入输出元素都需要有两种字段,一种的屏幕字段,另一种的ABAP程序字段,且两种字段在名称,长度,类型上一一对应。
3,OK代码字段,该字段的作用是返回用户在屏幕中触发的功能代码。
4,每一个屏幕流逻辑中都至少包含PBO与PAI这两个关键字语句,流控制中最常用的关键字除了PROCESS外还有MODULE.
5,用户交互屏幕的实现的几个步骤:1,创建屏幕,二在屏幕流逻辑中添加PBO,PAI的并相印调用不同的模块(MODULE)
6,P360页所有的消息都存储在系统数据表T100中,包含四个字段,语言代码,消息类,消息序列号,消息文本。进入消息的初始界面的事务代码为SE91。消息类型(与消息类不同)共六种,A,E,I S,W,X。系统消息类为00。
例: MESSAGE S001(ZMM01) WITH 'Data was not found'."S是消息类型,001是消息文本,在此处为&占位符,所以需要WITH文本来替代,ZMM01是消息类。

7,子程序的定义与调用,在定义与调用的中使用USING或CHANGING两个关键字进行实参与形参的定义。在调用中两者没有区别,只有在定义中才有点区别,区别就是CHANGING后面附带的参数不管有没有VALUE都实现按引用传值的结果。
8,内表定义中使用表头行与没有使用的区别:
一, Loop at wa_tab.与loop at wa_tab into wa_line.
二,IF NOT IT_LAYOUT[] IS INITIAL.与if not it_layout is initial.
9, 一个可执行程序的主要架构
1,声明
REPORT ZMMR0002A

2,包含程序声明,
INCLUDE ZMMR0002ATOP. "Data declarsation 数据对象声明
INCLUDE ZMMR0002AF01. "Subroutine 子程序声明

3,报表过程事件,调用函数实现程序的初始化。

INITIALIZATION.
PERFORM MAKE_MOV_TYPE

4,选择屏幕的PBO事件,初始化选择屏幕
AT SELECTION-SCREEN OUTPUT.

5,选择屏幕的PAI事件,一般用来验证用户的输入.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM GET_FILENAME CHANGING P_FILE.
AT SELECTION-SCREEN.


6,报表过程事件,用来从数据库中取得数据放在内表中,并且输出内表内容

START-OF-SELECTION.
PERFORM GET_PO_DATA. "get ekko,ekpo data
PERFORM WRITE_DATA.

7,列表输出事件,用来输出页眉。

TOP-OF-PAGE.
PERFORM WRITE_HEADER. "write page header
PERFORM WRITE_FIELD_TITLE. "write fields name

8,报表过程事件的结束事件

END-OF-SELECTION.
CHECK G_RETCD IS INITIAL.


==============2007-12-1====================
1, 数据字典的理解:主要功能有三,一,定义系统公用数据类型(基本类型,结构,表),供所有SAP程序使用,以实现项目标准化。二,如果通过数据字典定义数据库对象结构,则同时相关的数据库对象在数据库中被创建,管理数据字典中的数据就可以管理物理数据库中的数据。三,数据字典还提供屏幕字段的格式化,即输入帮助。
2, SAP仓库对象在R/3仓库中按一定的类别分类,这个类别就是开发类别,每一个仓库对象都隶属于一个特定的开发类别(development class)。与程库类型不混肴,程库类型分为两大类,一是可以分配事务代码的可执行程序,另一个不能执行的功能代码。(executable program,include program,module pool等。)

================2007-12-5===========
1, 标准的SQL语言的DML语句在ABAP中有相应的操作语句,而SQL语言中的数据定义DDL和数据控制DCL,则不能通过OPEN SQL语句来实现,也就是没有对应的操作.这两种语句的实现也不是通过Native SQL 来实现,而是借住数据字典,SAP LUW 等等,因为Native SQL 没有很好的移植性所以基本不用。
2, 表工作区相当于参照表结构声明的普通结构体数据对象,在指定了表工作区之后,SELECT语句中可以省略INTO子句,系统默认将数据读取至同名表工作区中。
=================2007-12-6==================
1, 报表创建及生成工具包括:一ABAP程序编辑哭,二QUICK VIEWER 三SAP QUERY
2, 循环的中止包括(CONTINUE ,CHECK ,EXIT)和事件的中止包括(STOP ,CHECK ,EXIT)
3, QUERY的建立三步: 一, 建立用户组SQ01,将一个或多个用户分配到用户组,表示这些用户拥有用户组的权限。二,建立功能区,将要查询的数据表分配到功能区。三,建立QUERY,选择需要的用户组和功能区,选择需要查询及输出的字段。
4, 在QUERY 输出报表中附加一个计算字段的步骤:一,新建字段组,二添加附加字段,三,编写全附代码.
5, 在QUERY输出报表中附加一字段来进行过滤数据。这个字段用来存储‘X’或空,之后对这个字段进行编码,判断在什么情况下为‘X’就可实现过滤数据。

=============2007-12-7=========
1, 商用文档(如发票,信函,支票,工资单等),开发工具有SAPSCRIPT和SMART FORMS两种。
2, 一个简单的SMART FORMS设计包括:系统默认已建立一个页面,和一个主窗口,在页面上新建图片,新建窗口,在窗口里新建文本。
原创粉丝点击