SQVI MARA_MAPL_CDHDR_CPOS
SQVI MARA_MAPL_CDHDR_CPOS
Hej
Próbuję połączyć ze sobą table MARA_MAPL_CDHDR_CPO, ale niestety występują nielegalne warunki Join .Chciałbym w raporcie mieć dane kto zakładał kod ,status materiału dla kilku zakładów( 00 zablokowany ,01 odblokowany ) kiedy były ściągana blokada , czy są marszruty .
Czy mamy może jakąś tabelę pomiędzy która by połączyła jedno z drugim? Bądź jak to połączyć ?
MARA-MSTAE
MAPL-MATNR
MAPL-PLNNR
MAPL-DATUV
MAPL-ANDAT
MAPL-ANNAM
CDHDR
CDPOS
Próbuję połączyć ze sobą table MARA_MAPL_CDHDR_CPO, ale niestety występują nielegalne warunki Join .Chciałbym w raporcie mieć dane kto zakładał kod ,status materiału dla kilku zakładów( 00 zablokowany ,01 odblokowany ) kiedy były ściągana blokada , czy są marszruty .
Czy mamy może jakąś tabelę pomiędzy która by połączyła jedno z drugim? Bądź jak to połączyć ?
MARA-MSTAE
MAPL-MATNR
MAPL-PLNNR
MAPL-DATUV
MAPL-ANDAT
MAPL-ANNAM
CDHDR
CDPOS
Re: SQVI MARA_MAPL_CDHDR_CPOS
Hej, robiłem coś podobnego za pomocą query i po prostu pododawałem customowe pola do raporu i porobiłem selecty z tabeli CDHDR i CDPOS. Na przykład:
SELECT VALUE_NEW FROM CDPOS into LV_NEWVAL
WHERE OBJECTID = A552-KNUMH
AND FNAME = 'KBETR'.
ENDSELECT.
W Twoim przypadku objectid to prawdopodobnie bedzie mapl-matnr. Oczywiście musisz sam dobrać pola z cdpos i cdhdr które Cie interesują
niestety bezpośrednio nie idzie połączyć tabeli CDHDR i CDPOS z MAPL,MARA.
Pozdr.
Marcin
SELECT VALUE_NEW FROM CDPOS into LV_NEWVAL
WHERE OBJECTID = A552-KNUMH
AND FNAME = 'KBETR'.
ENDSELECT.
W Twoim przypadku objectid to prawdopodobnie bedzie mapl-matnr. Oczywiście musisz sam dobrać pola z cdpos i cdhdr które Cie interesują
niestety bezpośrednio nie idzie połączyć tabeli CDHDR i CDPOS z MAPL,MARA.
Pozdr.
Marcin
-
- Posty: 8356
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1924 times
- Been thanked: 1478 times
- Kontakt:
Re: SQVI MARA_MAPL_CDHDR_CPOS
Zwróćcie uwagę na wydajność zapytań z tablic CDHDR i CDPOS. Zwykle są olbrzymie, bo te tablice przechowują wszystkie dokumenty zmian z całego systemu.
Re: SQVI MARA_MAPL_CDHDR_CPOS
Racja, raport, który stworzyłem mieli bardzo długo, o tyle dobrze, że użytkownicy używają go raz, dwa na miesiąc i to im nie przeszkadza.
Z drugiej strony nie widzę innego sposobu, żeby to połączyć.
Z drugiej strony nie widzę innego sposobu, żeby to połączyć.
Re: SQVI MARA_MAPL_CDHDR_CPOS
Podepnę się pod temat.
Zrobiłem zapytanie w SQ02 SQ01. Wynikiem zapytania jest raport z wprowadzonymi zmianami w RFQ.
Chciałbym porównać, a właściwie obliczyć różnice pomiędzy dwoma datami z tego raportu. Różnica powinna być podana w dniach.
Próbowałem korzystać z FM DAYS_BETWEEN_TWO_DATES , niestety bez sukcesów.
Macie jakieś pomysły co robię źle?
Zrobiłem zapytanie w SQ02 SQ01. Wynikiem zapytania jest raport z wprowadzonymi zmianami w RFQ.
Chciałbym porównać, a właściwie obliczyć różnice pomiędzy dwoma datami z tego raportu. Różnica powinna być podana w dniach.
Próbowałem korzystać z FM DAYS_BETWEEN_TWO_DATES , niestety bez sukcesów.
Macie jakieś pomysły co robię źle?
- Załączniki
-
- ZOFW zmiany.PNG (12.1 KiB) Przejrzano 661 razy
-
- Posty: 8356
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1924 times
- Been thanked: 1478 times
- Kontakt:
Re: SQVI MARA_MAPL_CDHDR_CPOS
Dlaczego po prostu nie odejmiesz jednej daty od drugiej?
Nie napisałeś z czym konkretnie masz problem i jak implementujesz dodatkowe pole na różnicę dat. Zatem trudno coś konkretnego powiedzieć.
Zobacz w tych blogach jak się tworzy własne pola w SAP Query:
Nie napisałeś z czym konkretnie masz problem i jak implementujesz dodatkowe pole na różnicę dat. Zatem trudno coś konkretnego powiedzieć.
Zobacz w tych blogach jak się tworzy własne pola w SAP Query:
Re: SQVI MARA_MAPL_CDHDR_CPOS
*DATE1
SELECT UDATE FROM CDHDR INTO LV_UDATE
WHERE OBJECTID = ekko-ebeln.
ENDSELECT.
*DATE2
SELECT angdt FROM ekko INTO LV_angdt
WHERE ebeln = ekpo-ebeln.
ENDSELECT.
Chciałbym uzyskać wynik LV_TEMR = LV_UDATE - LV_ANGDT
Wybacz za mało konkretów z mojej strony, ale jestem początkująca płotką w środowisku SAP i ABAP.
W załączniku wynik zwyczajnego odejmowania . Pole terminowośc
SELECT UDATE FROM CDHDR INTO LV_UDATE
WHERE OBJECTID = ekko-ebeln.
ENDSELECT.
*DATE2
SELECT angdt FROM ekko INTO LV_angdt
WHERE ebeln = ekpo-ebeln.
ENDSELECT.
Chciałbym uzyskać wynik LV_TEMR = LV_UDATE - LV_ANGDT
Wybacz za mało konkretów z mojej strony, ale jestem początkująca płotką w środowisku SAP i ABAP.
W załączniku wynik zwyczajnego odejmowania . Pole terminowośc
- Załączniki
-
- ZOFW zmiany.PNG (14.21 KiB) Przejrzano 650 razy
-
- Posty: 8356
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1924 times
- Been thanked: 1478 times
- Kontakt:
Re: SQVI MARA_MAPL_CDHDR_CPOS
Przyznam, że zupełnie nie rozumiem co chcesz zrobić, do czego ma służyć ten raport. Jeśli go opiszesz bardziej szczegółowo, to może będę mógł więcej pomóc.
Na pewno zapytanie:
jest problematyczne.
Robisz tutaj selekcję z tabeli CDHDR, która zwiera wszystkie nagłówki dokumentów zmian, nie tylko dla zamówień, ale dla różnych innych dokumentów w SAP np. zleceń sprzedaży. Wybierasz jakoś datę zmiany w sposób przypadkowy - nie jest to ani pierwsza zmiana, ani ostatnia. Po prostu jakaś przypadkowa.
Jeśli chcesz odczytywać zmiany zamówień to musisz dodać do kryteriów zapytania rodzaj obiektu dokumentów zmian, czyli dla zamówień:
EINKBELEG to obiekt dokumentów zmian dla zamówień.
Na pewno zapytanie:
Kod: Zaznacz cały
*DATE1
SELECT UDATE FROM CDHDR INTO LV_UDATE
WHERE OBJECTID = ekko-ebeln.
ENDSELECT.
Robisz tutaj selekcję z tabeli CDHDR, która zwiera wszystkie nagłówki dokumentów zmian, nie tylko dla zamówień, ale dla różnych innych dokumentów w SAP np. zleceń sprzedaży. Wybierasz jakoś datę zmiany w sposób przypadkowy - nie jest to ani pierwsza zmiana, ani ostatnia. Po prostu jakaś przypadkowa.
Jeśli chcesz odczytywać zmiany zamówień to musisz dodać do kryteriów zapytania rodzaj obiektu dokumentów zmian, czyli dla zamówień:
Kod: Zaznacz cały
*DATE1
SELECT UDATE FROM CDHDR INTO LV_UDATE
WHERE
OBJECTCLAS = 'EINKBELEG' AND
OBJECTID = ekko-ebeln.
ENDSELECT.
Re: SQVI MARA_MAPL_CDHDR_CPOS
Raport ma służyć do analizy terminowości dla RFQ tj. porównanie daty EKKO-ANGDT i moment zamknięcia RFQ co jest równoważne ze zmiana cechy RFQ .
Z tego powodu wyciągam datę zmiany pola EKPO-AGMEM z tabeli CDHDR.
Oczywiście w zapytaniu mam ograniczenia co do rodzaju dokumentu i zmiany pola EKPO-AGMEM
Z tego powodu wyciągam datę zmiany pola EKPO-AGMEM z tabeli CDHDR.
Oczywiście w zapytaniu mam ograniczenia co do rodzaju dokumentu i zmiany pola EKPO-AGMEM
-
- Posty: 8356
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1924 times
- Been thanked: 1478 times
- Kontakt:
Re: SQVI MARA_MAPL_CDHDR_CPOS
Jeśli chcesz odczytać zmiany dla konkretnego pola np. EKPO-AGMEM to musisz odczytać pozycję dokumentu zmiany z tablicy CDPOS, mniej więcej tak:
Potem odczytujesz datę tej zmiany już z tablicy CDHDR:
Możesz też skorzystać z operatora MAX lub MIN jeśli chcesz odczytać ostatnią lub pierwszą zmianę.
Kod: Zaznacz cały
SELECT CHANGENR INTO LV_NR FROM CDPOS
WHERE OBJECTCLAS = 'EINKBELEG'
AND OBJECTID = <nr zamówienia>
AND TABNAME = 'EKPO'
AND FNAME = 'AGMEM'.
ENDSELECT
Kod: Zaznacz cały
SELECT UDATE FROM CDHDR INTO LV_UDATE
WHERE OBJECTCLAS = 'EINKBELEG'
AND OBJECTID = <nr zamówienia>
AND CHANGENR = LV_NR.
ENDSELECT.
Re: SQVI MARA_MAPL_CDHDR_CPOS
Ok. Dane do raportu wyciągam bez problemu.
Nie wiem tylko dlaczego terminowość (działanie na dwóch datach, polach które są w raporcie) źle się wylicza.
Przykład podałem wyżej. Czy powinien m w jakiś sposób przekonwertować typ danych w celu dokonania obliczeń?
Nie wiem tylko dlaczego terminowość (działanie na dwóch datach, polach które są w raporcie) źle się wylicza.
Przykład podałem wyżej. Czy powinien m w jakiś sposób przekonwertować typ danych w celu dokonania obliczeń?
Re: SQVI MARA_MAPL_CDHDR_CPOS
DATA lv_udate LIKE cdhdr-udate. *dats
DATA lv_bedat LIKE ekko_bedat. *dats
DATA lv_roznica TYPE I.
SELECT udate INTO lv_udate FROM cdhdr
WHERE objectid = ekko-ebeln.
ENDSELECT.
lv_roznica = lv_udate - lv_bedat.
DATA lv_bedat LIKE ekko_bedat. *dats
DATA lv_roznica TYPE I.
SELECT udate INTO lv_udate FROM cdhdr
WHERE objectid = ekko-ebeln.
ENDSELECT.
lv_roznica = lv_udate - lv_bedat.
Re: SQVI MARA_MAPL_CDHDR_CPOS
spróbuj zdefiniować zmienne lv_udate i lv_bedat jako sy-datum, czyli:
DATA: lv_udate TYPE sy-datum,
lv_bedat TYPE sy-datum,
lv_roznica TYPE I.
wtedy odejmowanie powinno działać tak jak tego oczekujesz.
DATA: lv_udate TYPE sy-datum,
lv_bedat TYPE sy-datum,
lv_roznica TYPE I.
wtedy odejmowanie powinno działać tak jak tego oczekujesz.
Re: SQVI MARA_MAPL_CDHDR_CPOS
Niestety, wartość lv_bedat i lv_udate 00.00.0000
Ale różnica wyszła prawidłowo w tym przypadku 0
Ale różnica wyszła prawidłowo w tym przypadku 0