`
zjut_xiongfeng
  • 浏览: 277954 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Complex LUW processing

 
阅读更多
<!--左侧开始-->

Complex LUW processing

用两种方式可以实现在一个program内部调用其它的ABAP program

l 被调用的program是被inserted的,即目前的program停止运行,当被调用的program执行完毕后,当前的program继续执行。CALL FUNCTION CALL TRANSACTION SUBMIT <program> AND RETURN可以实现这种方式的调用。

l Calling programinterrupted,被调用的programstarted SUBMIT <program> LEAVET TO TRANSACTION <t_code>是这种方式的调用。

SUBMITSUBMIT AND RETURN用来调用excutable programCALL TRANSACTIONLEAVET TO TRANSACTION用来调用transactions

Function module可以asynchronously call,通过addition STARTING NEW TASK <task name>来实现。Function module的异步调用与调用程序是平行运行的。可以在调用程序中通过RECEIVE RESULTS FROM FUNCTION来得到function module的运行结果。想使用STARTING NEW TASKfunction module必须被标识为remote enable

一个user session可以有多个external session(mode)。一个external session对应于一个SAP R/3 window。一个external session可以最多有20internal session。一个程序运行在一个internal session中。Program data只有在program中是visible的。可以通过ABAP MEMORYSAP MEMORY在不同的程序间传递data。一个user session有一个SAP MEMORY,这个user session的所有external session都可以访问他。SAP MEMORY用于存储变量值,其生命周期与user session一样。可以用SAP MEMORY中的值作为screen input fields的缺省值。由于user session的所有external session都可以访问SAP MEMORY,所以在external sessioninternal session之间传递值时应当使用ABAP MEMORY

每个external session有自己的ABAP MEMORYexternal session中的internal session都可以访问ABAP MEMORY中的值。ABAP MEMORY可以存储internal programvariable,可以用来在external sessioninternal session中传递数据。一旦external session结束相应的ABAP MEMORY也会被初始化。

在程序中调用function module,function module所在的function group就会被加载到当前的internal session,当前的程序中断,function module处理完后,程序继续执行。一旦function group被加载,function group的全局变量就会一直存在在internal session中直到程序结束。这也意味着当调用这个function group的另外一个function module时,function group不需要再被加载。

CALL TRANSACTION SUBMIT AND RETURN运行在另外一个新的internal session中,被调用的program结束时,这个internal session就会被terminated,调用程序就会继续执行。被调用程序可以通过LEAVE PROGRAM来结束自己。

当使用SUBMIT调用程序时,当前的program就会被从internal sessionremoved,被调用的程序被load到当前的internal session

LEAVE TO TRANSACTIONremove掉当前external session中的所有internal session,然后创建新的internal session来执行调用的transaction。同时ABAP MEMORY也会被initialized

Asynchronously function module call会在当前的application server上新的openedexternal session上执行。可以在调用程序上得到function module的运行结果(RECIEIVING RESULTS FROM FUNCTION)。

有五种方式可以实现程序间传递数据;

l 通过被调用程序的interfacesubroutinefunction moduledialog modulesstandard selection screen of a report

l 通过ABAP MEMORY

l 通过SAP MEMORY

l Database tablesEXPROT IMPORT

l Presentation serverGUI_UPLOAD GUI_DOWNLOAD)或者application server(TRANSFER READ DATASET)上的文件

SUBROUTINEFUNCTION MODULE可以通过INTERFACE来传递数据,standard selection screen程序可以通过下列方式来实行:

l 通过variantSUBMIT addition USING SELECTION-SET

l selection-screeninput fields赋值

SUBMIT <program> [AND RETURN] [VIA SELECTION-SCREEN]

WITH <parameter> EQ <value>

WITH <sel_opt> <operator> <value> SIGN <s>

WITH <sel_opt> BETWEEN <value1> AND <value2> SIGN <s>

WITH <sel_opt> NOT BETWEEN <value1> AND <value2> SIGN <s>

WITH <sel_opt> IN <sel_tab>

通过EXPORT TO MEMORY ID <id>可以把程序中变量的值以data cluster的形式copyABAP memory中。<id>最长为13个字符是创建的data cluster的唯一标识。如果EXPROT有相同的memory id,原来的就会被overwrite。通过IMPORT FROM MEMORY ID <id>可以把data cluster中的值读到程序的变量中。Readwrite程序的变量必须有相同的formatFREE MEMORY ID <id>可以删除对应的data clusterFREE MEMORY则会初始化当前external sessionABAP MEMORY。通过IMPORT可以只读取data cluster的部分数据。

object navigator中你可以定义PARAMETER ID(存储在表TPARA)parameter ID不能超过20个字符。通过SET PARAMETE ID可以为当前user sessionSAP MEMOORYparameter设置值。可以在同一个user session中通过GET PARAMETER ID得到SAP MEMORYparameter的值。也可以通过在screen field中输入值来设置SAP MEMORYparameter的值。为了做到这点定义screen fielddata element必须与相应的parameter联系起来。而且screen fieldset parameter属性必须激活。反过来,screen field也可以取得SAP MEMORYparameter的值,做到这点需要下面三个前提条件:

l 定义screen fielddata element要与parameter id联系起来

l Screen fieldGET function被激活。

l 程序只为screen field提供初始值。

这样programscreen就可以与SAP MEMORY交换数据了。可以通过screen fieldf1 help->technical info直到screen field与那个parameter id有联系。

通过SAP MEMORY可以为screen field设置缺省值,如:

Carrid = LH.

SET PARAMETER ID CAR FIELD carrid.

CALL TRANSACTION TABC [AND SKIP FIRST SCREEN].

Function module和调用他的program在一个LUW中。通过SUBMIT AND RETURN,CALL TRANSACTION,SUBMIT,LEAVE TO TRANSACTION调用的program,运行在它们自己的LUW中,也就是说它们的CHANGE REQUEST有自己的update key。对于SUBMIT AND RETURNCALL TRANSACTION调用的程序,在被调用的程序完成后,调用程序的LUW还会继续。调用和被调用程序的LUW是分开独立运行的,这样就会出现下面的情况:

l 直接的inline change会在screen改变时写到数据库中

l 对于update flagPERFORM ON COMMIT在各自的LUW中需要一个COMMIT WORK

如果使用SUBMITLEVAE TO TRANSACTION,调用程序的LUW就会结束。Direct inline change在每次screen改变时会更新到数据库中。然而如果在调用程序之前你的update flag没有通过COMMIT WORK关闭,log table中的update request就被会被update work process执行。对于PERFORM ON COMMIT也是这样。

如果transaction是通过call transaction调用的,可以在没有user dialog的情况下执行transaction。这种情况下你需要通过using addition传入一个batch input format internal table并且指定MODE参数为‘N。另外MODE还可以设置为AE。通过参数UPDATE可以改变transaction更新数据的方式。默认情况下为Aasynchronous),还可以是S(synchronous)Llocal)。如果UPDATE=S,只有被调用的transactionupdate完成后,调用程序的LUW才能继续。如果被调用transactionupdate成功,sy-subrc就会返回0。通过UPDATE=S可以实现只有被调用事务的更新成功后才能进行后续处理。

通过CALL FUNCTION ABC IN NEW TASK T1异步调用的function module运行在单独的SAP LUW中。Calling program的处理会暂时停止,直到function module被触发。也就是说registered update flagPERFORM ON COMMIT仍然被保留。Asynchronous function call会激发implicitly database commit,也就是说在此时inline changes会写入到数据库中。

如果一个data record有类型为Elock,程序本身以及synchronous调用的function module所在的function group可以访问这条记录。Original lockcumulative counter会被加1。通过SUBMINT AND RETURNCALL TRANSACTION调用的程序不能在这条记录上再设置lock。通过SUBMITLEAVET TO TRANSACTION调用程序时,调用程序被终止,相应的locks也会被删除掉。Calling programcalled program之间便不会存在lock conflict。同一个用户的不同external sessionlock request与不同用户的user sessionlock request的处理方式一样。

SUBMIT AND RETURNCALL TRANSACTION有自己的SAP LUW,可以通过它们实现nested SAP LUWAsynchronous function module call可以实现处理同时运行。使用异步function module调用的场景:

你希望在另外一个external session中显示相关的数据,异步调用一个function modulefunction module中通过call transaction来调用程序,通过function moduleinterface来传递相关数据。在调用transaction之前可以把相应的数据写入到SAP MEMORY中。

几种程序调用方式的比较列表:

Call

Data

SAP LUW

Suitable for

CALL FUNCTION

Own

Same

Display data

Data change(within the same SAP LUW)

SUBMIT AND RETURN

CALL TRANSACTION

Own

Own

Display data

Data change(in different LUWs)

CALL FUNCTIONSTARTING NEW TASK

Own

Own

Parallel tasks

<!-- You can follow any responses to this entry through the <a href="http://scnblogs.techweb.com.cn/abaplv/archives/176.html/feed" mce_href="http://scnblogs.techweb.com.cn/abaplv/archives/176.html/feed">RSS 2.0</a> feed. -->Trackback: http://scnblogs.techweb.com.cn/abaplv/archives/176.html/trackback

分享到:
评论

相关推荐

    基于LT3932实现模拟调光驱动LUW-W5AP的仿真设计

    通过LT3932实现模拟调光驱动LUW-W5AP 程序已经调试好,注释齐全。 基于LTspice仿真。 1.输入特性:Ui=24V 2.输出特性:Uo=6.6V(2A max) 3.LED负载:LUW-W5AP 4.电路具有UVLO功能 5.实现模拟调光 文件...

    DB2 for LUW Advanced Database Administration for Experts

    ### DB2 for LUW Advanced Database Administration for Experts #### 一、课程概述 《DB2 for LUW Advanced Database Administration for Experts》是一门针对高级数据库管理员的专业培训课程,旨在深入讲解 IBM ...

    The DB2Night Show #216 Db2 LUW Problem Determination Class

    DB2 LUW 问题诊断技术详解 在 Db2 LUW Problem Determination and Troubleshooting Workshop 中,Pavel Sustr 从 IBM Toronto Lab 演示了 Db2 11.1 问题诊断技术和现场演示。该 Workshop 的主要目的是教会参与者...

    DB2 LUW to UDB400 v3

    ### DB2 LUW 至 UDB400 v3 移植指南关键知识点解析 #### 一、并发与恢复(Concurrency and Recovery) 并发控制和恢复机制是数据库管理系统中的核心功能,确保了数据的一致性和可靠性。在从 DB2 LUW 迁移到 UDB400...

    The Latest in Advanced Performance Diagnostics for DB2 LUW

    在IT领域,尤其是在数据库管理与优化方面,IBM的DB2 LUW(Linux, UNIX, and Windows)系统一直是业界关注的焦点。本次分享聚焦于“高级性能诊断技术在DB2 LUW中的最新应用”,旨在深入探讨如何有效提升DB2 LUW的性能...

    IBM Optim PerformanceManager for DB2 for LUW

    ### IBM Optim PerformanceManager for DB2 for LUW:深入解析与应用指南 #### 一、IBM Optim PerformanceManager概览 IBM Optim PerformanceManager是一款专为DB2 for Linux, UNIX, and Windows (LUW)设计的性能...

    LUW DB2 v11新特性

    LUW DB2 v11的新特性,包括新功能,不推荐使用的功能和已经停用的功能的说明

    DB2 9 for LUW Advanced Performance and Tuning

    ### DB2 9 for LUW 高级性能与调优 #### 一、DB2调优机会 在DB2 9 for Linux, UNIX 和 Windows (LUW) 的环境中,调优是一个关键步骤,旨在提高数据库系统的性能并确保其能够有效地支持业务需求。本章节将深入探讨...

    IBM InfoSphere CDC for DB2 LUW 中文文档

    ### IBM InfoSphere Change Data Capture (CDC) for DB2 LUW 版本 6.5.2 #### 一、概述 IBM InfoSphere Change Data Capture (CDC) for DB2 for Linux, UNIX, and Windows (简称 DB2 LUW) 是一款强大的数据库变更...

    A Practical Guide to Backup and Recovery of DB2 LUW in SAP Environment

    本文将深入解析《DB2 LUW在SAP环境下的实用备份与恢复指南》的核心知识点,包括DB2 LUW数据库的基础架构、日志管理、备份与恢复策略以及在SAP NetWeaver中的集成。 ### 数据库对象 DB2 LUW(Linux, UNIX, Windows...

    High Availability and Disaster Recovery Options for DB2 on LUW

    本文档深入探讨了IBM DB2 for Linux, UNIX, and Windows (LUW) 的高可用性(High Availability, HA)和灾难恢复(Disaster Recovery, DR)选项。该文档由Whei-Jen Chen、Masafumi Otsuki、Paul Descovich、...

    basis :background processing.pdf

    在SAP R/3系统中,背景处理(Background Processing)是一项关键功能,它允许执行非对话型且耗时较长的任务,如批量处理、数据迁移或报表生成等。与对话处理不同,对话处理中的每个逻辑工作单元(LUW)由调度程序...

    主机DB2数据库系统

    DB2 UDB is available on a variety of platforms, including -large systemssuch as z/OS, OS/390, VM, and VSE -mid-sized systemssuch as AS/400, AIX, and Solaris ...and UNIX Systems ( DB2 FOR LUW )

    DB2.LUW.SQL.V97.Cookbook.2010

    This book is free because I want people to use it. The more people that use it, and the more that it helps them, the more inclined I am to keep it up to date.

    Quest_Spotlight-on-DB2-LUW_6.8.2

    亲自测过,完美运行,license在文本里,运行软件时,输入license即可。

    DB2数据库连接所需的一些驱动包

    DB2数据库是由IBM开发的一款关系型数据库管理系统,广泛应用于企业级的数据存储和管理。在与DB2进行交互时,特别是通过编程语言(如Java)进行连接时,需要依赖特定的驱动包来建立通信桥梁。标题提到的"DB2数据库...

    db2Driver

    DB2 Driver,正如标题所示,是指IBM的DB2数据库系统为Java应用程序提供的JDBC(Java Database Connectivity)驱动程序。这个驱动使得Java开发者能够通过编写Java代码来与DB2数据库进行交互,实现数据的增删改查等...

    log4db2:用SQL-PL编写的DB2 for LUW的日志记录实用程序-开源

    Log4db2是DB2 LUW的日志记录实用程序,它使用带有SQL PL代码SQL指令。 其目的是提供一种从SQL例程编写消息的简便方法,并有可能直接从数据库中查询这些消息并查看生成的输出,从而可以监视进程的进度。 该实用程序...

    DB2 Family Fundamental

    DB2 UDB for z/OS and OS/390 Database Administration Workshop Setting up a DB2 Database Referential Integrity Getting Data into and out of DB2 Keeping Your DB2 Data in Good Shape ...

Global site tag (gtag.js) - Google Analytics