ABAP程序有具体的结构吗?一般结构是什么?

ABAP程序有具体的结构吗?一般结构是什么?,第1张

ABAP主要是做报表开发,报伏谨表程序结构如下……

一个典型的报表程序是由许多的程序区块(Code Block)所组成,

在区块间最好能加上一些说明以利程序可读性,一个典型的报迟厅判表程序格式如下:

************************************************************************

**Program name: ZREPORT_SAMPLE

**Description : ABAP Report sample (以SD SO为例)

**Date/Author : 2012-01-05

************************************************************************

** M O D I F I C A T I O N L O G

************************************************************************

** ChangeDate Programmer Request Description

** ========== ========== ========== =========================

**

************************************************************************

*---------------------------------------------------------------

* REPORT NAME : 宣告程序名称及报表格式,

*---------------------------------------------------------------

REPORT Z_____

NO STANDARD PAGE HEADING

MESSAGE-ID __“ 所使用的MESSAGE

LINE-COUNT ___ “ 每页报表列数

LINE-SIZE ___. “ 每页报表宽度

*---------------------------------------------------------------

* Include Program : 列出所含入的其它程序source code, 如子程序

*---------------------------------------------------------------

INCLUDE ____.

*---------------------------------------------------------------

* TABLE DESCRIPTION : 宣告程序会使用的TABLE

*---------------------------------------------------------------

TABLES:

*---------------------------------------------------------------

* DATA : 宣告程序所使用的变量及自定型态

*---------------------------------------------------------------

TYPES:

DATA:

*---------------------------------------------------------------

* SELECTION SCREEN / OPTION / PARAMETER : 屏幕输入报码改表筛选条件

*---------------------------------------------------------------

SELECTION-SCREEN BEGIN OF BLOCK ____

SELECT-OPTIONS:

SELECTION-SCREEN END OF BLOCK ___

*---------------------------------------------------------------

LOAD-OF-PROGRAM :程序开始执行时候自动调用

*---------------------------------------------------------------

LOAD-OF-PROGRAM.

这个事件在SUBMIT,CALL TRANSACTION,PERFORM等执行的时候系统会自动调用这个事件。

所以无需声明即可。

*---------------------------------------------------------------

* INITIALIZATION :对程序变量进行初始化,启动程序开始执行

*---------------------------------------------------------------

INITIALIZATION.

*---------------------------------------------------------------

* AT SELECTION-SCREEN :选择屏幕运行时触发,主要是对查询条件或是权限进行校验

*---------------------------------------------------------------

AT SELECTION-SCREEN.

1. ON psel :在PARAMETER变化是触发的事件

2. ON END OF sel :SELECT-OPTION触发的事件

3. ON VALUE-REQUEST FOR psel_low_high :选择的帮助(F4)

4. ON HELP-REQUEST FOR psel_low_high :选择的帮助(F1)

5. ON RADIOBUTTON GROUP radi :单选按钮事件

6. ON BLOCK block :框架的触发事件

7. OUTPUT :响应屏幕上的事件,修改选择屏幕的唯一方法

*---------------------------------------------------------------

* START-OF-SELECTION : 抓取数据, 打印

*---------------------------------------------------------------

START-OF-SELECTION.

SET PF-STATUS ____. “ 指定报表执行时所用的 GUI-STATUS名称

PERFORM data_retrieve.

PERFORM output_data.

*---------------------------------------------------------------

* AT USER Commaand : 执行在GUI-STATUS中自定的命令

*---------------------------------------------------------------

AT USER_COMMAND.

*---------------------------------------------------------------

* AT LINE SELECTION : 由在报表中按下<F2>或Double-Click启动

*---------------------------------------------------------------

AT LINE-SELECTION.

*---------------------------------------------------------------

* TOP OF PGAE : 每页开始打印时执行, 用于定义报表表头

*---------------------------------------------------------------

TOP-OF-PAGE.

*---------------------------------------------------------------

* END OF PAGE : 报表打印完最后一页后启动

*---------------------------------------------------------------

END-OF-PAGE.

*---------------------------------------------------------------

* END OF SELECTION : 在结束打印数据后启动, 如可用来印出USER输入的条件

*---------------------------------------------------------------

END-OF-SELECTION.

*&---------------------------------------------------------------------*

*& INCLUDE _____

*&---------------------------------------------------------------------*

* FORM : 撰写程序中所使用到的子程序

* Read Data : 自TABLE读取数据放入Internal Table

*&---------------------------------------------------------------------*

FORM data_retrieve.

SELECT * FROM ______

INTO _______

WHERE _______.

IF SY-SUBRC = 0.

ENDIF.

APPEND _____. “ 增加Internal Table元素

ENDSELECT.

ENDFORM.

*---------------------------------------------------------------

* Print Data : 依序输出 Internal Table的数据

*---------------------------------------------------------------

FORM output_data.

WRITE:/_____

ENDFORM.

*---------------------------------------------------------------

* Include Program : 列出所含入的其它程序source code, 如子程序

*---------------------------------------------------------------

INCLUDE _____

INCLUDE _____

具体的可以在程序属性的程序类型选择列表里面看到,主要是下面这几类:

1、可执行程序 (stand-along program类型为 1) ,特点是可以直接执行,而无需事务码,这个也是一般报表开发最常用的程序类型。

2、为屏幕绘制器画出的屏幕所用的模块池 (module pool程序类型为 M) ,包含了来自业务的屏幕模块的处理步骤,它只能通过事务码或者菜单功能调用。

3、帆梁包含程序 (include program程序类型为 I) ,包含了不能独立运行的程序代码,也就是说,无论你是在 SE38 里用执行功能还是通迹宽过事务码或菜单调用,都无法打开一个包含程序。它们的作用主要是让程序变得清晰和可以被重用,在其他程序里,用 INCLUDE 语句可姿轿亮以把一个包含程序加到程序里。最终的效果相当于用被包含的程序里的全部内容替换调 INCLUDE 语句。

4、子程序 (subroutine pool程序类型为 S) ,这种类型的程序里只包含被外部 PERFORM 语句调用的程序块。也就是说,只包含形如 FORM ... ENDFORM 块的程序代码,从外部程序里,用 PERFORM IN PROGRAM [IF FOUND]. 来调用。

5、函数组 (function group程序类型为 F) ,这类程序包含了函数模块。函数组和函数模块用函数制作器进行管理,事务码 SE37。在创建函数组和函数模块时,函数制作器把程序类型设置为 F。

6、接口池 (interface definitions程序类型为 J) 包含了接口。类和接口都在类制作器中管理,事务码 SE24。

7、类池 (class definitions程序类型为 K) ,包含了类。类和接口都在类制作器中管理,事务码 SE24。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12383209.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存