- 浏览: 468131 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yuan_bin1990:
您好,请问下demo如何运行啊,准备研究研究,但不知道入口啊。 ...
ssh2(struts2+spring2.5+hibernate3.3)自动生成代码程序 -
luyulong:
[b][/b][i][/i][ ...
jQuery进度条插件 jQuery progressBar -
txin0814:
mark..
读取文件目录 -
vurses:
[align=center][color=red][size= ...
include 与 jsp:include区别 -
Roshan2:
http://lijiejava.iteye.com/blog ...
Spring AOP 入门实例
定义 可以使用例程定义关键值或特性的复杂的转换规则. 例程是本地 ABAP 类,它们包括预定义的定义和实施范围.进站和出站参数的 TYPES及方法签名都存储在定义范围中.实际例程创建于实施范围中.使用该方法,可以分配 ABAP 对象.在生成期间,把此方法嵌入到转换程序中. 转换包括以下类型的例程: 步骤 输入以下信息,以创建例程: 1. 在*$*$ 全局开始 ... 和 *$*$ 全局结束 ...期间,可用定义全局数据声明 'CLASS-DATA',随后,它们将在所有的例程中可用.在当前包中,在当前包中,可以使用'DATA'存取数据声明. 注意: 只要为此请求专门保留的处理实例继续存在,那么,在序列装载期间,保持以 'CLASS-DATA '声明的数据.由于性能原因,在并行装载期间,已实例化的处理也不止使用一次.这意味着,保持处理实例中以'CLASS-DATA'声明的数据. 因此,根据该方案,使用全局数据的'CLASS-DATA' 或 'DATA'. 2. 在*$*$例程开始... 和 *$*$例程结束...之间,插入该例程的程序代码. 在编码中不要使用 SAP COMMIT (ABAP 声明:COMMIT WORK).当执行声明时,用于从源中读取的使用指针丢失.作为替代,使用 DB COMMIT(调用功能模块DB_COMMIT)或避免这些 COMMIT 在一起。 3. 请检查该例程的语法. 4. 保存该例程. 退出该编辑器以结束此例程的维护. 相关 根据批管理器中的设置,以序列的或并行的方式更新数据. (一)开始例程 在开始转换时为每个数据包执行开始例程.开始例程不包含任何返回值.其用于执行基本计算并将结果保存在全局数据结构或表中.系统可在其他例程中访问该结构或表.其可更改或删除数据. 导入 REQEUST: 请求标识 DATAPAKID: 当前数据包数 导出 MONITOR: 用户定义监控表.使用 MONITOR_REC 行结构填充该表 (框架自动添加待处理的记录数). 更改 SOURCE_PACKAGE: 包含例程的输入字段的结构 抬高 CX_RSROUT_ABORT: 若在例程内触发类型为 cx rsrout_abort 的异常,整个装载处理将终止.在提起监控中将请求标记为已终止.当前数据包的处理已终止.在严重错误的情况下,这可能有效. 使用 ERP 系统中总帐: 业务额 数据源 (FI_GL_1) 将数据装载到FIGL: 业务额数据存储对象 (0FIGL_O06). 需要创建开始例程,该例程删除数据包中的所有记录,这些记录的借方和贷方过帐为零. 1. 创建转换.转换的源包含字段总计借方过帐 (UMSOL) 和总计贷方过帐 (UMHAB),这些字段分配到信息对象总计借方过帐(0DEBIT) 和总计贷方过帐 (0CREDIT). 2. 选择创建开始例程.打开例程编辑器. 3. 转到例程的本地备件,并插入以下编码行: *$*$ 例程开始 - 仅在该行下插入代码 *-* *$*$ 例程结束 - 仅在此行前插入代码 *-* 删除语句是唯一需要过滤借方和贷方过帐的行,这些过帐不包含来自数据包的值. 4. 退出例程编辑器. 5. 保存转换.开始例程前的铅笔图标指示退出开出例程. (二)关键值或特性的例程 关键值或特性的例程可用作规则类型.也就是说,可用把例程定义为关键值或特性的转换规则. 在信息块案例中,也可以选择带有单位的例程.这将使例程也含有返回参数'UNIT',它使您可以存储需要的关键值单位,如, 'PC'.例如,可以使用该选项把源中可用的单位千克转换成目标中的吨. 导入 REQEUST: 请求标识 DATAPAKID:当前包的编号 SOURCE_FIELDS:在例程的用户界面上定义的含输入字段的结构 导出 MONITOR:用户特定监控表.用 MONITOR_REC 行结构填充此表(框架结构自动添加已处理记录的编号). RESULT:必须把计算的关键值或特性的结果分配到可用的 RESULT. CURRENCY (可选的): 在有关货币的例程中,必须在此分配货币. UNIT(可选的): 在有关单位的例程中,必须在此分配单位. 抬高 为了控制写入到目标中的内容,系统使用含例外类的例外处理: CX_RSROUT_SKIP_RECORD:如果在例程中,随时可以触发 抬高例外类型 cx_rsrout_skip_recor ,那么系统终止当前行的处理继而开始下一数据记录的处理. CX_RSROUT_ABORT:如果在例程中,随时可以触发 抬高例外类型 cx_rsrout_abort ,那么终止整个装载过程.在监视器中,把此请求标记为已终止.终止当前包的处理.在出现严重错误的情况下,这是有帮助的. 特性例程的示例: 使用 ERP 系统中的 总分类帐:交易额 (FI_GL_1)数据源把数据装载到FIGL:交易额(0FIGL_O06)数据源对象. 需要在目标系统中创建借方/贷方标识特性(0FI_DBCRIND)的例程,它分配借方的过帐的值 D 和贷方过帐的值 C. 1. 现在处于转换维护事务中,要显示规则明细,请在规则组中双击 借方/贷方标识(0FI_DBCRIND). 2. 选择添加源字段来添加字段总计借方过帐(UMSOL)和 总计贷方过帐 (UMHAB),这样它们在您的例程中就是可用的. 3. 选择例程 作为规则类型.该例程编辑器打开. 4. 插入以下代码行,它们返回 D 或 C 作为结果值: *$*$ 开始例程 - 仅在该行以下插入代码 *-* *$*$ 结束例程 - 仅在该行以前插入您的代码 *-* 系统检查借方和贷方过帐是否包含以下值: 5. 退出例程编辑器. 6. 在规则明细对话框中,选择应用值. 7. 保存转换. (三)结束例程 结束例程是包含表的例程,该表以目标结构的格式作为输入和输出参数.可在转换后使用该例程按包逐个后处理数据.例如,可删除不需要更新的记录或执行数据检查. 注意,仅复制转换中有规则的结束例程的字段。 导入 REQEUST: 请求标识 DATAPAKID: 当前数据包数 导出 MONITOR: 用户特定监控的表.使用 MONITOR_REC 行结构填充该表 (框架自动添加处理的记录数). 更改 RESULT_PACKAGE: 包含所有经过转换的数据 抬高 CX_RSROUT_ABORT: 若在例程的任何点上触发类型为 cx rsrout_abort 的异常,整个装载处理将终止.在提取监控中将请求标记为已终止.当前包的处理终止.在这种严重错误的情况下,其可能有效. 使用 ERP 系统中总帐: 业务额 (FI_GL_1)数据源将数据装载到FIGL: 业务额 (0FIGL_O06) 数据存储对象. 需要创建结束例程,该例程填充附加计划/实际标识 (ZPLACTUAL) 信息对象.要执行该操作,由例程读取值类型字段.若值为 10(实际),系统将值 A 写入到计划/实际标识 (ZPLACTUAL) 信息对象;若值为 20 (计划),系统将值 P 写入到计划/实际标识(ZPLACTUAL) 信息对象. 1. 在转换维护事务中.选择创建结束例程.例程编辑器打开. 2. 插入以下编码行: *$*$ begin of routine - insert your code only below this line *$*$ end of routine - insert your code only before this line *-* result_package 上的编码循环,并搜索含值类型 10 或 20 的值.系统然后将相应的值传递到这些值的计划/实际变式(ZPLACTUAL) 信息对象中. 3. 退出例程编辑器. 4. 保存转换.结束例程前的铅笔图标标识退出结束例程. (四) 专家例程 (五)反冲例程(Invertierungsroutine) 反冲例程 使用 在例程编辑器中,为之前定义的例程创建反向例程。例如,当在虚拟提供者中执行查询时,需要此例程。在这种情况下,需要方向例程传输导航步骤的选择标准至提取器的选择标准。当您使用报表-报表界面转到另一个 SAP 系统时,同样应用它。如果您不创建反向例程,系统将选择所有值。 可为所有类型的例程创建反向例程。以下例程适用: 范例 在这个例子中,目标特征中的德语代码 'HERR' 和 'FRAU' 被映射到源字段 PASSFORM(地址格式)的英文代码 'MR' 和 'MRS'。源字段中的所有其它值都映射到初始值。 编码例程如下: 相应的反向例程如下:
例如,这意味着可以在其他例程中使用中间结果,或者,如果再次调用相同的例程,那么可用重新使用第一次调用的结果.使用
开始例程参数
范例
... "在此插入代码
DELETE SOURCE_PACKAGE 在此 UMHAB = 0 和 UMSOL = 0
使用
关键值或特性例程中的参数
范例
... "在此插入您的代码
* 例程的结果值
if SOURCE_FIELDS-umhab ne 0 and SOURCE_FIELDS-umsol eq 0.
RESULT = 'D'.
elseif SOURCE_FIELDS-umhab eq 0 and SOURCE_FIELDS-umsol ne 0.
RESULT = 'C'.
else.
monitor_rec-msgid = 'ZMESSAGE'.
monitor_rec-msgty = 'E'.
monitor_rec-msgno = '001'.
monitor_rec-msgv1 = 'ERROR, D/C Indicator'.
monitor_rec-msgv2 = SOURCE_FIELDS-umhab.
monitor_rec-msgv3 = SOURCE_FIELDS-umsol.
RAISE EXCEPTION TYPE CX_RSROUT_ABORT.
endif.
使用
结束例程中的参数
范例
... "insert your code here
loop at RESULT_PACKAGE assigning <RESULT_FIELDS>
where vtype eq '010' or vtype eq '020'.
case <RESULT_FIELDS>-vtype.
when '010'.
<RESULT_FIELDS>-/bic/zplactual = 'A'. "Actual
when '010'.
<RESULT_FIELDS>-/bic/zplactual = 'P'. "Plan endcase.
endloop.
*$*$ 例程开始 - 在此行下插入您的代码 *-*
CASE SOURCE_FIELDS-passform.
WHEN 'HERR'. RESULT = 'MR'.
WHEN 'FRAU'. RESULT = 'MRS'.
WHEN OTHERS. RESULT = space.
ENDCASE.
*$*$ 例程结束 - 在此行前插入您的代码 *-*
ENDMETHOD. "compute_0PASSFORM
*$*$ 反向例程开始 - 在此行下插入您的代码 *-*
DATA l_r_set TYPE REF TO cl_rsmds_set.
IF i_r_selset_outbound->is_universal( ) EQ rsmds_c_boolean-true.
* If query requests all values for characteristic 0PASSNAME
* request also all values from source field PASSNAME
c_r_selset_inbound = cl_rsmds_set=>get_universal_set( ).
c_exact = rs_c_true. "Inversion is exact
ELSE.
TRY.
IF me->p_r_set_mrs IS INITIAL.
* Create set for condition PASSFORM = 'FRAU'
me->p_r_set_mrs =i_r_universe_inbound->create_set_from_string( 'PASSFORM = ''FRAU''' ).
ENDIF.
IF me->p_r_set_mr IS INITIAL.
* Create set for condition PASSFORM = 'HERR'
me->p_r_set_mr =i_r_universe_inbound->create_set_from_string( 'PASSFORM = ''HERR''' ).
ENDIF.
IF me->p_r_set_space IS INITIAL.
* Create set for condition NOT ( PASSFORM = 'FRAU' OR PASSFORM= 'HERR' )
l_r_set = me->p_r_set_mr->unite( me- >p_r_set_mrs).
me->p_r_set_space = l_r_set->complement( ).
ENDIF.
* 组成内向选择
c_r_selset_inbound = cl_rsmds_set=>get_empty_set( ).
* 检查外向选择是否包含值 'MR'
IF i_r_selset_outbound->contains( 'MR' ) EQrsmds_c_boolean-true.
c_r_selset_inbound = c_r_selset_inbound->unite(me>p_r_set_mr ).
ENDIF.
* 检查外向选择是否包含值 'MRS'
IF i_r_selset_outbound->contains( 'MRS' ) EQrsmds_c_boolean-true.
c_r_selset_inbound = c_r_selset_inbound->unite(me>p_r_set_mrs ).
ENDIF.
* 检查外向选择是否包含初始值
IF i_r_selset_outbound->contains( space ) EQrsmds_c_boolean-true.
c_r_selset_inbound = c_r_selset_inbound->unite(me>p_r_set_space ).
ENDIF.
c_exact = rs_c_true. "Inversion is exact
CATCH cx_rsmds_dimension_unknown
cx_rsmds_input_invalid
cx_rsmds_sets_not_compatible
cx_rsmds_syntax_error.
* Normally, this should not occur
* If the exception occurs request all values from source
* for this routine to be on the save side
c_r_selset_inbound = cl_rsmds_set=>get_universal_set( ).
c_exact = rs_c_false. "Inversion is no longer exact
ENDTRY.
ENDIF.
* 最后,添加(可选)进一步代码以转换外向项目到内向项目
* 检查外向特征 0PASSFORM (字段名称 PASSFORM)是否要求追溯查询状态
READ TABLE i_th_fields_outbound
WITH TABLE KEY segid = 1 "Primary segment
fieldname = 'PASSFORM'
TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
* Characteristic 0PASSFORM is needed
* ==> request (only) field PASSFORM from the source for this routine
DELETE c_th_fields_inbound
WHERE NOT ( segid EQ 1 OR
fieldname EQ 'PASSFORM' ).
ELSE.
* Characteristic 0PASSFORM is not needed
* ==> don't request any field from source for this routine
CLEAR c_th_fields_inbound.
ENDIF.
*$*$ 反向例程结束 - 在此行前插入您的代码。 *-*
发表评论
-
在 Message Broker中使用 SAP JCO 连接 SAP 系统
2011-08-10 11:02 2148http://www.ibm.com/developerwor ... -
在Java中调用BAPI或RFC(转)
2011-08-10 10:55 2800JCo是一个高性能的,基于JNI的中间件,它实现了SAP的RF ... -
Java和SAP的三种数据通信方式 RFC IDOC XI
2011-08-10 10:38 3851JAVA与SAP数据交互的方式总结RFC方式:Java程序直接 ... -
BW增量更新的理解(时间戳)
2011-08-09 17:53 1769在BW中,存在两种数据抽取方式,完全更新与增量更新,完全更 ... -
SAP BW 邮件发送监控策略
2011-08-09 17:53 1621SAP BW 邮件发送监控策略 ... -
BW与ECC系统连接设置
2011-08-09 17:51 2396第一步:分配逻辑系统 SCC4先查看逻辑系统->S ... -
如何查找DataSource和table的mapping?
2011-08-09 17:48 1580相信,大家在使用BI Content的时候,经常需要查找Dat ... -
Delta中不得不看的几个表
2011-08-09 17:47 909Delta中不得不看的几个表: RODELTAMT 说明每 ... -
BW中如何进行数据监控?
2011-08-04 19:12 1128这周轮到我值班,要凌 ... -
总结InfoCube的优势分析及维度选择技巧
2011-08-04 17:58 795一直以来,infocube都是一个很纠结的东西。 作为 ... -
总结InfoCube的优势分析及维度选择技巧
2011-08-04 17:55 1109一直以来,infocube都是一个很纠结的东西。 作为 ... -
BW:监控 TCODE
2011-08-04 17:38 1119SM21: 检查系统日誌 ST22: abap DUMP ... -
BW:对于非法字符的控制
2011-08-04 17:35 1129其实这也是个老生常 ... -
BW学习——权限
2011-08-02 21:32 1389根据顾问的要求,学习了BW权限。要点如下: 1,BW的权 ... -
偶尔会被人问到的Cube的几个数字
2011-08-02 21:05 8951. 事实表:最多能够容纳233个key figures ... -
SAP学习日志--SAP中常用且重要的数据库表
2011-08-02 21:00 1563MARA - Material Master: General ... -
BW数据源深入研究【转自WKingChen的博客】
2011-08-02 19:21 1643DataSource是BW中非常重要的部分,一个合格的BW顾问 ... -
BW之R3数据源及PSA
2011-07-31 15:23 2488BW数据源主要有R3、文件 ... -
理解BW数据模型 - DSO模型
2011-07-31 13:55 2178DSO的用法有很多,比 ... -
所有归类于 ‘SAP BW’ 分类的日志
2011-07-31 13:35 6421BW:SAP STMS配置 1、SM59,删 ...
相关推荐
在Oracle数据库管理与维护过程中,有时会遇到“连接空闲例程”(Idle Connection Routine)的问题。这类问题通常发生在长时间未使用的连接上,由于缺乏活动导致连接被Oracle认为是闲置状态,进而可能引发一系列错误...
1. 定义与结构:例程(Routine)在ABAP中是一种可重用的代码模块,通常用于处理特定任务,例如数据转换或接口通信。它们可以独立存在,也可以嵌入到其他程序中,如报表、事务码等。 2. 类型:ABAP例程分为两种类型...
首先,完成例程模型是Windows套接字API(Winsock)中的一个关键特性,它通过异步I/O来提高程序性能。当一个网络I/O操作完成后,系统会调用预先设定的完成例程,而不是阻塞当前线程等待I/O完成。这使得应用程序能够...
以上各例程是理解LPC1100单片机功能和应用的关键,通过深入学习和实践,开发者能够更好地掌握该系列单片机的特性,从而在实际项目中发挥出其强大的功能。每个例程都是一个生动的教学实例,可以帮助开发者快速上手并...
网络编程模型中的完成例程(Completion Routine),是异步I/O模型中的一种处理机制,它在Windows系统中被广泛使用,特别是在高并发、低延迟的网络应用中。本配套代码旨在帮助读者深入理解这一概念,并通过实践提升网络...
完成例程(Completion Routine)是重叠I/O操作的一个关键组件,当一个I/O操作完成后,系统会调用预先注册的完成例程来处理后续逻辑。 在Windows API中,通常使用`CreateFile`函数创建一个支持重叠I/O操作的句柄,并...
"VC SOCKET 完成例程服务器"是一个基于VC++实现的、利用完成例程(Completion Routine)技术的网络服务器示例。本文将深入探讨这个服务器的工作原理,以及如何将其应用于实际项目。 首先,理解完成例程的概念至关...
在程序中右键选择“新建Routine”,输入例程名,指定所属程序,然后确认。若需要,可以设置某个例程为主例程,右键程序属性中选择“配置”,在“主要”栏中指定。 综上所述,通过RSLogix5000,我们可以系统地创建...
例如,在此例程中,SCI0CR1被设置为0,表示默认值或未启用某些特性。 - **设置SCI控制寄存器2 (SCI0CR2)**:用来配置接收和发送数据的方式,包括是否启用中断接收等。例如,在本例程中,SCI0CR2被设置为0x2C,其中...
3. **编写代码**: 根据例程和手册,编写控制LPC1100的C或C++程序。 4. **编译与下载**: 使用IDE编译代码,通过调试工具将程序烧录到微控制器。 5. **调试与测试**: 在硬件上运行程序,使用调试器进行断点设置、变量...
标题 "TinyM0_Routine.zip_NXP例程_STM32F103_hurriedhzh_nxp io" 指的是一个关于NXP单片机和STM32F103微控制器的编程示例集合。这个压缩包包含了NXP公司产品相关的程序代码,由用户"hurriedhzh"编写或整理,特别...
虽然没有提供具体的文件名,但根据"TinyM0_Routine"的命名,我们可以推测这可能包含了针对LPC11xx系列微控制器中Cortex-M0内核的小型、基础或入门级别的例程。这些例程可能涵盖了一系列基础功能,如初始化系统设置、...
中断服务程序(ISR,Interrupt Service Routine)是处理中断请求的核心代码,它定义了当中断发生时系统应执行的操作。 要使用C++编程实现外部中断,我们需要完成以下步骤: 1. **配置中断源**:在程序初始化阶段,...
在这个项目中,它被用来配置与VL53L1X传感器交互所需的I2C或SPI接口,以及可能的中断服务程序(Interrupt Service Routine, ISR)。 VL53L1X传感器与STM32之间的通信通常通过I2C协议进行,因为I2C协议简单且节省...
组件例程(Routine)则是指与这些组件相关的函数或过程,它们实现了特定的功能,例如响应用户的点击事件、数据处理等。通过编写和调用组件例程,开发者可以扩展组件的基本功能,满足特定项目的需求。 源码(Source ...
在IT领域,分发例程(Dispatch Routine)是操作系统或者应用程序中用于处理特定事件或请求的函数。这些例程通常负责将任务分派到适当的处理程序,以执行相应的功能。"原始地址"指的是该分发例程在内存中的初始位置,...
开箱例程(Out-of-box routine)是为了帮助开发者快速理解和启动对硬件的初步操作而设计的。这个例程通常包括了基础的配置、初始化、数据采集以及简单的数据分析流程,让开发者能够迅速上手,为后续的项目开发打下...
在MATLAB环境中实现遗传算法,可以利用其强大的数值计算能力和灵活的编程特性。本例程“ga.rar”提供了一个完整的MATLAB GA实现,包含交叉、变异等核心操作。 主要程序文件`main.m`是整个遗传算法的入口,它通常会...
2. 例程源码:在编程中,例程(Routine)指的是完成特定任务的一组指令。PLC的程序开发中经常会用到不同功能的例程,比如计时器例程、计数器例程、算术运算例程等。源码(Source Code)是指程序编写时所使用的代码,...
1. **转换例程(Transformation Routine)**:转换例程是一种编程机制,用于处理数据在不同格式或结构之间的转换。在SAP系统中,它通常用于实现数据的规范化、标准化或格式化等任务。 2. **监控条目(Monitor ...