ABAP对象编程教程 - R/3系统4.6C版

5星 · 超过95%的资源 需积分: 10 24 下载量 189 浏览量 更新于2024-07-26 1 收藏 6.85MB PDF 举报
"ABAP官方教程---BC404_EN46C_FV 是一份关于ABAP Objects的教程,专注于R/3系统中的面向对象编程,适用于4.6C版本,发布于2000年9月。此教程涵盖了ABAP语言在对象导向编程方面的核心概念和技术。" 在R/3系统中,ABAP(Advanced Business Application Programming)是SAP开发的一种编程语言,用于构建企业级业务应用。4.6C是ABAP的一个重要版本,它引入了许多面向对象编程(OOP)的概念和特性,使得开发者可以更有效地构建可维护和可扩展的软件。 本教程BC404深入介绍了ABAP Objects,这是ABAP语言的面向对象扩展。ABAP Objects引入了类、对象、继承、封装、多态等OOP的关键概念。以下是一些可能涵盖的主题: 1. **类和对象**:ABAP Objects允许创建具有属性(数据成员)和方法(操作)的类,这些类实例化为对象。类定义了对象的行为和状态,而对象是类的实例,具有实际的数据和执行行为。 2. **继承**:ABAP Objects支持单一继承,一个类可以从另一个类派生,继承其属性和方法。这有助于代码重用和结构化设计,减少重复代码。 3. **封装**:封装是保护数据免受非法访问的一种机制。在ABAP Objects中,可以通过访问修饰符(如`PUBLIC`,`PROTECTED`,`PRIVATE`)来控制类成员的可见性。 4. **多态**:多态允许不同类型的对象对同一消息作出不同的响应。在ABAP Objects中,接口和虚方法是实现多态性的关键。 5. **事件和信号**:ABAP Objects引入了事件处理机制,使得对象可以在特定条件下触发事件,并由其他对象响应。 6. **构造器和析构函数**:ABAP Objects支持类的生命周期管理,通过构造函数初始化对象,析构函数则在对象不再使用时进行清理工作。 7. **异常处理**:教程可能还涵盖了ABAP的异常处理机制,如何通过`TRY-CATCH`块来捕获和处理运行时错误。 8. **动态编程**:ABAP Objects允许动态地创建对象和调用方法,增加了程序的灵活性。 此外,教程可能还会讲解如何在R/3系统中集成这些对象导向功能,包括与数据库交互、与用户界面交互以及与其他ABAP模块的协作。同时,由于4.6C是较旧的版本,学习时应考虑其与现代SAP NetWeaver或SAP S/4HANA平台的差异。 请注意,这份教程可能包含了版权保护的信息,未经授权复制或翻译是不被允许的。任何使用此教程进行学习或实践,都需要遵守SAP和相关软件供应商的条款和条件。
2008-04-23 上传
ABAP/4 用户指南是 关于 ABAP/4 编程语言的 手册。其目 的在于

? 向新的 ABAP/4 程序员提供 从基本语言 组件到复杂 报表和事务 编码的全面 指导
? 向资深 ABAP/4 程序员提供 解决特殊问 题的参考方 案

为满足这些 需求,特提 供一个整体 概述并本指 南分成三个 部分,循序 渐进,逐步 深入

? ABAP/4 的基本组件
? 如何编写 报表程序
? 如何编写 事务

ABAP/4 用户指南目 的不在替换 ABAP/4 关键字文档 。可以通过 如下方式调 用该文档

? 从“ABAP/4 编辑器:初 始屏幕”( 事务 SE38) 中选择“实 用程序 -> ABAP/4 关键字文档
? 选择 ABAP/4 编辑器中的 “帮助”
? 将光标放 在 ABAP/4 编辑器中的 关键字上, 然后按下 F1 键

ABAP/4 用户指南的 真正目的在 于说明如何 使用以及为 何使用 ABAP/4 关键字。并 为此提供了 许多示例, 构成用户自 己测试程序 的基础。
要获取详细 信息,可以 进行以下某 种操作:

? 关于关键 字的详细信 息,请参阅 关键字文档 。
? 关于 ABAP/4 环境术语的 详细信息, 请从“ABAP/4 编辑器:初 始屏幕”( 事务 SE38) 中选择“实 用程序 -> ABAP/4 关键字文档 ”。然后就
会出现与解 释文本相链 接的主题层 次。要找出 这些文本用 于哪些主题 ,请选择“ 查看 -> 标题和关键 字”。屏幕 右侧就会出 现一个名称 列表。对于 所有以 ABEN 而非 TITL 开头的名称 ,如果双击 树结构中的 主题,则会 出现文本屏 幕。

? 关于如何 提高 ABAP/4 任务性能的 技巧,请从 “ABAP/4 开发工作台 ”上选择事 务 SE30 或“测试 -> 运行时间分 析”,然后 单击“提示 和技巧”。

Neither this documentation nor any part of it may be copied or reproduced in any form or by any means or translated into another language, without the prior consent of SAP AG.

帮我分析这段abap代码:FUNCTION zhs_jcy_dmt001. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" VALUE(IM_MTART) TYPE ZHS_RANGE_MTART OPTIONAL *" VALUE(IM_MATKL) TYPE ZHS_RANGE_MATKL OPTIONAL *" VALUE(IM_SENDMSG) TYPE FLAG DEFAULT SPACE *" TABLES *" ET_DATA STRUCTURE ZHS_JCY_DTM001 OPTIONAL *"---------------------------------------------------------------------- INCLUDE zgen_bc_x_fmlog_first_phase. WAIT UP TO 3 SECONDS. INCLUDE zgen_bc_x_fmlog_last_phase. EXIT. DATA: lo_jcy TYPE REF TO zcl_hans_jcy_handle, lt_dtm001 TYPE TABLE OF zhs_jcy_dtm001, ls_dtm001 TYPE zhs_jcy_dtm001, lt_dtmc01 TYPE TABLE OF zhs_jcy_dmt01, ls_dtmc01 TYPE zhs_jcy_dmt01. "实例化类 CREATE OBJECT lo_jcy EXPORTING im_hs_tcode = gc_hs_tcode_dtm001. "判断监控点是否启用 IF lo_jcy->is_active( ) EQ zcl_hans_jcy_handle=>no. RETURN. ENDIF. PERFORM frm_get_dmtc01. REFRESH:lt_dtm001. SELECT a~mtart a~matnr b~maktx a~matkl INTO CORRESPONDING FIELDS OF TABLE lt_dtm001 FROM mara AS a INNER JOIN makt AS b ON a~matnr EQ b~matnr AND b~spras EQ sy-langu WHERE mtart IN im_mtart AND matkl IN im_matkl. DATA: l_char TYPE c, l_num TYPE n, l_len TYPE i, l_cnt TYPE i. LOOP AT lt_dtm001 INTO ls_dtm001. CLEAR l_cnt. LOOP AT gt_dtmc01 INTO gs_dtmc01 WHERE mtart EQ ls_dtm001-mtart AND zmatcode NE space. CLEAR:l_char,l_len. CONDENSE: gs_dtmc01-zmatcode. l_len = strlen( gs_dtmc01-zmatcode ). DO l_len TIMES. l_char = gs_dtmc01-zmatcode+l_cnt(1). ENDDO. ENDLOOP. ENDLOOP. CHECK lt_dtm001[] IS NOT INITIAL. ls_dtm001-statm = gc_mat_statm_k. MODIFY lt_dtm001 FROM ls_dtm001 TRANSPORTING statm WHERE statm NE gc_mat_statm_k. et_data[] = lt_dtm001[]. FREE:lt_dtm001. CHECK im_sendmsg EQ 'X'. REFRESH:gt_zhs_jcy_ab_data. CLEAR: gs_return. LOOP AT et_data INTO ls_dtm001. "设置WS参数值 CLEAR gs_zhs_jcy_ab_data. * KEY值 gs_zhs_jcy_ab_data-key03 = ls_dtm001-statm. gs_zhs_jcy_ab_data-key02 = ls_dtm001-mtart. gs_zhs_jcy_ab_data-key01 = ls_dtm001-matnr. "栏位值 gs_zhs_jcy_ab_data-field01 = ls_dtm001-mtart. gs_zhs_jcy_ab_data-field02 = ls_dtm001-matnr. gs_zhs_jcy_ab_data-field03 = ls_dtm001-maktx. gs_zhs_jcy_ab_data-field04 = ls_dtm001-zmatcode. gs_zhs_jcy_ab_data-field05 = ls_dtm001-matkl. gs_zhs_jcy_ab_data-field06 = ls_dtm001-statm. APPEND gs_zhs_jcy_ab_data TO gt_zhs_jcy_ab_data. ENDLOOP. CALL METHOD lo_jcy->call_ws_monitor EXPORTING im_zhs_jcy_ab_data = gt_zhs_jcy_ab_data IMPORTING ex_return = gs_return. FREE lo_jcy. ENDFUNCTION.

2023-07-12 上传