SQVI MARA_MAPL_CDHDR_CPOS

A tu dla odmiany podyskutować możesz na tematy logistyczne SAP. Jeśli pojawią się jakieś pytania, nie zwlekaj, zadaj je natychmiast.
eryk81
Posty: 64
Rejestracja: śr sty 04, 2017 2:48 pm
Has thanked: 1 time
Been thanked: 3 times

SQVI MARA_MAPL_CDHDR_CPOS

Post autor: eryk81 »

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ć ? :D


MARA-MSTAE
MAPL-MATNR
MAPL-PLNNR
MAPL-DATUV
MAPL-ANDAT
MAPL-ANNAM
CDHDR
CDPOS
inspir
Posty: 39
Rejestracja: czw paź 26, 2017 2:08 pm
Has thanked: 3 times
Been thanked: 12 times

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: inspir »

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
dominik.tylczynski
Posty: 8326
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1915 times
Been thanked: 1474 times
Kontakt:

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: dominik.tylczynski »

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.
inspir
Posty: 39
Rejestracja: czw paź 26, 2017 2:08 pm
Has thanked: 3 times
Been thanked: 12 times

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: inspir »

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ć.
kpawlak
Posty: 14
Rejestracja: pt paź 01, 2021 3:40 pm

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: kpawlak »

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?
Załączniki
ZOFW zmiany.PNG
ZOFW zmiany.PNG (12.1 KiB) Przejrzano 623 razy
dominik.tylczynski
Posty: 8326
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1915 times
Been thanked: 1474 times
Kontakt:

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: dominik.tylczynski »

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:
kpawlak
Posty: 14
Rejestracja: pt paź 01, 2021 3:40 pm

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: kpawlak »

*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
Załączniki
ZOFW zmiany.PNG
ZOFW zmiany.PNG (14.21 KiB) Przejrzano 612 razy
dominik.tylczynski
Posty: 8326
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1915 times
Been thanked: 1474 times
Kontakt:

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: dominik.tylczynski »

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:

Kod: Zaznacz cały

*DATE1
SELECT UDATE FROM CDHDR INTO LV_UDATE
WHERE OBJECTID = ekko-ebeln.
ENDSELECT.
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ń:

Kod: Zaznacz cały

*DATE1
SELECT UDATE FROM CDHDR INTO LV_UDATE
WHERE 
OBJECTCLAS = 'EINKBELEG' AND
OBJECTID = ekko-ebeln.
ENDSELECT.
EINKBELEG to obiekt dokumentów zmian dla zamówień.
kpawlak
Posty: 14
Rejestracja: pt paź 01, 2021 3:40 pm

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: kpawlak »

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
dominik.tylczynski
Posty: 8326
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1915 times
Been thanked: 1474 times
Kontakt:

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: dominik.tylczynski »

Jeśli chcesz odczytać zmiany dla konkretnego pola np. EKPO-AGMEM to musisz odczytać pozycję dokumentu zmiany z tablicy CDPOS, mniej więcej tak:

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
Potem odczytujesz datę tej zmiany już z tablicy CDHDR:

Kod: Zaznacz cały

SELECT UDATE FROM CDHDR INTO LV_UDATE
WHERE OBJECTCLAS = 'EINKBELEG'
AND OBJECTID = <nr zamówienia>
AND CHANGENR = LV_NR.
ENDSELECT.
Możesz też skorzystać z operatora MAX lub MIN jeśli chcesz odczytać ostatnią lub pierwszą zmianę.
kpawlak
Posty: 14
Rejestracja: pt paź 01, 2021 3:40 pm

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: kpawlak »

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ń?
inspir
Posty: 39
Rejestracja: czw paź 26, 2017 2:08 pm
Has thanked: 3 times
Been thanked: 12 times

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: inspir »

Jaki masz typ danych na zmiennych lv_udate i lv_angdt? Najlepiej podeślij cały kod programu

Pozdr.
Marcin
kpawlak
Posty: 14
Rejestracja: pt paź 01, 2021 3:40 pm

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: kpawlak »

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.
inspir
Posty: 39
Rejestracja: czw paź 26, 2017 2:08 pm
Has thanked: 3 times
Been thanked: 12 times

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: inspir »

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.
kpawlak
Posty: 14
Rejestracja: pt paź 01, 2021 3:40 pm

Re: SQVI MARA_MAPL_CDHDR_CPOS

Post autor: kpawlak »

Niestety, wartość lv_bedat i lv_udate 00.00.0000
Ale różnica wyszła prawidłowo w tym przypadku 0 :P
ODPOWIEDZ