01ABAP启程, 1从创建Hello World程序开始!

Hello World!

目标及说明

目标:

  1. 了解ABAP的开发过程
  2. 认识ABAP的开发平台
  3. 了解ABAP的基本语法

需求说明:

  1. 执行事务代码后,显示程序初始界面,提示输入姓名、出生日期;
  2. 输入姓名后,执行,显示信息,包含显示Hello World,输入的姓名、当前日期等;
  3. 程序的执行类似于其他SAP程序,通过事务代码调用。

开发实践

需求分析:

  1. 本实践中,输出的内容是根据输入内容变化输出的,需要通过定义的变量存储及输出变化的信息;
  2. 年龄、半年后的日期,需要根据输入的出生日期、当前日期进行计算;
  3. 当前日期、竖线、横线可通过系统变量获得。

实践步骤:

No 步骤 说明 替代Tcode
1 建立程序 通过ABAP开发工作台完成程序开发的一系列工作 -
1.1、进入开发工作台并完成一些基本设置 Se80-工作台
1.2、开发组织,创建开发请求、开发包用于开发代码的管理和传输 Se09/Se10-请求、Se21-包
1.3、创建程序,设置基本属性、文本和标题 Se38-编辑器
1.4、编写代码 Se38-编辑器
2 调试程序 对程序进行检查、激活和测试等确保程序正常运行 Se38-编辑器
3 发布程序 创建事务代码以快速调用程序 Se93-事务

如上内容可以都通过Tcode:SE80完成,也可在不同步骤使用不同的事务代码。
在本实践步骤详细中,则都通过SE80完成。

1、建立程序

1.1、ABAP开发工作台

1)通过事务代码SE80进入ABAP开发工作台后的初始界面如下:


图1-1 ABAP开发工作台初始界面

2)在较新版本如EHP7或EHP8,工作台的界面中导航栏显示的内容已可定制,定制方式为通过菜单Utilities(工具)-->Settings(设置),同时还可进行其他工具如ABAP编辑器(代码编辑)、类构建器(面向对象编程)等的设置。在本实践中工作台常规和ABAP编辑器部分设置分别如下:
工作台(常规)只选择了资源库浏览器、资源库信息系统、传输组织器:


图1-2 工作台设置

ABAP编辑器,设置代码自动缩进及在格式优化(自动编排)时,ABAP关键字为大写,其他为小写:


图1-3 ABAP编辑器格式设置

1.2、开发组织

1)创建开发请求
在导航栏中选择“传输组织器”后,保持下方下拉项为默认选择(下拉项为“用户的所有可修改请求”、用户为自己的账号),下方将显示对应的信息节点,如图1-4所示:


图1-4 传输组织器选择

选择最下方的“XXX的可修改请求”节点后,右键创建请求,在弹出如图1-5的窗口中选择类型和描述后点击对勾完成开发请求的创建,结果如图1-6。


图1-5 创建请求界面
图1-6 完成后的开发请求

1)创建开发包
导航栏中选中“资源库浏览器”后,在下方的下拉框中选择包(开发包Package),并在输入框中输入你自己的开发包名字(以Y或Z开头)如图1-7,输入后回车,将会显示创建包的提示(如图1-8),按提示选择及在如图1-9所示的新窗口中输入各属性后对勾,随后会弹出如图1-10所示的选择工作台请求的界面提示,在此界面中选择上一步骤建立的请求后点击对勾,由此完成开发包的建立。


图1-7 选择及输入开发包
图1-8 创建包提示
图1-9 开发包属性设置
图1-10 指定开发包对应的请求

1.3、创建程序及设置基本信息和文本标题

1)创建程序及设置基本信息
从工作台的导航栏中选择“资源库浏览器”,并保证选择的包为前面步骤创建的开发包,然后在下方窗口中选中开发包节点并右键-->创建-->程序,弹出如图1-11的建立程序的界面,输入程序名称后点击对勾:


图1-11 建立程序

显示的设置程序属性如图1-12,需要设置程序的类型和状态,从状态中选择为“K 客户生产程序”,完成后保存,然后将会进入程序的编辑界面如图1-13:


图1-12 程序属性设置
图1-13 程序编辑界面

2)设置程序文本标题
通过菜单“转到”-->“文本元素”,设置文本符号(图1-14)、标题(图1-15),以为后续程序代码使用,选择文本则在代码完成后根据代码的变量输入。


图1-14 程序的文本符号
图1-15 程序的列表标题

1.4、编写代码

返回到ABAP编辑器,根据需求完成代码编写。此程序的需求,其实并不复杂,实现的代码也可以很简单很灵活,而为了考虑程序的可读性、可维护性、可更改性,简单来说是为了让代码看起来更加舒服更容易理解、以后出现变更时能更加简单等,在编写代码时会考虑其结构、注释等,而且SAP的这个ABAP开发工作台功能也非常强大,在代码编辑上也能实现高亮显示、自动缩行、大小写设置等。如下将实现好的代码进行说明:
1)程序说明部分
在程序的最开始,以注释的方式(行的首字母为*),对程序的用途、对应的项目、开发人员、开发日期、程序的变更情况、程序中使用的标题、文本、变量进行说明,以更好的理解程序。
本部分并非必须,同时不同项目不同开发,其风格也各有不同。

*&---------------------------------------------------------------------*
*& Program Name   <程序名称>     :ZU0101_HELLO_WORLD
*& Purpose        <程序用途>     :
*& Project Name   <项目名称>     :
*& Created By     <代码编写人>   :
*& Create On      <创建日期>     :
*& Functional Consultant  <顾问> :
*& Description    <功能描述>     :
*----------------------------------------------------------------------*
*            Modification Log  <程序修改日志>
*Date        Programmer     Corr. #      Description
*
*----------------------------------------------------------------------*
*            Program Summary <程序总结>
*&  Hello World ! - 第一个ABAP程序  &*
*
*列表标题:
*  我的第一个ABAP程序
*选择文本:
*   MYNAME——我的姓名:
*   MYBIRTH——我的出生日期:
*程序文本:
*       001——您好,世界!
*使用的系统变量:
*       SY-ULINE——横线
*       SY-VLINE——竖线
*       SY-DATUM——当前日期
*----------------------------------------------------------------------* 

2)对象定义
对程序中要使用的对象进行定义,如初始界面中要输入的姓名、出生日期,在程序处理过程中要使用的当前日期、6月后的日期、计算出的年龄,进行定义;同时在写代码时为提高可读性,会通过英文单引号“"”进行注释说明,并还注意代码中的其它各种符号,如“(”“:”“,”“.”,其都是英文字符且在代码中各有含义:

REPORT  zu0101_hello_world.
 
*****对象定义
PARAMETERS: myname(10) TYPE c OBLIGATORY,      "定义输入变量存储输入的值
            mybirth    TYPE d DEFAULT '19900101' OBLIGATORY.
 
DATA: myage   TYPE i,                       "定义变量存储我的年龄
      now     TYPE d,                       "定义变量存储当前日期
      date6ms TYPE d.                       "定义变量存储半年后的日期 

3)变量赋值
通过获得系统变量、字符处理、计算、调用函数等,得到各变量的值以进行下一步的程序处理:

*----------------------------------------------------------------------*
*****变量赋值
now = sy-datum.                               "将当前日期赋值给NOW
myage = now+0(4) - mybirth+0(4).              "日期变量+0(2),取得日期中的年份
                                              "并通过年份相减计算年龄并赋值给MYAGE
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'      "通过函数计算6个月后的日期
  EXPORTING
    date      = now
    days      = 0
    months    = 6
    signum    = '+'
    years     = 0
  IMPORTING
    calc_date = date6ms. 

4)数据输出
根据要求,通过Write进行输出,同时在有颜色要求的地方,通过format进行颜色设置。

*****数据输出
WRITE: /5 'Hello World',                      "WRITE输出数据,/5 换行从第5位开始输出,
                                              "":"将WRITE语句连接至各","号分隔的各语句直到"."结束。
       /5 TEXT-001,                           "根据程序文本输出:你好,世界!
       /5(60) sy-uline,                       "输出长度为60的下划线
 
       /5 '我叫',myname, ',今年', (2) myage, '岁,',
       /5 '今天是', now, '!',
       /5 '这是我的第一个ABAP程序!'.
 
FORMAT INVERSE ON COLOR COL_NEGATIVE.                   "设置输出颜色为红色
WRITE: /5(61) sy-uline,
       /5 sy-vline, '今天的努力,必将换来明天的回报!',   "输出:  | 竖线~文本~竖线 |,
                    65 sy-vline,                        "没有用"/"会同一行输出
       /5 sy-vline,'我相信:',
                    65 sy-vline,
       /5 sy-vline, '半年后,也就是', date6ms, '后,',
                    65 sy-vline,
       /5 sy-vline, '我将能成为一个合格的ABAPer!',
                    65 sy-vline,
       /5(61) sy-uline. 

如上4部分代码按顺序组合在一起,则是此开发实践的完整实现代码,输入后可通过程序美化器自动编排;最后参考1.3步骤的设置程序文本标题,设置输入时的选择文本,如图1-16,由此完成程序的开发:


图1-16 程序的选择文本

(续-->2调试与发布)

你可能感兴趣的:(01ABAP启程, 1从创建Hello World程序开始!)