ABAP/4 报表编程模板 初学者必看
*&--------------------------------------------------------------*
*& Report Z_X_XXXXX
*& Module : Module \ SubModule
*&--------------------------------------------------------------*
*& Created : author (2003.10.09)
*& Modified : author (someday)
* Intention : 程序的详细说明
* 请用户在ABAP/4 REPORT编程时,参考本程序提供的编程框架
*
* 在编码规范有出入时,以本程序为准
* 以下各事件可根据实际编程需要使用,对于需要处理的事件,可将该事
* 件后面的语句注释去掉,再编写相应的子程序代码。
*&--------------------------------------------------------------*
INCLUDE Z_X_XXXXXTOP . " TOP 子程序,用来声明全局变量
*----以下三个子程序只有在多个程序调用同一逻辑时才建议使用-----*
*INCLUDE Z_X_XXXXXO01 . " PBO 子程序
*INCLUDE Z_X_XXXXXI01 . " PAI 子程序
*INCLUDE Z_X_XXXXXF01 . " form 子程序
INITIALIZATION.
* PERform INI_SELECTION_SCREEN. " 初始化选择屏上的变量
AT SELECTION-SCREEN.
* PERform INI_DATA. " 初始化全局变量
START-OF-SELECTION.
* PERform PRECESS_DATA. " 主要数据处理逻辑
AT LINE-SELECTION.
* PERform PRECESS_LINE_SELECTED. " 行选择时的处理
AT USER-COMMAND.
* PERform PRECESS_USER_COMMAND. * 用自定义命令按钮时的处理
TOP-OF-PAGE.
* PERform PAGE_HEADER. " 页眉
END-OF-PAGE.
* PERform PAGE_FOOT. " 页脚
*&--------------------------------------------------------------*
*& form PRECESS_DATA
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form PRECESS_DATA.
*如果逻辑简单, 则合并若干form为一个
PERform SEL_DBTAB_XXXXX. " 从透明表中取数据赋给内表
PERform CMP_ITAB_XXXXX. " 内表中数据计算处理
PERform WRT_ITAB_RESULT. " 输出内表数据
ENDform. " PRECESS_DATA
*&--------------------------------------------------------------*
*& form SEL_DBTAB_XXXXX
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form SEL_DBTAB_XXXXX.
select * into corresponding fields of itab_sales
from bsid
where bukrs = s_bukrs.
authority-check object Z:FI-00001
id ACTVT field 03
id BUKRS field itab_sales-bukrs
id GSBER field itab_sales-gsber. "权限检查
if sy-subrc ne 0. "权限检查未通过
continue.
endif.
append itab_sales.
clear itab_sales.
endselect.
ENDform. " SEL_DBTAB_XXXXX
*&--------------------------------------------------------------*
*& form CMP_ITAB_XXXXX
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form CMP_ITAB_XXXXX.
ENDform. " CMP_ITAB_XXXXX
*&--------------------------------------------------------------*
*& form WRT_ITAB_RESULT
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form WRT_ITAB_RESULT.
* PERform WRT_ITAB_SUB.
ENDform. " WRT_ITAB_RESULT
*&--------------------------------------------------------------*
*& form PAGE_HEADER
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form PAGE_HEADER.
ENDform. " PAGE_HEADER
*&--------------------------------------------------------------*
*& form INI_DATA
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form INI_DATA.
ENDform. " INI_DATA
*&--------------------------------------------------------------*
*& form INI_SELECTION_SCREEN
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form INI_SELECTION_SCREEN.
ENDform. " INI_SELECTION_SCREEN
*&--------------------------------------------------------------*
*& Include Z_X_XXXXXTOP
*&--------------------------------------------------------------*
REPORT Z_X_XXXXX .
*-------------------声明系统字典对象----------------------------*
TABLES: t001.
*--------------------声明 Selection-screen 变量-----------------*
SELECTION-SCREEN BEGIN OF BLOCK B1
WITH FRAME
TITLE TEXT-001.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: S_BUKRS FOR T001-BUKRS MEMORY ID BUK.
PARAMETERS: P_DATE LIKE SY-DATUM DEFAULT SY-DATUM.
SELECTION-SCREEN END OF BLOCK B1.
*--------------------声明全局变量-------------------------------*
*声明内表时,表名为 ITAB_XXXX,后缀尽可能为关联DBTab或内表用途
DATA: bldat like bsid-bldat.
RANGES: R_FIELD FOR DBTAB-FIELD.
说明:以上是模板程序的框架及说明,在R/3系统的开发环境中有该模板程序(Z_X_XXXXX),建议编程序之前,先将该程序另存一新文件,再根据需要修改这新文件。
*&--------------------------------------------------------------*
*& Report Z_X_XXXXX
*& Module : Module \ SubModule
*&--------------------------------------------------------------*
*& Created : author (2003.10.09)
*& Modified : author (someday)
* Intention : 程序的详细说明
* 请用户在ABAP/4 REPORT编程时,参考本程序提供的编程框架
*
* 在编码规范有出入时,以本程序为准
* 以下各事件可根据实际编程需要使用,对于需要处理的事件,可将该事
* 件后面的语句注释去掉,再编写相应的子程序代码。
*&--------------------------------------------------------------*
INCLUDE Z_X_XXXXXTOP . " TOP 子程序,用来声明全局变量
*----以下三个子程序只有在多个程序调用同一逻辑时才建议使用-----*
*INCLUDE Z_X_XXXXXO01 . " PBO 子程序
*INCLUDE Z_X_XXXXXI01 . " PAI 子程序
*INCLUDE Z_X_XXXXXF01 . " form 子程序
INITIALIZATION.
* PERform INI_SELECTION_SCREEN. " 初始化选择屏上的变量
AT SELECTION-SCREEN.
* PERform INI_DATA. " 初始化全局变量
START-OF-SELECTION.
* PERform PRECESS_DATA. " 主要数据处理逻辑
AT LINE-SELECTION.
* PERform PRECESS_LINE_SELECTED. " 行选择时的处理
AT USER-COMMAND.
* PERform PRECESS_USER_COMMAND. * 用自定义命令按钮时的处理
TOP-OF-PAGE.
* PERform PAGE_HEADER. " 页眉
END-OF-PAGE.
* PERform PAGE_FOOT. " 页脚
*&--------------------------------------------------------------*
*& form PRECESS_DATA
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form PRECESS_DATA.
*如果逻辑简单, 则合并若干form为一个
PERform SEL_DBTAB_XXXXX. " 从透明表中取数据赋给内表
PERform CMP_ITAB_XXXXX. " 内表中数据计算处理
PERform WRT_ITAB_RESULT. " 输出内表数据
ENDform. " PRECESS_DATA
*&--------------------------------------------------------------*
*& form SEL_DBTAB_XXXXX
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form SEL_DBTAB_XXXXX.
select * into corresponding fields of itab_sales
from bsid
where bukrs = s_bukrs.
authority-check object Z:FI-00001
id ACTVT field 03
id BUKRS field itab_sales-bukrs
id GSBER field itab_sales-gsber. "权限检查
if sy-subrc ne 0. "权限检查未通过
continue.
endif.
append itab_sales.
clear itab_sales.
endselect.
ENDform. " SEL_DBTAB_XXXXX
*&--------------------------------------------------------------*
*& form CMP_ITAB_XXXXX
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form CMP_ITAB_XXXXX.
ENDform. " CMP_ITAB_XXXXX
*&--------------------------------------------------------------*
*& form WRT_ITAB_RESULT
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form WRT_ITAB_RESULT.
* PERform WRT_ITAB_SUB.
ENDform. " WRT_ITAB_RESULT
*&--------------------------------------------------------------*
*& form PAGE_HEADER
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form PAGE_HEADER.
ENDform. " PAGE_HEADER
*&--------------------------------------------------------------*
*& form INI_DATA
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form INI_DATA.
ENDform. " INI_DATA
*&--------------------------------------------------------------*
*& form INI_SELECTION_SCREEN
*&--------------------------------------------------------------*
* text
*---------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------*
form INI_SELECTION_SCREEN.
ENDform. " INI_SELECTION_SCREEN
*&--------------------------------------------------------------*
*& Include Z_X_XXXXXTOP
*&--------------------------------------------------------------*
REPORT Z_X_XXXXX .
*-------------------声明系统字典对象----------------------------*
TABLES: t001.
*--------------------声明 Selection-screen 变量-----------------*
SELECTION-SCREEN BEGIN OF BLOCK B1
WITH FRAME
TITLE TEXT-001.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: S_BUKRS FOR T001-BUKRS MEMORY ID BUK.
PARAMETERS: P_DATE LIKE SY-DATUM DEFAULT SY-DATUM.
SELECTION-SCREEN END OF BLOCK B1.
*--------------------声明全局变量-------------------------------*
*声明内表时,表名为 ITAB_XXXX,后缀尽可能为关联DBTab或内表用途
DATA: bldat like bsid-bldat.
RANGES: R_FIELD FOR DBTAB-FIELD.
说明:以上是模板程序的框架及说明,在R/3系统的开发环境中有该模板程序(Z_X_XXXXX),建议编程序之前,先将该程序另存一新文件,再根据需要修改这新文件。