Karol Jakubiak

Karol Jakubiak Kierownik działu IT,
SPA

Temat: Połączenie pomiędzy tabelami OINV i OCSI

Pozdrawiam !!!

Mam pytanie z pogranicza SAP-a i Crystal-a. Próbuję w CR połączyć dwie tabele OINV (faktury) i OCSI (korekty faktur). Niestety nie mogę w żaden sposób wymusić prawidłowego pobierania danych.
W tabeli OCSI znalazem pole "JrnlMemo" w ktrym zapisany jest numer faktury ktorej dotyczy korekta jednak jest to pole textowe i nie moge polaczyc go z polem "DocNum" w OINV.
W tabeli OCSI wystepuje rowniez pole CorrExt. Jednak rowniez jest polem textowym.
Jesli ktorys z kolegow mial stycznosc z tymi tabelami bardzo prosze o pomoc.
Z gory serdecznie dziekuje.
Krzysztof Wojtal

Krzysztof Wojtal Specjalista ds
systemu ERP, PL/SQL,
Crystal rep., Power
B...

Temat: Połączenie pomiędzy tabelami OINV i OCSI

Cześć,

Czy robisz zapytanie SQL czy bezpośrednio w Crystalu łączysz 2 tabele?
Ja korzystam wyłącznie z zapytań SQL. Jeżeli chodzi o połączenie tych 2 informacji z tabel bezpośrednio w Crystalu, to spróbuj zrobić to w -> menu górne -> Raport -> Formuły wyboru -> Rekord. Tu musisz podać co chcesz ze sobą dodatkowo połączyć (to take Crystalowe miejsce na sekcję WHERE z zapytania SQL) - wskaż pola z tabel z tym że, jedno z pól zmień na TEXT lub na NUMBER:
ToNumber({JrnlMemo}) = {DocNum}
lub
{JrnlMemo} = cStr(DocNum,0) - wartość zero określa nam ilość miejsc po przedinku np. dla liczby 123,45 zwróci nam 123.

Pozdrawiam
Krzysiek
Karol Jakubiak

Karol Jakubiak Kierownik działu IT,
SPA

Temat: Połączenie pomiędzy tabelami OINV i OCSI

Hej. Dzięki wielkie za pomoc. Niestety wychodzą ułomności pól textowych. Okazuje się że uzytkownicy wpisują mi tam różne "bzdury", również ciągi liter.
Przy próbie zamiany tego na liczbę pojawia się błąd.
Zastanawiam się czy te dwie tabele OINV i OCSI nie są połaczone poprzez jakąś tabelę pośredniczącą.
Jeśli któryś z kolegów wie coś na ten temat zachęcam do dyskusji. :-)
Jeśli uda mi się coś ustalić dam znać.
Krzysztof Wojtal

Krzysztof Wojtal Specjalista ds
systemu ERP, PL/SQL,
Crystal rep., Power
B...

Temat: Połączenie pomiędzy tabelami OINV i OCSI

Generalne w systemach dokumenty tego typu zawsze są ze sobą powiązane. Można to zrobić w dwojaki sposób:
1 - na fakturze jest dopisywany w polu np. Nr_korekty numer korekty vat,
2 - lub tak jak myślisz, jest oddzielna tabela z informacją o numerze korekty oraz numerem faktury (faktura może dotyczyć kilku faktur i możesz mieć kilka wierszy z danymi z numerami dokumentów korygowanych do danej korekty).

Ja osobiście poszukałbym informacji w SQLDeveloperze - otwórz interesująca Ciebie tabelę i w zakładce Depencencies będziesz miał informację, jakie istnieją powiązania z innymi tabelami.

Powodzenia w poszukiwaniach :-).
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Połączenie pomiędzy tabelami OINV i OCSI

Łączenie tabel po opisowych polach tekstowych to zła praktyka zwłaszcza jeśli nie ma na nich założonych indeksów. Taki raport przy dużej ilości rekordów będzie wykonywał się całe wieki i mocno obciążał bazę danych.

Jeśli są zdefiniowane powiązania pomiędzy tabelami w bazie danych to Crystal Reports powinien sam je wykryć i pobrać.

Jeśli nie ma, to poszukaj identyfikatorów tych tabel, czyli tzw. klucz podstawowy (Primary Key) i klucz obcy (Foreign Key). Zazwyczaj jest to pole numeryczne i ma w nazwie ID.

I jeszcze jedna wskazówka - w tak rozbudowanych systemach jak SAP często nie pracuje się bezpośrednio na tabelach, lecz na widokach, które już mają powiązanych wiele tabel. Możliwe, że jest już widok, który ma powiązane wskazane przez Ciebie tabele.

Niestety nie znam SAP'a aby ci pomóc, ale może zapytaj na grupie SAPowej.

Powodzenia!
Przemysław Janczewski

Przemysław Janczewski Administrator
systemu IT

Temat: Połączenie pomiędzy tabelami OINV i OCSI

Dawno mnie tu nie było :)
przepraszam za zaniedbanie.
Prawidłowe łączenie miedzy tymi tabelami musi przejść przez tabele z pozycjami:

OINV T0
INNER JOIN INV1 T1 ON T0.[DocEntry] = T1.[DocEntry],
CSI1 T2
INNER JOIN OCSI T3 ON T2.[DocEntry] = T3.[DocEntry]

:)

Temat: Połączenie pomiędzy tabelami OINV i OCSI

Cześć,

Nie wiem czy nadal aktualne, ale może pomóc

OINV T0 INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"
inner join CSI1 T2 on T0."DocEntry"=T2."BaseEntry" and T1."BaseLine"=T2."LineNum" and T2."ObjType"=165
inner join OCSI T3 on T3."DocEntry"=T2."DocEntry"



Wyślij zaproszenie do