Текущее время: Вт, июл 29 2025, 13:31

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: select и cluster table
СообщениеДобавлено: Чт, ноя 15 2007, 09:37 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 23 2007, 14:56
Сообщения: 203
Цитата:
SELECT s~bukrs k~lifnr INTO CORRESPONDING FIELDS OF TABLE outing_table
FROM ( bseg as s INNER JOIN bkpf AS k
ON k~bukrs = s~bukrs
AND k~GJAHR = s~GJAHR
AND k~BELNR = s~BELNR ).


на это дело ругается

Цитата:
you cannot use comparisons with column column references in pool and cluser tables: "S~BUKRS".


Как с этим бороться?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 15 2007, 09:47 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Прочитайте справку по Join в OpenSQL.
Кластерные таблицы не джойнятся. Там же объяснено почему. Если кратко - кластерная таблица это абстракция. Физически (на уровне БД) представляющая из себя группу таблиц.

И еще меня терзают сомнения по поводу корректности синтаксиса...
Да и по поводу необходимости джойна - тоже.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: select и cluster table
СообщениеДобавлено: Чт, ноя 15 2007, 10:05 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
nymbos написал(а):
Цитата:
SELECT s~bukrs k~lifnr INTO CORRESPONDING FIELDS OF TABLE outing_table
FROM ( bseg as s INNER JOIN bkpf AS k
ON k~bukrs = s~bukrs
AND k~GJAHR = s~GJAHR
AND k~BELNR = s~BELNR ).


на это дело ругается

Цитата:
you cannot use comparisons with column column references in pool and cluser tables: "S~BUKRS".


Как с этим бороться?


Могу предложить два выхода:
1) В зависимости от тех данных, которые необходимо использовать кластерные индексы: BSIS/BSAS, BSIK/BSAK, BSID/BSAD

2) Разбить на два, примерно вот так:
Code:

     select * into table ibkpf from bkpf
        where bukrs = '1100'
          and belnr in s_belnr.


check not ibkpf[] is initial.
sort ibkpf ascending by belnr.

select * into table ibseg from bseg
          for all entries in ibkpf
                   where bukrs = ibkpf-bukrs
                     and belnr = ibkpf-belnr
                     and gjahr = ibkpf-gjahr.


P.S. Вот здесь можете узнать почему нельзя Joinить кластерные и таблицы пула.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 15 2007, 10:41 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
тема достаточно регулярно возникает.
Нижеприведенный код поможет разобраться с полями из bseg и индексных таблиц.
(Исходник должен быть узким)
Code:
report  ZSHOW.
tables CCSELTAB.
type-pools: ABAP,SLIS,ICON.

parameters: T1 like CCSELTAB-TABNAME value check obligatory
               default 'BSEG'.
parameters: T2 like CCSELTAB-TABNAME value check obligatory
               default 'BKPF'.
parameters: T3 like CCSELTAB-TABNAME  default 'BSIS'.
parameters: T4 like CCSELTAB-TABNAME  default 'BSID'.
parameters: T5 like CCSELTAB-TABNAME  default 'BSIK'.

data WA_COMPONENTS type ABAP_COMPDESCR.
data IT_COMPONENTS type ABAP_COMPDESCR_TAB.
data IT_NAMES type table of ABAP_COMPNAME.
data WA_NAMES type ABAP_COMPNAME.

data: DESCR_STRUC_REF  type ref to CL_ABAP_STRUCTDESCR,
      DESCR_STRUC_REF2 type ref to CL_ABAP_STRUCTDESCR,
      DESCR_STRUC_REF3 type ref to CL_ABAP_STRUCTDESCR,
      DESCR_STRUC_REF4 type ref to CL_ABAP_STRUCTDESCR,
      DESCR_STRUC_REF5 type ref to CL_ABAP_STRUCTDESCR.
data: begin of OUT_LINES occurs 0,
      NAME like DD03L-FIELDNAME,
      F1(5),
      F2(5),
      F3(5),
      F4(5),
      F5(5),
      end of OUT_LINES.
data  G_REPID like SY-REPID.
data: GT_FIELDCAT   type SLIS_T_FIELDCAT_ALV.
data: WA_FIELDKAT   type SLIS_FIELDCAT_ALV.

start-of-selection.
  G_REPID = SY-REPID.
  try.
      DESCR_STRUC_REF  ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( T1 ).
    catch CX_ROOT.
  endtry.
  try.
      DESCR_STRUC_REF2 ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( T2 ).
    catch CX_ROOT.
  endtry.

  if not T3 is initial.
    try.
        DESCR_STRUC_REF3 ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( T3 ).
      catch CX_ROOT.
    endtry.
  endif.

  if not T4 is initial.
    try.
        DESCR_STRUC_REF4 ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( T4 ).
      catch CX_ROOT.
    endtry.
  endif.
  if not T5 is initial.
    try.
        DESCR_STRUC_REF5 ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( T5 ).
      catch CX_ROOT.
    endtry.
  endif.
  if DESCR_STRUC_REF is bound.
    append lines of  DESCR_STRUC_REF->COMPONENTS to IT_COMPONENTS.
  endif.
  if DESCR_STRUC_REF2 is bound.
    append lines of  DESCR_STRUC_REF2->COMPONENTS to IT_COMPONENTS.
  endif.
  if DESCR_STRUC_REF3 is bound.

    append lines of  DESCR_STRUC_REF3->COMPONENTS to IT_COMPONENTS.
  endif.

  if DESCR_STRUC_REF4 is bound.
    append lines of  DESCR_STRUC_REF4->COMPONENTS to IT_COMPONENTS.
  endif.

  if DESCR_STRUC_REF5 is bound.
    append lines of  DESCR_STRUC_REF5->COMPONENTS to IT_COMPONENTS.
  endif.
  loop at IT_COMPONENTS into WA_COMPONENTS.
    WA_NAMES = WA_COMPONENTS-NAME.
    collect WA_NAMES into IT_NAMES.
  endloop.

  loop at IT_NAMES into WA_NAMES.
    clear OUT_LINES.
    OUT_LINES-NAME = WA_NAMES.
    read table DESCR_STRUC_REF->COMPONENTS into WA_COMPONENTS
                                   with key NAME = WA_NAMES.
    if SY-SUBRC is initial.
      OUT_LINES-F1 = ICON_CHECKED.
    else.
      OUT_LINES-F1 = ICON_INCOMPLETE.
    endif.

    read table DESCR_STRUC_REF2->COMPONENTS into WA_COMPONENTS
                                   with key NAME = WA_NAMES.
    if SY-SUBRC is initial.
      OUT_LINES-F2 = ICON_CHECKED.
    else.
      OUT_LINES-F2 = ICON_INCOMPLETE.
    endif.

    if DESCR_STRUC_REF3 is bound.
      read table DESCR_STRUC_REF3->COMPONENTS into WA_COMPONENTS
                                     with key NAME = WA_NAMES.
      if SY-SUBRC is initial.
        OUT_LINES-F3 = ICON_CHECKED.
      else.
        OUT_LINES-F3 = ICON_INCOMPLETE.
      endif.
    endif.

    if DESCR_STRUC_REF4 is bound.
      read table DESCR_STRUC_REF4->COMPONENTS into WA_COMPONENTS
                                     with key NAME = WA_NAMES.
      if SY-SUBRC is initial.
        OUT_LINES-F4 = ICON_CHECKED.
      else.
        OUT_LINES-F4 = ICON_INCOMPLETE.
      endif.
    endif.

    if DESCR_STRUC_REF5 is bound.
      read table DESCR_STRUC_REF5->COMPONENTS into WA_COMPONENTS
                                     with key NAME = WA_NAMES.
      if SY-SUBRC is initial.
        OUT_LINES-F5 = ICON_CHECKED.
      else.
        OUT_LINES-F5 = ICON_INCOMPLETE.
      endif.
    endif.

    append OUT_LINES.
  endloop.
  call function 'REUSE_ALV_FIELDCATALOG_MERGE'
    exporting
      I_PROGRAM_NAME     = G_REPID
      I_INTERNAL_TABNAME = 'OUT_LINES'
      I_INCLNAME         = G_REPID
      I_BYPASSING_BUFFER = 'X'
    changing
      CT_FIELDCAT        = GT_FIELDCAT
    exceptions
      others             = 0.

  WA_FIELDKAT-ICON = 'X'.
  modify GT_FIELDCAT
  from WA_FIELDKAT
  transporting ICON
  where FIELDNAME cp 'F*'.

  read table GT_FIELDCAT into WA_FIELDKAT
  with key FIELDNAME = 'F1'.
  if SY-SUBRC is initial.
    WA_FIELDKAT-SELTEXT_M = WA_FIELDKAT-SELTEXT_S.
    WA_FIELDKAT-SELTEXT_L = T1.
    modify GT_FIELDCAT from WA_FIELDKAT index SY-TABIX.
  endif.
  read table GT_FIELDCAT into WA_FIELDKAT
  with key FIELDNAME = 'F2'.
  if SY-SUBRC is initial.
    WA_FIELDKAT-SELTEXT_M = WA_FIELDKAT-SELTEXT_S.
    WA_FIELDKAT-SELTEXT_L = T2.
    modify GT_FIELDCAT from WA_FIELDKAT index SY-TABIX.
  endif.

  if not DESCR_STRUC_REF3 is bound.
    delete GT_FIELDCAT   where FIELDNAME = 'F3'.
  endif.
  if not DESCR_STRUC_REF4 is bound.
    delete GT_FIELDCAT   where FIELDNAME = 'F4'.
  endif.
  if not DESCR_STRUC_REF5 is bound.
    delete GT_FIELDCAT   where FIELDNAME = 'F5'.
  endif.
  read table GT_FIELDCAT into WA_FIELDKAT
  with key FIELDNAME = 'F3'.
  if SY-SUBRC is initial.
    WA_FIELDKAT-SELTEXT_M = WA_FIELDKAT-SELTEXT_S.
    WA_FIELDKAT-SELTEXT_L = T3.
    modify GT_FIELDCAT from WA_FIELDKAT index SY-TABIX.
  endif.
  read table GT_FIELDCAT into WA_FIELDKAT
  with key FIELDNAME = 'F4'.
  if SY-SUBRC is initial.
    WA_FIELDKAT-SELTEXT_M = WA_FIELDKAT-SELTEXT_S.
    WA_FIELDKAT-SELTEXT_L = T4.
    modify GT_FIELDCAT from WA_FIELDKAT index SY-TABIX.
  endif.
  read table GT_FIELDCAT into WA_FIELDKAT
  with key FIELDNAME = 'F5'.
  if SY-SUBRC is initial.
    WA_FIELDKAT-SELTEXT_M = WA_FIELDKAT-SELTEXT_S.
    WA_FIELDKAT-SELTEXT_L = T5.
    modify GT_FIELDCAT from WA_FIELDKAT index SY-TABIX.
  endif.

  call function 'REUSE_ALV_GRID_DISPLAY'
    exporting
      I_CALLBACK_PROGRAM = G_REPID
      IT_FIELDCAT        = GT_FIELDCAT
    tables
      T_OUTTAB           = OUT_LINES.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 05 2007, 14:18 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вт, дек 04 2007, 12:22
Сообщения: 32
В каких случаях стоит и не стоит использовать таблицу BSEG и кто нибудь знает еще кластерные таблицы кроме BSEG BSET? Заранее спасибо!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 05 2007, 14:36 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Артур написал(а):
еще кластерные таблицы кроме BSEG BSET?

Все записи из DD02L по условию TABCLASS = "CLUSTER".


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 06 2007, 15:10 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вт, дек 04 2007, 12:22
Сообщения: 32
Спасибо тебе Alex80 выручил. У меня еще вопрос для чего были введены таблицы кластера в SAP???Помогите кто чем может.

_________________
В начале был бит, потом байт, и только потом появилось слово...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 06 2007, 15:16 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Историческое наследие.
В СУБД до 90х годов существовало ограничение на кол-во колонок в таблице или размер строки.
Сейчас, впрочем, тоже есть. Но уже за гранями практически необходимого кол-ва.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 06 2007, 16:45 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Артур написал(а):
Помогите кто чем может.
Кто-нибудь помнит, в чем различия между таблицами пула и кластера?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 28 2007, 14:22 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вт, дек 04 2007, 12:22
Сообщения: 32
Помогите пожалуйста разобраться с расчетом оплаченных и не оплаченных сумм по счет фактуре. (суммы находятся в BSEG).

_________________
В начале был бит, потом байт, и только потом появилось слово...


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB