ABAP程序有具体的结构吗?一般结构是什么?
发布网友
发布时间:2022-11-22 23:11
我来回答
共3个回答
热心网友
时间:2023-12-31 04:40
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 _____
热心网友
时间:2023-12-31 04:40
结构就是一个数据的类型。像定义一个人一样,type: person由两个属性构成姓名,性别,person就是一个结构,拥有下面的属性
var_name char30
var_sex char2
热心网友
时间:2023-12-31 04:41
在程序里面你可以把它看作一个工作区,相对表来说就是一行数据(表可以有多行数据,结构只能有一行)。