Автор Тема: AUFBAUEN_MDPSX_ANZEIGEN - По мотивам MD04 (Прогон ППМ)  (Прочитано 4985 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
AUFBAUEN_MDPSX_ANZEIGEN - Собственно эта функция вызывается когда запускают транзакцию MD04 или MD01 и т.д. она проводит весь расчет и на выходе возращает таблицу которую уже и показывает пользователю транзакция MD04 и остальные. В общем тут надо было перехватить вывод от MD04 по принципу как хотелось сделать вот в этой теме: You are not allowed to view links. Register or Login, но тут все оказалось проще, есть ФМ, который можно вызвать передав ему немного параметров и получить на выходе нужные нам данные. Пример вызова обернул в программку, так как разбираться со всеми параметрами не было времени:
Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
*& Report  YUUK_SELECT_MD04
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT  yuuk_select_md04.
TYPE-POOLS: mrp, m61x.

DATA: ls_cmt61d LIKE mt61d,
      ls_cm61x LIKE cm61x,
      ls_cm61w LIKE cm61w,
      ls_t399d LIKE t399d,
      ls_cm61b TYPE m61x_cm61b,
      ls_sfilt LIKE sfilt,

      lt_mdpsx LIKE mdps OCCURS 1 WITH HEADER LINE.

CALL FUNCTION 'MD_READ_MATERIAL_SIMPLE'
  EXPORTING
    ewerks                      = '1000'   "Завод
    ematnr                      = 'M1'     "Материал
    eberid                      = '1000'   "Область планирования
    ekzrfb                      = 'X'      "Сбросить буфер, читать данные
  CHANGING
    cmt61d                      = ls_cmt61d
  EXCEPTIONS
    material_mrp_area_not_found = 1
    missing_parameter           = 2
    material_plant_not_found    = 3
    material_mrp_area_deleted   = 4.

ls_cm61x-plobj = 'B'.      "Объект управления транзакцией ППМ
ls_cm61x-plauf = 'B4'.     "Вид выполнения ППМ
ls_cm61x-plakt = 'A'.      "Типы операций в ППМ (А - Все операции)
ls_cm61x-dispd = sy-datum.

ls_cm61w-fabkl = '01'.     "Код производственного календаря из завода
ls_cm61w-umthz = '100'.    "Горизонт перепланирования сроков
ls_cm61w-gterm = 'X'.      "Планирование сроков на основе инфо-записи или договора
ls_cm61w-dispd = sy-datum.

* Управляющие параметры для ППМ
SELECT SINGLE * INTO ls_t399d
FROM t399d WHERE werks = '1000'.

ls_cm61b-disfg = 'X'.    "Активация областей планир. потребности на уровне манданта
ls_cm61b-berid = '1000'. "Область планирования
ls_cm61b-berty = '01'.   "Вид области планирования потребности
ls_cm61b-werzg = '1000'. "Завод

* Данные по прогону ППМ
CALL FUNCTION 'AUFBAUEN_MDPSX_ANZEIGEN'
  EXPORTING
    emt61d        = ls_cmt61d
    ecm61x        = ls_cm61x
    ecm61w        = ls_cm61w
    et399d        = ls_t399d
    ecm61b        = ls_cm61b
    esfilt        = ls_sfilt
  TABLES
    mdpsx         = lt_mdpsx
  EXCEPTIONS
    error_message = 01.

BREAK-POINT.
lt_mdpsx - необходимые нам данные. Вообще-то, все что нам надо узнать по параметрам можно получить поставив точку останова в вызове этого ФМ и уже по аналогии смотреть информацию дальше.