BATCH INPUT 注意事项:
1.不要忘记在导出数据后,回车一下。
2.你的源数据不能包含不需导入的项。
3.定义数据名时要用英文缩写,不能用其他文字。
我用CATT导数据,事务代码是PA40(人事事件)。当我通过外部文件进行数据导入时,老是出错,说某个字段比如PERSK不是输入字段。当我不输入PERSK时,它又说另外一个字段不是输入字段。但其实这些是需要我输入信息的字段。请问导致这个错误的原因是什么?
是不是在修改摸板时忽略这几个字段,重新修改试试,实际上这种提示敲回车可以过,不一定要输的
我忽略掉,或者修改过来正确,它又返回去了。这使得在文件中的数据一条也没有导入。不过,模板中的记录倒是导入了。那重建试试,把这几个字段作为选择字段
Pfcg 角色维护
Su53 查看权限对象 st01 跟踪
St22 看dump,以分析错误 eg.找到ABAP程序出错的地方,找出founction,用se37查看找到的founction,找到有关权限检查(authority check),找到object,在pfcg中添加object并赋予权限
/h debug
su01 建用户ID,TMSADM这个用户不能锁定,它是系统默认的传输用户,SAPSYS也是系统用户,不能锁定
se09/se10 查看并释放 change request 。(workbench 表示与集团无关,只需要传一遍;customizing 表示与集团相关,则需要分多次传到每个集团)
sapd 配置打印方式、打印格式。它的配置是跨集团的(打印方式分为:local,remote,front end 三种。local的配置较为复杂,它是指printer和server相连,driver全部都装在server上,然后再由server去连接pc;remote是指server与printer server 相连,printer server 再通过server与pc相连;front end 配置比较方便,它是指server与pc相连,pc接printer,并将其设置成默认printer)
client的操作:sccL copy
scc3 查看日志
scc4 后台
scc5 delete 选择“从T000删除条目”
000 001 065 066 这四个client为系统client,066用于做earlywatch
sm02 给所有人发送即时消息
se61 修改sap登陆界面
se61------创建或修改 general text,即常规文本:zlogin_screen_info-----在行首可用@xx@方式引用一个icon(其中xx为数字,在se38中运行report rstxicon 可查到所有的icon),文本信息最多为16行,每行45个字符.
So01 邮箱
sm04 查看什么人在做什么事情,可踢人,它只能看到一台机器
al08 查看有多少人登陆,session_manage 表示用户出于登陆状态,什么也没有做,它可以看到两台机器,如果要登陆另外一台机器,可以用sm51转到另外一台机器
os01 查看在线机器名称
oss1 选public进入sap 服务区,可用来发message或者申请lisence key
S0003605676 密码 I753A556
sm50/sm51 看进程,sm50看当前机器,sm51可以看两台机器
suim 权限比较 eg 查找哪些role里有spro这个事物代码
rz10 编辑系统参数文件
rdisp/gui_auto_logout & rdisp/keepalive 用于控制闲置时间(秒)
login/system_client 用于控制默认登陆的client编号(000-999)
login/fails_to_user_lock 用于控制输错密码被锁定的次数(1-99)
se43 定制显示在用户主菜单中的sap标准菜单条目
1. Su01-----默认----startmenu-----区域菜单(填入定制的菜单)
2. Pfcg-----找到common role-----添加tcode----从范围菜单(填入定制的菜单)
se56 看自己的ID有哪些object及object的值
su10 批量修改用户,也可由su01的菜单”批量修改”进入
su02 编辑用户权限的参数文件
su21 建object
su20/su22 以不同角度来查看权限对象
sale 建立逻辑系统 eg. P34CLNT800
db13 数据备份
db02 数据库表和索引的监控
db12 数据备份日志
sapdba 数据库管理工具
sm36 定义后台作业 (标准的作业-------缺省的计划)
sm37 查看后台作业
sp01 看打印队列,可清空假脱机请求
spad 选择完全管理,先定义“页格式”,然后赋格式类型,再赋设备类型(CNSAPWIN)
smlg 定义组登陆方式,如果发现机器不能自动分配资源或者分配资源出错,则可以在里面删除掉一台机器,然后再添加进去就可以解决,在它里面按F5可以查看机器响应时间,如果在1000ms以内则表示正常.
sm59 设置sfc连接,也可用它来登陆到别的机器,哪怕是用sap通讯帐号也可以
sm21 看系统日志
os06 操作系统监视器 ,cpu使用率正常在30%以内,30%~70%可能表示很慢,如果无系统信息,则需要在AIX中执行如下命令:
ps –ef|grep saposcol (查看sap操作系统收集器进程)
cd /usr/sap/P34/SYS/exe/run (注意这一行中的大写字母)
./saposcol (./表示运行)
st02 监控buffer,看命中率(hitratio),swap出错值大于1000则需要用rz10调整参数,一次最好只改一个参数,改完了重启sap使参数生效。
usr/sap/P34/SYS/profile 中有参数文件,可以在改变参数前做参数文件的备份,具体命令如下 cp xxx yyy ,恢复参数文件时,只需要将备份的参数文件copy回原参数文件名即可。这里的yyy包括:DEFAULT.PFL P34_DVEBMGS00_p34dbsvc P34_D01_p34apsvc START_D01_p34apsvc START_DVEBMGS00_p34dbsvc
———————————————————————————————————————
ls –l系统中的文件属主如下:
-rwxrwxr-x 1 p34adm sapsys 2919 Sep 26 10:09 DEFAULT.BAK
-rwxrwxr-x 1 p34adm sapsys 2919 Sep 26 14:03 DEFAULT.PFL
-rwxrwxr-x 1 root system 466 Aug 08 15:55 DEFAULT.PFL.0
-rwxrwxr-x 1 p34adm sapsys 8940 Sep 26 12:29 P34_D01_p34apsvc
-rwxrwxr-x 1 p34adm sapsys 8940 Sep 26 09:56 P34_D01_p34apsvc.BAK
-rwxrwxr-x 1 p34adm sapsys 1013 Aug 08 15:55 P34_D01_p34apsvc.bak
-rwxrwxr-x 1 p34adm sapsys 5304 Sep 26 14:02 P34_DVEBMGS00_p34dbsvc
-rwxrwxr-x 1 p34adm sapsys 5014 Sep 26 09:45 P34_DVEBMGS00_p34dbsvc.
BAK
-rwxrwxr-x 1 p34adm sapsys 1891 Sep 01 12:47 START_D01_p34apsvc
-rwxrwxr-x 1 p34adm sapsys 2669 Sep 01 12:47 START_DVEBMGS00_p34dbsv
c
p34db:p34adm> cd ..
p34db:p34adm> ls
exe gen global profile profile.bck src(红色的是profile的全备份,蓝色的没有用,是从原来的d00系统中带过来的,大写的bak文件是系统自动备份的,但它只保留最后一次保存之前的结果,所以修改参数后不要多次保存,全部改好了然后一次性保存,恢复参数时一定要用p34adm用户登录,以免文件属主发生改变,导致sap无法启动)
———————————————————————————————————————用cp –R profile.bck.2005.9.27 profile (将参数文件恢复)
st04 查看数据库日志 (转到------数据库日志)
oracle/P34/saparch 看arch文件
sm13 检查更新是否有效,只需要看中间“更新有效”这几个字就可以了
sm12 检查锁定条目,可用于解锁,eg.用户锁定条目后断网了,其他人不能用,则需要解锁
st03n 可查看一些系统信息,凡是以“n”结尾的都是sap后来开发的事物代码,用于分析sap的一些系统信息,检查响应时间是否超过了2000ms,如果超过了则需要用其它手段来分析为什么这么慢,eg. sm37看后台作业,sm50看进程,sapdba或者db02看tablespace 是否已满,用db02则需要刷新一下,否则有可能不是实时数据,但sapdba就是实时数据。Sm21看系统日志,st22看dump.
Sm19 跟踪用户Sm20 看用户的详细动作Stat 粗略的查看用户的动作
利用scat进行数据导入
在系统上线或进行测试时,都需导入大量的主数据。在SAP中有多种方法可批量地导入大量数据,这里介绍利用scat进行数据导入的方法。下同以导入统计指标数据为例进行详细说明。
- 用scat事务码进入计算机辅助测试工具屏幕,在测试情况栏内新建一个测试项。该测试项的名称要以z开头,如ztest。输入完名称后,按工具栏上最左边的“TCD”按钮开始记录事务。
- 首先在弹出窗口内输入需记录的事务代码kk01,按回车,进入统计指标维护界面。
- 接下来按维护统计指标的操作输入统计指标编码、统计指标名和计量单位,最后按保存完成事务记录,返回scat事务界面。
- 在scat事务界面按保存,弹出选择开发类界面,选“本地对象”,完成ztest测试项目的创建。
- 返回scat的初始屏幕,这时,在测试事件列表中应该有一个你刚创建的测试项目。选中它,按工具栏的“更改”按钮,接着双击功能表里的kk01项,接着再双击“SAPLOKSK”项,这时会打开输入统计指标编码窗口,并且光标会停留在编码栏内,接着点击工具栏的“insert import parameter”按钮,创建一个&STAGR参数。接着按工具栏下一页,使当标停留在名称栏,和上面一样,点击工具栏的“insert import parameter”按钮,创建&BEZEI参数。接着光标会自动移到计量单栏,同理,生成&MSEHI参数。按返回按钮回到上一屏幕,接着按保存完成参数创建。
- 返回初始屏幕,在选中ztest测试项目的情况下,选择菜单的“转到”--“变式”--“输出缺省”,生成一个ztest.txt文件。
- 打开ztest.txt文件,内容如下:
· [变量标识] [变式文本] STAGR BEZEI MSEHI
· --> Parameter texts 统计指标 名称 统计关键数单位
· --> 默认数值 Y02 y02 H
· *** Changes to the default values displayed above not effective
增加需导入的数据后的格式如下:
[变量标识] [变式文本] STAGR BEZEI MSEHI
--> Parameter texts 统计指标 名称 统计关键数单位
--> 默认数值 Y02 y02 H
*** Changes to the default values displayed above not effective
Y03 y03 H
Y04 y04 H
Y03和Y04是需导入的统计指标,文件中的空格全部是用tab分隔的。整理好导入数据的格式后,就可进行数据导入了。进入scat事务,运行ztest测试项目,变式选择“自文件外部的”,选择整理好的ztest.txt文件。处理方式可选择“前台”或“后台”,第一次最好选择前台方式,这样方便除错。最后按工具栏的运行按钮即可。
1.'TH_POPUP'
system message
2.'TH_USER_LIST'
用户列表,可以取道每个user 在干吗..
3. 'BAPI_USER_GET_DETAIL'
举例说明
REPORT ZSM message-id za.
data: list like uinfo occurs 0 with header line.
data: mess like sm04dic-popupmsg.
parameters: p_mandt like sy-mandt default sy-mandt,
p_user like sy-uname,
p_mess1(40),
p_mess2(40),
p_mess3(25),
p_sender like sy-uname default sy-uname,
p_time type i default '1'.
at selection-screen.
perform check.
start-of-selection.
concatenate p_sender 'test111' p_mess1
p_mess2 p_mess3 into mess.
condense mess.
do p_time times.
CALL function 'TH_POPUP'
EXPORTING
CLIENT = p_mandt
USER = p_user
MESSAGE = mess.
enddo.
FORM check.
CALL function 'TH_USER_LIST'
TABLES
LIST = list.
read table list with key bname = p_user mandt = p_mandt.
if sy-subrc <> 0.
read table list with key bname = p_user.
message e001 with 'the user not on this client, but in'
list-mandt.
endif.
ENDFORM. " check
REPORT Z_ABAP_SELECT_USER_BY_TCODE .
TABLES:
TSTC,
TSTCT.
DATA OPCODE TYPE X.
DATA: BEGIN OF USR_TABL OCCURS 10.
INCLUDE STRUCTURE UINFO.
DATA: END OF USR_TABL.
SELECT-OPTIONS: S_TCODE FOR TSTC-TCODE.
START-OF-SELECTION.
CLEAR USR_TABL.
FREE USR_TABL.
* set the function call mode
OPCODE = 2.
* get list of all users actually logging on
CALL 'ThUsrInfo' ID 'OPCODE' FIELD OPCODE
ID 'TAB' FIELD USR_TABL-*SYS*.
SORT USR_TABL BY BNAME TCODE.
LOOP AT USR_TABL WHERE TCODE IN S_TCODE.
SELECT SINGLE TTEXT FROM TSTCT INTO TSTCT-TTEXT
WHERE SPRSL = SY-LANGU AND
TCODE = USR_TABL-TCODE.
TRANSLATE TSTCT-TTEXT TO UPPER CASE.
WRITE:/
USR_TABL-BNAME,
USR_TABL-TCODE,
TSTCT-TTEXT.
ENDLOOP.
IF SY-SUBRC <> 0.
MESSAGE I001(38) WITH 'NO ENTRIES FOR YOUR SELECTION CRITERIA!'.
ENDIF.
表的域定义:
ABAP Dictionary 是SAP System中的一个工具tool, 通过它能存取DB中所有有关于table的定义
(表的定义,字段的定义,data element的定义,domain的定义)。
Field definitions放在ABAP Dictionary中.(贴图)
The basic objects for defining data fields in the ABAP Dictionary有以下三种:
1, table
2, data element (业务语义,这个字段在业务中是表示啥?)
A data element is used for the semantic definition(field label) of a table fields.
3, domain (数据库技术角度的字段类型,在数据库中是以啥形势存放的?)
A domain is used for the techical definition (fields type, length) of a table fields.
A field is not a independent object. It depends on tables and can only be maintained
within a table. 如果一个table definition不存在了,则它的所有field definitions都不存在了.
Relationships Between Tables
1, 在ABAP Dictionary中,主表叫做the check table, 外键表叫做the foreign key table.
SAP System中的所有data和system都保存在database中。
SAP Business Objects (类似于java中的对象有attributes和methods,另外还有tables).
1, An SAP Business Objects is the representation of a central business object
in the real world, such as an employee, sales order, purchase requisition,
purchase order, applicant,invoice, and so on.
2, A business object is composed of :
(1), [tables] that are related in a business context,
(2), [Attributes] are characteristics that specify the business object, The attribute
can only be modified by the methods that belong to the business object.
(3), [the related application programs].
3, Business Objects are maintained by SAP in the Business Object Repository(BOR).
BOR是一个工具被用来create, delete, modify 业务对象。
BAPI (Business Application Programming Interface)业务应用编程接口
SAP R/3为了集成第三方软件,为软件厂商提供了接口BAPI,为了access R/3 中的业务数据(business data)
和业务流程(business),必须使用BAPI.
可以这样说一个BAPI就是某个Business Object的一个public attribute或一个public method.
许多大企业把整个SAP system分布在多个instance上,每个instance专注于特定的业务.
例如: plant中的物料采购在一个本地的instance上进行处理(the local system).
向供应商付款和总帐处理在公司中心instance上处理(the central system).
分布(distribute)不是简单的数据分割!!!
分布就是把数据分布在多个地点,但同时又能保证数据在整体上的一致性和完整性.
分布用到分割技术, 但是分布不是简单的分割.为了保证不同地点的数据的完整性
和一致性different systems利用ALE进行沟通.
The ALE concept always relates to an enterprise structure with areas that have central tasks
and areas with tasks that are decentralized.
It may be practical for organizations to use separate application systems so that application components can be installed and operated on decentralized systems that are technically independent of each other.
The ALE concept supports the implementation and operation of distributed SAP applications. It is based on business-controlled messaging with consistent data storage on loosely coupled systems. The applications are integrated through the message exchange, not via a central database.
To implement a distributed, yet integrated system, the customer must specify in a logical model, which applications are to run on which systems and how the applications are to exchange data with each other.
On the technical side, the data exchange is carried out via IDocs (intermediate documents) as used in the EDI (Electronic Data Interchange) interface. On the application side, EDI supports information exchange between R/3 systems in different enterprises, whereas ALE supports information exchange within one enterprise. The ALE distribution mechanism is similar to the EDI mechanism. In ALE, business processes are distributed at the transaction level.
The procurement of materials via the plant in a company code can be handled in a local system. However, payments to vendors and the general ledger are managed in a central system.
In order that both organizations use the same master data, the head office distributes the master data to the local system. Thus the transaction data in the local systems for which IDocs exist can be sent to the head office without inconsistencies.
Examples of data that can be distributed:
Master data: Customers, vendors, G/L accounts, cost centers, cost elements, activity types
Transaction data: Incoming invoices, outgoing invoices, Financial Accounting line items, Controlling documents
The SAP standard system is delivered with some ALE scenarios. For example:
Central contract management in Purchasing
Distributed Inventory Management
Central Materials Management master data
The message types required for the distribution via IDocs are also delivered by SAP. You can also define your own ALE scenarios.
Business to Business Procurement works through ALE with an R/3 backend system
BADI作为SAP的第三代用户出口,他的应用也越来越广泛,但如何找到合适的badi是许多abap程序员的困惑。我这里就介绍一下我个人的应用的经验,供大家参考。
1、badi对象的信息存储在SXS_INTER, SXC_EXIT, SXC_CLASS 和SXC_ATTR 这四个表中(参见SECE包);
2、sap程序都会调用cl_exithandler=>get_instance来判断对象是否存在,并返回实例;其实get_instance就是对上述几个表和他们的视图(V_EXT_IMP 和 V_EXT_ACT)进行查询和搜索。
3、基于这个机理,我查用ST05来监控一个TCODE来跟踪,然后选择查找有关上述几个表和视图的操作,就可获得相关BADI。
4、se18 查找接口,se19 实现接口就可以实现用户增强。
示例:用LE_SHP_DELIVERY_PROC控制跨月Cancel
METHOD IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_HEADER .
data : thismonth(2) type c.
data : wa_likp type line of SHP_LIKP_T.
data : wa_log type line of SHP_BADI_ERROR_LOG_T.
clear ct_log[],thismonth.
thismonth = sy-datum+4(2). "----->這一個月的月份
loop at it_xlikp into wa_likp.
check IS_V50AGL-WARENAUSG_STORNO ='X'."--->代表作GI cancel
if wa_likp-WADAT_IST+4(2) < vbeln =" cs_likp-vbeln." msgty =" 'E'." msgid =" 'ZDN_ERROR'." msgno =" '001'.">
sap的用户出口总共有三代:
1、第一代
sap提供一个空代码的子过程,在这个子过程中用户可以添加自己的代码,控制自己的需求。这类增强都需要修改sap的标准代码。
示例:USEREXIT.. in SAPMV45A
2、第二代
sap提供的是CUSTOMER-FUNCTION,它是通过SMOD和CMOD完成实现。
3、第三代
sap提供的第三代的用户出口就是BADI,他的调用方式是CALL METHOD (instance),(相关的TCODE是SE18和SE19),你可以通过EXIT_HANDLER这个单词查找BADI。
*&---------------------------------------------------------------------*
*& Report Z_ALV_CDHDR_CDPOS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_ALV_CDHDR_CDPOS.
TYPE-POOLS slis.
DATA : cdhdr TYPE cdhdr.
SELECT-OPTIONS :
s_objcls FOR cdhdr-objectclas OBLIGATORY,
s_objtid FOR cdhdr-objectid,
s_chngnr FOR cdhdr-changenr,
s_usrnam FOR cdhdr-username DEFAULT sy-uname,
s_udate FOR cdhdr-udate DEFAULT sy-datum,
s_time FOR cdhdr-utime,
s_tcode FOR cdhdr-tcode,
s_plncnr FOR cdhdr-planchngnr,
s_chngno FOR cdhdr-act_chngno,
s_wsplnd FOR cdhdr-was_plannd,
s_chngid FOR cdhdr-change_ind.
SELECTION-SCREEN SKIP.
PARAMETERS p_max TYPE numc3 OBLIGATORY DEFAULT '200'.
*---------------------------------------------------------------------*
TYPES :
BEGIN OF ty_s_cdhdr.
INCLUDE STRUCTURE cdhdr.
TYPES : checkbox,
END OF ty_s_cdhdr,
BEGIN OF ty_s_cdpos.
INCLUDE STRUCTURE cdpos.
TYPES : checkbox,
END OF ty_s_cdpos.
*---------------------------------------------------------------------*
DATA :
* Layout for ALV
gs_layout TYPE slis_layout_alv,
* Change document header
t_cdhdr TYPE TABLE OF ty_s_cdhdr.
*---------------------------------------------------------------------*
START-OF-SELECTION.
* Read Change document header
SELECT * INTO TABLE t_cdhdr
UP TO p_max ROWS
FROM cdhdr
WHERE objectclas IN s_objcls
and objectid in s_objtid
and changenr in s_chngnr
AND username IN s_usrnam
AND udate IN s_udate
AND utime IN s_time
AND tcode IN s_tcode
AND planchngnr IN s_plncnr
AND act_chngno IN s_chngno
AND was_plannd IN s_wsplnd
AND change_ind IN s_chngid.
gs_layout-zebra = 'X'.
gs_layout-colwidth_optimize = 'X'.
gs_layout-box_fieldname = 'CHECKBOX'.
* Display ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'CDHDR'
is_layout = gs_layout
TABLES
t_outtab = t_cdhdr.
*---------------------------------------------------------------------*
* FORM USER_COMMAND *
*---------------------------------------------------------------------*
FORM user_command USING u_ucomm TYPE syucomm
us_selfield TYPE slis_selfield. "#EC CALLED
* Macro definition
DEFINE m_sort.
add 1 to ls_sort-spos.
ls_sort-fieldname = &1.
ls_sort-up = 'X'.
append ls_sort to lt_sort.
END-OF-DEFINITION.
DATA :
ls_cdhdr TYPE ty_s_cdhdr,
ls_sort TYPE slis_sortinfo_alv,
lt_sort TYPE slis_t_sortinfo_alv,
* Change document items
lt_cdpos TYPE TABLE OF ty_s_cdpos.
CASE u_ucomm.
WHEN '&IC1'.
PERFORM check_marked USING us_selfield.
* Read Change document items
LOOP AT t_cdhdr INTO ls_cdhdr WHERE checkbox = 'X'.
SELECT * APPENDING TABLE lt_cdpos
FROM cdpos
WHERE objectclas = ls_cdhdr-objectclas
AND objectid = ls_cdhdr-objectid
AND changenr = ls_cdhdr-changenr.
ENDLOOP.
m_sort 'CHANGENR'.
* Display ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_structure_name = 'CDPOS'
is_layout = gs_layout
it_sort = lt_sort
TABLES
t_outtab = lt_cdpos.
ENDCASE.
ENDFORM. " USER_COMMAND
*---------------------------------------------------------------------*
* Form CHECK_MARKED
*---------------------------------------------------------------------*
* What has been marked in t_cdhdr
*---------------------------------------------------------------------*
FORM check_marked USING us_selfield TYPE slis_selfield.
FIELD-SYMBOLS :
TYPE ty_s_cdhdr.
READ TABLE t_cdhdr TRANSPORTING NO FIELDS WITH KEY checkbox = 'X'.
IF NOT sy-subrc IS INITIAL AND
NOT us_selfield-tabindex IS INITIAL.
READ TABLE t_cdhdr INDEX us_selfield-tabindex ASSIGNING .
-checkbox = 'X'.
ENDIF.
ENDFORM.