ABAP学习精华
ABAP学习基本知识重点总结
ABAP学习基本知识重点总结ABAP学习知识总结2015-1-1事务码:ST22 查看报错信息2015-1-14abap基本语法语法特点关键字不区分大小写内表:可变长度的数据对象OPEN SQL代码type-pools:slis 类型组用于需要用ABAP已经预定义好的类型组(结构)occurs l 结构体后面老式定义类表的方法DATA:gt_fieldcat type 类表参照类表生成类表xx2 like line of xx1 参照参照XX1创建工作区XX2gt_fieldcat type 结构参照结构生成工作区(结构)statrt -of-selectionperform frm_get_data 调用方法end statrt -of-selectionform frm_get_data.方法申明form frm_1.//做什么作用form frm_2.endform.into correspoding fields of tables_bukergt_ek[]表示类表binary search;二分查找办法sy-subrc=0 0:成功4:错误8:数据太多2015-1-15报表开发自定义程序Y或者Z开始Z_SD_RPT_0001 销售模块报表corresesponding fields of 取出的数据自动匹配内表里面的属性赋值if 内表is not nullMESSAGE '输入的条件错误' type 'E' E表示ERRORleave list processing 自动退出到输入频幕exit.查询数据的时候加入条件设置fieldscat 标题avl函数i_callback_program =sy-repid 调用系统当前的执行程序_PF_STATUS:工具栏USER_command:工具栏按钮操作指令类似于事件TOP:写入表头html以HTML样式写入表头IS_LAYOUT:布局IT_FIELDCAT:刚刚定义的内表抬头显示字段的名称IT_EXCL```:排除不需要用的表头I_SAVE:布局IT_EVENTS:时间IS_PRINT:调用打印*IT_ALV_GRAPHIS:图形资料,展示图形TABLEST_OUTTAB:需要展示的数据内表频幕ppo pAi 循环2015-1-16SE18:查看se19:实现SE24:查找BODY增强CL_1i3ui12uiiSMOD:SAP增强增强:增加标准程序所有现在无法满足的功能四代增强1、直接修改标准程序缺点:问题不可控,工作量相当大2、SAP预留可写代码的包含文件标准程序调用优势:SAP提供预留接口,不会对其他模块造成影响,缺点:无法重用3、bodi增强面向对象继承4、面向对象全部自定义ALV_SWITCH_···每次都要调用的BODI 不能实例化其他都能实例化MCHB~MATNRMAKT~MAKTXMCHB~LGORTMARA~MEINSMCHB~CHARGMCHB~ERSDAMCHB~ERNAMMCHB~CLABSMCHB~CINSMINTO CORRESPONDING FIELDS OF GT_STOCKWHERE MCHB~WERKS IN S_WERKSAND MCHB-MATNR IN S_MATNRAND MAKT-MAKTX LIKE S_MAKTX.2015-7-15"设置MBLNR的帮助按钮AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_MBLNR."权限对象检查AUTHORITY-CHECK OBJECT 'M_MSEG_WWA'ID 'WERKS' FIELD P_WERKSID 'ACTVT' FIELD '01'.PERFORM FRM_HELP_MBLNR USING P_MBLNR.2015-7-16选择屏幕开发.选择屏幕分类:ABAP用户通过屏幕操作来实现与SAP数据的交互, 而SAP 的屏幕开发一般分为两种:第一种是通过SAP ABAP 语法创建屏幕元素, 称之为选择屏幕.第二种是通过SAP的屏幕编辑器开发.1. 屏幕元素创建的语法.SELECT-OPTIONS: 对象名称FOR 参考对象.PARAMETERS: 对象名TYPE/LIKE 参考对象.例如:TABLES: mara.SELECT-OPTIONS: s_matnr for mara-matnr.PARAMETERS: s_matnr like mara-matnr.PARAMETERS: s_matnr type matnr.SELECT-OPTIONS 在程序中生成一个含有四个组件的内表---选择表, 该表具体格式如下:DATA: BEGIN OF seltab OCCURS 0,SING(1),OPTION(2),LOW LIKE f,HIGH LIKE F,ENND OF seltab.SIGN 是标志位, 允许值为I 和E, 其意义为确定储存在字段OPTION 中的运算符是否需要取反, I 表示"包含", E 表示"排除", 等于在逻辑表达式中加一个NOT.OPTION 包含选择运算符. 如果HIGH 字段为空, 则可以填充EQ(=), NE(<>), GT(>), GE(>=), LT(<), LE(<=), CP, NP. 其中CP 和NP 只有当在输入字段中使用了通配符("*"或"+")时它们才有效.如果HIGH 字段不为空, 则可以使用BT (位于) 和NB(不位于), 其功能相当于BETWEEN 和NOT BETWEEN.选择表可以进行多行选择标准的设定.基本规则是: 如果选择表为空, 则选择所有的数据; 如果选择表有多行, 则将所有的SIGN 为"I" 数据选出后, 再排除掉其中所有的满足标志为"E" 的数据行.具体规则如下:如果选择表为空, 即用户未输入任何数据, 则条件 f IN seltab 恒为真.如果选择表中只包含SIGN 为I 的行"i1" ... , "in", 则相当于条件( i1 OR ... OR in ) 的组合.如果选择表中只包含SIGN 为 E 的行"e1" ... , "em", 则相当于条件( NOT e1 ) AND ... AND ( NOT em) 的组合.如果选择表中即包含SIGN 为I 的行"i1" ... , "in", 又包含SIGN 为E 的行"e1" ..., "em" ,则相当于条件(i1 OR ... OR in ) AND ( NOT e1 )AND ... AND ( NOT em) 的组合.动态定义输入域的参考对象.DATA: name TYPE string.SELECT-OPTIONS: s_name for (name).AT SELECTION-SCREEN OUTPUT.name = 'MARA-MATNR'.2. 屏幕输入域显示参数控制.OBLIGATORY 必输项控制.NO-DISPLAY 显示控制.VISIBLE LENGTH vlen 显示长度控制.NO-EXTENSION 多行输入控制. 限制SELECT-OPTIONS 多行输入.NO-INTERVALS. 输入范围控制.MODIFY ID modid 编辑组控制. 该参数可以将所定义的屏幕对象进行分组, 以方便在程序运行中对分组的对象属性进行统一修改及控制.VALUE CHECK 进行值检查. 如果参数字段参照数据字典中的类型定义, 可以使用该选项检查用户输入值是否符合该字段的约束表中的数据或者是否属于数据字典中定义的值列表, 否则系统将给出错误消息.MEMORY ID pid.AS CHECKBOX. 创建复选框.RADIOBUTTON GROUP radi. 创建单选按钮组.PARAMETERS <对象名> AS LISTBOX VISIBLE LENGTH vlen. 创建下拉列表.SELECT-OPTIONS: p1 FOR mara-matnr MODIF ID g1,p2 FOR mara-matnr MODIF ID g1,p3 FOR mara-matnr MODIF ID g2,p4 FOR mara-matnr MODIF ID g2.AT SELECTION-SCREEN OUTPUT.LOOP AT SCREEN.IF NOT screen-group1 IS INITIAL.IF screen-group1 = 'G2'.screen-input = 0.screen-invisible = 0.MODIFY SCREEN.ENDIF.ENDIF.ENDLOOP.******************************************下拉列表.PARAMETER: p_lang(20) AS LISTBOX VISIBLE LENGTH 22.AT SELECTION-SCREEN OUTPUT.PERFORM setlist.FORM setlist .TYPE-POOLS vrm.DATA values TYPE vrm_values WITH HEADER LINE.values-key = 'CHINESE'.values-text = '中国人'.APPEND values.values-key = 'AMERICAN'.values-text = '美国人'.APPEND values.CALL FUNCTION 'VRM_SET_VALUES'EXPORTINGid = 'P_LANG'values = values[]EXCEPTIONSid_illegal_name = 1OTHERS = 2.ENDFORM.3. 输入值的控制.控制输入默认值. SELECT-OPTIONS, Default val1 [TO val2] [OPTION opt] [SIGN sgn].DEFAULT val1. 控制PARAMETER 对象输入的默认值.LOWER CASE 容许输入小写字母. SAP 所有屏幕字段输入后都会将字母默认转换为大写, 加上该参数后允许输入小写字母.MATCHCODE OBJECT search_help. 为屏幕对象加上指定的F4 帮助.MEMORY ID pid 定义SELECT-OPTIONS 内存参数. 可以将屏幕对象输入的值保存到指定的内在参数中, 通过GET parameter 方法可以直接从内存读取该对象的值.DATA: s_date TYPE d.SELECT-OPTIONS: d1 FOR sy-datum MEMORY ID m1 NO INTERVALS.START-OF-SELECTION.GET PARAMETER ID 'M1' FIELD s_date.WRITE s_date.4. 其它选择屏幕元素.SELECTION-SCREEN SKIP [n]. 产生空行.SELECTION-SCREEN ULINE [[/]jpos(len)]. 在选择屏幕中给一行或几行中的一部分加下划线. 其中"/" 用于换行控制.SELECTION-SCREEN COMMENT [/]pos(len) comm [ FOR FIELD f]. 如果使用FOR FIELD f. 则该注释分配给参数或选择标准f. 如果用户在该元素f的注释上请求帮助(F1), 则系统显示分配给字段f的帮助文本. SELECTION-SCREEN COMMENT /1(20) text-t01. ?组合选择屏幕元素. SELECTION-SCREEN BEGIN OFLINE. ..........SELECTION-SCREEN END OF LINE.这些元素将出现在屏幕的同一行中.SELECTION-SCREEN BEGIN OF BLOCK block [WITH FRAME [TITLE title]] [NOINTERVALS]. .........SELECTION-SCREEN END OF BLOCK block.5. 屏幕对象的F1/F4输入帮助功能.1). HELP-REQUEST [ FOR LOW|HIGH ]. 字段的F1 帮助功能.当在SAP选择屏幕的字段中按下F1 键时, 可以调用自定义的程序或系统帮助文件. F1 帮助可以通过ABAP 事件AT SELECTION-SCREEN 来控制, 在自定义程序中, 可以通过调用系统标准函数HELP_OBJECT_SHOW 或HELP_OBJECT_SHOW_FOR_FIELD 来实现.SELECT-OPTIONS: s_date FOR sy-datum.AT SELECTION-SCREEN ON HELP-REQUEST FOR s_date-low.PERFORM show_f1.FORM show_f1 .DATA: t_link LIKE STANDARD TABLE OF tline WITH HEADER LINE.CALL FUNCTION 'HELP_OBJECT_SHOW'EXPORTINGdokclass = 'DE'doklangu = sy-langudokname = 'SYDATUM'TABLESlinks = t_link .ENDFORM.2). VALUE-REQUEST [ FOR LOW|HIGH ]. 字段的F4 键帮助.在指定的字段按F4 键时, 可以调用自定义的程序或系统帮助数据. 也是通过AT SELECTION-SCREEN来调用. 与F1 不同的是, F1 是进行信息提示, 而F4 是显示填充值的列表. 可以调用F4IF_FIELD_VALUE_REQUEST 参照某一个具体表字段来维护F4 帮助.AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_date-low.PERFORM show_f4.FORM show_f4 .CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'EXPORTINGtabname = 'SYST' "参照表fieldname = 'DATUM' "参照字段dynpprog = sy-repiddynpnr = sy-dynnrdynprofield = 'S_DATE'. "解发事件的屏幕对象名称.IF sy-subrc <> 0.* Implement suitable error handling hereENDIF.ENDFORM.AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_file1.PERFORM get_file_name USING s_file1 'O'.FORM get_file_name USING p_path LIKE rlgrap-filename mode TYPE c.DATA tmp_filename LIKE rlgrap-filename.CALL FUNCTION 'WS_FILENAME_GET'EXPORTINGdef_path = 'D:\ 'mask = ',*.*,*.*.'mode = modeIMPORTINGfilename = tmp_filenameEXCEPTIONSinv_winsys = 1no_batch = 2selection_cancel = 3selection_error = 4OTHERS = 5.IF sy-subrc = 0.p_path = tmp_filename.ENDIF.ENDFORM.6. 在屏幕上输出自定义文本及图标.TYPE-POOLS: icon.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT (12) mytext.PARAMETER: name LIKE sy-uname.SELECTION-SCREEN END OF LINE.INITIALIZATION.CONCATENATE icon_manager '输入人员编号' INTO mytext.在文本元素中加入图标.每个图标都由一个两位长度的代码进行标识, 在字符前面加上"@"符号表示对该图标进行引用. 可以通过数据字典查看TYPE Group: ICON, 通过ICON NAME 寻找对应的ID 列. 或通过程序RSTXICON 来查看SAP中所有图标及代码的对应关系列表.7. 在屏幕中实现按钮效果.TYPE-POOLS: icon.TABLES: sscrfields. " 引用屏幕字段属性" 创建屏幕按钮对象SELECTION-SCREEN: PUSHBUTTON 2(10) but1 USER-COMMAND cli1,PUSHBUTTON 20(30) but2 USER-COMMAND cli2 VISIBLE LENGTH 10. INITIALIZATION.CONCATENATE icon_message_information '按钮1' INTO but1.CONCATENATE icon_message_information '按钮2' INTO but2.AT SELECTION-SCREEN.CASE sscrfields. " 捕捉按钮功能代码, 也可以用SY-UCOMM.WHEN 'CLI1'.MESSAGE '按钮1事件' TYPE 'I'.WHEN 'CLI2'.MESSAGE '按钮2事件' TYPE 'I'.ENDCASE.8. 子屏幕的创建.子屏幕分为两种, 一种为Include Screen, 可以通过Report 端程序直接调用; 一种为SubScreen, 需要通过Screen Painter 所创建屏幕引用.Include Screen 相关语法如下:PARAMETERS: type as CHECKBOX.CALL SELECTION-SCREEN 123 STARTING AT 10 10 ENDING AT 80 10.SELECTION-SCREEN BEGIN OF SCREEN 123 as WINDOW TITLE text-t01.PARAMETERS: matnr LIKE mara-matnr.PARAMETERS: werks like marc-werks.SELECTION-SCREEN END OF SCREEN 123.9. 在工具栏上新增功能按钮.按钮的定义保存在结构体SSCRFIELDS 中, n 为一个整数类型的序号, 例如当n 等于1时, 按钮的描述保存在字段SSCRFIELDS-FUNCTXT_01 中, 按钮的功能代码将默认赋值为"FC01", 保存在字段SSCRFIELDS-UCOMM 中.TABLES: sscrfields.PARAMETERS: parm LIKE mara-matnr.SELECTION-SCREEN FUNCTION KEY 1.SELECTION-SCREEN FUNCTION KEY 2.INITIALIZATION.MOVE 'BUTTON1' TO sscrfields-functxt_01.MOVE 'BUTTON2' TO sscrfields-functxt_02.AT SELECTION-SCREEN.IF SSCRFIELDS-UCOMM = 'FC01'.MESSAGE '按钮1事件' TYPE 'I'.ELSEIF SSCRFIELDS-UCOMM = 'FC02'.MESSAGE '按钮2事件' TYPE 'I'.ENDIF.10. 在屏幕上创建页签.SELECTION-SCREEN BEGIN OF TABBED BLOCK FOR n lines.每个页签都是由一个单独的子屏幕控制, n 代表分页控件的高度, 屏幕载入进必须先通过INITIALIZATION 事件对其属性初始化.TABLES: mara." 定义子屏幕100SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-t01.SELECT-OPTIONS: mat1 FOR mara-matnr NO INTERVALS.SELECTION-SCREEN SKIP 1.PARAMETERS: chk1 AS CHECKBOX DEFAULT 'X'.SELECTION-SCREEN END OF BLOCK bk1.SELECTION-SCREEN END OF SCREEN 100." 定义子屏幕200SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.PARAMETERS: mat2 LIKE mara-matnr.SELECTION-SCREEN END OF SCREEN 200." 定义一个TAB空间, 取名为MYTAB, 控件高为5, 共有两个页签." 两个页签的功能代码分别为PUSH1, PUSH2.SELECTION-SCREEN: BEGIN OF TABBED BLOCK mytab FOR 5 LINES,TAB (20) button1 USER-COMMAND push1,TAB (20) button2 USER-COMMAND push2,END OF BLOCK mytab." 为TAB控件分配初始化值.INITIALIZATION.button1 = text-010.button2 = text-020.mytab-prog = sy-repid.mytab-dynnr = 100.AT SELECTION-SCREEN.CASE sy-ucomm.WHEN 'PUSH1'.mytab-dynnr = 100.mytab-activetab = 'BUTTON1'.WHEN 'PUSH2'.mytab-dynnr = 200.mytab-activetab = 'BUTTON2'.ENDCASE.屏幕元素属性的控制.屏幕中所有的对象都有独立的属性, 在SAP程序执行中, 可以通过系统变量SCREEN来读取每个屏幕对象的具体属性, SCREEN是一个标准的结构体, 其常用属性及参数如下:NAME: 屏幕对象的名称.INPUT: 设置屏幕输入域对象不否允许输入值( 0: 不可输入, 1: 可输入), 默认值为 1. ?INVISIBLE: 设置对象在输出到屏幕后时是否可见, ( 0: 可见, 1: 不可见).PARAMETERS: mat1 like mara-matnr.INITIALIZATION.LOOP AT SCREEN.IF screen-name = 'MAT1'.screen-input = '0'.screen-invisible = '0'.ENDIF.MODIFY SCREEN.ENDLOOP.选择屏幕事件.选择屏幕的处理也是通过事件驱动的, 这些事件是一些预定义的ABAP代码块. 选择屏幕中不存在任何由程序员设定的流逻辑(普通屏幕的行为由流逻辑进行控制),取而代之的是在程序中定义一系列相关的事件块, 由运行环境在处理选择屏幕的过程中触发. 选择屏幕中各个事件在程序中出现的位置是任意的, 与其调用顺序无关. 选择屏幕事件将出现在INITIALIZATION 事件和START-OF-SELECTION 事件中间; 对于使用CALL SELECTION-SCREEN 调用的自定义选择屏幕, 这些选择屏幕将出现在当前处理块中.所有的选择屏幕事件都使用AT SELECTION SCREEN 语句引导.INITIALIZATION 事件.该事件在屏幕未显示之前执行, 对程序设置值及屏幕元素进行初始化赋值.TOP-OF-PAGE.创建新的Write List 时触发.TOP-OF-PAGE DURING LINE-SELECTION.An event block is triggered for the corresponding events during the creation of details lists.You have to use system fields like sy-lsind to distinguish between the individual details lists.START-OF-SELECTION 事件.该事件由程序单击执行按钮时触发.END-OF-SELECTION 事件.该事件应用于所有数据处理完成, 即START-OF-SELECTION相关事件执行完成,但输出屏幕还未显示之前.在实际开发中主要用于一些执行结果的检验等, 其输出数据叠加于同一输出屏幕中.AT SELECTION-SCREEN OUTPUT事件.选择屏幕的PBO事件, 在每次选择屏幕被调用之前触发, 可以在其中进行选择屏幕输出之前的准备工作, 比如在程序中动态地对选择屏幕元素的输出属性进行修改.AT SELECTION-SCREEN 事件.是选择屏幕的PAI事件, 在用户输入的所有数据都被传输到程序中之后被触发, 也是选择屏幕中最后被触发的事件. 在选择屏幕中, 用户回车, 选择某GUI按钮,功能键或者菜单键之后, 如果系统检查无误, 将触发该事件.AT SELECTION-SCREEN ON field 事件.是针对选择屏幕中某字段输入的PAI事件, 当该字段值被传递给程序时被触发, 可以应用于该字段本身的正确性检查, 如果系统提示错误, 则可以在该字段中重新输入, 此时其它字段元素呈灰色, 不接受输入.AT SELECTION-SCREEN ON BLOCK block 事件.是针对选择屏幕某元素区域输入的PAI事件, 当该区域内的所有字段的值被传递给程序时被触发, 可以应用于该区域元素整体的正确性检查.AT SELECTION-SCREEN ON RADIOBUTTON GROUP rad1.作为单选按钮, 必须整体进行输入检查, 不能单独使用ON field选项进行.AT SELECTION-SCREEN ON seltab.AT SELECTION-SCREEN ON END OF seltab.这两个事件只有在使用多行选择对话框时才可能被触发, 其中ON seltab 用于用户逐行输入后的正确性检查, 而ON END OF seltab 用于整个选择表输入结束后各行的检查.AT SELECTION-SCREEN ON HELP-REQUEST FOR field.AT SELECTION-SCREEN ON VALUE-REQUEST FOR field.选择屏幕中的POH和POV事件, 当光标位于某屏幕字段时, 用户按下F1和F4键, 将触发ONHELP-REQUEST 和ON VLAUE-REQUEST事件.AT LINE-SELECTION.在Write List 中双击某行触发.屏幕事件的中止.EXIT: 中止当前事件模块.STOP: 强制中止所有事件.REJECT: 应用于读取逻辑数据库的程序.* 设置MBLNR的帮助按钮调用MB51来作为选择屏幕上的物料凭证的搜索帮助FORM FRM_HELP_MBLNR USING P_P_MBLNR.CALL TRANSACTION 'MB51'.GET PARAMETER ID 'MBN' FIELD P_MBLNR.ENDFORM.ABAP中使用for all entries in小结ABAP开发中,使用for all entries in语句将不能使用join的聚集表(例如BSEG)或者需要使用select的内表与内表串联。
ABAP的学习资料及方法
ABAP的学习资料及方法一、 ABAP进入方式:(500 ABAP01 123456)(200 ABAP01 initinit) 1、输入事务码“SE38”点击回车,输出屏幕如下:输入程序名称“ZMM0001”,点击创立,输出屏幕:点击保存,输出屏幕如下:点击保存,输出屏幕如下:点击保存屏幕如下:点击保存按钮,输出屏幕如下:点击“√”输出屏幕如下:SAP学习总结立谈之间,来集团参加ERP工程已近四个月,通过集团ERP工程组精心组织的培训,经过自己的努力学习,我对ERP的认识有了很大程度的转变。
从一开始的不了解,带着对很多专业名词及模块功能的疑问,到现在融入到ERP工程组后,被SAP庞大的功能所震撼;从一开始认为SAP仅仅是一种应用软件,跟其他公司的ERP差不多,到现在深刻的地体会到SAP在企业管理中的重要位置;从一开始对SAP可能带来的不便以及人力、财力、时间本钱产生抵触情绪,到现在对SAP产生依赖心理。
这些对SAP认识的转变,让我意识到作为一名关键用户和信息人员,为确保ERP的上线成功,应该如何发挥自身的作用。
5月9日,初步接触到了SAP软件。
五月份到七月份我初步学习SAP中ABAP语言,起初感觉这跟平时学校学习的语言差不多,但是接触的越久,我就越深深的震撼ABAP语言的严谨性,以及ABAP 语言在SAP中的重要的位置,对其他工作模块工作有非常重要的影响。
通过这段时间ABAP语言的学习后,我进入技术组协助技术组中的各位老师,解决些小问题。
工作一段时间之后,我才觉察,ERP前期工程的工作量大大超乎我的想像,它的重要性也让人感到紧张。
在每天的工作中,大家加班加点,热火朝天的讨论业务流程问题,以及程序代码如何实现业务需求,有时候为了一个观点不同而争论不休,有时候又为达成共识而言欢快乐。
大家良好的沟通交流,让我们这些初识者更积极主动地参与进来。
在技术组组工作了近两周之后,为了让我们全面认识SAP,从而更深入地开展工作,ERP工程组办公室组织人员进展了为期一周的SAP开发语言ABAP的培训。
ABAP基础重要知识学习点
ABAP基础重要知识学习点ABAP(Advanced Business Application Programming)是一种高级商务应用程序编程语言,主要用于SAP软件的开发和定制。
在学习ABAP的过程中,有一些基础的重要知识点需要掌握。
1. ABAP语法:了解ABAP语言的基本语法规则是学习ABAP的第一步。
学习如何声明变量、定义函数和方法、控制语句以及数据类型等基础知识,能够帮助开发人员编写有效的ABAP代码。
2. ABAP数据字典:ABAP数据字典是用于管理数据和定义数据库对象的工具。
掌握如何创建表格、视图、数据元素和数据类型等数据字典对象,能够帮助开发人员有效地存储和管理数据。
3. ABAP程序设计:学习如何设计和编写ABAP程序是成为一名合格ABAP开发人员的关键。
了解程序的模块化设计和封装原则,掌握ABAP的面向对象编程概念,能够开发出可重用和可维护的ABAP程序。
4. ABAP调试和错误处理:调试是开发中解决问题的重要工具。
学习如何使用ABAP调试器来跟踪代码的执行,并通过断点和监视表达式来诊断问题。
同时,掌握如何处理ABAP程序中的错误和异常情况,能够提高程序的可靠性和稳定性。
5. ABAP性能优化:在开发过程中,优化ABAP程序的性能是一个重要的考虑因素。
学习如何使用ABAP运行时分析工具来分析程序的性能瓶颈,并针对性地进行性能优化,能够提高程序的执行效率和响应速度。
6. ABAP Web Dynpro:ABAP Web Dynpro是一种用于开发SAP Web应用程序的框架。
学习如何使用ABAP Web Dynpro来设计和开发用户友好的Web界面,包括表格、输入字段和按钮等交互元素,能够满足用户对于功能和界面的需求。
总的来说,掌握ABAP的基础重要知识点是成为一名合格的ABAP开发人员的基础。
通过系统地学习和实践,可以逐步提升自己的编程能力,并为SAP软件的开发和定制提供有力的支持。
abap 主要知识点 -回复
abap 主要知识点-回复ABAP,全称为Advanced Business Application Programming,是一种专门用于SAP系统开发的编程语言。
它是一种高级的、面向对象的、事件驱动的编程语言,被广泛应用于SAP系统的开发、扩展和定制。
本文将以"ABAP主要知识点"为主题,为读者一步一步解析ABAP的核心概念和特性,帮助初学者全面了解ABAP语言以及其在SAP开发中的应用。
一、ABAP的起源和发展历程ABAP最早于1980年由SAP公司开发,用于支持SAP R/2系统的开发。
随着SAP R/3系统的诞生,ABAP也得到了进一步的发展和完善,并成为SAP系统开发的主要编程语言之一。
ABAP的发展历程可以概括为三个主要阶段:ABAP 语言基础、ABAP 对象和ABAP Web Dynpro。
二、ABAP 的特点和优势1. 与SAP系统紧密集成:ABAP作为SAP系统开发的主要编程语言,与SAP软件的其他组件紧密集成,可以方便地访问和操作SAP数据和业务逻辑。
2. 面向对象的编程:ABAP是一种面向对象的编程语言,支持面向对象的编程模型,如继承、封装、多态等,帮助开发者更好地组织和管理代码。
3. 强大的数据处理能力:ABAP具有强大的数据处理能力,包括数据查询、数据操作、数据转换等功能。
同时,ABAP还提供了丰富的数据类型和数据处理函数,方便开发者进行复杂的数据处理操作。
4. 丰富的开发工具和调试功能:ABAP提供了一系列开发工具和调试功能,如ABAP编辑器、调试器、断点管理器等,帮助开发者高效地开发和调试ABAP程序。
三、ABAP语言基础知识1. 数据类型和变量声明:ABAP支持多种数据类型,如整数、浮点数、字符串、表格等。
在ABAP中,可以通过声明变量来存储和处理数据,并可以为变量指定初始值和数据类型。
2. 运算符和控制语句:ABAP提供了一系列运算符和控制语句,如算术运算符、逻辑运算符、条件语句、循环语句等,帮助开发者进行数据处理和控制程序流程。
ABAP入门知识最全总结新人小白必备学习资料
SAP系统与ABAP关系
01
SAP系统是一款广泛应用于企业 资源计划(ERP)、供应链管理 (SCM)、客户关系管理 (CRM)等领域的软件产品。
02
ABAP是SAP系统的开发语言, 用于编写SAP系统中的业务逻辑、 数据处理和报表生成等功能。
调试日志
在调试过程中,可以开启调试日 志功能,记录程序执行过程中的 详细信息和操作步骤。这对于复 杂问题的排查和分析非常有帮助。
08
实战案例分析与经验分 享
案例一:简单报表开发实例
报表需求分析与设计
明确报表目的、数据源和输出格式,设计报 表布局和字段。
ABAP报表开发流程
创建报表程序,定义数据源和选择条件,编 写报表逻辑和输出处理。
根据实际需求设置报表的输出格式, 如PDF、Excel、Word等。
格式调整
调整报表的页面设置、边距、字体、 颜色等,确保报表输出的美观和易读 性。
报表性能优化策略
数据源优化
优化数据库查询语句,减少数据冗余和提高查询 效率。
报表缓存
合理利用报表缓存机制,减少重复计算和数据库 访问次数。
分页处理
对于大量数据的报表,采用分页处理技术,提高 报表加载速度和用户体验。
Eclipse与SAP系统连接
配置Eclipse连接参数,连接到SAP系统,实现ABAP代码的上传、下载和执行等操作。
其他辅助工具推荐
SAP Notepad
一款轻量级的文本编辑器,支持ABAP语法高亮显示和代 码折叠等功能,适合编写简单的ABAP程序。
ABAP Doc
ABAP学习笔记
ABAP学习笔记一、ABAP语法简介:ABAP(Advanced business application program),是一种高级企业应用编程语言,它支持封装性和继承性,封装性是面向对象的基础,而继承性是建立在封装性基础上的重要特性。
它适合生成报表,支持对数据库的操作,如:Sqlserver,Oracle,DB2等主流数据库系统。
主要的语法有:数据类型、控制流程、文本摘要、输出格式、程序调试1、数据类型:(八种基本数据类型)D :日期类型,格式为YYYYMMDD,长度为8T :时间类型,格式为HHMMSS,长度为6I :整数类型,默认长度为4,初始值为0F :浮点类型,默认长度为8,初始值为0,常用于计算C :字符串类型,定义变量时指定字符个数N :数字字符串类型,定义变量时指定数值字符个数X :字节序列类型,定义变量时指定字节数P(压缩号) :允许的长度为1 到16 个字节,系统会指定默认值8 个字节(也就是15 位数字)和0 个小数位常用:大小,长度,重量,货币等单位的场合.2、输出格式:WRITE 'First line.'.WRITE 'Still first line.'WRITE / 'Second line.'WRITE /13 'Third line’.3、控制流程:使用IF的条件分支IF <条件表达式1>.< statement block >ELSEIF <条件表达式2>.< statement block >ELSEIF <条件表达式3>.< statement block >.....ELSE.< statement block >ENDIF.使用CASE的条件分支CASE <f>.WHEN <F1>.<statement block>WHEN <F2>.<statement block>WHEN <F3>.<statement block>WHEN .........WHEN OTHERS.<statement block>ENDCASE.二、ABAP的语法特点:1、由各自独立的语句构成。
SAP_ABAP基础学习总结篇
WRITE: / X USING EDIT MASK '__:__:__'.
WRITE: / X USING EDIT MASK '$___,___'.
WRITE: / Y NO-GAP.
输出结果为:
11:20:30
$112,030
ABCDEF
例如 3: DATA: LEN TYPE I VALUE 10,
*-------------------------------------------------------------------------------------* 输出
一. WRITE 语句 ABAP/4 用来在屏幕上输出数据的指令是 WRITE 指令,例如:
WRITE: 'USER NAME IS:', SY-UNAME. 二. 指定屏幕输出位置 指定输出位置的语句格式为:
YY/DD/MM
MM/DD/YYYY:
DD/MM/YYYY
YYYY/MM/DD:
YYYY/DD/MM:
例如 1: WRITE: /10(6) 'ABCDEFGHIJK'.
输出结果为:
ABCDEF
例如 2: DATA: X TYPE I VALUE '11:20:30',
A(5) TYPE C VALUE 'AB CDE'.
exp: DATA : BEGIN OF PERSON, NAME(10) TYPE C, AGE TYPE I, WEIGHT TYPE DECIMALS 2, END OF PERSON.
另外,有关 DATA 宣告的指令还有: CONSTANTS(宣告常数)、STATICS(临时变量 宣告). exp: CONSTANTS PI TYPE P DECIMALS 5 VALUE '3.14159'. STATICS 叙述 宣告的变量仅在目前的程序中使用, 结束后会自动释放 语法:
abap开发知识点
ABAP开发知识点ABAP(Advanced Business Application Programming)是SAP系统中的编程语言,主要用于开发和定制SAP应用程序。
在本文中,我们将介绍ABAP开发的一些重要知识点。
一、ABAP语言基础1.数据类型:ABAP支持多种数据类型,包括整数、浮点数、字符型、日期型等。
了解不同数据类型的使用方法和限制是编写高效代码的关键。
2.变量和常量:在ABAP中,我们可以使用DATA语句定义变量,并使用CONSTANTS语句定义常量。
熟悉变量和常量的使用方式可以提高代码的可读性和维护性。
3.控制结构:ABAP提供了多种控制结构,如IF语句、CASE语句和循环语句等。
掌握这些控制结构的使用方法可以实现条件判断和循环操作。
二、ABAP面向对象编程1.类和对象:ABAP支持面向对象编程,可以定义类和对象。
了解类的概念和对象的创建方式可以提高代码的可重用性和可维护性。
2.成员方法和属性:在ABAP类中,我们可以定义成员方法和属性。
掌握这些概念的使用方法可以实现类的封装和功能扩展。
3.继承和多态:ABAP支持继承和多态的特性。
熟悉这些特性的使用方式可以简化代码的编写,提高代码的可扩展性。
三、ABAP数据库访问1.数据库表的定义和操作:ABAP可以创建和操作数据库表。
了解数据库表的定义和操作方式可以实现数据的存储和检索。
2.SQL语句的使用:在ABAP中,我们可以使用SQL语句进行数据库操作。
熟悉SQL语句的使用方式可以实现复杂的数据查询和更新。
3.事务处理:ABAP支持事务处理的机制,可以保证对数据库的操作的一致性和完整性。
了解事务处理的使用方式可以避免数据错误和数据丢失。
四、ABAP调试和错误处理1.调试技巧:ABAP提供了调试工具,可以帮助我们查找和修复代码中的错误。
掌握调试技巧可以快速定位问题,并提高代码的质量。
2.异常处理:在ABAP中,我们可以使用TRY…CATCH语句来处理异常。
abap 主要知识点
abap 主要知识点ABAP(Advanced Business Application Programming)是一种用于开发企业级业务应用程序的编程语言,主要应用于SAP业务软件系统中。
ABAP主要用于实现和定制SAP ERP、SAP S/4HANA等企业资源规划系统。
以下是ABAP主要知识点:1.基本语法:ABAP的基本语法包括数据类型、变量、常量、运算符、流程控制、函数、过程、模块等。
2.数据结构:ABAP中常用的数据结构有数组、表格、链表、树形结构等。
3.界面设计:ABAP可用于设计用户界面,包括对话框、菜单、报表等。
4.数据库操作:ABAP支持对数据库的CRUD(创建、读取、更新、删除)操作,主要包括SQL语句、数据定义、数据存取等。
5.报表设计:ABAP具有强大的报表设计功能,可以创建各种复杂程度的报表,如分组报表、多级报表、交叉报表等。
6.常用ABAP组件:ABAP中有一些常用的组件,如逻辑块(ALV)、数据字典(DDIC)、报表框架(BDC)、界面事件(BEL)、用户自定义函数(FC)等。
7.企业对象组件(EPC):EPC是ABAP的一种企业级组件,用于实现业务过程的自动化。
8.工作流:ABAP支持工作流编程,可以实现业务流程的建模、调度和监控。
9.对象化编程:ABAP支持面向对象的编程,可以实现代码的复用和模块化。
10.接口技术:ABAP接口用于实现与其他系统(如HR、CRM等)的集成。
主要包括BAPI、BDC、IDoc等。
11.性能优化:ABAP程序的性能优化是开发者关注的重要议题,包括SQL优化、代码优化、内存管理等。
12.ABAP开发工具:常用的ABAP开发工具包括ABAP Workbench、SE80/SE81、SAP NetWeaver Developer Studio 等。
13.脚本语言:ABAP脚本语言(Scripting)用于实现与ABAP程序的交互和自动化。
SAP ABAP基础学习整理汇总
目录一、创建ABAP (2)1.1用ABAP REPORT来实现: (2)1.2用ABAP DIALOG来实现: (2)二、ABAP基础知识学习 (2)2.1数据类型 (2)2.2变量声明 (3)2.3关键字 (3)2.3.1 STATICS 关键字 (3)2.3.2 TYPE 关键字 (3)2.3.3 LIKE 关键字 (4)三、输出 (4)3.1 WRITE 语句 (4)3.2指定屏幕输出位置 (4)3.3 WRITE TO 语句的基本形式 (5)四、常见关键字 (7)4.1显示图示 (7)4.2 Internal Table 的声明 (7)4.3 APPEND LINE (9)4.4 COLLECT LINE (10)4.5 INSERT LINE (10)4.6读取internal table (11)4.7修改internal table 中的值 (12)4.8确定内表属性 (13)4.9加总SUM (13)4.10添加字段顺序并将结果赋给另一个字段 (14)4.11屏幕输入命令 (15)4.12 SELECTION-OPTIONS (16)4.13改变条件输入格式 (16)4.14配合SELECT 命令 (17)五、SQL语法 (19)5.1 SELECT语句 (19)5.2 INSERT 语句 (22)5.3 UPDATE 指令 (23)5.4 MODIFY 语法 (24)5.5 DELETE 语法 (24)5.6 DATABASE CURSOR (25)5.7 COMMIT WORK & ROLLBACK WORK (25)5.8 PERFORMING <form name>的使用 (26)5.9结果语句 (27)5.10循环关键字 (28)5.11循环控制关键字 (28)5.12搜索字符串 (29)SAP ABAP基础学习整理汇总一、创建ABAP在SAP中,每一个功能基本上都对应了一个事务代码,你可以输入相应的事务代码来执行相应的功能,事务代码在SAP MENU下面的输入框中输入。
sap abap技巧
sap abap技巧摘要:一、引言1.ABAP背景介绍2.ABAP在SAP系统中的重要性二、ABAP编程技巧1.基本语法与规范2.数据类型与变量3.流程控制与循环4.函数与模块5.异常处理与调试三、ABAP实用技巧1.高效SQL查询2.数据传输与转换3.用户定义函数与数据类4.接口与调用5.性能优化与调试技巧四、ABAP最佳实践1.模块化编程2.面向对象编程3.代码重用与封装4.数据安全性保障5.项目管理与团队协作五、ABAP发展趋势与展望1.面向未来的技术栈2.云原生与微服务3.数字化与智能化4.跨平台开发与应用5.开源生态与社区发展正文:一、引言1.ABAP(Advanced Business Application Programming)是一种高级编程语言,起源于SAP系统。
它被广泛应用于企业级业务应用程序的开发和维护。
2.ABAP在SAP系统中的重要性不言而喻,它是SAP系统的基础,掌握了ABAP,就等于掌握了SAP系统的核心。
二、ABAP编程技巧1.基本语法与规范:熟悉ABAP的基本语法和编程规范,例如命名规则、注释、缩进等,有利于编写整洁、易读的代码。
2.数据类型与变量:了解ABAP的数据类型及其对应的变量,如字符型、数值型、逻辑型等,以便在编程过程中正确处理数据。
3.流程控制与循环:掌握ABAP的流程控制语句,如IF、ELSE、LOOP 等,以便灵活地实现业务逻辑。
4.函数与模块:学会使用ABAP提供的内置函数和自定义函数,以及如何创建和调用模块化程序。
5.异常处理与调试:了解ABAP的异常处理机制,如ERROR、WARNING 等,以及调试技巧,如使用STACK、DEBUG等工具。
三、ABAP实用技巧1.高效SQL查询:掌握ABAP中的SQL语句,如SELECT、INSERT、UPDATE等,实现对数据库的高效操作。
2.数据传输与转换:学会使用ABAP进行数据传输,如使用BAPI、FM等接口,以及数据格式转换技巧。
ABAP学习总结
ABAP的学习总结开发学习人:高宜飞一、ABAP的开发基础1、事务代码SE38:ABAP编辑器创建ABAP的程序,A——X基本都已经被sap自带的程序所占用,我们的开发一般用Y或Z开头。
这里可以通过程序的名字,来进行对程序的查询,修改以及开发。
Title用于描写这个程序的名称,一般我们与程序名相同。
一般开发类都是由项目经理来制定的,没有开发类的话,一般在本地开发机来进行代码的编写。
如果保存在开发类里面的话,要创建请求号,请求号的标准为ABAP:程序名字+日期+开发人+具体描述SE93:查询创建事务代码Program and screen (dialog transaction):用于对话程序Program and selection screen (report transaction) : 用于报表SE11:创建查询数据表,一般开发中在110中进行技术设置——保存——激活Fields:设置字段设置数据元素,数据元素必须以Z开头,然后双击设置维护域,继续双击设置的维护域名SE10:查询,传输组织者SHDB批量创建程序后期开发很重要2、事件ABAP是一种事件语言,程序驱动语言。
INITIALIZATION 选择屏幕前对变量进行初始化赋值。
AT SELECTION-SCREEN 对选择屏幕的数据输入进行检查。
START-OF-SELETION 选择屏幕处理完后数据处理。
TOP-OF-PAGE 列表显示启动新页、页头的输出。
AT LINE-SELECTION 用户双击选中某行触发事件。
SET-PF-STATUS 设置自定义菜单。
AT USER-COMMAND 当用户功能键时,触发该事件。
3、消息E :错误消息W :发送警告消息I :发送信息消息A :发送异常终止消息S :发送成功消息4、系统常量SY-SUBRC:代表判断执行结果如果返回的数字是0以外的都是有问题判断执行的结果。
SY-UNAME:代表当前的登陆者。
2024年SAPABAP实用培训教程
SAPABAP实用培训教程引言SAP(系统应用与产品)是一家德国公司,提供企业资源规划(ERP)软件,以帮助企业管理和整合业务运营。
ABAP(高级业务应用程序编程)是SAP的编程语言,用于开发SAP应用程序。
本教程旨在为初学者和希望提高ABAP编程技能的开发人员提供实用的培训。
第一部分:ABAP基础1.1ABAP概览ABAP是一种高级编程语言,专门用于SAP应用程序的开发。
它具有结构化和面向对象的特点,支持模块化、可重用性和可维护性。
ABAP编程环境包括ABAP工作台,它是开发SAP应用程序的主要工具。
1.2数据定义在ABAP中,数据定义是通过数据字典实现的。
数据字典是用于定义和描述数据元素、结构和表格的地方。
数据元素是基本的数据单位,结构是由多个数据元素组成的复合数据类型,表格是用于存储大量数据的集合。
1.3ABAP程序结构ABAP程序由多个块组成,包括声明、执行和异常处理块。
声明块用于定义变量和常量,执行块用于编写程序的主要逻辑,异常处理块用于处理程序运行时可能出现的错误。
第二部分:ABAP编程实践2.1报表开发报表是ABAP编程中最常见的应用程序之一。
通过编写SELECT 语句,可以从SAP数据库中检索数据,并通过报表显示格式化输出。
报表开发涉及定义选择屏幕、处理用户输入、执行数据库查询和显示结果。
2.2输入输出处理输入输出处理是ABAP编程中的重要部分。
输入屏幕用于收集用户输入,输出屏幕用于显示程序的结果。
通过使用屏幕元素,如字段符号、表格控制和循环结构,可以创建用户友好的界面。
2.3数据处理数据处理是ABAP编程中的核心任务。
通过使用内部表、工作区和数据库表,可以对数据进行读取、写入和修改。
ABAP提供了丰富的数据处理语句,如MODIFY、APPEND和DELETE,以及用于数据转换和验证的内建函数。
第三部分:ABAP高级特性3.1面向对象编程ABAP支持面向对象编程(OOP)的概念。
abap 开发知识点
abap 开发知识点ABAP 开发知识点ABAP (Advanced Business Application Programming) 是SAP 公司开发的一种高级业务应用编程语言,主要用于 SAP 系统的开发和定制。
在ABAP 开发中,有一些重要的知识点需要掌握,下面将会分别介绍。
1. 数据类型在ABAP 中,有许多不同的数据类型,包括整型、浮点型、字符型、日期型等。
在声明变量时,需要指定变量的数据类型,以确保变量能够存储正确的数据。
例如,声明一个整型变量可以使用以下代码:DATA: lv_num TYPE i.其中,lv_num 是变量名称,TYPE i 表示变量的数据类型为整型。
2. 数据对象在ABAP 中,数据对象是指在程序中使用的数据元素,包括变量、常量、字段符号等。
可以通过DATA 关键字声明变量,在程序中使用。
在ABAP 中,还有一种特殊的数据对象叫做内部表。
内部表类似于数据库中的表格,可以存储多行数据。
在ABAP 中,可以通过以下方式定义一个内部表:DATA: lt_data TYPE TABLE OF ty_data.其中,lt_data 是内部表名称,ty_data 是内部表的行结构。
3. 函数和方法在ABAP 中,函数和方法都是用于执行特定任务的代码块。
函数是独立的代码块,可以在程序中任何地方调用;而方法是与对象相关联的代码块,必须通过对象调用。
在 ABAP 中,可以通过 FUNCTION 和 METHOD 关键字定义函数和方法,例如:FUNCTION z_test_function.* 函数代码ENDFUNCTION.METHOD z_test_method.* 方法代码ENDMETHOD.4. ABAP 程序结构在ABAP 中,程序结构包括了程序头、变量定义、主体代码和结束语句。
程序头包括了程序名称、类型和描述等信息;变量定义用于声明程序中使用的变量;主体代码包含了程序的主要逻辑;结束语句用于结束程序的执行。
ABAP总结
ABAP总结ABAP(Advanced Business Application Programming)是一种企业级应用程序开发语言,专门用于SAP系统。
它是SAP系统的核心开发语言,用于开发和定制各种业务应用和报表。
下面是对ABAP的详细总结。
1.ABAP的历史和发展ABAP最早是在20世纪80年代中期开发的,最初只是用于控制SAPR/2系统的数据传输和处理。
随着SAP系统的不断发展和演变,ABAP也不断演进,提供了更多的功能和特性,成为了SAP系统的核心开发语言。
2.ABAP的特点和优势ABAP的特点包括:-高度集成性:ABAP可以与SAP系统的各个组件进行无缝集成,实现复杂的业务逻辑。
-丰富的功能库:ABAP提供了大量的标准功能库,开发人员可以直接调用这些功能库,提高开发效率。
-强大的调试工具:ABAP提供了强大的调试工具,可以方便地调试和排查代码中的错误。
-支持面向对象编程:ABAP支持面向对象编程,开发人员可以使用面向对象的编程技术,提高代码的可维护性和复用性。
-大规模数据处理能力:ABAP可以处理大规模的数据,支持高并发和高性能的数据处理。
3.ABAP的基本语法和数据类型ABAP的基本语法类似于其他编程语言,包括变量声明、条件判断、循环和函数调用等。
ABAP支持各种数据类型,包括整数、浮点数、字符串、日期和时间等。
ABAP还提供了结构体和表格等复杂数据类型,方便处理复杂的数据结构。
4.ABAP的模块和函数ABAP程序通常被组织成模块,每个模块包含一个或多个子程序。
子程序是独立的代码块,可以被其他模块调用。
ABAP还提供了大量的标准函数,可以直接调用这些函数来实现常用的功能,如字符串处理、日期计算和数学运算等。
5.ABAP的数据库操作和数据访问ABAP可以直接访问数据库,执行SQL语句来读取和更新数据。
ABAP提供了丰富的数据库操作功能,包括查询语句(SELECT)、插入语句(INSERT)、更新语句(UPDATE)和删除语句(DELETE)等。
ABAP学习总结
ABAP学习总结1.ABAP语法ULINE. ----画一条横线SY-VLINE 画竖线SKIP. 跳一行系统变量如下:Internal table(内表)内表数据类型: Structure , 数据库表, 用户自定义数据类型.定义内表:Structure : DATA ITAB TYPE (STANDARD) TABLE OF YTEST_TAB.数据库表: DATA ITAB TYPE TABLE OF SFLIGHT.自定义数据类型: TYPES: BEGIN OF 1_TYPE,NAME(50) TYPE C,AGE TYPE I,END OF 1_TYPE.DATA ITAB TYPE TABLE OF 1_TYPE.表头行:在定义内表的时候,后面加上”WITH HEADER LINE”,则同时定义了该内表的同名工作区,该定义被称作表头行,例如:注: APPEND 与INSERT 区别: APPEND插入内表最后一行, INSERT 可以插入指定位置.数据字典:数据字段(TABLE FIELD), 域(DOMAIN), 数据元素(DATA ELEMENT).数据字段:数据表中的字段.域: 描述一个字段类型和长度等信息.数据元素: 描述一个字段的用途.数据字段→域→数据元素. ()收索帮助)SELECT :对数据结构: 当从数据库表中查询出的数据,放入数据结构中时,要有ENDSELECT, 例如: SELECT * FROM SPFLI UP TO 5 ROWS INTO A_SPFLI.WRITE : / A_SPFLI-CONNID,A_SPFLI-CARRID,A_SPFLI-CITYFROM, A_SPFLI-CITYTO.ENDSELECT.对内表 : 当从数据库表中查询出的数据, 放入内表中时,可有可无 ENDSELECT,例如:SELECT * FROM SPFLI UP TO 5 ROWS INTO TABLE TA_SPFLI.*从数据库表中读数据到内表中,直接从内表输出*如果TA_SPFLI没有定义HEADER LINE,这儿会报错的LOOP AT TA_SPFLI.WRITE : / TA_SPFLI-CONNID,TA_SPFLI-CARRID,TA_SPFLI-CITYFROM,TA_SPFLI-CITYTO.ENDLOOP.UP TO 5 ROWS : 读取前5行,不再继续往下读PACKAGE SIZE 5 : 以5行为一组,继续往下读.例如:*以每次读取5条记录,直到读取完所有数据SELECT * INTO TABLE WA_SPFLI FROM SPFLI PACKAGE SIZE 5.*输出内表内的数据LOOP AT WA_SPFLI.WRITE : / WA_SPFLI-CARRID,WA_SPFLI-CITYFROM,WA_SPFLI-CITYTO.ENDLOOP.*输出5条后输出一条线ULINE.ENDSELECT.(内链接)ULINE.WRITE / '内连接'.ULINE.*定义结构DATA : BEGIN OF ARCD,CARRID TYPE SPFLI-CARRID,CONNID TYPE SPFLI-CONNID,FLDATE TYPE SFLIGHT-FLDATE,END OF ARCD.*定义工作区DATA ARCD1 LIKE ARCD.*关联数据表,读取前10条记录,写入工作区,并输出SELECT SPFLI~CARRID SPFLI~CONNID SFLIGHT~FLDATE INTO ARCD1 FROM SPFLI INNER JOIN SFLIGHT ON SPFLI~CARRID = SFLIGHT~CARRID AND SPFLI~CONNID = SFLIGHT~CONNID UP TO 20 ROWS.WRITE : / ARCD1-CARRID,ARCD1-CONNID,ARCD1-FLDATE.ENDSELECT.列表颜色设置:例如:*----------标准列表输出SKIP.ULINE.FORMAT COLOR COL_GROUP.WRITE / '前景和背景颜色设置'.FORMAT COLOR OFF.*数据库表SPFLI相关TABLES SPFLI.SKIP.*输出表头,背景灰绿FORMAT COLOR COL_HEADING.ULINE AT /(91).WRITE : / SY-VLINE,(15) '航线承办人',SY-VLINE,(15) '航班连接',SY-VLINE, (15) '国家代码',SY-VLINE,(15) '起飞城市',SY-VLINE,(15) '起飞机场',SY-VLINE.ULINE AT /(91).FORMAT COLOR OFF.*SY-VLINE是画竖线,ULINE是画横线*输出内容,关键字为'DL'红色SELECT * FROM SPFLI UP TO 10 ROWS.IF SPFLI-CARRID = 'DL'.FORMAT COLOR COL_NEGATIVE INVERSE OFF."背景色,红色ELSEIF SPFLI-CARRID = 'AZ'.FORMAT COLOR COL_NEGATIVE INVERSE ON."前景色,红色ELSE.FORMAT COLOR OFF INVERSE OFF.ENDIF.WRITE : / SY-VLINE,(15) SPFLI-CARRID,SY-VLINE,(15) SPFLI-CONNID,SY-VLINE,(15) SPFLI-COUNTRYTO,SY-VLINE,(15)SPFLI-CITYFROM,SY-VLINE,(15)SPFLI-AIRPFROM,SY-VLINE.ULINE AT /(91).ENDSELECT.从服务器上下载指定人的源码: se38 - >Z_DOWNLOAD_DOC -> 执行- > 输入要下载人的用户名和保存路径- > 执行即可将指定人的所有源码下载下来SAP: System , Applications and Products in Data Processing . 即数据处理的系统应用和产品.ERP巨人: --- SAP公司创立于1972 年, 其总部设在德国南部的小城walldorf.ERP(Enterprise Resource Planning , 企业资源计划) 是建立在现代企业的先进管理思想基础之上, 利用信息技术为企业提供决策, 计划, 控制和业务评估的全方位的系统的解决平台.企业流: 物流, 资金流, 信息流.SAP基本结构: 数据库, 应用层和显示层.R/3 ( R 意为实时处理, Realtime).SAP模块:生产计划控制(PP) , 物料管理(MM) , 销售与分销(SD) , 财务会计(FI), 管理会计(CO), 人力资源(HR), 设备管理(PM), 项目管理(PS), 固定资产管理(AM), 资料管理(BW) , 售后服务管理(SM), 工作流管理(WF), 质量管理(QM), 基本系统组件(BC). . .SAP系统开发人员主要接触对象:Basis系统和开发平台及ABAP系统设计语言.ABAP(Advanced Business Application Programming).处理块(Processing Blocks) 是ABAP程序的主要结构单元, 定义了程序在不同状态下执行的具体功能, 在程序编译运行过程中, 每一个块都是一个独立的实体.数据(包括选择屏幕元素)定义和声明语句是独立于任何处理块的, 其他所有语句则都必须隶属于某个处理块.程序类型数据元素: 是构成结构和表等复杂类型的基本组件. 域: 则定义数据元素的技术属性, 具有包括数据字典中的基本内置数据类型,长度和小数位.所有数据元素都必须属于一个域.内表排序使用SORT语句.确定数据对象属性:DATA: text(8) TYPE c VALUE ‘abcdefgh’ , len TYPE i.DESCRIBE FIELD text LENGTH len.WRITE: text , ‘has length’ , len .其输出为: abcdefgh has length 8.MOVE 字段TO 字段=> 赋值.MOVE source TO destination. destination = source.可以使用MOVE-CORRESPONDING 语句在两个结构体中所有同名组件赋值, 而目标结构体中其他字段的值不变.MOVE-CORRESPONDING add_company TO company .字段符号:系统不直接为字段符号本身保留内存空间, 而是将其指向一个数据对象.声明字段符号: FIELD-SYMBOLS <fs> TYPE D.分配数据对象: 静态分配: ASSIGN f TO <fs> .动态分配: ASSIGN (f) TO <fs> .动态分配不是将字段f分配给字段符号<fs> , 而是先找到字段f 的内容, 再将该内容作为一个新的数据对象名称分配给<fs> . 例:FIELD-SYMBOLS: <fs> .DATA: str(20) TYPE c VALUE ‘Output String’ .Name(20) TYPE c VALUE ‘str’ .*Static assignmentASSIGN name TO<fs> .WRITE: / <fs>.*Dynamic assignmentASSIGH (name) TO <fs> .WRITE: / <fs>.输出结果为:StrOutput StringREAD语句只能应用于内表数据对象.静态数据对象: STATICS , 与DATA , TYPES 格式一样.宏的定义: DEFINE name .<statement>.END-OF-DEFINITION.SE24 -> 定义全局类SE37 -> 定义FUNCTION .访问类成员: oref -> attr . 属性或方法.Oref => attr . 静态属性或方法.继承: CLASS c1 DEFINITION INHERITING FROM ……………………ENDCLASS. <类的定义>CLASS c1 IMPLEMENTATION.………ENDCLASS. <类的实现>抽象类: CLASS c1 DEFINITION ABSTRACT.……….ENDCLASS.最终类; CLASS c1 DEFINITION FINAL .……….ENDCLASS.接口: INTERFACE intf .DATA …..CLASS-DATA……(静态属性).METHOD……ENDINTERFACE.实现接口:CLASS class DEFINITION . <类定义>PUBLIC SECTION.…….INTERFACES: intf1, intf2……ENDCLASS.CLASS class IMPLEMENTATION.……METHOD intf1~imeth1. (实现接口方法)…….ENDMETHOD.…….ENDCLASS.DATA object TYPE REF TO class.创建对象:CREATE OBJECT object .通过内表将多条数据插入数据库表:INSERT dbtab FROM TABLE itab ACCEPTING DUPLICATE KEYS.其中accepting duplicate keys 选项的效果是: 如果出现关键字相同条目, 系统将SY-SUBRC返回4 , 并跳过该条目, 并更新所有其他条目.UPDATE:单行: UPDATE dbtab FROM wa . (工作区).多行: UPDATE target FROM TABLE itab . (内表).MODIFY: 相当于INSERT 和UPDATE 语句结合.添加或更新单行: MODIFY dbtab FROM wa.添加或更新多行: MODIFY dbtab FROM TABLE itab.DELETE:单行: DELETE dbtab FROM wa.多行: DELETE dbtab FROM TABLE itab.SY-DBCNT 返回实际已删除的行数.一般性的报表时间触发过程如下:1.LOAD-OF-PROGRAM.2.INITIALIZATION.3.AT SELECTION-SCREEN OUTPUT. AT SELECTION-SCREEN. 4.START-OF-SELECTION5.GET 和GET LATE6.END-OF-SELECTION7.TOP-OF-PAGE END-OF-PAGE8.AT LINE-SELECTION AT-USER-COMMANDRFC: (Remote Function Call , 远程功能调用).RFM: 可以提供给其他系统进行远程调用的程序模块是支持RFC 的功能模块, 即RFM(Remote-Enabled Function Module). 支持远程调用的功能模块.RFC模式:1.同步RFC2.异步RFC3.事务性RFC4.队列RFC5.并行RFC模块条件调用:单字段: FIELD field MODULE mod ON INPUT/REQUEST. INPUT: 当field中包含非初始值时, 才调用ABAP模块mod; 如果用户将字段值由其他改回初始值, 也不能触发mod. REQUEST: 只有用户在该字段中输入值时(包括空值和原值) , 才调用ABAP模块mod.组合字段:CHAIN.FIELD: f1 , f2 , …MODULE mod1 ON CHAIN-INPUT/CHAIN-REQUEST.FIELD: g1 , g2 , ……MODULE mod2 ON CHAIN-INPUT/CHAIN-REQUEST.……ENDCHAIN.当fi 之一满足条件时, mod1被调用, 当fi或gi满足条件时, mod2被调用.锁:问题一:锁对象(Lock Object)和 FM(Function Module),激活Lock Object时,产生的 FM 的名字是什么?答案:首先要在 ABAP 字典中创建锁对象,然后才能在 ABAP 程序中设锁。
ABAP基础知识(完整版)-自学
ABAP基础知识(完整版)-上SAP ABAP / 4 基础知识学习数据类型C :字符串D :日期型格式为YYYYMMDD 例:'1999/12/03'F : 浮点数长度为8I :整数N :数值组成的字符串如:011,'302'P : PACKED数用于小数点数值如:12.00542T : 时间格式为:HHMMSS 如:'14:03:00'X : 16进制数如:'1A03'*-------------------------------------------------------------------------------------*变量声明DATA <F> [<Length>] <type> [<value>][decimals]<F> 变量名称<length><type> 变量类型及长度<value> 初值<decimals> 小数位数exp:DATA : COUNTER TYPE P DECIMALS 3.NAME(10) TYPE C VALUE 'DELTA'.S_DATE TYPE D VALUE '19991203'.exp:DATA : BEGIN OF PERSON,NAME(10) TYPE C,AGE TYPE I,WEIGHT TYPE DECIMALS 2,END OF PERSON.另外,有关DATA声明的指令还有: CONSTANTS(声明常数)、STATICS(临时变量声明).exp:CONSTANTS PI TYPE P DECIMALS 5 VALUE '3.14159'.STATICS 关键字声明的变量仅在目前的程序中使用, 结束后会自动释放语法:STATICS <c> [<length>] <type> [<value>] [<decimals>]系统专用变量说明系统内部专门创建了SYST这个STRUCTURE,里面的栏位存放系统变量,常用的系统变量有: SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,'0'表示成功SY-UNAME: 当前使用者登入SAP的USERNAME;SY-DATUM: 当前系统日期;SY-UZEIT: 当前系统时间;SY-TCODE: 当前执行程序的Transaction codeSY-INDEX: 当前LOOP循环过的次数SY-TABIX: 当前处理的是internal table 的第几笔SY-TMAXL: Internal table的总笔数SY-SROWS: 屏幕总行数;SY-SCOLS: 屏幕总列数;SY-MANDT: CLIENT NUMBERSY-VLINE: 画竖线SY-ULINE: 画横线TYPE 关键字用来指定资料型态或声明自定资料型态Example:TYPES: BEGIN OF MYLIST,NAME(10) TYPE C,NUMBER TYPE I,END OF MYLIST.DATA LIST TYPE MYLIST.LIKE 关键字跟TYPE关键字使用格式相同, 如DATA TRANSCODE LIKE SY-TCODE.不同的是LIKE 用在已有值的资料项, 如系统变量, 而TYPE关键字则是用在指定资料型态。
ABAP_培训教程
ABAP_培训教程ABAP 培训教程ABAP(Advanced Business Application Programming),即高级业务应用程序编程,是一种用于在 SAP 系统中进行开发的编程语言。
如果你对 ABAP 编程感兴趣,或者想要在 SAP 领域深入发展,那么参加ABAP 培训是一个不错的选择。
接下来,就让我们一起走进 ABAP 培训的世界。
一、ABAP 基础在 ABAP 培训的初始阶段,您将接触到 ABAP 的基础知识。
这包括对 ABAP 语言的语法、数据类型、变量和常量的理解。
语法是编程的规则,就像我们日常交流中的语言规则一样。
ABAP 有其特定的语法结构,例如语句的书写方式、关键字的使用等。
数据类型则决定了数据的存储方式和可以进行的操作。
比如整数型、字符型、浮点型等。
变量就像是一个容器,用来存放不同类型的数据,而常量则是固定不变的值。
掌握这些基础知识是后续学习的基石,只有在这个基础上,才能搭建起更复杂的程序结构。
二、数据处理数据处理是 ABAP 编程中的重要环节。
培训中会涵盖数据的读取、写入、修改和筛选等操作。
读取数据通常是从数据库表中获取所需信息。
这需要了解如何使用SQL 语句在 ABAP 中与数据库进行交互。
写入和修改数据则要确保数据的准确性和完整性。
数据筛选则是根据特定的条件从大量数据中提取出有用的部分。
这需要掌握条件判断语句,如 IF 语句、CASE 语句等,以便根据不同的情况对数据进行处理。
三、程序结构在 ABAP 培训中,您还将学习不同的程序结构,如顺序结构、循环结构和分支结构。
顺序结构是最简单的,按照代码的书写顺序依次执行。
循环结构则用于重复执行一段代码,比如 FOR 循环、WHILE 循环等。
分支结构可以根据不同的条件选择执行不同的代码块,让程序更加灵活和智能。
合理运用这些程序结构,可以使程序的逻辑更加清晰,提高程序的效率和可读性。
四、函数和子程序函数和子程序是 ABAP 中实现代码复用的重要手段。
ABAP,学习计划
ABAP,学习计划篇一:abap学习资料一、abap进入方式:(500 abap01 123456)(200 abap01 initinit)1、输入事务码“se38”点击回车,输出屏幕如下:输入程序名称“zmm0001”,点击创建,输出屏幕:点击保存,输出屏幕如下:点击保存,输出屏幕如下:点击保存屏幕如下:点击保存按钮,输出屏幕如下:点击“√”输出屏幕如下:篇二:abap学习精华. abap/4 data element一. data type (数据类型)c: 字符(串), 长度为1, 最大有65535 bytes, 初始值为: space,例: ?m?; d: 日期, 格式为yyyymmdd, 最大是?9999/12/31? ,例:?1999/12/03?. f: 浮点数,长度为8, 例如: 4.285714285714286e-01i: 整数范围 :-2^31 ~ 2^31-1n: 数值组成的字符串: 011, ?302?.p: packed 数,用于小数点数值,例如: 12.00542;t: 时间, 格式为hhmmss,例如: ?14:03:00?, ?21:30:39?.x: 16进制数, 例如 ?1a03?.二. 变量宣告变量宣告包含name, length, type, structure等,语法如下:data <f> [<length>] <type> [<value>] [<decimals>] 其中: <f> :变量名称,最长30个字符,不可含有 + , . , : ( ) 等字符;<length><type>:变量类型及长度;<value>:初值<decimals>:小数字数example 1:data: counter type p decimals 3.name (10) type c value ?delta?.s_datetype d value ?19991203?.example 2:data: begin of person,agetype i,weight type p decimals 2,end of person.另外,有关data宣告的指令还有: constants(宣告常数)、statics(临时变量宣告).三. 系统专用变量说明系统内部专门创建了syst这个structure,里面的字段存放系统变量,常用的系统变量有:sy-subrc : 系统执行某指令后,表示执行成功与否的变量,?0? 表示成功 sy-uname: 当前使用者登入sap的username;sy-datum: 当前系统日期;sy-uzeit: 当前系统时间;sy-tcode:当前执行程序的transaction codesy-index :当前loop循环过的次数sy-tabix: 当前处理的是internal table 的第几笔sy-tmaxl: internal table的总笔数sy-srows: 屏幕总行数;sy-scols: 屏幕总列数;sy-mandt: client numbersy-vline: 画竖线sy-uline: 画横线附注:1. sap的全称是: system application products in data processing;2. abap/4的全称是:advanced business applicationprogramming;3. abap/4的路径为:tools ? abap/4 workbench?abpa/4 editor ;4. abap/4每条语句以句号结束;5. abap/4中象= ,>, <,+,-,*,/等符号左右都需要有至少一个空格;6. 整行注释用?*?号, 注释本行后面部分用?”?号;outputting data to screen一. write 语句abap/4用来在屏幕上输出数据的指令是write指令,例如:write: ?user name is:?, sy-uname.二. 指定屏幕输出位置指定输出位置的语句格式为:write: [at] [ / ] [<pos>] [(<len>)] 资料项 [<par>]其中: / : 在下一行输出<pos>: 指定输出的行号;(<len>):指定输出位数(长度)<par>: 指定显示格式参数,参数有:left-justified 资料靠左对齐centered 资料靠中间对齐right-justified 资料靠右对齐under <g> 正对在资料项<g>的下面显示no-gap 紧接着显示,不留空格using edit mask <m>: 使用内嵌子元显示, 如 12:03:20 using no edit mask: 不使用内嵌子元no-zero: 数字前面 0 的部分不显示no-sign:不显示正负号decimals <d>: 显示 <d> 位小数expoent <e>: f(浮点数)指数的值round <r>:四舍五入至小数点后<r>位currency <c>: 币别显示dd/mm/yy :日期显示格式mm/dd/yy:yy/mm/dd:yy/dd/mmmm/dd/yyyy:dd/mm/yyyyyyyy/mm/dd:yyyy/dd/mm:例如1: write: /10(6) ?abcdefghijk?.输出结果为: abcdef例如2: data: x type i value ?11:20:30?,a(5) type c value ?ab cde?.write: / x using edit mask ?__:__:__?.write: / x using edit mask ?$___,___?.write: / y no-gap.输出结果为:11:20:30$112,030abcdef四. 显示图标:语法: write: <symbol-name> as symbol.write: <icon-name> as icon.例如: include <symbol>.include <icon>.write: / ?phone symbol:?, sym_phone as symbol.write: / ?alarm icon:?, icon_voice_output as icon.要查看系统所提供有那些符号及图标,可选择?edit?下的?insert statement?,选择?write?,接下来选择要查看的群组,如symbol 或icon, 接下来按?display?即可.internal table一. internal table 的宣告abap/4中的internal table是一种data structure,类似于其它语言中的struture,它可以由几个不同类型的字段(field)组成,用来表示具有不同属性的某一事物,单独一笔数据表示某个事物,多笔数据表示具有相同属性的多个事物.例如:为了存取或记录某班的同学资料,我们创建如下的internal table: data: begin of student occurs 20,std_idtype n,name(10) type c,agetype i,birth type d,score type p decimals 2,end of student.此时我们已经创建了名叫student的internal table,并且为它预先申请了能够存放20笔资料的buffer(当然,如果存取资料不止20笔,程序执行时,会自动申请系统buffer)internal table 的定义有以下几种格式:格式一.data: begin of <internal table> occurs <n>,<field 1> type <type1>,[<field 2> type <type 2>,<field 3> type <type 3>,…]end of <internal table>.格式二.types: begin of <work area>,<field 1> type <type1>,[<field 2> type <type 2>,<field 3> type <type 3>,…]end of <work area>.types <internal table> type <work area> occurs <n>. 格式三. data: begin of <work area>.include structure <table name>. data: end of <work area>.data: <internal table> like <work area> occurs <n>.二. append line格式: append [<work area> to ] <internal table>.举例一. (使用work area)篇三:学习计划学习计划2014/3/6第一周:1、2、了解sap的工作性质和全称。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§. ABAP/4 DATA ELEMENT一.Data Type (数据类型)C: 字符(串), 长度为1, 最大有65535 BYTES, 初始值为: space,例: …M‟;D: 日期, 格式为YYYYMMDD, 最大是‟9999/12/31‟ ,例:‟1999/12/03‟.F: 浮点数, 长度为8, 例如: 4.285714285714286E-01I: 整数范围:-2^31 ~ 2^31-1N: 数值组成的字符串: 011, …302‟.P: packed 数,用于小数点数值,例如: 12.00542;T: 时间, 格式为HHMMSS,例如: ‟14:03:00‟, ‟21:30:39‟.X: 16进制数, 例如…1A03‟.二.变量宣告变量宣告包含name, length, type, structure等,语法如下:DATA <F> [<length>] <type> [<value>] [<decimals>]其中: <f> :变量名称,最长30个字符,不可含有+ , . , : ( ) 等字符;<length><type>:变量类型及长度;<value>:初值<decimals>:小数字数Example 1:DATA: COUNTER TYPE P DECIMALS 3.NAME (10) TYPE C V ALUE …Delta‟.S_DATE TYPE D V ALUE …19991203‟.Example 2:DATA: BEGIN OF PERSON,NAME(10) TYPE C,AGE TYPE I,WEIGHT TYPE P DECIMALS 2,END OF PERSON.另外,有关DATA宣告的指令还有: CONSTANTS(宣告常数)、STATICS(临时变量宣告).三.系统专用变量说明系统内部专门创建了SYST这个STRUCTURE,里面的字段存放系统变量,常用的系统变量有:SY-SUBRC : 系统执行某指令后,表示执行成功与否的变量,‟0‟ 表示成功SY-UNAME: 当前使用者登入SAP的USERNAME;SY-DATUM: 当前系统日期;SY-UZEIT: 当前系统时间;SY-TCODE: 当前执行程序的Transaction code第1页(共44页)SY-INDEX : 当前LOOP循环过的次数SY-TABIX: 当前处理的是internal table 的第几笔SY-TMAXL: Internal table的总笔数SY-SROWS: 屏幕总行数;SY-SCOLS: 屏幕总列数;SY-MANDT: CLIENT NUMBERSY-VLINE: 画竖线SY-ULINE: 画横线附注:1.SAP的全称是: System Application Products in Data Processing;2.ABAP/4的全称是:Advanced Business Application Programming;3.ABAP/4的路径为:Tools → ABAP/4 WorkBench→ABPA/4 Editor ;4.ABAP/4每条语句以句号结束;5.ABAP/4中象= ,>, <,+,-,*,/等符号左右都需要有至少一个空格;6.整行注释用‟*‟号, 注释本行后面部分用‟”‟号;第2页(共44页)§OUTPUTTING DATA TO SCREEN一. WRITE 语句ABAP/4用来在屏幕上输出数据的指令是WRITE指令,例如:WRITE: …USER NAME IS:‟, SY-UNAME.二. 指定屏幕输出位置指定输出位置的语句格式为:WRITE: [AT] [ / ] [<pos>] [(<len>)] 资料项[<par>]其中: / : 在下一行输出<pos>: 指定输出的行号;(<len>):指定输出位数(长度)<par>: 指定显示格式参数,参数有:LEFT-JUSTIFIED 资料靠左对齐CENTERED 资料靠中间对齐RIGHT-JUSTIFIED 资料靠右对齐UNDER <g> 正对在资料项<g>的下面显示NO-GAP 紧接着显示,不留空格USING EDIT MASK <m>: 使用内嵌子元显示, 如12:03:20USING NO EDIT MASK: 不使用内嵌子元NO-ZERO: 数字前面0 的部分不显示NO-SIGN: 不显示正负号DECIMALS <d>: 显示<d> 位小数EXPOENT <e>: F(浮点数)指数的值ROUND <r>: 四舍五入至小数点后<r>位CURRENCY <c>: 币别显示DD/MM/YY : 日期显示格式MM/DD/YY:YY/MM/DD:YY/DD/MMMM/DD/YYYY:DD/MM/YYYYYYYY/MM/DD:YYYY/DD/MM:例如1: WRITE: /10(6) …ABCDEFGHIJK‟.输出结果为: ABCDEF例如2: DATA: X TYPE I V ALUE ‟11:20:30‟,第3页(共44页)A(5) TYPE C V ALUE …AB CDE‟.WRITE: / X USING EDIT MASK …__:__:__‟.WRITE: / X USING EDIT MASK …$___,___‟.WRITE: / Y NO-GAP.输出结果为:11:20:30$112,030ABCDEF四.显示图标:语法: WRITE: <symbol-name> AS SYMBOL.WRITE: <icon-name> AS ICON.例如: INCLUDE <SYMBOL>.INCLUDE <ICON>.WRITE: / …Phone symbol:‟, SYM_PHONE AS SYMBOL.WRITE: / …Alarm Icon:‟, ICON_VOICE_OUTPUT AS ICON.要查看系统所提供有那些符号及图标,可选择‟EDIT‟下的‟Insert Statement‟,选择‟Write‟,接下来选择要查看的群组,如SYMBOL 或ICON, 接下来按‟Display‟即可.第4页(共44页)§INTERNAL TABLE一.Internal Table 的宣告ABAP/4中的Internal Table是一种Data Structure,类似于其它语言中的STRUTURE,它可以由几个不同类型的字段(field)组成,用来表示具有不同属性的某一事物,单独一笔数据表示某个事物,多笔数据表示具有相同属性的多个事物.例如:为了存取或记录某班的同学资料,我们创建如下的internal table:DATA: BEGIN OF STUDENT OCCURS 20,STD_ID TYPE N,NAME(10) TYPE C,AGE TYPE I,BIRTH TYPE D,SCORE TYPE P DECIMALS 2,END OF STUDENT.此时我们已经创建了名叫STUDENT的internal table,并且为它预先申请了能够存放20笔资料的Buffer(当然,如果存取资料不止20笔,程序执行时,会自动申请系统Buffer)Internal table 的定义有以下几种格式:格式一. DATA: BEGIN OF <internal table> OCCURS <n>,<field 1> TYPE <type1>,[<field 2> TYPE <type 2>,<field 3> TYPE <type 3>,… ]END OF <internal table>.格式二. TYPES: BEGIN OF <work area>,<field 1> TYPE <type1>,[<field 2> TYPE <type 2>,<field 3> TYPE <type 3>,… ]END OF <work area>.TYPES <internal table> TYPE <work area> OCCURS <n>.格式三. DATA: BEGIN OF <work area>.INCLUDE STRUCTURE <table name>.第5页(共44页)DATA: END OF <work area>.DATA: <internal table> LIKE <work area> OCCURS <n>.二.APPEND LINE格式: APPEND [<work area> TO ] <internal table>.举例一. (使用work area)DATA: BEGIN OF LINE,COL1 TYPE I,COL2 TYPE I,END OF LINE.DATA ITAB LIKE LINE OCCURS 10.DO 2 TIMES.LINE-COL1 = SY-INDEX.LINE-COL2 = SY-INDEX ** 2.APPEND LINE TO ITAB.ENDDO.LOOP AT ITAB INTO LINE.WRITE: / LINE-COL1, LINE-COL2.ENDLOOP.执行结果为:1 12 4举例二. (不使用work area)DATA: BEGIN OF ITAB OCCURS 10,COL1 TYPE I,COL2 TYPE I,END OF ITAB.DO 2 TIMES.ITAB-COL1 = SY-INDEX.ITAB-COL2 = SY-INDEX ** 2.APPEND ITAB.ENDDO.LOOP AT ITAB.WRITE: / ITAB-COL1, ITAB-COL2.ENDLOOP.执行结果与举例一相同.举例三. (加入另一个Internal table的元素)格式: APPEND LINES OF <itab1> [FROM <n1> ] [TO <n2>] TO <itab2>.第6页(共44页)将<itab1>的元素加入至<itab2>中,可选取自<n1>至<n2>的范围.APPEND LINES OF ITAB TO JTAB.三.COLLECT LINECOLLECT 指令也是将元素加入Internal table中,与APPEND 的区别是: COLLECT指令在非数值字段相同的情况下,将数值字段汇总.格式: COLLECT [<work area> INTO ] <itab>DATA: BEGIN OF ITAB OCCURS 3,COL1(3) TYPE C,COL2 TYPE I,END OF ITAB.ITAB-COL1 = …ABC‟. ITAB-COL2 = 10.COLLECT ITAB.ITAB-COL1 = …XYZ‟. ITAB-COL2 = 20.COLLECT ITAB.ITAB-COL1 = …ABC‟. ITAB-COL2 = 80.COLLECT ITAB.此时, internal table中放的是2笔数据, 分别为:ITAB-COL1 ITAB-COL2…ABC‟ 90…XYZ‟ 20四.INSERT LINE将元素插入在指定的internal table位置之前.格式: INSERT [<wa> INTO] [INITIAL LINE INTO ] <itab> [INDEX <idx>] 或者: INSERT LINES OF <itab1> [FROM <n1> TO <n2>] INTO <itab2> INDEX <idx>其中: <wa>即work area,工作区中的元素.[INITIAL LINE INTO] :插入一笔初始化的记录.<itab>: internal table[INDEX <idx>]: internal table 的记录号.(新加入的元素放在此记录前面) 五.读取internal table格式一:LOOP AT <itab> [INTO <wa>][FROM <n1> TO <n2>][WHERE <conditions>] <statement>ENDLOOP.格式二:READ TABLE <itab> [INTO <wa>] [INDEX <idx> / WITH KEY <conditions>]举例. (格式二)DATA: BEGIN OF ITAB OCCURS 10,第7页(共44页)COL1 TYPE I,COL2 TYPE I,END OF ITAB.DO 10 TIMES.ITAB-COL1 = SY-INDEX.ITAB-COL2 = SY-INDEX * 2.APPEND ITAB.ENDDO.READ TABLE ITAB INDEX 3.(或者: READ TABLE ITAB WITH KEY COL1 = 3.)WRITE: / …ITAB-COL1 = …, ITAB-COL1, …ITAB-COL2 = …, ITAB-COL2.执行结果同样是:ITAB-COL1 = 3ITAB-COL2 = 6.六.修改internal table 中的值格式: MODIFY <itab> [FROM <wa>][INDEX <idx>][TRANSPORTING <f1><f2>…][WHERE <conditions>]举例一. READ TABLE ITAB INDEX 3.LINE-COL1 = 29.MODIFY ITAB FROM LINE TRANSPORTING COL1.将第三笔记录的COL1字段的值修改为29.举例二. T_SALARY – salary = 50.MODIFY T_SALARY TRANSPORTING salary WHERE birthday = …1999/12/06‟.七.DELETE internal table中的字段格式: DELETE <itab> INDEX <idx>.或: DELETE <itab>[FROM <n1> TO <n2>] [WHERE <conditions>]八.Internal table 排序SORT <itab> [<order way>][BY <f1><f2>…]其中:<order way> 有DESCENDING 和ASCENDING, Default 为ASCENDING.<f1>: 为指定排序的字段.九.加总SUM.总和计算存放与work area中,但只能在LOOP 中使用.例: LOOP A T ITAB INTO LINE.SUM.ENDLOOP.WRITE: / LINE-COL1, LINE-COL2.第8页(共44页)第9页(共44页) 十. 初始化internal tableREFRESH <itab>. 清空<itab>中的值.CLEAR <itab>. 清空<itab>的Header Line.FREE <itab>. 释放记忆体空间.§屏幕输入命令在ABAP/4中要从屏幕输入变量, 使用的命令是 PARAMETERS 及SELECTION-OPTIONS:1. PARAMETER: 输入一个变量2. SELECTION-OPTIONS: 使用条件筛选画面来输入数据一. PARAMETERS 指令基本的输入命令, 类似如BASIC 的INPUT 命令, 但无法使用F 格式(浮点数)语法:PARAMETERS <p> [DEFAULT <f>] [LOWER CASE][OBLIGATORY] [AS CHECKBOX][RADIOBUTTON GROUP <rad>]Example:PARAMETERS: NAME(8),AGE TYPE I,BIRTH TYPE D.执行结果:在日期的输入格式上为 MM/DD/YY , MM/DD/YYYY , MMDDYY 或MMDDYYYY , 如输入 020165表 1965年02月01日, 与02/01/65的输入是一样的, 日期输入范围为公元1950年至2049年1. DEFAULT设定输入的默认值Example:PARAMETERS: COMPANY(20) DEFAULT …DELTA‟,BIRTH TYPE D DEFAULT …19650201‟.2.LOWER CASEABAP/4预设是将字符串输入值自动转换为大写, 加上此参数会将输入的资料转成小写,3. OBLIGATORY强制要求输入, 屏幕上会出现一个? , 使用者必须要输入才可.4. AS CHECKBOX输入CHECKBOX的格式Example:PARAMETERS: TAX AS CHECKBOX DEFAULT …X‟,NTD AS CHECKBOX.执行结果:5. RADIOBUTTON GROUP <rad>输入RADIO BUTTON GROUP 的方式Example:PARAMETERS: BOY RADIOBUTTON GROUP SEX DEFAULT …X‟,GIRL RADIOBUTTON GROUP SEX.执行结果:二. SELECTION-OPTIONSSELECTION-OPTIONS所输入的值实际上是放在internal table中的,该Internal table 有四个字段,分别是:SIGN,OPTION,LOW,HIGH.. 条件筛选检查条件输入画面指令, 输入条件后可配合SELECT指令自TABLE读取符合条件的资料, 直接执行或放入Internal Table中, 条件有四个参数:1. SIGN:I: 表筛选条件符合的资料E: 表筛选条件不符合的资料2. OPTION: 比较的条件符号EQ(等于),NE(不等于),GT(大于),LE(小于),CP(包含),NP(不包含)3. LOW: 最小值4. HIGH: 最大值语法:SELECTION-OPTIONS <check-option> FOR <table-field> Example:第10页(共44页)第11页(共44页) TABLES SPFLI.SELECTION-OPTIONS AIRLINE FOR SPFLI-CONNID.将条件的输入值存放入 AIRLINE, 筛选选择为SPFLI 中的CONNID 字段执行结果:可直接输入起始范围或按下选择画面, 输入完后按下左上角的执行键三. 条件输入选择画面1. 自Table 中选取按下输入项的右边往下箭头, 叫出Table 中资料项, 选取开始和结束的范围2. Selection Options按下”Selection options”按键, , 输入Option 及 Sign 参数内容, 屏幕如下:3.Multi-Options 输入按下最右边的Multi-Options 输入键, 输入条件选取的范围, 画面如下:条件输入完后按下”Copy”按键四. 改变条件输入格式1.DEFAULT <begin> TO <end>设定开始结束范围输入默认值Example:SELECTION-OPTION AIRLINE FOR SPFLI-CONNIDDEFAULT …2042‟ TO …4555‟.2.NO-EXTENSION设定不要Multi-Option输入画面3.NO INTERV ALS设定不要区间范围输入画面4.LOWER CASE输入转换成大写5.OBLIGATORY强制要求输入五. 配合SELECT 命令条件输入完后要将符合条件的资料筛选出来, 可配合使用SELECT 指令1.使用WHERE <条件式>Example:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT * FROM SPFLI WHERE CONNID IN AIRLINE.WRITE: / CONNID,FROMCITY,TOCITY.ENDSELECT.2.使用CHECK参数Example:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT * FROM SPFLI.CHECK AIRLINE.WRITE: / CONNID,FROMCITY,TOCITY.ENDSELECT.3.使用IF … IN 叙述Example:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT * FROM SPFLI.第12页(共44页)IF SPFLI-CONNID IN AIRLINE.WRITE: / CONNID,FROMCITY,TOCITY.ENDIFENDSELECT.六. SELECTION-SCREEN1.产生空白列语法:SELECTION-SCREEN SKIP [<n>]Example:SELECTION-SCREEN SKIP 2.产生两列空白列2.产生底线语法:SELECTION-SCREEN ULINE / <pos>(length)Example:SELECTION-SCREEN ULINE /10(30).自第10格开始产生长度30的底线3.印出备注说明语法:SELECTION-SCREEN COMMENT / <pos>(length) <name>Example:REMARK = …Pls enter your name‟.SELECTION-SCREEN COMMENT /10(30) REMARK.4. 同一列中输入数个资料项语法:SELECTION-SCREEN BEGIN OF LINE.……SELECTION-SCREEN END OF LINE.Example:SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN POSITION 20.PARAMETERS NAME(10).SELECTION-SCREEN POSITION 40.PARAMETERS BIRTH TYPE D.SELECTION-SCREEN END OF LINE.第13页(共44页)在20格输入NAME内容, 40格输入BIRTH的内容5. 绘出BLOCK PANEL语法:SELECTION-SCREEN BEGIN OF BLOCK <block>[WITH FRAME [TITLE <title>].…….SELECTION-SCREEN END OF BLOCK <block>.Example:SELECTION-SCREEN BEGIN OF BLOCK RADIOWITH FRAME .PARAMETER R1 RADIOBUTTON GROUP GR1.PARAMETER R2 RADIOBUTTON GROUP GR1.PARAMETER R3 RADIOBUTTON GROUP GR1.SELECTION-SCREEN END OF BLOCK RADIO.第14页(共44页)§SQL语法我们在编写ABAP4程序的时候,经常需要从TABLE中根据某些条件读取数据,.读取数据最常用的方法就是通过SQL语法实现的.ABAP/4中可以利用SQL语法创建或读取TABLE,SQL语法分为DDL(DATA DEFINE LANGUAGE)语言和DML(DATA MULTIPULATION LANGUAGE)语言,DDL语言是指数据定义语言,例如CREATE等, DML语言是数据操作语言,例如SELECT, INSERT等语句. SQL语句有OPEN SQL语句和NATIVE SQL语句. OPEN SQL语句不是标准SQL语句,是ABAP/4语言,利用OPEN SQL语句能在Databases 和Command 之间产生一个BUFFER,所以它有一个语言转换的过程. 而NATIVE SQL语句则是标准的SQL语句, 它直接针对Databases操作.一.OPEN SQLOPEN SQL 语句包含有: SELECT,INSERT,UPDATE,MODIFY,DELETE,OPEN CURSOR, FETCH,CLOSE CURSOR,COMMIT WORK,ROLLBACK WORK等. 1. SELECT语句语法格式:SELECT <result> [INTO <target>] [FROM <source>] [WHERE <condition>][GROUP BY <fields>] [ORDER BY <sort order>] 其中: <result>指定要抓取的字段<target>将读取的记录存放在work area中<source>指定从那个TABLE中读取资料<condition>抓取资料的条件<fields>指定按那些字段分组第15页(共44页)<sort order>排序的字段及方式相关的系统变量:SY-SUBRC = 0 表示读取数据成功<> 0 表示未找到符合条件的记录SY-DBLNT: 被处理过的记录的笔数.相关的命令:EXIT. 退出循环.CHECK <logistic statement>.如果逻辑表达式成立,则继续执行,否则,开始下一次循环.◆.利用循环方式读取所有记录SELECT ….ENDSELECT.是循环方式读取记录的.例如:TABLES MARD.SELECT [DISTINCT] * FROM MARD WHERE MATNR = …3520421700‟.<Statements>.ENDSELECT.(从MARD中抓取所有料号=3520421700的资料)◆读取一笔资料TABLES MARD.SELECT SINGLE * FROM MARD WHERE MATNR = …3520421700‟.(从MARA中抓取一笔料号=3520421700的资料)◆将读取的记录放在work area中,并且加入Internal table 中.格式有:... INTO <work area>... INTO CORRESPONDING FIELDS OF <work area>... INTO (f1, ..., fn) 变量组.... INTO TABLE <internal table>... INTO CORRESPONDING FIELDS OF TABLE <internal table>... APPENDING TABLE <internal table>... APPENDING CORRESPONDING FIELDS OF TABLE <internal table>举例一:TABLES MARD.DATA: BEGIN OF ITAB OCCURS 10,MATNR LIKE MARD-MATNR,WERKS LIKE MARD-WERKS,LGORT LIKE MARD-LGORT,LABST LIKE MARD-LABST,第16页(共44页)END OF ITAB.SELECT MATNR WERKS LGORT LABSTINTO CORRESPONDING FIELDS OF ITABFROM MARDWHERE MATNR = …3520421700‟.APPEND ITAB.CLEAR ITAB.ENDSELECT.(将读取的结果放在Internal table ITAB中)举例二.TABLES MARD.SELECT MATNR MTART MAKTX INTO (t_matnr, t_mtart, maktx)FROM MARDWHERE MATNR = …3520421700‟.<Statements>.ENDSELECT.(从MARD中抓取料号=3520421700的料号、类型和描述,放在变量t_matnr, t_mtart, maktx中)。