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

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


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

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


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

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