Accessing data from Sage X3 from a shipping program using ODBC

SOLVED

Hello,

I have Fedex Ship Manager software and I am  trying to integrate it with our Sage X3 software using ODBC and SQL. I am only able to see sys tables when trying to link. I even set up a new user in SQL manager with full rights. The Fedex software is in administrator mode so there shouldn't be anything blocking access but am I missing something?

Thank you,

Jeff

  • 0

    Hi Jeff, please explain a bit more of your context, SAGE X3 version and patch, do you want to read, write or both? Which data you need access, standard data or specific objects you maybe developed? Cheers!

  • +1
    verified answer

    Jeff,

    We are using Sage X3 v11 and SQL.  While it isn't the best solution we are using the SA user for the odbc connection.  I believe the issue you are seeing is that FedEx can only see views (not tables directly).  I am new to this forum so I put the code we used for our view below (please note we put some static information in ours)

    SELECT        PROD.SORDER.BPCNAM_0 AS CUSTOMER_NAME, PROD.SORDERQ.ITMREF_0 AS PART_CODE, PROD.ITMMASTER.ITMDES1_0 AS PART_DESC, MONTH(PROD.SORDER.ORDDAT_0) AS PERIOD, 
                             YEAR(PROD.SORDER.ORDDAT_0) AS AMERILAB_YEAR, PROD.SORDER.CUSORDREF_0 AS CUSTOMER_REFERENCE, PROD.SORDER.SOHNUM_0 AS ORDER_NUMBER, 
                             PROD.SORDERQ.SOQSEQ_0 / 1000 AS ORDER_LINE_NUMBER, PROD.SORDERQ.DEMDLVDAT_0 AS REQUIRED_DATE, PROD.SORDER.ORDDAT_0 AS ORDER_DATE, PROD.SORDERQ.QTY_0 AS ORDER_QUANTITY, 
                             CASE WHEN SUM(PROD.STOCK.QTYSTU_0) IS NULL THEN 0 ELSE SUM(PROD.STOCK.QTYSTU_0) END AS QTY_AVAILABLE, PROD.SORDERQ.QTYSTU_0 - (PROD.SORDERQ.ODLQTYSTU_0 + PROD.SORDERQ.DLVQTYSTU_0) 
                             AS ORDER_QUANTITY_OUTSTANDING, PROD.SORDER.SHIDAT_0 AS SHIP_BY_DATE, COALESCE (CASE WHEN PROD.SORDER.DLVSTA_0 = 1 THEN 'Not delivered' ELSE NULL END, 
                             CASE WHEN PROD.SORDER.DLVSTA_0 = 2 THEN 'Partially delivered' ELSE NULL END, CASE WHEN PROD.SORDER.DLVSTA_0 = 3 THEN 'Delivered' ELSE NULL END) AS DILEVERY_STATUS
    FROM            PROD.SORDER INNER JOIN
                             PROD.SORDERQ ON PROD.SORDER.SOHNUM_0 = PROD.SORDERQ.SOHNUM_0 INNER JOIN
                             PROD.ITMMASTER ON PROD.SORDERQ.ITMREF_0 = PROD.ITMMASTER.ITMREF_0 LEFT OUTER JOIN
                             PROD.STOCK ON PROD.ITMMASTER.ITMREF_0 = PROD.STOCK.ITMREF_0 AND PROD.STOCK.STA_0 = 'A'
    WHERE        (PROD.SORDER.DLVSTA_0 <> 3)
    GROUP BY PROD.SORDER.BPCNAM_0, PROD.SORDERQ.ITMREF_0, PROD.ITMMASTER.ITMDES1_0, MONTH(PROD.SORDER.ORDDAT_0), YEAR(PROD.SORDER.ORDDAT_0), PROD.SORDER.CUSORDREF_0, PROD.SORDER.SOHNUM_0, 
                             PROD.SORDERQ.SOQSEQ_0 / 1000, PROD.SORDERQ.DEMDLVDAT_0, PROD.SORDER.ORDDAT_0, PROD.SORDERQ.QTY_0, PROD.SORDERQ.QTYSTU_0, PROD.SORDERQ.ODLQTYSTU_0, PROD.SORDERQ.DLVQTYSTU_0, 
                             PROD.SORDER.DLVSTA_0, PROD.SORDER.SHIDAT_0

    I believe you have to make the view directly through SQL Management Studio.  I am looking at our FedEx and I don't see any views I made through Sage.

    I hope that helps.

  • 0 in reply to kfichtner

    Thank you Kfichtner, I will give this a try. That sounds about right though.