l转载自:http://www.itpub.net/thread-1422271-1-1.html
本人非专业ABAPER, 小结一下,不全之处,大家补充。
如果你是ABAP高手,请不要笑。如果你有其它语言及数据库的经验,在此大家共同学习一下。
1)查表做query之前,关于找表的方法,F1,然后点那个小工具图标,找字段与表,表的方法,网上有专门的SAP表的文章(http://www.sap-img.com)。主要模块的表,MM(Mara,mrac),Purchase(EKKO,EKPO),GR(
MKPF,MSEG), FI( BKPF,BSEG)
....,实际上这两种方法交错在一起使用,如果你经常做query或对SAP的表有研究,你将会直接使用表,se16N直接查表,可以输入一些条件,相妆于SQL
Server的select 语句,这对你分析解决SAP标准屏幕中无法显示的字段大有帮助。
2)sq03 建用户组
3)建infoset:做查询之前,先SQ02 建 infoset, infoset 相当于MS Access 中的query,
或者是data view, 这些概念一直混在一起,简单来说, 在数据库方面, 就是物理表table,与建立在物理表之上的一些view
(视图,或者是查询)。infoset就是建立在SAP 透明表(也就是物理表)之上的视图,SAP叫infoset
(信息集)吧。
infoset是在多个物理表之上建立,
也可复制已有的infoset. 表与表之间的连接注意 是左连接还是完全相等连接,出来的结果是不一样的。
不是所有用到的表一定要添在上面,假如只有科目表,要引用科目名称,则可以自建additional fields, 在自定义的字段中用
abap 的 select
语句来从skat中返回名称,如果有字段amount与quanty,但无price,则可以自定price字段,在该字段的code中写
price =amount /
quanty
建好infoset后,分配给某用户组,在用户组中对用户授权
4)建query, Tcode, sq01 ,可以直接在第一界面中选infoset
query来建立,优点,可以拖动字段排列,方便查看实际数据。然后保存,详细的修改再用 change进入修改。在basic
list中也可拖动字段排列,选择后加入的字段(注意是在数据区,不是字段区),拖动到你想要的位置(注意还是数据区)。
在建query的第二页面中,可以点goto->report
assignment,添加相关的事务代码,这样单击建好后的query的行,可以直接进入其它的关联的tcode.
在第四页面fields中,edit->local
field,也可以添加自定义字段,但此处只能在现有的infoset基础上对字段做一些操作。
5)分配tcode
给query:有时所做的query确实是给enduser使用,因此授于一特定的tcode还是有必要的,用起来方便。有人使用生成的程序的方法,但感觉从Tst传输到Prd中非常麻烦,而且以后再修改query也不方便。还是用start_report的方法好。
se93,transaction,
start_report, 如果user group 是在standard
area中,则D_SREPOVARI-REPORT:USER
GROUP
G的最后一个G不需要。
-------
1
D_SREPOVARI-REPORTTYPE:AQ
2 D_SREPOVARI-REPORT:USER
GROUP
G
name of user group which query assigned to it, notice that you must
enter this name with 12 character then if your user group name is
ZREZA you have to enter 7 space after this name and at 13th
position enter G.
(G for gloable area, space (13 lenth) for standard area)
3 D_SREPOVARI-EXTDREPORT: QUERY NAME
4 D_SREPOVARI-VARIANT: (leave blank)
5 D_SREPOVARI-NOSELSCRN : (leave blank)
-------
6)query的传输,建好后,从tst 系统中传到 PRD系统。没试过直接传,我是在sq02中,点小汽车图标,用download,
然后在 PRD上,在sq02, 点小汽车图标,再upload的方法。注意usergroup 也要传,infoset,
query都要传。se93生成的tcode可以使用change
request的方法, se01在tst上释放,再在prd上stms 导入。
如果是同一台server,可以直接用scc1来做吧。
复杂的query需要abap的基础知识,我也不太懂。