Автор Тема: Загрузка и выгрузка временно сохраненных документов ММ (Транзакция MIGO)  (Прочитано 13775 раз)

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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
В продолжении темы про редиску удалившую предварительно сохраненные документы всех пользователей в транзакции MIGO, через транзакцию MBPM (You are not allowed to view links. Register or Login). Короче как недопустить такого в дальнейшем, вроде как выяснили, а вот что делать с удаленными данными? Как оказалось. было удалено несколько тысяч ну очень нужных документов, но бэекап на утро текущего дня, когда было сделано удаление был, значит надо как-то достать данные. В общем виде развернуть бэкап нельзя так как в продуктиве уже люди с утра наколбасили много чего, но его можно поднять на тестовой системе. Из вариантов сделать копию таблиц на уровне базы данных отказались, так как гнездо ну очень не любит когда делаются такие вещи. Пришлось накидать программку, которая может выгрузить  файлы с временно сохраненными документами на локальную станцию из развернутого бэкапа и загрузить их в продуктив. Плюсом оказалось то, что система хранит такие документы по ключу, который является GUID-ом, т.е. фактически 100% уникальность ключа гарантирована. Так что собственно результат ниже:
Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
*& Report  YUUK_UPDOWNLOAD_MIGO
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT  yuuk_updownload_migo.

DATA: l_count LIKE sy-tabix,
      l_count_pos LIKE sy-tabix,
      lt_mmim_predoc_org LIKE mmim_predoc_org OCCURS 1 WITH HEADER LINE,
      lt_mmim_pred LIKE mmim_pred OCCURS 1 WITH HEADER LINE.

***********************************************************************
***********************************************************************
PARAMETERS: p_dwload RADIOBUTTON GROUP grp DEFAULT 'X',
            p_upload RADIOBUTTON GROUP grp.
SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : p_uname FOR lt_mmim_predoc_org-uname.
SELECTION-SCREEN END OF BLOCK block1.

SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-002.
PARAMETERS     : p_forg LIKE rlgrap-filename DEFAULT 'C:\mmim_predoc_org.txt',
                 p_fpred LIKE rlgrap-filename DEFAULT 'C:\mmim_pred.txt'.
SELECTION-SCREEN END OF BLOCK block2.


***********************************************************************
***********************************************************************
CLEAR: lt_mmim_predoc_org[], lt_mmim_predoc_org,
       lt_mmim_pred[], lt_mmim_pred.

IF p_dwload = 'X'.
  SELECT * INTO TABLE lt_mmim_predoc_org
  FROM mmim_predoc_org WHERE uname IN p_uname.

  LOOP AT lt_mmim_predoc_org.
    SELECT * APPENDING TABLE lt_mmim_pred
    FROM mmim_pred WHERE guid = lt_mmim_predoc_org-guid.
  ENDLOOP.

  CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
      filename                = p_forg
      filetype                = 'BIN'
    TABLES
      data_tab                = lt_mmim_predoc_org
    EXCEPTIONS
      file_open_error         = 1
      file_write_error        = 2
      invalid_filesize        = 3
      invalid_type            = 4
      no_batch                = 5
      unknown_error           = 6
      invalid_table_width     = 7
      gui_refuse_filetransfer = 8
      customer_error          = 9
      no_authority            = 10
      OTHERS                  = 11.

  CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
      filename                = p_fpred
      filetype                = 'BIN'
    TABLES
      data_tab                = lt_mmim_pred
    EXCEPTIONS
      file_open_error         = 1
      file_write_error        = 2
      invalid_filesize        = 3
      invalid_type            = 4
      no_batch                = 5
      unknown_error           = 6
      invalid_table_width     = 7
      gui_refuse_filetransfer = 8
      customer_error          = 9
      no_authority            = 10
      OTHERS                  = 11.
  DESCRIBE TABLE lt_mmim_predoc_org LINES l_count.
  WRITE: / 'Всего документов:', AT 30 l_count.
  DESCRIBE TABLE lt_mmim_pred LINES l_count.
  WRITE: / 'Всего позиций в документах:', AT 30 l_count.
ELSE.
***********************************************************************
***********************************************************************
  CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
      filename                = p_forg
      filetype                = 'BIN'
    TABLES
      data_tab                = lt_mmim_predoc_org
    EXCEPTIONS
      conversion_error        = 1
      file_open_error         = 2
      file_read_error         = 3
      invalid_type            = 4
      no_batch                = 5
      unknown_error           = 6
      invalid_table_width     = 7
      gui_refuse_filetransfer = 8
      customer_error          = 9
      no_authority            = 10
      OTHERS                  = 11.

  CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
      filename                = p_fpred
      filetype                = 'BIN'
    TABLES
      data_tab                = lt_mmim_pred
    EXCEPTIONS
      conversion_error        = 1
      file_open_error         = 2
      file_read_error         = 3
      invalid_type            = 4
      no_batch                = 5
      unknown_error           = 6
      invalid_table_width     = 7
      gui_refuse_filetransfer = 8
      customer_error          = 9
      no_authority            = 10
      OTHERS                  = 11.

  CLEAR: l_count, l_count_pos.
* Сохранить временные документы в БД
  LOOP AT lt_mmim_predoc_org WHERE uname IN p_uname.
    INSERT mmim_predoc_org FROM lt_mmim_predoc_org.
    IF sy-subrc = 0.
      l_count = l_count + 1.
*     Позиции документа
      LOOP AT lt_mmim_pred WHERE guid = lt_mmim_predoc_org-guid.
        INSERT mmim_pred FROM lt_mmim_pred.
        IF sy-subrc = 0. l_count_pos = l_count_pos + 1. ENDIF.
      ENDLOOP.
      COMMIT WORK.
    ELSE.
      WRITE: / 'Документ пропущен:', lt_mmim_predoc_org-uname, lt_mmim_predoc_org-refid,
               'Позиций в документе:', lt_mmim_predoc_org-lines.
    ENDIF.
  ENDLOOP.
  WRITE: / sy-uline,
         / 'Вставлено новых документов',
         / 'Всего документов:', AT 30 l_count,
         / 'Всего позиций в документах:', AT 30 l_count_pos.
ENDIF.
Тексты критериев выбора на рисунках ниже, вообще особо обработки ошибок и прочей фигни в программе нет, да и не очень нужно, все таки надеюсь не на постоянной основе будет использоваться  ;) А из особенностей можно выгружать/загружать данные по отдельным пользователям. Файлы выгружаются в бинарном виде, так что полученные файлы в разных текстовых редакторах лучше не открывать, все равно увидеть там что-то полезное не получится, ну я особо не увидел...

Оффлайн №1

  • Administrator
  • Jr. Member
  • *****
  • Сообщений: 636
  • Репутация: +23/-0
  • Пол: Мужской
  • Судьбы я вызов принимаю прямым пожатием руки
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Для Оракла с версии 9 можно в течении UNDO_RETENTION можно потаблично через flashback механизм вытащить ;) если конечно настроен undo. Быстро и безгеморройно (восстановление из бекапа и прочии телодвижения не требуются)
Мой You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Для Оракла с версии 9 можно в течении UNDO_RETENTION можно потаблично через flashback механизм вытащить ;) если конечно настроен undo. Быстро и безгеморройно (восстановление из бекапа и прочии телодвижения не требуются)
Ну специалиста по ораклу не нашлось, я кстати сначала тоже отбивался типа это к администраторам базы данных, но пришлось так сказать ковырять самому... оказалось кстати не сложно.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Временно сохраненных документов ММ доступны только пользователю, который их создал, а никто не делал так, что бы можно было сделать так: один вводит, сохраняет, а другой загодит и проводит?
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Временно сохраненных документов ММ доступны только пользователю, который их создал, а никто не делал так, что бы можно было сделать так: один вводит, сохраняет, а другой загодит и проводит?
Ну как-то на одном заводике озадачились такими вещами, но дальше озадачивания дело не пошло, так как забили. Я так думаю что и вам оно не надо, но если надо, то по моему хватит сменить имя пользователя в таблице.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
You are not allowed to view links. Register or Login
Я так думаю что и вам оно не надо, но если надо, то по моему хватит сменить имя пользователя в таблице.

Ну как сказать, если спрашиваю - то надо.... хотя есть свое решение ...

Хм, то что хотят пользователи, не стоит понимать буквально, если они говорят, что вот мы хотим что бы кладовщик проверял к-во, наличие документов и тд. потом сохранял, а бухгалтер потом проводил.... Это еще не  значит что надо что-то менять в MIGO, им нужно: один принимает, проверяет, другой - проводит...

Я использовал Входящие поставки......
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Я использовал Входящие поставки......
Правильно использовал.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login