Текущее время: Чт, апр 25 2024, 00:58

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Поиск айтема РО в ME23N (SAP Gui скрипт)
СообщениеДобавлено: Сб, июл 27 2019, 12:53 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 01 2017, 12:58
Сообщения: 31
Всем привет.
Необходимо поправить описание айтемов РО так как в них просочился символ переноса строки (отображается как ##).

Все выглядит довольно просто:
1. в экселе имеем список всех проблемных РО с номерами айтемов, которые надо поправить и корректное описание айтема.
2. запускаем транзакцию, выбираем РО, открываем на редактирование
3. в цикле проходим все айтемы РО и находим нужную строку по номеру айтема, либо можно дополнительно проверить на совпадение описания до спецсимвола, чтобы уж наверняка.
4. проверяем удален ли айтем, если да то разудаляем
5. редактируем описание
6. если айтем был удаленным, то удаляем
7. сохраняем РО

Вопрос по пункту 3:
Видимые на экране строки таблицы tblSAPLMEGUITC_1211 всегда начинается с 0 и до последней видимой строки на экране 5 (на картинке).
Можно свернуть верхнюю панель и нижнюю командами .SendCommand(METOGGOFF1) /3, но все равно все айтемы РО могут не влезть в экран и надо будет скролить.
Собственно вопрос - как прокрутить данные в окне (наверное через .verticalScrollbar.Position = хх) на нужную величину, можно ли как-то определить сколько именно строк отображено сейчас на экране (6 на картинке)?

кол-во айтемов в РО
Code:
session.findById("wnd[0]/usr/subSUB0:SAPLMEGUI:0010/subSUB2:SAPLMEVIEWS:1100/subSUB2:SAPLMEVIEWS:1200/subSUB1:SAPLMEGUI:1211/tblSAPLMEGUITC_1211").verticalScrollbar.Maximum
путь до описания айтема в первой строке
Code:
session.findById("wnd[0]/usr/subSUB0:SAPLMEGUI:0010/subSUB2:SAPLMEVIEWS:1100/subSUB2:SAPLMEVIEWS:1200/subSUB1:SAPLMEGUI:1211/tblSAPLMEGUITC_1211/ctxtMEPO1211-TXZ01[5,0]").text = "NewDescription"

Изображение


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск айтема РО в ME23N (SAP Gui скрипт)
СообщениеДобавлено: Пн, июл 29 2019, 06:53 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
user0 написал(а):
Вопрос по пункту 3:Видимые на экране строки таблицы tblSAPLMEGUITC_1211 всегда начинается с 0 и до последней видимой строки на экране 5 (на картинке).Можно свернуть верхнюю панель и нижнюю командами .SendCommand(METOGGOFF1) /3, но все равно все айтемы РО могут не влезть в экран и надо будет скролить.Собственно вопрос - как прокрутить данные в окне (наверное через .verticalScrollbar.Position = хх) на нужную величину, можно ли как-то определить сколько именно строк отображено сейчас на экране (6 на картинке)?


Ну а если посылать код кнопки PgDn - либо через SendKey, либо SendCommand "P+" (или P++) ?

На экранах "табличного" редактирования всегда позиции видимых строк - это относительные значения (по индексу от нуля, - в пакетных вводах SM35 логика ровно та же). Соответственно, наверное можно обращаться какомуто из видимых полей таблицы в цикле от 0 до 6, и через On Error Resume Next ловить ошибку обращения (которая и будет признаком, что строки с таким номером нету).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск айтема РО в ME23N (SAP Gui скрипт)
СообщениеДобавлено: Пн, июл 29 2019, 17:36 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 01 2017, 12:58
Сообщения: 31
user0 написал(а):
Ну а если посылать код кнопки PgDn - либо через SendKey, либо SendCommand "P+" (или P++) ?
Прокручивать-то оно прокручивает, мне бы понять насколько именно прокручивать вниз чтобы не сбился цикл.
user0 написал(а):
обращаться какомуто из видимых полей таблицы в цикле от 0 до 6
А можно как-то средствами самого САПа определить, сколько именно строк отображено сейчас на экране, собственно вот эта цифра 6?

Все что приходит в голову какое-то громоздкое и неуклюжее и слегка нерабочее )
Code:
'всего айтемов (например 40)
j = .findById(..tblSAPLMEGUITC_1211").verticalScrollbar.Maximum
'находим кол-во строк видимых на экране
For i = 0 To j - 1
  On Error Resume Next
  If Err Then bytVisibleRows = i
  Exit For
  On Error GoTo 0
Next

'выясняем сколько раз надо будет прокрутить экран
Y = Application.WorksheetFunction.RoundUp((j - 1) / bytVisibleRows, 0)

'цикл по всем айтемам
'например ищем среди всех айтемов айтем по номеру 15 (либо по описанию)
itm = 15
For i = 0 To j - 1
  ..verticalScrollbar.position = 0
  'цикл по экранам
  For Z = 1 To Y
   'цикл по строкам
    For X = 0 To bytVisibleRows
    'проверяем номера
     If ..txtMEPO1211-EBELP[1," & x & "]").Text = itm Then
       ..ctxtMEPO1211-TXZ01[5," & x & "]").Text = "NewDescr"
       bFlag = True
       Exit For
     End If   
    Next X
    If bFlag = True Then Exit For
    .SendCommand(P+)
  Next Z
  If bFlag = True Then Exit For
Next i

Кстати, может быть подскажите где можно найти список стандартных команд которые можно передать через SendCommand (типа METOGGOFF), не могу ничего нагуглить полезного.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск айтема РО в ME23N (SAP Gui скрипт)
СообщениеДобавлено: Пн, июл 29 2019, 17:43 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
Цитата:
Прокручивать-то оно прокручивает, мне бы понять насколько именно прокручивать вниз чтобы не сбился цикл.

А зачем гадать?
Первый раз (до первого пролистывания) проскакали циклом (поле № позиции является уникальным "ключевым"), пока не упёрлись в On Error - опредилили программно размер (высоту) окна = N. Запомнили в переменной - т.к. уже не изменится (ну разве что пользователь-рукож*п начнёт размер экрана находу менять ... но тут лучше в начале предупредительный MsgBox вывести "экран не трожь зараза!", т.е. сочетать технические меры с организационными :D ). Копии опрошенного ключевого поля сложили в массив размерностью N (ну или в String сконкатенировали, кому как нравится),

В последующие разы листаете постранично, и после пролистывания заново опрашивайте все N позиций ключевого поля, если они не изменились, значит листание упёрлось в конец списка => Exit Loop.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск айтема РО в ME23N (SAP Gui скрипт)
СообщениеДобавлено: Пн, июл 29 2019, 17:48 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
user0 написал(а):
Кстати, может быть подскажите где можно найти список стандартных команд которые можно передать через SendCommand (типа METOGGOFF), не могу ничего нагуглить полезного.


А нету единого решения. Чтото можете посмотреть в GUIStatus-ах к стандартному ALV-гриду, там коды команд видны под иконками кнопок.
Чтото можно тупо - наводите курсор на кнопку (можно клавишей Tab скакать, можно мышку навести на кнопку, нажать, и не отпуская клавишу мыши отвести указатель от кнопки - она таким пунктирчиком выделяется) и F1.
А некоторые команды бывают запрятаны в абап-код логики экранов, помогает /h и трассировка PAI-логики в конкретной транзакции.

Хотя есть ещё варианты - пакетным вводом SM35 прожамкать нужные кнопки и посмотреть коды. Ну и собственно самый очевидный - рекордер гуискриптинга запустить, прожамкать и посмотреть vbs-файл :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск айтема РО в ME23N (SAP Gui скрипт)
СообщениеДобавлено: Вт, июл 30 2019, 14:27 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 01 2017, 12:58
Сообщения: 31
pberezin написал:
А нету единого решения.
хм, ну по умолчанию-то от производителя так сказать оно должно быть одинаково у всех.
Может в каких-то документах для тренингов есть листинг стандартных транзакций, раз уж они на абапе и не скомпилены (наверное).
pberezin написал:
рекордер гуискриптинга запустить, прожамкать и посмотреть vbs-файл
так он запишет нажатие на кнопку с полным путем до нее, а не название внутренней команды.
pberezin написал:
MsgBox вывести "экран не трожь зараза!"
да не, пользователь тренирован и усидчив :D

зы. я вам в личку написал, посмотрите плз.


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

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


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

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


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

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