1、锁程序
CALL FUNCTION 'ENQUEUE_ES_PROG'
EXPORTING
MODE_TRDIR = 'X'”锁的方式
NAME = 'ztest01'”锁的程序
X_NAME = ' '
_SCOPE = '2'
_WAIT = ' '
_COLLECT = ' '
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3
.
解锁
IF SY-SUBRC <> 0.
MESSAGE E000(OO) WITH '程序已被锁定'.
ENDIF.
CALL FUNCTION 'DEQUEUE_ES_PROG'
EXPORTING
MODE_TRDIR = 'X'
NAME = 'ztest01'
X_NAME = ' '
_SCOPE = '3'
_SYNCHRON = ' '
_COLLECT = ' '
.
2、获取当前IP和电脑名
DATA CLIENT LIKE MSXXLIST-HOSTADR.
DATA USER LIKE SY-UNAME.
CALL FUNCTION 'TH_USER_INFO'
EXPORTING
CLIENT = SY-MANDT
USER = SY-UNAME
CHECK_GUI = 0
IMPORTING
HOSTADDR = CLIENT
TERMINAL = USER
* ACT_SESSIONS =
* MAX_SESSIONS =
* MY_SESSION =
* MY_INTERNAL_SESSION =
* TASK_STATE =
* UPDATE_REC_EXIST =
* TID =
* GUI_CHECK_FAILED =
* ADDRSTR =
* RC = .
WRITE: / CLIENT , USER.
3、负号前置
把负号提前
GT = '10000-'.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = GT
.
WRITE: GT.输出结果是-10000.
函数代码很简单 完全可以自己写
DATA: TEXT1(1) TYPE C.
SEARCH VALUE FOR '-'.
IF SY-SUBRC = 0 AND SY-FDPOS <> 0.
SPLIT VALUE AT '-' INTO VALUE TEXT1.
CONDENSE VALUE.
CONCATENATE '-' VALUE INTO VALUE.
ELSE.
CONDENSE VALUE.
ENDIF.
文本的数字列无法合计
负号提前不能用于金额数字格式
4、报表事件
AT PF-FUNCTION KEY(设置功能键)
过程化事件
INITIALIZATION
START-OF-SELECTION
END-OF-SELECTION
选择屏幕事件
AT SELECTION-SCREEN OUTPUT选择屏幕PBO事件,每次选择屏幕调用之前触发,在其中进行选择屏幕输出之前的准备工作,如确定屏幕各元素的输出状态。
AT SELECTION-SCREEN选择屏幕最后被触发的事件,用户在选择屏幕上回车、选择某个GUI按钮、功能键或者菜单项时触发
AT SELECTION-SCREEN ON field
AT SELECTION-SCREEN ON BLOCK block
AT SELECTION-SCREEN ON RADIOBUTTON GROUP group1
AT SELECTION-SCREEN ON seltab
AT SELECTION-SCREEN ON END OF seltab,
AT SELECTION-SCREEN ON HELP-REQUEST FOR field选择屏幕的POH事件,F1事件,定义字段帮助
AT SELECTION-SCREEN ON VALUE-REQUEST FOR field选择屏幕的POV事件,F4事件,定义字段输入帮助
使用到逻辑数据库时,比如HR报表,涉及到的逻辑数据库事件
GET node
GET node LATE
列表
TOP-OF-PAGE
END-OF-PAGE
AT-LINE-SELECTION
AT-USER-COMMAND用户交互控制,选择某个GUI功能出发,用于交互式报表
5、AT用法
AT FIRST功能
循环时第一条记录时调用
AT LAST功能
循环中最后一条记录时调用
AT NEW 功能
循环中当指定字段之前(包括指定字段)的组合和上一条记录不一样的时候调用
AT END OF功能
循环中当指定字段之前(包括指定字段)的组合和下一条记录不一样的时候调用
AT事件的注意点
AT事件中的工作区不同于LOOP循环的工作区 该工作区中位于指定字段后面的值将不会被读取 如果需要用到 则需重新抽取一次
6、报表的选择画面上添加自定义工具栏
通过语句SELECTION-SCREEN FUNCTION KEY n(n为1至5,最多定义5个)。
7、报表的选择画面元素进行分组
PARAMETERS或SELECT-OPTIONS后使用附加语句“MODIF ID + 组名”
8、更改屏幕元素状态
在报表AT SELECTION-SCREEN OUTPUT事件中或PBO(PROCESS BEFORE OUTPUT)中,
LOOP AT SCREEN.
….
MODIFY SCREEN.
ENDLOOP.
SCREEN-NAME 画面元素的名称
SCREEN-GROUP1 ~ SCREEN-GROUP4 对画面元素的分组
SCREEN-INPUT 能否输入
SCREEN-INVISIBLE 是否可见
SCREEN-LENGTH 可见长度
SCREEN-ACTIVE 是否是可用的状态
- 使用SUBTOT
alv可以实现自动小计,首先field cat 参数中添加DO_SUM = X,然后传入sorttable,可以在sorttable中指定需要小计的列
2.使用AT 语句
在LOOP 循环中使用AT END OF FIELD
10、LUW
LUW称为逻辑工作单位 同一个逻辑工作单元共享一段内存 将操作放置在同一个LUW中可以控制事务的同时提交和回滚
11、查找数据库表
(1) 通过点击画面上需要查找的字段,点击F1,在弹出画面中的技术信息。
(2) 通过ST05进行数据库操作的跟踪,对于在前台界面进行数据的新增或更新,在数据库中都会有所体现
(3) 通过事务SE80-> Repository Information System->ABAP字典->数据库表格中,对某个字段进行查询
12、权限对象
ABAP 程序中使用 AUTHORITY-CHECK 语句根据权限对象进行权限检查。在 AUTHORITY-CHECK 语句中,必须指明权限对象的所有字段,但有一个例外,可以用 DUMMY 关键字来绕过某个字段的检查。通过SY-SUBRC的返回值进行检查,0为通过检查,其他均为错误,一个授权对象中最多可以定义 10 个字段。
SU20定义,查看和建立权限字段;SU21查看系统已有权限对象,定义新的权限对象;
SU53显示权限检查出错的原因:对于调用Function时,返回无权限的错误后,能在此事务代码中查找到错误信息,
PFCG角色维护,将所建的权限对象,与某个角色关联,将角色分配给某个用户后,就能够检查该用户是否有进行操作的某权限
13、DIALOG 中的事件
PBO PAI POV POH
14、BDC的运行模式和更新模式
运行模式包括:A.全屏幕显示;E.只有在发生错误时,显示屏幕;N.不进行屏幕的显示,将相关信息记录到信息内表里;P. 不进行屏幕的显示,可进行DEBUG测试。
更新模式包括:A.异步更新;S.同步更新;L.本地更新;
15、SMART FORM实现公司LOG打印
1.用SE78导入公司logo,导入时只能导入位图、GIF文件,导入位图时,注意用256色,否则会导致图片打印有问题
2.在smartform中添加图片即可
16、CALL FUNCTION 调用的几种模式
a. CALL FUNCTION - DESTINCTION: 以同步RFC方式实现的RFM调用。如果DESTINATION后无其它附加项,则形成同步RFC调用,调用程序等待远程调用的结果以继续执行。
b. CALL FUNCTION - STARTING NEW TASK: 以异步RFC方式实现的RFM调用。通过STARTING NEW TASK 附加项形成异步RFC调用,调用程序不等待返回结果继续执行,结果将在回调子程序(callback subroutine)中接收。
c. CALL FUNCTION - IN BACKGROUND TASK: 以事务性RFC方式实现的RFM调用。通过IN BACKGROUND TASK 形成事务性RFC调用,远程功能暂不开始执行,等待COMMIT WORK语句出现是,一次性执行一个或多个远程功能。
17、perform 调用子程序时,USING,tables,changing的区别
using 可以传入单值、工作区,只能使用,不能对值做修改,perform结束后传入参数的值还是传入之前的状态;
Tables 只能传入一个内表,程序逻辑可以对其进行修改,perform 结束后内表的值是影响
Changjing,可以传入内表、单值,当程序逻辑可以对其进行修改,perform结束后传入参数的值是影响过后的值
18、内存调用
SAP内存使用SET/GET parameters方法;
ABAP内存使用 EXPORT 和 IMPORT 方法;
EXPORT <OBJECT1> <OBJECT2> ... <OBJECTN> TO MEMORY ID <ID-NAME>.
IMPORT <OBJECT1> <OBJECT2> ... <OBJECTN> FROM MEMORY ID <ID-NAME>
ID参数标识唯一的数据簇
19、
SO: Sales Order 销售订单;
DO: Delivery Order 交货单;
WO: Work Order 工单;
PO: Purchase Order 采购订单;
QA:Quality Assurance 质量保证。
20.权限对象
公司代码:F_BKPF_BUK
工厂:M_MSEG_WMB