batch.doc_第1页
batch.doc_第2页
batch.doc_第3页
batch.doc_第4页
batch.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BAPI(business application programming interface)是面向对象程序设计方法中的一组程序接口。它允许程序员通过SAP将第三方软件整合成R/3专有产品。为了完成一些特殊的商业任务,如上传交易数据等,R/3系统中内置了BAPI。ABAP中有关BAPI的介绍1.BAPI business application programming interface2.它实际上是一种特殊的Remote Function Modules (RFC)是为了提供使用外部程序来进行交易活动3.它提供的基于企业目标(Business Object) 技术的接口应用界面 4.SAP采用了Object-oriented技术,逻辑定义了SAP R/3系统的所有功能目标,并且将所有的目标(Objects) 和BAPIs存储于企业对象库(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. 3.创建Business Object4. 4.使用BAPI WIZARD创建API Method这样BAPI可以被外部程序调用5. 5.Function Module符合BOR Method4.释放BAPI Function Module,释放Business Object Type,释放BAPI作为BOR的一种Method-02SAP BAPI的简单实现步骤文章分类:综合技术ABAP中有关BAPI的介绍 1.BAPI business application programming interface 2.它实际上是一种特殊的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属性必须为RFC 3.创建Business Object 4.使用BAPI WIZARD创建API Method 这样BAPI可以被外部程序调用 5.Function Module符合BOR Method 4.释放BAPI Function Module, 释放Business Object Type, 释放BAPI作为BOR的一种Method BAPI的简单实现步骤(转) 一,创建Function Module 1,在SE11,创建需要的structure 2,在SE80,建Function group 3,在SE37,创建Function Module Note:一个Function Group只能包含一个BAPI;参数传值;必须有有一个BAPIRETURN类型的EXPORT参数 二,封装 1,在SWO1,建Object Type 2,把Function Module作为一个Method加入,utilities-API Methods-Add Method 3,release Object和Module。使在BAPI Browser 中可以看到。也就是外部能够调用。 三,调用 1,如在另一系统中用ABAP调用,先在SM59中建RFC联到有BAPI的R/3,(ZGOGO) 在SE38的程序中调用,Call Function ZBAPIXXXXX DESTINATION ZGOGO EXPORTING . 2,如用JAVA调用 引入包;(不一定要用IBM的) import com.sap.rfc.*; import com.sap.rfc.exception.*; import com.ibm.sap.bapi.*; import com.ibm.sap.bapi.generated.*; 建立连接;调用。(See CALL_BAPI.java) Batch Input(批导入)Batch Input是一种数据批量输入SAP系统的辅助程序, SAP系统的资料、格式可以通过Batch Input录入SAP系统Batch Input的机制是模拟事务处理将数据录入R/3系统Batch Input类似SAP的CATT,控制性更好,处理能力更强 1、首先我们需要把需要批导入事务的操作步骤记录下来,可以用T-CODE “SHDB”来记录。在COMMAND LINE中输入“SHDB”2、进入TRANSACTION RECORDER界面3、点“NEW RECORDER”创建一个记录,现在以修改订单为例,键入记录名“ZAMAO”,输入事务代码“VA02”,然后“START RECORDING”。4、下面的任务就是记录下修改订单的操作步骤。5、填入订单号码,按确定6、现在来增加一下订单的PO DATE。7、填入“2006.10.01”,点“保存”。8、这样就完成了一个最最简单的BDC录取工作,录完之后会出现系统运行的操作的跟踪,包括程序号,屏幕号,字段名,值等等,下面的任务是根据这些写到程序里面以完成SAP自动跑订单修改的这一动作。9、首先必须定义BDC变量:* BDC tableDATA: t_bdc LIKE bdcdata OCCURS 0 WITH HEADER LINE, t_bdcmsg LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.DATA: BEGIN OF t_log OCCURS 0, information(289) TYPE c, 返回信息 END OF t_log.DATA: v_mode TYPE c VALUE N.其中TABLE t_bdc 中记录的具体的操作步骤,而TABLE t_bdcmsg是记录系统返回的信息,成功与否都记录到自定义的信息表t_log中。先写个记录BDC的函数: FORM fm_set_bdc TABLES t_bdc STRUCTURE bdcdataUSING u_sign TYPE cu_par1u_par2.CLEAR: t_bdc.IF u_sign = X. t_bdc-program = u_par1. t_bdc-dynpro = u_par2. t_bdc-dynbegin = u_sign.ELSE. t_bdc-fnam = u_par1. t_bdc-fval = u_par2.ENDIF.APPEND t_bdc.ENDFORM. 然后写入T_bdc: PERFORM fm_set_bdc: TABLES t_bdc USING X SAPMV45A 0102, TABLES t_bdc USING BDC_OKCODE /00, TABLES t_bdc USING VBAK-VBELN it_display-vbeln, TABLES t_bdc USING X SAPMV45A 4001, TABLES t_bdc USING VBKD-BSTDK 2006.10.01.因为此处是修改操作,所以要切记写入的只是你修改的数据,千万别把订单本来的数据也写入t_bdc,如果写入则会把需要修改的所有订单都该成举例的订单的数据,而我们需要修改的仅仅是增加一个PO DATE “2006.10.01”。然后是调用事物代码: CALL TRANSACTION VA42 USING t_bdc MODE v_mode Background performance UPDATE S local updata MESSAGES INTO t_bdcmsg. all message tablev_mode是显示模式:“A”表示显示每一步操作步骤,“N”表示不显示步骤,“E”表示当出现错误的时候显示出错的位置。系统信息写入到t_bdc中。最后是收集系统信息(成功与否,要是失败,失败的原因)并输出到SAP程序屏幕 READ TABLE t_bdcmsg WITH KEY msgtyp = S msgid = V1 msgnr = 311. 批导入成功的标志,可以自己debug表t_bdcmsg中去找.IF sy-subrc EQ 0. CONCATENATE 订单号码: it_display-vbeln ,项目号: it_display-posnr 修改成功 INTO t_log. APPEND t_log. CLEAR t_log.ELSE.LOOP AT t_bdcmsg. IF t_bdcmsg-msgtyp = E OR t_bdcmsg-msgv1 OR t_bdcmsg-msgv2 OR t_bdcmsg-msgv3 OR t_bdcmsg-msgv4 .MESSAGE ID t_bdcmsg-msgid “收集错误信息,并写入自定义的表t_log中。 TYPE S NUMBER t_bdcmsg-msgnr WITH t_bdcmsg-msgv1 t_bdcmsg-msgv2 t_bdcmsg-msgv3 t_bdcmsg-msgv4 INTO t_log-information.CONCATENATE 订单号码: it_display-vbeln ,项目号: SAP学习日志-ALV的创建abap之alv笔记1)ALV是系统的一种网格的显示方式,这种方式带有汇总排序筛选等功能,ALV格式的数据是以单元格为单位显示,便于数据导 出来放在电子表格里进行加工 . slis_t_fieldcat_alv是表内字段的整体,slis_fieldcat_alv是某一个字段的内容 ,将字段的内容写到 slis_fieldcat_alv中,然后append到slis_t_fieldcat_alv。 slis_fieldcat_alv中的部分字段及意义:fieldname是对应内表中哪个字段,必须。seltext_s/m/l是标题的名字,(一个即可)必须。col_pos表示所在位置,是第一列还是第二列。intlen表示可以筛选的长度,如果不输得话有可能在筛选的时候显示不够长。 hotsot = x表示可以点它来显示次表。文章分类:JavaEyeALV grid control 是当前比较流行的交互式报表 interactive report. 其中包含了很多功能,比如说:排序, 算总值, 格式定义 等等. 而且ALV的报表开发相对简单,而且美观程度也相对于传统报表 traditional report 有了很大的提高. 在ALV的设计中要包含以下几点. 1.从数据库取数据 Get data 2.对ALV的报表布局进行设计 Build ALV layout 3.对ALV的列属性进行设计 Create Fieldcat 4.将ALV报表显示出来 Display ALV 全局类型(Type pool) slis 在程序的最开始,需要引用Type pool slis.里面存放了很多关于ALV的类型.以下是几个常用的类型. 1.slis_layout_alv 结构体类型,主要存放ALV布局信息 2.slis_t_fieldcat_alv 内表类型,主要存放标题列信息 3.slis_fieldcat_alv 结构体类型,与slis_t_fieldcat_alv行结构类型相同 4.slis_t_event 内表类型,存放ALV中触发的事件 5.slis_t_listheader 内表类型,存放ALV表头相关信息 数据库取数 通常情况下,我们所需要的数据都存放在不同的数据库表中,所以首先要建立一个存放数据的内表,然后将所需数据从不同的数据库表中添加到该内表. 对ALV的布局设计 要对slis_layout_alv的字段进行填充,来实现布局的功能,以下是常用的字段以及功能 1.i_layout-zebra = X 行与行之间变换颜色 2.i_layout-no_vline = . 显示垂直分割线 3.i_layout-colwidth_optimize = X. 系统自动调整列的宽度 4.i_layout-no_colhead = . 显示列标题 对ALV的列属性进行设计 对slis_fieldcat_alv的字段进行填充,并添加到内表slis_t_fieldcat_alv中,以下是常用字段及功能 i_fieldcat-outputlen =14. 指定列长为14 i_fieldcat-fieldname = INFNR. 指定列存放的字段 i_fieldcat-seltext_s = prn. 列标题短文本 i_fieldcat-seltext_m = pur rec num . 列标题中文本 i_fieldcat-seltext_l = purchase record number . 列标题长文本 i_fieldcat-lzero = X. 显示数据的前导零 i_fieldcat-key = X. 指定是否为主要字段 i_fieldcat-hotspot = X. 是否设置小手快捷单击 i_fieldcat-tech = X. 隐藏该列 显示ALV报表 需要调用 Function module “ REUSE_ALV_GRID_DISPLAY ”,以下是重要的几个参数 Exporting 参数 i_callback_program = w_repid(当前程序) 指定当前程序 is_layout = i_layout ALV布局 it_fieldcat = i_fieldcat_alv ALV列属性 it_events = i_events ALV事件 i_grid_title = ALV 报表标题 i_callback_user_command = USER_COMMAND 用户事件 i_callback_pf_status_set = WHOLE_TOOLBAR 工具条设置 Tables 参数 t_outtab = hd_itab. 显示数据所存放的内表 ALV报表头设置 要使用到slis_t_listheader类型, 包含三部分: 1. typ(类型): H(header) S(selection) A(action) 2. key(标题) 3. info(标题的内容) 需要调用function CALL FUNCTION REUSE_ALV_COMMENTARY_WRITE EXPORTING it_list_commentary = i_list_comments i_logo = ENJOYSAP_LOGO Title logo i_end_of_list_grid = X. ALV事件设置 事件要使用到类型slis_t_event,包含两个字段, name,form 需要调用function CALL FUNCTION REUSE_ALV_EVENTS_GET EXPORTING i_list_type = 0 IMPORTING et_events = i_events. READ TABLE i_events WITH KEY name = TOP_OF_PAGE INTO w_events. IF sy-subrc = 0. MOVE ALV_TOP_OF_PAGE TO w_events-form. MODIFY i_events FROM w_events INDEX sy-tabix. ENDIF. 通过调用function传出一个内表的值, 内表中的name字段包含了,ALV中可能触发到的事件, 根据需要, 将要触发的事件子程序 修改到相应的form字段中. 以下是在建立ALV报表需要注意的一些事项. 要在取数完之后 就对alv的事件进行处理, 因为事件内表要在作为参数传递到REUSE_ALV_GRID_DISPLAY中去. 在布局ALV时,有一个f2CODE参数不要去改. * i_layout-f2code = &ETA. * i_layout-f2code = &IC1. 一旦改了, user_command事件就不触发了, 具体原因还不是很清楚 在user_command的子程序中,要传入两个值 sy-ucmm功能值,下一个因该是被点击字段的属性结构体(我也不是很清楚). 当sy-ucomm为&IC1 就表示点击了当前字段 FORM user_command USING i_ucomm LIKE sy-ucomm is_selfield TYPE slis_selfield. CASE i_ucomm. WHEN &IC1. Pick READ TABLE hd_itab INDEX is_selfield-tabindex. IF sy-subrc EQ 0. . ENDIF. ENDCASE. ENDFORM. USER_COMMAND 在对列标题进行设计的时候,每一个列标题属性都要设置,所以代码重复量很大. 可以定义宏来减少代码量 DEFINE hout. i_fieldcat-fieldname = &1. i_fieldcat-seltext_l = &2. i_fieldcat-key = &3. append i_fieldcat to i_fieldcat_alv. clear i_fieldcat. END-OF-DEFINITION. hout CARRID Airline carrier ID X. hout CONNID Flight connection code X. hout FLDATE Flight date X. hout PRICE Airfare . hout CURRENCY Local currency of airline . hout PLANETYPE Plane type . hout SEATSMAX Maximum capacity . hout SEATSOCC Occupied seats . hout PAYMENTSUM Total of current bookings . 重点注意:在调用function的时候, 一定要注意参数所引用的类型,以及单引号中内容的大写.这点很重要. 程序中很多错误都是因为这个引起的 后面我会发一个ALV的demo 希望能够帮助大家更进一步了解ALV 使用SAP的自带工具QUICKVIEWER生成报表SAP报表里,有两个关键词,一个是report,一个是list。report指生成报表的说明书,指明数据源、显示格式等关键信息;list则是指报表数据的结果,也就是所定义的report对应的数据结果。SAP有几个自带的报表工具, 有QUICKVIEWER,SAP QUERY等,功能都是大同小异,以下就介绍一下QUICKVIEWER。在主界面的菜单,按System - Services- QuickViewer 打开。如果是新建一个报表,输入新报表的名字,选creat,接着就会要你填写title(可随便写,但必须要填),然后悬数据源类型,分别有 table,table joint,logical datasource,sap infomation set 四种,然后再填写具体的数据对象名。最下面是数据显示模式,分别为basic mode,layout mode。如果选layout mode的话,则要你设计显示的界面,我觉得比较麻烦,一般都是直接选basic mode,然后保存,这样,一个report就生成了。然后按excute,第一次会出来一个页面,要你填写显示选项,我选择把所有的列都显示。再按excute,让你选最多显示多少行(默认是100),然后出来结果。在结果页面上方,有个比较有用的toolbar,包括排序,查找,统计,柱状图,发邮件等等,方面你对报表的结果进行操作。总体感觉:QUICKVIEWER这个报表工具界面不错,而且操作也比较方便。可以通过图形化工具选择数据源,定义选择条件,定义显示格式,对于一般的数据查询应该都能应付,特别实在数据显示出来后,还有一个实用的toolbar,方便了操作者。但至于能否实现复杂的业务逻辑(例如有些

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论