Join numeric with join numbers function

Hi !  a small question from a guy that didnt use labview for a while !
i need to use the join number function to join two DBL number A and B to form a new number A.B, just like the join numbers function
in the example i would like the results after the join number function to be 1.5 
however i understand that the function merge bytes/words together and the result is far from what i expect ....  any ways to 
A and B are extracted from modbus READ register command and are unsigned 16 bit
seems easy enough but i need a good refreshment on how those bits, bytes and numeric works together..   doh !
thank for everyone involved, Kudos to all labview champions!
Solved!
Go to Solution.
Attachments:
join numbers.png ‏108 KB
test comm.png ‏91 KB

Hi yan,
it seems you really need a refreshment on all those bits/bytes/numeric representations
Typecasting floats (DBL) to U16 will probably never result in the desired value.
Why do you convert your U16 modbus values to DBL anyway? Stick with U16 and you will have no problems using JOIN or any other bit-banging function...
Best regards,
GerdW
CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
Kudos are welcome

Similar Messages

  • Hp 35s integrating with complex numbers/functions

    Are there any examples of how to integrate a complex function for
    the HP 35s..the manual suggests its possible..but, I can not find one
    example...anywhere... I am just interested in testing.....I do
    not want to break things into parts etc...I just want to try
    e^z for example, where z is complex..any help?
    I have tried xiy, rTheta, x+iy...syntax errors or non existent..funny

    Hi,
    The manual states that complex numbers can be used with EXP(x), but it does not mention anything about using complex numbers for integration. Edit: I missed some text in the manual, see below.
    As far as I can tell it cannot do integration with complex numbers. (The 50g can do this.)
    However, you may get a more definitive answer if you ask your question here:
    http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/forum.cgi
    EDIT: that forum has moved to a new version:
    http://www.hpmuseum.org/forum/forum-4.html
    Note: I do not work for HP, I just like playing with calculators :-)

  • Join Numbers VI, 8-bit, 16-bit, etc.

    I am a "LabView beginner" and am tyring to process an array of data acquired into an array of 8-bit elements. I'm using a PCI-DIO-32HS and ports 0 and 1 make up a 16-bit word. I am successfully reading in the data and it is being written to an array of 8-bit values. Element 0 is the LSbyte, 1 is the MSbyte, 2 is the next LSbyte, etc. I then have a loop that uses the "join numbers" vi in Labview. I address element 0 and element 1 with separate vis, and then send the result the join numbers vi to create the 16-bit result (the join numbers vi performs the arithmetic shift for you).
    I have a lot of data and this loop takes quite a bit of time. Is there a faster way of doing this? Is there a way to read into into an array with
    the 16-bit number already available? I suspect that there may already be a convenient way to avoid this. If not, a function of this type should be added to Labview.
    I have looked into the group read vi's, etc., but it seems as if this is the only way to acquire 16-bits of data.

    Another and probably faster method to convert the U8 array to a U16 array is to use the Type Cast function(Function Palette>>Advanced>>Data Manipulation) in LV. Simply typecast the U8 array to U16 by passing a U16 array constant into the center input of the Type Cast function.
    Christian Loew, CLA
    Principal Systems Engineer, National Instruments
    Please tip your answer providers with kudos.
    Any attached Code is provided As Is. It has not been tested or validated as a product, for use in a deployed application or system,
    or for use in hazardous environments. You assume all risks for use of the Code and use of the Code is subject
    to the Sample Code License Terms which can be found at: http://ni.com/samplecodelicense
    Attachments:
    typecast.gif ‏3 KB

  • PocketPC Join Numbers Primitive bug?

    OK people whats wrong with this?  I use the join numbers primitive and it gives incorrect results.  I tried on the desktop version and I get the correct Hi.LO output of 3451263.
    I compiled on both PocketPC v8 and v8.01
    Am I crazy?
    Attachments:
    Join Numbers Pics.zip ‏10 KB

    I forgot to attach the VI in the zip file
    Attachments:
    Join Numbers Test.vi ‏11 KB

  • In Numbers, how do I lock in the date and time data when an IF/THEN formula is used with the "NOW" function?

    In Numbers, how do I lock in the date and time data when an IF/THEN formula is used with the "NOW" function?
    =IF(I127,NOW()," ")
    I127 equals a check box. The formula retuns a value of the current date and time when a check is placed in the box. How does one lock that date and time so that it cannot be changed?

    I don't think it is possible to lock in the date and time using a formula. You could put NOW() in a cell, copy, and Edit Paste Formula Results where you want the result.
    Or if you are "time stamping" a lot, you may find this Automator Service (Dropbox download) helpful. It puts a "Today" function (actually it should be named "Now" because it includes both date and time) in your Services menu like this:
    Just doubleclick the .workflow package to install it. You may have to click "download anyway" in System Preferences > Privacy & Security.
    If you want you can assign the service a keyboard shortcut in System Preferences here:
    SG

  • Need some help with the Table Function Operator

    I'm on OWB 10gR2 for Sun/Solaris 10 going against some 10gR2 DB's...
    I've been searching up and down trying to figure out how to make OWB use a Table Function (TF) which will JOIN with another table; allowing a column of the joined table to be a parameter in to the TF. I can't seem to get it to work. I'm able to get this to work in regular SQL, though. Here's the setup:
    -- Source Table:
    DROP TABLE "ZZZ_ROOM_MASTER_EX";
    CREATE TABLE "ZZZ_ROOM_MASTER_EX"
    ( "ID" NUMBER(8,0),
    "ROOM_NUMBER" VARCHAR2(200),
    "FEATURES" VARCHAR2(4000)
    -- Example Data:
    Insert into ZZZ_ROOM_MASTER_EX (ID,ROOM_NUMBER,FEATURES) values (1,'Room 1',null);
    Insert into ZZZ_ROOM_MASTER_EX (ID,ROOM_NUMBER,FEATURES) values (2,'Room 2',null);
    Insert into ZZZ_ROOM_MASTER_EX (ID,ROOM_NUMBER,FEATURES) values (3,'Room 3','1,1;2,3;');
    Insert into ZZZ_ROOM_MASTER_EX (ID,ROOM_NUMBER,FEATURES) values (4,'Room 4','5,2;5,4;');
    Insert into ZZZ_ROOM_MASTER_EX (ID,ROOM_NUMBER,FEATURES) values (5,'Room 5',' ');
    -- Destination Table:
    DROP TABLE "ZZZ_ROOM_FEATURES_EX";
    CREATE TABLE "ZZZ_ROOM_FEATURES_EX"
    ( "ROOM_NUMBER" VARCHAR2(200),
    "FEATUREID" NUMBER(8,0),
    "QUANTITY" NUMBER(8,0)
    -- Types for output table:
    CREATE OR REPLACE TYPE FK_Row_EX AS OBJECT
    ID NUMBER(8,0),
    QUANTITY NUMBER(8,0)
    CREATE OR REPLACE TYPE FK_Table_EX AS TABLE OF FK_Row_EX;
    -- Package Dec:
    CREATE OR REPLACE
    PACKAGE ZZZ_SANDBOX_EX IS
    FUNCTION UNFK(inputString VARCHAR2) RETURN FK_Table_EX;
    END ZZZ_SANDBOX_EX;
    -- Package Body:
    CREATE OR REPLACE
    PACKAGE BODY ZZZ_SANDBOX_EX IS
    FUNCTION UNFK(inputString VARCHAR2) RETURN FK_Table_EX
    AS
    RETURN_VALUE FK_Table_EX := FK_Table_EX();
    i NUMBER(8,0) := 0;
    BEGIN
    -- TODO: Put some real code in here that will actually read the
    -- input string, parse it out, and put data in to RETURN_VALUE
    WHILE(i < 3) LOOP
    RETURN_VALUE.EXTEND;
    RETURN_VALUE(RETURN_VALUE.LAST) := FK_Row_EX(4, 5);
    i := i + 1;
    END LOOP;
    RETURN RETURN_VALUE;
    END UNFK;
    END ZZZ_SANDBOX_EX;
    I've got a source system built by lazy DBA's and app developers who decided to store foreign keys for many-to-many relationships as delimited structures in driving tables. I need to build a generic table function to parse this data and return it as an actual table. In my example code, I don't actually have the parsing part written yet (I need to see how many different formats the source system uses first) so I just threw in some stub code to generate a few rows of 4's and 5's to return.
    I can get the data from my source table to my destination table using the following SQL statement:
    -- from source table joined with table function
    INSERT INTO ZZZ_ROOM_FEATURES_EX(
    ROOM_NUMBER,
    FEATUREID,
    QUANTITY)
    SELECT
    ZZZ_ROOM_MASTER_EX.ROOM_NUMBER,
    UNFK.ID,
    UNFK.QUANTITY
    FROM
    ZZZ_ROOM_MASTER_EX,
    TABLE(ZZZ_SANDBOX_EX.UNFK(ZZZ_ROOM_MASTER_EX.FEATURES)) UNFK
    Now, the big question is--how do I do this from OWB? I've tried several different variations of my function and settings in OWB to see if I can build a single SELECT statement which joins a regular table with a table function--but none of them seem to work, I end up getting SQL generated that won't compile because it doesn't see the source table right:
    INSERT
    /*+ APPEND PARALLEL("ZZZ_ROOM_FEATURES_EX") */
    INTO
    "ZZZ_ROOM_FEATURES_EX"
    ("ROOM_NUMBER",
    "FEATUREID",
    "QUANTITY")
    (SELECT
    "ZZZ_ROOM_MASTER_EX"."ROOM_NUMBER" "ROOM_NUMBER",
    "INGRP2"."ID" "ID_1",
    "INGRP2"."QUANTITY" "QUANTITY"
    FROM
    (SELECT
    "UNFK"."ID" "ID",
    "UNFK"."QUANTITY" "QUANTITY"
    FROM
    TABLE ( "ZZZ_SANDBOX_EX"."UNFK2" ("ZZZ_ROOM_MASTER_EX"."FEATURES")) "UNFK") "INGRP2",
    "ZZZ_ROOM_MASTER_EX" "ZZZ_ROOM_MASTER_EX"
    As you can see, it's trying to create a sub-query in the FROM clause--causing it to just ask for "ZZZ_ROOM_MASTER_EX"."FEATURES" as an input--which isn't available because it's outside of the sub-query!
    Is this some kind of bug with the code generator or am I doing something seriously wrong here? Any help will be greatly appreciated!

    Hello Everybody!
    Thank you for all your response!
    I had changes this work area into Internal table and changed the select query. PLease let me know if this causes any performance issues?
    I had created a Z table with the following fields :
    ZADS :
    MANDT
    VKORG
    ABGRU.
    I had written a select query as below :
    I had removed the select single and insted of using the Structure it_rej, I had changed it into Internal table 
    select vkorg abgru from ZADS into it_rej.
    Earlier :
    IT_REJ is a Work area:
    DATA : BEGIN OF IT_REJ,
    VKORG TYPE VBAK-VKORG,
    ABGRU TYPE VBAP-ABGRU,
    END OF IT_REJ.
    Now :
    DATA : BEGIN OF IT_REJ occurs 0,
    VKORG TYPE VBAK-VKORG,
    ABGRU TYPE VBAP-ABGRU,
    END OF IT_REJ.
    I guess this will fix the issue correct?
    PLease suggest!
    Regards,
    Developer.

  • Numbers' Functions and Formulas in Multiple Cells, Tables, and Sheets

    Hello,
    I'm stuck with specifics that center around usage, and I get the funny feeling I'm overlooking a simple detail or two.
    If I may, here goes.
    I'm working with a single spreadsheet that has several sheets within it, and each sheet has an identical table. Each table is used to record various data, and I use an additional table in a separate sheet to consolidate some of the information, so that I can track results, at a glimpse, by looking at averages, totals, etc.
    Each data table is organized for consolidation by tracking wins, ties, or losses. It is important to know that each data table only records a single win, tie, or loss along with its other applicable data. And on the actual consolidation table I am trying to tally specific data fields by the use of Numbers' functions and formulas, yet I wish to keep these tallied results organized by the determining factor of whether or not they were gathered from a table that recorded a win, a table that recorded a tie, or a table with a loss.
    To illustrate, each table contains data fields that record start time, finish time, elapsed time, the day of the week, etc. Let's say I have eight tables, and the first two are winning tables, three more are tables that record a tie, and the last three are losing tables. For example, on my consolidated data table I wish to enter a function and formula capturing which of the eight tables are wins, ties, and losses so that I can, at a glance, see how much time elapsed to obtain the wins, ties, and losses. So then, in this example, for wins I want to determine which of those wins took 20 minutes, or which of them took 15 minutes, etc. So then, out of the two wins, let's say both of them took 20 minutes each. I need the numeral 2 to be counted and recorded on the consolidation table since only two tables match the criteria. And I would do the same for all remaining data fields (e.g., start time, finish time, etc.). Just so long as everything is determined by wins, ties, and losses, and then organized by the respective data fields. Simply put, this example determines a total of two wins that meet the data field requirement of 20 minutes. Out of the eight tables (one table per sheet) any other wins would then be organized according to the specific data in the elapsed time data field on it's data table (e.g., 5 minutes, 15 minutes, etc.).
    The exact syntax structure of the functions and formula I'm unsuccessfully using follows below. It only seems to return a result of 1, and I think it is returning this value from the IF Statements. By the way, the Win, Tie, or Loss cell in each data table is cell formatted as a pop-up so I can either select None or 1. But in this example I'm basing this on the time period of 20 minutes, and out of the eight data tables I have two wins which also record the time period as 20 minutes, so I should see 2 and not 1 in the 20 minutes column of the consolidated data table. Also, I tried changing the syntax where I would type "=1" in the IF Statements, but it returned a result of =1, and if I don't include the equals sign and quotation marks the result just shows up as 1.
    My Syntax:
    IF(Trade 1::'Data Recorded (1)' '* Win', 1, IF(Trade 2::'Data Recorded (1)' '* Win',1, IF(Trade 3::'Data Recorded (1)' '* Win',1, IF(Trade 4::'Data Recorded (1)' '* Win',1, IF(Trade 5::'Data Recorded (1)' '* Win',1, IF(Trade 6::'Data Recorded (1)' '* Win',1, IF(Trade 7::'Data Recorded (1)' '* Win',1, IF(Trade 8::'Data Recorded (1)' '* Win',1, IF(COUNTIFS(Trade 1::'Data Recorded (1)' '* Time in Trade (in minutes)', "=20m")+COUNTIFS(Trade 2::'Data Recorded (1)' '* Time in Trade (in minutes)', "=20m")+COUNTIFS(Trade 3::'Data Recorded (1)' '* Time in Trade (in minutes)', "=20m")+COUNTIFS(Trade 4::'Data Recorded (1)' '* Time in Trade (in minutes)', "=20m")+COUNTIFS(Trade 5::'Data Recorded (1)' '* Time in Trade (in minutes)', "=20m")+COUNTIFS(Trade 6::'Data Recorded (1)' '* Time in Trade (in minutes)', "=20m")+COUNTIFS(Trade 7::'Data Recorded (1)' '* Time in Trade (in minutes)', "=20m")+COUNTIFS(Trade 8::'Data Recorded (1)' '* Time in Trade (in minutes)'))))))))))
    Please bear in mind that the COUNTIFS portion of the above syntax structure is something I'm already successfully using to count the totals of other things not mentioned above, and I'm hesitant to delete it since it already works to my satisfaction when I want to, for example, determine the total number of overall wins. So, just for illustration purposes, I might have an overall wins column in my consolidation table that records how many wins there are, regardless of organization by elapsed time, or any other data field. In other words, the COUNTIFS syntax structure already works to my satisfaction. I'm not sure if it's possible to alter it so that it isn't so long, but what's there does work just when counting total numbers, as just mentioned.
    In summary, I'm wondering which function I can use with the COUNTIFS function to determine which of my eight data tables are winning tables, but break those wins down further based on criteria like elapsed time, and in the above example the time elapsed is 20 minutes. As you may see above, I'm unsuccessfully using the IF function. Finally, I've looked at the function browser descriptions of things like LOOKUP, HLOOKUP, VLOOKUP, INTERSECT.RANGES, and a few others. And so far I haven't made good use of any of them the way I've done when I use the COUNTIFS function by itself when only counting overall totals. But now I must determine totals that meet certain criteria, as explained above.
    Please help if you dare (smile). This is a huge project I'm undertaking, and so as not to cause confusion I have not included all of the details. But rather, I've taken a small sampling and set it to the side for experimentation. If this small sample works out to my satisfaction I can simply copy and paste the syntax in all other respective cells in the consolidation table, changing only reference locations, and perhaps conditions or values. One thing is certain, I don't intend on giving up on it.
    Thank you for your time and advice.
    Blessings!
    Message was edited by: solo68
    Added image.

    I'd like to edit the last paragraph of my second posting, but for some reason an entirely new posting is being created when I attempt to do this. So when reading this post, please use it to replace only the last paragraph of my second post containing the four inserted images.
    Last paragraph begins:
    In closing, I need each cell in each column of each row in my consolidation table to remain as is. I have my reasons for doing this, and they all serve a specific purpose. The only exception would be the formatting of the last three rows as footer rows. Most importantly, and I should have made this abundantly clear earlier, my apologies, I need a single function and formula in cell E7 of my consolidation table that will firstly determine which data tables are winning tables while secondly and simultaneously counting which of those winning tables have elapsed times of 20 minutes. Perhaps, now this better explains why my syntax is written the way it is written. In the example I provided, if the proper function and formula were written it would result as 2 in cell E7 in my consolidation table. If there is anything else specific you need of me in order to assist me, please request it. Thank you.
    Last paragraph ends:
    Additionally, to t quinn:
    First off, thank you for returning to assist me. I really do appreciate your efforts. Please be aware that I'm avoiding going into details about each and every portion of my spreadsheet because I wish to avoid discussion that is off topic. As I stated earlier, I'm new to using these features of Numbers. My spreadsheet encompasses a much larger amount of data than I'm referring to in the example in my first post. But in my example I'm isolating just the information concerning what I'm now trying to accomplish to finish my spreadsheet project. Moreover, most of what I've done up to this point I was able to figure out on my own, or get help from watching videos on YouTube, or simply using the application help menu. Please be aware that I consulted all of these, repeatedly. I even contacted AppleCare, and was told this sort of support is not available. In spite of this, I've accomplished a great deal in my first large spreadsheet project. Please be aware that when I wrote my second post and specifically responded to you, I didn't want to be rude or ungrateful, and I still don't, but maybe the suggestions you and Hiroto made about gathering the count of wins, ties, and losses are something I've already done. I think I've done that separately. These counts are already in separate cells, and they are working fine. In my first post where I inserted only one image you can see examples of this in my consolidation table image, in cells B3 and E6. I apologize for not making this abundantly clear earlier. Furthermore, the portion of my syntax that shows the COUNTIFS is the exact way I accomplished this, and it is written the way it is written because I need separate sheets, each with their own data tables. Again, in cell E7 I need to determine which of the eight data tables that record wins are also recording 20 minutes, but I need this in a single function and formula with the result appearing only in cell E7. Once this is figured out I will adjust the syntax to do the same thing with every column (these are not shown but they exist) in my consolidation table for the last three footer rows, named Win Column Totals, Tie Column Totals, and Loss Column Totals. The last three rows being footer rows may not be necessary, and if so, I can convert them back to normal rows. Nonetheless, my consolidation table is counting the totals of all data in all data tables. This much I've already accomplished. Now I have one last function and formula I'm working on in order to determine which of the eight data tables record wins, ties, or losses while it simultaneously counts which of the wins, ties, or losses fall within certain categories like elapsed time, and this will be shown on my consolidation table only in the last three rows. Yes, I've gotten the total wins counted, and separately counted the total number of times 20 minutes was the elapsed time used, but so far, just looking at my consolidation table I don't know if the total number of times 20 minutes was used was with a win, tie, or loss. That's what I need to know now. Everything else is already accomplished. So then my consolidation table will show the totals for all data fields in my eight data tables as illustrated in cells B3 and E6. The last three rows of my consolidation table will break this down in a single function and formula with one row for wins, a second for ties, and a third for losses. And each of these respective last three rows will in the same function and formula determine if the win, tie, or loss also is one of the data fields in my eight data tables. How? By the use of columns in my consolidation table. Remember, each of my eight data tables are identical. In the example in my first post I only used one data field, elapsed time (Time in Trade), to illustrate in one column on my consolidation table what I'm trying to accomplish with all of the columns not shown in my consolidation table. Once this is figured out I can adjust it to complete the remainder of the consolidation table. Thank you, t quinn.
    To all reading this and attempting to offer assistance, if for any reason I'm still not explaining myself clearly, please continue to ask me more specific questions. I realize it's hard to communicate this way, and if Apple allowed us to upload the actual spreadsheet it would make this entire forum a better place to communicate. But that's going off topic, so let's simply focus on the matter at hand. Thank you.
    Blessings!

  • How to use union statement with declare & set function?

    Hi Experts,
            i  have small query about how to use union statement with declare & set function?
    Example as below :
    DECLARE @name AS date
    Declare @name2  AS date
    /* SELECT FROM [2013].[dbo].[OINV] T0 */
    /* WHERE */
    SET @name = /* T0.DocDate */ '[%1]'
    SET @name2 = /* T0.DocDate */ '[%2]'
    select  '2013',t5.U_salmannm,t1.CardName,t2.sumapplied as CollectionAmount,t2.DcntSum ,t3.DocTotal as InvoiceTotal,
    datediff(dd,t3.DocDate,t1.Docdate) as Days
    from 2013.dbo.orct t1
    inner join 2013.dbo.RCT2 t2 on t1.DocNum = t2.DocNum
    left join 2013.dbo.oinv t3 on
    t3.docentry = t2.baseAbs
    inner join 2013.dbo.ocrd t4 on t1.Cardcode = t4.CardCode
    inner join [2013].[dbo].[@CQ_RTSM] t5 on t4.U_BeatCode = t5.U_RoutCode
    where t2.DcntSum <> 0.000000 and t3.DocDate between [%1] and [%2]
    Union
    /* SELECT FROM [2014].[dbo].[OINV] T0 */
    /* WHERE */
    SET @name = /* T0.DocDate */ '[%1]'
    SET @name2 = /* T0.DocDate */ '[%2]'
    select  '2014',t5.U_salmannm,t1.CardName,t2.sumapplied as CollectionAmount,t2.DcntSum ,t3.DocTotal as InvoiceTotal,
    datediff(dd,t3.DocDate,t1.Docdate) as Days
    from 2014.dbo.orct t1
    inner join 2014.dbo.RCT2 t2 on t1.DocNum = t2.DocNum
    left join 2014.dbo.oinv t3 on
    t3.docentry = t2.baseAbs
    inner join 2014.dbo.ocrd t4 on t1.Cardcode = t4.CardCode
    inner join [2014].[dbo].[@CQ_RTSM] t5 on t4.U_BeatCode = t5.U_RoutCode
    where t2.DcntSum <> 0.000000 and t3.DocDate between [%1] and [%2]

    You have to create stored procedure in SQL only .
    Like u must have create for Crystal .
    You can execute procedure in query manager but you have to enter parameter manually..
    example
    Exec @Test '20140101' '20140501'
    Every time user has to enter it manually in yyyymmdd format in case of date parameters.
    Example
    Create Proc [@Test]
    as begin
    DECLARE @name AS date
    Declare @name2  AS date
    /* SELECT FROM [2013].[dbo].[OINV] T0 */
    /* WHERE */
    select  '2013',t5.U_salmannm,t1.CardName,t2.sumapplied as CollectionAmount,t2.DcntSum ,t3.DocTotal as InvoiceTotal,
    datediff(dd,t3.DocDate,t1.Docdate) as Days
    from 2013.dbo.orct t1
    inner join 2013.dbo.RCT2 t2 on t1.DocNum = t2.DocNum
    left join 2013.dbo.oinv t3 on
    t3.docentry = t2.baseAbs
    inner join 2013.dbo.ocrd t4 on t1.Cardcode = t4.CardCode
    inner join [2013].[dbo].[@CQ_RTSM] t5 on t4.U_BeatCode = t5.U_RoutCode
    where t2.DcntSum <> 0.000000 and t3.DocDate between @Name and @Name2
    Union
    /* SELECT FROM [2014].[dbo].[OINV] T0 */
    /* WHERE */
    select  '2014',t5.U_salmannm,t1.CardName,t2.sumapplied as CollectionAmount,t2.DcntSum ,t3.DocTotal as InvoiceTotal,
    datediff(dd,t3.DocDate,t1.Docdate) as Days
    from 2014.dbo.orct t1
    inner join 2014.dbo.RCT2 t2 on t1.DocNum = t2.DocNum
    left join 2014.dbo.oinv t3 on
    t3.docentry = t2.baseAbs
    inner join 2014.dbo.ocrd t4 on t1.Cardcode = t4.CardCode
    inner join [2014].[dbo].[@CQ_RTSM] t5 on t4.U_BeatCode = t5.U_RoutCode
    where t2.DcntSum <> 0.000000 and t3.DocDate between
    between @Name and @Name2
    end

  • DTW Stock with Serial Numbers

    Hi all, I DTW'd some stock in through the GRPO template. I then AP'd the invoice. Due to some administrative issues I had to credit the Invoice thus reversing the stock. So the Serial Numbers are all reflecting as unavailable.
    I need to re-import the stock with the same serial numbers and different costs. The DTW is giving me an error "(Serial Number) for item (Item Code) in line 1 already exists (in unique field)/Application defined or object defined error65171"
    I realise that these serial numbers are already in the system, but if I manually capture these on the GRPO the the application asks me to confirm this already exists. There are almost 2000 items to capture. Please could someone advise if there is possibly a field on the DTW template (purchase delivery) I could populate that overides this error"

    Are you using the oInventoryGenEntry templates? The serial numbers template I have contains 3 serial numbers - Internal, Manufacturer & System. The system serial number is the unique key and is system generated.
    Try the following to get a list of on hand stock with serial numbers:
    {SELECT T0.ItemCode, T0.ItemName,
          T1.WhsCode, CASE WHEN ISNULL(T2.SysSerial,-1) = -1 THEN T1.OnHand ELSE 1 END [Quantity], T0.AvgPrice,
          T2.SysSerial, T2.IntrSerial
    FROM OITM T0
          INNER JOIN OITW T1 ON T1.ItemCode = T0.ItemCode
          LEFT OUTER JOIN OSRI T2 ON T2.ItemCode = T1.ItemCode AND T2.WhsCode = T1.WhsCode AND T2.[Status] = 0
    WHERE T1.OnHand <> 0    and t0.ManSerNum = 'Y'
    ORDER BY T0.ItemCode, T1.WhsCode, T2.SysSerial}
    You may need to tweak it a bit for your eviironment.

  • Help with a PLSQL Function

    I am having problems with a SQL Function:
    CREATE OR REPLACE FUNCTION GDRREPORTS.MONTHTOTALS
    (BDate IN DATE)
    RETURN INTEGER
    AS
    ShakeCount INTEGER
    BEGIN
    ShakeCount=(Select count (distinct b.patid),
    to_char(gdrreports.To_Date_w_error (t.data), 'MON') BDay_month,
    to_char(gdrreports.To_Date_w_error (t.data), 'YYYY') BDay_year
    FROM CCI.a_patientlist p
    Inner Join CCI.PATIENTEDUCATIONNOTE_SCN_216IL b on
    b.patid=p.patid and b.tag=1789
    Inner join CCI.BIRTHDATE_519 t on
    t.patid=p.patid
    where p.unit != 'TRAIN' and p.admtime>='01JAN2011'
    and b.Data ='X'
    and to_char(gdrreports.To_Date_w_error (t.data), 'YYYY')=to_char(Bdate, 'YYYY')
    and to_char(gdrreports.To_Date_w_error (t.data), 'MON')=to_char(Bdate, 'MON'))
    RETURN ShakeCount ;
    EXCEPTION
    WHEN OTHERS THEN
    RETURN NULL;
    END MONTHTOTALS;
    Not exactly sure what's wrong with it.
    Thank you.

    871359 wrote:
    I am having problems with a SQL Function:
    CREATE OR REPLACE FUNCTION GDRREPORTS.MONTHTOTALS
    (BDate IN DATE)
    RETURN INTEGER
    AS
    ShakeCount INTEGER
    BEGIN
    ShakeCount=(Select count (distinct b.patid),
    to_char(gdrreports.To_Date_w_error (t.data), 'MON') BDay_month,
    to_char(gdrreports.To_Date_w_error (t.data), 'YYYY') BDay_year
    FROM CCI.a_patientlist p
    Inner Join CCI.PATIENTEDUCATIONNOTE_SCN_216IL b on
    b.patid=p.patid and b.tag=1789
    Inner join CCI.BIRTHDATE_519 t on
    t.patid=p.patid
    where p.unit != 'TRAIN' and p.admtime>='01JAN2011'
    and b.Data ='X'
    and to_char(gdrreports.To_Date_w_error (t.data), 'YYYY')=to_char(Bdate, 'YYYY')
    and to_char(gdrreports.To_Date_w_error (t.data), 'MON')=to_char(Bdate, 'MON'))
    RETURN ShakeCount ;
    EXCEPTION
    WHEN OTHERS THEN
    RETURN NULL;
    END MONTHTOTALS;
    Not exactly sure what's wrong with it.Without additional clues, we can't guess.
    It would help if you used COPY & PASTE so we can see this reported problem too.

  • How to get item stock from bin location with serial numbers?

    Dear experts
    I want to write query for getting item stock from bin location with serial numbers..
    Thank you
    Santosh Dhere.

    Hi Santosh,
    Try this:
    SELECT T0.[ItemCode], T5.[DistNumber], T5.[MnfSerial], T5.[LotNumber], T3.[OnHandQty]
      , T1.[BinCode], T1.[WhsCode]
    FROM  [dbo].[OIBQ] T0
      INNER  JOIN [dbo].[OBIN] T1  ON  T0.[BinAbs] = T1.[AbsEntry]  AND  T0.[OnHandQty] <> 0
      LEFT OUTER JOIN [dbo].[OBBQ] T2  ON  T0.[BinAbs] = T2.[BinAbs]  AND  T0.[ItemCode] = T2.[ItemCode]  AND  T2.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OSBQ] T3  ON  T0.[BinAbs] = T3.[BinAbs]  AND  T0.[ItemCode] = T3.[ItemCode]  AND  T3.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBTN] T4  ON  T2.[SnBMDAbs] = T4.[AbsEntry]  AND  T2.[ItemCode] = T4.[ItemCode]
      LEFT OUTER  JOIN [dbo].[OSRN] T5  ON  T3.[SnBMDAbs] = T5.[AbsEntry]  AND  T3.[ItemCode] = T5.[ItemCode]
    WHERE T1.[AbsEntry] >= (0)  AND  (T3.[AbsEntry] IS NOT NULL)
    UNION ALL
    SELECT T0.[ItemCode], T5.[DistNumber], T5.[MnfSerial], T5.[LotNumber], T0.[OnHandQty]
      , T1.[BinCode], T1.[WhsCode]
    FROM  [dbo].[OIBQ] T0
      INNER  JOIN [dbo].[OBIN] T1  ON  T0.[BinAbs] = T1.[AbsEntry]  AND  T0.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBBQ] T2  ON  T0.[BinAbs] = T2.[BinAbs]  AND  T0.[ItemCode] = T2.[ItemCode]  AND  T2.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OSBQ] T3  ON  T0.[BinAbs] = T3.[BinAbs]  AND  T0.[ItemCode] = T3.[ItemCode]  AND  T3.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBTN] T4  ON  T2.[SnBMDAbs] = T4.[AbsEntry]  AND  T2.[ItemCode] = T4.[ItemCode]
      LEFT OUTER  JOIN [dbo].[OSRN] T5  ON  T3.[SnBMDAbs] = T5.[AbsEntry]  AND  T3.[ItemCode] = T5.[ItemCode]
    WHERE T1.[AbsEntry] >= (0)  AND  (T2.[AbsEntry] IS NULL   AND  T3.[AbsEntry] IS NULL)
    UNION ALL
    SELECT T0.[ItemCode], T0.[SRNDistNumber], T0.[SRNMnfSerial], T0.[SRNLotNumber], T0.[IBQOnhandQty] - T0.[OnHandQty]
      , T0.[BinCode], T0.[WhsCode]
    FROM  (
      SELECT T0.[BinAbs], T0.[ItemCode], MAX(T0.[OnHandQty]) AS 'IBQOnhandQty', SUM(T2.[OnHandQty]) AS 'OnHandQty', N'' AS 'BTNDistNumber', N'' AS 'BTNMnfSerial'
      , N'' AS 'BTNLotNumber', N'' AS 'SRNDistNumber', N'' AS 'SRNMnfSerial', N'' AS 'SRNLotNumber', MIN(T5.[AbsEntry]) AS 'AbsEntry', MIN(T1.[BinCode]) AS 'BinCode'
      , 10000044 AS 'SnbType', MIN(T5.[AbsEntry]) AS 'BTNAbsEntry', MIN(T5.[AbsEntry]) AS 'SRNAbsEntry', MIN(T1.[WhsCode]) AS 'WhsCode', MIN(T1.[SL1Code]) AS 'SL1Code'
      , MIN(T1.[SL2Code]) AS 'SL2Code', MIN(T1.[SL3Code]) AS 'SL3Code', MIN(T1.[SL4Code]) AS 'SL4Code', MIN(T1.[SL1Abs]) AS 'SL1Abs'
      , MIN(T1.[SL2Abs]) AS 'SL2Abs', MIN(T1.[SL3Abs]) AS 'SL3Abs', MIN(T1.[SL4Abs]) AS 'SL4Abs'
      FROM  [dbo].[OIBQ] T0
      INNER  JOIN [dbo].[OBIN] T1  ON  T0.[BinAbs] = T1.[AbsEntry]  AND  T0.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBBQ] T2  ON  T0.[BinAbs] = T2.[BinAbs]  AND  T0.[ItemCode] = T2.[ItemCode]  AND  T2.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OSBQ] T3  ON  T0.[BinAbs] = T3.[BinAbs]  AND  T0.[ItemCode] = T3.[ItemCode]  AND  T3.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBTN] T4  ON  T2.[SnBMDAbs] = T4.[AbsEntry]  AND  T2.[ItemCode] = T4.[ItemCode]
      LEFT OUTER  JOIN [dbo].[OSRN] T5  ON  T3.[SnBMDAbs] = T5.[AbsEntry]  AND  T3.[ItemCode] = T5.[ItemCode]
      WHERE T1.[AbsEntry] >= (0 )  AND  (T2.[AbsEntry] IS NOT NULL)
      GROUP BY T0.[BinAbs], T0.[ItemCode]
      UNION ALL
      SELECT T0.[BinAbs], T0.[ItemCode], MAX(T0.[OnHandQty]) AS 'IBQOnhandQty', SUM(T3.[OnHandQty]) AS 'OnHandQty', N'' AS 'BTNDistNumber', N'' AS 'BTNMnfSerial'
      , N'' AS 'BTNLotNumber', N'' AS 'SRNDistNumber', N'' AS 'SRNMnfSerial', N'' AS 'SRNLotNumber', MIN(T4.[AbsEntry]) AS 'AbsEntry', MIN(T1.[BinCode]) AS 'BinCode'
      , 10000045 AS 'SnbType', MIN(T4.[AbsEntry]) AS 'BTNAbsEntry', MIN(T4.[AbsEntry]) AS 'SRNAbsEntry', MIN(T1.[WhsCode]) AS 'WhsCode', MIN(T1.[SL1Code]) AS 'SL1Code'
      , MIN(T1.[SL2Code]) AS 'SL2Code', MIN(T1.[SL3Code]) AS 'SL3Code', MIN(T1.[SL4Code]) AS 'SL4Code', MIN(T1.[SL1Abs]) AS 'SL1Abs'
      , MIN(T1.[SL2Abs]) AS 'SL2Abs', MIN(T1.[SL3Abs]) AS 'SL3Abs', MIN(T1.[SL4Abs]) AS 'SL4Abs'
      FROM  [dbo].[OIBQ] T0
      INNER  JOIN [dbo].[OBIN] T1  ON  T0.[BinAbs] = T1.[AbsEntry]  AND  T0.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBBQ] T2  ON  T0.[BinAbs] = T2.[BinAbs]  AND  T0.[ItemCode] = T2.[ItemCode]  AND  T2.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OSBQ] T3  ON  T0.[BinAbs] = T3.[BinAbs]  AND  T0.[ItemCode] = T3.[ItemCode]  AND  T3.[OnHandQty] <> 0
      LEFT OUTER  JOIN [dbo].[OBTN] T4  ON  T2.[SnBMDAbs] = T4.[AbsEntry]  AND  T2.[ItemCode] = T4.[ItemCode]
      LEFT OUTER  JOIN [dbo].[OSRN] T5  ON  T3.[SnBMDAbs] = T5.[AbsEntry]  AND  T3.[ItemCode] = T5.[ItemCode]
      WHERE T1.[AbsEntry] >= (0 )  AND  (T3.[AbsEntry] IS NOT NULL)
      GROUP BY T0.[BinAbs], T0.[ItemCode]
      ) T0
    WHERE T0.[IBQOnhandQty] > T0.[OnHandQty]
    Regards,
    JC.

  • Having trouble converting array to spreadsheet string, storing the file and coverting back to array with complex numbers

    I am working with a network analyzer. I have arrays made of 5 columns the first consisting of an integer and the next four consisting of complex numbers. I am converting the array into a spreadsheet string and then saving the file using the write characters to a file VI. That seems to work well as when I open the file in Excel all the data is there. However when I try to reverse the process, open file and convert back to array, I loose some of the data. Specifically the imaginary parts of my complex numbers are all going to zero. I have narrowed down the problem to be in the conversion from spreadsheet string to array and vice versa. I
    think the problem may be with the 'format' input to the VI. I do not have an adequate resource for this so I am not sure what to put in to accomplish my task. Any takers?

    Hi Biz
    I don't think there is a direct way of converting a complex number to a
    string, so when you convert the array to a spreadsheet string, the
    numbers would be converted to real data.
    However, you could try separating the real and imaginary parts using the
    "Numeric: Complex to Re/Im" function, and then store these - either in
    separate files or in adjacent columns/rows in the same file. Then, when
    you read in the data again, use the "Numeric: Re/Im to Complex" function
    to put the two "halves" together.
    If you actually want Excel to interpret the numbers as imaginary, then
    you'll probably want to create a string for each complex number of the
    form "Re + Im*i" (after separating the Re and Im parts), by using
    "String:Format into String" with 2 numeric inputs and the format string
    "%f+%fi".
    Reading the data back into Labview then would require splitting the
    string into the 2 pieces by using "Stringcan from String" with 2
    numeric outputs (smae precision as original numbers specified by the 2
    Default Value inputs) and the same format string "%f+%fi", and then using
    the above-mentioned "Numeric: Re/Im to Complex" function. It worked for
    me, so if you can't follow what I am describing, send me an email and I
    can email you what I did (LV 5.1.1).
    Paul
    Biz wrote:
    > Having trouble converting array to spreadsheet string, storing the
    > file and coverting back to array with complex numbers
    >
    > I am working with a network analyzer. I have arrays made of 5 columns
    > the first consisting of an integer and the next four consisting of
    > complex numbers. I am converting the array into a spreadsheet string
    > and then saving the file using the write characters to a file VI. That
    > seems to work well as when I open the file in Excel all the data is
    > there. However when I try to reverse the process, open file and
    > convert back to array, I loose some of the data. Specifically the
    > imaginary parts of my complex numbers are all going to zero. I have
    > narrowed down the problem to be in the conversion from spreadsheet
    > string to array and vice versa. I think the problem may be with the
    > 'format' input to the VI. I do not have an adequate resource for this
    > so I am not sure what to put in to accomplish my task. Any takers?
    Research Assistant
    School of Physiotherapy, Curtin University of Technology
    Selby Street, Shenton Park, Western Australia, Australia. 6008
    email: [email protected]
    Tel. +61 8 9266 4657 Fax. +61 8 9266 3699
    "Everyone who calls on the name of the Lord will be saved." Romans 10:12
    "For all have sinned and fall short of the glory of God, and are
    justified freely by his grace through the redemption that came by Christ
    Jesus." Romans 3:23-4

  • Business Partner records with large numbers of addresses -- Move-in issue

    Friends,
    Our recent CCS implementation (ECC6.0ehp3 & CRM2007) included the creation of some Business Partner records with large numbers of addresses.  Most of these are associated with housing authorities, large developers and large apartment complex owners.  Some of the Business Partners have over 1000 address records and one particular BP has over 6000 addresses that were migrated from our Legacy System.  We are experiencing very long run times to try to execute move in's and move out's due to the system reading the volume of addresses attached to the Business Partner.  In many cases, the system simply times out before it can execute the transaction.  SAP's suggestion is that we run a BAPI to cleanse the addresses and also to implement a BADI to prevent the creation of excess addresses. 
    Two questions surrounding the implementation of this code.  Will the BAPI to cleanse the addresses, wipe out all address records except for the standard address?  That presents an issue to ensure that the standard address on the BP record is the correct address that we will have identified as the proper mailing address.  Second question is around the BADI to prevent the creation of excess addresses.  It looks like this BADI is going to prevent the move in address from updating the standard address on the BP record which in the vast majority of cases is exactly what we would want. 
    Does anyone have any experience with this situation of excess BP addresses and how did you handle the manipulation and cleansing of the data and how do you maintain it going forward?
    Our solution is ECC6.0Ehp3 with CRM2007...latest patch level
    Specifically, SAP suggested we apply/review these notes:
    Note 1249787 - Performance problem during move-in with huge addresses
    **applied this ....did not help
    Note 861528 - Performance in move-in for partner w/ large no of addresses
    **older ISU4.7 note
    Directly from our SAP message:
    use the function module
    BAPI_BUPA_ADDRESS_REMOVE or run BAPI_ISUPARTNER_CHANGE to delete
    unnecessary business partner addresses.
    Use BAdI ISU_MOVEIN_CUSTOMIZE to avoid the creation of unnecessary
    business partner addresses (cf. note 706686) in the future for that
    business partner.
    Note 706686 - Move-in: Avoid unnecessary business partner addresses
    Does anyone have any suggestions and have you used above notes/FMs to resolve something like this?
    Thanks,
    Nick

    Nick:
    One thing to understand is that the badi and bapi are just the tools or mechanisms that will enable you to fix this situation.  You or your development team will need to define the rules under which these tools are used.  Lets take them one at a time.
    BAPI - the bapi for business partner address maintenance.  It would seem that you need to create a program which first read the partners and the addresses assigned to them and then compares these addresses to each other to find duplicate addresses.  These duplicates then can be removed provided they are not used elsewhere in the system (i.e. contract account).
    BADI - the badi for business partner address maintenance.  Here you would need to identify the particular scenarios where addresses should not be copied.  I would expect that most move-ins would meet the criteria of adding the address and changing the standard address.  But for some, i.e. landlords or housing complexes, you might not add an address because it already exists for the business partner, and you might not change the standard address because those accounts do not fall under that scenario.  This will take some thinking and design to ensure that the address add/change functions are executed under the right circumstances.
    regards,
    bill.

  • Having trouble with page numbering in Pages

    I moved a document from Word to Pages.  Now the page numbering is outside any text box, footer, table, etc., and cannot be accessed for editing.  I cannot click on it.  I tried fooling around with page number functions in Pages, and it merely adds a second set of page numbers.  I revealed the formatting and background information to no avail.  It is as if the page numbers do not exist, except that they are showing up on screen.  Has anyone ever had this problem?  How did you resolve it?

    JT,
    This is a long-standing conversion issue, where Word page numbers sometimes turn into un-editable graphic objects in Pages. To get rid of them, do the following:
    Arrange > Make Background Objects Selectable
    Format > Advanced > Make Background Objects Selectable
    Command-Drag a selection box from the margin diagonally across the page number object to select it
    Press Delete
    That usually does it. If you have a multi-section document, you may have to do it more than once.
    Jerry

  • DIAPI posting Delivery Document with Serial Numbers SP1

    Release 2005A, SP1 PL4 seems to have broken code that worked with SP00.  When trying to create a Delivery Document that contains Serial Numbers, an error is generated: Error -1, General Error.  When adding a delievery document which does not contain serial numbers, the document adds successfully.
    The following code loops through a recordset to create documents, add expenses and add serial numbers when appropriate.  Is this a new 'feature' or can we make a coding change to eliminate this error?
    Sample code:
        Try
          oSalesOrder = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.oOrders)
          RecSet = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
          RecSet2 = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
          RecSet3 = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
          RecSet4 = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
          RecSet5 = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
          RecSet6 = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
          '-- Select Documents to process and loop through recordset
          lsSQL = "SELECT DocEntry FROM DeliveryTable WHERE ProcessResult IS NULL Group by DocEntry"
          RecSet.DoQuery(lsSQL)
          While Not RecSet.EoF
            oSalesOrder.GetByKey(RecSet.Fields.Item(0).Value)
            If bDocuments(piCompany).DelDraft = False Then
              oDelivery = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDeliveryNotes)
            Else
              oDelivery = oCompany(piCompany).GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDrafts)
            End If
            oDelivery.CardCode = oSalesOrder.CardCode
            oDelivery.Comments = "Based On Sales Order " & oSalesOrder.DocNum & "."
            oDelivery.DocDate = Today
            oDelivery.ContactPersonCode = oSalesOrder.ContactPersonCode
            oDelivery.DocCurrency = oSalesOrder.DocCurrency
            oDelivery.DocDueDate = Today
            If bDocuments(piCompany).DelDraft = True Then
              oDelivery.DocObjectCode = SAPbobsCOM.BoObjectTypes.oDeliveryNotes
            End If
            '-- Handle Expenses for Document
            Dim ExpenseLoop As Integer
            Dim ExpenseCount As Integer = 0
            For ExpenseLoop = oSalesOrder.Expenses.Count - 1 To 0 Step -1
            ExpenseCount += 1
              '-- Create new Expense if needed
              If ExpenseCount > oDelivery.Expenses.Count Then
                oDelivery.Expenses.Add()
              End If
              oSalesOrder.Expenses.SetCurrentLine(ExpenseLoop)
              '-- Copy all non-readonly properties
              If oSalesOrder.Expenses.LineTotal > 0 Then
                oDelivery.Expenses.BaseDocEntry = oSalesOrder.Expenses.BaseDocEntry
                oDelivery.Expenses.BaseDocLine = oSalesOrder.Expenses.BaseDocLine
                oDelivery.Expenses.BaseDocType = oSalesOrder.Expenses.BaseDocType
                oDelivery.Expenses.DeductibleTaxSum = oSalesOrder.Expenses.DeductibleTaxSum
                oDelivery.Expenses.DistributionMethod = oSalesOrder.Expenses.DistributionMethod
                oDelivery.Expenses.ExpenseCode = oSalesOrder.Expenses.ExpenseCode
                oDelivery.Expenses.LineTotal = oSalesOrder.Expenses.LineTotal
                oDelivery.Expenses.Remarks = oSalesOrder.Expenses.Remarks
                oDelivery.Expenses.TaxCode = oSalesOrder.Expenses.TaxCode
                oDelivery.Expenses.VatGroup = oSalesOrder.Expenses.VatGroup
              End If
            Next ExpenseLoop
            Dim i As Integer = 0
            Dim liMinRef As Integer = -1
            For x = 0 To oSalesOrder.Lines.Count - 1
              lsSQL = "SELECT ISNULL(MIN(CAST(LineRef as int)),999999) as MinLineRef FROM DeliveryTable WHERE DocEntry = " & RecSet.Fields.Item(0).Value & " AND CAST(LineRef as int) > " & liMinRef
              RecSet5.DoQuery(lsSQL)
              If Not RecSet5.EoF Then
                '-- It's possible that the DeliveryTable has less records then the RDR1 table - if that's the case
                '-- we may be at the end, so set the liMinRef field to something out of range
                liMinRef = RecSet5.Fields.Item(0).Value
              End If
              '-- get line items for each document
              lsSQL = "Select * from DeliveryTable WHERE DocEntry = " & RecSet.Fields.Item(0).Value & " AND LineRef = " & x & " AND ProcessResult IS Null"
              RecSet2.DoQuery(lsSQL)
              RecSet2.MoveFirst()
              While Not RecSet2.EoF
                '-- We need to walk through the SO to find the item that we are receiving based on the LineNum
                Dim liCurrentLine As Integer = x
                Dim lbFound As Boolean = False
                While liCurrentLine <= (oSalesOrder.Lines.Count - 1)
                  '-- We need to get the PO Line number (x is NOT the LineRef)
                  oSalesOrder.Lines.SetCurrentLine(liCurrentLine)
                  If oSalesOrder.Lines.LineNum = liMinRef Then
                    lbFound = True
                    Exit While
                  End If
                  liCurrentLine += 1
                End While
                If lbFound Then
                  i += 1
                  If i > oDelivery.Lines.Count Then
                    oDelivery.Lines.Add()
                  End If
                  oDelivery.Lines.BaseEntry = oSalesOrder.DocEntry
                  oDelivery.Lines.Quantity = RecSet2.Fields.Item(6).Value
                  oDelivery.Lines.BaseType = SAPbobsCOM.BoObjectTypes.oOrders
                  oDelivery.Lines.LineTotal = oSalesOrder.Lines.LineTotal * (oDelivery.Lines.Quantity / oSalesOrder.Lines.Quantity)
                  oDelivery.Lines.UserFields.Fields.Item("U_WhseLoc").Value = RecSet2.Fields.Item(8).Value
                  oDelivery.Lines.AccountCode = oSalesOrder.Lines.AccountCode
                  oDelivery.Lines.Address = oSalesOrder.Lines.Address
                  oDelivery.Lines.Currency = oSalesOrder.Lines.Currency
                  oDelivery.Lines.ItemCode = oSalesOrder.Lines.ItemCode
                  oDelivery.Lines.BaseLine = liMinRef
                  oDelivery.Lines.ItemDescription = oSalesOrder.Lines.ItemDescription
                  oDelivery.Lines.WarehouseCode = oSalesOrder.Lines.WarehouseCode
                  lsUserID = RecSet2.Fields.Item("UserID").Value
                  '-- manage serial numbers
                  j = -1
                  lsSQL = "Select * from DeliverySerial WHERE DocEntry = " & oDelivery.Lines.BaseEntry & " AND LineRef = " & liMinRef
                  lsSQL += " AND WIPLineRef = " & RecSet2.Fields.Item("WIPLineRef").Value
                  RecSet3.DoQuery(lsSQL)
                  While Not RecSet3.EoF
                    '-- get the next SystemSerialNumber for the Inventory Item
                    lsSQL = "EXEC " & gsDB(piCompany) & "xspGetSysSerial " & sparm(oDelivery.Lines.ItemCode) & ", " & sparm(RecSet3.Fields.Item("LotNo").Value)
                    lsSQL += ", " & sparm(RecSet3.Fields.Item("ManSerNo").Value) & ", " & sparm(RecSet3.Fields.Item("IntSerNo").Value)
                    lsSQL += ", " & RecSet3.Fields.Item("QTY").Value & ", " & sparm(oDelivery.Lines.WarehouseCode) & ", " & sparm(RecSet2.Fields.Item(8).Value)
                    RecSet4.DoQuery(lsSQL)
                      j += 1
                      If j + 1 > oDelivery.Lines.SerialNumbers.Count Then
                        oDelivery.Lines.SerialNumbers.Add()
                      End If
                      oDelivery.Lines.SerialNumbers.SetCurrentLine(j)
                      oDelivery.Lines.SerialNumbers.BatchID = RecSet3.Fields.Item("LotNo").Value
                      oDelivery.Lines.SerialNumbers.ManufacturerSerialNumber = RecSet3.Fields.Item("ManSerNo").Value
                      oDelivery.Lines.SerialNumbers.InternalSerialNumber = RecSet3.Fields.Item("IntSerNo").Value
                      oDelivery.Lines.SerialNumbers.SystemSerialNumber = RecSet4.Fields.Item(0).Value
                      oDelivery.Lines.SerialNumbers.BaseLineNumber = oDelivery.Lines.BaseLine
                    RecSet3.MoveNext()
                  End While
                  '-- 'end manage serial numbers
                End If
                RecSet2.MoveNext()
              End While
            Next x
            '-- now add object to SAP
            If 0 <> oDelivery.Add() Then
              Dim liError As Long
              Dim lsError As String
              Call oCompany(piCompany).GetLastError(liError, lsError)
              '-- write error code to table - Delivery document creation was unsuccessful
              lsSQL = "Update DeliveryTable SET ProcessResult = " & liError & ", ProcessDate = GetDate() WHERE DocEntry = " & oSalesOrder.DocEntry & " AND ProcessResult Is Null"
              RecSet2.DoQuery(lsSQL)
              lsuWriteEvent("AR Delivery", bDocuments(piCompany).DelDraft, oSalesOrder.DocEntry, liError, lsError, piCompany)
            Else
              lsuWriteEvent("AR Delivery", bDocuments(piCompany).DelDraft, oSalesOrder.DocEntry, 0, "Success", piCompany)
            End If
            RecSet.MoveNext()
          End While
        Catch
          LogErrorMessage(Err.Description)
        Finally
          If Not RecSet Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(RecSet)
          End If
          If Not RecSet2 Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(RecSet2)
          End If
          If Not RecSet3 Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(RecSet3)
          End If
          If Not RecSet4 Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(RecSet4)
          End If
          If Not RecSet5 Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(RecSet5)
          End If
          If Not RecSet6 Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(RecSet6)
          End If
          If Not oSalesOrder Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oSalesOrder)
          End If
          If Not oDelivery Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oDelivery)
          End If
          GC.WaitForPendingFinalizers()
        End Try

    We have narrowed down the issue to this:
    If you are just adding a delivery document with serial numbers, the DIAPI works OK.  If you are adding a delivery document which is based upon a sales order and add the 3 lines that reference it:
    oDelivery.Lines.BaseEntry = oSalesOrder.DocEntry
    oDelivery.Lines.BaseType = SAPbobsCOM.BoObjectTypes.oOrders
    oDelivery.Lines.BaseLine = liMinRef
    then you receive a error of -1, General error.  This is functionality that did work in 2004 and 2005 SP00.  I believe this is a bug.

Maybe you are looking for

  • Sat M40-236 Blue Screen of Death

    Just a few days ago i've bought Toshiba Satellite M40-236. I disliked the pre-installed Windows XP Home Edition and installed Windows XP Pro with SP2 integrated. Afterwards i installed all the drivers provided and advised by Toshiba from: http://eu.c

  • Use standard Function kyes as custom in PF ststus

    Hi all, I want to use standard Function kyes(such as F1 & F3) as custom in PF ststus so that I will perform my code by these function keys. Is it possible. Thanks Sanket sethi

  • Nokia 3120 classic

    I am receiving calls /texts but the screen is not lighting up. I can read texts though they are dull

  • Your version of Outlook has been blocked

    Brand new machine, freshly patched, all apps new, new, new. Our email administrator, may he rot in a very warm place, has blocked Outlook 2007. Creation of a Outlook 2007 profile followed by firing up Outlook 2007 got me a message "You version of Out

  • Trying to understand structured Framemaker

    I want to start a very simple structured Framemaker file, so I can see how it works. If I select File > New > Explore Structured Templates > Book > Chapter and I save that file as Chapter, 1. WHERE do I get the EDD from? The Chapter will compile as a