abap笔记.docx
《abap笔记.docx》由会员分享,可在线阅读,更多相关《abap笔记.docx(14页珍藏版)》请在冰豆网上搜索。
![abap笔记.docx](https://file1.bdocx.com/fileroot1/2023-2/2/7dcb1dc2-ed7a-42ea-a45e-cb7a4b699f05/7dcb1dc2-ed7a-42ea-a45e-cb7a4b699f051.gif)
abap笔记
1.ObjectNavigator是ABAP工作平台上众中开发工具的中心入口,事务代码为:
se80,其中还有几个经常会用到的T-CODE:
SE38,SE24,SE37.
2.在ABAPEditor中有一个Excutewithvariant按钮,代表通过变量运行(变式与选择屏幕相关).
3.EditorPrettyPrinterON/OFF的设置:
菜单项:
Utilites->settings有相关项,选中Indent,Convertupper/lowercase同KeywordUppercase.
4.ABAP有三种类型的处理块:
Eventblocks,DialogModules,Procedures只有后一种可拥有自己的局部变量,而且程序语句是内部调用,前两者处理块之间实行外部调用.
5.应用程序类型,可执行的:
以Report关键字引导,不能定义功能模块但可以调用.模块池的:
以Program关键字引导,必须通过事务代码运行.
6.语句链Write:
text1,text2.等同于:
Writetext1.Writetext2.
7,在一个Program中,处于Form和Endform之间的是Subroutines.该程序由Program引导,不能直接运行,需被调用,不能包含自定义的用户屏幕.
8.数据内部定义:
typestype(len)Typetype[decimaldec]
datadata(len)Typetype[decimaldec][valuevar]
Decimal附加项只适用于指定P类型的小数位.
9.两个结构体进行赋值操作,如果Source与Destination的组件结构不完全相同,则用
Move-corresponding,eg:
move-correspondingsource-datatodestination-data.
10.在ABAP数据表达式中,关键字前后必须有空格,eg:
Fault:
(a=b+c)true:
:
a=b+c.
11.在用户主记录里可以设置日期的显示分隔符,小数点字符和千位分隔符,在system->userprofile->owndata或T-code:
su01.
12.内表是一种大批量数据管理形式,用于在程序运行期间存储多行结构相同的数据,程序对内表的行操作不能直接进行,必须通过一种接口来传输,这个接口就是工作区.
13.ABAP的两种动态数据对象:
Fieldsymbols与Datareference.
14.内表有三种形式:
standardtable,sortedtable,hashedtable后一种不能进行索引查找,只能通过关键字搜索.
15.子程序的定义和调用分别用Form/Endform和perform来实现,如果想生成子程序的代码框架,则在prefomadd处双击即可.
16.package的命名规则:
beginwithA-SorU-X是SAPstandardobject,beginwithYorZarecustomerobjects,beginwithTareprivatetestpackage,beginwith$arelocalpackage.
17.在数据字典中,每创建一个TABLE,都将生成一个同名的结构化数据类型,其中的组件字段与实际物理数据库表完全一致.
18.在select查询中如果要指定多个数据对象,则需要将这些对象放在括号内,并用逗号隔开,eg:
select*fromspfliinto(a,b).
19.FunctionModule是最为常用的复用组件,它是独立的R/3仓库对象,也是一种过程模块,在不同的系统间可以通过RFC(Remotefunctioncall)技术进行功能模块的调用.
20.几个有用的系统函数:
sy-uname,sy-host,sy-datum,sy-uzedit,sy-subrc,sy-bdcnt,sy-index,sy-tabix,sy-dynnr.
21.可用于交互式报表的列表事件有:
atline-selection,atuser-command前者为选择某行时触发,后者由某个GUI触发.
22.在可执行程序中,只要在程序代码中使用parametes或select-options语句,则在程序运行后就会产生用户的选择屏幕.
23.LDB(逻辑库)节点在程序访问之前需用Nodes语句声明,在旧版本中则使用Tables声明.两种中止语句Reject与check(有条件中止).
24.由系统自动调用的子程序称回调线程,-----callbackroutine,利用此程序可以实现许多高级屏幕功能.
25.在OO设计中对象的识别和寻址是通过对象引用来实现的.
26.在二种对象运算访问符中->与=>,对于类中的静态组件是通过类名称加=>直接对类进行操作的.eg:
class=>comp.
27.对象的自身引用可使用变量ME,是一个局部变量来的.
28.Append与Insertr的区别:
appendwatoitab;insertwaintotableitab
前者不能用于Hashed表,后者不能用于Sorted表的non-unique.
29.修改内表语法:
modifyitabfromwatransportingcol2where…..表明根据where条件来更新COL2字段值,表类型为SORTED或HASHED.
30.删除内表语法:
Deletetableitab:
fromwa,withtablekeycol=1.三个标点不可少,with后的为条件关键字.如果用条件的则为:
DELETEITABWHERE(COL>17ANDCOL<4)
31.在LOOPAT…ENDLOOP内有一个AT,<…>,ENDAT循环.其中的包括:
FRIST,LAST,NEW,ENDOF.这些可以用来进行内表中按某个字段进行分组统计.
32.几条记录作一次取用:
PACKAGESIZENeg:
select*fromspfliintocorrespondingfieldsoftableitabpackagesize3.
33.接口成员只能为类的公有成员,接口没有自己的实例,一个接口可以被任意多个不同的类实现,接口中定义的成员集在各类中名称要相同.
34. 在程序中使用逻辑数据库有两种方法:
通常是通过GET事件或者功能模块进行调用.如:
NODESnode.
35.在程序代码中输入NEW-PAGEPRINTON,将生成的列表直接发送走到SPOOL系统进行打印,不在屏幕上显示.
36.将一组选择屏幕组合在一个区域,可以使用Beginofblock…..eg:
Selection-screenbeginofblockblocka[withframe[titletit]]
[nointervals]—只选单值不出现TO.
Selection-screenendofblock.
37.屏幕流逻辑分为两个最基本的处理块:
PBO与PAI,前者是在向用户显示屏幕GUI之前触发,后者是在用户进行某些屏幕行为后并回车时触发.流逻辑模块是在语句MODULE/ENDMODULE之间定义.这里的语法不属于ABAP系列.
38.屏幕中的OK字段其作用是:
返回在屏幕和GUI状态中用户触发的功能代码:
一般情况字段命名为:
OK_CODE,数据类型与SY-UCOMM相同.
39.通过SE93可以为程序创建自定义的事务代码.
40.GUI中的交互元素包括菜单条,标准工具按扭,APPLICATIONTOOLBAR,FUNCTIONKEYS共四种,在作屏幕事务设计时这些都要分配具体的功能代码与之对应.
41.在定义EXPORTING、IMPORTING与CHANGING的时候,前两者分别为基本输入与输出参数,而CHANGING可用于前两者功能。
42.在处理商务文档时需用到SAPSCRIPTION与SMARTFORMS工具,两者都可以进行布局设计与输出控制。
企业中的PO,SO等报表都要用到此类工具。
43.NEW-LINE=write:
/eg:
write:
/xxx.Thesameto,newline.Writexxx.
44.在EDITOR界面的GOTO-》ATTRIBUTE-》可改TITLE的属性。
45.在Reportxxx后可跟LINE-SIZEWIDTH,LINE-COUNT,PAGELINES等属性,这些选项可以用来控制列表输出的页格式。
46.插入断点:
BREAK-POINT,BREAK-USERNAME,也可以在程序激活的状态下按下STOPBUTTON。
47.用PROGRAM中的DOCUMENT可同步显示提示帮助。
同时也可以在此处编辑。
48.可以用INCLUDE去包含一个数据类型eg:
includetypexxx.其中XXX为已经定义的数据类型。
这种方法在定义游标的时候会用到。
49.几个字符串操作函数:
split…at…into..,shift….right….,add-corresponding,divide-coresponding,move-corresponding,abs,concatename,condense.
50.刷新的时候对于基表用refresh,内表用clear,free.
51.读数据集:
READDATASETDSSINTORECORDE。
52.批处理工具,LSMW,BDC,CATT,ECATT。
53.如果要让个选择屏幕浮在SCREEN1000的上面,则使用调用语句:
CALLSELECTION-SCREEN100STRATINGAT1010ENDAT5050。
54.从一个正在运行的程序调用另一个可执行程序:
可用SUBMIT命令来完成.通过事务代码调用程序的语句为:
LEAVETOTRANSCATION或CALLTRANSCATION.
55.用SELECT把多行选择到内表:
SELECT…..INTO/APPENDINGTABLEITAB.如果希望不覆盖原来的内表数据,则使用APPENDING.
56.SAP应用服务器文件及目录可以通过事务代码:
AL11进行浏览.
57.要显示END-OF-PAGE事件的页脚内容,需在LINE-COUNTLENGTH后加上[(FOOTER-LENGTH)],指定预留的页脚行数,eg:
line-count12(3).
58.想让一个选择屏幕的条件字段自动调用一个表的字段值信息:
Select-optionsso-airforspfli-carrid.
59.做一个SAPQUERY涉及到的步骤:
一首先建立一个用户组,二建立一个功能组选择表数据,SQ02,SQ03.三在SQ01下建立一个如果是第一次建QUERY,则在QUERY中输入名称.
60.如果想把一个屏幕的某字段设为必需输入的值,则可执行以下操作.
Atselection-screen.此为一个屏幕事件.
Ifcarridisinitial.
Messagee888(hints)with‘xxxx’.
Endif.
61.在sapscript中如果要对mainwindow的顶部打印指定的文本行,可使用TOP/ENDTOP来控制,底部类似:
BOTTON/ENDBOTTON.
62.在一个指定的地方画一个框,要用到三条指令:
/:
positonwindow代表窗口的左上角.
/:
postionxorigin‘1.2’cmyorigin8cm系统原点进行位移.
/:
boxheight‘0.5’cmwidth19cmintensity50.
63.把一个SAPSCRIPT报表从CLIENT300移到CLIENT400,使用SAP的标准程序:
RSTXSCRP,先在CLIENT300中进行EXPORT,然后到CLIENT400中进行IMPORT.在这里操作要注意的是:
在做IMPORT的时候OBJECTNAME要与原来EXPORT的一样.
64. 在MOVERESOURCETODESTINATION中如果RESOURCE是一个变量字段,很有可能在操作中得不到数据字段赋过来的值,这时可以在操作过程中定义一个变量来转换解决这个现像.:
moveresourcetovar1.movevar1todestination.
65.在ABAP的PERFORM程序中,如果使用了两个变量USINGA.USINGB.要读INTAB中B的值,则使用:
READTABLEITABINDEX2.
66. 在一个查询语句中,如果WHERE语句后加入了CLIENTSPECIFIED关键字,则查询所有集团(CLIENT)的数据.
67.在CHANGE一个FORM时,可以进行多语言的维护,前提是在进入修改之前选中编辑的语言类别.
68.在报表的制作过程中应尽可能多地定义PARAGRAPHFORMAT少定义WINDOW,这样有利于日后的维护.
69.在没有ACTIVE的情况下少用RESET,这样会丢失你之前修改的所有信息,即使你对报表进行的保存操作.
70. 对于一个表要查看其所对应的数据字段:
/va02->sale->header->sales然后把光标放在某一个字段内按F1查看:
Technicalinformation.
71. 如果经常用到一个图标进行打印,可在/NSE78下IMPORTGRAPHIC下选中RESIDERINTHEPRINTERMEMORY.
72.插入一个BMP,先在/NSE78下建好,然后在FORM的LAYOUT下点击右键:
CREATEGRAPHIC进行相应的操作,在这里要注意色体的选择.
73.CREATINGGRAPHICOBJECTSANDIDS:
先在/NSE75下设置,然后点击/NSE78查看.
74.在页脚插入一个公司商标信息:
/INCLUDE&TVKO-TXNAM_FUS&OBJECTTEXTIDADRSLANGUAGE&VBDKA-SPRAS_VKO&.
75. 使用STANDARDTEXT,先通过/NSO10定义一个标准文档,然后在FORM里插入命令:
INCLUDEI_ADRS_HEADEROBJECTTTEXTIDXXX.
76.如果把一段标题设置成在每一页都打印,则使用:
TOP…ENDTOP来实现.
77.在用FORMPAGES进行总页数统计时,如果不显示则在后加(ZE).
78.在做LSMW时TRANSFERGLDATA用到的标准程序为:
RFBISA00.
79.在创建LSMW时:
PROJECT->传输项目的名称(可分配多个子项目),SUBPROJECT->子项目可有无限个子项目,OBJECT->对象名称对应业务名称.对象分配到子项目中.
80.使用SAP标准程序:
RMDATIND可直接输入物料主数据.
81.在维护STRUCTURE的时候都有两个或一个属性,为表头结构与行项结构.
82.在SPECIFYFIELS的时候,FILE一定是.TXT形式的扁平文件格式.
83.如果导入的数据没有值则进行以下CODEING:
IFNOTITEM-MWSKZISINITIAL.
BBSEG-MWSKZ=ITEM-MWSKZ.ENDIF.
84.使用EXCEL创建一个扁平形文件格式(ASCIIFILE)--àaflatfileofleguacydata.打开EXCEL,另存为时选扩展名为:
TEXT(TABDELIMITED).
85.如果要改动一个TABLE,可以先复制出来,然后对其进行修改,可以对新表进行结构修改.
86. 用/NSHD0可以为原本的SAP事务代码进行定制,如MM01,VA01等等.类似/NSE93.
87.几个用到的T-CODE说明:
T-CODE 说明
1,ST05TRACESQL.
2,CS01CREATEBOM
3,XK01CREATEVENDOR
4,FILECONFIGURELOCALPATH
5,SARADELETEDATAUSINGBATCHMETHOD
6,AL08DISPLAYUSEWHOONLINE
7,SE09DISPLAYTREESTRUCTURECHART.
8,OPK8CONFIGUREPPINIMG
9,V/40CONFIGURESOINIMG
10,VV21->VL01N->VL71PRINTDELIVERNOTE
11,ME2Ldisplaypowhichhavebeenreleased
12,SPADDEPLOYFONTSETFORPRINTER
13,M706CONFIGUREGIINIMG
14,MBSTCANCELMATERIALDOCUMENT
15,SE93,SHD0TRANSACTIONVARIANTS
16,XD01CREATECUSTOMER
17,SE32EDITTEXTFORABAP
18,MM50,MM17SOMEUSEFULTCODEFORMAINTAININGMM
19,V/30CONFIGURESO/INVOICEINIMG
20,DB02,DB12DISPLAYINFORMATIONOFDB
21,COO1CREATEPRODUCTORDER
22,VF02CHANGEINVOICE’SOUTPUT
23,COOIS,COO5NRELEASEPRODUCTORDER
24,V/34CONFIGUREDELIVERYNOTE
25,SHDBSE35UPLOADBDC
26,SALEIMGFORALE/IDOC
27,ME21N->ME22->ME28->MIGO->MB03GIPROCESS
28,OMBRDEPLOYBARCODEFORGI
29,MMAM改变物料类型
30,WE02查看现有的IDOS
31,SCC4CLIENTR的定义
32,WEDI显示IDOC的工具菜单界面
33,PFCGROLE角色的定义
34,SCCLCLIENT的COPY
88.把目前SAP的资料存入本地文件:
使用SAP标准程序:
RMDATGEN.
89.如果在MASTERTABLE中增加一个新字段:
APPENDTOBMMH1---此表为从MARA拷贝过来.那么要运行RMDATING->GENERATECODEFORFGROUPMGAD.
90. 可以通过SE32来维护ABAP中那些与选择屏幕相关的TEXT.
91.通过语句BOXXPOS‘7’CMWIDTH0TWHEIGHT‘11’CMFRAME10TW可在指定位置画一条竖线.
92.用TRANSLATETEXTTOUPPER/LOWER可以进行大小写转换.
93. 用LSWM导PO数据的时候分成二步录制,在HEAD中录HEADER和ITEM的第一条记录,然后再录ITEM的时候用事务代码ME22录,进入CHANGE界面后点菜单的EDIT中ENTRYLINES录制ITEM的第二条记录.注意这里:
BSTPO_02的值与EBELP的值一样.
94. 用SM12可以在系统不正常退出后,结束某个进程.
95.在用SAPSCRIPT画图时,如果要在每一页都显示则不要把它的语句放在MAIN中,应放在MAINTYPE为CONST或VAR的窗口.
96. 在PARAMETERS定义的参数如果要有个默认值,则格式为:
parameters:
amounttypeIdefault20.
97. 对于PO单的EBELN,如果用SELECT-OPTIONSXXXLIKEEKKO-EBELN则会X前加IBT,为避免这种情况用PARAMTERS与BETWEEN来解决.
98. 在SAPSCRIPT中如果在对某个字段进行右对齐,一般通过命令R来设置没什么效果,最好是通过TAB中的ALIGNMENT来进行设置.
99. 在做PAI的时候如果要读取动态程序值要用到的FUNCTION:
DYNP_VALUE_READ.
100.通过程序SHOWICON可以查看到所有的SAPICONS.
101.在INCLUDE中也可以用变量如:
/:
INCLUDE&SCUSTOM-NAME&TEXTIDST.这样的话PO单的REMARKS可用多种语言,写好后可动态调用.
102.修改内表的某一行:
createtableitabwithkeyperson=‘123’binaraysearch.
Itab-name=‘xx’.Itab-age=‘28’.
Modifyitabindexsy-tabix.
103.如果要在一个表头部分用边框分割开,最好的方法是在每一个WINDOW中写入
/:
BOXFRAME10TW.
104.在一个报表中加入一张图片,如果只能在源语言环境下显示,则可做几次语言转换,最好第一次用ZH或ZF.
105. 一个功能模块如READ_TEXT要看有几个输入输出函数,可在显示状态下查看IMPORT和EXPORT.查看功能模块T-CODE:
SE37.
106.发票单对应的SMARTFORM设置是,PROGRAM:
RLB_INVOICESMARTFORM:
LB_BIL_INVOICE.对应的SAPSCRIPT是,PROGRAM:
RVADDN01SMARTFORM:
RVDELNOTE.
107.要在工单中打印条码,在OPK8中选中SPOOLPRARMETESFORUSER改OUTPUTDEVICE为BARCODE(为自己设定的条码打印机),PRINTERSPECIFICATION的OUTPUTDEVICE也为BARCODE->PRINTCONTROLFORUSER.做以上这些事的前提是要先安装TBARCODE_SAPLPD-----打印驱动.
108.设置打印机的字体集用T-CODE:
SPAD.
109.要查看指定用户建立或修改的文档,用SE80进入OBJ