Abap 的主要工作。
一。 报表的开发。
二。单据的打印。
三。数据的开发
*&---------------------------------------------------------------------*
*& Report YLWY001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
*& Report YLWY001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT YLWY001.
*WRITE 'MY 003 PROGAM'.
*data wa like spfli.
*WRITE 'MY 003 PROGAM'.
*data wa like spfli.
*WRITE: 10 'MAN',40 'CONNECT', 60 'COUNTRY CODE',80 'START CITY',100 'START PORT'.
* uline.
* Select * into wa from spfli.
* uline.
* Select * into wa from spfli.
*WRITE: / WA-Carrid under 'MAN',
* WA-Connid under 'CONNECT',
* WA-Countryfr under 'COUNTRY CODE',
* WA-cityfrom UNDER 'START CITY',
* WA-airpfrom UNDER 'START PORT'.
* endselect.
* data mytb_spfli type table of spfli with header line.
* select * into table mytb_spfli from spfli package size 5.
* *loop at mytb_spfli.
* *write: / mytb_spfli-carrid, mytb_spfli-cityfrom,mytb_spfli-airpfrom.
* *endloop.
* *uline.
* *endselect.
* *data:begin of arcd,
* * carrid type spfli-carrid,
* * connid type spfli-connid,
* * end of arcd.
* * data arcd1 like arcd.
* * select spfli~carrid spfli~connid into arcd1 from spfli
* * inner join sflight on spfli~carrid = sflight~carrid up to 10 rows.
* * write : / arcd1-carrid,arcd1-connid.
* * endselect.
* WA-Connid under 'CONNECT',
* WA-Countryfr under 'COUNTRY CODE',
* WA-cityfrom UNDER 'START CITY',
* WA-airpfrom UNDER 'START PORT'.
* endselect.
* data mytb_spfli type table of spfli with header line.
* select * into table mytb_spfli from spfli package size 5.
* *loop at mytb_spfli.
* *write: / mytb_spfli-carrid, mytb_spfli-cityfrom,mytb_spfli-airpfrom.
* *endloop.
* *uline.
* *endselect.
* *data:begin of arcd,
* * carrid type spfli-carrid,
* * connid type spfli-connid,
* * end of arcd.
* * data arcd1 like arcd.
* * select spfli~carrid spfli~connid into arcd1 from spfli
* * inner join sflight on spfli~carrid = sflight~carrid up to 10 rows.
* * write : / arcd1-carrid,arcd1-connid.
* * endselect.
Tables spfli.
skip .
uline at /(106).
format color col_heading.
write : / sy-vline,(15) 'man',sy-vline,(15) 'connect',sy-vline, (15) 'code',sy-vline, (15) 'start',
sy-vline,(30) 'start port',sy-vline.
uline at /(106).
format color off.
select * from spfli.
write: / sy-vline,(15) spfli-carrid,sy-vline,(15) spfli-connid,sy-vline,(15) spfli-countryfr,
sy-vline,(15) spfli-cityfrom,sy-vline,(30) spfli-airpfrom,sy-vline.
uline at /(106).
endselect.
write '*5'.
write /.
start-of-selection.
write 'please click'.
format hotspot on color 6 inverse on.
write 'hot'.
format hotspot off color off.
at line-selection.
write ' welcome'.
write /.
start-of-selection.
write 'please click'.
format hotspot on color 6 inverse on.
write 'hot'.
format hotspot off color off.
at line-selection.
write ' welcome'.
ABAP 报表求和统计功能实现方法
在写abap 的过程中,可能需要统计,求和等
那么如何实现呢?
其实在loop ... endloop 中间,有个AT <LEVEL>,<…>,ENDAT循环. 其中的<LEVEL>包括: FRIST, LAST, NEW , END OF.这些可以用来进行内表中按某个字段进行分组统计.
FIRST 内 表的第一行
LAST 内 表的最后一 行
NEW <f> 行组 的开头,与 字段 <f> 和 <f> 剩余字段中 的内容相同
END Of <f> 行组 的结尾,与 字段 <f> 和 <f> 剩余字段中 的内容相同
LAST 内 表的最后一 行
NEW <f> 行组 的开头,与 字段 <f> 和 <f> 剩余字段中 的内容相同
END Of <f> 行组 的结尾,与 字段 <f> 和 <f> 剩余字段中 的内容相同
AT - ENDAT 块中的语句 块使用这些 行条件代表 预定义的控 制结构。用 户可以使用 它们处理内 表中的控制 断点,而不 必使用 编程分支和循环 中所述的控 制语句自己 编程。
在 AT - ENDAT 语句块中, 工作区域没 有用当前表 格行进行填 充。初始化 所有不是标 准关键字部 件的字段( 参见
标识表格行 )。对于行 条件 FIRST 和 LAST, 系统用星号 (*) 改写所有标 准关键字段 。对于行条 件 NEW <f> 和 END OF <f>,系 统用星号 (*) 改写所有出 现在工作区 域中指定字 段 <f> 右边的标准 关键字段。 用户可根据 自己的需求 在 AT - ENDAT 语句块中填 充工作区域 。
在 AT - ENDAT 语句块中, 工作区域没 有用当前表 格行进行填 充。初始化 所有不是标 准关键字部 件的字段( 参见
标识表格行 )。对于行 条件 FIRST 和 LAST, 系统用星号 (*) 改写所有标 准关键字段 。对于行条 件 NEW <f> 和 END OF <f>,系 统用星号 (*) 改写所有出 现在工作区 域中指定字 段 <f> 右边的标准 关键字段。 用户可根据 自己的需求 在 AT - ENDAT 语句块中填 充工作区域 。
DATA: BEGIN OF LINE,
COL1 TYPE C,
COL2 TYPE I,
COL3 TYPE I,
END OF LINE.
DATA ITAB LIKE LINE OCCURS 10.
LINE-COL1 = 'A'.
DO 3 TIMES.
LINE-COL2 = SY-INDEX.
LINE-COL3 = SY-INDEX ** 2.
APPEND LINE TO ITAB.
ENDDO.
LINE-COL1 = 'B'.
DO 3 TIMES.
LINE-COL2 = 2 * SY-INDEX.
LINE-COL3 = ( 2 * SY-INDEX ) ** 2.
APPEND LINE TO ITAB.
ENDDO.
LOOP AT ITAB INTO LINE.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
AT END OF COL1.
SUM."按Col1 求和.
ULINE.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
SKIP.
ENDAT.
COL1 TYPE C,
COL2 TYPE I,
COL3 TYPE I,
END OF LINE.
DATA ITAB LIKE LINE OCCURS 10.
LINE-COL1 = 'A'.
DO 3 TIMES.
LINE-COL2 = SY-INDEX.
LINE-COL3 = SY-INDEX ** 2.
APPEND LINE TO ITAB.
ENDDO.
LINE-COL1 = 'B'.
DO 3 TIMES.
LINE-COL2 = 2 * SY-INDEX.
LINE-COL3 = ( 2 * SY-INDEX ) ** 2.
APPEND LINE TO ITAB.
ENDDO.
LOOP AT ITAB INTO LINE.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
AT END OF COL1.
SUM."按Col1 求和.
ULINE.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
SKIP.
ENDAT.
AT LAST.
SUM."总求和.
ULINE.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
ENDAT.
ENDLOOP.
其输出为:
A 1 1
A 2 4
A 3 9
________________________________
A 6 14
SUM."总求和.
ULINE.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
ENDAT.
ENDLOOP.
其输出为:
A 1 1
A 2 4
A 3 9
________________________________
A 6 14
B 2 4
B 4 16
B 6 36
________________________________
B 12 56
B 4 16
B 6 36
________________________________
B 12 56
________________________________
* 18 70
* 18 70
ABAP/4 报表编程模板
ABAP/4 报表编程模板 初学者必看
*&--------------------------------------------------------------*
*& Report Z_X_XXXXX
*& Module : Module / SubModule
*&--------------------------------------------------------------*
*& Created : author (2003.10.09)
*& Modified : author (someday)
* Intention : 程序的详细说明
* 请用户在ABAP/4 REPORT编程时,参考本程序提供的编程框架
*
* 在编码规范有出入时,以本程序为准
* 以下各事件可根据实际编程需要使用,对于需要处理的事件,可将该事
* 件后面的语句注释去掉,再编写相应的子程序代码。
*&--------------------------------------------------------------*
*&--------------------------------------------------------------*
*& 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 子程序
*INCLUDE Z_X_XXXXXO01 . " PBO 子程序
*INCLUDE Z_X_XXXXXI01 . " PAI 子程序
*INCLUDE Z_X_XXXXXF01 . " form 子程序
INITIALIZATION.
* PERform INI_SELECTION_SCREEN. " 初始化选择屏上的变量
* PERform INI_SELECTION_SCREEN. " 初始化选择屏上的变量
AT SELECTION-SCREEN.
* PERform INI_DATA. " 初始化全局变量
* PERform INI_DATA. " 初始化全局变量
START-OF-SELECTION.
* PERform PRECESS_DATA. " 主要数据处理逻辑
* PERform PRECESS_DATA. " 主要数据处理逻辑
AT LINE-SELECTION.
* PERform PRECESS_LINE_SELECTED. " 行选择时的处理
* PERform PRECESS_LINE_SELECTED. " 行选择时的处理
AT USER-COMMAND.
* PERform PRECESS_USER_COMMAND. * 用自定义命令按钮时的处理
* PERform PRECESS_USER_COMMAND. * 用自定义命令按钮时的处理
TOP-OF-PAGE.
* PERform PAGE_HEADER. " 页眉
* PERform PAGE_HEADER. " 页眉
END-OF-PAGE.
* PERform PAGE_FOOT. " 页脚
* 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为一个
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.
*& 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. "权限检查
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
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
*&--------------------------------------------------------------*
* 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 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.
*& 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.
*& 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.
*& 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.
*& 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 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.
*声明内表时,表名为 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编程时,参考本程序提供的编程框架
*
* 在编码规范有出入时,以本程序为准
* 以下各事件可根据实际编程需要使用,对于需要处理的事件,可将该事
* 件后面的语句注释去掉,再编写相应的子程序代码。
*&--------------------------------------------------------------*
*& 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 子程序
*INCLUDE Z_X_XXXXXO01 . " PBO 子程序
*INCLUDE Z_X_XXXXXI01 . " PAI 子程序
*INCLUDE Z_X_XXXXXF01 . " form 子程序
INITIALIZATION.
* PERform INI_SELECTION_SCREEN. " 初始化选择屏上的变量
* PERform INI_SELECTION_SCREEN. " 初始化选择屏上的变量
AT SELECTION-SCREEN.
* PERform INI_DATA. " 初始化全局变量
* PERform INI_DATA. " 初始化全局变量
START-OF-SELECTION.
* PERform PRECESS_DATA. " 主要数据处理逻辑
* PERform PRECESS_DATA. " 主要数据处理逻辑
AT LINE-SELECTION.
* PERform PRECESS_LINE_SELECTED. " 行选择时的处理
* PERform PRECESS_LINE_SELECTED. " 行选择时的处理
AT USER-COMMAND.
* PERform PRECESS_USER_COMMAND. * 用自定义命令按钮时的处理
* PERform PRECESS_USER_COMMAND. * 用自定义命令按钮时的处理
TOP-OF-PAGE.
* PERform PAGE_HEADER. " 页眉
* PERform PAGE_HEADER. " 页眉
END-OF-PAGE.
* PERform PAGE_FOOT. " 页脚
* 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为一个
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.
*& 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. "权限检查
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
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
*&--------------------------------------------------------------*
* 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 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.
*& 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.
*& 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.
*& 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.
*& 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 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.
*声明内表时,表名为 ITAB_XXXX,后缀尽可能为关联DBTab或内表用途
DATA: bldat like bsid-bldat.
RANGES: R_FIELD FOR DBTAB-FIELD.
说明:以上是模板程序的框架及说明,在R/3系统的开发环境中有该模板程序(Z_X_XXXXX),建议编程序之前,先将该程序另存一新文件,再根据需要修改这新文件。
////////////////////////////////////////////////////////////
1,Object Navigator是ABAP工作平台上众中开发工具的中心入口,事务代码为:se80,其中还有几个经常会用到的T-CODE: SE38, SE24, SE37.
2,在ABAP Editor中有一个Excute with variant 按钮,代表通过变量运行(变式与选择屏幕相关).
3,Editor Pretty Printer ON/OFF的设置: 菜单项: Utilites->settings有相关项,选中Indent,Convert upper/lowercase同Keyword Uppercase.
4,ABAP有三种类型的处理块:Event blocks, Dialog Modules,Procedures只有后一种可拥有自己的局部变量,而且程序语句是内部调用,前两者处理块之间实行外部调用.
5,应用程序类型, 可执行的:以Report关键字引导,不能定义功能模块但可以调用.模块池的:以Program关键字引导,必须通过事务代码运行.
6,语句链 Write: text1, text2. 等同于: Write text1. Write text2.
7,在一个Program中,处于Form和Endform之间的是Subroutines. 该程序由Program引导,不能直接运行,需被调用,不能包含自定义的用户屏幕.
7,在一个Program中,处于Form和Endform之间的是Subroutines. 该程序由Program引导,不能直接运行,需被调用,不能包含自定义的用户屏幕.
8,数据内部定义: types type(len) Type type [decimal dec]
data data(len) Type type [decimal dec] [value var]
Decimal 附加项只适用于指定P类型的小数位.
data data(len) Type type [decimal dec] [value var]
Decimal 附加项只适用于指定P类型的小数位.
9,两个结构体进行赋值操作,如果 Source与Destination的组件结构不完全相同,则用
Move-corresponding, eg: move-corresponding source-data to destination-data.
Move-corresponding, eg: move-corresponding source-data to destination-data.
10.在ABAP数据表达式中,关键字前后必须有空格,eg: Fault: (a=b+c) true:: a = b + c .
11.在用户主记录里可以设置日期的显示分隔符,小数点字符和千位分隔符,在system->userprofile->owndata 或T-code: su01.
12,内表是一种大批量数据管理形式,用于在程序运行期间存储多行结构相同的数据,程序对内表的行操作不能直接进行,必须通过一种接口来传输,这个接口就是工作区.
13,ABAP的两种动态数据对象: Field symbols 与 Data reference.
14,内表有三种形式: standard table , sorted table , hashed table后一种不能进行索引查找,只能通过关键字搜索.
15,子程序的定义和调用分别用Form/Endform和perform来实现,如果想生成子程序的代码框架,则在prefom add处双击即可.
1,package的命名规则: begin with A-S or U-X是SAP standard object, begin with Y or Z are customer objects, begin with T are private test package, begin with $ are local package.
2.在数据字典中,每创建一个TABLE,都将生成一个同名的结构化数据类型,其中的组件字段与实际物理数据库表完全一致.
3,在select查询中如果要指定多个数据对象,则需要将这些对象放在括号内,并用逗号隔开,eg: select * from spfli into (a, b).
4.Function Module是最为常用的复用组件,它是独立的R/3仓库对象,也是一种过程模块,在不同的系统间可以通过RFC(Remote function call)技术进行功能模块的调用.
5,几个有用的系统函数: sy-uname, sy-host, sy-datum, sy-uzedit, sy-subrc, sy-bdcnt,sy-index, sy-tabix,sy-dynnr.
6,可用于交互式报表的列表事件有: at line-selection, at user-command 前者为选择某行时触发,后者由某个GUI触发.
7,在可执行程序中,只要在程序代码中使用parametes或select-options语句,则在程序运行后就会产生用户的选择屏幕.
455

被折叠的 条评论
为什么被折叠?



