1.1 ABAP/4语言介绍
1.1.1 关键词
关键词分四类:
A.说明性关键词 TYPES;DATA;TABLES...
附:独立行注释语用’*’,语句后注释用’”’.
一,TYPES用于用户自定义数据类型
二,CONSTANTS用于创建常量CONSTANTS PI TYPE P DECIMALS 6 VALUE '3.141592'
三,DATA用于创建变量
四,TABLES用于创建表工作区
TABLES
B.事件关键词 START-OF-SELECTION;AT USER-COMMAND...
C.控制关键词 IF;WHILE;CASE;DO;CHECK;CONTIUNE;EXIT...
一,IF…ELSE/ELSEIF…ENDIF.
二, WHILE
ENDWHILE
三, CASE
WHEN
WHEN
WHEN
WHEN ...
......
WHEN OTHERS.
ENDCASE.
四, DO [
ENDDO.
五, CHECK
六,CONTIUNE无条件终止循环过程;EXIT无条件终止循环;
D.操作关键词 WRITE;MOVE;ADD...
1.1.2内表
A.什么是内表: 仅在程序运行时间内存在的内表
B.创建内表:
DATA
DATA: BEGIN OF
..............
END OF
1.1.3 常用语句
A.屏幕选择 SELECT-OPTIONS
]
[OBLIGATORY];
PARAMETERS
[
[MATCHCODE OBJECT
(AS CHECKBOX; RADIOBUTTON GROUP
B.屏幕界面 SELECTION-SCREEN;INITIALIZATION...
定义屏幕块:SELECTION-SCREEN BEGIN OF BLOCK
SELECTION-SCREEN END OF BLOCK
C.从数据库读取数据 SELECT
将数据表中的数抽取到内存变量中.(SINGLE,UP TO
SELECT
些列 、以及是否 将排除相同 的行。
FROM
INTO
以放在FROM 子句之前。 如果没有指 定 INTO 子句,系统将使用表工 作区。表工 作区是由
TABLES 语句自动创 建的表头行
WHERE
GROUP BY
的行定义顺序
此SQL操作是否成功将由SY-SUBRC的值来反映,当SY-SUBRC为0时说明成功,否则视为失败.
EG:
1. SELECT * FROM SPFLI.
.....
ENDSELECT.
2.SELECT SINGLE MAKTX FROM MAKT INTO MAKT-MAKTX
WHERE MATNR = MYD-MATNR AND SPRAS = SY-LANGU.
D.对内表进行操作
内表字段数据的读取表示方法:
段值。 操作结果可由SY-SUBRC的值来反映.
D.1 附加行 APPEND [
COLLECT [
INSERT [
D.2 修改行 MODIFY
D.3 删除行 DELETE
D.4 内表排序 SORT
D.5 访问内表 LOOP AT
READ TABLE
D.6 其它 初始内表 REFRESH
释放内表 FREE
内表属性DESCRIBE TABLE
E.变量和值操作
E.1 赋值 =;
MOVE
MOVE-CORRESPONDING
WRITE (
CLEAR
E.2 数值运算 +;-;*;/;**;MOD(余数);DIV(整倍数)...
E.3 数值函数 ABS;SING;CEIL;FLOOR;TRUNC(整数部分);FRAC(小数部分)...
E.4 字符操作 CONCATENATE ];
SPLIT INTO
CONDENSE
TRANSLATE
比较:CP;CN;CA...;
偏移量: DATA: ULTIMO TYPE D.
ULTIMO = SY-DATUM.
ULTIMO+6(2) = '01'. " = first day
of this month
ULTIMO = ULTIMO - 1. " = last day of
last month
1.1.4 定位输出
A.定位输出WRITE AT [/] [
B.表格线:ULINE,VLINE
C.空行SKIP [
D.自定义页面NO STANDARD PAGE HEADING LINE-SIZE
E.输出页头TOP-OF-PAGE;
F.输出页尾END-OF-PAGE;
G. 参数变量:SY-PAGNO,SY-DATUM,SY-UNAME,SY-UZEIT
EG: WRITE:/ '│' NO-GAP,MYD-EBELN NO-GAP,'│' NO-GAP,MYD-EBELP+1(4) NO-GAP.
1.1附:ABAP/4各语句的具体用法及详尽参数,可用F1进入帮助得到.
1.2 ABAP/4报表设计
1.2.1 报表属性 表名,表头,类,文本元素,选择文本,翻译...
ABAP/4用户报表只能以’Y’或’Z’开头.
1.2.2 权限检查
AUTHORITY-CHECK OBJECT '
权限对象可由系统管理员处得到.
1.2.3 功能函数调用:
WS_UPLOAD;WS_DOWNLOAD;CS_BOM_EXPL_MAT_V2;READ_TEXT;G_PERIOD_GET...
1.2.4 模块化编程
包含程序:INCLUDE;
过程程序FORM…ENDFORM.PERFORM
宏:DEFINE... END-OF-DEFINITION.
1.2.5 调试程式:在报表中进行断点设置
在命令框内输入/H进行跟踪调式.
1.2.6 将报表生成一个事务代码
SE93可将常报表生成一个事务代码,并将此事务代码授权给报表用户.
1.2.7 例外用户信息
MESSAGE Ynnn(Mid) [WITH
Y: I - Info
W - Warning
E - Error
A - Abend
X - Exit
S - Success
2.R/3系统字段数据的查找
2.1 视图,透明表和结构的区别
2.1.1 透明表中可存放数据记录,而结构不可以
2.1.2 透明表中可以嵌套结构,结构是多个表的公用字段串
2.2.3 视图是相关联的透明表中部分或全部字段的集合
2.2 普通查找法:
2.2.1 帮助查找:光标落在所要查找字段数据的域按
表字段名
2.2.2 反查法,可将字段名或结构在ABAP/4字典中进行反查,找到相应的表名
2.3 特殊查找方法
2.3.1 浏览原程序.可浏览R/3系统用到这个字段的相应程序,在其语句TABLES后的表中进行查找.
2.3.2 SQL跟踪法;在用到这个字段的业务流程时,可用R/3系统的SQL跟踪系统进行跟踪,再查看跟
踪清单中所用到的表
2.4 表字段数据确定
2.4.1所找到的表字段要进行严格数据核对校验.
2.4.2 用OMST将常用的透明表字段清单列出,以备查用。
3.CATT的使用
CATT计算机辅助 测试工具:一般用于批量数据传入R3.
3.1 SCAT事务记录.
3.2 访问所需字段.
3.3 保存测试程序并输入文件格式.
3.4 填充文件数据.
3.5 运行测试程序并传入文件.
ABAP/4 LEVEL 2
1.报表中按钮菜单
数据报表生成后,需进一部处理时可制作按钮菜单:
1.1打印语句前设置一状态:SET PF-STATUS
1.2 报表程序打印语句后加入一用户事件:AT USER-COMMAND捕作用户按钮值SY-UCOMM.然后加入相
应的子程序.
2.报表中转换事务
2.1 双击功能的实现;
在打印时将值HIDE;加入双击事件AT LINE-SELECTION.
2.2 转换事务
2.2.1 传递参数/制作内表: SET PARAMETER ID: 'F1' FIELD
'F2' FIELD
'F3' FIELD
2.2.2 调用事务:CALL TRANSACTION 'Tcode' USING itab [ MODE 'E' UPDATE 'S'].
3.R/3批处理.
3.1 BDCDATA结构的认识
3.2 记录批处理的业务流程
用SM35去记录准备进行批处理的业务流程,也可生成简单系统程序.
3.3 外部数据载入内部表 CALL FUNCTION ‘WS_UPLOAD’
3.4 批处理的三步骤.
3.4.1 打开一个会话:CALL FUNCTION 'BDC_OPEN_GROUP'
3.4.2 插入数据:CALL FUNCTION 'BDC_INSERT'
3.4.3 关闭会话: CALL FUNCTION 'BDC_CLOSE_GROUP'
3.5 处理会话:用SM35 进行查看并运行会话,将数据真正批输入R/3系统
4.ABAP/4 工作平台结语
在R/3系统中,ABAP/4是为开发特殊报表程序而公开的,信息系统中有大量现行可用的报表,可通过
选项设置或稍加拷贝修改得以利用,报表生成后要经过必要的测试,包括最终用户的认可后方可正
式使用.ABAP/4和其它程序语言一样,需要程序员去主动认识它……
附1:SYST系统变量表
注:使用时在字段名前加SY-,如要打印当前页号可用:
WRITE: SY-PAGNO.
字段名 类型(宽度) 描述
==============================================
INDEX CHAR(4), /* Number of loop passes */
PAGNO CHAR(4), /* Runtime: Current page i */
TABIX CHAR(4), /* Runtime: Current line o */
TFILL CHAR(4), /* Current number of entri */
TLOPC CHAR(4), /* Internal use */
TMAXL CHAR(4), /* Maximum number of entri */
TOCCU CHAR(4), /* OCCURS parameter with i */
TTABC CHAR(4), /* Number of line last rea */
TSTIS CHAR(4), /* Internal use */
TTABI CHAR(4), /* Offset of internal tabl */
DBCNT CHAR(4), /* DB operations: Number o */
FDPOS CHAR(4), /* Location of a string */
COLNO CHAR(4), /* Current column during l */
LINCT CHAR(4), /* Number of list lines */
LINNO CHAR(4), /* Current line for list c */
LINSZ CHAR(4), /* Line width of list */
PAGCT CHAR(4), /* Do not use this field a */
MACOL CHAR(4), /* Number of columns from */
MAROW CHAR(4), /* No. of lines from SET M */
TLENG CHAR(4), /* Line width of an intern */
SFOFF CHAR(4), /* Internal use */
WILLI CHAR(4), /* Number of current windo */
LILLI CHAR(4), /* Number of current list */
SUBRC CHAR(4), /* Return value after spec */
FLENG CHAR(4), /* Internal use (field len */
CUCOL CHAR(4), /* Cursor position (column */
CUROW CHAR(4), /* Cursor position (line) */
LSIND CHAR(4), /* Number of secondary lis */
LISTI CHAR(4), /* Number of current list */
STEPL CHAR(4), /* Number of LOOP line at */
TPAGI CHAR(4), /* Flag indicating roll-ou */
WINX1 CHAR(4), /* Window coordinate (colu */
WINY1 CHAR(4), /* Window coordinate (line */
WINX2 CHAR(4), /* Window coordinate (colu */
WINY2 CHAR(4), /* Window coordinate (line */
WINCO CHAR(4), /* Cursor position in wind */
WINRO CHAR(4), /* Cursor position in wind */
WINDI CHAR(4), /* Index of current window */
SROWS CHAR(4), /* Lines on screen */
SCOLS CHAR(4), /* Columns on screen */
LOOPC CHAR(4), /* Number of LOOP lines at */
FOLEN CHAR(4), /* Internal use (field out */
FODEC CHAR(4), /* Internal use (field dec */
TZONE CHAR(4), /* Time difference from 'G */
DAYST CHAR(1), /* Is summertime active? ( */
FTYPE CHAR(1), /* Internal use (field typ */
APPLI CHAR(2), /* SAP applications */
FDAYW CHAR(1), /* Factory calendar weekda */
CCURS FIXED DEC(9), /* Rate specification/resu */
CCURT FIXED DEC(9), /* Table rate from currenc */
DEBUG CHAR(1), /* Internal use */
CTYPE CHAR(1), /* Exchange rate type 'M', */
INPUT CHAR(1), /* Internal use */
LANGU CHAR(1), /* Language key from SAP l */
MODNO CHAR(1), /* Number of alternative s */
BATCH CHAR(1), /* Background active (X) */
BINPT CHAR(1), /* Batch input active (X) */
CALLD CHAR(1), /* Call mode active (X) */
DYNNR CHAR(4), /* Number of current scree */
DYNGR CHAR(4), /* Screen group of current */
NEWPA CHAR(1), /* Internal use */
PRI40 CHAR(1), /* Internal use */
RSTRT CHAR(1), /* Internal use */
WTITL CHAR(1), /* Standard page header in */
DUMMY0001 CHAR(1), /* Alignment balance */
CPAGE CHAR(4), /* Current page number */
DBNAM CHAR(20), /* Logical database for ex */
MANDT CHAR(3), /* Client number from SAP */
PREFX CHAR(3), /* ABAP prefix for backgro */
FMKEY CHAR(3), /* Current function code m */
PEXPI CHAR(1), /* PRINT: Spool retention */
PRINI CHAR(1), /* Internal use */
PRIMM CHAR(1), /* PRINT: Print immediatel */
PRREL CHAR(1), /* PRINT: Delete after pri */
PLAYO CHAR(5), /* Internal use */
PRBIG CHAR(1), /* Print: Selection cover */
PLAYP CHAR(1), /* Internal use */
PRNEW CHAR(1), /* PRINT: New spool reques */
PRLOG CHAR(1), /* Internal use */
PDEST CHAR(4), /* Print: Output device */
PLIST CHAR(12), /* Print: Name of spool re */
PAUTH CHAR(2), /* Internal use */
PRDSN CHAR(6), /* Print: Name of spool da */
PNWPA CHAR(1), /* Internal use */
CALLR CHAR(8), /* Print: ID for print dia */
REPI2 CHAR(40), /* Internal use */
RTITL CHAR(70), /* Print: Report title of */
PRREC CHAR(12), /* Print: Recipient */
PRTXT CHAR(68), /* Print: Text for cover s */
PRABT CHAR(12), /* Print: Department on co */
LPASS CHAR(4), /* Internal use */
NRPAG CHAR(1), /* Internal use */
PAART CHAR(16), /* Print: Format */
PRCOP CHAR(3), /* Print: Number of copies */
BATZS CHAR(1), /* Background SUBMIT: Imme */
BSPLD CHAR(1), /* Background SUBMIT: List */
BREP4 CHAR(4), /* Background SUBMIT: Root */
BATZO CHAR(1), /* Background SUBMIT: Once */
BATZD CHAR(1), /* Background SUBMIT: Dail */
BATZW CHAR(1), /* Background SUBMIT: Week */
BATZM CHAR(1), /* Background SUBMIT: Mont */
CTABL CHAR(4), /* Exchange rate table fro */
DBSYS CHAR(10), /* System: Database system */
DCSYS CHAR(4), /* System: Dialog system */
MACDB CHAR(4), /* Program: Name of file f */
SYSID CHAR(8), /* System: SAP System ID */
OPSYS CHAR(10), /* System: Operating syste */
PFKEY CHAR(20), /* Runtime: Current F key */
SAPRL CHAR(4), /* System: SAP Release */
TCODE CHAR(20), /* Session: Current transa */
UCOMM CHAR(70), /* Interact.: Command fiel */
CFWAE CHAR(5), /* Internal use */
CHWAE CHAR(5), /* Internal use */
SPONO CHAR(10), /* Runtime: Spool number f */
SPONR CHAR(10), /* Runtime: Spool number f */
WAERS CHAR(5), /* T001: Company code curr */
CDATE CHAR(8), /* Date of rate from curre */
DATUM CHAR(8), /* SYSTEM: Current date */
SLSET CHAR(14), /* Name of selection set */
SUBTY CHAR(1), /* ABAP: Call type for SUB */
SUBCS CHAR(1), /* Internal: CALL status o */
GROUP CHAR(1), /* Internal: Bundling */
FFILE CHAR(8), /* Internal: Flat file (US */
UZEIT CHAR(6), /* SYSTEM: Time */
DSNAM CHAR(8), /* Runtime: Name of datase */
REPID CHAR(40), /* Program: Name of ABAP p */
TABID CHAR(8), /* Internal use */
TFDSN CHAR(8), /* Runtime: Dataset for da */
UNAME CHAR(12), /* Session: SAP user from */
LSTAT CHAR(16), /* Interact.: Status infor */
ABCDE CHAR(26), /* Constant: Alphabet (A,B */
MARKY CHAR(1), /* Current line character */
SFNAM CHAR(30), /* No longer used */
TNAME CHAR(30), /* Name of internal table */
MSGLI CHAR(60), /* Interact.: Message line */
TITLE CHAR(70), /* Title of ABAP program */
ENTRY CHAR(72), /* Internal use */
LISEL CHAR(255), /* Interact.: Selected lin */
ULINE CHAR(255), /* Constant: Underscore (- */
XCODE CHAR(70), /* Extended command field */
CPROG CHAR(40), /* Runtime: Main program */
XPROG CHAR(40), /* Internal use (SYSTEM-EX */
XFORM CHAR(30), /* Internal use (SYSTEM-EX */
LDBPG CHAR(40), /* Program: ABAP database */
TVAR0 CHAR(20), /* Runtime: Text variable */
TVAR1 CHAR(20), /* Runtime: Text variable */
TVAR2 CHAR(20), /* Runtime: Text variable */
TVAR3 CHAR(20), /* Runtime: Text variable */
TVAR4 CHAR(20), /* Runtime: Text variable */
TVAR5 CHAR(20), /* Runtime: Text variable */
TVAR6 CHAR(20), /* Runtime: Text variable */
TVAR7 CHAR(20), /* Runtime: Text variable */
TVAR8 CHAR(20), /* Runtime: Text variable */
TVAR9 CHAR(20), /* Runtime: Text variable */
MSGID CHAR(20), /* Message ID */
MSGTY CHAR(1), /* Message type (E,I.W,... */
MSGNO CHAR(3), /* Message number */
MSGV1 CHAR(50), /* Message variable */
MSGV2 CHAR(50), /* Message variable */
MSGV3 CHAR(50), /* Message variable */
MSGV4 CHAR(50), /* Message variable */
ONCOM CHAR(1), /* Internal: ON COMMIT fla */
VLINE CHAR(1), /* Constant: Vertical bar */
WINSL CHAR(79), /* Interact.: Selected win */
DUMMY0002 CHAR(1), /* Alignment balance */
STACO CHAR(4), /* Interact.: List display */
STARO CHAR(4), /* Interact.: Page display */
DATAR CHAR(1), /* Flag: Data received */
HOST CHAR(8), /* Host */
LOCDB CHAR(1), /* Local database exists */
LOCOP CHAR(1), /* Local database operatio */
DATLO CHAR(8), /* Local date for user */
TIMLO CHAR(6), /* Local time for user */
TSTLO CHAR(14), /* Timestamp (date and tim */
ZONLO CHAR(6), /* Time zone of user */
DATUT CHAR(8), /* Global date related to */
TIMUT CHAR(6), /* Global time related to */
TSTUT CHAR(14); /* Timestamp (date and tim */
附2:R/3常用TABLES一览表
MARA 物料主数据A段基本数据
MARC 物料主数据C段工厂数据
MARD 物料主数据D段仓库数据
MAKT 物料描述
MARM 物料计量单位转换
MVKE 物料销视图数据
MBEW 物料评估数据
LFA1 供应商主数据
EKKO 采购定单抬头
EKPO 采购定单行项目
EKET 采购定单行项目计划
EBAN 采购申请
EKBE 采购定单历史
KNAL 客户主数据
VBAK 销售定单抬头
VBAP 销售定单行项目
VBEP 销售定单行项目计划
KONV 销售定单定价项目
MSKA 销售定单库存
PLAF 计划定单
CAUFV 生产定单
AFPO 生产定单行项目后继数据
RESB 物料预留
MAPL 工艺路线物料
STKO BOM抬头
STPO BOM行项目
MAST BOM物料
MKPF 物料凭证抬头
MSEG 物料凭证项目
MVRE 物料消耗预测数据
PBIM 计划独立需求管理数据抬头
PBED 计划独立需求管理数据行项目
LIKP 销售定单交货抬头
LIPS 销售定单交货行项
T003 凭证类型
BKPF FI:会计凭证标题
BSEG FI:会计凭证行项目