Автор Тема: Замена материала в инструкции (IA06)  (Прочитано 38661 раз)

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

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Замена материала в инструкции (IA06)
« : Октябрь 29, 2009, 03:53:07 pm »
День добрый.

Имеются ли какие-нибудь ФМ или другие средства для замены материала в компонентах операций в инструкциях ТОРО (тр. IA06)? Трассировка не даёт пока что внятных ответов.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Замена материала в инструкции (IA06)
« Ответ #1 : Октябрь 29, 2009, 06:00:41 pm »
Ну похоже бачинпут надо рисовать  ::)

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #2 : Октябрь 29, 2009, 06:50:11 pm »
Чего-то у меня плохие воспоминания о бач-инпутах для таких дел... Может, есть какие-нибудь идеи?.. По ST05 смотрю таблицы, проваливаюсь в абап-код, ставлю брек-поинты, запускаю процесс заново. Но там черт ногу сломит...

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Замена материала в инструкции (IA06)
« Ответ #3 : Октябрь 29, 2009, 09:35:13 pm »
Ну в общем-то я посмотрел, бачинпут сделать в принципе процентов на 90 можно и работать будет. Единственное что похоже надо будет для позиции как на рисунке ниже, если даже надо будет менять один материал, придется делать выделение всего, затем удаление всего и после этого по новой ввод всех позиций, так как скорее всего с позиционировать на позицию которую надо заменить не выйдет. В остальном все вполне решаемо.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #4 : Октябрь 30, 2009, 04:49:51 pm »
Не, нифига путного не выходит... Это интерфейс с табличками и поинтером на строку убивает любой бач...

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Замена материала в инструкции (IA06)
« Ответ #5 : Октябрь 30, 2009, 04:52:13 pm »
You are not allowed to view links. Register or Login
Не, нифига путного не выходит... Это интерфейс с табличками и поинтером на строку убивает любой бач...
Да выходит обычно  ::).. в общем я на выходных поиграюсь может чего путное выйдет... Я правильно понял, что именно в этом месте нужно произвести замену материала для инструкции?

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #6 : Октябрь 30, 2009, 06:04:00 pm »
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
Re: Замена материала в инструкции (IA06)
« Ответ #7 : Ноябрь 01, 2009, 11:33:26 pm »
Ну где-то должно быть так, я не делал чтения данных инструкции техкарты, т.е. если рисовать полный функционал то надо прочитать данные позиций операций, это будет первый цикл. затем прочитать данные по материалам для всех позиций операций, это будет второй цикл по позициям материала. Теперь весь прикол в том что всегда удаляем все материалы для операции и затем вносим их по новой точно так же, за исключением той позиции которую надо изменить... и переходим к следующей операции. Для оптимизации само собой наверное не стоит удалять все материалы для позиций в которых не надо ничего менять, ну да это просто нужно тогда жать кнопку перехода к следующей операции, ну и в конце для последней позиции надо вызывать сохранение документа а не переход к следующему компоненту. У себя на вот это инструкции вроде как все корректно работает, т.е написать пакетник реально!
Код: You are not allowed to view links. Register or Login
*PLAS - Позиции техкарты
*---
*PLNTY = A - Инструкция ТОРО
*PLNNR = Номер техкарты
*PLNAL = Счетчик группы технологических карт
*PLNFL = Последовательность (Порядок следовани7

*PLPO - Техкарта список операций

  DATA: f_run(1) TYPE c,
        l_count_m TYPE i,
        l_count_o TYPE i,
        l_matnr LIKE mara-matnr.

  REFRESH: bdcdata, itab.
  PERFORM dynpro USING:
         'X' 'SAPLCPDI' '3001',
         ' ' 'BDC_CURSOR' 'RC271-PLNNR',
         ' ' 'BDC_OKCODE' '=VOUE',
         ' ' 'RC271-PLNNR' '1',         "Номер инструкции техкарты

         'X' 'SAPLCPDI' '3400',
         ' ' 'BDC_CURSOR' 'PLPOD-VORNR(01)',
         ' ' 'BDC_OKCODE' '=MAAL',       "Выделить все позиции

         'X' 'SAPLCPDI' '3400',
         ' ' 'BDC_CURSOR' 'PLPOD-VORNR(01)',
         ' ' 'BDC_OKCODE' '=MAPM'.       "Перейти к изменению компонентов

* Идем по списку операций, само собой надо прочитать их для начала, чтобы знать сколько
* У меня в заказе из было всего 6 позиций так что я поставил как константу.
  l_count_o = 0.
  DO 6 TIMES.
    PERFORM dynpro USING:
           'X' 'SAPLCMDI' '3500',
           ' ' 'BDC_CURSOR' 'RIHSTPX-IDNRK(01)',
           ' ' 'BDC_OKCODE' '=PMB5',       "Выделить все позиции материала

           'X' 'SAPLCMDI' '3500',
           ' ' 'BDC_CURSOR' 'RIHSTPX-IDNRK(01)',
           ' ' 'BDC_OKCODE' '=PMB3'.       "Удалить все позиции материалов

*   Записать новые позиции материала, я как констатна ставлю всегда 2 позиции,
*   чтобы показать как вводить материалы при позиционировании всегда на первую
*   строку позиции!!!
    l_count_m = 0.
    DO 2 TIMES.
      l_count_m = l_count_m + 1.
      IF l_count_m = 1.
        l_matnr = 'MB-1000'.  "Первая строка
      ELSE.
        l_matnr = 'M1'.       "Вторая строка
      ENDIF.
      PERFORM dynpro USING:
             'X' 'SAPLCMDI' '3500',
             ' ' 'BDC_CURSOR' 'RIHSTPX-IDNRK(01)',
             ' ' 'BDC_OKCODE' '/00',        "Материал + количество и нажать ENTER
             ' ' 'RIHSTPX-IDNRK(01)' l_matnr,
             ' ' 'RIHSTPX-MENGE(01)' '1',

             'X' 'SAPLCMDI' '3500',
             ' ' 'BDC_CURSOR' 'RIHSTPX-IDNRK(01)',
             ' ' 'BDC_OKCODE' '=P++'.       "Сместить записи таблицы PgDn
    ENDDO.
    l_count_o = l_count_o + 1.
    IF l_count_o < 6.
      PERFORM dynpro USING:
             'X' 'SAPLCMDI' '3500',
             ' ' 'BDC_OKCODE' '=NEPM'.        "Перейти к следующей операции
    ELSE.
      PERFORM dynpro USING:
             'X' 'SAPLCMDI' '3500',
             ' ' 'BDC_OKCODE' '=BU'.          "Сохранить данные техкарты
    ENDIF.
  ENDDO.

* Вызвать транзакцию
  BREAK-POINT.
  f_run = 'A'.
  CALL TRANSACTION 'IA06' USING bdcdata MODE f_run UPDATE 'S'
                                        MESSAGES INTO itab.
  BREAK-POINT.


Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
*&      Form  DYNPRO
*&---------------------------------------------------------------------*
*                   Генерация полей для BATCH-INPUT
*----------------------------------------------------------------------*
FORM dynpro USING dynbegin name value.
  IF dynbegin = 'X'.
    CLEAR bdcdata.
    MOVE: name TO bdcdata-program,
          value TO bdcdata-dynpro,
          'X' TO bdcdata-dynbegin.
    APPEND bdcdata.
  ELSE.
    CLEAR bdcdata.
    MOVE: name TO bdcdata-fnam,
          value TO bdcdata-fval.
    APPEND bdcdata.
  ENDIF.
ENDFORM.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #8 : Ноябрь 12, 2009, 04:18:05 pm »
Спасибо.

Однако, если имеются подоперации, то как с ними быть? Просто логику я делаю следующую: не удалять все и потом вставлять, а удалять только нужные. Но на экране оперирование производится указателем на номер строки/поле, а у меня таблица. Допустим, можно маппить значение в таблице на номер строки на экране, но подоперации тут портят малину.

Эти самые подоперации видны в списке на экране, но в них материалы не предусмотрены, однако же и в PLAS их нет, если ориентироваться на количество значений в этой таблице как на количество строк операций. Где они лежат — не нашел, к сожалению.
« Последнее редактирование: Ноябрь 12, 2009, 04:20:48 pm от A. »

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #9 : Ноябрь 12, 2009, 06:49:44 pm »
С подоперациями вроде понятно: PLPO-SUMNR - вышестоящий.

А что делать, если все записи операций не помещаются на один экран, а нужно обработать только некоторые, да и те в конце? Как определять размер экрана в количестве строк в зависимости от монитора/разрешения?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Замена материала в инструкции (IA06)
« Ответ #10 : Ноябрь 12, 2009, 11:37:46 pm »
You are not allowed to view links. Register or Login
определять размер экрана в количестве строк в зависимости от монитора/разрешения?
Ну как бы тут есть два варианта, один нормальный, второй через одно место, но от разрабочиков SAP  :D

Первый, есть переменные
SY-SROWS - Количество строк экрана и SY-SCOLS - Количество знакомест на экране, так вот количество строк в таблице можно рассчитать зная количество строк из SY-SROWS, т.е обычно как, есть какие-то поля ввода и есть таблица которая маштабируется от например минимум 4 строки до... сколько экран. так что можно рассчитать сколько строк в таблице зная значение из этой переменной.

Вариант второй, у SAP есть понятие стандартного экрана это когда SY-SROWS = 23, а SY-SCOLS = 86, при этом количество строк будет уже тоже фиксированное, т.е. проверяешь что SY-SROWS <> 23, и говоришь типа для работы транзакции перейдите в стандартный режим. А как перейти, ну вот пример на экране как это делается, после чего экран станет стандартного размера и ты можешь отработать свой пакетник.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #11 : Ноябрь 13, 2009, 06:58:26 am »
Понял, спасибо, попробую. Еще пришло в голову просто глянуть, сколько строк в таблице на экране задано в программе, и не изменяется ли это число от каких-либо операций с окном или других параметров отображения.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Замена материала в инструкции (IA06)
« Ответ #12 : Ноябрь 13, 2009, 07:03:12 am »
You are not allowed to view links. Register or Login
Понял, спасибо, попробую. Еще пришло в голову просто глянуть, сколько строк в таблице на экране задано в программе, и не изменяется ли это число от каких-либо операций с окном или других параметров отображения.
Ну я думаю что как раз таблица масштабируемая, так что число строк таки зависит от размера окна, но точно есть минимальное число строк, это когда появляются полосы прокрутки на экране.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #13 : Ноябрь 13, 2009, 08:24:12 am »
Отладчик выдает для syst, если перед этим вызвать из меню "Стандартный размер" как у вас на скриншоте:

Код: You are not allowed to view links. Register or Login
39 SROWS I 4        30
40 SCOLS I 4        83

SAP Logon 6404.4.14.1012, WinXP SP2 Rus. Под вистой и 7.10 логоном тоже самое.

Однако, в операции CALL TRANSACTION обнаружилось OPTIONS FROM, и параметр DEFSIZE — Use standard window size.
« Последнее редактирование: Ноябрь 13, 2009, 08:35:29 am от A. »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Замена материала в инструкции (IA06)
« Ответ #14 : Ноябрь 13, 2009, 09:31:00 am »
Ну вполне может эта опция и поможет, я смотрел в 4.6 там кажется такого еще нет или не нашел в справке, но общая мысль я так понимаю ясна.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #15 : Ноябрь 13, 2009, 04:03:27 pm »
Да, общая мысль понятна, спасибо.

Про опцию вызова транзакции со стандартным размером экрана. Она срабатывает в том случае, когда окно НЕ распахнуто на весь экран соответствующей кнопкой в правом верхнем углу. Если окно немножко подмасштабировать за правый нижний корнер, то срабатывает. Вот интересно, есть ли способ определить — окно распахнуто на весь экран или же нет?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Замена материала в инструкции (IA06)
« Ответ #16 : Ноябрь 13, 2009, 05:09:37 pm »
You are not allowed to view links. Register or Login
Да, общая мысль понятна, спасибо.

Про опцию вызова транзакции со стандартным размером экрана. Она срабатывает в том случае, когда окно НЕ распахнуто на весь экран соответствующей кнопкой в правом верхнем углу. Если окно немножко подмасштабировать за правый нижний корнер, то срабатывает. Вот интересно, есть ли способ определить — окно распахнуто на весь экран или же нет?
Нет никак, ну не знаю может в 6.0 что-то и появилось, но раньше небыло, поэтому я вот таким вот жестким образом заставлял пользователя типа выбрать переход к стандартному экрану перед прогоном программы.

Оффлайн nick_mi

  • Newbie
  • *
  • Сообщений: 6
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #17 : Ноябрь 17, 2009, 12:52:02 pm »
А может посмотреть в сторону поиска операции? Дело в том, что хотя в меню этого поиска нет для IA06, в самой программе такая команда обрабатывается. Например, если под отладчиком поставить такую команду  (OSEA) вместо какой либо другой, выполняется нормальный поиск операции.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #18 : Ноябрь 17, 2009, 01:16:10 pm »
Но это только позиционирует курсор и выделение на нужную строчку операции в экранной таблице. Если затем полностью удалять и затем восстанавливать записи материалов, то это получится. Это просто, если спецификации только вида "S". Но там еще и "M"...

Во всяком случае, спасибо за подсказку, очень интересно. Как вы узнали об этой команде?

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #19 : Ноябрь 18, 2009, 10:33:53 am »
Было бы вообще отлично, если бы такая функция была для материала, точнее, для позиционирования курсора на нужный.

Оффлайн nick_mi

  • Newbie
  • *
  • Сообщений: 6
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #20 : Ноябрь 18, 2009, 12:14:51 pm »
Когда-то возникал такой вопрос по единичным техкартам( тр СА02), а программа что для СА02 что IA06 одна и таже. Для матераиала, похоже, подобного механизма нет

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #21 : Ноябрь 18, 2009, 01:05:08 pm »
Жаль, что нет для материала. Я для программы по экрану посмотрел варианты OK-кодов, повводил, но ничего нужного не обнаружил...

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #22 : Ноябрь 30, 2009, 08:50:14 am »
Остался последний вопрос, надеюсь.

Отдельная программа с парой строк
Код: You are not allowed to view links. Register or Login
WRITE: /sy-scols.
WRITE: /sy-srows.
выдаёт значения:
83
30


А если в нужной программе после REPORT поставить такую же конструкцию плюс BREAK-POINT следом, то значения будут такими:
86
22


В чем тут дело? Количество строк зависит от каких-нибудь SET-STATUS и т.п.?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Замена материала в инструкции (IA06)
« Ответ #23 : Ноябрь 30, 2009, 09:33:06 am »
You are not allowed to view links. Register or Login
В чем тут дело? Количество строк зависит от каких-нибудь SET-STATUS и т.п.?
Может отладчик типа чуток изменяет размеры... я бы не заморачивался на этом и брал то что получается в момент работы программы без отладки.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Замена материала в инструкции (IA06)
« Ответ #24 : Ноябрь 30, 2009, 09:39:42 am »
You are not allowed to view links. Register or Login
Может отладчик типа чуток изменяет размеры... я бы не заморачивался на этом и брал то что получается в момент работы программы без отладки.
Может и изменяет...

Вариантов я вижу два: либо использовать конструкцию "не меньше, чем" и задавать 86 и 30 как граничные, либо через "ИЛИ" перечислить возможные значения.

Но все равно, непонятно, и потому стрёмно... sdn, гугл порыл — ничего что-то не нарыл...