User Tools

Site Tools


rm34449

rm34449 Anwender vermisst die Einträge in der "Customer Group" in EDI Integration

Daten

TUSER_SCD.cDisplayname: salvid4
TUSER_SCD.cUniqueID: SMA0000N21IJ

Reproduzieren

Idee von Viktor:

  • in sas.messagescheduler.scheduler.onMetaChange den Customer Group Eintrag der aktuellen Zeile (der aktuell gewählte) aus der Liste der Customer Groups löschen. Damit wird der aktuelle Eintrag nicht gefunden und der Code fliegt wahrscheinlich auf die Schnauze.
    • das Problem ist wahrscheinlich dadurch verursacht, dass der aktuelle Eintrag in der Liste nicht auftaucht

Nützliche SQL Befehle (lokal!):

-- locally I've used the schedule with id=185
SELECT * FROM TAIREDISCHEDULER 
WHERE CID=185
ORDER BY cID DESC
 
-- originally CCUSTGROUPID was null
UPDATE TAIREDISCHEDULER SET CCUSTGROUPID=2034967 WHERE cID=185;
 
-- get the customer group with id 2034967
SELECT * FROM SEESCMDB0.TORGANIZATION_SCD WHERE cid=2034967;

Remote we have the problem for example with the schedule 1018:

SELECT * FROM SEESCMDB0.TAIREDISCHEDULER WHERE cID=1018;
 
-- 2034967 delivers "STELIA AEROSPACE"
SELECT * FROM SEESCMDB0.TORGANIZATION_SCD WHERE cid=2034967;
 
SELECT SEESCMDB0.TAIREDISCHEDULER.CID,CJOBIDREF,CACTIVE,CMESSAGETYPE,CCOMMENT, 
    TAIREDISCHEDULER.CCUSTGROUPID, TORGANIZATION_SCD.CNAME CCUSTGROUPNAME, 
    TAIREDISCHEDULER.CSUPPLIERCPID,TCONTROLPOINT_SCD.CNAME CSUPPLIERCPNAME,TCONTROLPOINT_SCD.CPSIPARTNER, 
  CSTARTDATE,CSTARTTIME,CFREQUENCY,CFREQUENCYUNIT,CMONDAY,CTUESDAY,CWEDNESDAY,CTHURSDAY,CFRIDAY,CSATURDAY,CSUNDAY 
FROM SEESCMDB0.TAIREDISCHEDULER 
JOIN SEESCMDB0.TCONTROLPOINT_SCD ON (TAIREDISCHEDULER.CSUPPLIERCPID = TCONTROLPOINT_SCD.CCPID) 
LEFT JOIN SEESCMDB0.TORGANIZATION_SCD ON (TORGANIZATION_SCD.CID = TAIREDISCHEDULER.CCUSTGROUPID) 
WHERE 1=1 
AND SEESCMDB0.TAIREDISCHEDULER.CID=1018;
-- get CP ids for user 'salvid4' = SMA0000N21IJ
SELECT SEESCMDB0.tOrganization_SCD.cStatus AS cOrgStatus,
      SEESCMDB0.tOrganization_SCD.cOrgCode, 
      SEESCMDB0.tCPUser_SCD.cCPID, 
      SEESCMDB0.tUser_SCD.*,
      SEESCMDB0.tCPUser_SCD.cNotification 
      FROM SEESCMDB0.tUser_SCD 
      LEFT JOIN SEESCMDB0.tCPUser_SCD ON (SEESCMDB0.tUser_SCD.cUniqueID=SEESCMDB0.tCPUser_SCD.cUserID),SEESCMDB0.tOrganization_SCD
      WHERE SEESCMDB0.tUser_SCD.cOrganizationID=SEESCMDB0.tOrganization_SCD.cID AND SEESCMDB0.tUser_SCD.cUniqueID='SMA0000N21IJ';
 
-- then we get CPs 10007544 and 10017660
 
-- now we fetch all routings for these two cps
SELECT SEESCMDB0.tNetworkLink_SCD_New.cId, SEESCMDB0.tNetworkLink_SCD_New.cCPBYUERID, SEESCMDB0.tNetworkLink_SCD_New.cCPSELLERID, 
SEESCMDB0.tNetworkLink_SCD_New.CISUNREGSUPPLIER,SEESCMDB0.tNetworkSupplierInfo_SCD.cSellerNumber, 
SEESCMDB0.tNetworkSupplierInfo_SCD.cSellerPlant, cpbuyer.cOrgCode, cpbuyer.cPlantCode, cpseller.cName cpsellername, cpbuyer.cName cpbuyername, vNetworkCommunication_SCD.cLogicalFilename, vNetworkCommunication_SCD.cCommunicationType,  
orgseller.cId orgsellerid, orgseller.cName orgsellername, orgseller.cParentId orgsellerparentid,  orgbuyer.cId orgbuyerid, orgbuyer.cName orgbuyername, orgbuyer.cName3 orgbuyernameshort, orgbuyer.cParentId orgbuyerparentid,  
addressBuyer.cCity buyerCity, addressSeller.cCity sellerCity, tNetworkSupplierInfo_SCD.CDELETIONTIMESTAMP, cpseller.cName || '/' || addressSeller.cCity AS cSellerNameCity,  cpbuyer.cName || ' (' || cpbuyer.cPlantCode || ')' AS cBuyerNamePlantCode  
FROM SEESCMDB0.tNetworkLink_SCD_New, SEESCMDB0.tControlPoint_SCD cpseller, SEESCMDB0.tControlPoint_SCD cpbuyer, 
SEESCMDB0.tOrganization_SCD orgseller, SEESCMDB0.tOrganization_SCD orgbuyer, SEESCMDB0.vNetworkCommunication_SCD, 
SEESCMDB0.tNetworkSupplierInfo_SCD, SEESCMDB0.TCPADDRESS_SCD addressBuyer, SEESCMDB0.TCPADDRESS_SCD addressSeller 
WHERE 
orgbuyer.cID = cpbuyer.cOrganizationID 
AND orgseller.cID = cpseller.cOrganizationID  
AND cpbuyer.cCPID = SEESCMDB0.tNetworkLink_SCD_New.cCPByuerID 
AND cpseller.cCPID = SEESCMDB0.tNetworkLink_SCD_New.cCPSellerID 
AND SEESCMDB0.tNetworkLink_SCD_New.cID=vNetworkCommunication_SCD.cIDNetLink 
AND SEESCMDB0.tNetworkLink_SCD_New.cId=SEESCMDB0.tNetworkSupplierInfo_SCD.cNetworkLinkId 
AND addressBuyer.cCPID = tNetworkLink_SCD_New.cCPByuerID 
AND addressSeller.cCPID = tNetworkLink_SCD_New.cCPSellerID 
AND ROWNUM <= 5000  
AND (tNetworkLink_SCD_New.cCPSELLERID IN (10007544, 10017660))  
ORDER BY tNetworkLink_SCD_New.cID, cSellerNumber, vNetworkCommunication_SCD.cID;
 
 
-- this query delivers the proper (maybe) results
-- at least it delivers 7 entries
SELECT orgbuyer.* FROM SEESCMDB0.TORGANIZATION_SCD orgbuyer, SEESCMDB0.tControlPoint_SCD cpbuyer 
WHERE 
orgbuyer.cID = cpbuyer.cOrganizationID 
AND cpbuyer.ccpID IN (SELECT DISTINCT CCPBYUERID FROM SEESCMDB0.tNetworkLink_SCD_New WHERE CCPSELLERID IN (10007544, 10017660));
 
-- this query will be executed in reality (as SQL + Java) and delivers only 2 entries
SELECT DISTINCT cParentId FROM (
SELECT orgbuyer.* 
FROM SEESCMDB0.TORGANIZATION_SCD orgbuyer, SEESCMDB0.tControlPoint_SCD cpbuyer 
WHERE 
orgbuyer.cID = cpbuyer.cOrganizationID 
AND cpbuyer.ccpID IN (
 
SELECT DISTINCT CCPBYUERID FROM (
 
SELECT SEESCMDB0.tNetworkLink_SCD_New.cId, SEESCMDB0.tNetworkLink_SCD_New.cCPBYUERID, SEESCMDB0.tNetworkLink_SCD_New.cCPSELLERID, 
SEESCMDB0.tNetworkLink_SCD_New.CISUNREGSUPPLIER,SEESCMDB0.tNetworkSupplierInfo_SCD.cSellerNumber, 
SEESCMDB0.tNetworkSupplierInfo_SCD.cSellerPlant, cpbuyer.cOrgCode, cpbuyer.cPlantCode, cpseller.cName cpsellername, cpbuyer.cName cpbuyername, vNetworkCommunication_SCD.cLogicalFilename, vNetworkCommunication_SCD.cCommunicationType,  
orgseller.cId orgsellerid, orgseller.cName orgsellername, orgseller.cParentId orgsellerparentid,  orgbuyer.cId orgbuyerid, orgbuyer.cName orgbuyername, orgbuyer.cName3 orgbuyernameshort, orgbuyer.cParentId orgbuyerparentid,  
addressBuyer.cCity buyerCity, addressSeller.cCity sellerCity, tNetworkSupplierInfo_SCD.CDELETIONTIMESTAMP, cpseller.cName || '/' || addressSeller.cCity AS cSellerNameCity,  
cpbuyer.cName || ' (' || cpbuyer.cPlantCode || ')' AS cBuyerNamePlantCode  
FROM SEESCMDB0.tNetworkLink_SCD_New, SEESCMDB0.tControlPoint_SCD cpseller, SEESCMDB0.tControlPoint_SCD cpbuyer, 
SEESCMDB0.tOrganization_SCD orgseller, SEESCMDB0.tOrganization_SCD orgbuyer, SEESCMDB0.vNetworkCommunication_SCD, 
SEESCMDB0.tNetworkSupplierInfo_SCD, SEESCMDB0.TCPADDRESS_SCD addressBuyer, SEESCMDB0.TCPADDRESS_SCD addressSeller 
WHERE 
orgbuyer.cID = cpbuyer.cOrganizationID 
AND orgseller.cID = cpseller.cOrganizationID  
AND cpbuyer.cCPID = SEESCMDB0.tNetworkLink_SCD_New.cCPByuerID 
AND cpseller.cCPID = SEESCMDB0.tNetworkLink_SCD_New.cCPSellerID 
AND SEESCMDB0.tNetworkLink_SCD_New.cID=vNetworkCommunication_SCD.cIDNetLink 
AND SEESCMDB0.tNetworkLink_SCD_New.cId=SEESCMDB0.tNetworkSupplierInfo_SCD.cNetworkLinkId 
AND addressBuyer.cCPID = tNetworkLink_SCD_New.cCPByuerID 
AND addressSeller.cCPID = tNetworkLink_SCD_New.cCPSellerID 
AND ROWNUM <= 5000  
AND (tNetworkLink_SCD_New.cCPSELLERID IN (10007544, 10017660))  
ORDER BY tNetworkLink_SCD_New.cID, cSellerNumber, vNetworkCommunication_SCD.cID
)
)
);

Die Ursache für das Problem scheint die Anzahl der Einträge in der Tabelle tNetworkLink_SCD_New zu sein:

-- this query delivers 1356705  => much more than 5000
SELECT COUNT(*) FROM SEESCMDB0.tNetworkLink_SCD_New;
 
-- the query which was used, delivers 8421 => unfortunately also more than 5000 
SELECT COUNT(*) FROM (
SELECT SEESCMDB0.tNetworkLink_SCD_New.cId, SEESCMDB0.tNetworkLink_SCD_New.cCPBYUERID, SEESCMDB0.tNetworkLink_SCD_New.cCPSELLERID, 
SEESCMDB0.tNetworkLink_SCD_New.CISUNREGSUPPLIER,SEESCMDB0.tNetworkSupplierInfo_SCD.cSellerNumber, 
SEESCMDB0.tNetworkSupplierInfo_SCD.cSellerPlant, cpbuyer.cOrgCode, cpbuyer.cPlantCode, cpseller.cName cpsellername, cpbuyer.cName cpbuyername, vNetworkCommunication_SCD.cLogicalFilename, vNetworkCommunication_SCD.cCommunicationType,  
orgseller.cId orgsellerid, orgseller.cName orgsellername, orgseller.cParentId orgsellerparentid,  orgbuyer.cId orgbuyerid, orgbuyer.cName orgbuyername, orgbuyer.cName3 orgbuyernameshort, orgbuyer.cParentId orgbuyerparentid,  
addressBuyer.cCity buyerCity, addressSeller.cCity sellerCity, tNetworkSupplierInfo_SCD.CDELETIONTIMESTAMP, cpseller.cName || '/' || addressSeller.cCity AS cSellerNameCity,  
cpbuyer.cName || ' (' || cpbuyer.cPlantCode || ')' AS cBuyerNamePlantCode  
FROM SEESCMDB0.tNetworkLink_SCD_New, SEESCMDB0.tControlPoint_SCD cpseller, SEESCMDB0.tControlPoint_SCD cpbuyer, 
SEESCMDB0.tOrganization_SCD orgseller, SEESCMDB0.tOrganization_SCD orgbuyer, SEESCMDB0.vNetworkCommunication_SCD, 
SEESCMDB0.tNetworkSupplierInfo_SCD, SEESCMDB0.TCPADDRESS_SCD addressBuyer, SEESCMDB0.TCPADDRESS_SCD addressSeller 
WHERE 
orgbuyer.cID = cpbuyer.cOrganizationID 
AND orgseller.cID = cpseller.cOrganizationID  
AND cpbuyer.cCPID = SEESCMDB0.tNetworkLink_SCD_New.cCPByuerID 
AND cpseller.cCPID = SEESCMDB0.tNetworkLink_SCD_New.cCPSellerID 
AND SEESCMDB0.tNetworkLink_SCD_New.cID=vNetworkCommunication_SCD.cIDNetLink 
AND SEESCMDB0.tNetworkLink_SCD_New.cId=SEESCMDB0.tNetworkSupplierInfo_SCD.cNetworkLinkId 
AND addressBuyer.cCPID = tNetworkLink_SCD_New.cCPByuerID 
AND addressSeller.cCPID = tNetworkLink_SCD_New.cCPSellerID 
--AND ROWNUM <= 5000  
AND (tNetworkLink_SCD_New.cCPSELLERID IN (10007544, 10017660))  
ORDER BY tNetworkLink_SCD_New.cID, cSellerNumber, vNetworkCommunication_SCD.cID
);

Der Filter, der die Begrenzung nach ROWNUM verursacht, wird in der Methode RoutingDAOImpl.getRoutingsByFilter() ausgewertet.

rm34449.txt · Last modified: by kalaschnikow