SELECT z dodatkową logiką

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
wojtas7
Posty: 1113
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 72 times
Been thanked: 336 times

Re: SELECT z dodatkową logiką

Post autor: wojtas7 »

K602 pisze: pn kwie 14, 2025 1:35 pm Ten temat wydaje się prosty. W mojej ocenie, tu coś nie do końca jest dobrze z tymi JOINami... ich wewnętrznymi warunkami...
ale pisałem wyżej że osobno selecty działają tak jak bym oczekiwał.. serio ;]
dominik.tylczynski
Posty: 8677
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 2074 times
Been thanked: 1550 times

Re: SELECT z dodatkową logiką

Post autor: dominik.tylczynski »

A ta propozycja Jacka z with +exclude as działa?
wojtas7
Posty: 1113
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 72 times
Been thanked: 336 times

Re: SELECT z dodatkową logiką

Post autor: wojtas7 »

Działa, sorrki, napisałem że "ooo mega, super." :-) Niewiarygodne że zadziałało zgodnie z oczekiwaniami.

Natomiast dodałem pytanie pomocnicze bo muszę wykluczać po pozycjach zamówień (inna pozycja może mieć przetworzony SPED z inną dostawą) i tu nie mam za bardzo pomysłu jak wykluczyć kombinację po kluczu EBELN+EBELP (w sensie jak zrobić osobno pola NOT IN EBELN NOT IN EBELP ?)
yacol
Posty: 575
Rejestracja: śr kwie 04, 2007 4:32 pm
Lokalizacja: Poznań
Has thanked: 10 times
Been thanked: 183 times

Re: SELECT z dodatkową logiką

Post autor: yacol »

wojtas7 pisze: pn kwie 14, 2025 2:50 pm Działa, sorrki, napisałem że "ooo mega, super." :-) Niewiarygodne że zadziałało zgodnie z oczekiwaniami.

Natomiast dodałem pytanie pomocnicze bo muszę wykluczać po pozycjach zamówień (inna pozycja może mieć przetworzony SPED z inną dostawą) i tu nie mam za bardzo pomysłu jak wykluczyć kombinację po kluczu EBELN+EBELP (w sensie jak zrobić osobno pola NOT IN EBELN NOT IN EBELP ?)
Tu trzeba trochę namieszać ;) - zakładając, że EBELN + EBELP jednoznacznie identyfikuje dokument zaopatrzeniowy to coś w tym rodzaju powinno zadziałać. Musisz sprawdzić we własnym zakresie czy moje przewidywanie jest OK:

Kod: Zaznacz cały

with +exclude as (
  select distinct concat( ebeln, ebelp ) as pur_doc
    from ekbe join nast
      on ekbe~belnr = nast~objky
    where ebeln in @s_ebeln and
          kappl = 'V2' and
          kschl = 'SPED' and    
          vstat = '1'
) select ebeln, belnr, vstat
    from ekbe join nast
      on ekbe~belnr = nast~objky
    where ebeln in @s_ebeln and
          concat( ebeln, ebelp ) not in ( select pur_doc from +exclude ) and
          kappl = 'V2' and
          kschl = 'SPED' and          
          vstat = '2'
  into table @data(stats).
Pozdrawiam,

Jacek Witczak
http://novertio.pl
wojtas7
Posty: 1113
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 72 times
Been thanked: 336 times

Re: SELECT z dodatkową logiką

Post autor: wojtas7 »

Działa świetnie, dzięki. Ciekawe czemu nie chciało działać normalnie z NOT IN ....
dominik.tylczynski
Posty: 8677
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 2074 times
Been thanked: 1550 times

Re: SELECT z dodatkową logiką

Post autor: dominik.tylczynski »

wojtas7 pisze: wt kwie 15, 2025 4:56 pm Działa świetnie, dzięki. Ciekawe czemu nie chciało działać normalnie z NOT IN ....
Też się nad tym zastanawiam...
wojtas7
Posty: 1113
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 72 times
Been thanked: 336 times

Re: SELECT z dodatkową logiką

Post autor: wojtas7 »

dla HU podawanych na ekranie selekcji, też działa w ten sposób ;)

Kod: Zaznacz cały

  WITH +exclude AS (
    SELECT DISTINCT exidv
      FROM vekp JOIN vepo
                      ON vekp~venum = vepo~venum
                JOIN nast
                      ON nast~objky = vepo~vbeln
      WHERE exidv IN @s_exidv AND
            nast~kappl = 'V2' AND
            nast~kschl = 'SPED' AND
            nast~vstat = '1'           " correct outputs
  ) SELECT exidv, objky
      FROM vekp JOIN vepo
                      ON vekp~venum = vepo~venum
                JOIN nast
                      ON nast~objky = vepo~vbeln
      WHERE exidv IN @s_exidv AND
            exidv NOT IN ( SELECT exidv FROM +exclude ) AND
            nast~kappl = 'V2' AND
            nast~kschl = 'SPED' AND
            nast~vstat = '2'            " error outputs
    INTO TABLE @DATA(lt_hu_data).
yacol
Posty: 575
Rejestracja: śr kwie 04, 2007 4:32 pm
Lokalizacja: Poznań
Has thanked: 10 times
Been thanked: 183 times

Re: SELECT z dodatkową logiką

Post autor: yacol »

me bałdzo happy że mogło pomóc :D
Pozdrawiam,

Jacek Witczak
http://novertio.pl
dominik.tylczynski
Posty: 8677
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 2074 times
Been thanked: 1550 times

Re: SELECT z dodatkową logiką

Post autor: dominik.tylczynski »

@yacol Dlaczego Twoje zapytanie z WITH ... AS działa a pierwotne z podzapytaniem wstawionym w NOT IN nie działa?
yacol
Posty: 575
Rejestracja: śr kwie 04, 2007 4:32 pm
Lokalizacja: Poznań
Has thanked: 10 times
Been thanked: 183 times

Re: SELECT z dodatkową logiką

Post autor: yacol »

Szczerze mówiąc to nie widzę w pierwotnym zapytaniu nic co może powodować, że nie działa. Bez dostępu do systemu wojtasa7 trudno o diagnozę...
Pozdrawiam,

Jacek Witczak
http://novertio.pl
K602
Posty: 163
Rejestracja: śr sie 24, 2022 11:50 am
Has thanked: 74 times
Been thanked: 95 times

Re: SELECT z dodatkową logiką

Post autor: K602 »

yacol pisze: śr kwie 16, 2025 9:13 am Szczerze mówiąc to nie widzę w pierwotnym zapytaniu nic co może powodować, że nie działa. Bez dostępu do systemu wojtasa7 trudno o diagnozę...
Otóż to. I to jest zastanawiające. Inna sprawa, że Twoje rozwiązanie nie zadziała wszędzie. Mam SAP_BASIS 750 0019 i niestety info, że e tej wersji +exclude nie zadziała :(
SAP ABAP Certified Developer
yacol
Posty: 575
Rejestracja: śr kwie 04, 2007 4:32 pm
Lokalizacja: Poznań
Has thanked: 10 times
Been thanked: 183 times

Re: SELECT z dodatkową logiką

Post autor: yacol »

To prawda, WITH ...+ wykorzystuje CTE (common table expression), które jest dostępne na HANIE od 7.52. Za to jest potężnym narzędziem jeśli chodzi o wydajność więc warto z tego korzystać.
Pozdrawiam,

Jacek Witczak
http://novertio.pl
K602
Posty: 163
Rejestracja: śr sie 24, 2022 11:50 am
Has thanked: 74 times
Been thanked: 95 times

Re: SELECT z dodatkową logiką

Post autor: K602 »

Początkowo myślałem, że to CDS na HANA :)
SAP ABAP Certified Developer