程序路径:

ABAP Documentation and Examples -> BC - ABAP Programming -> ABAP Introduction -> The ABAP Hello World Program
(注:以后说明程序路径时省略前两个节点,从第三层节点开始)

 

代码:

Code

 

 

解析:

1、第 1 行用 REPORT 开头,说明这是一个报表程序。如果是模块池的话,就用 PROGRAM 开头;函数组用 FUNCTION-POOL 开头(嵌套在 INCLUDE 程序中,函数组的结构特殊,请参考 http://www.cnblogs.com/qiangsheng/archive/2009/01/14/1375761.html);类型池用 TYPE-POOL 开头;类池用 CLASS-POOL 开头;接口池用 INTERFACE-POOL 开头。

2、* 开头的是注释,第 3 行注释说明下面是选择屏幕的定义。PARAMETERS 定义了一个单值的输入字段,input 是字段名,类型为 c,长度为 12,默认值是 Hello World!。PARAMETERS 除了定义了选择屏幕上的一个输入字段外,还同时隐含定义了一个同名的全局变量,这个变量可以在整个程序中使用。

3、第 6 行说明下面是调用一个 Dynpro 屏幕(Dynpro 是 SAP 发明的单词,我们可以理解为屏幕),CALL SCREEN 指定调用的屏幕号,这里是调用屏幕 100。

4、第 9 行开始说明下面是 List 输出,List 是 SAP 特有的一种的输出界面,只使用等宽字体输出,还能够根据需要输出一些图标和符号(请参考 http://www.cnblogs.com/qiangsheng/archive/2008/10/06/1304425.html),List 没有官方的中文术语,现在 SAP 的中文界面中也是混用“列表”或者“清单”,没个统一,我根据自己的理解,在以后的行文中使用“列示”这个我发明的术语,与列表或清单区分。

5、第 10 行说明将列示的光标跳转到输出界面的第 10 行;第 11 行说明将列示的光标跳转到输出界面的第 40 列;第 12 行说明在当前光标位置(第 10 行,第 40 列)输出全局变量(注意:这里是全局变量而非输入字段)input 的值。

6、屏幕 100 的定义在代码中是看不到的,必须切换到 ABAP 编辑器,然后双击 CALL SCREEN 后面的 100,就可以转到屏幕制作器,再点击应用工具栏(SAP GUI 的屏幕从上到下依次为:菜单栏、系统工具栏、应用标题栏、应用工具栏、主屏幕、状态栏,其中主屏幕又可以根据需要拆分)最右边的“格式”按钮,打开屏幕绘制界面,就可以看到如下界面:

这里我们可以看到两个屏幕元素:一个文本框,名字为 input,即与前面定义的全局变量相同;一个按钮。

 

运行效果:

首先还是退回程序代码界面,并且点击“执行”按钮(或者按键盘的快捷键 F8)。

1、出现选择屏幕如下:

可以看到,出现了名为 INPUT 的输入框,里面的内容是 Hello World! 。

2、点击应用工具栏的“执行”按钮(或 F8),根据程序执行顺序,将打开屏幕 100,如下图:

这个界面跟我们前面看到屏幕绘制界面中设计的屏幕是一样的,但是它的值被填上了 HELLO WORLD! ,这是因为 ABAP 运行时环境把前面 INPUT 输入框的值赋给了全局变量 input,而在这个屏幕中,文本字段 input 与全局变量 input 同名,系统自动完成了赋值,这是 SAP 屏幕程序开发的一个重要原则,即:同名的全局变量和屏幕文本字段之间的相互赋值都自动完成。另外,我们可以看到,前一个界面中大小写混合的文字在这里都变成了大写,这也是 ABAP 相对其它语言的一个比较特殊的情况,如果不加指定,输入的英文字符会自动转换成大写;在 PARAMETERS(和 SELECT-OPTIONS)定义中,可以指定 LOWER CASE 附加关键字来禁止这种转换;而对于屏幕上的文本字段,应通过勾选文本字段属性设置窗口中的“大/小写”复选框来禁止这种转换。

3、点击“其次!”按钮,或者回车,看到下面的界面,如图:

这就是在屏幕的第 10 行第 40 列(列数是按照英文字符来计算的,一个中文字符占据两个英文字符的宽度)输出了 input 的值。点击系统工具栏的返回、退出或取消按钮,就能够返回到选择屏幕。

===========================================

呼~终于讲完了一个最简单的 Hello World 程序,居然都花费了 1 个多小时。开始的讲解会比较详细,针对开发的一般原则和大方向,还要专注一些细节,以后会逐渐减少基本概念的讲解,专注于解释特定语句。另外,随着程序的增大,以后也不可能贴全部程序代码了,只根据需要分析特定代码行,当然,会清楚说明具体的文件和代码行。

posted on 2009-06-01 16:11  华亭慧剑  阅读(1473)  评论(5编辑  收藏  举报