ABAP创建FUNC实现标准tcode功能(将标准程序生成FUNCTION)
- 格式:docx
- 大小:704.51 KB
- 文档页数:20
ABAP基础程序结构ABAP语言是整个SAP系统的基础开发工具和技术平台,其包含:事件驱动(Evet-Driven)、机制和模块化技术(Modularization)、完整的面向对象概念及实现方法(Object Oriented)。
ABAP程序的源代码结构包括数据定义和处理块两部分:数据定义:整个程序中可见的全局数据类型和数据对象、选择屏幕元素以及ABAP Object 中自定义的类和接口。
处理块(Processing Blocks):是ABAP的主要结构单元,定义程序在不同状态下执行的具体功能,在编译运行中,每一块都是一个独立的实体。
注:数据(包括选择屏幕元素)定义和声明语句是独立于任何处理块的,其他所有语句则都必须隶属于某个处理块。
1. ABAP程序含有三种类型的处理块:·事件块(Event Blocks):每一个事件都需要有一个时间关键字引导,并单独构成一个语句,其后续语句隶属于该关键字代表的时间块,直到下一关键字出现为止。
包括:报表事件、列表事件、屏幕事件初始化:INITIALIATION数据选择开始:START-OF-SELECTION列表行选择:ATLINE-SELECTION屏幕输出前处理:PROCESS BEFORE OUTPUT平和输入后处理:PORCESS AFTER INPUT·对话模块(Dialog Modules):开始和结束都有相关的关键字作为标志,是相对独立的程序单元。
·过程(Procedures):代码部分的开始和结束都有相关的关键字,也是相对独立的程序单元。
过程包括功能模块和子程序,以及对象中的类方法可以被其他的模块调用,实现程序模块化和代码复用。
2. 处理块调用处理块使程序代码模块,也是运行期间的单元;其具体出现的顺序与其在程序代码中的先后顺序无关。
3. 事件驱动在各种处理块中,系统对事件快的调用过程有其特殊性:其调用总是与某时间地发生相关,也成为事件的触发。
Tcode功能简述CMOD,SMOD系统标准程序功能扩展设置SA38执行某已存在程序SCAT计算机辅助测试工具SE01,SE09,SE01Request 传输查询/管理工具SE11ABAP 数据字典维护SE12ABAP 数据字典对象查看SE13表/视图技术参数设置SE14数据字典对象校验工具SE16透明表数据查看SE18BADI 对象创建SE19BADI 实例创建SE30ABAP 程序运行分析测试SE32ABAP 程序文本元素维护SE37Function 维护SE38ABAP 程序维护SE39ABAP 程序代码对比工具SE41程序菜单绘制工具SE51程序屏幕维护SE61数据元素说明文本维护SE71Script Form 维护工具SE72Script Form 体例设计SE73Script Form 字体设置SE80ABAP 程序对象浏览SE81ABAP 程序分类列表浏览SE84R/3 信息仓库SE91系统消息回执信息维护SE93Tcode 维护SM04查看系统当前活动用户SM21系统执行记录SM30,SM31表数据维护SM35,SMDB BDC 工具SM36后台任务排程SM37后台派配任务状况查看SNRO设定系统 Range 对象,使用 Function:NUMBER_GET_NEXT 抓取SPAD系统打印相关参数设定SPRO系统实施向导SQ01Query 维护SQ02Query Infoset 维护SQ03Query User Group维护ST05SQL 执行跟踪SMARTFORMS SAP Smart Forms 工具基本介绍EnhancementABAP ReportingComputer Aided Test ToolTransport OrgenizerABAP DictionaryABAP/4 Dictionary DisplayMaintain Technical SettingUtilities for Dictionary Tables Data BrowserBusiness Add-Ins:Definitions Business Add-Ins:Implementations ABAP Objects Runtime Analysis ABAP Text Element Maintenance ABAP Function ModulesABAP EditorS plitscreen Editor:Program Compare Menu PainterScreen PainterR/3 DocumentationSAPscript FormSAPscript StyleSAPscript Font MaintenanceObject NavigatorApplication HierarchyR/3 Respository Information System Message MaintenanceMaintain Tranction CodeUser ListOnline System Log AnalysisCall View MaintenanceBatch Input MonitoringSchedule Backgrounp JobOverview of job selectionNumber Range ObjectSpool AdministrationCustomzing-Edit ProjectS AP Query:Maintain queriesS AP Query:Maintain InfosetS AP Query:Maintain user groups Performance traceSAP Smart Forms。
abap call function用法ABAPCallFunction是SAPABAP编程语言的一个重要组件,它提供了一种方便的方式来调用SAP系统中的函数模块。
在SAP系统中,函数模块是一种预定义的程序单元,它可以完成一些特定的任务,比如数据库操作、数据处理、输出等。
在ABAP程序中,通过ABAP Call Function语句可以调用SAP 系统中的函数模块。
调用函数模块需要提供一些参数,包括函数模块名称、输入参数、输出参数等。
下面我们介绍一下ABAP Call Function的用法。
1. 函数模块名称调用函数模块时需要提供函数模块的名称。
一般来说,函数模块名称是由两部分组成,即函数组和函数名称。
函数组是函数模块所属的逻辑组织单元,它用于标识函数模块的来源。
函数名称是函数模块的名称,它用于标识函数模块的功能。
函数模块名称的格式一般为“函数组名/函数名”。
2. 输入参数调用函数模块时需要提供输入参数。
输入参数是函数模块需要的数据,它会被传递给函数模块,用于完成相应的任务。
输入参数可以是简单类型的数据,比如整数、字符串等,也可以是结构体或表格类型的数据。
输入参数的定义需要与函数模块的输入参数定义保持一致。
3. 输出参数函数模块执行完成后,会返回一些结果,这些结果可以通过输出参数来获取。
输出参数与输入参数类似,可以是简单类型的数据,也可以是结构体或表格类型的数据。
输出参数的定义需要与函数模块的输出参数定义保持一致。
4. 调用函数模块调用函数模块的语法如下:CALL FUNCTION function_nameEXPORTINGinput_parametersIMPORTINGoutput_parameters.其中,function_name是函数模块名称;input_parameters是输入参数;output_parameters是输出参数。
EXPORTING和IMPORTING关键字用于指定参数的类型。
Tcode 描述备注ABAPDOCU ABAP文档和范例BAPI BAPI浏览器CMOD(SMOD) SAP增强LSMW 数据导入工具数据导入PFCG 权限管理OSS1 连接SAP OSSS001 ABAP开发工作台菜单(含多Tcode)SA38 运行程序(SE38开发)SCAT 计算机测试工具,测试,数据导入等数据导入(Computer Aided Test Tool)SCC1 集团拷贝SCC4 显示集团SE01 传递传输请求(同一服务器的不同client)SE09 传输请求操作SE10 同SE09SE11 维护ABAP数据字典SE12 显示数据字典SE13|SE14|SE15 数据字典相关SE16|SE17 查看表数据SE30 ABAP运行分析SE32 ABAP文本元素维护SE35 ABAP/4对话框编程维护SE36 维护逻辑数据库SE37 函数据维护Function moduleSE38 ABAP 编辑器SE39 程序比较SE41 菜单制作器SE43 应用区菜单(相同功能tcode组成一area menu)SE51 屏幕绘制器SE54 生成表的维护视图,然后SE16|SM30可直接维护表数据SE55 生成表维护程序SE61 文档维护SE63 翻译SE71->SE76 SAPscript相关TcodeSE71 Form设计单据打印SE78 Form,SmartForms使用图片上载SE80 ABAP库(对象浏览器)SE81 ABAP应用层次SE84|SE85|SE86 ABAP/4 Repository Information SystemSE90 对象浏览器SE91 建立消息类和消息SE92 维护系统Log消息SE93 给程序维护TcodeSHDB 批输入代码数据导入SEU Repository Object BrowserSHD0 维护Tcode运行变式(Variant)SM04 查看当前用户SM12 删除显示Locked objects(不可删除被lock的传输请求)SM21 Dump log查看SM30|SM31 维护table|view数据SM30 维护表视图SM32 维护表SM35 进程监控,查看Batch input session(建立BDC使用SHDB) SM36 定义后台jobSM37 查看后台jobSM50 超时用户(Process Overview)SM51 Display system servers, processes, etc.SM62 Display/Maintain events in SAPSMARTFORMS SmartForms设计单据打印SNUM 编号对象维护SO10 标准文本,设定Form使用的TIFF图片等SPAD 假脱机管理SQ01 Query查询制作ST05 SQL等跟踪,使用它可跟踪程序使用的表等.SU20 授权字段授权SU21 授权对象授权SU53 检查授权对象,如出现权限问题可使用WE21 IDOC处理中的端口IDOC。
课程目标:(1)理解模块化的思想(2)使用子程序实现模块化(3)使用函数实现模块化(4)【其它的宏、include程序,可以通过ABAP入门.pdf进行学习】一、模块化把部分源代码存储到一个模块里,可以提高程序的透明度,还可以在程序中多次使用同一功能,而无需在每次使用时都整个重新写一次源代码。
模块化简化了程序的维护,因为您只需要修改个别模块化单元的功能和程序,而无需在主程序中修改多个地方。
而且,在调试器中执行程序的时候,调用可以“作为一个单元”来处理,然后只需要查看结果。
参数用于程序和模块之间交换数据。
定义模块化单元的时候,就确定了可以使用哪些参数,参数根据用途可分为:(1)导入参数:用来传递数据给模块化单元(2)导出参数:把模块化单元中的数据返回给调用程序(3)变更参数:把数据传递给模块化单元并返回更改后的数据二、模块化的实现方式(1)局部程序的模块化两种方式:子程序和局部类方法。
(2)全局模块化两种方式:功能模块、全局类方法全局定义的模块化单元,可以由任意多个程序同时使用,它们存储在中央资源库中,被程序调用时,会加载到调用程序的上下文中。
三、使用子程序实现模块化(在第五课的时候,我们有讲过子程序的部分知识。
)如上图所示,可在子程序中处理在主程序中定义的所有的(全局)变量。
但是,为了调用在不同情况中含不同数据对象的子程序,不再在子程序中使用全局变量,而应使用占位符。
调用子程序时,这些占位符会替换成所需的全局变量。
这些占位符称为形式参数(形参),并共同构成子程序接口。
子程序传递类型有三种:按值调用、按值和结果调用、按参考调用(1)按值调用形成实参的副本。
将此副本分配给形参。
因此,向形参所赋的任何值都只会参照实参的副本而非初始版本。
按值调用的传递类型,子程序可以使用全局变量的值(以变量副本的形式),而不会更改全局变量的值。
但是,创建副本(特别是针对较大的内表)十分耗时。
如上图所示, 按值调用( Call by V alue),使用的语法为:USING value(f1) (2)按值和结果调用按值和结果调用的适用规则与“按值调用”相同。
BAPI操作手册作者:丑儿MSN: njchouer@abap中关于bapi的介绍:1.BAPI – business application programming interface2.它实际上是一种特殊的Remote Function Modules (RFC)是为了提供使用外部程序来进行交易活动3.它提供的基于企业目标(Business Object) 技术的接口应用界面4.SAP采用了Object-oriented技术,逻辑定义了SAP R/3系统的所有功能目标,并且将所有的目标(Objects) 和BAPIs存储于企业目标库BOR(Business Objects Repository).5.SAP R/3 企业目标的目标类型(Object Type) 相当于目标设计语言中类(Class) 的概念,其定义结构由以下几部分组成:基本数据,接口界面,键(Key Fields),方法(Methods),特征(Attributes),事件(Events)如何创建BAPI程序1.定义BAPI Structure (Structure不能在BAPI中重复使用,因为一旦BAPI被释放,其Structure 被冻结)2.创建FUNCTION MODULE每个BAPI必须有自己的Function Group,Function Group属性必须为RFC3.创建Business Object4.使用BAPI WIZARD创建API Method这样BAPI可以被外部程序调用5.Function Module符合BOR Method4.释放BAPI Function Module,释放Business Object Type,释放BAPI作为BOR的一种MethodBAPI和RFC不是同一个层次上概念,不能说从字面上看到BAPI函数和RFC函数就认为他们之间有必然的联系和区别。
打个比如,问一个问题:人可以分为哪几类,答曰:男人和老人,呵~~,大家都知道,男人是基于性别来说的,老人是基于年龄的。
abap call function用法ABAP(AdvancedBusinessApplicationProgramming)是一种企业级应用程序开发语言,广泛应用于SAP系统中。
在ABAP中,我们可以通过调用函数来实现复杂的业务逻辑。
本文将介绍ABAP中call function函数的用法。
call function函数是ABAP语言中非常重要的一种函数,它可以调用其他函数或方法。
call function函数的语法如下:call function func_nameexportingparameter1 = value1parameter2 = value2importingparameter3 = value3parameter4 = value4.其中,func_name是需要调用的函数名,parameter1、parameter2是该函数所需的输入参数,value1、value2是对应的参数值。
importing子句是该函数返回的输出值,parameter3、parameter4是输出参数,value3、value4是对应的输出值。
下面是一段示例代码,演示了如何使用call function函数调用一个名为“addition”的函数,该函数将两个数相加并返回结果: data: num1 type i value 10,num2 type i value 20,result type i.call function 'addition'exportingnum1 = num1num2 = num2importingresult = result.write: / 'The result is: ', result.在上述代码中,num1和num2分别被赋值为10和20,call function函数被用来调用名为“addition”的函数,并将num1和num2作为输入参数传递给该函数。
基本数据类型REPORT(报表)报表程序的主要作用是从数据库中抓取数据通过整理陈列出来,给企业高层或具有相关需求的人员查看。
如无特殊需求,此类程序一般不需客制screen、menu、title。
A、ABAP LIST(最简单的一种报表程序,显示在屏幕上的数据及格式都通过ABAP中的WRITE语句实现,开发工具:SE38)B、ALV REPORT (The ALV Grid Control (ALV = SAP List Viewer)属于报表的一种高级形式,显示出来的报表整洁美观,具有很大的交互功能,屏幕上的数据及格式主要通过系统的FUNCTION实现,开发工具:SE38)C、SAPSCRIPT(属于商务报表,主要应用于商业用途或对外的报表设计,开发工具:SE38、SE71)D、SMARTFORM (属于商务报表,主要应用于商业用途或对外的报表设计,是SAPSCRIPT的升级版,包含了SAPSCRIPT的绝大多数功能,但开发起来比SAPSCRIPT更方便,快捷。
开发工具:SE38、SMARTFORMS)E、QUERY (适用于简单的查询报表开发,无需具有ABAP编程知识,但又提供了写ABAP代码的功能,对于一些简单的、无太多计算逻辑或判断逻辑的报表,推荐用其开发,开发工具:SQ01、SQ02、SQ03)F、REPORT PAINTER(此类报表主要应用于FICO模块,比较少用,但功能也非常强大。
)常用T-CODESAP标准的例子程序:T-CODE(ABAPDOCU)可以将事务代码分配给类型为Executable program(1)的单独程序,以后就将程序作为事务代码处理。
通过T-CODE(SE38)或者菜单(Tools->ABAP Workbench->Development->other Tools->Transactions就可以了。
用SE93 查看和创建TCODE,然后将该TCODE 加到相应的角色里就可以放到左边的菜单里了。
abaper需要知道的一些重要的tcode,使用技巧作为一个ABAP程序员,以下是一些重要的T-code和使用技巧,可以帮助你在日常工作中更高效地开发和调试ABAP代码:1. SE38:用于编辑和执行程序- 使用技巧:可以在SE38中直接输入程序名并按下Enter键来打开程序,并使用Ctrl+F8或F8来执行程序。
2. SE80:ABAP开发工具箱,包含了许多开发者工具- 使用技巧:可以使用SE80来浏览程序包、类、函数组等,并进行源代码编辑和版本管理。
3. SE11:用于创建和维护数据库表- 使用技巧:可以在SE11中创建表、修改表结构、查看表数据和创建表的维护视图。
4. SE16:用于查看和编辑表数据- 使用技巧:可以在SE16中直接输入表名,然后点击"数据浏览"按钮来查看和编辑表数据。
5. SE24:用于查看和编辑类- 使用技巧:可以在SE24中通过输入类名来查看类的定义,并进行编辑和调试。
6. SE37:用于查看和调试函数模块- 使用技巧:可以在SE37中输入函数模块名,并点击"测试函数模块"按钮来调试函数模块。
7. SE51:用于创建、编辑和维护屏幕- 使用技巧:可以在SE51中创建和修改屏幕元素,并生成屏幕的模块池逻辑。
8. SE80:用于查看和编辑数据字典对象- 使用技巧:可以在SE80中选择"字典对象"菜单来查看和编辑数据字典对象,如表、视图、数据元素等。
9. SE09:用于进行项目版本管理- 使用技巧:可以使用SE09来创建和维护SAP项目,并进行版本管理和合并。
10. ST05:用于ABAP性能分析- 使用技巧:可以在ST05中启用性能分析,并对某个事务或程序进行性能测试和优化。
希望以上信息对你有所帮助!。
T-CODEsearch-SAP_MENU KS13CS15CS12YM261KOB1KOC4CKR1KKAXKKAOKKAQCKMPCDMB31KKF1KO8GOKENNKSB1KA03CO03COOISKP27KP26CK11NCK24CKMPRPNKKS1CKMPRPCKMEKSIIKSS2CA03YM10KS03MMBEFBV0FK10NFD10NFS10NF-03FB50FB70FB60FV50FB08F-07F-28/FBZ1F-32F-30F-39FBL5NF-37F-29F-36F-53F-43FBL1NF-47F-48F-54F-44F-51S_ALR_87012936 AR03AR02AR01KO88KO03AW01NAFABABAVNAIBUAIABMB5LMB52MB51ME13KE52FS00F.01KSB5OB08F.05CK13NKS03CR03ksh3kch3SU53FK01(02,03)AS01/02/03MM01/02/03F-02F-22descriptioncost center: master data reportwhere-used listMultilevel BOMlist price differs from plant 3100display actual cost line items for orders:initial screenorder selectionreorganization of cost estimatescalculate work in process:individual processingdisplay work in process:collective processingcalculate work in process:collective processingprice change document:initial screengoods receipt for procuction ordercreat CO production orderactual settlement:orderstandard hierarchy for cost center displaydisplay actual cost line items for cost center:initial screen display cost element:initial screenproduction order display:initial screenproduction order information systemdisplay activity type/price planning :initial screenchange plan data for activity typescreat material cost estimate with quantity structureprice update :mark standard pricefuture price maintenancemaintenance of future price with conversion for all valuations release planned price changesactual price determination :CCtrsactual cost splitting :cost centersdisplay routing:initial screenvendor per materialdisplay cost center:initial screenstock overview:company code/plant/storage location/batch post parked document :initial screenvendor balance displaycustomer balance displayG/L account balance displayclear G/L account :header dataenter G/L account document:company code 0310enter customer invoice :company code 0310enter vendor invoice:company code 0310park G/L account document:company code 0310reverse document: header datapost outgoing payment:header datapost incoming payment:header dataclear customer:header datapost with clearing:header dataclear customer down payment:header datacustomer line item displaycustomer down payment request:header datapost customer down payment :header databill of exchange payment :header datapost outgoing payments :header dataenter vendor invoice:header datavendor line item displaydown payment request:header datapost vendor down payment:header dataclear vendor down payment:header dataclear vendor :header datapost with clearing:header datadepreciation simulationdepreciationasset history sheetasset balanceactual settlement :orderdisplay internal order:initial screenasset explorerdepreciation run--executeenter asset transaction:asset retirement by scrappingAUC settlement : initial screensettlement AUC:initial screenlist of stock values:balancedisplay warehouse stocks of materialmaterial document listdisplay info record:initial screenchange profit centeredit g/l account centrallyfinancial statementdisplay actual cost documentchange view"current exchange rate"For exchange rate difference, you can run the exchange rate valuation by F.05. display material cost estimate with quantitydisplay cost center:initial screendisplay work center: basic datadisplay standard hierarchy(profit center group)display standard hierarchy(cost center group)display authorization data for user U247974creat(change,display) vendor:initial screencreat/change display asset:initial screencreat/change display material:initial screenenter g/l account posting:header dataenter CUSTOMER INVOICE:header data用法类别查询T-CODE 的路径G/L account成本中心主数据cost center查询某一物料的母相material查物料的子项material两个工厂下物料的价格差异material内部订单实际发生的明细internal order 订单实际发生金额internal order 删除某个物料的BOM material单个订单的在制品结转production cost 批量订单的在制品结转production cost 批量显示订单的在制品金额production cost 查询价格更改凭证material订单完工收货production cost 建立生产订单、结算规则production cost 内部订单结算internal order 成本中心层次显示cost center成本中心实际发生明细cost center显示成本要素主数据cost center查看生产订单production cost 批量查看生产订单production cost 查看成本中心的人工费单价production cost 维护作业类型价格production cost 创建物料BOM--成本估算material标准价格发布material维护未来价格materialmaterial更新计划价格material实际作业价格计算material根据作业类型执行分割material显示工艺流程production cost 查询每个物料的供应商报价material显示成本中心主数据cost center查询某一物料的存货material预制凭证过账G/L account供应商的借贷明细vendor客户的借贷明细customer总账的借贷明细G/L accountG/L accountG/L accountcustomervendorG/L account单个冲销凭证G/L accountG/L account收到客户货款customercustomercustomercustomer客户交易明细customer客户预收款请求customer客户预收款过账customercustomer付款vendorvendor客户明细vendor预付款请求vendor预付款过账vendor预付款清账vendor供应商清账vendorvendor折旧预测assetassetassetasset单个订单结转?asset查询内部订单asset单个资产报表----AS03下的value asset折旧计提assetasset在建工程结转固定资产asset在建工程分配assetmaterial显示物料库存material物料凭证列表material查询供应商报价vendor修改利润中心profit center查看科目的中英文对照G/L account查看资产负债表G/L account显示成本凭证cost center外汇汇率维护G/L accountG/L account物料的成本估算(BOM)production cost 查看某一成本中心cost center查看某一工作中心production cost 利润组的层次profit center成本组的层次cost center个人权限G/L account供应商主数据查询vendor资产主数据asset物料主数据material过总账,做凭证G/L account过客户帐,做凭证customer。
function功能介绍
函数是编程中非常重要的概念,它是一段可重复使用的代码块,用于执行特定的任务或计算特定的值。
函数可以接受输入参数,执
行特定的操作,并返回一个值。
在程序中使用函数可以使代码模块化、可读性更强、易于维护和重用。
首先,函数可以用来封装特定的功能。
通过将一系列操作封装
在函数内部,我们可以将这些操作视为一个整体,从而提高代码的
可读性和可维护性。
例如,我们可以编写一个函数来计算两个数的和,然后在程序的其他地方多次调用这个函数,而不需要重复编写
相同的代码。
其次,函数可以接受参数。
这意味着函数可以根据输入的不同
参数执行不同的操作或返回不同的值。
参数可以是任何数据类型,
包括数字、字符串、列表等。
通过使用参数,函数可以更灵活地适
应不同的情况。
另外,函数可以返回值。
当函数执行完特定的操作后,它可以
返回一个计算得到的值。
这使得函数可以作为一个计算单元,用于
生成特定的结果。
返回值可以是任何数据类型,甚至是另一个函数。
此外,函数还可以嵌套调用。
这意味着一个函数内部可以调用另一个函数,从而实现更复杂的功能。
函数的嵌套调用可以帮助我们将复杂的问题分解为更小的子问题,从而更容易理解和解决。
总之,函数在编程中扮演着非常重要的角色,它们可以帮助我们将代码模块化、提高可读性和可维护性,同时也可以实现更复杂的功能和逻辑。
掌握函数的使用对于编写高效、可靠的程序至关重要。
abap 类和方法的创建使用教程ABAP(Advanced Business Application Programming)是一种用于SAP系统开发的编程语言,它的主要特点是使用面向对象的编程范式。
在ABAP中,类和方法是实现面向对象编程的基本组成部分。
本文将介绍如何创建和使用ABAP类和方法。
一、ABAP类的创建和使用在ABAP中,类是对象的模板,用于定义对象的属性和行为。
创建类的步骤如下:1. 打开ABAP开发工具(如SE80),选择“类”作为对象类型,点击“创建”按钮。
2. 在弹出的对话框中,输入类的名称和描述信息,并选择合适的包。
点击“确定”按钮。
3. 在类的定义中,可以定义类的属性和方法。
属性用于存储对象的状态信息,方法用于定义对象的行为。
4. 定义属性:在类的定义中,使用关键字“DATA”定义属性,并指定属性的名称和数据类型。
例如:DATA lv_name TYPE string.5. 定义方法:在类的定义中,使用关键字“METHODS”定义方法,并指定方法的名称和参数。
例如:METHODS display_name IMPORTING iv_name TYPE string.6. 实现方法:在类的定义结束后,可以为方法添加具体的实现。
在方法的实现中,可以使用关键字“WRITE”将数据输出到屏幕。
7. 保存类的定义并激活。
使用ABAP类的步骤如下:1. 创建类的实例:在ABAP程序中,使用关键字“CREATE OBJECT”创建类的实例。
例如:CREATE OBJECT lo_class.2. 访问属性:使用箭头操作符“->”访问类的属性。
例如:lo_class->lv_name = 'Tom'.3. 调用方法:使用箭头操作符“->”调用类的方法。
例如:lo_class->display_name( 'Tom' ).二、ABAP方法的创建和使用在ABAP中,方法是类的行为,用于执行特定的操作。
ABAP程序、增强开发逻辑⼀、创建报表(TCODE:SE80)1、确定报表的输⼊和输出字段2、了解前台操作,找到开发时需要⽤到的字段(⽅法:F1帮助;通过相关⽂档查询数据库表;ST05跟踪;/H跟踪SAP标准程序)3、根据输⼊字段确定报表逻辑流4、确定逻辑流后写出代码程序初稿5、进⾏测试6、数据没有问题则进⾏翻译和分配TCODE7、若测试后数据不正确,回到数据库表中查看是否取数错误或有逻辑运算处出错8、修改错误并翻译和分配TCODE⼆、修改已存在报表(TCODE:SE80或SE38)1、了解报表的基本逻辑流(⽅法:设置断点跟踪)2、找到出错的字段值或内表处3、根据出错处倒查报表逻辑在哪⾥出现问题4、修正错误三、WORKFLOW开发(TCODE:SE80,SWDD,SWU3,PPOMW)1、必须现在SWU3中定义Prefix number,否则WF不能在SWDD编辑器中激活2、了解WORKFLOW的程序代码的逻辑(⽅法:使⽤断点跟踪)3、根据已制定的业务来画出⼯作流的初稿4、进⼊SWDD⼯作流编辑器5、逻辑流中ACTIVITY查看每⼀步之中的TASK字段(在这中含有和此个ACTIVITY的具体执⾏事件),再检查AGENTS处,此处表明由哪些⼈员或群组执⾏此个ACTIVITY6、根据已定的业务流程画出业务中循环,条件的⼯作流步骤,并根据需求,将⼯作流程序的OBJECT中字段赋给循环和条件步骤的参数7、进⾏⼯作流测试,可在SWDD中直接进⾏执⾏测试8、若测试没有问题,创建⼯作流的开始点(触发点),通常,此处会与⼯作流程序的代码相对应,函数是:SWE_EVENT_CREATE9、进⾏测试10、测试没有问题后,使⽤TCODE:PPOMW 定义ACTIVITY的⾓⾊和⼈物四、BAPI和FUNCTION(TCODE:SE37,BAPI)BAPI和FUNCTION类似与普通程序的PERFORM,不同之处在于,BAPI和FUNTION已经被封装好,有独⽴和标准的输⼊输出1、寻找BAPI和FUNCTION,可以使⽤SE37中输⼊“*函数名*”来寻找或者直接在⽹上搜索相关的函数2、找到函数后,先查看他的IMPORT,了解函数的输⼊设置和每⼀个输⼊字段的意思3、查看完输⼊流的字段后,进⼊EXPORT和TABLES两个选项,⼀般输出时使⽤内表较多,所以TABLES选项需要查看更为仔细4、在SE37中点击运⾏进⾏测试,将预先找到的输⼊值填⼊相应的字段,运⾏,查看结果,如果结果和在SAP系统标准TCODE中有差异,则回到输⼊状态,检查输⼊值是否填错;也可以在已开发程序或标准程序中跟踪查看被调⽤函数的输⼊情况进⾏更改5、在⾃定义的程序中定义完输⼊输出值进⾏系统测试6、部分BAPI或FUNCTION可能不能被连续调⽤,之间可以加上WAIT语句进⾏等待五、ENHANCEMENT开发(TCODE:CMOD,SMOD,SE37)1、了解业务需求,知道是需要编写的是增强中的哪⼀种开发(菜单出⼝,屏幕出⼝,功能模块出⼝,关键字出⼝)2、根据需求通过MODX_FUNCTION_ACTIVE_CHECK函数中设置断点查看到已经存在的⽤户出⼝(增强);也可根据现在《SAP出⼝(增强)》⽂档进⾏查找⽤户所需要的出⼝增强3、找到增强以后,进⼊CMOD创建⼀个PROJECT,并把增强分配到创建的PROJECT中,再使⽤部件组,填⼊函数的出⼝名,并双击函数进⼊SE37界⾯进⾏增强代码的编写4、若通过⽂档直接找到了出⼝名称(USER EXIT),则可在CMOD中填⼊名称,查看到⽤户出⼝下的所有增强,选中需要的增强函数进⾏代码的编写六IDOC开发IDOC是⼀种类似XML的SAP系统与SAP系统或其他系统之间相互传递消息的⼯具1、设置IDOC类型WE31创建SEGMENT(类似XML的结点属性),WE30创建IDOC类型(定义结点之间的关系)2、创建消息类型(MESSAGE TYPE)WE81创建消息类型,WE82关联消息类型和IDOC类型3、创建对⽅的端⼝⾸先需要确定系统内已有R/3的连接,可⽤SM59进⾏检查和添加4、创建逻辑系统使⽤TCODE:SALE创建和分配逻辑系统(这将和后来的公司间传递⽤到的PARTNER有关)5、使⽤WE20定义需要传输的PARTNER PROFILE,并未每个PARTNER定义好INBOUND数据或者OUTBOUND数据的消息类型6、同时,为INBOUND和OUTBOUND的输⼊输出数据进⾏配置IDOC传输时的逻辑(如VOE4定义销售INBOUND的配置和VOE2定义转换成销售单后的基本销售区域等值)7、当配置都完成后,使⽤SAP增强,则根据<<SPAN style="FONT-FAMILY: 宋体">五、ENHANCEMENT增强>中查找增强并进⾏代码的编写七、BADI开发(TCODE:SE18,SE19)BADI对象的信息⼀般存储在SXS_INTER,SXC_EXIT,SXC_CLASS和SXC_ATTR这四个表⾥,SAP程序使⽤CL_EXITHANDLER=>GET INSTANCE来判断BADI对象是否存在(GET INSTANCE就是对上⾯四张表的视图V_EXT_IMP和V_EXT_ACT)进⾏查询和搜索1、BADI的寻找,先⽤SE38进⼊标准程序,全局搜索CL_EXITHANDLER,可以找到BADI相关的值(即可能需要⽤到的BADI),也可以通过SPRO中的帮助⽂档进⾏查找2、找到BADI后,使⽤SE18创建增强点(ENHANCEMENT SPOT)3、在创建'增强点元素定义'中创建'BADI DEFINITION和相对应的描述',4、并未BADI的接⼝创建描述5、创建完接⼝之后,为BADI创建METHODS事件,并为METHODS事件创建传输值(以上步骤即为BADI的定义,均可在SE18中定义完成)6、进⼊SE19,为刚刚创建的BADI增强点创建BADI的执⾏(Enhancement Implementation),创建完保存后,回到SE18中,能够看到BADI的Implementation已经被创建完成7、为BADI Implementation创建执⾏类,如正确,则能在实例类中看到刚刚在METHODS创建的输⼊数据,双击执⾏类中的MOTHODS,便进⼊了BADI的代码增强界⾯,在这之中输⼊需要增加的代码即可。
ABAP学习(10):ALV显⽰之functionalvABAP的ALV1、Function ALV调⽤function,传⼊要显⽰的内表,显⽰样式等参数,显⽰alv。
可以调⽤REUSE_ALV_GRID_DISPLAY这个function,也可以调⽤REUSE_ALV_GRID_DISPLAY_LVC这个function,输⼊的参数⼀致,但是⼀些细节传⼊参数类型不同。
REUSE_ALV_GRID_DISPLAY调⽤⽰例:"调⽤function,显⽰alvCALL FUNCTION'REUSE_ALV_GRID_DISPLAY'* EXPORTING* I_INTERFACE_CHECK = ' '* I_BYPASSING_BUFFER = ' '* I_BUFFER_ACTIVE = ' '* I_CALLBACK_PROGRAM = ' '* I_CALLBACK_PF_STATUS_SET = ' '* I_CALLBACK_USER_COMMAND = ' '* I_CALLBACK_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_END_OF_LIST = ' '* I_STRUCTURE_NAME =* I_BACKGROUND_ID = ' '* I_GRID_TITLE =* I_GRID_SETTINGS =* IS_LAYOUT =* IT_FIELDCAT =* IT_EXCLUDING =* IT_SPECIAL_GROUPS =* IT_SORT =* IT_FILTER =* IS_SEL_HIDE =* I_DEFAULT = 'X'* I_SAVE = ' '* IS_VARIANT =* IT_EVENTS =* IT_EVENT_EXIT =* IS_PRINT =* IS_REPREP_ID =* I_SCREEN_START_COLUMN = 0* I_SCREEN_START_LINE = 0* I_SCREEN_END_COLUMN = 0* I_SCREEN_END_LINE = 0* I_HTML_HEIGHT_TOP = 0* I_HTML_HEIGHT_END = 0* IT_ALV_GRAPHICS =* IT_HYPERLINK =* IT_ADD_FIELDCAT =* IT_EXCEPT_QINFO =* IR_SALV_FULLSCREEN_ADAPTER =* IMPORTING* E_EXIT_CAUSED_BY_CALLER =* ES_EXIT_CAUSED_BY_USER =TABLEST_OUTTAB = t_outtab EXCEPTIONSPROGRAM_ERROR = 1OTHERS = 2.View CodeREUSE_ALV_GRID_DISPLAY_LVC调⽤⽰例:CALL FUNCTION'REUSE_ALV_GRID_DISPLAY_LVC'* EXPORTING* I_INTERFACE_CHECK = ' '* I_BYPASSING_BUFFER =* I_BUFFER_ACTIVE =* I_CALLBACK_PROGRAM = ' '* I_CALLBACK_PF_STATUS_SET = ' '* I_CALLBACK_USER_COMMAND = ' '* I_CALLBACK_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_TOP_OF_PAGE = ' '* I_CALLBACK_HTML_END_OF_LIST = ' '* I_STRUCTURE_NAME =* I_BACKGROUND_ID = ' '* I_GRID_TITLE =* I_GRID_SETTINGS =* IS_LAYOUT_LVC =* IT_FIELDCAT_LVC =* IT_EXCLUDING =* IT_SPECIAL_GROUPS_LVC =* IT_SORT_LVC =* IT_FILTER_LVC =* IT_HYPERLINK =* IS_SEL_HIDE =* I_DEFAULT = 'X'* I_SAVE = ' '* IS_VARIANT =* IT_EVENTS =* IT_EVENT_EXIT =* IS_PRINT_LVC =* IS_REPREP_ID_LVC =* I_SCREEN_START_COLUMN = 0* I_SCREEN_START_LINE = 0* I_SCREEN_END_COLUMN = 0* I_SCREEN_END_LINE = 0* I_HTML_HEIGHT_TOP =* I_HTML_HEIGHT_END =* IT_ALV_GRAPHICS =* IT_EXCEPT_QINFO_LVC =* IR_SALV_FULLSCREEN_ADAPTER =* I_YCBN =* IMPORTING* E_EXIT_CAUSED_BY_CALLER =* ES_EXIT_CAUSED_BY_USER =TABLEST_OUTTAB = t_outtabEXCEPTIONSPROGRAM_ERROR = 1OTHERS = 2.View Code1.1、Function参数解析I_INTERFACE_CHECK:检查接⼝⼀致性,默认Space;I_BYPASSING_BUFFER:是否使⽤缓存buffer,类型:字符型1;I_BUFFER_ACTIVE:是否激活缓存;I_CALLBACK_PROGRAM:调⽤alv程序名,⼀般就是当前程序,sy-repid,类型:sy-repid,默认Space;I_CALLBACK_PF_STATUS_SET:ALV⼯具栏Subroutine, ALV屏幕菜单,此参数允许报表展现⽤户⾃定义的屏幕菜单,类型:SLIS_FORMNAME,默认Space,I_CALLBACK_USER_COMMAND:ALV user Command Subroutine(⼦程序),类型:SLIS_FORMNAME,默认Space;I_CALLBACK_TOP_OF_PAGE:ALV抬头内容信息,类型:SLIS_FORMNAME,默认Space;I_CALLBACK_HTML_TOP_OF_PAGE:ALV HTML格式抬头内容信息,类型:SLIS_FORMNAME,默认Space;I_CALLBACK_HTML_END_OF_LIST:ALV HTML格式页脚内容信息,类型:SLIS_FORMNAME,默认Space;I_STRUCTURE_NAME:为输出表数据结构的命名,类型:DD02L-TABNAME;I_BACKGROUND_ID:ALV背景图⽚Object ID,类型:SDYDO_KEY,默认Space;I_GRID_TITLE: ALV 标题,类型:LVC_TITLE;I_GRID_SETTINGS:GRID设置信息,类型:LVC_S_GLAY;IS_LAYOUT_LVC:ALV输出布局样式,类型:LVC_S_LAYO;IT_FIELDCAT_LVC:设定显⽰的栏位名称及输出设定,类型:LVC_T_FCAT;IT_EXCLUDING:隐藏设置的ALV⼯具栏,未激活的功能码,类型:SLIS_T_EXTAB;IT_SPECIAL_GROUPS_LVC:若内表中⼀些字段通过SP_GROUP被分组在⼀起,必须为这些组传递组⽂本内表,类型:LVC_T_SGRP;IT_SORT_LVC:ALV排序,类型:LVC_T_SORT;IT_FILTER_LVC:ALV过滤器,类型:LVC_T_FILT;IT_HYPERLINK:超链接,类型:LVC_T_HYPE;IS_SEL_HIDE:替换或修改屏幕中select-option的值,类型:SLIS_SEL_HIDE_ALV;I_DEFAULT:⽤户是否可以定义默认布局,Space-不可以定义默认布局(默认:X);I_SAVE: 保存表格布局,’X'-只能保存全局变式;’U'-只能保存特定变式;’A'-都可以保存;Space-不能保存变式(默认:space);IS_VARIANT:表格布局变式,类型:DISVARIANT;IT_EVENTS:设置事件,类型为slis_t_event的内表(name:事件名称,form:事件的FORM),类型:SLIS_T_EVENT;IT_EVENT_EXIT:设置回调的⽅法的执⾏⾏为,表明⽤户所写的代码是在执⾏标准执⾏之前还是之后,类型:SLIS_T_EVENT_EXIT;IS_PRINT_LVC:打印信息,类型:LVC_S_PRNT;IS_REPREP_ID_LVC:re/re接⼝初始化信息,类型:LVC_S_RPRP;I_SCREEN_START_COLUMN:对话框形式显⽰开始列,默认:0;I_SCREEN_START_LINE:对话框形式显⽰开始⾏,默认:0;I_SCREEN_END_COLUMN:对话框形式显⽰结束列,默认:0;I_SCREEN_END_LINE:对话框形式显⽰结束⾏,默认:0;I_HTML_HEIGHT_TOP:HTML抬头的⾼度,类型:I;I_HTML_HEIGHT_END: HTML页脚的⾼度,类型:I;IT_ALV_GRAPHICS:是否可以在图表中显⽰ALV,类型:DTC_T_TC;IT_EXCEPT_QINFO_LVC:Exception的信息,类型:SLIS_T_QINFO_ALV;IR_SALV_FULLSCREEN_ADAPTER:类型:CL_SALV_FULLSCREEN_ADAPTER;I_YCBN:类型:char1;1.2、⾃定义屏幕菜单使⽤I_CALLBACK_PF_STATUS_SET参数,可以设置⾃定义屏幕菜单。
stad 可以查到6天内所有的日志DD01V 可以查询数据元素CMOD SAP增强DB15 表格和存档对象DB2 数据库状态OS01 可以查到当前连接的电脑名称OS03 操作系统的参数改变OS04 本的系统配置OS05 远程系统配置OS06 本地系统监视器OS07 远程系统监视器OSS1 登陆到OSSSE13 维护技术设置SM21 系统日志,本地分析SM02 系统消息SM01 事务代码系统管理SM28 安装检查SMLT 语言管理USMM 系统测量SARA 数据归档LICENSE_ADMIN 合并系统测量SM59 RFC目的地SM5E TXCOM维护SM55 THOST维持SICF HTTP服务层次结构维护SCC4 集团建立SCCL 本地集团复制SCC9 远程集团复制SCC1 复制传送请求SCC5 删除集团SCC3 复制日志SCC8 集团输出SCC7 输入编辑SCU0 跨系统查看器SCMP 对象比较SM50 进程概蓝SM51 服务器SM04 用户概蓝SMGW 网关接控器SMICM INTERNET 通讯管理员SM13 更新SM35 批输入SM58 事务性RFCST05 执行跟中ST01 系统轨迹ST11 开发者轨迹SSAA 系统管理助手SU56 用户缓冲区SM56 数字范围缓冲区SM12 锁定条目ST22 转储分析SM19 配置SM20 分析SM18 重新组织SU01 用户SU01D 显示用户SU10 用户批维护SUGR 维护用户组SUCOMP 公司地址file 设定论理路经AL11 查看服务器文件slg1 可以查到某用户的日志文件先写到这里.以后再写.login/system_client 650保存后,重启SAP服务就生效。
要限制同一个帐号同一时间只能在一台机器上登陆,不能同时在多台机器上使用,系统参数是什么? login/disable_multi_gui_login1.增加参数rdisp/gui_auto_logout = 02.表USR41可以看到用户登陆时间的长度3.写个批处理,可以每次用这个来启动SAP服务startsap name=T01 nr=00 SAPHOST=jpzx014.rdisp/max_alt_modes 设置启动多少个画面。
1、创建FUNCTION实现标准T-CODE功能目的:为了在自定义程序中实现标准程序的功能。
处理逻辑:通过T-CODE(SHDB)将标准程序生成自定义FUNCTION,并在自定义程序中调用该FUNCTION来实现。
1.1 SHDB创建信息记录1、T-CODE:SHDB,点击“新建记录”(如果有错误提示,根据提示完善输入),如图1.1-1:图1.1-12、图1.1-1中点击“新建记录”后弹出创建记录窗口,如图1.1-2:图1.1-23、图1.1-2中输入记录号,事务代码,然后点击“开始记录”,进入到对应T-CODE 的业务操作界面,如图1.1-3:图1.1-34、图1.1-3中进行业务操作,输入必要字段,具体根据业务操作而定,本练习就“创建转储单”进行操作,输入完图中的数据后敲回车键,进入转储单创建界面,如图1.1.-4:图1.1-45、图1.1-4中输入移动数据的源仓位信息、目标仓位信息,然后回车,完成记录的录入,进入到记录处理界面,如图1.1-5:图1.1-56、图1.1-5中检查数据,然后点击“处理”进行转储单生成,如图1.1.-6:图1.1-67、图1.1-6中点击“执行”,进入到创建转储单的自动处理界面,如图1.1-7:图1.1-7说明:a、创建记录的过程中,自动完成执行操作的OK-Code为“/00”。
8、图1.1-7中在弹出OK-Code确认界面是点击“执行”,直到完成记录的处理,弹出处理后的信息,如图1.1-8:图1.1-8如图1.1-8中可见,生成了转储单0000000299。
即完成了记录的创建,该记录号为:12-QID。
1.2 SHDB创建新程序1、T-CODE:SHDB,查询1.1中创建的记录(12),如图1.2-1:图1.2-12、图1.2-1中选中记录12(因为记录可重复,所以需要检查后面的创建者、日期、时间等信息,确保正确选择记录),然后点击“程序”,如图1.2-2:图1.2-23、在弹出的程序创建界面输入程序名称,然后点击“执行”,如图1.2-3:图1.2-34、选择程序类型,然后回车,如图1.2-4:图1.2-45、如图1.2-4,完成了程序的创建后,点击图中的“源代码”按钮,显示新建程序的代码,如下:report Z_BAPI_LT01no standard page heading line-size 255.include bdcrecx1."因为在后面创建函数时不需要用到该包含文件,所以其中的代码不展示parameters: dataset(132) lower case.*** DO NOT CHANGE - the generated data section - DO NOT CHANGE ***** If it is nessesary to change the data section use the rules:* 1.) Each definition of a field exists of two lines* 2.) The first line shows exactly the comment* '* data element: ' followed with the data element* which describes the field.* If you don't have a data element use the* comment without a data element name* 3.) The second line shows the fieldname of the* structure, the fieldname must consist of* a fieldname and optional the character '_' and* three numbers and the field length in brackets* 4.) Each field must be type C.**** Generated data section with specific formatting - DO NOT CHANGE ***data: begin of record,* data element: LGNUMLGNUM_001(003),* data element: BWLVSBWLVS_002(003),* data element: MATNRMATNR_003(018),* data element: RL03TANFMEANFME_004(017),* data element: WERKS_DWERKS_005(004),* data element: LGORT_DLGORT_006(004),* data element: CHARG_DCHARG_007(010),* data element: RL03TANFMEANFME_008(017),* data element: LRMEIALTME_009(003),* data element: RL03TSQUITSQUIT_010(001),* data element: LTAP_VLTYPVLTYP_011(003),* data element: LTAP_VLBERVLBER_012(003),* data element: LTAP_VLPLAVLPLA_013(010),* data element: LTAP_NLTYPNLTYP_014(003),* data element: LTAP_NLBERNLBER_015(003),* data element: LTAP_NLPLANLPLA_016(010),end of record.*** End generated data section ***start-of-selection."------------如下部分为在创建函数时做参考 BEGIIN perform open_dataset using dataset.perform open_group.do.read dataset dataset into record.if sy-subrc <> 0. exit. endif.perform bdc_dynpro using 'SAPML03T' '0101'. perform bdc_field using 'BDC_CURSOR''LTAP-CHARG'. perform bdc_field using 'BDC_OKCODE''/00'.perform bdc_field using 'LTAK-LGNUM'record-LGNUM_001. perform bdc_field using 'LTAK-BWLVS'record-BWLVS_002. perform bdc_field using 'LTAP-MATNR'record-MATNR_003. perform bdc_field using 'RL03T-ANFME'record-ANFME_004. perform bdc_field using 'LTAP-WERKS'record-WERKS_005. perform bdc_field using 'LTAP-LGORT'record-LGORT_006. perform bdc_field using 'LTAP-CHARG'record-CHARG_007. perform bdc_dynpro using 'SAPML03T' '0102'. perform bdc_field using 'BDC_CURSOR''LTAP-NLPLA'. perform bdc_field using 'BDC_OKCODE''/00'.perform bdc_field using 'RL03T-ANFME'record-ANFME_008. perform bdc_field using 'LTAP-ALTME'record-ALTME_009. perform bdc_field using 'RL03T-SQUIT'record-SQUIT_010. perform bdc_field using 'LTAP-VLTYP'record-VLTYP_011. perform bdc_field using 'LTAP-VLBER'record-VLBER_012.perform bdc_field using 'LTAP-VLPLA'record-VLPLA_013.perform bdc_field using 'LTAP-NLTYP'record-NLTYP_014.perform bdc_field using 'LTAP-NLBER'record-NLBER_015.perform bdc_field using 'LTAP-NLPLA'record-NLPLA_016.perform bdc_transaction using 'LT01'.enddo.perform close_group.perform close_dataset using dataset."------------如下部分为在创建函数时做参考 END1.3 SE37创建FUNCTION1、T-CODE:SE37,创建函数“Z_BAPI_LT01”,如图1.3-1和1.3-2:图1.3-1图1.3-22、图1.3-2中点击“保存”,进入函数构建器界面,在导入页签中,添加传入的参数,如图1.3-3:图1.3-3注意:a、缺省值部分在正式使用前需要清空,这里填上是为了测试方便;b、图1.3-3中的字段为LT01业务操作锁需要的字段,具体根据实际业务进行定义。
3、图1.3-3中定义完自定义参数后,需要定义几个标准的参数,并维护缺省值,这些参数会在函数的代码部分使用到,具体参数如图1.3-4:图1.3-4注意:a、缺省值部分需要按图中显示进行设置,否则会出错。