+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средства » SE38 - ABAP Редактор » Технологии написания программ на ABAP (Модератор: Dmitriy)Тема:
|- Переход к просмотру различных документов MM/FI/CO/FM и т.д.




Автор Тема: Переход к просмотру различных документов MM/FI/CO/FM и т.д.  (Прочитано 17587 раз)

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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 644
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
В общем в различных отчетах приходится иногда давать пользователю возможность перейти к просмотру документа стандартной транзакцией, например для документа материала это будет или MB03 или MIGO в режиме просмотра. Тут предлагается выложить варианты перехода к просмотру, так как не всегда это бывает очевидно, особенно в энжой-транзакциях.

Документ материала, транзакция MIGO. Переход к просмотру документа:
Код: You are not allowed to view links. Register or Login
  CALL FUNCTION 'MIGO_DIALOG'
    EXPORTING
      i_mblnr             = mblnr  "Номер документа
      i_mjahr             = mjahr  "Год документа
    EXCEPTIONS
      illegal_combination = 1
      OTHERS              = 2.

Просмотр документа FI
Код: You are not allowed to view links. Register or Login
    SET PARAMETER ID 'BLN' FIELD belnr.   "Номер документа
    SET PARAMETER ID 'BUK' FIELD bukrs.  "Код БЕ
    SET PARAMETER ID 'GJR' FIELD gjahr.    "Год документа
    CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

Просмотр документа отпуска на основные средства, если есть документ движения материала
Код: You are not allowed to view links. Register or Login
DATA: ls_anla LIKE anla,
      l_aworg LIKE anek-aworg.

ls_anla-anln1 = '*'.
l_aworg = mjahr.   "Год документа движения материала
CALL FUNCTION 'AM_SHOW_DOCUMENT'
  EXPORTING
    i_anla    = ls_anla
    i_gjahr   = '0000'
    i_awtyp   = 'MKPF'
    i_awsys   = ps_matnr-awsys
    i_aworg   = l_aworg
    i_belnr   = mblnr    "Номер документа движения материала
  EXCEPTIONS
    not_found = 01.

Документ управления бюджета FM
Код: You are not allowed to view links. Register or Login
  DATA: ls_control_data TYPE fmfi_control_data.

    CALL FUNCTION 'FMCA_GET_INIT_INFO'
      EXPORTING
        i_bukrs          = bukrs_fb  "Код БЕ для которой будет выполнен просмотр
      CHANGING
        c_f_control_data = ls_control_data.

    SET PARAMETER ID 'FIK' FIELD ls_control_data-fikrs.
    SET PARAMETER ID 'FMB' FIELD belnr_fb.   "Номер документа FM
    CALL TRANSACTION 'FM03' AND SKIP FIRST SCREEN.

Просмотр документа СО
Код: You are not allowed to view links. Register or Login
    SET PARAMETER ID 'BLN' FIELD belnr_co.   "Номер документа СО
    SET PARAMETER ID 'CAC' FIELD bukrs_co.  "БЕ документа СО
    SET PARAMETER ID 'TPB' FIELD '0'.
    CALL TRANSACTION 'KSB5' AND SKIP FIRST SCREEN.

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Reputation Power: 0
  • NachDenken has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
*Для входящей поставки
SET PARAMETER ID 'VLM' FIELD vbeln.
CALL TRANSACTION 'VL33N' AND SKIP FIRST SCREEN.

*Для исходящей
SET PARAMETER ID 'VL' FIELD vbeln.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
* Для заказа
SET PARAMETER ID 'BES' FIELD ebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

Общий принцип заходим в тр смотрим, какие параметры просит для просмотра документа (f1 на поле и название "ID SET/GET Parametr") и пишем их

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 644
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Общий принцип заходим в тр смотрим, какие параметры просит для просмотра документа (f1 на поле и название "ID SET/GET Parametr") и пишем их
Ну общий принцип к сожалению не всегда срабатывает сейчас, так что опыт приветствуется.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
*&      Form  ALV_HOTSPOT_CLICK
*&---------------------------------------------------------------------*
FORM alv_hotspot_click USING p_row_id TYPE lvc_s_row
                             p_col_id TYPE lvc_s_col.
  DATA: ls TYPE t_main.
  READ TABLE gt_main INTO ls INDEX p_row_id-index.
  CHECK sy-subrc = 0.
  CASE p_col_id-fieldname.
    WHEN 'VBELN_VA'. " заказ
      CHECK ls-vbeln_va IS NOT INITIAL.
      CASE ls-vgtyp.
        WHEN 'V'. " PO
          SET PARAMETER ID 'BES' FIELD ls-vbeln_va.
          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
        WHEN OTHERS. " SO
          SET PARAMETER ID 'AUN' FIELD ls-vbeln_va.
          CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
      ENDCASE.
    WHEN 'VBELN_VL'. " поставка
      CHECK ls-vbeln_vl IS NOT INITIAL.
      CASE ls-abfer.
        WHEN '2'. " входящая
          SET PARAMETER ID 'VLM' FIELD ls-vbeln_vl. " or 'VLG'
          CALL TRANSACTION 'VL33N' AND SKIP FIRST SCREEN.
        WHEN OTHERS. " исходящая
          SET PARAMETER ID 'VL' FIELD ls-vbeln_vl.
          CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
      ENDCASE.
    WHEN 'TKNUM'. " транспортировка
      CHECK ls-tknum IS NOT INITIAL.
      SET PARAMETER ID 'TNR' FIELD ls-tknum.
      CALL TRANSACTION 'VT03N' AND SKIP FIRST SCREEN.
    WHEN 'VBELN_VF'. " фактура
      CHECK ls-vbeln_vf IS NOT INITIAL.
      CASE ls-abfer.
        WHEN '2'. " входящая
          CHECK ls-gjahr IS NOT INITIAL.
          SET PARAMETER ID 'RBN' FIELD ls-vbeln_vf.
          SET PARAMETER ID 'GJR' FIELD ls-gjahr.
          CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
        WHEN OTHERS. " исходящая
          SET PARAMETER ID 'VF' FIELD ls-vbeln_vf.
          CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
      ENDCASE.
    WHEN 'BELNR'. " FI-документ (фактура)
      CHECK ls-bukrs IS NOT INITIAL
        AND ls-belnr IS NOT INITIAL
        AND ls-gjahr IS NOT INITIAL.
      SET PARAMETER ID 'BUK' FIELD ls-bukrs.
      SET PARAMETER ID 'BLN' FIELD ls-belnr.
      SET PARAMETER ID 'GJR' FIELD ls-gjahr.
      CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
    WHEN 'SUBMI'. " групповой №
      CHECK ls-submi IS NOT INITIAL.
      SET PARAMETER ID 'BES' FIELD ls-submi.
      CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
  ENDCASE.
ENDFORM.                    " ALV_HOTSPOT_CLICK

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 644
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Код: You are not allowed to view links. Register or Login
     SET PARAMETER ID 'BES' FIELD ls-submi.
      CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
Для заказа ММ внутри SAP делает чуть более кошерный вызов заказа ММ, типа так:
Код: You are not allowed to view links. Register or Login
       SET PARAMETER ID 'BES' FIELD hidk-ebeln.
        CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
          EXPORTING
            i_ebeln = hidk-ebeln
            i_ebelp = hidp-ebelp
            i_enjoy = 'X'
          EXCEPTIONS
            OTHERS  = 1.
*      Если таки ошибка.. то вывести ее так...
        IF sy-subrc NE 0.
          MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
Данный вызов, сразу позволяет открыть для просмотра не только заказ, но и требуемую позицию заказа в нижней закладке подробно.
« Последнее редактирование: Май 23, 2011, 03:32:41 pm от Uukrul »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 644
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
EBELP ;)
Ну тогда дожму... для просмотра заявок на закупку, использовать следующий код:
Код: You are not allowed to view links. Register or Login
          CALL FUNCTION 'MMPUR_REQUISITION_DISPLAY'
            EXPORTING
              im_banfn        = eban-banfn
              im_bnfpo        = eban-bnfpo
              im_display_only = 'X'
            EXCEPTIONS
              no_authority    = 1
              OTHERS          = 2.
          IF sy-subrc <> 0.
            MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
                    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
          ENDIF.
Заметь табличку заявок не я так назвал ::)

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Да, норм., лучше ещё в минимакрос обернуть вот это:
Код: You are not allowed to view links. Register or Login
          MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Т.е. создать ряд постоянных процедур в своём INCLUDE. И юзать постоянно их... ;)

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 644
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Просмотр документа резервирования материала. Просмотреть сам документ резервирования довольно просто.
Код: You are not allowed to view links. Register or Login
SET PARAMETER ID 'RES' FIELD x-rsnum.
CALL TRANSACTION 'MB23' AND SKIP FIRST SCREEN.

Более сложная задача оказалась, когда потребовалось при просмотре перейти с детальному экрану позиции резервирования. При просмотре экрана оказалось оказалось что поле ввода позиции присутствует и есть параметр для задания номера просматриваемой позиции - RPO.
Код: You are not allowed to view links. Register or Login
SET PARAMETER ID 'RES' FIELD x-rsnum..
SET PARAMETER ID 'RPO' FIELD x-rspos.
CALL TRANSACTION 'MB23' AND SKIP FIRST SCREEN.

В довесок походив по коду, обнаружил интересную вещь, оказалось можно задать просмотр например группы позиций, причем последовательность может включать в себя как позиции одного резервирования так и позиции разных резервирований. При этом на экране  просмотра  появляются стрелки  навигации по позициям. Для этого необходимо заполнить специальную структуру документов и позиций и передать ее через специальный параметр.
Код: You are not allowed to view links. Register or Login
  DATA: BEGIN OF seltab1 OCCURS 0,
          rsnum LIKE rkpf-rsnum,
          rspos LIKE resb-rspos,
          rsart LIKE resb-rsart,
          xexpl,
        END OF seltab1.

*         Позиции документов для просмотра подробно
          CLEAR: seltab1[].
          seltab1-rsnum = <документ>.
          seltab1-rspos = <позиция документа>.
          APPEND seltab1.

          seltab1-rsnum = <документ>.
          seltab1-rspos = <позиция документа>.
          APPEND seltab1.

*         Передать список позиций в память.
          EXPORT seltab1 TO MEMORY ID 'MB23_SELTAB'.

*         Задать первую позицию, которая будет показана при вызове
          SET PARAMETER ID 'RES' FIELD x-rsnum.
          SET PARAMETER ID 'RPO' FIELD x-rspos.
          CALL TRANSACTION 'MB23' AND SKIP FIRST SCREEN.
При таком вызове на экране, в строке статуса, будут выведены кнопки навигации, рисунок MB23LIST.png
« Последнее редактирование: Декабрь 14, 2014, 03:05:53 am от Uukrul »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 644
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Просмотр технологических заказов. Казалось бы все очень просто, есть поле, есть параметр, пример на картинке COR3.png и все работает. А оказалось не все так просто. Не знаю с какого бодуна, но разработчикам было глубоко пофигу что там за код параметра указан в поле. Мы типа и сами знаем что и как надо, поэтому в PBO-коде экрана 5110, неведомые пацаны абаперы добавили такой вот код
Код: You are not allowed to view links. Register or Login
* Lesen GET_PARAMETER von Einsatzplanung (Читайте GET_PARAMETER календарного планирования)
  module get_parameter.
Поэтому внутри такое:
Код: You are not allowed to view links. Register or Login
  if caufvd-aufnr is initial.
    get parameter id 'BR1' field *caufvd-aufnr.
    if not *caufvd-aufnr is initial.
      caufvd-aufnr = *caufvd-aufnr.
    endif.
  endif.
Так что правильный вызов просмотра технологического заказа будет такой:
Код: You are not allowed to view links. Register or Login
SET PARAMETER ID 'BR1' FIELD l_aufnr.
CALL TRANSACTION 'COR3' AND SKIP FIRST SCREEN.
Не ну нам, приближенным к абаперам, то в принципе не сложно посмотреть что читать надо "GET_PARAMETER календарного планирования", но другим то что делать? Шалуны однако эти абаперы.

Оффлайн vorrutyer

  • Newbie
  • *
  • Сообщений: 5
  • Reputation Power: 0
  • vorrutyer has no influence.
  • Пол: Мужской
  • Бойцовый кот нигде не пропадёт!!!
  • YearsYearsYearsYearsYearsYearsYears
Вобщем - понадобилось мне однажды сделать из Z-отчета проваливание в CO документ (тот что в табл. COBK/COEP).
Посмотрел как реализовано проваливание в него стандартом, и заодно нарыл интересный ФМ.
Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'DRB_OBJECT_DISPLAY'
  EXPORTING
    i_boridein = z_borident
  TABLES
    t_messages = t_messages.
i_boridein  - запись, содержит 2 поля - ключ i_boridein-objkey и тип объекта i_boridein-objtype.
Для CO документа было так
i_boridein-objkey = KOKRS + BELNR
i_boridein-objtype = 'BUS2072'.
Но вот что интересно - если поставить другой тип объекта и его ключ - все равно будет работать.
Проверил на заказе на поставку BUS2012, материале BUS1001 - работает.
На других не пробовал, но предполагаю что сработает :)
Единственное но - несмотря на то что  t_messages не обязательна, при неуказании этого параметра почему то происходит выбивание текущего режима :( 


Оффлайн vorrutyer

  • Newbie
  • *
  • Сообщений: 5
  • Reputation Power: 0
  • vorrutyer has no influence.
  • Пол: Мужской
  • Бойцовый кот нигде не пропадёт!!!
  • YearsYearsYearsYearsYearsYearsYears
Business Object смотреть в SWO4.
В ключ вставлять значения во внутреннем формате полей ключа.

Оффлайн vorrutyer

  • Newbie
  • *
  • Сообщений: 5
  • Reputation Power: 0
  • vorrutyer has no influence.
  • Пол: Мужской
  • Бойцовый кот нигде не пропадёт!!!
  • YearsYearsYearsYearsYearsYearsYears
Хорошая штука DRB_OBJECT_DISPLAY оказалась.
Отображает все логистические документы, которые мне нужно было вывести.
Ну и не только логистические.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 644
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Просмотр ракурса закупки для основной записи материала 'MMPUR_MATERIAL_DISPLAY
Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'MMPUR_MATERIAL_DISPLAY'
        EXPORTING
          im_matnr = cs_appref-mm_matnr
          im_werks = cs_appref-mm_werks
          im_lgort = cs_appref-mm_lgort.
По параметрам все вроде как просто, передали код ОЗМ, завод и склад, последние два параметра не обязательны и система перейдет к просмотру карточки ОЗМ, ракурс закупки, по факту будет вызвана MM03 с предварительной проверкой полномочий.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 644
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Документ счет-факутура логистики, транзакции MIRO и MIR4, доступны два варианта.

Вывод через вызов CALL TRANSACTION
Код: You are not allowed to view links. Register or Login
SET PARAMETER ID 'RBN' FIELD ls_data_miro-belnr.    "Номер документа счета логистки
SET PARAMETER ID 'GJR' FIELD ls_data_miro-gjahr.    "Год документа счета логистики

CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
И второй вариант через функциональный модуль DRB_OBJECT_DISPLAY,  таки нужно передавать тип объекта, так как без этого, только ключа не достаточно
Код: You are not allowed to view links. Register or Login
DATA: z_borident TYPE BORIDENT.

z_borident-OBJTYPE = 'BUS2081'.
CONCATENATE ls_data_miro-belnr ls_data_miro-gjahr INTO z_borident-OBJKEY.
CALL FUNCTION 'DRB_OBJECT_DISPLAY'
  EXPORTING
    i_boridein = z_borident
  TABLES
    t_messages = t_messages.

Оффлайн tanyxa

  • Newbie
  • *
  • Сообщений: 17
  • Reputation Power: 0
  • tanyxa has no influence.
  • YearsYearsYears
Вроде не было еще:
Понадобилось провалиться сразу в строку FI документа, подобно как в транзакции FBL5N

Код: You are not allowed to view links. Register or Login
set parameter id:
 'BLN' field belnr,    "Номер документа
 'BUK' field bukrs,  "Номер документа
 'GJR' field gjahr,    "Год документа
 'BUZ' field buzei.   "Позиция документа

 call transaction 'FB09D' and skip first screen.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 644
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Просмотр документа резервирования средств FM
Код: You are not allowed to view links. Register or Login
        CALL FUNCTION 'FMFR_RESERVATION_TRANSACTION'
          EXPORTING
            i_activity         = '03'
            i_belnr            = l_belnr
          EXCEPTIONS
            doctype_not_found  = 1
            activity_not_found = 2
            document_not_found = 3
            OTHERS             = 4.
Полезный модуль, можно как просмотреть документ так его отредактировать или создать. Управляет этим делом параметр I_ACTIVITY, в общем то, стандартный набор 01 - создать, 02 - изменить, тогда надо заполнить номер документа и 03 - просмотреть. Самое интересное что стандартно через CALL TRANSACTION для транзакции FMX3 - просмотр, работать не будет. Они внутри кода глубоко забили на SET/GET параметры номера документа.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 644
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Просмотр документа DMS (транзакции CV01N / CV02N / CV03N). В общем-то как говорит SAP, данный модуль типа не очень актуален, но как по мне, вполне еще живой, вот пришлось тут на днях рисовать такой переход:
Код: You are not allowed to view links. Register or Login
              SET PARAMETER ID 'CV1' FIELD ls_ekko-doknr.  "Тип документа
              SET PARAMETER ID 'CV2' FIELD ls_ekko-dokar.  "Номер документа
              SET PARAMETER ID 'CV3' FIELD ls_ekko-dokvr.  "Версія документа
              SET PARAMETER ID 'CV4' FIELD ls_ekko-doktl.  "Часть документа

              CALL TRANSACTION 'CV03N' AND SKIP FIRST SCREEN.