Текущее время: Ср, июл 30 2025, 02:24

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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