Seeburger Predefined Standard Graphical Mappings XI/PI mappings.

Hi All,
As I am aware that Seeburger provides E2X and X2E Mapping through BIC Mapping Designer.
Does it also provides Predefined Standard Graphical Mappings for XI/PI for different versions like
---  850 (Purchase Order to Idoc)
---  810 (INVOIC to 810)
---  Dispatch Advice (856)
---  FunctionalAcknowledgements (997)
I do not have Seeburger with me currently. Can i get the xsd/xslt of the above mappings.
Please let me know for the same.

Hi Rick,
> Does it also provides Predefined Standard Graphical Mappings for XI/PI for different versions
Yes you are correct. When you buy the seeburger adapter you will have all the xsds and the mappings which conversts from edi xml to xml and vice versa for all these transactions given by them. If you need to do any customization then you need to do on your own or else you can take the help of seeburger consulting or any consultant who is aware of making these changes. You need to do MM for all of these.
> I do not have Seeburger with me currently.
Without the seeburger or any other edi adapters you cannot do it on  your own using xi. You need to have an adapter for this to do. I dont think we have the xsds for edi online anywhere. But you can see some help in this link:
http://www.erpgenie.com/sap/sapedi/mapping.htm
http://www.linkedin.com/news?viewArticle=&articleID=55241305&gid=41612&articleURL=http%3A%2F%2Fit%2Etoolbox%2Ecom%2Fblogs%2Fehadzipetros%2Fsap-edi-mapping-an-idoc-for-every-interface-33013&urlhash=3x2A&trk=news_discuss
Regards,
---Satish

Similar Messages

  • Performance of an UDF v/s standard graphical mapping functions

    Hello Experts,
    I would like to get your opinion/comments on the performance issues with respect to speed of execution when using graphical functions for doing the date conversion requirement given below:
    Requirement is to convert input date u20182008-12-03u2019 from the source side to u201820081203u2019 on the target side.
    We have used the standard graphical mapping functions 'substring' & 'replacestring' for doing this conversion as explained here: The u2018substringu2018 function is used to capture the part of the string from the source. A u2018constantu2019 with value u2018u2013u2018 is replaced by u2018constantu2019 (empty value) by using the standard text function u2018replaceStringu2019 in the target side.
    We did the same using the following UDF too:
    public String convertDate(String dateStringInOriginalFormat) {
                SimpleDateFormat originalFormatter = new SimpleDateFormat("yyyy-MM-dd");
                SimpleDateFormat newFormatter = new SimpleDateFormat("yyyyMMdd");
                ParsePosition pos = new ParsePosition(0);
                Date dateFromString = originalFormatter.parse(
                            dateStringInOriginalFormat, pos);
                String dateStringInNewFormat = newFormatter.format(dateFromString);
                return dateStringInNewFormat;
    From a critical performance point of view, which approach will fare better?
    Thanks in Advance,
    Earnest A Thomas
    Edited by: Earnest Thomas on Dec 4, 2008 6:54 AM

    Hi,
    Not only in this case but in general it is always better to use the functions available in MM and only if your requirement is not satisfied with the standard mapping functions then go for UDF.
    Also for your requirement no need of going for substring....you can directly use the DateTransform function available.
    Source --> DateTransform --> Target
    Regards,
    Abhishek.
    Edited by: abhishek salvi on Dec 4, 2008 11:25 AM

  • Vga standard graphics adapter driver update

    Hi does anyone know where I can find an updated VGA standard graphic adapter driver.? or what make it is?My young one is trying to play Roblox but keeps getting a message that the driver needs to be updated.Also if it is possible to install an other graphics card.

    Hi,
    You need to be running DirectX 9 at a minimum and it's not on your PC per PC image that you posted. You can try installing Directx but I suspect that you might need a video card.  If you need a video card, then it's an older AGP style, 1.5v card that would be rated for Directx 9 and would work with the power supply size in your PC.
    Good luck!
    HP DV9700, t9300, Nvidia 8600, 4GB, Crucial C300 128GB SSD
    HP Photosmart Premium C309G, HP Photosmart 6520
    HP Touchpad, HP Chromebook 11
    Custom i7-4770k,Z-87, 8GB, Vertex 3 SSD, Samsung EVO SSD, Corsair HX650,GTX 760
    Custom i7-4790k,Z-97, 16GB, Vertex 3 SSD, Plextor M.2 SSD, Samsung EVO SSD, Corsair HX650, GTX 660TI
    Windows 7/8 UEFI/Legacy mode, MBR/GPT

  • Upgrading standard XI contents with customised mappings

    Hi
    I've successfuliy done the integration of IS-RETAIL , POSDM. and SAP POS with XI
    Standard XI contents are used for this integration.
    I've customised the standard XI contents as per our Client requirement.
    Now i want to upgrade the standard XI contents...Store connectivity...with the latest available version...
    What will happen to my customised mappings?
    How to retain my customised mappings while upgrading the standatd XI contents...?
    .....Abhijit

    U dont have to delete ur existing maps. After the import of latest version, it won't overwrite the existing SWC (make sure that the versions are different). By default, u will have both the SWC present. U may continue using some old components.
    Regards,
    Prateek

  • Question on use of multi-mappings in interface mappings

    We have the following scenario :
    1. XI receives a orders05 idoc - xml and does a first message map - splitting this xml into two - a lookup key msg type and a copy of orders05 msg type ( 1:n )
    2. These two messages from the first mapping are used in a second message mapping ( of type multi-mapping too ) ( n:1) to create the final orders05 message.
    3. These two message maps are put sequentially in the interface mapping.
    orders05 -> MessageMapping1 -> MessageMapping2 -> orders05 . Please note that our objective is to send one single ORDERS05 idoc into the end R3 system - using the idoc adapter. The use of multi-mapping is in the interim - and not in the idoc adapter.
    Issues:
    a. the "ns0:Messages" and "ns:Message[n]" tags are not being created automatically.
    b. In the interface determination we do not see the interface mapping when we select the 'enhanced' option.
    Any ideas, pointers as to what I am missing here ? I am on a critical timeline to implement this and can't understand whats going wrong ?

    Michal,
               In your suggestion - to use two interface mappings - how I can configure the two interface mappings as a part of a single interface determination so that they execute one after the other .  Or is it two interface determinations - one for each interface mapping - how do I relate these two ?
    Also, I assume that since the message mappings in the interface mappings are multimappings , I need to use enhanced interface determination .
    Could you share one of the scenarios wherein you had two interface mappings execute in a series - ? Thanks for your time.

  • Profile mappings - generated pluggable mappings

    When you create a correction mapping using the create correction in data profile editor, the mapping contains generated pluggable mappings. Where can you find these mappings?

    I'm not sure where you find the pluggable mapping but if you select the plug in your map and use the 'Visit Child Graph' button from the 'General' toolbar you should be able to see mapping detail.
    Cheers
    Si

  • Wil this Dell Display work with my mac pro ? standard graphics card

    http://accessories.euro.dell.com/sna/productdetail.aspx?c=uk&l=en&s=dhs&cs=ukdhs 1&sku=184923
    Above is the link to the one i want! will it work? i think yes but second opinion would be nice.

    It depends in part on what graphic card it is attached to. And if you have 2nd monitor.
    Mac Pro 2009 + OEM GT120 + Dell doesn't always work with the MiniDisplay Ports.

  • Interface Mappings required?

    Hey,
    trying <a href="/people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit blog</a> but with a web service instead of RFC. Using the same WSDL data type for file input and SOAP request and for SOAP response and file output.
    Because of using the same data type, do I have to create any interface mappings or message mappings?
    My graphical BPM monitoring in sxmb_moni shows that he gets until synchronous sending of soap message, but there he stops with following error:
      <SAP:Code area="UNKNOWN">ModuleUnknownException</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>com.sap.aii.af.mp.module.ModuleException: com.sap.aii.af.ra.ms.api.DeliveryException: Application:EXCEPTION_DURING_EXECUTE: caused by: com.sap.aii.af.ra.ms.api.DeliveryException: Application:EXCEPTION_DURING_EXECUTE: at com.sap.aii.af.mp.soap.ejb.XISOAPAdapterBean.process(XISOAPAdapterBean.java:1111) at
    thx
    chris

    Christian,
    You can skip the message and interface mapping for the mappings betwwen the file and bpm and bpm to file..
    but in tne case of the syncronous rfc or soap in ur case, u wud b reqd to have the mapping.
    regards,
    Vishal

  • Collaboration Room Mappings

    I'm in a bit over my head, I've been charged with setting up collaboration room templates.  I've been through the EP300 information regarding rooms.  Unfortunately I've not had much luck with the mappings.  I understand in theory how they are supposed to work, but I'm unable to find solid examples of what the mappings actually mean and how they are used.  Both in the 300 coursework and in searching service and sdn.
    Is there a good source for information on Mappings and what mappings are required for RoomTasks, DocumentsandLinksTeam, etc?

    Hi Chris,
    See, mapping is done for configuring the pages u have added in your workset, i.e as they are linked to each other, so mapping is the physical way to provide the path for them.
    For doing mapping u need to compare the mapping of your new template with the standard and then u need to create the extensions for that.
    And about ur answer mapping is always required when u are creating a new template but when u are duplicating the original template that time u don't need to do mapping as it will take the original mapping by default.
    Best Regards
    Shashank Saxena
    I hope if u got the answer for ur post then plz reward with points which is at the left side of ur page. thanks

  • Export mappings through OMB plus

    Hi All,
    We have developed 125 mappings across 10 modules. I wanted all mappings .Mdl files separately (E.g : we have mapping names are abc and xyz… we need to mdl file abc.mdl and xyz.mdl).
    If I export mappings in Design Center mapping wise it will take alot of to complete/get individual scripts (.mdl)
    I heard for time consuming and security wise we should use OMB plus.
    Any one helps me to export mappings individually through OMB.
    Is there any way to pass mapping name should export the mapping with log file?
    Thanks and Regards
    Venkat

    OK, here is a script that you will be able to adapt get you to where you want to go. Bear in mind that it uses a config file to hold some variables, and library file which I shall also attach.
    This script isn't exaclty what you are asking, but it's pretty close. The reason I made this script was to be able to create a clone of an existing project through OMB+ becuase in our corporate dev environment I couldn't lock down the repository in exclusive mode to do this in a simple copy/paste. The script uses a bit of a work-around because the MDL files include full path names, meaning if you export from project A it will want to import into project A. So if I want to import them into project B I take the existing project A, rename it to the desired new name (B), do the export (on a per-unit basis as you want), then rename the existing project back to what it was (A), create the new empty project (B) and import the objects now that the naming structures will match. (whew - did you catch all that?)
    Anyway, here is the script. It uses standard TCL for a lot of the file stuff (glob etc), and for cycling through the modules and objects using the TCL foreach statement. Don't worry about the functions you don't recognize like exec_omb. They are in the library (coming up next), which just has to be colocated with the script for the script to reference at runtime:
    # PVCS Version Information
    #/* $Workfile:   create_deployment_mdl.tcl  $ $Revision:   2.1  $ */
    #/* $Author:   michael.broughton  $
    #/* $Date:   27 Nov 2008 10:00:04  $ */
    # To run this script, start OMB Plus.
    # Run this script providing the command (on Windows): source <path>/copy_owb_project.tcl
    # e.g. source c:/owb/script/copy_owb_project.tcl
    #  Get Current Directory and time
    set dtstmp     [ clock format [clock seconds] -format {%Y%m%d_%H%M}]
    set scrpt      [ file split [file root [info script]]]
    set scriptDir  [ file dirname [info script]]
    set scriptName [ lindex $scrpt [expr [llength $scrpt]-1]]
    set cnfg_lib "$scriptDir/ombplus_config.tcl"
    set owb_lib  "$scriptDir/omb_library.tcl"
    #  Import Lbraries
    #      Assumes that owb_config and omb_library are in the same directory as this
    #      script.
    #get config file
    source $cnfg_lib
    #get standard library
    source $owb_lib
    #  Set Logfile
    #    This will overwrite anything set in the config file.
    set    SPOOLFILE  ""
    append SPOOLFILE $scriptDir "/log_"  $scriptName "_" $dtstmp ".txt"
    # PROCEDURES SECTION
    proc owb_export_object {PROJECT_NAME MODULE_NAME MDL_PATH LOG_PATH TYPE TYPELIST} {
       set print [OMBCC '$MODULE_NAME']
       set objList [OMBLIST $TYPELIST]
       foreach objName $objList {
            set objExportStatus [OMBEXPORT MDL_FILE '$MDL_PATH/$objName.mdl' PROJECT '$PROJECT_NAME'\
                                   COMPONENTS ($TYPE '$MODULE_NAME/$objName')\
                                   OUTPUT LOG '$LOG_PATH/$objName.log']
            puts "$objExportStatus"
       set print [OMBCC '..']
       puts "$print"
    # MAIN SCRIPT SECTION
    log_msg LOG  "This script is used to copy a minor version project into a major version project and to create a full project mdl file suitable for deployment. "
    log_msg LOG  "WARNING: This will overwrite any existing metadata in the major version project. If you have metadata you wish to save, stop now and go take care of that first! "
    puts -nonewline "Do you want to continue?(Y/N) "
    set EXITEARLY [gets stdin]
    if [string match N $EXITEARLY] {
       log_msg LOG  "Exiting...."
       return 0
    } elseif [string match n $EXITEARLY] {
       log_msg LOG  "Exiting...."
       return 0
    } else {
       log_msg LOG  "Continuing...."
    puts -nonewline "Which project do you want to create a deployment file for? "
    set CUR_PROJECT_NAME [gets stdin]
    puts -nonewline "Under which final project name? "
    set NEW_PROJECT_NAME [gets stdin]
    puts -nonewline "Local temp directory to use for MDL generation: "
    set MDL_PATH [gets stdin]
    set LOG_PATH "$MDL_PATH/logs"
    #set up the temp directory structure
    if [catch { set retstr [file mkdir $MDL_PATH] } errmsg] {
        puts "Cannot create directory $MDL_PATH. due to error: $errmsg"
        puts "Exiting...."
        exit
    } else {      
       #make the subdirectories
       file mkdir $LOG_PATH
       file mkdir $MDL_PATH/mappings
       file mkdir $MDL_PATH/transforms
       file mkdir $MDL_PATH/tables
       file mkdir $MDL_PATH/views
       file mkdir $MDL_PATH/sequences
    #  Connect to repos
    set print [exec_omb OMBCONNECT $OWB_DEG_USER/$OWB_DEG_PASS@$OWB_DEG_HOST:$OWB_DEG_PORT:$OWB_DEG_SRVC USE REPOSITORY '$OWB_DEG_REPOS']
    if [omb_error $print] {
        exit_failure "Unable to connect to repository."
    } else {
        log_msg LOG "Connected to Repository"   
    #    Test given project names
    set print [exec_omb OMBCC '$CUR_PROJECT_NAME']
    if [omb_error $print] {
       exit_failure "Project $CUR_PROJECT_NAME does not exist. Nothing to copy...."
    exec_omb OMBCC '..'
    set print [exec_omb OMBCC '$NEW_PROJECT_NAME']
    if [omb_error $print] {
       log_msg LOG "Confirmed project $NEW_PROJECT_NAME does not exist..."
    } else {  
       log_msg LOG "Target project $NEW_PROJECT_NAME already exists. Dropping...."
       exec_omb OMBCC '..'
       set print [exec_omb OMBDROP PROJECT '$NEW_PROJECT_NAME']
       if [omb_error $print] {
           exit_failure "Unable to drop project $NEW_PROJECT_NAME. Exiting...."
       OMBSAVE
    #    Begin export.
    log_msg LOG "Temporarily renaming current project to new project name"
    set print [exec_omb OMBALTER PROJECT '$CUR_PROJECT_NAME' RENAME TO '$NEW_PROJECT_NAME']
    if [omb_error $print] {
       exit_failure "This account does not have alter privileges on this project"
    OMBSAVE
    OMBCC '$NEW_PROJECT_NAME'
    set moduleList [OMBLIST ORACLE_MODULES]
    foreach moduleName $moduleList {
       owb_export_object $NEW_PROJECT_NAME $moduleName $MDL_PATH/mappings $LOG_PATH MAPPING MAPPINGS
       owb_export_object $NEW_PROJECT_NAME $moduleName $MDL_PATH/transforms $LOG_PATH PROCEDURE PROCEDURES
       owb_export_object $NEW_PROJECT_NAME $moduleName $MDL_PATH/transforms $LOG_PATH FUNCTION FUNCTIONS
       owb_export_object $NEW_PROJECT_NAME $moduleName $MDL_PATH/tables $LOG_PATH TABLE TABLES
       owb_export_object $NEW_PROJECT_NAME $moduleName $MDL_PATH/views $LOG_PATH VIEW VIEWS
       owb_export_object $NEW_PROJECT_NAME $moduleName $MDL_PATH/sequences $LOG_PATH SEQUENCE SEQUENCES
    puts "BACKUP PROCESS has been Completed."
    OMBCC '..'
    log_msg LOG "Renaming back to original project name"
    set print [exec_omb OMBALTER PROJECT '$NEW_PROJECT_NAME' RENAME TO '$CUR_PROJECT_NAME']
    log_msg LOG "Creating new project..."
    set print [exec_omb OMBCREATE PROJECT '$NEW_PROJECT_NAME']
    if [omb_error $print] {
       exit_failure "Unable to create project '$NEW_PROJECT_NAME'"
    } else {
       log_msg LOG "Created Project '$NEW_PROJECT_NAME'"
       exec_omb OMBSAVE
       exec_omb OMBCC '$NEW_PROJECT_NAME'
    log_msg LOG "Creating modules..."
    foreach moduleName $moduleList {
        set print [exec_omb OMBCREATE ORACLE_MODULE '$moduleName']
    OMBSAVE
    log_msg LOG "Importing Tables..."
    set mdl_maps [glob $MDL_PATH/tables/*mdl]
    foreach mdl_map $mdl_maps {
         puts "importing TABLE module $mdl_map from MDL file"
         set print [OMBIMPORT MDL_FILE '$mdl_map' USE CREATE_MODE MATCH_BY NAMES]
         puts "$print"
    OMBSAVE
    log_msg LOG "Importing Sequences..."
    set mdl_maps [glob $MDL_PATH/sequences/*mdl]
    foreach mdl_map $mdl_maps {
         puts "importing SEQUENCE module $mdl_map from MDL file"
         set print [OMBIMPORT MDL_FILE '$mdl_map' USE CREATE_MODE MATCH_BY NAMES]
         puts "$print"
    OMBSAVE
    log_msg LOG "Importing Views..."
    set mdl_maps [glob $MDL_PATH/views/*mdl]
    foreach mdl_map $mdl_maps {
         puts "importing VIEW module $mdl_map from MDL file"
         set print [OMBIMPORT MDL_FILE '$mdl_map' USE CREATE_MODE MATCH_BY NAMES]
         puts "$print"
    OMBSAVE
    log_msg LOG "Importing PlSql..."
    set mdl_maps [glob $MDL_PATH/transforms/*mdl]
    foreach mdl_map $mdl_maps {
         puts "importing PLSql module $mdl_map from MDL file"
         set print [OMBIMPORT MDL_FILE '$mdl_map' USE CREATE_MODE MATCH_BY NAMES]
         puts "$print"
    OMBSAVE
    log_msg LOG "Importing Mappings..."
    # import mappings from directory of MDL files
    set mdl_maps [glob $MDL_PATH/mappings/*mdl]
    foreach mdl_map $mdl_maps {
         puts "importing MAPPING module $mdl_map from MDL file"
         set print [OMBIMPORT MDL_FILE '$mdl_map' USE CREATE_MODE MATCH_BY NAMES]
         puts "$print"
    OMBSAVE
    log_msg LOG "Completed Import..."
    log_msg LOG "Exporting complete project file...."
    set objExportStatus [OMBEXPORT MDL_FILE '$MDL_PATH/$NEW_PROJECT_NAME.mdl' PROJECT '$NEW_PROJECT_NAME' OUTPUT LOG '$LOG_PATH/$NEW_PROJECT_NAME.log']
    puts "$objExportStatus"
    log_msg LOG "Cleaning up temp directory..."
    file delete -force $MDL_PATH/mappings
    file delete -force $MDL_PATH/transforms
    file delete -force $MDL_PATH/tables
    file delete -force $MDL_PATH/views
    file delete -force $MDL_PATH/sequences
    file delete -force $LOG_PATH
    OMBDISCONNECT And here is my standard helper library:
    # PVCS Version Information
    #/* $Workfile:   omb_library.tcl  $ $Revision:   2.9  $ */
    #/* $Author:   michael.broughton  $
    #/* $Date:   10 Mar 2009 11:04:50  $ */
    # Default logging function.
    #  Accepts inputs: LOGMSG - a text string to output
    proc log_msg {LOGTYPE LOGMSG} {
       #logs to screen and file
       global SPOOLFILE
       if {![info exists SPOOLFILE]} {
           puts "LOGFILE UNDEFINED! :-> $LOGTYPE:-> $LOGMSG"
       } else {
           set fout [open "$SPOOLFILE" a+]     
           puts $fout "$LOGTYPE:-> $LOGMSG"
           puts "$LOGTYPE:-> $LOGMSG"
           close $fout
    proc log_msg_file_only {LOGTYPE LOGMSG} {
        #logs to file only
        global SPOOLFILE
        if {![info exists SPOOLFILE]} {
           puts "LOGFILE UNDEFINED! :-> $LOGTYPE:-> $LOGMSG"
        } else {
           set fout [open "$SPOOLFILE" a+]     
           puts $fout "$LOGTYPE:-> $LOGMSG"
           close $fout
    proc exit_failure { msg } {
       log_msg ERROR "$msg"
       log_msg ERROR "Rolling Back....."
       exec_omb OMBROLLBACK
       log_msg ERROR "Exiting....."
       # return and also bail from calling function
       return -code 2
    proc exec_omb { args } {
       log_msg_file_only OMBCMD "$args"
       # the point of this is simply to return errorMsg or return string, whichever is applicable,
       # to simplify error checking using omb_error{}
       if [catch { set retstr [eval $args] } errmsg] {
          log_msg OMB_ERROR "$errmsg"
          log_msg "" ""
          return $errmsg
       } else {
          log_msg OMB_SUCCESS "$retstr"
          log_msg "" ""
          return $retstr
    proc omb_error { retstr } {
       # OMB and Oracle errors may have caused a failure.
       if [string match OMB0* $retstr] {
          return 1
       } elseif [string match ORA-* $retstr] {
          return 1
       } elseif [string match java.* $retstr] {
          return 1
       } elseif [string match Error* $retstr] {
          return 1
       } else {
          return 0
    proc ers_omb_connect { OWB_USER OWB_PASS OWB_HOST OWB_PORT OWB_SRVC OWB_REPOS } {
       # Commit anything from previous work, otherwise OMBDISCONNECT will fail out.
       catch { set retstr [ OMBSAVE ] } errmsg
       log_msg LOG "Checking current connection status...."
       #Ensure that we are not already connected.
       if [catch { set discstr [ OMBDISCONNECT ] } errmsg ] {
          set discstr $errmsg
       # Test if message is "OMB01001: Not connected to repository." or "Disconnected."
       # any other message is a showstopper!
       if [string match Disconn* $discstr ]  {
          log_msg LOG "Success Disconnecting from previous repository...."
       } else {
          # We expect an OMB01001 error for trying to disconnect when not connected
          if [string match OMB01001* $discstr ] {
              log_msg LOG "Disconnect unneccessary. Not currently connected...."
          } else {
              log_msg ERROR "Error Disconnecting from previous repository....Exiting process."
              exit_failure "$discstr"
       set print [exec_omb OMBCONNECT $OWB_USER/$OWB_PASS@$OWB_HOST:$OWB_PORT:$OWB_SRVC USE REPOSITORY '$OWB_REPOS']
       if [string match *Connected* $print] {
          return $print
       } else {
          return "OMB0-Unknown Error connecting. Validate connection settings and try again"
    proc ers_omb_drop_mapping { MAPNAME } {
        set mplst [OMBLIST MAPPINGS]
        if {[string match *$MAPNAME* $mplst]} {
           log_msg LOG "Mapping $MAPNAME Exists."
           log_msg LOG "Un-Deploying: $MAPNAME"
           set print [ exec_omb OMBCREATE TRANSIENT DEPLOYMENT_ACTION_PLAN 'DEPLOY_PLAN' ADD ACTION 'MAPPING_DEPLOY' SET PROPERTIES (OPERATION) VALUES ('DROP') SET REFERENCE MAPPING '$MAPNAME' ]
           if [omb_error $print] {
               exit_failure "Unable to create Deployment plan for '$MAPNAME'"
           set print [ exec_omb OMBDEPLOY DEPLOYMENT_ACTION_PLAN 'DEPLOY_PLAN' ]
           if [omb_error $print] {
               exit_failure "Error on execute of Deployment plan for '$MAPNAME'"
           exec_omb OMBDROP DEPLOYMENT_ACTION_PLAN 'DEPLOY_PLAN'
           exec_omb OMBSAVE
           set print [exec_omb OMBDROP MAPPING '$MAPNAME']
           if [omb_error $print] {
               exit_failure "Failed attempt to drop existing version of this mapping. Exiting."
    proc ers_omb_refresh_object { OBJTYPE OBJNAME } {
       # prompts for refresh of object if exists, except for sequence which do not structurally change.
       # VALID FOR SEQUENCES, TABLES, AND VIEWS ONLY
        global ORA_MODULE_NAME
        set l_objtype [string tolower $OBJTYPE]
        set OBJTYPES $OBJTYPE
        append OBJTYPES "S"
        set tblst [OMBLIST $OBJTYPES]
        if {[string match *$OBJNAME* $tblst]} {
             log_msg LOG "$l_objtype $OBJNAME already exists."
             if [string match SEQUENCE $OBJTYPE] {
                 # Sequences don't need refreshing!
                log_msg LOG "No need to refresh sequence..."
                return
             puts -nonewline "Do you want to re-import the $l_objtype?(Y/N) "
             set EXITEARLY [gets stdin]
             log_msg_file_only LOG "Do you want to re-import the $l_objtype?(Y/N) $EXITEARLY"
             if {[string match Y $EXITEARLY] || [string match y $EXITEARLY]} {
                log_msg LOG  "Re-importing $OBJNAME...."
                exec_omb OMBDROP $OBJTYPE '$OBJNAME'
                exec_omb OMBSAVE
                exec_omb OMBCC '..'
                set print [exec_omb OMBCREATE TRANSIENT IMPORT_ACTION_PLAN 'IMPORT_PLAN' ADD ACTION 'IMPORT_ACTION' SET REF SOURCE $OBJTYPE '$OBJNAME' SET REF TARGET ORACLE_MODULE '$ORA_MODULE_NAME']
                if [omb_error $print] {
                    exit_failure "Failed attempt to create import plan this  $l_objtype. Exiting."
                set print [exec_omb OMBIMPORT FROM METADATA_LOCATION FOR IMPORT_ACTION_PLAN 'IMPORT_PLAN']
                exec_omb OMBDROP IMPORT_ACTION_PLAN 'IMPORT_PLAN'
                if [omb_error $print] {
                    exit_failure "Failed attempt to import this  $l_objtype. Exiting."
                } elseif [string match *Failure* $print] {
                    #A failure to create second-class objects will not be caught with omb_error()
                    log_msg ERROR "An error prevented proper import. I recommend re-trying import through the GUI, and "
                    log_msg ERROR "then re-running this script but answering 'N' to re-import for this  $l_objtype."
                    exit_failure "Failed attempt to import this  $l_objtype. Exiting."
                if [string match TABLE $OBJECTTYPE] {
                 if [string match I_APLCTN_DTL_DSB_ELGBL_CHLDRN $OBJNAME] {
                    set SHDWNAME I_APLCTN_DSB_ELGBL_CHLDRN
                 } elseif [string match F_RPTD_ENTLMNT_MNTHLY_SNPSHT $OBJNAME] {
                    set SHDWNAME F_RPTD_ENTLMNT_SNPSHT
                 } elseif [string match U_PROG_BNFT_PRVSN_ADMS_MAP $OBJNAME] {
                    set SHDWNAME U_PROG_BNFT_PRVSN_ADM_MAP
                 } elseif [string match U_PROG_BNFT_PRVSN_LGCY_MAP $OBJNAME] {
                    set SHDWNAME U_PROG_BNFT_PRVSN_LGC_MAP
                 } elseif [string match U_BNFCRY_CMBND_DBL_ENTLMNT $OBJNAME] {
                    set SHDWNAME U_BNFCRY_CMBND_DB_ENTLMNT
                 } else {
                    set SHDWNAME $OBJNAME
                    if [catch { set retstr [ OMBALTER TABLE '$OBJNAME' SET PROPERTIES (SHADOW_TABLE_NAME) VALUES ( 'ERR\$_$SHDWNAME')] } errmsg] {
                       log_msg ERROR "Unable to set shadow table name for table $OBJNAME"
                       log_msg ERROR "$errmsg"
                exec_omb OMBCC '$ORA_MODULE_NAME'
             } else {
               log_msg LOG  "Skipping  $l_objtype re-import...."
        } else {
             log_msg LOG " $l_objtype $OBJNAME Does not exist."
             log_msg LOG  "Importing $OBJNAME...."
             exec_omb OMBCC '..'
             set print [exec_omb OMBCREATE TRANSIENT IMPORT_ACTION_PLAN 'IMPORT_PLAN' ADD ACTION 'IMPORT_ACTION' SET REF SOURCE $OBJTYPE '$OBJNAME' SET REF TARGET ORACLE_MODULE '$ORA_MODULE_NAME']
             if [omb_error $print] {
                 exit_failure "Failed attempt to create import plan this  $l_objtype. Exiting."
             set print [exec_omb OMBIMPORT FROM METADATA_LOCATION FOR IMPORT_ACTION_PLAN 'IMPORT_PLAN']
             exec_omb OMBDROP IMPORT_ACTION_PLAN 'IMPORT_PLAN'
             if [omb_error $print] {
                 exit_failure "Failed attempt to import this  $l_objtype. Exiting."
             } elseif [string match *Failure* $print] {
                 #A failure to create second-class objects will not be caught with omb_error()
                 log_msg ERROR "An error prevented proper import. I recommend re-trying import through the GUI, and "
                 log_msg ERROR "then re-running this script but answering 'N' to re-import for this  $l_objtype."
                 exit_failure "Failed attempt to import this  $l_objtype. Exiting."
             exec_omb OMBCC '$ORA_MODULE_NAME'
    }    And the config file:
    # PVCS Version Information
    #/* $Workfile:   ombplus_config.tcl  $ $Revision:   2.0  $ */
    #/* $Author:   gerry.hunt  $
    #/* $Date:   28 Nov 2008 08:37:12  $ */
    # This version of the Config file differs from the standard owb_config.tcl
    # used by the deployment script. It requires TWO repository configurations
    # (Corporate Design Repository and Deployment location runtime repository)
    # and does not require some of the logging / file location info used by the
    # install script.
    # GLOBAL VARIABLE DECLARATION SECTION
    #CORPORATE DESIGN REPOSITORY  CONNECTION INFORMATION
    # Login info for the design repository owner
    set OWB_DEG_USER    michael_broughton
    set OWB_DEG_PASS    my_password
    set OWB_DEG_HOST    123.4.5.6
    set OWB_DEG_PORT    1628
    set OWB_DEG_SRVC     ORCL
    set OWB_DEG_REPOS   owb_mgr
    # RUNTIME CONTROL CENTER AND LOCATION DECLARATION SECTION
    set CONTROL_CENTER_NAME        ERS_CTL_DEVR1000_1T
    set CONTROL_CENTER_SCHEMA      owb_mgr
    set CONTROL_CENTER_PASS        owb_mgr_PWD
    #Connection info to ers_etl_app deployment schema
    set DATA_LOCATION_NAME         ERS_DEVR1000_1T
    set DATA_LOCATION_VERS         10.2
    set DATA_LOCATION_USER         ERS_ETL_APP1T
    set DATA_LOCATION_PASS         ERS_ETL_APP1T
    set DATA_LOCATION_HOST         host001
    set DATA_LOCATION_PORT         1554
    set DATA_LOCATION_SRVC         orcl
    # PROJECT,MUDULE AND DIRECTORY DECLARATION SECTION
    set PROJECT_NAME       ERS_DM_R7_0C6_02
    set ORA_MODULE_NAME    ERS_ETL_APPDang... that's a lot of stuff. But it should get you well on your way to what you need.
    Cheers,
    Mike

  • Execute CDC mappings from a PL/SQL procedure

    Hi,
    I´m using OWB 11.2.0.2 for Linux. I´ve created some CDC mappings to update cubes with changes coming from other tables and cubes (from the tables that implement those cubes with the relational option). The issues are:
    - The CDC mappings run successfully from the OWB (Project Navigator - Start), but I cannot execute them from a procedure in PL/SQL with the following code:
    PROCEDURE "PROC_RUNCDCMAPPINGS" IS
    --inicializar variables aquí
    RetVal NUMBER;
    P_ENV WB_RT_MAPAUDIT.WB_RT_NAME_VALUES;
    -- ventana principal
    BEGIN
    RetVal:= BARIK.CDC_LOAD_CUBO_RECARGA.MAIN(P_ENV);
    RetVal:= BARIK.CDC_LOAD_CUBO_TOR.MAIN(P_ENV);
    RetVal:= BARIK.CDC_LOAD_CUBO_TOAE.MAIN(P_ENV);
    RetVal:= BARIK.CDC_LOAD_CUBO_VIAJES.MAIN(P_ENV);
    RetVal:= BARIK.CDC_LOAD_CUBO_TICKETINCIDENCIA.MAIN(P_ENV);
    RetVal:= BARIK.CDC_LOAD_CUBO_LIQMONEDERO.MAIN(P_ENV);
    RetVal:= BARIK.CDC_LOAD_CUBOS_LIQTEMPORALES.MAIN(P_ENV);
    COMMIT;
    END;
    It doesn´t report any error (the value for RetVal after execution is 0), but the cubes are not loaded with changes, and the changes stored in the J$_%tables are not consumed.
    Some of the options that may impact in the mappings are:
    - All the CDC are of Simple type
    - There are more than one subscriber to consume the changes, as for some tables, its changes must feed more than one CDC.
    - All the mappings include only one execution unit per mapping.
    - The integration/load template is the default: DEFAULT_ORACLE_TARGET_CT
    Other question is: As I explained, I need more than one subscriber because same updates must be consumed by different CDC mappings, to load different cubes, but I´ve not been able to assign the subscribers to only the tables associated with them, so all the subscribers are subscribed to all the changes in all the CDC tables, but as many of those subscribers never consume the changes of same tables, in the J$_% tables remains the not consumed records, and I haven´t found the way to purge those tables (other than the delete from J$_), nor to assign the tables with the subscribers (so the subscribers are only subscribed to their interested changes, that will be consumed, so the tables will be emptied after the consumption).
    Any help with these problems will be greatly appreciated.
    Tell me if more info is needed to clarify the situation.
    Best regards,
    Ana

    Hi David,
    Thank you for your reply.
    These mappings are the mappings needed to update the cubes with the changes detected by the CDC system, they are located under the Mapping Templates folder and I´m using code templates for the control of the loading and the integration (the DEFAULT_ORACLE_TARGET_CT) mapping.
    What I need is to execute these mappings within a PL/SQL procedure that will be invoked from different tools.
    I´ve done it for regular mappings (not CDC mappings), and it works. The code is the same as for the CDC ones:
    PROCEDURE "PROC_RUNLOADMAPPINGS" IS
    --inicializar variables aquí
    RetVal NUMBER;
    P_ENV WB_RT_MAPAUDIT.WB_RT_NAME_VALUES;
    -- ventana principal
    BEGIN
    RetVal:= BARIK.LOAD_CUBO_RECARGA.MAIN(P_ENV);
    RetVal:= BARIK.LOAD_CUBO_TOR.MAIN(P_ENV);
    RetVal:= BARIK.LOAD_CUBO_TOAE.MAIN(P_ENV);
    RetVal:= BARIK.LOAD_CUBO_VIAJES.MAIN(P_ENV);
    RetVal:= BARIK.LOAD_CUBO_TICKETINCIDENCIA.MAIN(P_ENV);
    COMMIT;
    END;
    -- End of PROC_RUNLOADMAPPINGS;
    ,and when I run it, the mappings are executed, but with the CDC ones it doesn´t (even when no error is reported).
    I know that they are deployed in the selected agent (in my case the Default_Agent), but when I start them from the OWB, the mapping packages are created in the DB schema, so, I thought that maybe I could invoke them....so what you tell me is that the only way to invoke them is from SQL*Plus? not from a regular PL/SQL procedure?
    Thank you very much,
    Ana

  • Interface Mapping with Multiple Message Mappings

    Hi My Scenario is
    File to Idoc.( Multiple records to Multiple idocs )
    Due to Complexity of Mapping I split the Mapping step into 2.
    My Source System does not provide Namspace when they are sending XML Data.
    When I try 2 mappings individually both Mappings works fine.
    However when I try test using Interface Mapping target messages are not generated.
    Since 2nd Mapping invoves Mapping Split its expecting extra tags as shown here in the Targert Message generated from Message Mapping 1.
    <i><ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
       <ns0:Message1></i>
    How can I solve this problem ?

    When I do Message Mapping:
    From message Mapping 1 target Produced is as follows:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:CostMaintenanceXI xmlns:ns0="http://test.xxx.com">
    <CostMaintenanceXI>
    <CostMaintenanceXI>
    <Product>000000000000000023</Product>
    <Plant>1401</Plant>
    <Supplier>0000000001</Supplier>
    <ValidityFrom>20021212</ValidityFrom>
    <DIIndicator>ZFOB</DIIndicator>
    <COGAmount></COGAmount>
    <COGCurrency></COGCurrency>
    <FreightAmount></FreightAmount>
    <FreightCurrency></FreightCurrency>
    <MISCAmount></MISCAmount>
    <MISCCurrency></MISCCurrency>
    <SPAAmount></SPAAmount>
    <SPACurrency></SPACurrency>
    <LandedCaseCost></LandedCaseCost>
    <LandedCaseCurrency></LandedCaseCurrency>
    <FrontLinePrice></FrontLinePrice>
    <FrontLinePriceCurrency></FrontLinePriceCurrency>
    </CostMaintenanceXI>
    </CostMaintenanceXI>
    </ns0:CostMaintenanceXI>
    in 2nd Mapping I entered some details in the test tab and the generated source is as follows:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
       <ns0:Message1>
          <ns1:CostMaintenanceXI xmlns:ns1="http://test.xxx.com">
             <CostMaintenanceXI>
                <CostMaintenanceXI>
                   <Product>1</Product>
                   <Plant>1</Plant>
                   <Supplier>2</Supplier>
                   <ValidityFrom>12212122</ValidityFrom>
                   <FOBIndicator/>
                   <DIIndicator>ZFOD</DIIndicator>
                   <COGAmount>10</COGAmount>
                   <COGCurrency/>
                   <FreightAmount>10</FreightAmount>
                   <FreightCurrency/>
                   <MISCAmount>10</MISCAmount>
                   <MISCCurrency/>
                   <SPAAmount>10</SPAAmount>
                   <SPACurrency/>
                   <LandedCaseCost/>
                   <LandedCaseCurrency/>
                   <FrontLinePrice/>
                   <FrontLinePriceCurrency/>
                </CostMaintenanceXI>
             </CostMaintenanceXI>
          </ns1:CostMaintenanceXI>
       </ns0:Message1>
    </ns0:Messages>
    As you can see both of the above structures differs in xmlns. I dont see anything else weird.

  • Literature of XSLT-Mappings

    Hallo,
    I want to change all message mappings in xslt-mappings.
    So I search literature or a book (from sap) of these sap xslt-mappings.
    Can anybody help me?
    Thanks.
    Regards
    Stefan

    Hi Stefan,
    i suppose you speak german (your name).
    My favorite side is the "Münz"-Side:
    http://de.selfhtml.org/xml/darstellung/index.htm
    some others:
    http://www.xsl-xml.de/xslt.html#ErsteUebungen
    http://www.oio.de/m/xslt-workshop/
    http://www.xsl-rp.de/tiki-index.php
    Regards,
    Udo

  • Replace mappings in Process Flows

    Hi,
    Is there an easy way of replacing an existing mapping ina PF with new version of the same?
    thanks
    mahesh

    OK, here is some sample code you can play with. What it does is drop the mapping activity from the process flow and then replace it with a fresh version, rebuilding parameters and transitions.
    I used an additional DB connection to query for problem activities. You can see the logic in the $v_mapquery query: alter this if you need something different. This is much faster then using pure scripting: there would problems of RAM and speed while scanning all process flows using OMBPlus.
    So I cache all the needed info in some lists and then print/reconcile it.
    Having an extra open connection can cause some concurrency problems, but this was designed to run batch and send back an e-mail with results.
    Some extra notes:
    1-if a mapping is dropped I print the unbound activity but can't reconcile it
    2-activities are replaced so they will be out of position when you enter the process flow editor
    2-there was a bug in scripting related to SQLLoader mappings. I don't know if this has been fixed; so you can have problems with these.
    The following 3 procedures cache the process flow info.
    # Retrieve transitions of a proc. flow activity
    proc get_map_pf_transitions {\
         p_conn \
         p_process_flow_id \
         p_map_activity_id \
         p_pf_act_trans
         upvar $p_pf_act_trans v_pf_act_trans
         set v_query "select
         cast(decode (tr.source_activity_id, ?, 'OUTGOING','INCOMING') as varchar2(50)) TRANSITION_DIRECTION,
    process_id, process_name,
      transition_id, transition_name, business_name, description, condition,
                           source_activity_id, source_activity_name,
                            target_activity_id, target_activity_name
    from all_iv_process_transitions tr
           where tr.process_id = ?
           and (tr.source_activity_id = ?
                  or tr.target_activity_id = ?)
                order by source_activity_id";     
         set v_stmt [ $p_conn prepareCall $v_query ]
         $v_stmt {setLong int long} 1 $p_map_activity_id
         $v_stmt {setLong int long} 2 $p_process_flow_id
         $v_stmt {setLong int long} 3 $p_map_activity_id
         $v_stmt {setLong int long} 4 $p_map_activity_id
         set v_resultset [ $v_stmt  executeQuery ]
         # set to -1 so it goes to 0 when entering loop
         set v_transindex -1
         set v_temptran [list ]
         while { [ $v_resultset next ] == 1  } {
             incr v_transindex;
             lappend v_temptran \
                  [ list \
                       [$v_resultset getString TRANSITION_NAME] \
                       [$v_resultset getString DESCRIPTION] \
                       [$v_resultset getString CONDITION] \
                       [$v_resultset getString TRANSITION_DIRECTION] \
                       [$v_resultset getString SOURCE_ACTIVITY_NAME] \
                       [$v_resultset getString TARGET_ACTIVITY_NAME] \
        lappend v_pf_act_trans $v_temptran
    # Retrieve parameters of a proc. flow mapping
    proc get_map_pf_parameters {\
         p_conn \
         p_map_activity_id \
         p_pf_act_parameters
         upvar $p_pf_act_parameters v_pf_act_parameters
         set v_query "select
         parameter_owner_id, parameter_owner_name,
         PARAMETER_OWNER_ID, PARAMETER_NAME, DATA_TYPE, DEFAULT_VALUE parameter_value,
         BUSINESS_NAME, DESCRIPTION
         from ALL_IV_PROCESS_PARAMETERS pa
           where pa.parameter_owner_id = ?";     
         set v_stmt [ $p_conn prepareCall $v_query ]
         $v_stmt {setLong int long} 1 $p_map_activity_id
         set v_resultset [ $v_stmt  executeQuery ]
         # set to -1 so it goes to 0 when entering loop
         set v_paramindex -1
         set v_tempparam [list ]
         while { [ $v_resultset next ] == 1  } {
             incr v_paramindex;
             lappend v_tempparam \
                  [ list \
                       [$v_resultset getString PARAMETER_NAME] \
                       [$v_resultset getString DATA_TYPE] \
                       [$v_resultset getString PARAMETER_VALUE] \
                       [$v_resultset getString DESCRIPTION] \
        lappend v_pf_act_parameters $v_tempparam
    # Retrieve and cache all info needed to upgrade process flows
    # all parameters are lists which are appended, except the connection
    proc get_map_pf_unbound { \
         p_conn \
         p_upd_types \
         p_maps \
         p_pf_paths \
         p_pf_proc_names \
         p_pf_act_names \
         p_pf_act_parameters \
         p_pf_act_trans
         upvar $p_upd_types v_upd_types
         upvar $p_maps v_maps
         upvar $p_pf_paths v_pf_paths
         upvar $p_pf_proc_names v_pf_proc_names
         upvar $p_pf_act_names v_pf_act_names
         upvar $p_pf_act_parameters v_pf_act_parameters
         upvar $p_pf_act_trans v_pf_act_trans
    # query to retrieve unbound mappings (actually, I use views in the DB ... )
         set v_mapquery "with proc_maps as (
          select
       '/'||md.project_name||'/'|| information_system_name || '/' ||
                                pk.package_name pf_fqual_procpath,
       md.project_id pf_project_id,
       md.project_name pf_project_name,
       md.information_system_id pf_module_id,
       md.information_system_name pf_module_name,
       pk.package_id pf_package_id,
       pk.package_name pf_package_name,
       pr.process_id pf_process_id,
       pr.process_name pf_process_name,
       a.activity_id pf_activity_id,
       a.activity_name pf_activity_name,
       a.business_name pf_act_business_name,
       a.description pf_act_description,
       a.activity_type pf_act_activity_type,
       a.bound_object_id pf_act_bound_object_id,
       a.bound_object_name pf_act_bound_object_name
        from all_iv_process_activities a,
                                     all_iv_processes pr,
                                all_iv_packages pk,
                                all_iv_process_modules md
                 where
                 a.activity_type in (
                    'PlSqlMapProcessNoteTag', /* type for PLSQL mappings */
                    'SqlLdrProcessNoteTag' /* SQLLOADER mappings */)
                 and a.process_id = pr.process_id
                 and pk.package_id = pr.package_id
                 and md.INFORMATION_SYSTEM_ID = pk.schema_id
      maps as (
           select
         '/'||md.project_name||'/'||md.information_system_name||
         '/'||  mp.MAP_NAME mp_fqual_mapname,
           md.PROJECT_ID mp_project_id,
           md.PROJECT_NAME mp_project_name,
           md.INFORMATION_SYSTEM_ID mp_module_id,
           md.INFORMATION_SYSTEM_NAME mp_module_name,
           mp.MAP_ID mp_map_id,
           mp.MAP_NAME mp_map_name,
           mp.BUSINESS_NAME MP_BUSINESS_NAME ,
           mp.DESCRIPTION MP_DESCRIPTION
            from all_iv_xform_maps mp,
                      all_iv_information_systems md
                    where mp.INFORMATION_SYSTEM_ID = md.INFORMATION_SYSTEM_ID
    select * from (
    /* case 1: mapping name has changed */
    select
      '1-CHANGEDNAME' changetype,
    a.*,m.* from proc_maps a, maps m
                    where a.pf_act_bound_object_id = m.mp_map_id
                      and a.pf_act_bound_object_name <> m.mp_map_name
                      union all
    /* case 2: there's a new mapping with the old name... I'll reconcile only if
       the old mapping was dropped: otherwise you'll be in case 1:
       IMPORTANT- NOTE: I'll reconcile with a new mapping with the same name even
                      if found in a different module.
    select
      '2-REPLACED' changetype,
    a.*,mnew.* from proc_maps a,
                                     maps mnew,
                                maps mold
                    where a.pf_act_bound_object_id <> mnew.mp_map_id
                 and a.pf_act_bound_object_name = mnew.mp_map_name
                 /* verify that mapping is in the current project */
                 and mnew.mp_project_id = a.pf_project_id
                 and a.pf_act_bound_object_id = mold.mp_map_id (+)
                 and mold.mp_map_id is null
                         union all
    /* case 3: no matching mapping. I'll warn the user that the activity is not bound nor bindable */
       select
       '3-MISSING' changetype,
       a.*,mnew.* from proc_maps a, maps mnew, maps mold
                    where
                     a.pf_act_bound_object_name = mnew.mp_map_name (+)
                 and a.pf_project_id = mnew.mp_project_id (+)
                 and a.pf_act_bound_object_id = mold.mp_map_id (+)
                 and mnew.mp_map_id is null
                 and mold.mp_map_id is null)
                 order by changetype, pf_fqual_procpath, pf_process_name, pf_activity_name";
    # query to retrieve connections between pflow activities
         set v_transquery "select
    process_id, process_name,
      transition_id, transition_name, business_name, description, condition,
                           source_activity_id, source_activity_name,
                            target_activity_id, target_activity_name
    from all_iv_process_transitions tr
           where tr.process_id = ?
           and (tr.source_activity_id = ?
                  or tr.target_activity_id = ?)
                order by source_activity_id";
         set v_mapstmt [ $p_conn prepareCall $v_mapquery ]
         set v_resultset [ $v_mapstmt  executeQuery ]
         # set to -1 so it goes to 0 when entering loop
         set v_mapindex -1
         while { [ $v_resultset next ] == 1  } {
             incr v_mapindex;
             lappend v_upd_types [$v_resultset getString CHANGETYPE]
             set v_fqualmapname [$v_resultset getString MP_FQUAL_MAPNAME]
             lappend v_maps $v_fqualmapname
             set v_pf_activity_id [$v_resultset getLong PF_ACTIVITY_ID]
             set v_pf_process_id [$v_resultset getLong PF_PROCESS_ID]
              lappend v_pf_paths [$v_resultset getString PF_FQUAL_PROCPATH]
              lappend v_pf_proc_names [$v_resultset getString PF_PROCESS_NAME]
              lappend v_pf_act_names [$v_resultset getString PF_ACTIVITY_NAME]
              puts "Retrieving activity parameters...";
              get_map_pf_parameters $p_conn $v_pf_activity_id $p_pf_act_parameters
              puts "Retrieving activity transitions...";
              get_map_pf_transitions $p_conn $v_pf_process_id $v_pf_activity_id $p_pf_act_trans
    #          lappend v_pf_act_properties
    #          lappend v_pf_act_trans
               puts "All data retrieved for activity:";
               puts "[lindex $v_pf_paths $v_mapindex]/[lindex $v_pf_proc_names $v_mapindex]/[lindex $v_pf_act_names $v_mapindex]";     
               puts "Type: [lindex $v_upd_types $v_mapindex]";
    }And here's some example client code to load problem activities info, print it and reconcile (replace) activities.
    # open extra connection to access OWB public views
    set v_connstr "OWBREP/[email protected]:1521:ORCL"
    set v_jdbcconnstr "jdbc:oracle:thin:$p_connstr"
    java::call java.sql.DriverManager registerDriver [java::new oracle.jdbc.OracleDriver ]
    set v_conn [java::call java.sql.DriverManager getConnection $v_jdbcconnstr ]
    # retrieve and cache activity data
    set v_upd_types [list ]
    set v_maps [list ]
    set v_pf_paths [list ]
    set v_pf_proc_names [list ]
    set v_pf_act_names [list ]
    # activity parameters - will be a nested list
    set v_pf_act_parameters [list ]
    # activity transitions - will be a nested list
    set v_pf_act_trans [list ]
    get_map_pf_unbound $v_conn \
    v_upd_types \
    v_maps \
    v_pf_paths \
    v_pf_proc_names \
    v_pf_act_names \
    v_pf_act_parameters \
    v_pf_act_trans \
    $v_conn close
    #print results
    foreach \
         v_upd_type $v_upd_types \
         v_map $v_maps \
         v_pf_path $v_pf_paths \
         v_pf_proc_name $v_pf_proc_names \
         v_pf_act_name $v_pf_act_names \
         v_pf_act_parameterz $v_pf_act_parameters \
         v_pf_act_tranz $v_pf_act_trans \
         puts "*** Reconcile type: $v_upd_type";
         puts "Activity: $v_pf_path/$v_pf_proc_name/$v_pf_act_name"
         puts "Candidate mapping: $v_map"
    # types of activities I can reconcile
    set v_reconc_possible_types [ list "1-CHANGEDNAME" "2-REPLACED" ]
    set v_currentpath ""
    OMBCONN $v_connstr
    #reconcile
    foreach \
         v_upd_type $v_upd_types \
         v_map $v_maps \
         v_pf_path $v_pf_paths \
         v_pf_proc_name $v_pf_proc_names \
         v_pf_act_name $v_pf_act_names \
         v_pf_act_parameterz $v_pf_act_parameters \
         v_pf_act_tranz $v_pf_act_trans \
         if { [lsearch $v_reconc_possible_types $v_upd_type ] == -1 } {
         # skip non-reconcilable activities
              continue;
         puts "Reconciling  $v_pf_path/$v_pf_proc_name/$v_pf_act_name "
         puts "with mapping $v_map ..."     
         if { $v_pf_path != $v_currentpath } {
              OMBCC '$v_pf_path'
              set v_currentpath $v_pf_path     
         # drop and replace activity
         puts "Dropping activity...";
         OMBALTER PROCESS_FLOW '$v_pf_proc_name' \
              DELETE ACTIVITY '$v_pf_act_name';
         puts "Re-creating activity...";     
         # don't change activity name - maybe should inherit mapping name (if no collisions)
         OMBALTER PROCESS_FLOW '$v_pf_proc_name' ADD MAPPING ACTIVITY '$v_pf_act_name' \
                   SET REF MAPPING '$v_map';
         # add transitions
         puts "Adding transitions...";          
         foreach v_tran $v_pf_act_tranz {
              set v_TRANSITION_NAME [lindex $v_tran 0 ]
             set v_DESCRIPTION [lindex $v_tran 1 ]
             set v_CONDITION  [lindex $v_tran 2 ]
              set v_SOURCE_ACTIVITY_NAME [lindex $v_tran 4 ]
              set v_TARGET_ACTIVITY_NAME     [lindex $v_tran 5 ]     
              OMBALTER PROCESS_FLOW '$v_pf_proc_name' ADD TRANSITION '$v_TRANSITION_NAME' \
                   FROM ACTIVITY '$v_SOURCE_ACTIVITY_NAME' \
                   TO '$v_TARGET_ACTIVITY_NAME' \
                   SET PROPERTIES (TRANSITION_CONDITION, DESCRIPTION) VALUES \
                        ('$v_CONDITION','$v_DESCRIPTION');
         # set parameters
         puts "Setting parameters...";
         foreach v_param $v_pf_act_parameterz {
              set v_PARAMETER_NAME [lindex $v_param 0 ]
             set v_PARAMETER_VALUE [lindex $v_param 2 ]
             set v_DESCRIPTION [lindex $v_param 3 ]
             OMBALTER PROCESS_FLOW '$v_pf_proc_name' MODIFY ACTIVITY '$v_pf_act_name' \
                  MODIFY PARAMETER '$v_PARAMETER_NAME' SET \
                   PROPERTIES (VALUE,DESCRIPTION) VALUES ('$v_PARAMETER_VALUE','$v_DESCRIPTION') ;
         puts "Reconcile complete for $v_pf_path/$v_pf_proc_name/$v_pf_act_name";          
    }I hope I haven't lost too much in cutting and pasting! Anyway if something is not clear, ask freely. I don't use OWB built-in process flows any more, but I should remember enough to explain my own code.
    Antonio

  • Should we avoid Graphical mapping and stick with Java mapping?

    After developing mappings in XI for a month, I just don't see any good reasons to use Graphical mappings over Java mappings. Maybe some experienced users here can give me some valid reasons why we should choose Graphical mappings. Here is what I think:
    Disadvantages of Graphical mappings:
    1. No way to perform automated unit testings. This is probably the biggest reason I hate it. You can do some tests manually when you work in Integration Builder. But there is no way you can write some unit testing utilities to automate the task.
    2. Complexity. Even for some simple requirements, your Graphical mappings can become complicated and hard to understand. A lot of times, I find myself staring at several dozens of graphical nodes and try to understand what it does.
    3. Impossible to reuse. This is totally against the DRY (Don't repeat yourself) principle. For example, to generate messages for JDBC adapter, it is common to have two identical fields for primary keys: one in the access node and another in the key node. If you change the mapping logic in one, you have to remember to change the other.
    Advantage with Java mappings:
    1. Fully automated unit testing. You can create JUnit tests along with your Java mapping classes and use Maven or other build tools to perform automated unit testing.
    2. Your choice of XML parsing and binding. With Java mapping, you can choose any open source framework for XML parsing and binding. For example, with XMLBeans, I can convert XML input message to a Java object, transform to another Java object and write to output message. And each Java object is generated from its corresponding XML schema.
    3. Highly reusable. We can use fundamental object-oriented designs to create highly reusable mapping components.
    4. Better version control. Since the mappings are just Java classes, we can use CVS or SVN to track code changes.
    5. Better build tools. We can fully utilize build tools like Ant and Maven to automate the build, unit tests, or even generate documents and mapping web sites.
    So do you guys agree? Maybe I am still new to XI or I am missing some important things. But at this point, I just don't see why I should use Graphical mappings. Is there anyone developing XI interfaces completely with Java mappings?
    Thanks in advance for any comments!
    Kenny Cheang

    Hi Suraj,
    > Since its graphical the blocks will take space, but
    > there is always an adavntage of processing time.
    > Ebven though it may appear bigger, it will take less
    > time as compared with Java code (for the same
    > mapping).
    Could you explain more why the graphical mapping has better performance? I thought the graphical mapping is compiled into a Java class in the runtime anyway.
    > Yes thats there, but same goes with Java mapping too
    > right (if you haven't mentioned it as constants)
    I mainly think about inheritance. If I have to build 10 interfaces and they all have some common behavior, I can create a base interface class to encapsulate the common logic. But with graphical mapping, you have to duplicate them in each interface.
    > Disadvantages of Java mapping:
    > 1. Performance
    Same as above. I just don't see why Java has worse performance. I actually think Java should have better performance. You can optimize the code anyway you want. In some cases, you have to use queue functions in graphical mapping but it's not necessary in Java.
    > 2. All might not be well versed with Java Code(though
    > everyone may know basic java) .
    I am not asking everyone to abandon graphical mapping. I am just wondering which one is better when you have skills for both.
    > 3. Lot of standard functions are available in GM
    > which you can choose, but you have to remember the
    > exact code for those in Java mapping.
    You can create functions in Java too. All you have to do is to remember the function name.
    Kenny

Maybe you are looking for

  • FCPX Color Correction affecting transparencies

    I have a problem where color corrections applied to a video clip are effecting a transparent graphic above the video, where 100% white is somehow being given a luminosity above 100%. I created a screencapture video showing the problem to clearify: ht

  • Form debugging - Which line is causing the error?

    I have a form that I'm working on, and when I run the form like normal, just as the end user would, I keep getting an error, "FRM-41039: Invalid Alert ID 0." I can't figure out where this error is coming from in my code. It seems that it must have so

  • Spool request from FM  REUSE_ALV_GRID_DISPLAY

    Hi all, How to create a spool request for an ALV report by using the FM  "REUSE_ALV_GRID_DISPLAY". is it possible to create the spool request with this FM's parameter IS_PRINT. Please give some hint if it is possible. Thanks in advance, etienne.

  • Rounding a number up

    Is there anyway you can create a calculation to only round a number up and not down?

  • Times New Roman font will not print on HP Officejet Pro 8610

    My new HP Officejet Pro 8610 will not print documents, spreadsheets, or printer test pages containing Times New Roman font (of any size).  It does not put a job in the print queue.  In Excel, I receive the "Generic_2_Q294552"  error message. My setup