Текущее время: Вт, июн 24 2025, 20:18

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Выбор данных SELECT'ом из PSA (2LIS_03_BF)
СообщениеДобавлено: Ср, окт 06 2010, 09:15 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Чт, май 19 2005, 12:34
Сообщения: 1941
Откуда: НК
Пол: Мужской
Всем привет!

Возникла необходимость при загрузке из 2LIS_03_BF в правиле обновления обращаться к PSA.
Нужно выбрать значение поля "Склад" из документов материалов.
Объясню зачем: стандартными правилами обновления из бизнес-контента 340-й ВДв не учитывается - перевод партии из одного вида оценки в другой вид оценки. Поэтому при необходимости построить отчет в разрезе ВОц и склада данные неправильные.
Но поля "Склад" нет в документах 340 ВДв.
Я хочу взять количество по 340-му, а склад поставить из документов материалов, которые были до момента перевода из ВОц в ВОц - благо у нас одна партия - это один склад.
В PSA внести изменения не получится, конечно.

Проблема в том, что в разных системах таблица, содержащая записи PSA, называется по-разному.

Можно ли как-то обратиться к таблице не по имени /BIC/B0000811000 (например), а по имени источника данных/инфоисточника?

И как там вообще будет работать Select? В MATNR хранится номер с нулями, в 0MATERIAL он без нулей отображается.

Может, сделать ODS? Только записей многовато, а мне нужны будут все.

Или я что-то делаю совсем не так?

_________________
Eritis sicut Deus, scientes bonum et malum...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выбор данных SELECT'ом из PSA (2LIS_03_BF)
СообщениеДобавлено: Ср, окт 06 2010, 10:49 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, дек 23 2008, 17:09
Сообщения: 315
Не берусь оценить подход в целом, но таблицу, содержащую записи PSA, можно динамически определять из табл. RSTSODS: поле ODSNAME_TECH, когда в ODSNAME 2LIS_03_BF*.
Имхо, было бы понятнее и надежнее, если бы недостающее поле заполнялось на стороне R/3, например, в соответствующем экзите экстрактора.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выбор данных SELECT'ом из PSA (2LIS_03_BF)
СообщениеДобавлено: Ср, окт 06 2010, 13:22 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Чт, май 19 2005, 12:34
Сообщения: 1941
Откуда: НК
Пол: Мужской
пока нет возможности перегрузить PSA, а так конечно бы :)
еще, как вариант, апдейтнуть в самом PSA данные можно
с помощью спец.средства :)

_________________
Eritis sicut Deus, scientes bonum et malum...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выбор данных SELECT'ом из PSA (2LIS_03_BF)
СообщениеДобавлено: Ср, окт 06 2010, 13:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, июл 03 2007, 10:26
Сообщения: 486
Откуда: Kazakhstan, Astana
Пол: Мужской
SAA написал:
пока нет возможности перегрузить PSA, а так конечно бы :)
еще, как вариант, апдейтнуть в самом PSA данные можно
с помощью спец.средства :)

Нехорошо все это конечно :D Но раз нет возможности:
Есть How To: @PSA EASY Maintenance Method: Search and Modify PSA Data Easily@

Code:
DATA :
  dref TYPE REF TO data,
  it_grid_fcat TYPE lvc_t_fcat,
  struct_grid_lset TYPE lvc_s_layo,
  tab_info LIKE TABLE OF dfies.

FIELD-SYMBOLS :
  <fs_tab> LIKE LINE OF tab_info,
**** Output Structure****
  <it_disptab> TYPE table.

PARAMETER:
  p_itab TYPE tabname,
  p_fname TYPE fieldname,
  p_extval(30),
  p_repval(30).

*Assign the input value to <fs_tab>-tabname
ASSIGN p_itab TO <fs_tab>-tabname .
*<fs_tab>-tabname
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
  EXPORTING
    i_structure_name = p_itab
  CHANGING
    ct_fieldcat      = it_grid_fcat.

*Static method - no need to create object (use => )
CALL METHOD cl_alv_table_create=>create_dynamic_table
  EXPORTING
    it_fieldcatalog = it_grid_fcat
  IMPORTING
    ep_table        = dref.

ASSIGN  dref->* TO <it_disptab>.

* Fetch Data
DATA:
con_syn(50),
set_syn(50).

CONCATENATE p_fname '=' 'P_EXTVAL' INTO con_syn SEPARATED BY space.
CONCATENATE p_fname '=' 'P_REPVAL' INTO set_syn SEPARATED BY space.

UPDATE (p_itab) SET (set_syn) WHERE (con_syn).

IF sy-subrc <> 0.
  WRITE: 'Mission Impossible.. Operation Failed'.
ELSE.
  WRITE: 'Operation Sucess'.

• P_ITAB contain the table name to be modified. This can contain the table identified in Step 4.
• P_FNAME contain the field name to be modified
• P_EXTVAL old value to be replaced
• P_REPVAL new value.

_________________
"Great minds discuss ideas. Average minds discuss events. Small minds discuss people-Eleanor Roosevelt--Knowledge is to share, Keep it free, Keep sharing"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выбор данных SELECT'ом из PSA (2LIS_03_BF)
СообщениеДобавлено: Ср, окт 06 2010, 14:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
SAA написал:
Проблема в том, что в разных системах таблица, содержащая записи PSA, называется по-разному.
Можно ли как-то обратиться к таблице не по имени /BIC/B0000811000 (например), а по имени источника данных/инфоисточника?

Code:
TYPE-POOLS : abap.
FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
               <dyn_wa>,
               <dyn_field>.
DATA: dy_table TYPE REF TO data,
      dy_line TYPE REF TO data,
      xfc TYPE lvc_s_fcat,
      ifc TYPE lvc_t_fcat.
DATA: psa_tab_name(30) TYPE c,
            ts(30) TYPE c DEFAULT '2LIS_03_BF_BD'.
***********************************************
  PERFORM get_psa_name.
  PERFORM get_structure.
  PERFORM create_dynamic_itab.
  PERFORM get_data.
************************************************
FORM get_psa_name.
** Find PSA Name by the name of the transfer structure
  SELECT SINGLE odsname_tech FROM rstsods INTO psa_tab_name
    WHERE odsname = ts AND dateto > syst-datum.
  IF sy-subrc NE 0.
    RETURN.
  ENDIF.
  ENDFORM.                    "get_PSA_name
***************************************
FORM get_structure.
  DATA : idetails TYPE abap_compdescr_tab,
        xdetails TYPE abap_compdescr.
  DATA : ref_table_des TYPE REF TO cl_abap_structdescr.
* Get the structure of the table.
  ref_table_des ?= cl_abap_typedescr=>describe_by_name( psa_tab_name ).
  idetails[] = ref_table_des->components[].
LOOP AT idetails into xdetails.
  CLEAR ifc.
*idetails loop at idetails into xdetails.
  CLEAR xfc. xfc-fieldname = xdetails-name .
  xfc-datatype = xdetails-type_kind.
  xfc-intlen = xdetails-length.
  xfc-decimals = xdetails-decimals.
  xfc-ref_table = psa_tab_name.
  xfc-ref_field = xdetails-name.
  APPEND xfc TO ifc.
ENDLOOP.
ENDFORM.                    "get_structure
******************************
FORM create_dynamic_itab.
* Create dynamic internal table and assign to FS
  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog = ifc
    IMPORTING
      ep_table        = dy_table.
  ASSIGN dy_table->* TO <dyn_table>.
* Create dynamic work area and assign to FS create data dy_line like line of .
  ASSIGN dy_line->* TO <dyn_wa>.
ENDFORM.                    "create_dynamic_itab
********************************
FORM get_data.
DATA matnr(18)  type c.
SHIFT matnr LEFT DELETING LEADING '0'.
* select data from table.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE from (psa_tab_name) WHERE matnr = matnr.
ENDFORM.                    "get_data
********************************

SAA написал:
И как там вообще будет работать Select? В MATNR хранится номер с нулями, в 0MATERIAL он без нулей отображается.

Code:
SHIFT matnr LEFT DELETING LEADING '0'.

SAA написал:
Может, сделать ODS? Только записей многовато, а мне нужны будут все.

Разницы нет, что вы обращаетесь к PSA или к ODS.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выбор данных SELECT'ом из PSA (2LIS_03_BF)
СообщениеДобавлено: Ср, окт 13 2010, 10:06 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Чт, май 19 2005, 12:34
Сообщения: 1941
Откуда: НК
Пол: Мужской
По результатам работы.
Разницы между MATNR и 0MATERIAL нет никакой. Select делается без всяческих телодвижений.

Однако есть разница в скорости между работой с ODS и с PSA, причем огромная. Я не нашел способа прикрутить индекс к PSA-таблице - у меня три манданта (настройка-тест-перенос), и во всех них разные таблицы, т.к. активировали в разное время.

Поэтому построил ODS на основе только тех полей, которые мне нужны. Разница по времени - раз, наверное, в 20 (полчаса и 10 часов).

Но сразу скажу, то, что я хотел сделать, мне не подошло. :)

Всем спасибо за ответы, некоторые моменты интересны и, вероятно, будут использованы впоследствии.

_________________
Eritis sicut Deus, scientes bonum et malum...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выбор данных SELECT'ом из PSA (2LIS_03_BF)  Тема решена
СообщениеДобавлено: Чт, окт 21 2010, 13:26 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Чт, май 19 2005, 12:34
Сообщения: 1941
Откуда: НК
Пол: Мужской
раз уж завел эту тему, здесь и напишу. Хотя название не соответствует... :)

Короче говоря, решил задачу одновременного отображения в кубе 0IC_C03 информации в разрезе вида оценки-склада при наличии документов 340 ВДв - это когда сменяется вид оценки у партии, запас при этом может лежать на нескольких складах сразу.

Решение половинное, конечно, но для инвентаризации к дате пойдет.
Сделал свой ODS, из исходной системы через источник данных на основе sapquery выбираются виды оценки к сочетанию материал-завод-партия на определенную дату.
Можно, в принципе, построить и так, чтобы для всех материалов на любую дату был вид оценки, но у меня такая задача не стояла.
потом в кубе уже подставляется вид оценки с учетом этого ODS - если есть в нем, то выбирается, если нет - то присваивается исходное поле из 2LIS_03_BF.

Вроде просто, а сколько я всего перепробовал до этого :)

Всем спасибо :)

_________________
Eritis sicut Deus, scientes bonum et malum...


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

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


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

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


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

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