SAP ABAP/4 学习日记

1.Object Navigator是ABAP工作平台上众中开发工具的中心入口,事务代码为:se80,其中还有几个经常会用到的T-CODE: SE38, SE24, SE37.

2.在ABAP Editor中有一个Excute with variant 按钮,代表通过变量运行(变式与选择屏幕相关).

3.Editor Pretty Printer ON/OFF的设置: 菜单项: Utilites->settings有相关项,选中Indent,Convert upper/lowercase同Keyword Uppercase.

4.ABAP有三种类型的处理块:Event blocks, Dialog Modules,Procedures只有后一种可拥有自己的局部变量,而且程序语句是内部调用,前两者处理块之间实行外部调用.

5.应用程序类型, 可执行的:以Report关键字引导,不能定义功能模块但可以调用.模块池的:以Program关键字引导,必须通过事务代码运行.

6.语句链 Write: text1, text2. 等同于: Write text1. Write text2.

7,在一个Program中,处于Form和Endform之间的是Subroutines. 该程序由Program引导,不能直接运行,需被调用,不能包含自定义的用户屏幕.

8.数据内部定义: types type(len) Type type [decimal dec]

data data(len) Type type [decimal dec] [value var]

Decimal 附加项只适用于指定P类型的小数位.

9.两个结构体进行赋值操作,如果 Source与Destination的组件结构不完全相同,则用

Move-corresponding, eg: move-corresponding source-data to destination-data.

10.在ABAP数据表达式中,关键字前后必须有空格,eg: Fault: (a=b+c) true:: a = b + c .

11.在用户主记录里可以设置日期的显示分隔符,小数点字符和千位分隔符,在system->userprofile->owndata 或T-code: su01.

12.内表是一种大批量数据管理形式,用于在程序运行期间存储多行结构相同的数据,程序对内表的行操作不能直接进行,必须通过一种接口来传输,这个接口就是工作区.

13.ABAP的两种动态数据对象: Field symbols 与 Data reference.

14.内表有三种形式: standard table , sorted table , hashed table后一种不能进行索引查找,只能通过关键字搜索.

15.子程序的定义和调用分别用Form/Endform和perform来实现,如果想生成子程序的代码框架,则在prefom add处双击即可.

16.package的命名规则: begin with A-S or U-X是SAP standard object, begin with Y or Z are customer objects, begin with T are private test package, begin with $ are local package.

17.在数据字典中,每创建一个TABLE,都将生成一个同名的结构化数据类型,其中的组件字段与实际物理数据库表完全一致.

18.在select查询中如果要指定多个数据对象,则需要将这些对象放在括号内,并用逗号隔开,eg: select * from spfli into (a, b).

19.Function Module是最为常用的复用组件,它是独立的R/3仓库对象,也是一种过程模块,在不同的系统间可以通过RFC(Remote function call)技术进行功能模块的调用.

20.几个有用的系统函数: sy-uname, sy-host, sy-datum, sy-uzedit, sy-subrc, sy-bdcnt,sy-index, sy-tabix,sy-dynnr.

21.可用于交互式报表的列表事件有: at line-selection, at user-command 前者为选择某行时触发,后者由某个GUI触发.

22.在可执行程序中,只要在程序代码中使用parametes或select-options语句,则在程序运行后就会产生用户的选择屏幕.

23.LDB(逻辑库)节点在程序访问之前需用Nodes语句声明,在旧版本中则使用Tables声明. 两种中止语句 Reject与check(有条件中止).

24.由系统自动调用的子程序称回调线程,-----call back routine,利用此程序可以实现许多高级屏幕功能.

25.在OO设计中对象的识别和寻址是通过对象引用来实现的.

26.在二种对象运算访问符中->与=>,对于类中的静态组件是通过类名称加=>直接对类进行操作的.eg: class=>comp.

27.对象的自身引用可使用变量ME,是一个局部变量来的.

28.Append与Insert r的区别: append wa to itab; insert wa into table itab

前者不能用于Hashed表, 后者不能用于Sorted表的non-unique.

29.修改内表语法: modify itab from wa transporting col2 where….. 表明根据where条件来更新COL2字段值,表类型为SORTED或HASHED.

30.删除内表语法: Delete table itab: from wa, with table key col = 1. 三个标点不可少,with后的为条件关键字.如果用条件的则为: DELETE ITAB WHERE (COL > 17 AND COL < 4 )

31.在LOOP AT…ENDLOOP内有一个 AT ,<…>,ENDAT循环. 其中的包括: FRIST, LAST, NEW , END OF.这些可以用来进行内表中按某个字段进行分组统计.

32.几条记录作一次取用:PACKAGE SIZE N eg: select * from spfli into corresponding fields of table itab package size 3.

33.接口成员只能为类的公有成员,接口没有自己的实例,一个接口可以被任意多个不同的类实现,接口中定义的成员集在各类中名称要相同.

34. 在程序中使用逻辑数据库有两种方法:通常是通过GET事件或者功能模块进行调用.如: NODES node.

35.在程序代码中输入NEW-PAGE PRINT ON ,将生成的列表直接发送走到SPOOL系统进行打印,不在屏幕上显示.

36.将一组选择屏幕组合在一个区域,可以使用Begin of block…..eg:

Selection-screen begin of block blocka [with frame [title tit] ]

[no intervals]—只选单值不出现TO.

Selection-screen end of block.

37.屏幕流逻辑分为两个最基本的处理块: PBO与PAI, 前者是在向用户显示屏幕GUI之前触发,后者是在用户进行某些屏幕行为后并回车时触发.流逻辑模块是在语句MODULE/ENDMODULE之间定义.这里的语法不属于ABAP系列.

38.屏幕中的OK字段其作用是:返回在屏幕和GUI状态中用户触发的功能代码:一般情况字段命名为:OK_CODE,数据类型与SY-UCOMM相同.

39.通过SE93可以为程序创建自定义的事务代码.

40.GUI中的交互元素包括菜单条,标准工具按扭,APPLICATION TOOLBAR,FUNCTIONKEYS共四种,在作屏幕事务设计时这些都要分配具体的功能代码与之对应.

41.在定义EXPORTING、IMPORTING与CHANGING的时候,前两者分别为基本输入与输出参数,而CHANGING可用于前两者功能。

42.在处理商务文档时需用到SAPSCRIPTION与SMARTFORMS工具,两者都可以进行布局设计与输出控制。企业中的PO,SO等报表都要用到此类工具。

43.NEW-LINE = write: / eg: write: / xxx. The same to, new line. Write xxx.

44.在EDITOR界面的GOTO-》ATTRIBUTE-》可改TITLE的属性。

45.在Report xxx后可跟LINE-SIZE WIDTH, LINE-COUNT, PAGE LINES等属性,这些选项可以用来控制列表输出的页格式。

46.插入断点: BREAK-POINT, BREAK-USERNAME,也可以在程序激活的状态下按下STOP BUTTON。

47.用PROGRAM中的DOCUMENT可同步显示提示帮助。同时也可以在此处编辑。

48.可以用INCLUDE去包含一个数据类型 eg: include type xxx. 其中XXX为已经定义的数据类型。 这种方法在定义游标的时候会用到。

49.几个字符串操作函数:split…at…into.., shift ….right…., add-corresponding, divide-coresponding, move-corresponding, abs, concatename, condense.

50.刷新的时候对于基表用refresh, 内表用clear,free.

51.读数据集:READ DATASET DSS INTO RECORDE。

52.批处理工具,LSMW,BDC, CATT,ECATT。

53.如果要让个选择屏幕浮在SCREEN 1000的上面,则使用调用语句:

CALL SELECTION-SCREEN 100 STRATING AT 10 10 END AT 50 50。

54.从一个正在运行的程序调用另一个可执行程序: 可用SUBMIT命令来完成.通过事务代码调用程序的语句为:LEAVE TO TRANSCATION 或 CALL TRANSCATION.

55.用SELECT把多行选择到内表: SELECT …..INTO/APPENDING TABLE ITAB. 如果希望不覆盖原来的内表数据,则使用APPENDING.

56.SAP应用服务器文件及目录可以通过事务代码:AL11进行浏览.

57.要显示END-OF-PAGE事件的页脚内容,需在LINE-COUNT LENGTH后加上[(FOOTER-LENGTH)], 指定预留的页脚行数,eg: line-count 12(3).

58.想让一个选择屏幕的条件字段自动调用一个表的字段值信息:

      Select-options so-air for spfli-carrid.

59.做一个SAP QUERY涉及到的步骤:一首先建立一个用户组,二建立一个功能组选择表数据,SQ02,SQ03.三在SQ01下建立一个如果是第一次建QUERY,则在QUERY中输入名称.

60.如果想把一个屏幕的某字段设为必需输入的值,则可执行以下操作.

At selection-screen. 此为一个屏幕事件.

If carrid is initial.

Message e888( hints ) with ‘xxxx’.

Endif.

61.在sapscript中如果要对main window的顶部打印指定的文本行,可使用TOP/ENDTOP 来控制,底部类似: BOTTON/ENDBOTTON.

62.在一个指定的地方画一个框,要用到三条指令:

/: positon window 代表窗口的左上角.

/: postion xorigin ‘1.2’ cm yorigin 8 cm 系统原点进行位移.

/: box height ‘0.5’ cm width 19 cm intensity 50.

63.把一个SAPSCRIPT报表从CLIENT300 移到 CLIENT400, 使用SAP的标准程序:RSTXSCRP, 先在CLIENT300中进行EXPORT,然后到CLIENT400中进行IMPORT.在这里操作要注意的是: 在做IMPORT的时候OBJECT NAME 要与原来EXPORT 的一样.

64. 在MOVE RESOURCE TO DESTINATION 中如果RESOURCE是一个变量字段,很有可能在操作中得不到数据字段赋过来的值, 这时可以在操作过程中定义一个变量来转换解决这个现像.: move resource to var1. move var1 to destination.

65.在ABAP的PERFORM程序中,如果使用了两个变量 USING A. USING B. 要读INTAB中B的值,则使用: READ TABLE ITAB INDEX 2.

66. 在一个查询语句中,如果WHERE语句后加入了CLIENT SPECIFIED 关键字,则查询所有集团(CLIENT)的数据.

67.在CHANGE一个FORM时,可以进行多语言的维护,前提是在进入修改之前选中编辑的语言类别.

68.在报表的制作过程中应尽可能多地定义PARAGRAPH FORMAT少定义WINDOW,这样有利于日后的维护.

69.在没有ACTIVE的情况下少用RESET,这样会丢失你之前修改的所有信息,即使你对报表进行的保存操作.

70. 对于一个表要查看其所对应的数据字段: /va02->sale->header->sales 然后把光标放在某一个字段内按F1查看: Technical information.

71. 如果经常用到一个图标进行打印,可在/NSE78 下IMPORT GRAPHIC下选中RESIDER IN THE PRINTER MEMORY.

72.插入一个BMP,先在/NSE78下建好,然后在FORM的LAYOUT下点击右键: CREATE GRAPHIC进行相应的操作,在这里要注意色体的选择.

73.CREATING GRAPHIC OBJECTS AND IDS: 先在/NSE75下设置,然后点击/NSE78查看.

74.在页脚插入一个公司商标信息: / INCLUDE &TVKO-TXNAM_FUS& OBJECT TEXT ID ADRS LANGUAGE &VBDKA-SPRAS_VKO&.

75. 使用STANDARD TEXT, 先通过/NSO10定义一个标准文档,然后在FORM里插入命令: INCLUDE I_ADRS_HEADER OBJECT TTEXT IDXXX.

76. 如果把一段标题设置成在每一页都打印,则使用: TOP…ENDTOP来实现.

77. 在用FORMPAGES 进行总页数统计时,如果不显示则在后加 (ZE).

78.在做LSMW时TRANSFER GL DATA 用到的标准程序为: RFBISA00.

79.在创建LSMW时: PROJECT->传输项目的名称(可分配多个子项目),SUBPROJECT->子项目可有无限个子项目, OBJECT->对象名称对应业务名称. 对象分配到子项目中.

80.使用SAP标准程序:RMDATIND可直接输入物料主数据.

81.在维护STRUCTURE的时候都有两个或一个属性,为表头结构与行项结构.

82.在SPECIFYFIELS的时候,FILE一定是.TXT形式的扁平文件格式.

83.如果导入的数据没有值则进行以下CODEING: IF NOT ITEM-MWSKZ IS INITIAL.

BBSEG-MWSKZ = ITEM-MWSKZ. ENDIF.

84.使用EXCEL创建一个扁平形文件格式 (ASCIIFILE) --àa flat file of leguacy data. 打开EXCEL,另存为时选扩展名为: TEXT(TAB DELIMITED).

85.如果要改动一个TABLE,可以先复制出来,然后对其进行修改,可以对新表进行结构修改.

86. 用/NSHD0可以为原本的SAP事务代码进行定制,如MM01,VA01等等.类似/NSE93.

87.几个用到的T-CODE说明:

       T-CODE       说明

       1, ST05 TRACE SQL.

       2, CS01 CREATE BOM

       3, XK01 CREATE VENDOR

       4, FILE CONFIGURE LOCAL PATH

       5, SARA DELETE DATA USING BATCH METHOD

       6, AL08 DISPLAY USE WHO ON LINE

       7, SE09 DISPLAY TREE STRUCTURE CHART.

       8, OPK8 CONFIGURE PP IN IMG

       9, V/40 CONFIGURE SO IN IMG

      10,VV21->VL01N->VL71 PRINT DELIVER NOTE

      11, ME2L display po which have been released

      12, SPAD DEPLOY FONT SET FOR PRINTER

      13, M706 CONFIGURE GI IN IMG

      14, MBST CANCEL MATERIAL DOCUMENT

      15, SE93,SHD0 TRANSACTION VARIANTS

      16, XD01 CREATE CUSTOMER

      17, SE32 EDIT TEXT FOR ABAP

      18, MM50,MM17 SOME USEFUL TCODE FOR MAINTAINING MM

      19, V/30 CONFIGURE SO /INVOICE IN IMG

      20,DB02,DB12 DISPLAY INFORMATION OF DB

      21, COO1 CREATE PRODUCT ORDER

      22, VF02 CHANGE INVOICE’S OUTPUT

      23, COOIS,COO5N RELEASE PRODUCT ORDER

      24, V/34 CONFIGURE DELIVERY NOTE

      25, SHDB SE35 UPLOAD BDC

      26, SALE IMG FOR ALE/IDOC

      27, ME21N->ME22->ME28->MIGO->MB03 GI PROCESS

      28, OMBR DEPLOY BARCODE FOR GI

      29, MMAM 改变物料类型

      30,WE02 查看现有的IDOS

      31,SCC4 CLIENTR的定义

      32,WEDI 显示IDOC的工具菜单界面

      33,PFCG ROLE 角色的定义

      34,SCCL CLIENT的COPY

88. 把目前SAP的资料存入本地文件:使用SAP标准程序: RMDATGEN.

89.如果在MASTER TABLE中增加一个新字段: APPEND TO BMMH1---此表为从MARA拷贝过来. 那么要运行RMDATING->GENERATE CODE FOR FGROUP MGAD.

90. 可以通过SE32来维护ABAP中那些与选择屏幕相关的TEXT.

91.通过语句BOX XPOS ‘7’CM WIDTH 0 TW HEIGHT ‘11’ CM FRAME 10 TW 可在指定位置画一条竖线.

92.用TRANSLATE TEXT TO UPPER/LOWER可以进行大小写转换.

93. 用LSWM导PO数据的时候分成二步录制,在HEAD中录HEADER和ITEM的第一条记录, 然后再录ITEM的时候用事务代码ME22录,进入CHANGE界面后点菜单的EDIT中ENTRY LINES录制ITEM的第二条记录.注意这里: BSTPO_02的值与EBELP的值一样.

94. 用SM12可以在系统不正常退出后,结束某个进程.

95.在用SAPSCRIPT画图时,如果要在每一页都显示则不要把它的语句放在MAIN中,应放在MAIN TYPE 为CONST或VAR的窗口.

96. 在PARAMETERS定义的参数如果要有个默认值,则格式为:

parameters: amount type I default 20.

97. 对于PO单的EBELN,如果用SELECT-OPTIONS XXX LIKE EKKO-EBELN则会X前加IBT,为避免这种情况用PARAMTERS与BETWEEN来解决.

98. 在SAPSCRIPT中如果在对某个字段进行右对齐,一般通过命令R来设置没什么效果,最好是通过TAB中的ALIGNMENT来进行设置.

99. 在做PAI的时候如果要读取动态程序值要用到的 FUNCTION: DYNP_VALUE_READ.

100.通过程序SHOWICON可以查看到所有的SAP ICONS.

101.在INCLUDE中也可以用变量如: /: INCLUDE &SCUSTOM-NAME& TEXTID ST.这样的话PO单的REMARKS可用多种语言,写好后可动态调用.

102.修改内表的某一行: create table itab with key person = ‘123’ binaray search.

Itab-name = ‘xx’. Itab-age = ‘28’.

Modify itab index sy-tabix.

103.如果要在一个表头部分用边框分割开,最好的方法是在每一个WINDOW中写入

/: BOX FRAME 10 TW.

104.在一个报表中加入一张图片,如果只能在源语言环境下显示,则可做几次语言转换,最好第一次用ZH或ZF.

105. 一个功能模块如READ_TEXT 要看有几个输入输出函数,可在显示状态下查看IMPORT和EXPORT. 查看功能模块T-CODE: SE37.

106.发票单对应的SMARTFORM设置是,PROGRAM: RLB_INVOICE SMARTFORM: LB_BIL_INVOICE. 对应的SAPSCRIPT是, PROGRAM: RVADDN01 SMARTFORM: RVDELNOTE.

107.要在工单中打印条码, 在OPK8中选中SPOOL PRARMETES FOR USER 改OUTPUTDEVICE为BARCODE(为自己设定的条码打印机), PRINTER SPECIFICATION 的OUTPUTDEVICE也为BARCODE->PRINT CONTROL FOR USER. 做以上这些事的前提是要先安装TBARCODE_SAPLPD-----打印驱动.

108.设置打印机的字体集用T-CODE: SPAD.

109.要查看指定用户建立或修改的文档, 用SE80进入OBJECT NAVIGATOR界面,选择TRANSPORT ORGANIZER ,选定查看的用户.此功能等同于: SE09.

110.定义内表与工作区最方便的方法.起先: DATA: ITAB TYPE TABLE OF MARA.

然后: DATA: WA LIKE LINE OF ITAB.

111.QUICKVIEWER所生成的报表是用户自定义的报表,只能由此用户自己使用与维护,无法利用用户组和功能区域统一管理.

112.在做QUERY查询的时候,如果要对两个现有字段进行相应算术运算,可通过增加一个本地字段来实现.前提是要对打算处理的两字段设置SHORT NAME,然后在FORMULA中引用即可.

113.. 在提取物料资料的文本信息时,如果一个物料的几种语言描述都不相同,那么即使采购单只有一个ITEM也会对应出几个文本信息记录行,可通过SPRAS来过滤.

114. 在SPAD中安装BARCODE时,驱动程序用: SAPLPD/SAPWIN DRIVE3.0.

115.在用GROUP BY做统计的时候,对于用了算术运算的字段就不能出现在GROUP BY中.

116. 如果要对MARA中某个字段进行隐藏,则到IMG->LOGISTICS GENERAL->MATERIAL MASTER-> FIELD SELECTION下进行ASSIGN与MAINTAIN的设置.

117.表TNAPR可查看相关输出报表对应的打印程序与相应报表名.

118. 在装条码打印机的时候,先安装条码驱动程序到SAP安装目录SPALD下,在SPAD下选中UTILITIES->FOR DEVICE TYPES->COPY DEVICE TYPE 用SWIN,然后新建一个OUTPUTDEVICE,在ACCESS METHJOD下选HOSTPOOL为F: 前台打印输出. 打印条码的下载地址: WWW.TEC-IT.CO.AT/

119. 函数SY-REPID显示的内容为当前程序名.

120. 用T-CODE:OAER进入调用文档界面, 在CLASSNAME中输入PICTURES,CLASSTYPE为OT,进入后在CREATE下可创建与具体文档相关的链接.

121.对于要在ALV在显示下钻表,一般情况都要自定义几个相关的用户屏幕,具体做法可参照SAP标准示例程序: BCALV_GIRD_05.

122.对于一个FORM要指定一个STYLE则在FORM ATTRIBUTE的STYLE中设置.

123.在FORM中做多语言维护,用LOGO LANGUAGE进行维护就OK.如果要与COMMAND中的CODE对应,需要条件中输入CODE中相同的判断.

124. 在TEMPLE中要显示几行文本就用几个TEXT来控制, 动态显示ITEM的情况用TABLE和LOOP来进行控制.

125.在TABLE中画线,可通过与表的SELECT PATTERN结合实现.

126.要调用一个表或结构的字段,需先在GLOBAL DEFINITIONS中进行,变量名称的定义,然后引用字典中定义的表或结构.(其实最后都要通过ABAP程序的内表进行传输)

127. 在一个TABLE中加字段循环,首先要为变量设置一行,而这一行的值在TABLE中建一个循环,然后在循环下建一新行,此行的类型就是为它留的那行,之后为每个列建立一个文本,此文本的值可直接从表接口拖过来. 还有点需注意的是LOOP下的INTERAL TABLE等同于TABLE中的INTERNAL TABLE.

128. 用ABAP调用SMARTFORM用到的功能模块是: SSF_FUNCTION_MODULE_NAME之后调用IMPORTING中从FM_NAME传过来的FUNCTION FM_NAME.

129. 如果在ITAB中引用的是一个DDIC定义的TABLE或STRUCTRUE则TYPE ASSIGNMENT用LIKE, TYPE 无效.

130.字段内容一定要放在TABLE的MAIN AREA中进行LOOP循环才得以显示.

140.为了避免重复显示内表记录的问题,在TABLE DATA 中把ROW设成功1到1 .

141.在用ABAP调用SMARTFORM时,TABLE下的参数内表是FORM中定义的内表名.

注意这里的名称一定要相同,不然会报RUNTIME的错误.

142.如果在用LSMW导SO的时候出现选择销售范围的情况,这和具体的售达方有关系,还有在EXCEL中表示的日期格式去掉特殊符号eg: 24.11.2005写成 24112005.

143.在用LSWM录制SO的ITEM时输入物料号和数量后不按回车,直接点击保存按扭.

144.对内表某个字段进行填值操作(此字段初始值为空): ITAB-NUMBER = COUNTER.

MODIFY ITAB. COUNTER = COUNTER + 1.

145. 如果要在屏幕1000的基础上自建一个101SCREEN则定义为:

selection-screen begin of screen 101.

Select-options: matnr for mara-matnr.

Selection-screen end of screen 101.

最后调用它: CALL SELECTION-SCREEN ‘0101’ STARTING AT 10 10.

146. EDI的处理流程: OUTBOUNDPROCESS->从SAP传到操作系统并转换成FILE TEXT格式->通过VAN传到合作伙伴方->OS到SAP->用SAP的EDI创建APPLICATION DOCUMENT->生成相应的文档(PO,SO,PP)

147.处理某事件后弹出一个信息提示窗口: call function ‘popup_to_inform’ exporting title1= ‘xx’ txt1 = ‘xxx’. 另一种不弹出的则为: MESSAGE SY-REPID TYPE ‘I’.

148.要在一个类未定义之前引用此类: CLASS A DEFINITION DEFERRED.

149.获取一个内表共有多少行,使用函数 LINES( ITAB ) .

150.要想调用一个CLASS中定义为PROTECT的方法,需继承过来用PUBLIC的方法进行CALL METHOD.(其实有很多种方法)

151.参数选项在EVENT中定义为哪种类型如EXPORTING则在RAISE EVENT时如果用到参数也用 EXPORTING VALUE = ‘XXX’.

你可能感兴趣的:(信息化)