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

Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=91069
Страница 1 из 1

Автор:  skaa [ Вт, авг 04 2015, 12:35 ]
Заголовок сообщения:  Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения

Добрый день. Подскажите, может, кто знает.

Имеется таблица ZTABLE c полями KUNNR (номер дебитора1) и KUNNR2 (номер дебитора2). Нужно, чтобы в ракурсе ведения при заполнении таблицы ZTABLE отображались имена дебиторов из KNA1. Удается только создать одно соединение с таблицей KNA1. При добавлении второго соединения этой же таблицы c KNA1 выдается сообщение что это 'Отношение с неподходящей кардинальностью'.

Можно ли в ракурсе ведения таблицы указать два соединения (JOIN) с одной и той же таблицей?

Автор:  trop [ Вт, авг 04 2015, 14:21 ]
Заголовок сообщения:  Re: Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения

создайте ещё один ракурс к KNA1

Автор:  skaa [ Вт, авг 04 2015, 14:43 ]
Заголовок сообщения:  Re: Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения

trop написал(а):
создайте ещё один ракурс

Не совсем понял, как это должно помочь решить проблему?
Уточните пожалуйста.

Автор:  tav [ Вт, авг 04 2015, 14:59 ]
Заголовок сообщения:  Re: Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения

Как вариант, можно слегка подправить сгенерированный код, а именно в инклуде LZ*F00. В Вашем случае там будет несколько подпрограмм с селектами из KNA1.

Автор:  Paul_80 [ Вт, авг 04 2015, 15:11 ]
Заголовок сообщения:  Re: Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения

Много раз эта тема пережевывалась, в т.ч. и на страницах данного форума, при желании темы можно найти.

Вкратце: вместо подвязывания второй раз одной и той же таблицы создаете поля, подлежащие заполнению из второй таблице, а затем для событий AA
AD в генераторе ведения заполняете все требуемые поля (в данном случае, данные из KNA1 по KUNNR2)

Автор:  Paul_80 [ Вт, авг 04 2015, 15:12 ]
Заголовок сообщения:  Re: Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения

tav написал:
Как вариант, можно слегка подправить сгенерированный код, а именно в инклуде LZ*F00. В Вашем случае там будет несколько подпрограмм с селектами из KNA1.


Не надо таких вариантов - любая перегенерация ракурса приведет к потере доработок.

Автор:  skaa [ Вт, авг 04 2015, 16:27 ]
Заголовок сообщения:  Re: Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения

tav написал:
Как вариант, можно слегка подправить сгенерированный код, а именно в инклуде LZ*F00. В Вашем случае там будет несколько подпрограмм с селектами из KNA1.

tav Изменения в этом инклюде запрещены SAP.

Автор:  tav [ Вт, авг 04 2015, 16:43 ]
Заголовок сообщения:  Re: Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения

skaa написал(а):
tav написал:
Как вариант, можно слегка подправить сгенерированный код, а именно в инклуде LZ*F00. В Вашем случае там будет несколько подпрограмм с селектами из KNA1.

tav Изменения в этом инклюде запрещены SAP.


Значит не тот инклуд изменяете, его имя должно быть: L<имя ракурса>F00

Но тут я соглашусь с Paul_80 - это плохая затея, правильней сделать через события.

Автор:  skaa [ Ср, авг 05 2015, 11:06 ]
Заголовок сообщения:  Re: Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения

Спасибо всем за помощь! Сделал через события AA AD.

Автор:  LKU [ Чт, янв 19 2017, 18:34 ]
Заголовок сообщения:  Re: Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения

Добрый день.
Просьба поделиться кодом событий для заполнения второго поля.
Пока что-то не получается сообразить, что написать.
Спасибо.

Автор:  LKU [ Пт, янв 20 2017, 10:04 ]
Заголовок сообщения:  Re: Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения

Итого,
1. Событие AA вызывается до чтения данныхиз БД, в нем не понятно, как можно подменить значение одного из столбцов ракурса
2. Событие AD вообще вызывается после ввода данных, т.е. если просто открыть ракурс на просмотр, оно не вздрогнет

Решил вопрос методом грубой силы - неявный энхансмент в конце подпрограмки, которая читает данные:
Code:
  FIELD-SYMBOLS: <bukrs> type bukrs,
                 <BUTXT> type t001-butxt.
  loop at total ASSIGNING FIELD-SYMBOL(<total>).
    ASSIGN COMPONENT 'BUKRS_R' of structure  <total> to <bukrs>.
    ASSIGN COMPONENT 'BUKRS_R_NAME' of structure  <total> to <BUTXT>.

    select  SINGLE BUTXT
      from t001 into <BUTXT>
      where bukrs = <bukrs>.
  endloop.


Если кто может подсказать лучшее решение - очень интересно.

Автор:  Alexey Zhandarov [ Ср, апр 18 2018, 11:58 ]
Заголовок сообщения:  Re: Два соединения (JOIN) с одной и той же таблицей в ракурсе ведения

Добрый день! Столкнулся с таким же вопросом. В таблице два поля "Материал", нужно два текста.

В SE54 реализовал два события:

1) При добавлении записи в ракурсе. Событие - 05.
zv_tab - название ракурса.
Code:
  if zv_tab-matnr_2 is initial.
    clear zv_tab-matnr_tx_2.
  else.
    select single  maktx into zv_tab-matnr_tx_2
      from makt
      where matnr = zv_tab-matnr_2
      and spras = sy-langu.
  endif.


2) При открытии ракурса. Событие - АА
Code:
types: begin of ts_total.
          include structure zv_tab.
  types:  action,
          mark,
  end of ts_total.

  field-symbols: <fs_ltot>  type any,
                  <fs_total> type ts_total..

  perform get_data_zv_tab.

  loop at total assigning <fs_ltot> .
    assign <fs_ltot> to <fs_total> casting.

    check <fs_total> is assigned.
    if <fs_total>-matnr_2 is not initial.
      select single maktx into <fs_total>-matnr_tx_2
        from makt
        where matnr = <fs_total>-matnr_2
        and spras eq sy-langu.
    else.
      clear <fs_total>-matnr_tx_2.
    endif.
  endloop.


form get_data_zv_tab. ---- Стандартная подпрограмма начитки данных для ракурса. Т.е. начитываю стандартом, потом меняю только одно поле.

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