ABAP常用技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


助,一般无法修改屏幕变量内容。

5. START-OF-SELECTION:开始数据处理事件,选择屏幕后的主执行块,没有事件块时 的默认执行块。 6. END-OF-SELECTION:结束数据处理事件,一般输出数据。 7. TOP-OF-PAGE(页眉控制,在每个新页开始时候触发) 8. END-OF-PAGE(页脚控制,在当前页结束的时候触发) 9. AT LIEN-SELECTION(用户选择某列表时触发)
课程要求
先期课程要求:

ABAP初级语法,BC400等。
总部运维支持中心 | 2
课程目标
通过完成本课程的学习,你将可以做到:

学会ABAP日常使用的技术,能够应对大多数的日
常开发工作。
总部运维支持中心 | 3
课程内容
□ □ □ □ □ □
事件块及程序分析方法 事务代码 消息 上传下载文件 ALV BDC


WS_DOWNLOAD:
GUI_UPLOAD:
从内表下载数据到文本文件(将淘汰)
上载文本文件数据到内表
WS_UPLOAD:
上载文本文件数据到内表(将淘汰)
ALSM_EXCEL_TO_INTERNAL_TABLE:从EXCEL文件上传数据到内表 WS_EXCEL: 从内表下载数据到EXCEL文件
WRITE: 'Secondary List, SY-LSIND =', sy-lsind.
总部运维支持中心 | 7
事件块及程序分析方法

报表程序分析方法

修改程序时,首先需要对程序进行分析。首先了解程序主要功能,再根据功 能对代码分析。

模块化分析

主要对START-OF-SELECTION中的内容和程序中的子程序分析,了解程序的先 后执行顺序。


10. AT USER-COMMAND(用户交互控制GUI功能触发)
总部运维支持中心 | 5
事件块及程序分析方法

AT SELECTION-SCREEN示例
TABLES SPFLI. SELECT-OPTIONS: CARRID FOR SPFLI-CARRID. PARAMETERS: CITYFROM LIKE SPFLI-CITYFROM, CITYTO LIKE SPFLI-CITYTO. AT SELECTION-SCREEN. IF CARRID-LOW IS INITIAL OR CITYFROM IS INITIAL OR CITYTO IS INITIAL. MESSAGE E005. ENDIF.
HAS_FIELD_SEPARATOR = 'X'
TABLES DATA_TAB = it_table.

文件要是文本文件,文件内容是tab键分割的字段。

内表的各个字段要与文本文件的各个字段对应。
总部运维支持中心 | 13
上传下载文件

下载文本文件

使用函数GUI_DOWNLOAD

示例
call function 'GUI_DOWNLOAD' exporting filename = filetype = write_field_separator = tables data_tab = if sy-subrc = 0. write: ‘数据下载成功!!!'. end消息要素:语言代码,消息类,消息序列号,消息文本 消息类型(与消息类不同)共六种,A,E,I S,W,X

A:异常, 终止当前事务


E:错误 ,系统等待新输入数据
I:信息 ,处理 ENTER之后,系统继续处理 S:确认 ,消息出现在下一屏上 W:警告 ,可以更改输入数据或通过按 ENTER 继续 A和E消息类型都会中止程序继续运行。
总部运维支持中心 | 23
ALV

IT_FIELDCAT中常用参数
函数中,IT_FIELDCAT参照SLIS_T_FIELDCAT_ALV,常用的参数如下表所示

ALV列表可以比较自由的调整栏位的宽度,除可以直接通过拖拽来调 整栏位的顺序,通过使用Optimum width功能自动优化栏位宽度为最 优宽度这些基 本功能之外,还有一些比较常用的功能:

ALV菜单栏按钮:
总部运维支持中心 | 19
ALV

改变布局:变更布局中栏位的排序,栏位的显示等。
总部运维支持中心 | 20
总部运维支持中心 | 11
上传下载文件

上载文本文件数据到内表

使用函数GUI_UPLOAD 输入参数IMPORT

FILENAME:上载文件路径 FILETYPE:文件编码,‘ASC’ 或‘BIN’ HAS_FIELD_SEPARATOR:为‘X’时,文件内各字段值(列)之间以Tab键分割
总部运维支持中心 | 16
ALV

什么是ALV

在R/3 4.6C之前ALV列表全称为ABAP List Viewer,在其后的版本中, 已经更名为SAP List Viewer。简单来说就是一种SAP列表输出的方式。 在SAP系统中,ALV是以表格控件的形式出现在用户屏幕中,具体还有
两种情况:

= 'PF_STATUS_SET'(001)"调用用户事件和按钮事件 = w_repid = i_layout = i_fieldcat_alv[] = i_events[] = '测试' = 'A' "抬头文本 " 保存调整后格式 "当前程序 "子函数layout_build填充的格式定义 "子函数fields填充的各列,必输
'D:\1.txt' 'ASC' ' ' ‚字段分隔符 it_tab.
总部运维支持中心 | 14
上传下载文件

上传EXCEL文件

使用函数'ALSM_EXCEL_TO_INTERNAL_TABLE‘

输入参数IMPORT:
FILENAME:最长 128 个字符的路径名称。 I_BEGIN_COL:导入单元格的开始列 I_BEGIN_ROW:导入单元格的开始行 I_END_COL:导入单元格的结束列 I_END_ROW:导入单元格的结束行
作为整个屏幕输出,是唯一的屏幕元素 作为屏幕元素之一与其他屏幕元素结合出现

ALV的特点

ALV列表是SAP系统中新的列表标准,可以在ABAP程序或者SAP Query等报
表中输出,美化了显示效果,增加了交互功能。
总部运维支持中心 | 17
ALV

两种简单的ALV列表类型

目前为止,最常用的ALV有以下两种类型: LIST型与GRID型
总部运维支持中心 | 9
消息类

调用方法

MESSAGE ID id TYPE mtype NUMBER n.
示例
MESSAGE ID 'ZD00' TYPE 'E' NUMBER '000' WITH '这是消息提示'.

MESSAGE xnnn(mid).
示例
MESSAGE E000(ZD00) WITH '这是消息提示'.

程序名已经注明消息类
示例
REPORT <程序名> MESSAGE-ID ZD00 . ……………… MESSAGE E899 WITH '从本地文件' P_FILE '导入到SAP失败' .
总部运维支持中心 | 10
上传下载文件

上传下载文件常用函数

NAVIGATION_FILENAME_HELP: 获得文件名 WS_FILENAME_GET: GUI_DOWNLOAD: 获得文件名 从内表下载数据到文本文件

从头分析

对于比较简单的程序,从数据定义和主要SQL语句开始,了解程序从系统取 数的主要内容,从而了解程序的功能。

从尾分析

对于稍复杂的程序,根据程序功能,首先判断是什么输出方法,ALV、LIST、 BDC、EXCEL等,再从输出处查找输出内表,向上一步一步找内表的取数逻辑。
总部运维支持中心 | 8
ALV

实现ALV

使用函数REUSE_ALV_LIST_DISPLAY: 输出LIST型列表 使用函数REUSE_ALV_GRID_DISPLAY:输出GRID型列表 一般使用REUSE_ALV_GRID_DISPLAY。
总部运维支持中心 | 21
ALV

示例
call function 'REUSE_ALV_GRID_DISPLAY' exporting I_CALLBACK_USER_COMMAND i_callback_pf_status_set i_callback_program is_layout it_fieldcat it_events i_grid_title I_SAVE tables t_outtab = itab. "内表,必输 = 'USER_COMMAND' "用户触发事件

输出参数TABLES:
INTERN:内表,存储单元格的内容。 结构如下: -ROW:数据所在行 -COL:数据所在列 -VALUE:数据,最长 50 个字符,如果超过,则相同 ROW COL 的记录出现 多行。

总部运维支持中心 | 15
上传下载文件

示例
call function 'ALSM_EXCEL_TO_INTERNAL_TABLE' exporting filename = p_file i_begin_col = 1 i_begin_row = 2 i_end_col = 11 i_end_row = 30000 tables intern = i_xlstmp exceptions inconsistent_parameters = 1 upload_ole = 2 others = 3.

输出参数TABLES

DATA_TAB

函数的参数filename是string类型的, 可以定义一个临时变量,类型为 string的,把从选择屏幕获得的文件名赋值给string类型的临时变量,再将临 时变量的值传递给filename参数.
总部运维支持中心 | 12
上传下载文件

示例
CALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = p_file
AB-KN-1003
ABAP常用技术
版本:2012V1 课时:40 课时
此文档仅供中石化内部使用
课程概述
课程内容: 介绍SAP的编程语言ABAP的最常使用技术和技巧。
培训对象:
本课程适用中国石化ABAP模块初级支持人员。
软件信息: 本课程基于SAP R/3 4.6C(或ECC6.0)
总部运维支持中心 | 1
总部运维支持中心 | 6
事件块及程序分析方法

AT LINE-SELECTION示例
START-OF-SELECTION. WRITE: 'Basic List, SY-LSIND =', sy-lsind. AT LINE-SELECTION.
IF sy-lsind = 3.
sy-lsind = 0. ENDIF.
LIST型ALV列表 :LIST型的ALV列表与传统WRITE输出的列表样式更为相近, 只是除标准菜单栏之外,在工具栏上还有许多功能按钮。 GRID型ALV列表 :GRID型ALV列表比较类似EXCEL的样子,与LIST一致的是 它也有很多功能按钮.

总部运维支持中心 | 18
ALV

ALV列表的功能按钮
总部运维支持中心 | 4
事件块及程序分析方法

执行报表程序时的执行流程:

1. LOAD-OF-PROGRAM:程序开始执行时候自动调用
2. INITIALZATION:初始化事件,对程序设置值和屏幕元素进行初始化赋值。
3. AT SELECTION-SCREEN OUTPUT:选择屏幕的PBO事件,选择屏幕元素初始化赋值, 重新显示选择屏幕时数值清空。 4. AT SELECTION-SCREEN :选择屏幕的PAI事件,用于选择屏幕输入数值的检查和帮
供应商物料文本采购组织工厂税率净价不要输入千分位用文本格式有效起始日文本8位不要分隔符有效截至日移动平均价采购方式总部运维支持中心28供应商物料文本采购组织工厂税率文本格式分隔符日价采购方式401132304601020081419427nlm1nlm1j122020101101201111013002einalifnreinamatnreineekorgeinewerkseinemwskzeinenetpreinalifabeinalifbikonhkosrteinawglifbdc点击创建记录输入记录名和要执行的事务代码点开始记录
总部运维支持中心 | 22
ALV

ALV函数中常用参数介绍

调用ALV的函数,除了输出使用的内表是之外,还有两个部分是必需 确认的:列栏位属性和布局属性。

列栏位属性就是设置输出中列的位置的参照,列的标题等信息;同样


布局属性是设置输出ALV列表的整体布局的属性。
如果输出表是某个系统结构表可以没有调用列栏位属性。函数可参照 此结构自动创建列属性,从而输出。没有调用布局属性时,系统按默 认布局输出,不做任何调整。针对这两个属性对应的输入,下面分别 对IT_FIELDCAT与IT_LAYOUT的参数值做简单介绍。
相关文档
最新文档