总结4 (强晟 BC400 PPT)

来源:互联网 发布:网络购票身份证待核验 编辑:程序博客网 时间:2024/05/01 21:32

当用户保存数据是,系统把’SAVE’这个功能码记录到程序变量ok_code 里,当选择另外一行,重新调用PBO 模块时, 相应字段传给屏幕,而ok_code 的值仍是’SAVE’,当按下回车时,没有填写功能码,因此这个’SAVE’值保留了下来。

避免这种功能码异常:
–在字段传输给屏幕之前的PBO 模块中初始化变量ok_code。
–在PAI 模块中添加一个附加变量,用它保存ok_code 的值,并且立即清除ok_code 的值。

 

屏幕的用户接口包括以下元素:

1、标题栏包含当前屏幕的标题(GUI title)

2、菜单栏

3、标准工具栏

4、应用工具栏

5、屏幕的功能键指定可以显示在右键菜单

 

菜单栏、标准工具栏、功能键和应用工具栏组成SAP status

 

在屏幕上应用GUI title 和GUI status 需要相应语句,SET TITLEBAR 和SET PF-STATUS

 

GUI title对象名最多20 个字符

 

创建GUI status 的方法跟创建GUI title 类似,对于一般的屏幕指定屏幕类型为“dialog status”。

维护状态的工具叫做菜单绘制器。

如果使用了屏幕逻辑流PBO 模块中预定义的STATUS_nnnn 模块,并且用向前导航功能创建相应的程序模块,则系统自动在模块中生成SET PF-STATUS 和SET TITLEBAR 两个注释语句,并双击生成相应的标题和菜单。

 

菜单栏最多包含8 项,由于System 和Help 占用了两项,用户可以定义6 项自己的菜单。

 


该部分未涉及到

ABAP Web Dynpro 的属性和编程模型:
1、在SAP NetWeaver 应用服务器7.0 中,引入了ABAP Web Dynpro,它是一个与客户端和各自协议无关的新编程模型。这种无关是通过使用元数据完成的。
2、ABAP Web Dynpro 将成为在ABAP 环境中开发Web 应用的标准UI(用户界面)技术。
3、在它自己的运行时环境之外,ABAP Web Dynpro 通常有一个图形化的开发环境(Web Dynpro Explorer),它的工具与ABAP 开发环境(对象浏览器)完全集成。使用SAPgui 在SAP 系统中开发Web Dynpro 程序,通过各自的链接、或互联网浏览器、或SAP 门户来调用。

 

ABAP Web Dynpro 的属性和编程模型
–ABAP Web Dynpro 程序维护和进一步开发由于组件重用和布局、程序流和业务逻辑的严格分开而变得简 单。由于支持Accessibility Standard 508,Web Dynpro 应用程序可以通过键盘输入和屏幕读取功能让视力障碍的用户也可以使用。
–ABAP Web Dynpro 支持使用Web Services。从任何应用上都可以以标准、舒适的方法访问各种系统的业 务功能。

 

减少业务逻辑、布局和程序流的耦合
–ABAP Web Dynpro 应用程序根据“模型-视图-控制器”编程模型(MVC programming model)进行组织。
–业务交互层的模型为终端系统提供可靠的显示无关的数据访问。视图在用户交互层,只关注数据显示(布局),不管数据源。在绑定层的控制器在视图和模型中间,它格式化要在视图中显示的模型数据,处理用 户输入返回给模型,另外还控制程序流程。
–在ABAP Web Dynpro 中,模型包括包装数据访问的应用程序类。但是现存的BAPIs,功能模块,或者Web Services 仍旧可以用。
–视图和控制器都可以用可视化的工具维护。

 

ABAP Web Dynpro 的元素
–视图的布局包含了一系列UI 元素(诸如输入字段、表、按钮等屏幕元素),分组放在图形化工具中。运行时,视图一个接一个显示在屏幕上,不是并列的。因 此相当于传统屏幕,不带逻辑流。
–象传统的ABAP Dynpro 一样,输入检查和输入帮助(F4)不需要人工指定,可以通过UI 服务直接引用ABAP 字典。
–可以用容器技术把视图包含在另一个视图里,这实现了模块化。
–每个视图有其视图控件,从技术角度讲,视图控件就是一个ABAP 类。直接由开发者编写的视图控件的代码很少,多数都是自动生成。跟传统Dynpro 中TABLES 结构的用法类似,视图控件的上下文就象个数据容器,包含了要在视图中显示的内容。

 

ABAP Web Dynpro 组件
–窗口用来捆绑多个视图,并且定义它们的导航选项(视图序列),一个组件包括一个或多个窗口,并且包含自己的上下文控件,用来存储同时显示在几个组 件视图中的数据。
–Web Dynpro 应用程序指向一个窗口做为默认视图(开始视图),在程序被调用的时候首先显示。
–一个具有相应窗口的组件可以在不同应用中做为自包含单元使用,因此应用和维护的工作就减到了最小。
–每个视图控件的上下文包含了要显示在视图中的数据,当相应指派执行(数据绑定)时,数据在视图上下文和UI 控件之间传输。
–组件也包含上下文,这里数据保存并为组件中的不同视图显示。这时,经常通过相应的视图上下文(上下文映射)来实现对组件数据的显示。

 


功能模块,就是存储在SAP 功能库中的完成一定功能的子程序。每个功能模块都包含一定的输入和输出接口,使用功能模块的主要意图就是重用

 

功能模块被组织在功能组 中,所谓功能组就是完成相似功能或处理同类数据的功能模块的集合

 

功能模块可以包含跟程序一样的组件,包括:
•数据对象:跟功能组全局相关,也就是说,可以被当前功能组中的所有功能模块使用和修改
•子程序:可以被当前功能组中的所有功能模块调用
•屏幕:可以被当前功能组中的所有功能模块调用

 


功能模块的接口包括:
•输入参数:当功能模块被调用时,它们接收值和变量,在调用时,可选参数可以不必输入值。
•输出参数:调用程序通过指定“接收变量”接受功能模块的输出,输出参数多是可选的。
•修改参数:调用程序把变量传递给参数模块并接受参数模块对变量值的修改。
•例外:在参数模块运行时可以触发一些指定的错误,并且提供相应错误进程的信息,在调用程序里必须指定例外。
一般来说,接口参数都要指定ABAP 字典中的类型。

 

使用功能模块
–程序调用功能模块时,整个功能组都被读出,然后执行功能模块。直到程序结束,功能组一直都保留在内存中。调用这个功能组中的另一个功能模块时就不需 要重复加载,而且功能组中的全局变量可以重用。
–这意味着,如果功能组中的一个功能模块修改了全局变量的值,这个功能组里其他功能模块被调用时就能使用这个值。
–除全局变量外,功能模块还要使用它自己定义的数据对象例如接口参数等,它用来接收和返回调用程序的数据。

 

功能模块的接口包括import、export、changing 参数和exception。

 

调用功能模块
1、使用ABAP 语句CALL FUNCTION 来调用功能模块,功能模块的名字必须大写,并且用单引号括起来。
2、在EXPORTING 块中,传递功能模块import 中定义的参数;

     而在IMPORTING 块中,则传递功能模块export 中定义的参数,用来接收功能模块运行的结果。

3、import 定义的参数“输出”变量,而“输入”功能模块export 定义的参数的值

4、把函数模块的接口参数(形式参数) 写在左面,而调用程序的的值或数据对象(实际参数) 写在右面。

 

处理异常
1、功能模块执行过程中很可能遇到错误(例如没有读到所需数据),功能模块会触发异常 。这将结束功能模块的执行,并把错误信息反馈给调用程序。如果在 EXPECTIONS 块中处理了异常,返回值会被指定到调用程序的sy-subrc 值中,只要在调用后检查该值, 就能知道执行过程中发生了什么。如果执行没有问 题,就返回0。
2、有时候还需要指定一个功能模块内未指定的异常,用来处理一般的其他错误情况,这时为一个预设的形式参数OTHERS 指定一个与前面都不一样的值即可。
3、在调用时应该捕获所有异常并在程序中处理,如果发生了一个未捕获的异常,就会发生运行时错误。

 


创建对象和调用方法
1、实例没有名字,必须定义引用变量以生成和定位类的实例,它们是定位相应实例的指针,引用变量都有名字,可以定位相应实例。
DATA reference_name TYPE REF TO class_name.
2、上面的语句定义了一个引用变量。程序开始时,引用变量只是个初始值(没有指向任何实例),当它用来创建实例时,它才指向那个实例。CREATE OBJECT reference_name.

 

创建对象和调用方法:
用下面的语句调用实例的方法:CALL METHOD reference_name->method_name.
由于一个类可能有多个实例,调用方法时不能只写一个方法名,必须包含实例名。

 

使用Grid 控件
1、EnjoySAP 控件必须嵌入一个SAP 容器控件(或简称容器),容器必须集成在屏幕预设的控件区内。
2、从GUI 角度,为了应用网格控件和容器,程序中必须创建相应的实例作为替代品。可以在GUI 里用这个实例来定位元素,为此,SAP 提供了基本类来生成容器和网格控件实例。
3、创建实例时,隐含调用了类的构造函数(类的特殊方法CONSTRUCTOR),它的作用是用输入参数填写创建实例的相应字段,因此,在使用CREATE OBJECT 创建实例时必须提供构造器所要求的必要数据。

 

全局类CL_GUI_CUSTOM_CONTAINER 的CONSTRUCTOR 方法中有一个必要参数CONTAINER_NAME,因此,当容器实例被创建时, 这个参数必须提供数据,用来指定屏幕上相应名称的 控件区域。

 

全局类CL_GUI_ALV_GRID 包含一系列可被调用的能完成相应网格控件功能的方法,为了用ALV网格控件显示内表的内容,需要知道下列三个方法的细节。
•CONSTRUCTOR:网格类也有构造函数,唯一的必要参数是i_parent ,做为一个指针的形式指向以存在的容器实例。
•SET_TABLE_FOR_FIRST_DISPLAY:已创建的网格实例用这个方法来传输数据和设置,需要显示的内表要指定给参数 IT_OUTTAB,并且内表还必须是个标准表。此外网格列还需要一些技术信息,最简单的方法是用字典结构或透明表来声 明内表的结构,只需要把字典对象的名字传给参数 I_STRUCTURE_NAME(或者把可以设置字段编目并传给参数IT_FIELDCATALOG )。
•REFRESH_TABLE_DISPLAY:当内表内容发生改变时调用此方法,会重新读内表的值并显示。

 

使用Grid 控件的例子:

1、在屏幕布局编辑器中,在屏幕上定义一个控件区,给它命名CONTAINER_1

2、ABAP 程序需要两个引用参数:
•一个是指向将要创建的容器实例的变量container_r
•一个是指向将要创建的网格实例的变量grid_r

3、用CREATE OBJECT 语句创建实例,创建实例 必须在屏幕显示之前,也就是PBO 模块中执行。一个屏幕上的控件只需要实例化一次,可以用IF container_r IS INITIAL.来检查它是否实例化过。

4、要把内表的内容传输到网格控件中,需要调用网格控件的方法SET_TABLE_FOR_FIRST_DISPLAY,只需要用实际 的变量和对象替换自动生成的xxxxxxx。如果程序运行修改了内表,可以用REFRESH_TABLE_DISPLAY 方法在重新显示屏幕前更新网格的内容。

 


业务对象和BAPIs:

1、SAP 系统的业务对象知识库 包含了业务对象。通常一个业务对象是对应一个或多个表的类,业务对象把 BAPI(Business Application Programming Interface) 作为方法,可以使用BAPI 访问相应的表,也就是说,BAPI 是SAP 系统访问数据的一种方法。

2、BAPI 通常作为业务对象的基本方法存在,如:
     •创建对象
     •获取对象的属性
     •修改对象的属性
     •列出对象

3、BAPI 不但能用ABAP 调用,也可以用其他外部的编程语言调用。

 

标准BAPIs,对于不同的业务对象,通常会用相同的名字表示相同的方法,例如
•GetList:返回符合选择条件的业务对象的列表
•GetDetail:返回指定主键的业务对象的详情
•Create、Change、Delete、Cancel:创建、修改、删除、撤销对象。
•AddItem、RemoveItem:增加或删除子对象。
–可以用BAPI 浏览器按应用列出相应的BAPI,事务码是BAPI。
–找到所需的BAPI 后,可以在右面看它的作用,还可以通过Function Builder 查看它的功能模块代码。

 

BAPI 功能模块及使用方法
1、BAPI 的功能模块必须符合以下技术特点:
     •名字是BAPI_<business_object_name>_<method_name>
     •允许远程调用
     •无用户对话框和消息
     •接口参数的类型必须是ABAP 字典中为BAPI 创建的组件和结构,(名字是BAPI_)
     •在4.6 版以前不允许有changing 参数
     •错误必须用特别的输出参数RETURN 来报告
2、程序中的调用方法则与一般的参数模块完全一样。
3、由于BAPI 可以被非SAP 系统调用,因此必须注意相应的转换规则。可以使用包SBF_BAPI 中的BACV 功能组中的功能模块来进行转换。

 


SAP 标准调整的基本术语和选项
1、修改一个原始系统称为correction(修正),修正在开发/修正类型的请求中进行。
2、对应的,修改一个拷贝称为repair(修补),修补在修补类型的请求中进行。
3、在客户对象被修补后(例如,生产系统的一个紧急修改),需要对原始系统做相同的修补以保证系统一致。

4、在客户系统对SAP 对象的修补也称为modification (修改)。

 

SAP软件调整的选择
客户开发:可以在规定的客户命名空间中开发自己的知识库对象,在SAP 标准无法提供跟用户需求类似的功能时可以使用此方法。
定制:可以使用适当的维护事务码来设置系统属性和功能。SAP 计划和组织了这类调整,定制是建立SAP 系统的必要步骤。
增强:SAP知识库对象可以用增强来调整而无需修改,增强与版本无关并且无需任何调整,不过并非所有客户需求都能用增强来解决。
修改:只有当系统没有适当的增强选项或者调整将带来巨大工作量时才选择修改。为了提供有组织的修改和便利的调整步骤,SAP 4.6b以后提供了修改助手的功能。

 

增强的类型:
1、SAP 在一些程序中实现了程序出口 ,用户可以在用户出口中添加一些代码,运行时也会运行这些代码。这样就可以不修改SAP 程序而增加一些功能。程序出口是非常重要的一类增强。
2、SAP 用了一些技术实现程序出口:用户出口、客户出口、业务事务事件(BTEs)和业务附加(BAdIs)。

 

除了程序出口外,还有其他的出口技术:
菜单出口:部分菜单带有SAP 预备的条目,可以连接和执行用户自己开发的功能(源代码)。
屏幕出口:部分屏幕带有SAP 的子屏幕区,可以集成用户自定义的屏幕。
字段出口:使用字段出口可以在SAP 屏幕字段上执行用户自定义的输入检查,这无需SAP 提供。

 

在ABAP 字典中覆盖字段文档和标签
•覆盖字段文档:可以修改按F1 时弹出的帮助文档。
•覆盖字段标签:可以把SAP 数据元素的字段标签替换成用户自己的文字。

 

 

PS: 本次总结,针对强晟的BC400笔记总结,无工作安排时记录。

 

原创粉丝点击