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

Similar Messages

  • How to add Two Interface Mappings to One Receiver(BPM) Help needed urgently

    I have a requirement where i get a flat file and split into multiple files and send to BPM.
    For each split file I created Interface Mapping using Java Mapping Program.
    In the Configuration how to add more Interface Mappings?
    Thanks for your help in advance.
    Regards
    Sudha

    You can use Enhanced Interface Determination to split one message to Multiple hence to multiple Interfaces.
    You have to change the Occurance of Messages in Message Mapping and their Corresponding Interfaces in Interface Mapping. That would create Multiple Files with Multiple Interfaces to Receiver (BPM)
    1) You need not to use Multilpe Interface Mapping
    2) You will use Extended Interface Determination for this.
    regards.
    Jeet.

  • 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.

  • View Mapping Result between two Interface Mappings in ccBPM

    Hello,
    I've got a ccBPM which does two interface mappings. The second one fails. When I redo the steps manually in the Interface Mapping test mode everything works fine. Anyway, I want to get the message from the failed BPM that got out of the first interface mapping, which worked fine in the BPM as well, before entering the second.
    Where can I get that message? In Monitoring I can only find messages that got sent.
    Thanks for you help!
    Regards,
    Dirk

    Hi,
    Please check in Runtime Workbench.
    Go to Adapter Engine --> Component Monitoring
    Now select your Adapter.
    Use Filter and below you will find message ids.
    select one and you can see the audit log..where your appln fails.
    You can also use SXMB_MONI.
    Select the message giving error and in that goto outbound tab..click on link...select view details image button...select the component with error and go to container tab of it....there you will find trace entry....where log of your error will be stored..
    Hope it helps.
    Best Of Luck
    Akhil
    Edited by: Akhil Rastogi on Mar 18, 2008 11:08 AM

  • Interface Mappings are not   displayed in Receiver Determination

    Hi  friends,
       I'm doing Enhanced Receiver determination..   but in this  if i select  <b>Extended</b>  radio button in the receiver determination .. I'm not gettting  any  search help for  selecting my  Interface mappings..
    what misteqe  i did.. for getting those interface mappings  does we need to do..any special things   .
    i followed the bellow blog.. but like that  i'm not getting...  and how many interface mappings do we need to create for this..
    /people/venkataramanan.parameswaran/blog/2006/03/17/illustration-of-enhanced-receiver-determination--sp16
    plz suggest me..
    thanks
    BABU

    Hi  Prabhu..
       Thank you   for ur spontenious respnose ..I Mentioned the  receiver  business services in the  user defined function  which i creted in the message mappings ..  is there any other place also do we nned to mention..
    actuvally  , i have one source struturce that   and Two Receiver strutures..
    <b>1) Sendor_DT</b>
       PERSON
            NAME
            AGE
           ADRESS
    <b>2) Receiver_DT_1  ( this is for Male person details )</b>
       PERSON
            NAME
            AGE
           ADRESS
    <b>3) Receiver_DT_2 (this is for  Female Person Details</b> )
       PERSON
            NAME
            AGE
           ADRESS
    for this.. i created  Three message mappings.. ( one for soource to first recevier )
    and   next for ( source to  second  receiver)
    and for third for  source to  RECEIVERS   ( MESSAGE TYPE FROM SAP -BASIS  component )
    in the mapping
    i created one user defined function  and i map that to  split message..
    in that  user defined function i wrote  the bellow  coding
    int i;
    int mr=0;
    int ms=0;
    for(i=0; i<a.length;i++)
           if( a<i>.substring(0,2).equals("Mr") && mr==0)
                 result.addValue("AATRNG_TEST_4_BS_IB1");
                 mr=1;
          if( a<i>.substring(0,2).equals("Ms") && ms==0)
                 result.addValue("AATRNG_TEST_4_BS_IB2");
                 ms=1;
    </textarea>
    and i created two  interface mappings .. and i  created  three business services.. three communication channels. and two recever aggriments.. and two  interface determinations .. and  one sendor aggriment   and <b>receiver determination</b> with <b>EXTENDED</b> . and  i used those interface mappings  in   recever detrmination ....
    but  why file was not loaded into receiver side..
    thanks
    Babu

  • RAID Interface Mappings with RocketRaid 2310 (rr2310_00) fail in .37

    EDIT: This post was originally titled:
    RAID Interface Mappings (Hard {Challenge?} Question) [with edit]
    It has since been changed because further investigation found it to be a completely different problem... Go figure.
    Also, this post is tightly coupled with another post (link further down in the comments).
    Greetings...
    Alright. So I'm not new to Linux to say the least, but I swear every time I have to deal with udev and related tasks something goes funky.
    So, here's the issue:
    I have a RocketRAID 2310 raid adaptor (made by HighPoint) that has a RAID5 configured using four 750 GiB drives. (of 8 in the machine)
    The machine dual boots both Windows and Linux, and that is the main source of the issue. It appears as thought he Linux drivers and the Windows drivers, while both functional, are not designed to be intermixed... Which I suppose from a server perspective is a perfectly reasonable limitation, even if frustrating. Anyway, I digress...
    I've been working with this card for years now, accepting the limitation that I could only access it from Windows. Today, though, I made an interesting discovery. I was reconfiguring some devices and noticed something strange about the fdisk output:
    Disk /dev/sde: 750.2 GB, 750156374016 bytes
    255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    Device Boot Start End Blocks Id System
    /dev/sde1 1 4294967295 2147483647+ ee GPT
    Disk /dev/sdf: 750.2 GB, 750156374016 bytes
    255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x0046b51b
    Disk /dev/sdf doesn't contain a valid partition table
    Disk /dev/sdg: 750.2 GB, 750156374016 bytes
    255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0xac7a1898
    Disk /dev/sdg doesn't contain a valid partition table
    Disk /dev/sdh: 750.2 GB, 750156374016 bytes
    255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0xac3cad83
    Disk /dev/sdh doesn't contain a valid partition table
    The four drives showing up as individual drives is completely normal per my experience with this card... What's new since installing Arch is the GPT partition table detected on the first drive, and more importantly, the sectors! For those that didn't catch that, let me highlight:
    Disk /dev/sde: 750.2 GB, 750156374016 bytes
    255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
    /dev/sde1               1  4294967295  2147483647+  ee  GPT
    Yeah... Goes to a sector about three times the max. Also known as the raid partition! Huh, would you look at that. Sadly, udev doesn't catch it, and there is no /dev/sde1 partition.
    Now there are two posibilities here as far as I can tell:
    First, that somehow the entire GPT partition table is smaller then the striping block size of the RAID5, and that fdisk manages to read it entirely off the first disk in the raid. Striping is set at 64k I think, so it's possible, but seems a stretch...
    Second, that the raid is being detected, but udev is missing it and something funny is happening with the device/partition mappings.
    Now I would love to experiment to find out what is going on here, but the raid contains critical data (that, although backed up to tape, is still something I don't want to have to restore! Rebuilding the array takes 5 hours minimum, then restoring from tape is likely another 10... 15 hours downtime is not an option). What this means is that all tests on it have to be NON-DESTRUCTIVE, read only operations. To complicate matters (just because things can't be that easy), the contents of the RAID5 is a partition level TrueCrypt volume, so no easy way to determine the contents based off of partition identifiers.
    I tried using parted, but sadly it coughs up a lung and aborts all operations when it sees a partition boundry outside the scope of the disk (as is the case here). Seriously, it won't even try. Wimp...
    So that's where I am. Mistery partition that only fdisk can see. If I could get a file handle to it, I could try to get TrueCrypt to decrypt it to find out if it's a striping artifact or not.
    Aside:
    I suppose this question also links to another, more generic question: Given a 'file' (which could be any *nix file handle) that contains a valid partition table and partitions (say a dd if=/dev/sda of=/home/user/device.bak), how does one go about accessing it's partitions? Are there udev tricks, or some other method? Edit 1a: I know how loopback mounting works, but that doesn't expose the partitions within because it doesn't flag a uevent for the udev daemon to respond to... Not sure how to manually tell it to process /dev/loop0 and look for partitions (supposedly splitting it up into /dev/loop0p1, /dev/loop0p2, etc.)
    Additional notes:
    - I am not sure what device driver is being used for those four drives to be visible... It's not rr2310 (the HighPoint RAID driver), but I know the card uses a resold chipset (maybe Marvel?), so it could be detected by a number of other kernel drivers. lsmod doesn't have anything useful there. Is there maybe a way to determine what device file is associated with what driver module?... So many good questions. Too many for one post!
    - The RAID BIOS config is a useless piece of junk. It loads into memory too early in the BIOS operations on this board, and thus runs into a race condition for detecting it's own hardware. 90%+ of the time it will list no drives detected, but continue booting and everything is there just fine. It conflicts with the AMI (Megatrends) BIOS, but not with similar Pheonix based ones on similar boards (which detect the drives and raid properly every boot)... For those thinking of RAID cards for their servers, don't grab HighPoint! I've since stayed clear, but this server has a long life expectency, so I'm having to live with it.
    So there we have it! Hit me, Arch Forums, with your best theories or hacks!
    Edit 1b:
    I was recently reconfiguring two other drives in another computer to use a RAID0 array and didn't bother wiping them before initialising the array... Normally I wouldn't have even bothered checking, but today I felt curious. The RAID0 was striped with 64k blocks, same as the above mentioned RAID5... And low and behold, the new RAID0 array had the old partition table of one of the original drives. What this proves is that the striping of a RAID array (and I know that a rundundant array of independent disks array is redundant... ) can leave a partition table intact and readable. That makes the first option seem more probable...
    Last edited by SeanM (2011-02-22 20:05:48)

    Hi, I downloaded your last package, and adapted for the 232x model, using the rr232x-linux-src-v1.10-090716-0928.tar.gz from RR.
    I'm not an expert in pkg building, but after some reading I considered myself enough armed, ... I thought so (sic)
    So I did replace all strings related to the model and the package version in the install, PKGBUILD and patches. It patches fine except the Makefile.def that is rejected. I hope you could share some light in that issue.
    Currently, the kernel is 3.1.2-1-ARCH, so might that be the problem?
    that is rr232x.install
    # This is a default template for a post-install scriptlet. You can
    # remove any functions you don't need (and this header).
    KERNEL_VERSION=`uname -r`
    # arg 1: the new package version
    pre_install() {
    /bin/true
    # arg 1: the new package version
    post_install() {
    depmod -v $KERNEL_VERSION > /dev/null 2>&1
    /bin/cat <<EOF
    ==> To use this module, sata_mv has to be unloaded or the kernel will panic
    ==> To unload sata_mv, please do
    ==>
    ==> # rmmod sata_mv
    ==>
    ==> as root before loading rr232x
    ==>
    ==> If you want to use this module permanently, you should blacklist
    ==> sata_mv by adding 'blacklist sata_mv' to /etc/modprobe.d/modprobe.conf
    EOF
    # arg 1: the new package version
    # arg 2: the old package version
    post_upgrade() {
    post_install
    # arg 1: the old package version
    post_remove() {
    depmod -v $KERNEL_VERSION > /dev/null 2>&1
    the modded PKGBUILD
    # Maintainer: count-corrupt <corrupt at giggedy dot de>
    pkgname=rr232x
    pkgver=1.10
    pkgrel=1
    pkgdesc="Kernel modules for Highpoint RocketRAID 230x and 231x SATA cards. Patched for use with kernel26 =2.6.37, >=2.6.38 and kernel >= 3 (a.k.a. linux)"
    arch=('i686' 'x86_64')
    url="http://www.highpoint-tech.com/USA/bios_rr2320.htm"
    license=('custom')
    groups=()
    if [[ `uname -r` == 2.6.* ]]; then
    depends=('kernel26')
    else
    depends=('linux')
    fi
    makedepends=()
    provides=()
    conflicts=()
    replaces=()
    backup=()
    options=()
    install=$pkgname.install
    source=( http://www.highpoint-tech.cn/BIOS_Driver/rr232x/Linux/new%20format/rr232x-linux-src-v1.10-090716-0928.tar.gz scsi_lck.patch kernel3.patch)
    noextract=()
    md5sums=()
    #_kernver=`uname -r`
    _kernver=`uname -r`
    build() {
    mkdir -p $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/scsi/
    # Apply the scsi lock patch to make the driver work with kernel26 > 2.6.37
    cd $startdir
    patch -p0 -i $startdir/scsi_lck.patch
    patch -p0 -i $startdir/kernel3.patch
    cd $startdir/src/rr232x-linux-src-v$pkgver/product/rr232x/linux/
    make KERNELDIR=/usr/src/linux-$_kernver || return 1
    # Install the kernel module
    install -m 644 -D rr2320_00.ko $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/scsi/
    mkdir -p $startdir/pkg/usr/share/licenses/$pkgname
    cp $startdir/src/rr232x-linux-src-v$pkgver/README $startdir/pkg/usr/share/licenses/$pkgname/
    patches kernel3.patch and scsi_lck.patch are modded accordingly.
    To avoid dependencies,
    makepkg -i --skipinteg
    so I get those results ...
    ┌─17:40 joan@WS01 ~/src/rr232x_mod
    └─>>> makepkg -i --skipinteg
    ==> S'està fent el paquet: rr232x 1.10-1 (dv nov 25 17:44:16 CET 2011)
    ==> Comprovant les dependències en temps d'execució ...
    ==> Comprovant de dependències per l'assemblatge ...
    ==> S'estan recuperant les fonts...
    -> S'ha trobat rr232x-linux-src-v1.10-090716-0928.tar.gz
    -> S'ha trobat scsi_lck.patch
    -> S'ha trobat kernel3.patch
    ==> AVÍS: S'està ometent la comprovació de la integritat.
    ==> S'està extraient el codi font...
    -> S'està extraient rr232x-linux-src-v1.10-090716-0928.tar.gz amb bsdtar
    ==> S'està eliminant el directori pkg/ existent...
    ==> S'està entrant en l'entorn fakeroot...
    ==> Iniciant build()...
    patching file src/rr232x-linux-src-v1.10/osm/linux/os_linux.c
    patching file src/rr232x-linux-src-v1.10/osm/linux/osm_linux.c
    patching file src/rr232x-linux-src-v1.10/osm/linux/osm_linux.h
    patching file src/rr232x-linux-src-v1.10/inc/linux/Makefile.def
    Hunk #1 FAILED at 74.
    Hunk #2 FAILED at 119.
    2 out of 2 hunks FAILED -- saving rejects to file src/rr232x-linux-src-v1.10/inc/linux/Makefile.def.rej
    ==> ERROR: S'ha produït un error en build().
    S'està cancel·lant...
    so I guess the scsi_lck.patch is fine, and the issue must be in the adressing of the kernel version.
    the rejected Makefile
    --- src/rr232x-linux-src-v1.10/inc/linux/Makefile.def.orig 2011-08-13 10:13:37.000000000 +0200
    +++ src/rr232x-linux-src-v1.10/inc/linux/Makefile.def 2011-08-13 11:15:53.000000000 +0200
    @@ -74,19 +74,39 @@
    KERNELDIR := /lib/modules/$(shell uname -r)/build
    endif
    -KERNEL_VER := 2.$(shell expr `grep LINUX_VERSION_CODE $(KERNELDIR)/include/linux/version.h | cut -d\ -f3` / 256 % 256)
    +KERNEL_MAJ_VER := $(shell expr `grep LINUX_VERSION_CODE /usr/src/$(uname -r)/include/linux/version.h | cut -d\ -f3` / 65536 % 65536)
    +
    +KERNEL_VER := $(KERNEL_MAJ_VER).$(shell expr `grep LINUX_VERSION_CODE $(KERNELDIR)/include/linux/version.h | cut -d\ -f3` / 256 % 256)
    ifeq ($(KERNEL_VER),)
    $(error Cannot find kernel version. Check $(KERNELDIR)/include/linux/version.h.)
    endif
    +
    ifneq ($(KERNEL_VER), 2.6)
    ifneq ($(KERNEL_VER), 2.4)
    -$(error Only kernel 2.4/2.6 is supported but you use $(KERNEL_VER))
    +ifneq ($(KERNEL_MAJ_VER), 3)
    +$(error Only kernel 2.4/2.6/3 is supported but you use $(KERNEL_VER))
    endif
    endif
    +endif
    +
    +ifeq ($(KERNEL_VER), 2.4)
    +
    +HPT_LIB := $(HPT_LIB)-regparm0
    +_TARGETMODS := $(addprefix $(HPT_LIB)/,$(TARGETMODS))
    +
    +VPATH := .. $(HPT_ROOT)/osm/linux
    +TARGET := $(TARGETNAME).o
    +
    +C_INCLUDES += -I$(HPT_ROOT)/osm/linux -I$(KERNELDIR)/include -I$(KERNELDIR)/drivers/scsi
    +
    +$(TARGET): $(TARGETOBJS) $(_TARGETMODS)
    + @echo $(if $V,,[LD] $@)
    + $(if $V,,@)$(CROSS_COMPILE)$(LD) -r -o $@ $^
    +
    -ifeq ($(KERNEL_VER), 2.6)
    +else # for kernel >= 2.6
    TARGET := $(TARGETNAME).ko
    @@ -119,20 +139,6 @@
    @echo '$$(addprefix $$(obj)/,$$(TARGETMODS)): $$(obj)/%.o: $$(HPT_LIB)/%.o' >>$@
    @echo ' @cp -f $$< $$@' >>$@
    -else # for kernel 2.4 modules
    -HPT_LIB := $(HPT_LIB)-regparm0
    -_TARGETMODS := $(addprefix $(HPT_LIB)/,$(TARGETMODS))
    -VPATH := .. $(HPT_ROOT)/osm/linux
    -TARGET := $(TARGETNAME).o
    -C_INCLUDES += -I$(HPT_ROOT)/osm/linux -I$(KERNELDIR)/include -I$(KERNELDIR)/drivers/scsi
    -$(TARGET): $(TARGETOBJS) $(_TARGETMODS)
    - @echo $(if $V,,[LD] $@)
    - $(if $V,,@)$(CROSS_COMPILE)$(LD) -r -o $@ $^
    endif # KERNEL_VER
    endif # KMOD
    Had tried already several days without success, and I'm runnin' out of ideas, so I ask for  some guidance to find back the path.
    Thanks in advance
    Last edited by ga01f4733 (2011-11-25 17:27:13)

  • Interface Mappings in BPM Collect Pattern

    Hello
    I am new to XI development and currently facing problems while implementing collect pattern of BPM.
    I am trying to map IDoc structure with target legacy format.In BPM I had a block with infinite loop where I am transforming IDocs to target legacy format.Then I am trying to transform list element (Multiline Abstract container variable) to form a single message.For this I tried to have interface map with Occurences 0..unbound..but while activation of Interface Map it gives error
    <b> Mapping program Message does not match the interface mapping. The number or frequencies of source or target messages for the message mapping are not identical to the number or frequencies of source or target interfaces.</b>
    If I use single line in Interface map then in BPM it gives error when passed Multiline element to this Interface map.
    I checked the sample program provided by SAP but I found out that every message interface was using same Message Type which has got occurence as 1 but in the message mapping program its 0..unbound.
    My question is can we have data type (or Message type )with Occurence as 1 and Message Mapping program using same message type with occurences 0..unbound..I tried to find such option but could'nt find that.Otherwise how to do Interface Map for transforming Multiline parameter of BPM to a single message.
    Please help..Thanks in advance..
    Regards
    Rajeev Patkie

    Initially I tried to perform test by tree view and it worked fine.But it was one message in the source and the same was in target.Later as given by you I updated XML source message.The source message looks like
    ******************Source Message***********************
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
      <ns0:Message1>
        <ns1:MATMAS_to_Stockware_MT xmlns:ns1="http://mccormick.com/ez_dev">
          <MAT_List>
            <ZPITNO>121212</ZPITNO>
            <ZPIDS>Test Message</ZPIDS>
            <ZPPOPN />
            <ZPCNQT />
            <ZPZLOC />
            <ZPZPCB />
            <ZPZCPA />
            <ZPGRWE />
            <ZPSAEL />
            <ZSPLDY />
            <ZPFRAG />
            <ZPZCRO />
            <ZPZOPT />
          </MAT_List>
        </ns1:MATMAS_to_Stockware_MT>
      </ns0:Message1>
    </ns0:Messages>
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
      <ns0:Message2>
        <ns1:MATMAS_to_Stockware_MT xmlns:ns1="http://mccormick.com/ez_dev">
          <MAT_List>
            <ZPITNO>78912</ZPITNO>
            <ZPIDS>Test Message12</ZPIDS>
            <ZPPOPN />
            <ZPCNQT />
            <ZPZLOC />
            <ZPZPCB />
            <ZPZCPA />
            <ZPGRWE />
            <ZPSAEL />
            <ZSPLDY />
            <ZPFRAG />
            <ZPZCRO />
            <ZPZOPT />
          </MAT_List>
        </ns1:MATMAS_to_Stockware_MT>
      </ns0:Message2>
    </ns0:Messages>
    ************************End Source*********************
    if this would be the message multiline is generating its bound to fail as I guess every XML has one topmost element and over here.So I changed my source XML to look like
    ******************Start message******************
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
      <ns0:Message1>
        <ns1:MATMAS_to_Stockware_MT xmlns:ns1="http://mccormick.com/ez_dev">
          <MAT_List>
            <ZPITNO>121212</ZPITNO>
            <ZPIDS>Test Message</ZPIDS>
            <ZPPOPN />
            <ZPCNQT />
            <ZPZLOC />
            <ZPZPCB />
            <ZPZCPA />
            <ZPGRWE />
            <ZPSAEL />
            <ZSPLDY />
            <ZPFRAG />
            <ZPZCRO />
            <ZPZOPT />
          </MAT_List>
        </ns1:MATMAS_to_Stockware_MT>
      </ns0:Message1>
      <ns0:Message2>
        <ns1:MATMAS_to_Stockware_MT xmlns:ns1="http://mccormick.com/ez_dev">
          <MAT_List>
            <ZPITNO>78912</ZPITNO>
            <ZPIDS>Test Message12</ZPIDS>
            <ZPPOPN />
            <ZPCNQT />
            <ZPZLOC />
            <ZPZPCB />
            <ZPZCPA />
            <ZPGRWE />
            <ZPSAEL />
            <ZSPLDY />
            <ZPFRAG />
            <ZPZCRO />
            <ZPZOPT />
          </MAT_List>
        </ns1:MATMAS_to_Stockware_MT>
      </ns0:Message2>
    </ns0:Messages>
    **********************End Message****************
    but this produces only one output message
    ******************Start Message***********************
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
      <ns0:Message1>
        <ns1:MATMAS_to_Stockware_List xmlns:ns1="http://mccormick.com/ez_dev">
          <MAT_List>
            <ZPITNO>121212</ZPITNO>
            <ZPIDS>Test Message</ZPIDS>
            <ZPPOPN />
            <ZPCNQT />
            <ZPZLOC />
            <ZPZPCB />
            <ZPZCPA />
            <ZPGRWE />
            <ZPSAEL />
            <ZSPLDY />
            <ZPFRAG />
            <ZPZCRO />
            <ZPZOPT />
          </MAT_List>
        </ns1:MATMAS_to_Stockware_List>
      </ns0:Message1>
    </ns0:Messages>
    **********************End Message****************
    I am also pasting schema of message mappings
    *****************Source Schema************************
    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema targetNamespace="http://sap.com/xi/XI/SplitAndMerge" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://sap.com/xi/XI/SplitAndMerge">
      <xsd:import namespace="http://mccormick.com/ez_dev" />
      <xsd:element name="Messages" xmlns:p0="http://mccormick.com/ez_dev">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Message1" form="qualified">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element ref="p0:MATMAS_to_Stockware_MT" minOccurs="0" maxOccurs="unbounded" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
    ********************End Source***********************
    ********************Target Schema******************
    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema targetNamespace="http://sap.com/xi/XI/SplitAndMerge" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://sap.com/xi/XI/SplitAndMerge">
      <xsd:import namespace="http://mccormick.com/ez_dev" />
      <xsd:element name="Messages" xmlns:p0="http://mccormick.com/ez_dev">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Message1" form="qualified">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element ref="p0:MATMAS_to_Stockware_List" />
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
    ****************************End Target*************
    Thanks in advance.
    Regards
    Rajeev

  • Interface Auditing requirements

    We have mainly IDoc to IDoc scenarios to configure. One Idoc contains only one transaction. In Auditing, Once we process Idoc, we have to pass the success, warning or error message details with transaction/error/ interface details to java API. Or call Java API to record this messages. Using this messages Java API will generate some Auditing reports over time period for that particular Interface. This Auditing report will have total number of IDoc processed over time, Successful IDocs, Warning IDocs, Fetal error IDocs etc.
    Queries are:-
    G-  How we can pass message for error/ success or warning to API. This message should be generated at the completion of processing.
    H-  Or can we call Java API at any of XI components to catch these requirements.
    I-  We have to pass set of process ID’s to API ( ID’s like project if, Interface id, message id, error id, etc.). How we can pass those to API
    J-  Do we have any way to collect auditing data over time period. (I mean any XI table where we have it and using this we can prepare auditing report)

    Have you checked this <a href="http://help.sap.com/saphelp_erp2005vp/helpdata/en/0e/ddf63d0cfa46dba4390846352f6c0f/frameset.htm">SAP Help</a> ?
    ~Suresh

  • DMS interface program required

    Dear all,
    We are implenting DMS in our organisation for which , I have a requirement where in I need to make a program (interface) which can attach & send  the scanned image of objects (Ex: Invoice) to a specific location on DMS server.
    The data on DMS will be archived data.
    Any help in the designig of the program will be of great help from any of you.
    Regards
    Ankur

    Hi,
    In the DMS interface I did, I used FM: 'BAPI_DOCUMENT_CREATE2'.
    And there is a Note: Note 504692, you could check it out, in this Note, you can find the sample code below:
    CALL FUNCTION 'BAPI_DOCUMENT_CHANGE2'
    EXPORTING
    DOCUMENTTYPE = ls_draw-dokar
    DOCUMENTNUMBER = ls_draw-doknr
    DOCUMENTPART = ls_draw-doktl
    DOCUMENTVERSION = ls_draw-dokvr
    DOCUMENTDATA = ls_Doc
    DOCUMENTDATAX = ls_docx
    HOSTNAME =
    DOCBOMCHANGENUMBER =
    DOCBOMVALIDFROM =
    DOCBOMREVISIONLEVEL =
    SENDCOMPLETEBOM = ' '
    PF_FTP_DEST = 'SAPFTPA'
    PF_HTTP_DEST = 'SAPHTTPA'
    CAD_MODE = ' '
    IMPORTING
    RETURN = ls_return
    TABLES
    CHARACTERISTICVALUES =
    CLASSALLOCATIONS =
    DOCUMENTDESCRIPTIONS =
    OBJECTLINKS =
    DOCUMENTSTRUCTURE =
    DOCUMENTFILES = lt_documentfiles_new
    LONGTEXTS =
    COMPONENTS =
    IF ls_return-type CA 'EA'.
    ROLLBACK WORK.
    MESSAGE ID '26' TYPE 'I' NUMBER '000'
    WITH ls_return-message.
    ELSE.
    COMMIT WORK and wait.
    ENDIF.
    Cheers

  • Interface mappings

    Hi,
    I need some help.I am using XI as a middleware between two SAP systems.
    So there is an outbound interface to the first system and an inbound interface to
    the second system and there is an interface mapping defined between these two
    systems(Which has been assigned a message mapping).
    Now I need to connect to the same system but for different purpose.In that case,
    I need to have a seperate message mapping and interface mapping.
    I have some doubts here.
    1)Should I need to create another outbound interface and use with same inbound or
    2)Should I need to create both or
    3)Nothing to be created or
    And where should we give the condition that at this particular time this particular
    interface mapping has to be called from the first system to the second system
    Could anyone help me in solving this issue?
    Regards,
    Rohini.M

    Hi Rohini,
    <i>1)Should I need to create another outbound interface and use with same inbound or</i>
    If the purposr is defferent ,then definetly you will need diffrent structure right, then you have to create new interface.
    if structure is same you can USE the existing one.
    <i>2)Should I need to create both or</i>
    Its Again depends upon whether you need differ sturucture,if not you need not to
    create.
    <i>3)Nothing to be created or
    And where should we give the condition that at this ....</i>
    If you have requirement for same structure of IR, you can reuse same interface.
    Only change is again you need to create a NEW Scenarion in ID ,mentioning that which is the sender interface and receiver interface. here you can reuse IR interfaces which are already existed.
    Sender Agreement,Receiver Areement
    Interface  Determination and receiver determination defines conditions.that which interface should sent to which system..
    Regards,
    Ramesh.

  • Interface code required........................IDOC

    I need some sample code so as how to update data using IDOC for inbound interface.
    Step by step procedure willl be very helpful starting from very basic...........................................AS I AM VERY NEW TO IT.

    Hi,
    Inbound IDOC Status Report for Sales Orders 
    Requirement:
    Sales Orders are being created through inbound IDocs using FM 'EDI_DATA_INCOMING'. Now a Report is required to check the status of these Inbound IDocs along with Sales Orders generated against customer Purchase Orders.
    Processing:
    The report selects, 'ORDERS' IDoc numbers & status, generated between given time range, from table EDIDC. Further, it calls Function Module 'IDOC_READ_COMPLETELY' to get the IDoc details. Then required information is extracted by reading relevant field data of IDoc segments.
    REPORT  Z_EDI_FILE_LOAD_STATUS_REPORT           .
    Staus Report for Inbound IDOCs ( Sales Orders )
    Program        : Z_EDI_FILE_LOAD_STATUS_REPORT
    Presented By   : www.rmtiwari.com
    TABLES : EDIDC.
    ALV stuff
    TYPE-POOLS: SLIS.
    DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
          GS_LAYOUT   TYPE SLIS_LAYOUT_ALV,
          GT_SORT     TYPE SLIS_T_SORTINFO_ALV,
          GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
    DATA : BEGIN OF T_REPORT OCCURS 0,
             IDOC_NO       TYPE EDI_DOCNUM,
             IDOC_DATE     TYPE SY-DATUM,
             IDOC_TIME     TYPE SY-UZEIT,
             SORDER_NO     TYPE VBELN,
             STP_NO        TYPE KNA1-KUNNR,
             STP_NAME(35)  TYPE C,
             STP_PHONE(12) TYPE C,
             PO_NO(15)     TYPE C,
             STATUS        TYPE C,
             S_TEXT(70)    TYPE C,
             ERROR(70)     TYPE C,
           END OF T_REPORT.
    --PARAMETER--
    selection-screen begin of block date with frame title TEXT-S01.
    select-options: UDATE for  EDIDC-UPDDAT
                          default SY-datum obligatory,    "Changed On
                    UTIME for  EDIDC-UPDTIM .             "Changed Time
    selection-screen end   of block date.
    INITIALIZATION.
    START-OF-SELECTION.
    PERFORM SHOW_STATUS_REPORT.
    *&      Form  alv_grid
          text
    -->   p1        text
    < --  p2        text
    FORM ALV_GRID.
      IF GT_FIELDCAT[] IS INITIAL.
        PERFORM FIELDCAT_INIT.
        PERFORM LAYOUT_INIT.
        PERFORM SORT_INIT.
      ENDIF.
      PERFORM GRID_DISPLAY.
    ENDFORM.                    "alv_grid
    *&      Form  layout_init
    FORM LAYOUT_INIT.
      GS_LAYOUT-ZEBRA             = 'X'.
      GS_LAYOUT-CELL_MERGE        = 'X'.
      GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
      GS_LAYOUT-NO_VLINE          = ' '.
      GS_LAYOUT-TOTALS_BEFORE_ITEMS = ' '.
    ENDFORM.                    " layout_init
    *&      Form  fieldcat_init
    FORM FIELDCAT_INIT.
      DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
       CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'IDOC_NO'.
      LS_FIELDCAT-KEY          = 'X'.
      LS_FIELDCAT-REPTEXT_DDIC = 'IDOC'.
      LS_FIELDCAT-OUTPUTLEN    = 10.
    Fix for ALV print bug, which puts 'N/A' over last digit
    Set inttype to 'N' to stop corruption of printed ALV cell.
      LS_FIELDCAT-INTTYPE = 'N'.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'IDOC_DATE'.
      LS_FIELDCAT-REPTEXT_DDIC = 'Creation Date'.
      LS_FIELDCAT-OUTPUTLEN    = 10.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'IDOC_TIME'.
      LS_FIELDCAT-REPTEXT_DDIC = 'Creation Time'.
      LS_FIELDCAT-OUTPUTLEN    = 8.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'STATUS'.
      LS_FIELDCAT-REPTEXT_DDIC = 'St'.
      LS_FIELDCAT-OUTPUTLEN    = 2.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'ERROR'.
      LS_FIELDCAT-REPTEXT_DDIC = 'Message'.
      LS_FIELDCAT-OUTPUTLEN    = 70.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'STP_NO'.
      LS_FIELDCAT-REPTEXT_DDIC = 'S.T.Party No'.
      LS_FIELDCAT-OUTPUTLEN    = 10.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'STP_NAME'.
      LS_FIELDCAT-REPTEXT_DDIC = 'Sold to Party Name'.
      LS_FIELDCAT-OUTPUTLEN    = 35.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'PO_NO'.
      LS_FIELDCAT-REPTEXT_DDIC = 'Purch Order'.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'STP_PHONE'.
      LS_FIELDCAT-REPTEXT_DDIC = 'S.T.Party Phone'.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
    ENDFORM.                    "fieldcat_init
    *&      Form  sort_init
    FORM SORT_INIT.
      DATA: LS_SORT TYPE SLIS_SORTINFO_ALV.
      CLEAR LS_SORT.
      LS_SORT-FIELDNAME = 'IDOC_DATE'.
      LS_SORT-SPOS      = 1.
      LS_SORT-UP        = 'X'.
      APPEND LS_SORT TO GT_SORT.
      CLEAR LS_SORT.
      LS_SORT-FIELDNAME = 'IDOC_TIME'.
      LS_SORT-SPOS      = 2.
      LS_SORT-UP        = 'X'.
      APPEND LS_SORT TO GT_SORT.
      CLEAR LS_SORT.
      LS_SORT-FIELDNAME = 'STATUS'.
      LS_SORT-SPOS      = 3.
      LS_SORT-UP        = 'X'.
      APPEND LS_SORT TO GT_SORT.
      CLEAR LS_SORT.
      LS_SORT-FIELDNAME = 'IDOC_NO'.
      LS_SORT-SPOS      = 4.
      LS_SORT-UP        = 'X'.
      APPEND LS_SORT TO GT_SORT.
    ENDFORM.                    "sort_init
    *&      Form  grid_display
    FORM GRID_DISPLAY.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          IS_LAYOUT     = GS_LAYOUT
          IT_FIELDCAT   = GT_FIELDCAT
          IT_SORT       = GT_SORT
          i_callback_program      = SY-REPID
          I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
          I_DEFAULT     = ' '
          I_SAVE        = 'X'
        TABLES
          T_OUTTAB      = T_REPORT
        EXCEPTIONS
          PROGRAM_ERROR = 1
          OTHERS        = 2.
    ENDFORM.                    "grid_display
    *&      Form  COMMENT_BUILD
          Processing of listheader
    FORM COMMENT_BUILD USING P_FK_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
      DATA: LS_LINE TYPE SLIS_LISTHEADER.
      REFRESH P_FK_LIST_TOP_OF_PAGE.
    List Heading : Typ H
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'H'.
      LS_LINE-INFO  = 'Sales Order Interface: Z_EDI_FILE_LOAD'.
      APPEND LS_LINE TO P_FK_LIST_TOP_OF_PAGE.
    List : Typ S
      clear LS_LINE.
      LS_LINE-typ  = 'S'.
      LS_LINE-key  = 'Date Range:'.
      LS_LINE-info  = UDATE-low.
      if not UDATE-high is initial.
        write ' To ' to  LS_LINE-info+30.
        LS_LINE-info+36 = UDATE-high.
      endif.
      APPEND LS_LINE TO P_FK_LIST_TOP_OF_PAGE.
    ENDFORM.                               " COMMENT_BUILD
          FORM TOP_OF_PAGE                                              *
          Ereigniss TOP_OF_PAGE                                       *
          event     TOP_OF_PAGE
    FORM TOP_OF_PAGE.
      PERFORM COMMENT_BUILD  USING gt_LIST_TOP_OF_PAGE[].
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  show_status_report
    FORM SHOW_STATUS_REPORT .
    Report to show status.
      DATA: BEGIN OF T_TEDS2 OCCURS 0.
              INCLUDE STRUCTURE TEDS2.
      DATA: END OF T_TEDS2.
      DATA: BEGIN OF T_IDOC_CONTROL_TMP OCCURS 0.
              INCLUDE STRUCTURE EDIDC.
      DATA: END OF T_IDOC_CONTROL_TMP.
      CONSTANTS: C_STATUS_IN_IDOC_POSTED       LIKE EDIDC-STATUS VALUE '53'.
      DATA : T_EDIDS TYPE STANDARD TABLE OF EDIDS WITH HEADER LINE.
      DATA : T_EDIDD TYPE STANDARD TABLE OF EDIDD WITH HEADER LINE.
      DATA : GV_PARTNER_SEG TYPE E1EDKA1,
             GV_PO_REF_SEG  TYPE E2EDK02.
    Get text for status values
      SELECT * FROM TEDS2 INTO TABLE T_TEDS2 WHERE LANGUA = SY-LANGU.
    Read the IDoc's status after processing
      SELECT * FROM EDIDC
        INTO TABLE T_IDOC_CONTROL_TMP
       WHERE UPDDAT IN UDATE
         AND UPDTIM IN UTIME
         AND MESTYP = 'ORDERS'.
      LOOP AT T_IDOC_CONTROL_TMP.
      IDoc has been processed, since control record changed.
        READ TABLE T_TEDS2 WITH KEY STATUS = T_IDOC_CONTROL_TMP-STATUS.
        T_REPORT-IDOC_NO = T_IDOC_CONTROL_TMP-DOCNUM.
        T_REPORT-IDOC_DATE = T_IDOC_CONTROL_TMP-CREDAT.
        T_REPORT-IDOC_TIME = T_IDOC_CONTROL_TMP-CRETIM.
        T_REPORT-S_TEXT = T_TEDS2-DESCRP.
        IF T_IDOC_CONTROL_TMP-STATUS = C_STATUS_IN_IDOC_POSTED.
        ok status
          T_REPORT-STATUS = 'S'.
        ELSE.
        error status
          T_REPORT-STATUS = 'E'.
        ENDIF.
        Get IDoc details.
        CALL FUNCTION 'IDOC_READ_COMPLETELY'
          EXPORTING
            DOCUMENT_NUMBER         = T_REPORT-IDOC_NO
          TABLES
            INT_EDIDS               = T_EDIDS
            INT_EDIDD               = T_EDIDD
          EXCEPTIONS
            DOCUMENT_NOT_EXIST      = 1
            DOCUMENT_NUMBER_INVALID = 2
            OTHERS                  = 3.
      Get Error status
        READ TABLE T_EDIDS WITH KEY STATUS = T_IDOC_CONTROL_TMP-STATUS.
        IF SY-SUBRC EQ 0.
          REPLACE FIRST OCCURRENCE OF '&1' IN T_EDIDS-STATXT
                                WITH T_EDIDS-STAPA1.
          REPLACE FIRST OCCURRENCE OF '&2' IN T_EDIDS-STATXT
                                WITH T_EDIDS-STAPA2.
          REPLACE FIRST OCCURRENCE OF '&3' IN T_EDIDS-STATXT
                                WITH T_EDIDS-STAPA3.
          REPLACE FIRST OCCURRENCE OF '&4' IN T_EDIDS-STATXT
                                WITH T_EDIDS-STAPA4.
          REPLACE FIRST OCCURRENCE OF '&' IN T_EDIDS-STATXT
                                WITH T_EDIDS-STAPA1.
          REPLACE FIRST OCCURRENCE OF '&' IN T_EDIDS-STATXT
                                WITH T_EDIDS-STAPA2.
          REPLACE FIRST OCCURRENCE OF '&' IN T_EDIDS-STATXT
                                WITH T_EDIDS-STAPA3.
          REPLACE FIRST OCCURRENCE OF '&' IN T_EDIDS-STATXT
                                WITH T_EDIDS-STAPA4.
          T_REPORT-ERROR = T_EDIDS-STATXT.
        ENDIF.
        LOOP AT T_EDIDD.
          CASE T_EDIDD-SEGNAM.
            WHEN 'E1EDKA1'.
              GV_PARTNER_SEG = T_EDIDD-SDATA.
              CLEAR : T_REPORT-STP_NAME.
              CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                EXPORTING
                  INPUT  = GV_PARTNER_SEG-PARTN
                IMPORTING
                  OUTPUT = T_REPORT-STP_NO.
              SELECT SINGLE NAME1 TELF1
                INTO (T_REPORT-STP_NAME,T_REPORT-STP_PHONE)
                FROM KNA1
               WHERE KUNNR = T_REPORT-STP_NO.
            WHEN 'E1EDK02'.
              GV_PO_REF_SEG = T_EDIDD-SDATA.
              T_REPORT-PO_NO = GV_PO_REF_SEG-BELNR.
          ENDCASE.
        ENDLOOP.
        APPEND T_REPORT.
      ENDLOOP .
      SORT T_REPORT BY STATUS IDOC_NO.
    Show Report
      PERFORM ALV_GRID.
    ENDFORM.                    " show_status_report
    Pls reward all helpful points.
    Regards,
    Ameet

  • Software and Interface card required for DNP3 communication with a protection relay?

    I am looking to build a SCADA Master to perform DNP3 communication between the Master and an Outstation device. I would like to know apart from the Ni - Industrial comm software is there any other Interface card I require to accomplish this task?

    According to this article, that’s all you need. Just make sure you run applications as an administrator and that you don’t have any type of network restrictions. Since you have it installed, I encourage you to test the functionality/connectivity through the shipping examples, which are located on your hard disc at ...LabVIEW XXX\examples\DNP3 folder (also visible at the NI Example Finder). You can modify an example VI to fit an application, or you can copy and paste from one or more examples into a VI that you create.
    Alejandro | Academic Program Engineer | National Instruments

  • File to File interface - Help Required

    Hello All,
    We have the below business requirement:
    In the source directory, we would receive multiple .dat and one .txt files. Before picking up any of the file, we need to check whether the .txt file exists in the folder or not.
    If the .txt file exists, only then pick the .dat files and move them to target directory, else dont do any action until the .txt files comes into the folder.
    Also, the dat and txt files have to be moved to the target directory in a sequence(i.e. first the dat files have to be moved and then finally txt file has to be moved).
    Please help in providing an approach preferably with the standard sender file channel options.
    Thanks in advance.
    Regards,
    Subbu

    Try this option
    Source Directory: /yourSourceDir
    FileName : File1.xml
    In Additional Files:
    File List: File2.xml
    File2.xml.namePart - "File1.xml" = "File2.xml"
    File2.xml.optional - NO
    File2.xml.type - xml
    by having this settings, File1 will be picked only when File2 is placed in the folder.
    Regards

  • SQLData interface help required please

    Hi,
    i need some help with the following problem.
    I have an object with a lot of data elements (100ish), some of them scalar (varchar2's etc), some are "type table of varchar2" and some are "type table of sql_object". I want to write a java stored procedure (SQLData interface?) that can update the values in this object.
    I can, of course, populate the values from pl/sql no problem BUT as im populating the data values from a large XML source (i.e. multiple xpath operations) it takes time in pl/sql (takes abount 1 sec which is too long for our buisness need here). I am attributing to slowness due to the large amount of context switches from pl/sql to java).
    i have tried making a small sample object to prove the concept of the SqlData in dealing with objects that have nested objects and arrays but i am getting problems in getting it to work with nested objects!.
    my noddy example:
    ------------------- inner.java ---------------
    import java.sql.*;
    import java.io.*;
    import oracle.sql.*;
    import oracle.jdbc.driver.*;
    import oracle.oracore.*;
    import oracle.jdbc2.*;
    import java.math.*;
    public class inner implements SQLData {
    // Implement the attributes and operations for this type.
    private BigDecimal id;
    public String name;
    public static void wages(inner e[]) {
    e[0].name = "55"; // just update the name element to prove the point.
    // Implement SQLData interface.
    private String sql_type;
    public String getSQLTypeName() throws SQLException {
    return sql_type;
    public void readSQL(SQLInput stream, String typeName)
    throws SQLException {
    sql_type = typeName;
    id = stream.readBigDecimal();
    name = stream.readString();
    public void writeSQL(SQLOutput stream) throws SQLException {
    stream.writeBigDecimal(id);
    stream.writeString(name);
    ------------------- outer.java ---------------
    import java.sql.*;
    import java.io.*;
    import oracle.sql.*;
    import oracle.jdbc.driver.*;
    import oracle.oracore.*;
    import oracle.jdbc2.*;
    import java.math.*;
    public class outer implements SQLData {
    // Implement the attributes and operations for this type.
    private BigDecimal id;
    private String name;
    public inner inn;
    public static void wages(outer e[]) {
    e[0].name = "54";
    e[0].inn.name = "55";// just update the name element to prove the point.
    // Implement SQLData interface.
    private String sql_type;
    public String getSQLTypeName() throws SQLException {
    return sql_type;
    public void readSQL(SQLInput stream, String typeName)
    throws SQLException {
    sql_type = typeName;
    id = stream.readBigDecimal();
    name = stream.readString();
    inn = (inner)(SQLData)stream.readObject();
    public void writeSQL(SQLOutput stream) throws SQLException {
    stream.writeBigDecimal(id);
    stream.writeString(name);
    stream.writeObject((SQLData)inn);
    SQL> drop type outer
    2 /
    Type dropped.
    SQL> create or replace type inner as object(
    2 id number(20),
    3 name varchar2(2000)
    4 );
    5 /
    Type created.
    SQL> create or replace type outer as object(
    2 id number(20),
    3 name varchar2(2000),
    4 inn inner
    5 );
    6 /
    Type created.
    SQL> drop procedure wages
    2 /
    Procedure dropped.
    SQL> CREATE OR REPLACE procedure wages (e in out inner) AS
    2 LANGUAGE JAVA
    3 NAME 'inner.wages(inner[])';
    4 /
    Procedure created.
    SQL> CREATE OR REPLACE procedure wages2 (e in out outer) AS
    2 LANGUAGE JAVA
    3 NAME 'outer.wages(outer[])';
    4 /
    Procedure created.
    SQL> declare
    2 i inner := inner(1,'ee');
    3
    4 begin
    5 dbms_output.put_line(i.name);
    6 wages(i);
    7 dbms_output.put_line(i.id||';'||i.name); -- should have changed the name element
    8 end;
    9 /
    ee
    1;55
    PL/SQL procedure successfully completed.
    SQL> declare
    2 i inner := inner(1,'ee');
    3 o outer := outer(1,'ee2', i);
    4
    5 begin
    6 dbms_output.put_line(o.id||';'||o.name||';'||o.inn.name);
    7 wages2(o);
    8 dbms_output.put_line(o.id||';'||o.name||';'||o.inn.name);-- should have changed the INNER name element
    9 end;
    10 /
    1;ee2;ee
    declare
    ERROR at line 1:
    ORA-00932: inconsistent datatypes: expected IN Conversion failed
    Note all wanted to do in the "inner" example is change the value of name...this worked as expected. In the second example i wanted to change the value of my inner objects name value...this fails with IN conversion failed.
    I would be grateful if someone could tell me if this kind of operation is supported in SQLData? (or perhaps another way of doing it?).
    im my REAL object its even more complex as i have stuff like:
    -- nested types...
    type varchar2_tab is table of varchar2(4000);
    type product is object (
    id number(1),
    name varchar2(200)
    type products is table of product;
    -- my main type that i want to perform java ops on
    type my_main_obj is object(
    id number,
    name varchar2(2000),
    array1 varchar2_tab,
    prod products,
    ........lots more elements of the above kinds
    and its on my_main_obj that i want to run a Jproc to populate my variables.
    the kind of pl/sql code thats doing this, at the moment, is:
    -- scalar types.........
    outstCplntInd := xpath_utilities.valueOf(r_dom_node,'outstCplntInd');
    -- scalar array types.....
    xpath_utilities.valueof(r_dom_node, 'names/name',
    p_array_in_out => names);
    -- and object array types.......
    r_dom_node_list := spg_xpath_utilities.selectNodes(r_dom_node,
    'bills/bill');
    for idx in 1..sys.xmldom.getlength(r_dom_node_list)
    loop
    if (prods is null)
    then
    prods := products(null);
    else
    prods.extend;
    end if;
    prods(prods.last) := product(
    xpath_utilities.valueof(
    xmldom.item(r_dom_node_list,idx-1), 'prodTyp'),
    xpath_utilities.valueof(
    xmldom.item(r_dom_node_list,idx-1),
    'prodSerNr'),
    xpath_utilities.valueof(
    xmldom.item(r_dom_node_list,idx-1),
    'prodDate'));
    end loop;
    ....etc
    (the xpath_utilites pacakge is a helper package i got out of Steve Muenchs oracle XML book).
    Thanks for any suggestions!
    Daz.
    Oracle version 8.1.7.4 with the latest java + pl/sql XML XDKs installed.

    Hi AM_Kidd.
    Thanks for your reply.
    I have done a complete uninstall and re install of iTunes and all related apple programs from my laptop through control panel, add remove programs and also by going through program files and deleting all tracers of any left over folders remove programs may have missed.
    My apologies for forgetting to add this in my original post.
    Thanks again

  • How do i query the module object for the interface of the module-specific interface I require

    Hi there.
    Currently using LabVIEW 2012/TestStand 2012.
    I am attempting to edit the LabVIEW Text Sequence Translator, and in the CreateStep.vi I am trying to create a step that is of type WIS_Sequence_Call (a custom version of NI_Types.ini-->SequenceCall).
    I need to set the file pathname, sequence name and parameter values in the step.  I believe I need to get access to the SequenceCallModule class to do this.
    This help file SequenceCallModule states in the description: "To access the properties and methods of a specific module class, query the Module object for the interface of the module-specific interface you want to acquire.".
    What exactly is meant by "query" here?  It looks like "Specify" might be what I am after, but I want this done programmatically, ie no dialog boxes.
    See my snippet below.
    Thanks.

    Thanks for the reply Charles.
    I have been using the 2012 version of the poster.
    I can get access to the Module class from the Step Class as shown in the snippet above, but I can't see how to get to SequenceCallModule? The "To more specific class" VI doesn't seem to work for TS refs. Is there no way to derive the SequenceCallModule from this?
    Also I can use the TSAdp.SequenceCallModule reference, but I need to link this to the relevant step that I've just created.  Can NI please provide me with a link to any examples on this?
    Thanks

Maybe you are looking for