ABAP开发逻辑
一、创建报表(TCODE:SE80)
1、确定报表的输入和输出字段
2、了解前台操作,找到开发时需要用到的字段(方法:F1帮助;通过相关文档查询数据库表;ST05跟踪;/H跟踪SAP标准程序)
3、根据输入字段确定报表逻辑流
4、确定逻辑流后写出代码程序初稿
5、进行测试
6、数据没有问题则进行翻译和分配TCODE
7、若测试后数据不正确,回到数据库表中查看是否取数错误或有逻辑运算处出错
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处,此处表明由哪些人员或群组执行此个ACTIVITY
6、根据已定的业务流程画出业务中循环,条件的工作流步骤,并根据需求,将工作流程序的OBJECT中字段赋给循环和条件步骤的参数
7、进行工作流测试,可在SWDD中直接进行执行测试
8、若测试没有问题,创建工作流的开始点(触发点),通常,此处会与工作流程序的代码相对应,函数是:SWE_EVENT_CREATE
9、进行测试
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增强,则根据<五、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的代码增强界面,在这之中输入需要增加的代码即可。
8、最后使用程序调用BADI,如有问题,可在BADI和程序中加入断点进行调试跟踪