Part1:F1F4帮助按钮CLIENT代表虚拟的组织,并分为两种1.CLIENT-SPECIFIC/CLIENT-DEPENDENT2.CROSS-CLIENT/CLIENT-INDEPENDENTCUSTOMIZING分为两部分1.CLIENT-SPECIFIC配置2.CROSS-CLIENT配置REPOSITORYOBJECTS仓库对象全是CROSS-CLIENT的ASAPROADMAP(SAP配置路线图)1.BASIS模块先对上线系统进行配置2.各模块顾问(例如MM,SD)进行配置3.当需要开发额外功能的时候,ABAP人员进行开发开发三种方式1.CUSTOMERDEVELOPMENT独立的开发(推荐使用)2.EXTENSION加强的开发(不推荐使用)3.MODIFICATIONS修改的开发(强烈不推荐使用,可能对日后升级造成困难)SCREEN功能:用户可以通过屏幕输入数据库查询条件,并将数据打印出来(列表)并显示给用户BUFFER:每个应用服务器APPLICATIONSERVER都有一个大的SHAREDMEMORY而对于每一个WORKPROCESS都拥有一个LOCALBUFFER,在LOCALBUFFER中可以存放一些不经常改变的数据对象,或是只读的对象SAPGUI的基本方式1.SAPGUIFORWINDOWS(优点:操作数据速度较快缺点:不跨平台,而且需要安装客户端)2.SAPGUIFORJAVA(优点:可以跨平台缺点:操作速度较FORWINDOWS略慢)3.SAPGUIFORHTML(优点:0安装,查看少量数据较方便缺点:对网络传输要求较高,速度较慢)SAPBASISDATABASELAYER(数据库层)在LOCALBUFFER拥有一个TABLEBUFFER可以将不经常改变的表放入到TABLEBUFFER中系统之间的通信多个DISPATCHER由MESSAGESERVER进行通信管理多个系统之间由GATEWAY进行通信管理INSTANCE实例间不能直接通信要通过DISPATHER和MS进行通信占有释放ABAP与数据库的连接ABAP不需要自己连接数据库,这不同于JAVA语言每个工作进程启动后就已经连接到数据库上了长事务运行:当有用户占用多个进程并且执行LONG-RUNNINGABAPPROGRAM(长运行时间程序例:死循环程序)时,其余用户只能使用剩余的少量进程,这会导致多数用户成为等待状态,速度会非常慢,解决方法:通过BASIS人员对占用多个进程的用户进行操作或删除,释放线程,缓解运行压力BACKGROUNDPROCESSING(后台进程)特点:用户不能手动控制例如:系统晚12点自动盘点1.分别配两个服务器DIALOGSERVER和BACKGROUNDPROCESSINGSERVER2.DS中的DWP在数据库中SCHEDULINGTABLE(日程表)中插入JOB,设置后台线程任务3.BPS中的DWP定期(默认:60S)循环查询SCHEDULINGTABLE表,当发现有新的后台任务后,将任务转给BPS中的BWP4.BWP根据任务对数据库进行操作打印机制PrintingSWP-打印进程可以配置也可以不配置但需要配置一个DWP1.用户通过点击打印按钮发送打印请求(数据为可识别的编码方式)2.DWP将打印请求放入到SpoolRequest-打印队列(可以是Database/FileSystem)(数据为可识别的编码方式)3.SWP每隔一段时间就会到队列中寻找打印任务,当找到新的打印任务时,便执行打印任务.4.打印任务可以发送给本地OperatingSystemSpool(操作系统打印线程)进行打印,也可以通过网络在远程打印机上进行打印(例:老总办公室的打印机可以远程接受远程打印报表)(此时数据是不可识别的2进制代码)LockAdmistration加锁机制EWP可以配也可以不配必须配DWP如果配置该服务器就叫做加锁服务器操作:1.使用Su3操作用户主数据(此时系统已经把数据库的用户主数据锁住了)2.新开一个session再使用SU3此时无法进入并修改用户数据,因为主数据已经被加锁ewp锁住的是表在内存中所对应的对象用户可以自己定义锁锁的类型:Sharedlock共享锁(readlock)同时读读兼容同时读写或写写不兼容Exclusivelock独占锁只要用户独占不允许任何操作(增删改查)注:如果锁对象被激活,系统将会自动生成两个functionmodule加锁方法和解锁Enqueue(加锁)dequeue(解锁)Dialogserver必须要依附于能加锁的服务器进行加锁要通过领导加锁是给内存中的表的对象加锁,通过锁内存锁数据库目的是锁数据库Multiplexing多路复用原理:有线电视利用有线电视传输间隙进行网络传输DWP的处理流程用户在点击按钮的时候,可能执行一个或多个ABAP程序,可能有一个或多个请求程序之间可能有串联关系,当第一个程序完成后会带动第二个程序运行,但是这个程序也需要放到队列中并等待空闲线程.只有当所有的程序或请求都执行完毕后,才能够出现效果PBO:processbeforeoutputPAI:processAfterinputAbapscreen在弹出的时间点之前之后分别要触发两个事件PBO和PAI处理一个事件,需要添加相应的代码加以实现事件的触发机制trigger为事件所写的代码块叫做eventblock注:同一个程序屏幕编号不能重复一个屏幕前后的PBOPAI不一定能在同一个DWP中,由于时间的关系,系统可能会把它们分到不同的DWP中.但给用户的感觉却是流畅的.EnterpriseStructure:企业架构在逻辑上的大小顺序:ClientcompanycodeplantSalesOrganizationDivisionStorageLocationsclient(集团)代表企业企业的分支机构都拥有公司的编码下属工厂进行生产销售组织子机构仓库注:系统上线之前要把所有组织机构全都要配置到R/3中Customermaster客户主数据采购冰箱generaldata公共数据financialaccountingdata财务信息g/l总账数据库的转换Sap中成品半成品都算是物料MessageType分三种类型:1.immediately创建订单的时候立即创建发票2.onrequest有需求时创建发票3.nextselectionrunorataspecifiedtime在指定时间里创建发票MessageType消息的类型包括:在屏幕上看到发票在打印机传真一个发票Email传发票Edi电子数据交换BusinessWorkflow工作流Employee员工Supervisor上级/长官场景:1.员工需要预约在电脑上填写预约申请2.通过工作流处理上司电脑上接到预约申请并做出决定是否批准3.批准后工作流结束4.如果没有批准被拒绝的预约申请消息会被传送到员工手中,并需要进一步决策,是否需要重新修改申请表,或者是不修改申请表,直接结束工作流5.如果重新修改申请表,上级则再一次得到申请表,如果批准,则工作流结束BusinessScenario工作场景利用场景解释工作流Abapprogramprocess----MainBusinessScenarioSapabap必须要有业务场景飞机场的业务模型SapflightdatemodelDeparturecity起飞城市Departureairport起飞机场Destinationairport目的机场Destinationcity目的城市帮助旅行代理或旅行社订票的基本需求:在特定的时间到指定的地点处理特定的航班订票附加的信息Price价格Capacity容量非常重要:航班模型的表:SCARR航空公司表SPFLI航线表SFLIGHT航班表(订票时所需要的表)以上表的关系是树形关系一个航空公司对应多个航线,而一个航线对应多个航班Client/SeverArchitectureWorkprocess可以执行ABAPprogram应用服务器一分为二:1.一部分可以执行JAVA程序2.另一部分是ABAP程序Blackbox黑盒对于gui和用户来说相当于一个黑匣子ViewfortheUser用户视图screen标准屏幕:standardscreendynprodynimic:功能用户输入,为了插入数据库,selectionscreen选择屏幕:功能:接受用户输入的查询的条件对数据库进行查询(一般情况下)List列表功能:将数据显示给用户(重要:每个ABAP程序员必须要掌握)InteractionBetweenServerLayers在服务器中两层之间的交互ABAP程序启动时要到WP中执行程序同一个程序分成不同块StartofscreenAbap所有的repository全都在数据库中储存程序的背景context定义选择屏幕时,所添加的屏幕字段,是根据数据字典中的字段定义的所以定义前要从repository中去查看需要哪一种类型的字段屏幕内存以及硬盘上的字段变量都对应相同的但是储存的位置不同在程序中,可以把内存中的变量当作数据库条件使用,使用where语句进行数据库操作然后数据库将结果集返回给ABAP程序,最后返回给列表屏幕程序可以将内存变量当作条件重要:在新版本中Developmentclasses属于变化了package包Abap运行过程需要使用repository(储存在数据库中)仓库都跨client依赖分两部分配置表应用表Repository结构Repository(仓库)包含applicationcomponents(应用组件)和package(包)Package(包)中包含RepositoryObjects(仓库对象)重要:创建的仓库对象必须放到一个包中管理对象的系统就是InformationSystem信息系统ObjectnavigatorIDE集成开发环境Abapdictionaryse11维护ClassbuilderSe24面向对象开发(Abap语言刚开始是面向过程后来也支持面向对象开发)Functionbuilderse37全局方法AbapeditorSe41在修改sap自己的程序时ScreenpainterSe80中的主要构成NavigationareaRepositorybroswerTransportorgnization非常重要Contextmenu弹出菜单Sap仓库对象分成两部分系统标准对象用户对象Sapnamespacecustomernamespace(必须用Y或者Z开头)重要:只要是自己创建的必须要(ZY开头)组织有效开发Sap三系统架构图3-systemlandscape1.DEV开发系统2.TST/QAS测试系统3.PRD生产系统优点:三个系统可以降低企业风险开发测试生产DEV---TST/QAS|(需要盖章)PRD组织步骤:1.配置或程序开发完毕后需要发送至测试服务器进行测试2.测试完毕后需要盖章然后发送至生产系统,此时生产系统停止运作3.配置完毕后生产系统重新启动运作相邻两系统需要从左到右进行传输(开发/配置)(transportation)配置的传输包括模块的配置:MMPPSD等.优点:开发的组织有利于传输Sap传输请求ChangeRequest变更请求=TransportationRequest传输请求请求的创建是为了传输开发请求workbenchchangerequest请求所有开发以及配置的东西必须放到request(容器)中Changerequest进行传输相当于projectChangerequest下可以装package不是每一个对象都需要设置request比如不参与传输的对象Localproject,可以不参与传输创建project的时候点击SAVE便创建了全局对象(需要设置request以用于传输),点击localobject可以创建本地对象(因为不需要传输所以不需要设置request)Project项