Текущее время: Чт, мар 28 2024, 20:06

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Чт, апр 20 2017, 08:21 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 778
Откуда: South Kazakhstan
Пол: Мужской
Добрый день уважаемые ММ-щики.

Вопрос такой: отчёт, выдаваемый транзакцией S_P99_41000062, отображается только в валюте, которую выбирает пользователь на селекционном экране, т.е. либо 10-Валюта БЕ, либо 31-Валюта концерна, оценка концерна. Т.е. можно выбрать только одну валюту. Возникла необходимость отображения этого отчёта в обеих валютах, но на селекционном экране можно выбрать только одно из этих условий. Существует ли настройка изменения этой стандартной транзакции? Можно, конечно, z-овский отчёт написать. Но мне стало интересно, можно ли изменить эту стандартную транзакцию?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Пн, апр 24 2017, 07:28 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 778
Откуда: South Kazakhstan
Пол: Мужской
В общем, я не стал заморачиваться с энхансментами. Мне попалась под руки другая программа, где сделали вызов одной программы из другой. Я по аналогии попытался сделать такой вызов из z-селекционного экрана стандартной транзакции. Получилось что-то типа:

Code:
submit rkkbmlmat with r_matnr in r_matnr with p_werks = p_werks with p_poper = p_poper
with p_bdatj = p_bdatj with p_curtp = '10 Валюта БЕ'
  exporting list to memory and return.


call function 'LIST_FROM_MEMORY'
  tables
    listobject = listtab
  exceptions
    not_found  = 1
    others     = 2.
if sy-subrc ne 0.
  message id sy-msgid type sy-msgty number sy-msgno
  with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

call function 'LIST_TO_ASCI'
  tables
    listasci           = ascilistkzt
    listobject         = listtab
  exceptions
    empty_list         = 1
    list_index_invalid = 2
    others             = 3.

После обработки таблички ASCILISTKZT я опять вызываю SUBMIT, но уже с второй валютой, валютой концерна. Возникла одна мелочь, которая мне не совсем понятна. Вроде бы, банальный селект из физической таблички MARA, но почему-то селект проходит безрезультатно.
Code:
*loop at itab.

  select single mtart from mara into (itab-mtart) where matnr = itab-matnr.
  modify itab.
endloop.

Я не могу забрать из таблицы поле "Вид материала", оно, вроде бы, имеется в физической табличке, но почему-то выборка не проходит. В отладчике смотрел поле внутренней таблички, в которой я собираю отчёт, там itab-matnr заполняется, соответственно, условие where должно срабатывать, но оно этого не делает. Вот мне и непонятно: то ли в таблице MARA с этим полем что-то не так и его просто так не забрать оттуда, либо я с абапом что-то не так делаю. Может, кто подскажет?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Пн, апр 24 2017, 10:00 
Администратор
Администратор
Аватара пользователя

Зарегистрирован:
Пн, авг 16 2004, 21:27
Сообщения: 4366
Откуда: Москва
Пол: Мужской
Переместил в форум по программированию, поскольку тут больше задача девелопера, нежели консультанта.

_________________
С уважением,
Admin
e-mail: admin @ sapforum.ru


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Пн, апр 24 2017, 14:29 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 778
Откуда: South Kazakhstan
Пол: Мужской
С выборкой вида материала получилось, я совсем забыл, что номер материала в таблице mara лежит с кучей нулей впереди. Теперь возник ещё вопрос такой. В стандартной программе транзакции отчёт выходит в виде одного настроенного формата, который был установлен по умолчанию и отображается на селекционном экране. Теперь я пытаюсь сделать такой же формат у себя в транзакции, поставить его по умолчанию и передать в стандартную программу транзакции S_P99_41000062 через submit, но выходит как то не удобно, т.е. запускаю программу, заполняю поля на селекционном экране, но отчёт не запускается до тех пока я не выберу формат, при чём отчёт сразу запускается при выборе формата, т.е. без нажатия кнопочки часы и пока я не зайду в окно выбора формата и не выберу его отчёт не запускается. Толи я что то намудрил, толи лыжи не едут, чота не пойму как надо сделать правильно, чтобы отчёт просто запускался бы в формате, который используется и в стандартной программе транзакции S_P99_41000062. бы В общем часть кода, где срабатывает формат такая
Code:
selection-screen skip 2.
select-options: r_matnr for  ckmlhd-matnr.

parameters:
            p_werks like mlkey-werks_ml_productive
                    obligatory
                    memory id wrk.

selection-screen skip 1.
** Periode
selection-screen begin of block parameter with frame title text-101.
parameters: p_poper like cki_doc_ml-sl_periode
                    memory id mlp,
            p_bdatj like ckmlrunplant-gjahr memory id mlj.
selection-screen end of block parameter.

parameters: p_alvdef like disvariant-variant.

" DATA: VARIANT like disvariant-variant.
  select single variant from ltdxd into p_alvdef where report = sy-cprog.
at selection-screen on value-request for p_alvdef.
  gs_alv_variant-report = sy-repid.
  call function 'REUSE_ALV_VARIANT_F4'
    exporting
      is_variant = gs_alv_variant
      i_save     = 'A'
    importing
      es_variant = gs_alv_variant
    exceptions
      not_found  = 2.
  if sy-subrc = 2.
    message id sy-msgid type 'S' number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  else.
    p_alvdef = gs_alv_variant-variant.
  endif.
*
refresh listtab.
refresh listtabusd.
refresh ascilistkzt.
refresh ascilistusd.
submit rkkbmlmat with r_matnr in r_matnr with p_werks = p_werks with p_poper = p_poper
with p_bdatj = p_bdatj with p_curtp = '10 Валюта БЕ' with p_alvdef = p_alvdef
  exporting list to memory and return.



call function 'LIST_FROM_MEMORY'
  tables
    listobject = listtab
  exceptions
    not_found  = 1
    others     = 2.
if sy-subrc ne 0.
  message id sy-msgid type sy-msgty number sy-msgno
  with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

call function 'LIST_TO_ASCI'
  tables
    listasci           = ascilistkzt
    listobject         = listtab
  exceptions
    empty_list         = 1
    list_index_invalid = 2
    others             = 3.
if sy-subrc <> 0.
  message id sy-msgid type sy-msgty number sy-msgno
  with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

endif.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Пн, апр 24 2017, 15:48 
Специалист
Специалист

Зарегистрирован:
Чт, дек 02 2010, 08:37
Сообщения: 156
А точно в отчете RKKBMLMAT параметр с вариантом называется p_alvdef? У меня - p_varian.

И писать "10 валюта БЕ", необязательно, достаточно просто "10".


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Пн, апр 24 2017, 16:08 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 778
Откуда: South Kazakhstan
Пол: Мужской
baboon написал(а):
А точно, в отчете rkkbmlmat, параметр с вариантом называется
p_alvdef? У меня - p_varian. И писать "10 валюта БЕ", необязательно,
достаточно просто "10".

Заменил везде на p_varian. Результат тот же. При выборе формата сразу срабатывает программа rkkbmlmat и запускается отчёт. А без формата транзакция не запускается.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Пн, апр 24 2017, 16:34 
Специалист
Специалист

Зарегистрирован:
Чт, дек 02 2010, 08:37
Сообщения: 156
См. как заполняется значение p_varian в программе rkkbmlmat
в событии initialization (их там 2, см второе).
Вместо sy-repid надо указать 'RKKBMLMAT'.
Таким образом будет получено имя варианта по-умолчанию
для стандартной программы.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Вт, апр 25 2017, 07:14 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 778
Откуда: South Kazakhstan
Пол: Мужской
baboon написал(а):
См. как заполняется значение p_varian в программе rkkbmlmat
в событии initialization (их там 2, см второе).
Вместо sy-repid надо указать 'RKKBMLMAT'.
Таким образом будет получено имя варианта по-умолчанию
для стандартной программы.

Я указал вместо sy-repid в строке gs_alv_variant-report = 'RKKBMLMAT'. При запуске транзакции стали подтягиваться форматы, созданные в стандартной транзакции, но запускается отчёт также, только когда выберешь формат в диалоговом окне выбора формата. Может быть ещё где нибудь что нибудь подкрутить надо?!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Вт, апр 25 2017, 09:16 
Специалист
Специалист

Зарегистрирован:
Чт, дек 02 2010, 08:37
Сообщения: 156
Старею.

Блоки at selection screen работают как процедуры, т.е. всё, что ниже, до следующего блока будет одной процедурой.
Поэтому submit выполняется только при выборе варианта.

Надо перед refresh listtab поставить start-of-selection


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Чт, май 04 2017, 14:06 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 778
Откуда: South Kazakhstan
Пол: Мужской
Возник ещё один вопрос такой, как на селекционном экране parameters можно было бы автоматом проставить текущий период, т.е. месяц. С финансовым годом там вроде бы понятно, ставишь default sy-datum и он ставит по умолчанию на экран текущий год, а вот как быть с месяцем?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Чт, май 04 2017, 16:36 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 778
Откуда: South Kazakhstan
Пол: Мужской
В общем сделал я следующее, объявил переменную datum (8) type d, затем переменной datum присвоил значение sy-datum. В общем как то так
Code:
datum = sy-datum.
data: datum2(8) TYPE n,
      datum3(2) TYPE n.
CLEAR datum2.
move datum to datum2.
SHIFT datum2 RIGHT  by 2 PLACES.
SHIFT datum2 LEFT by 6 PLACES.
*condense datum2 no-gaps.
SHIFT datum2 RIGHT DELETING TRAILING space.

move datum2 to datum3.

В итоге у меня datum3 равен текущему периоду, т.е. значение 05, но как мне передать его в parameters. Если бы это был select-options, то можно было бы через Inicialization, а там присвоить Period-low = ' ' и period-high = ' ' значение поля datum3. А как быть с parameters в данном случае? Я пытаюсь передавать,
Code:
parameters: p_poper like cki_doc_ml-sl_periode
                     obligatory DEFAULT datum3,

но ничего не передаётся. Как быть в данном случае?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Чт, май 04 2017, 17:00 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 778
Откуда: South Kazakhstan
Пол: Мужской
Хм...вроде бы разобрался. Надо было просто в блоке INITIALIZATION всё это дело сделать и передать в parameters, типа
Code:
data: datum2(8) TYPE n,
      datum3(2) TYPE n.

selection-screen skip 2.
select-options: r_matnr for  ckmlhd-matnr obligatory,

                s_werks for  ekpo-werks
                    obligatory
                    memory id wrk.
*include rckm_par_bukrs_werks_ml_prod.
parameters:
            p_werks like mlkey-werks_ml_productive no-display.

selection-screen skip 1.
** Periode
selection-screen begin of block parameter with frame title text-101.
parameters: p_poper like cki_doc_ml-sl_periode
                     obligatory ,
*parameters: p_poper like cki_doc_ml-sl_periode
*                    memory id mlp obligatory DEFAULT datum2,
            p_bdatj like ckmlrunplant-gjahr memory id mlj obligatory default sy-datum.
selection-screen end of block parameter.

INITIALIZATION.
datum = sy-datum.

CLEAR datum2.
move datum to datum2.
SHIFT datum2 RIGHT  by 2 PLACES.
SHIFT datum2 LEFT by 6 PLACES.
*condense datum2 no-gaps.
SHIFT datum2 RIGHT DELETING TRAILING space.

move datum2 to datum3.
p_poper = datum3.

Я правда не знаю насколько я правильно тут написал, но период стал подтягиваться на селекционный экран.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)
СообщениеДобавлено: Пт, май 05 2017, 09:00 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 08:25
Сообщения: 475
лично я пришел к выводу, что предзаполнение лучше делать не в INITIALIZATION, а в событии at selection screen output.
Тогда при вызове из внешней программы будет заполняться то, что мы указали принудительно.
(естественно, нужно сделать проверку на пустоту/непустоту в событии)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзакции S_P99_41000062- Ведомость материалов (валюта отчета)  Тема решена
СообщениеДобавлено: Пт, май 05 2017, 10:52 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
Maksimka написал:
Я правда не знаю насколько я правильно тут написал, но период стал подтягиваться на селекционный экран.


Вместо тысячи слов (т.е. вместо всего кода в инициализэйшн)
Code:
p_poper = sy-datum+4(2)


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

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


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

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


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

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