CRM ABAP开发培训内容总结1
- 格式:doc
- 大小:50.00 KB
- 文档页数:5
CRM ABAP开发培训内容总结CRM 概览主数据(master data):1. 组织架构模型组织架构模型将单位、职位、员工和系统中的用户号联系起来。
相互关系可通过transaction code:PPSS - evaluation typeOOAW - Evaluation Path来查询。
相关FM: RH_STRUC_GETTABLE:HRP1000,组织机构的代码是系统随机产生的,在每一个新配置的系统中号码都可能不同,所以需要以组织长或短描述作为查询的关键字,而非代码。
2. 产品产品层次(hierarchy),产品类别(category),产品(material)之间的关联。
Set type & attributes可以根据需要附到不同的产品类别上,并可以自定义set type。
Tables: COMM_PRODUCTCOMC_SETTYPECOMM_PR_FRG_RELCOMM_CATEGORYCOMM_HIERARCHY产品关系(product relationship),每项产品关系有一个对应的表结构,表名可在structure COMT_PRODUCT_IL_API中找到。
3. 业务伙伴TABLES:ADR2 Telephone Numbers (Business Address Services)ADR6 SMTP Numbers (Business Address Services)ADRC Addresses (Business Address Services)BNKA Bank Master DataBUT_HIER_TREE Business Partner Group HierarchyBUT000 BP: General dataBUT001 BP: General data IIBUT020 BP: AddressesBUT050 BP relationships/role definitions: General dataBUT051 BP Relationship: Contact Person RelationshipBUT0BK Business Partner: Bank Data & DetailsBUT100 BP: RolesBUT150 BP relationship: Attribute table主要function module:function groups:BUPA_READ (获取BP详细内容)CRM_MKTBP_DB (BP市场属性的更改)交易数据(transaction data):1. 销售(Sales)2. 活动(Activity)3. 服务(Service)One-order model: 销售订单(sales),服务请求,活动等的对象模型都是order,所以表结构和BADI作用范围也相同,需要通过transaction type来区分不同的单据类型。
王彬11信管1113011022CRM课程总结一.概述:这学期我们进行了客户关系管理课程的学习。
通过这一段时间的学习,对crm也有了一些初步的了解。
客户关系管理的理论基础来自于西方的市场营销理论,最早产生在美国,是一个不断加强与顾客交流,不断了解顾客需求,并不断对产品及服务进行改进和提高以满足顾客的需求的连续的过程。
随着经济全球一体化和互联网技术的发展,客户资源成为企业发展的生命线。
信息技术的发展,使企业“产品为中心“的经营理念向“以客户为中心“的经营理念转变得以实现。
新经济的挑战包括经济环境的自由化,打破了国家的垄断、行业的垄断及对资源的垄断,导致了竞争更加激烈,产品的生命周期更短,客户的需求更加个性化。
企业如何保持竞争能力并求得发展,这是企业必须面对的问题。
市场的激烈竞争,使得如何吸引客户、保留客户、提高客户的满意度、忠诚度成为企业生存的关键,特别是随着电子商务时代的到来,信息技术革命极大地改变了我们的商业模式,尤其对企业与客户之间的互动关系产生了巨大的影响。
在一切都随手可及的信息社会,客户可以极方便地获取信息,并且更多地参与到商业过程中。
这也表明,现在我们已经进入了客户导向的时代,深入了解客户需求,及时将客户意见反馈到产品、服务设计中,为客户提供更加个性化、深入化的服务,将成为企业成功的关键。
二.CRM的作用1. CRM式经营战略的好处(1)降低成本,增加收入。
在降低成本方面,通过建立健全的客户关系管系统,可以通过数据挖掘技术使企业能够及时并且准备地捕捉到市场的信息,发现客户的潜在需求,根据顾客的喜好作为产品的生产销售方向指向标可以避免产品销路偏差带来的仓库、人才成本等方面的损失,并且大大降低了销售费用和营销费用。
(2)由于客户关系管理使企业与客户产生高度互动,可帮助企业实现更准确的客户定位,使企业留住老客户,获得新客户的成本显著下降。
由于采用了客户关系管理,可以更加密切与客户的关系,增加订单的数量和频率,减少客户的流失,要知道争取一个新客户的成本可是留住老客户的五倍。
ABAP培训教程ABAP培训教程是针对SAP系统中的高级商务应用程序编程语言(ABAP)进行培训的文档。
本教程旨在为初学者提供一个全面的指南,帮助他们深入了解ABAP的基本概念和功能。
本文将详细介绍ABAP培训教程的内容和目标,以及如何利用这个教程来提升自己的ABAP编程技能。
第一部分:介绍ABAP教程的第一部分是一个简要介绍,主要包括ABAP编程语言的背景和起源,以及它在SAP系统中的作用和重要性。
读者将了解到ABAP是如何成为SAP的核心开发语言,以及它在业务流程和数据处理方面的优势。
第二部分:基础知识ABAP培训教程的第二部分是关于ABAP的基础知识。
这部分将介绍ABAP的语法和数据类型,包括变量、操作符、表达式、条件语句和循环语句等。
读者将学习如何定义和使用ABAP程序中的变量,以及如何使用不同的控制结构来控制程序的流程。
第三部分:面向对象编程ABAP培训教程的第三部分是关于面向对象编程(OOP)的内容。
这部分将介绍ABAP中的对象和类的概念,以及如何使用ABAP类来组织和管理代码。
读者将学习如何定义ABAP类和对象、如何使用继承和多态性,以及如何使用封装和抽象化来设计复杂的ABAP程序。
第四部分:数据字典和数据库操作ABAP培训教程的第四部分是关于数据字典和数据库操作的内容。
这部分将介绍ABAP数据字典的概念,以及如何使用数据字典来定义和管理数据表、视图和数据元素。
读者将学习如何使用ABAP语句来进行数据库操作,包括数据的插入、更新和删除等。
第五部分:用户界面设计和调试技巧ABAP培训教程的第五部分是关于用户界面设计和调试技巧的内容。
这部分将介绍如何使用ABAP语句和UI元素来设计和开发用户界面,包括屏幕和报表的设计。
读者将学习如何使用ABAP调试器来调试和分析ABAP程序,以及如何使用断点和变量查看器来查找和解决程序的错误和问题。
第六部分:实例项目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 培训的过程中,我深刻体会到了这个编程语言的强大和灵活性。
通过培训,我不仅学到了 ABAP 的基础知识和语法,还了解了如何使用 ABAP 开发各种应用程序。
首先,ABAP 培训让我对企业资源规划(ERP)系统有了更深入的理解。
ABAP 是一种专门用于 ERP 系统开发的编程语言,它与 SAP 系统紧密集成。
通过学习 ABAP,我了解了 ERP 系统的业务流程和数据模型,以及如何通过编程来定制和扩展系统功能,以满足企业的特定需求。
其次,培训过程中我掌握了 ABAP 的编程技能。
我学会了如何编写逻辑清晰、高效的代码,并使用 ABAP 中的各种语句和函数来实现数据处理、屏幕开发、报表生成等功能。
通过实际的项目练习和案例分析,我逐渐熟悉了 ABAP 的开发工具和调试技巧,能够独立完成简单的 ABAP 程序开发。
此外,ABAP 培训还培养了我的团队合作精神和问题解决能力。
在培训过程中,我们经常进行小组讨论和项目合作,通过与其他学员的交流和协作,我学会了如何有效地沟通和协调,共同解决编程中遇到的问题。
这种团队合作的经验对我今后的工作和职业发展将非常有帮助。
总之,参加 ABAP 培训让我收获颇丰。
它不仅提升了我的编程技能,还让我对企业信息化有了更深入的了解。
我相信这些收获将会对我的职业发展产生积极的影响,并为我在企业信息化领域的发展打下坚实的基础。
ABAP培训ABAP(Advanced Business Application Programming)是一种高级商务应用程序编程语言,主要用于SAP系统上的开发和定制。
如果您对SAP系统感兴趣,并且想要学习如何使用ABAP进行开发和定制,那么这篇文档将帮助您入门ABAP 培训。
1. ABAP概述ABAP是一种编程语言,它是针对SAP系统的特定需求而开发的。
它主要用于开发和定制SAP系统的应用程序和功能。
ABAP是一种面向对象的编程语言,它支持各种数据类型、控制结构和操作符,以及丰富的标准库和功能模块。
2. ABAP培训的重要性为什么ABAP培训对于想要专注于SAP系统开发和定制的人员来说是如此重要呢?以下是一些原因:•专业知识:ABAP是SAP系统的核心开发语言,学习ABAP将使您掌握SAP系统的开发和定制技能,从而提高在SAP项目中的价值和就业机会。
•个性化开发:通过学习ABAP,您将能够根据特定需求进行个性化开发,为企业提供量身定制的应用程序和功能。
•系统维护:ABAP培训还将使您能够理解和维护SAP系统上的现有应用程序和功能,从而提高系统的可靠性和稳定性。
3. ABAP培训内容ABAP培训通常包括以下主题:•ABAP语法:学习ABAP的语法和基本编程概念,包括变量、数据类型、控制结构、操作符等。
•ABAP开发工具:熟悉ABAP开发工具,如ABAP开发环境(ABAP Development Environment,简称ABAP Dev),ABAP编辑器(ABAP Editor)等。
•SAP数据模型:了解SAP的数据模型和数据库结构,包括数据表、数据字典和数据访问方法。
•ABAP对象:掌握ABAP面向对象编程的概念,包括类、对象、方法和继承等。
•SAP功能模块:学习如何使用SAP功能模块在SAP 系统中执行特定任务和功能。
•ABAP调试和测试:了解如何调试和测试ABAP程序,以确保其功能正常,并解决潜在的问题。
1程序开发的流程2开发用户的建立上的注册3开发界面的熟悉3.1SE383.2程序的创建3.3开发请求的建立(se09)3.4SE163.5SE113.6开发常用表3.6.1 常用表:3.6.2 系统变量表: SYST4开发命名规则的介绍联芯科技E R P项目开发命名规范说明.doc5ABAP基础5.1数据类型数据类型默认大小有效大小初始值说明C 1 1 – 65535 SPACE 文本,字符(字母数字字符)D 8 8 '00000000' 日期(格式:YYYYMMDD)F 8 8 0 浮点数I 4 4 0 整型(整数)N 1 1 – 65535 '00...0' 数字文本P 8 1 – 16 0 压缩号T 6 6 '000000' 时间(格式:HHMMSS)X 1 1 – 65535 X'00' 十六进制5.2数据声明5.2.1TYPES用于用户自定义数据类型5.2.2CONSTANTS用于创建常量CONSTANTS PI TYPE PDECIMALS 6 VALUE '3.141592'5.2.3DATA用于创建变量DATA <f>[(<length>)]<type/like> [[<value>] [<decimals>]/<field>].5.2.4TABLES用于创建表工作区5.2.5独立行注释语用’*’,语句后注释用’”’.5.3内表在ABAP/4中,主要使用表格。
表格是R/3系统中的关键数据结构长期使用的数据存储在关系数据库表格中。
除了数据库表格,还有内表。
内表就是仅在程序运行时间内存在的内表。
例:声明内表类型Types: begin of typ_vbap,Matnr like vbap-matnr,Vbeln like vbap-vbeln,Posnr like vbap-posnr,End of typ_vbap.声明工作区Data w_vbap type typ_vbap.声明内表Data t_vbap type table of typ_vbap.图解工作区:内表:其他的声明方式,个人不建议使用声明带表头的内表,工作区和内表在一起Data t_vbap type table of typ_vbap occurs 0.图解:……5.4程序的调试5.5语法介绍5.5.1Write语句WRITE AT [/] [<POS>][(<LEN>)] <F> [<OPTIONS>];5.5.2Loop at t_tab into w_tab <where …> 语句5.5.2.1APPEND5.5.2.2COLLECT5.5.2.3DELETE5.5.2.4MODIFY5.5.2.5CLEAR,FREE,REFRESH5.5.2.6DESCRIBE5.5.3READ语句5.5.3.1read t_table into w_table with key.5.5.3.2read t_table into w_table index ….5.5.4SELECT语句5.5.4.1SELECT INTO T_AREA语句5.5.4.2SELECT INTO CORRESPONDING 语句5.5.4.3SELECT INTO W_AREA语句5.5.4.4SELECT SINGLE 语句5.5.4.5SELECT ENDSELECT语句5.5.4.6INNER JOIN5.5.4.7LEFT JOIN5.5.4.8WHERE5.6变量和值操作5.6.1赋值=;MOVE <F1> TO <F2>;MOVE-CORRESPONDING <STRING1> TO <STRING2>;WRITE (<F>) TO <G>...CLEAR <F>5.6.2数值运算+;-;*;/;**;MOD(余数);DIV(整倍数)...5.6.3数值函数ABS;SING;CEIL;FLOOR;TRUNC(整数部分);FRAC(小数部分)...5.6.4字符操作CONCATENATE <C1>...<CN> INTO <C> [SEPARATEDBY <S>];5.6.5SPLIT <C> AT <DEL> INTO <C1>...<CN>;5.6.6CONDENSE <C> [NO-GAPS];5.6.7TRANSLATE <C> TO UPPER/LOWER CASE;5.6.8比较:CP;CN;CA...;5.6.9偏移量: DATA: ULTIMO TYPE D.ULTIMO = SY-DATUM.ULTIMO+6(2) = '01'.5.6.10SORT语句5.6.11AT语句5.6.11.1at first.5.6.11.2at new .. .5.6.11.3at end of .. .5.6.11.4at last.5.6.12IF语句5.6.13Check语句5.6.14WHILE语句5.6.15DO语句5.6.16CASE语句5.6.17Call function 语句5.6.18ST05追踪表6事件关键字6.1Initialzation.6.2start-of-selection.6.3End-of-selection.6.4At select-screen.6.5…7选择屏幕7.1PARAMETERS7.2SELECT-OPTIONS6.2.1NO INTERVALS6.2.2NO-EXTENSION7.3OBLIGATORY7.4RADIOBUTTON GROUP <rad>例:PARAMETERS: BOY RADIOBUTTO N GROUP SEX DEFAULT ‘X’,GIRL RADIOBUTTON GROUP SEX.7.5CHECKBOX例:PARAMETERS: TAX AS CHECKBOX DEFAULT ‘X’.7.6初始化选择屏幕例:SELECT-OPTIONS s_vbeln for vbak-vbeln.Initialization.S_vbeln-sign = ‘I’.S_vbeln-option = ‘BT’.S_vbeln-low = ‘00001’.S_vbeln-high = ‘99999’.Append s_vbeln.8例外用户信息MESSAGE Ynnn(Mid) [WITH <Info>] Y: I - InfoW - WarningE - ErrorA - AbendX - ExitS - Success9模块化编程FORM….ENDFORMPERFORM 带参数10ALV学习11SMARTFORM使用12事务代码的建立与释放请求建立事务代码释放请求。
目录基本语法 (4)定义数据和类型 (4)运算符控制流语句 (5)字符串操作 (7)字符串连接 (7)字符串拆分 (7)字符串查找 (7)字符串替换 (8)字符串长度 (8)定位操作字符串 (9)子程序 (9)无参数 (9)带参数 (9)参数传值和传地址对比 (10)创建功能模块FUNCTION (10)包含程序 (11)静态变量 (11)内表操作 (11)1.定义基本内表 (11)2复杂内表. (12)示例一 (12)示例二 (15)示例三 (16)示例四 (17)数据库建表 (21)数据库查询 (21)(一)单表查询 (21)(二)多表联合查询 (25)1.嵌套查询 (25)2.FOR ALL ENTRIES (26)3多表结合查询 (27)结果放入变量 (27)查询单行,结果放入结构体对象(工作区)中 (27)查询多行,结果放入内表中 (27)数据库操作查询学生班级表。
(29)单表查询 (29)单行部分字段 (30)多表联合查询 (30)单行所有字段 (31)单行部分字段 (32)添加数据 (33)添加一条 (33)插入多行数据 (33)修改记录 (34)使用变量修改 (34)使用工作区修改 (34)使用内表修改多条数据 (34)修改或保存 (35)使用工作区修改或保存 (35)使用内表修改或保存 (35)删除 (36)使用工作区删除 (36)使用内表删除 (36)案例:查询数据库数据至内表修改内容并且更新到数据库 (36)报表设计 (37)选择屏幕 (37)选择屏幕参数 (37)格式化屏幕参数 (38)复杂选择标准 (38)ALV报表 (40)示例一 (40)参数说明 (43)w_fcat TYPE slis_fieldcat_alv, (43)用到属性: (44)其他属性: (44)w_layo TYPE slis_layout_alv, (46)使用属性: (46)其他属性 (46)i_fcat TYPE slis_t_fieldcat_alv. (49)示例二: (52)屏幕编程 (55)重要概念: (55)创建: (55)举例:用户输入学号返回姓名等信息 (57)由数据字典生成屏幕 (58)根据定义的结构生成屏幕 (58)单选、复选钮用法 (58)P OV(F4帮助)添加 (59)屏幕间跳转 (59)添加table control 字段 (63)设置某列为不可编辑 (64)设置下拉列表框 (64)从数据库取值加入列表 (65)下拉列表取值 (66)Screen上后添加数据库字段 (67)T ABLE CONTROL (67)Screen layout (67)Screen 100中代码 (68)Programe中代码 (69)SARTFORM (71)简单示例 (71)程序部分 (71)Smartform配置 (72)Template (72)Table做法: (75)样式设置 (77)基本语法定义数据和类型REPORT ZWANGZHENG2.*定义数据txt1 类型 C 长度15 初始值HELLO WORLD DATA txt1(15) TYPE c VALUE 'HELLO WORLD'. *定义类型t_txtTYPES t_txt(15) TYPE c .*定义数据txt2 类型为:t_txtDATA txt2 TYPE t_txt VALUE 'first'.*定义类型为N的数据及类型。
1.内表的定义通过关键字DATA对内表进行创建,内一的定义可以直接参考结构体或者其它内表及透明表,也可以直接定义字段,其中关键字如下:UNIQUE|NON-UNIQUE:指定关键字,只能应用于排序表或者哈希表。
INITIAL SIZE n:指定初始化内表大小。
WITH HEADERLINE:定义内表是否有表头。
具体定义有以下几种方式:DATA <内表名> TYPE <结构类型> WITH[UNIQUE|NON-UNIQUE] [INITIAL SIZE n] [WITH HEADER LINE]。
DATA <内表名> LIKE TABLE OF <内表或者透明表> WITH[UNIQUE|NON-UNIQUE] [INITIAL SIZE n] [WITH HEADER LINE]。
DATA BEGIN OF itab OCCURS n,......END OF itab [VALID BETWEEN f1 AND f2]。
2.内表的赋值上面曾介绍过,内表分为有无HEADER LINE两种。
对于有HEADER LINE的内表,可以通过填充HEADER LINE数据后或通过外部的Work Area向内表存储空间中追加数据,相关语法如下:APPEND(<work area> into) <ITAB>.3.内表数据管理3.1.内表的清空CLEAR <ITAB>:仅清空HEADER LINE,对内表数据存储空间不影响。
REFRESH <ITAB>:清空内表数据存储空间,对HEADER LINE不影响。
REFRESH <itab> FROM TABLE<dbtab>:清空内表存储空间,填充从数据库表所获数据。
FREE <ITAB>:清空内表数据存储空间,对HEADER LINE不影响。
CRM ABAP开发培训内容总结
CRM 概览
主数据(master data):
1. 组织架构模型
组织架构模型将单位、职位、员工和系统中的用户号联系起来。
相互关系可通过transaction code:
PPSS - evaluation type
OOAW - Evaluation Path
来查询。
相关FM: RH_STRUC_GET
TABLE:HRP1000,组织机构的代码是系统随机产生的,在每一个新配置的系统中号码都可能不同,所以需要以组织长或短描述作为查询的关键字,而非代码。
2. 产品
产品层次(hierarchy),产品类别(category),产品(material)之间的关联。
Set type & attributes可以根据需要附到不同的产品类别上,并可以自定义set type。
Tables: COMM_PRODUCT
COMC_SETTYPE
COMM_PR_FRG_REL
COMM_CATEGORY
COMM_HIERARCHY
产品关系(product relationship),每项产品关系有一个对应的表结构,表名可在structure COMT_PRODUCT_IL_API中找到。
3. 业务伙伴
TABLES:
ADR2 Telephone Numbers (Business Address Services)
ADR6 SMTP Numbers (Business Address Services)
ADRC Addresses (Business Address Services)
BNKA Bank Master Data
BUT_HIER_TREE Business Partner Group Hierarchy
BUT000 BP: General data
BUT001 BP: General data II
BUT020 BP: Addresses
BUT050 BP relationships/role definitions: General data
BUT051 BP Relationship: Contact Person Relationship
BUT0BK Business Partner: Bank Data & Details
BUT100 BP: Roles
BUT150 BP relationship: Attribute table
主要function module:
function groups:BUPA_READ (获取BP详细内容)
CRM_MKTBP_DB (BP市场属性的更改)
交易数据(transaction data):
1. 销售(Sales)
2. 活动(Activity)
3. 服务(Service)
One-order model: 销售订单(sales),服务请求,活动等的对象模型都是order,所以表结构和BADI作用范围也相同,需要
通过transaction type来区分不同的单据类型。
主要TABLE:
CRM_ORDER_INDEX
CRMD_ORDERADM_H
CRMD_ORDERADM_I
......
主要BADI:
ORDER_SA VE
CRM_ORDERADM_I_BADI
CRM_ORDERADM_H_BADI
.....
主要FUNCTION MODULE:
CRM_ORDER_READ
CRM_ORDER_MAINTAIN
CRM_ORDER_READ_OW
CRM_ORDER_READ_DB
(CRM_PARTNER_READ_OW,
CRM_PARTNER_READ_DB...... )
.....
CRM ABAP开发与传统R/3的主要不同:
1、所有对象均有一个唯一的GUID,表之间以GUID为唯一关联,目的是加快查询时间,提高系统性能。
2、由于表之间的连接关系比较复杂,取数方式由传统的表查找改变为调用function module,如对系统性能要求不高的情况下,尽可能找到合适的FM来保证取数的正确。
Sales transaction事件控制: tcode - crmv_event
主要程序练习:
1.熟悉服务请求和BP的数据结构。
输入选择条件(服务订单):订单预约日期RANGE
订单用户状态
订单类型
所用FM: CRM_ORDER_READ,
BUPA_ADDRESSES_READ,
CRM_MKTBP_READ_CHAR_ALL_PFTPL
2. BADI 练习
在服务订单输入employee时检查其部门是否为某值,如果出错则输出错误信息,并阻止订单保存。
3. BAPI调用练习
程序生成一张服务订单,参考程序:
CRM_TEST_ORDER_MAINTAIN
程序生成BP,调用FUNCTION:BAPI_BUPA_CREATE_FROM_DATA。