SAPфорум.RU
https://sapboard.ru/forum/

VBFA JOIN LTAP
https://sapboard.ru/forum/viewtopic.php?f=13&t=97076
Страница 1 из 1

Автор:  Korvax [ Чт, ноя 22 2018, 09:40 ]
Заголовок сообщения:  VBFA JOIN LTAP

Добрый день.
Есть необходимость объединить VBFA и LTAP, проблема в том что длина полей ltap~tapos и vbfa~posnn различная. Как быть (если не рассматривать отдельное считывание двух таблиц)?

Автор:  ghost [ Чт, ноя 22 2018, 15:29 ]
Заголовок сообщения:  Re: VBFA JOIN LTAP

скорее надо связывать LTAP-POSNR

Автор:  Korvax [ Чт, ноя 22 2018, 15:34 ]
Заголовок сообщения:  Re: VBFA JOIN LTAP

ghost написал:
скорее надо связывать LTAP-POSNR

Да, сейчас так и сделал, но вопрос все равно остался, ведь эти таблицы единичный случай. Возможно ли в join сравнить два поля numc разной длины? Может как то преобразовать?

Автор:  ghost [ Чт, ноя 22 2018, 15:41 ]
Заголовок сообщения:  Re: VBFA JOIN LTAP

NUMC разной длины это разные значения по сути из-за нулей, так что если с CHAR теоретически еще можно сравнивать , то NUMC нет.

Автор:  John Doe [ Чт, ноя 22 2018, 15:43 ]
Заголовок сообщения:  Re: VBFA JOIN LTAP

Link between EKPO and LIPS как пример

Автор:  LAT [ Чт, ноя 22 2018, 16:40 ]
Заголовок сообщения:  Re: VBFA JOIN LTAP

По идее, можно так:
Code:
SELECT vbfa~ruuid, ltap~tanum
  FROM ltap INNER JOIN vbfa
              ON right( vbfa~posnn, 4 ) = ltap~tapos
  INTO TABLE @DATA(t).

Автор:  Korvax [ Пт, ноя 23 2018, 08:03 ]
Заголовок сообщения:  Re: VBFA JOIN LTAP

LAT написал(а):
По идее, можно так:
Code:
SELECT vbfa~ruuid, ltap~tanum
  FROM ltap INNER JOIN vbfa
              ON right( vbfa~posnn, 4 ) = ltap~tapos
  INTO TABLE @DATA(t).

Code:
"(" здесь не разрешено, т. к. содержит запрещенный символ или является
ключевым словом. Возможно, его следует скрыть посредством "!". Также
вероятно, что есть отсутствующий или лишний пробел.

Автор:  Korvax [ Пт, ноя 23 2018, 08:11 ]
Заголовок сообщения:  Re: VBFA JOIN LTAP

John Doe написал:
Link between EKPO and LIPS как пример
Довольно смело ради select добавлять таблицу. :shock: Но, приму к сведению, возможно в дальнейшем пригодится :D

Автор:  UKY [ Пт, ноя 23 2018, 10:23 ]
Заголовок сообщения:  Re: VBFA JOIN LTAP

Да, для старого абапа всегда делал через промежуточные таблицы, а в новом можно функции SQL использовать.

Интересно, а как-нибудь так будет работать для старых версий абапа?
Code:
SELECT *
  FROM ltap
    JOIN vbfa
      ON ltap~tanum = vbfa~vbeln
  WHERE EXISTS (
    SELECT *
      FROM ltap AS ltap_b
      WHERE ltap_b~tanum = vbfa~vbeln
          AND ltap_b~tapos >= vbfa~posnn
          AND ltap_b~tapos <= vbfa~posnn
  ).

Можно ещё попробовать LIKE использовать...
К сожалению, данных под рукой нет и не могу проверить, сам никогда так не пробовал :)

Автор:  ghost [ Пт, ноя 23 2018, 11:47 ]
Заголовок сообщения:  Re: VBFA JOIN LTAP

UKY написал(а):
Да, для старого абапа всегда делал через промежуточные таблицы, а в новом можно функции SQL использовать.

Интересно, а как-нибудь так будет работать для старых версий абапа?
Code:
SELECT *
  FROM ltap
    JOIN vbfa
      ON ltap~tanum = vbfa~vbeln
  WHERE EXISTS (
    SELECT *
      FROM ltap AS ltap_b
      WHERE ltap_b~tanum = vbfa~vbeln
          AND ltap_b~tapos >= vbfa~posnn
          AND ltap_b~tapos <= vbfa~posnn
  ).

Можно ещё попробовать LIKE использовать...
К сожалению, данных под рукой нет и не могу проверить, сам никогда так не пробовал :)


Это уже какое то извращение, IMHO

Автор:  LAT [ Пт, ноя 23 2018, 14:51 ]
Заголовок сообщения:  Re: VBFA JOIN LTAP

Korvax написал:
Code:
"(" здесь не разрешено...
В 7.51 на такое не ругается.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/