Текущее время: Чт, июл 17 2025, 07:57

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: не судите строго...
СообщениеДобавлено: Ср, апр 26 2006, 16:42 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, мар 10 2006, 10:26
Сообщения: 84
вот написал программку, которая должна эмулировать действия пользователя, собственно что она и делает...(на вопрос зачем, скажу сразу, что нравится транзакция sm04 и активность некоторых людей прямо таки удивляет :wink: ), ...
если есть возможность улучшить(уверен, что есть) поделитесь соображениями, может весь подход стоит изменить...


Code:
REPORT  z_xxx.

TABLES: tstc.

DATA: random_number TYPE int4,
      rnd_value LIKE  datatype-char0128,
      temp_num(2) TYPE c,
      trans(4) TYPE c,
      trans_code(4) TYPE c.
DATA: gv_counter TYPE int4.
DATA:    bdcdata LIKE bdcdata  OCCURS 0 WITH HEADER LINE.

START-OF-SELECTION.

  PARAMETERS p_module(2) TYPE c.            "Выбор области(se, su, fi etc)
  PARAMETERS p_time TYPE i DEFAULT 1.     "Время задержки в секундах
  PARAMETERS p_iter TYPE i DEFAULT 100.     "Количество итераций

END-OF-SELECTION.
  WHILE gv_counter LT p_iter.
    PERFORM random_transactions.
    gv_counter = gv_counter + 1.
  ENDWHILE.

*&---------------------------------------------------------------------*
*&      Form  random_transactions
*&---------------------------------------------------------------------*
FORM random_transactions.

* PERFORM bdc_field USING 'BDC_OKCODE' '=N'.
  PERFORM bdc_field USING 'BDC_OKCODE' '=BACK'.

  CALL FUNCTION 'SXMS_CREATE_RANDOM_NUMBER'
    IMPORTING
      random_number = random_number.

  CALL FUNCTION 'RANDOM_C'
    EXPORTING
      len_min   = 2
      len_max   = 2
      char_min  = 1
      char_max  = 26
    IMPORTING
      rnd_value = rnd_value.

  MOVE random_number TO temp_num.
* CONCATENATE rnd_value temp_num INTO trans_code.
  CONCATENATE p_module temp_num INTO trans_code.

  SELECT COUNT( * ) FROM tstc WHERE tcode EQ trans_code.
  IF sy-dbcnt NE 0.
    WRITE: / 'Transaction code: ', trans_code.
    CALL FUNCTION 'C14Z_WAIT_N_SECONDS'
      EXPORTING
        i_no_of_seconds = p_time.
    CALL TRANSACTION trans_code USING bdcdata MODE 'N'.
  ENDIF.
* WRITE: / 'Transaction code not in list: ', trans_code.


ENDFORM.                    "random_transactions
*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program  = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.
ENDFORM.                    "BDC_DYNPRO

*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
  IF NOT fval IS INITIAL.
    CLEAR bdcdata.
    bdcdata-fnam = fnam.
    bdcdata-fval = fval.
    CONDENSE bdcdata-fval.
    APPEND bdcdata.
  ENDIF.
ENDFORM.                    "BDC_FIELD


P.S. написано исключительно в целях самообучения...очень сырая версия...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 26 2006, 17:11 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
Я бы посоветовал использовать реальные транзакции, а не генерить их имена, учитывая, что ваши имена генерятся не правильно и не в одну существующую транзакцию не попал. Берите транзакции из TADIR OBJECT = 'TRAN'. Можно убрать стэйтмент TABLES, не нужна одна из подпрограмм для пакета, параметры у вас объявлены в секции START-OF-SELECTION, хотя там не должны быть... обработка должна идти в этом блоке.... это так по мелочам если... успехов в обучении;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 26 2006, 19:28 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 16:09
Сообщения: 202
на месте базиса убил бы ... 20 таких прог убьют производительность ... на ура


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 27 2006, 08:51 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, мар 10 2006, 10:26
Сообщения: 84
Snegurenok написал(а):
на месте базиса убил бы ... 20 таких прог убьют производительность ... на ура

для избежания этого и введен таймер: если поставить минут на 10 задержку, то вроде как не слишком грузишь систему...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 27 2006, 09:52 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
Kanev написал(а):
Snegurenok написал(а):
на месте базиса убил бы ... 20 таких прог убьют производительность ... на ура

для избежания этого и введен таймер: если поставить минут на 10 задержку, то вроде как не слишком грузишь систему...

Таймер, ну это когда на расстрел админы поведут, то расстреляют сразу и наверное, без мучений... так что за таймер молодец... адназначна.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 27 2006, 10:20 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, мар 10 2006, 10:26
Сообщения: 84
Uukrul написал(а):
Kanev написал(а):
Snegurenok написал(а):
на месте базиса убил бы ... 20 таких прог убьют производительность ... на ура

для избежания этого и введен таймер: если поставить минут на 10 задержку, то вроде как не слишком грузишь систему...

Таймер, ну это когда на расстрел админы поведут, то расстреляют сразу и наверное, без мучений... так что за таймер молодец... адназначна.

смысл ваши слов для меня остался загадкой :( , я надеюсь Вы понимаете, что программа носит скорее экспериментальный и юмористический оттенок :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 27 2006, 10:34 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 16:09
Сообщения: 202
угу - а первый приз в этой юморине - программе из одной строчки

DELETE FROM bkpf.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 27 2006, 10:38 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, мар 10 2006, 10:26
Сообщения: 84
Snegurenok написал(а):
угу - а первый приз в этой юморине - программе из одной строчки

DELETE FROM bkpf.

весь смысл в том, чтоб в системе не гадить...
поэтому это изначально ясно...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 27 2006, 10:41 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 16:09
Сообщения: 202
Kanev написал(а):
Snegurenok написал(а):
угу - а первый приз в этой юморине - программе из одной строчки

DELETE FROM bkpf.

весь смысл в том, чтоб в системе не гадить...
поэтому это изначально ясно...


т.е. отбирать ресурсы системы непонятно на что - ето не гадить системе ? - ну тогда число PI считайте уж -хоть какая то польза для науки будет ...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 27 2006, 10:47 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, мар 10 2006, 10:26
Сообщения: 84
Snegurenok написал(а):
Kanev написал(а):
Snegurenok написал(а):
угу - а первый приз в этой юморине - программе из одной строчки

DELETE FROM bkpf.

весь смысл в том, чтоб в системе не гадить...
поэтому это изначально ясно...


т.е. отбирать ресурсы системы непонятно на что - ето не гадить системе ? - ну тогда число PI считайте уж -хоть какая то польза для науки будет ...


ваша правда, но в эмуляции действий пользователя, наверное, можно найти и положительные моменты, просто в реальной жизни при работе с SAPом с такими задачами не сталкивался...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 27 2006, 10:59 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 16:09
Сообщения: 202
во всем можно найти положительные моменты - особенно много их в добавлении себе в обход безопсности профиля SAP_ALL


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 27 2006, 11:13 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, мар 10 2006, 10:26
Сообщения: 84
Snegurenok написал(а):
во всем можно найти положительные моменты - особенно много их в добавлении себе в обход безопсности профиля SAP_ALL

а это Вы к чему? :shock:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 27 2006, 11:23 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 10:49
Сообщения: 95
Откуда: 4.6C
топик можно в раздел Юмор смело переносить - посмеялся, спасибо! :D

_________________
Kind regards


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: не судите строго...
СообщениеДобавлено: Пт, апр 28 2006, 10:59 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 01 2005, 13:23
Сообщения: 303
Откуда: Питер
Пол: Мужской
Kanev написал(а):
вот написал программку, которая должна эмулировать действия пользователя, собственно что она и делает...(на вопрос зачем, скажу сразу, что нравится транзакция sm04 и активность некоторых людей прямо таки удивляет :wink: ), ...
если есть возможность улучшить(уверен, что есть) поделитесь соображениями, может весь подход стоит изменить...


Code:
REPORT  z_xxx.

TABLES: tstc.

DATA: random_number TYPE int4,
      rnd_value LIKE  datatype-char0128,
      temp_num(2) TYPE c,
      trans(4) TYPE c,
      trans_code(4) TYPE c.
DATA: gv_counter TYPE int4.
DATA:    bdcdata LIKE bdcdata  OCCURS 0 WITH HEADER LINE.

START-OF-SELECTION.

  PARAMETERS p_module(2) TYPE c.            "Выбор области(se, su, fi etc)
  PARAMETERS p_time TYPE i DEFAULT 1.     "Время задержки в секундах
  PARAMETERS p_iter TYPE i DEFAULT 100.     "Количество итераций

END-OF-SELECTION.
  WHILE gv_counter LT p_iter.
    PERFORM random_transactions.
    gv_counter = gv_counter + 1.
  ENDWHILE.

*&---------------------------------------------------------------------*
*&      Form  random_transactions
*&---------------------------------------------------------------------*
FORM random_transactions.

* PERFORM bdc_field USING 'BDC_OKCODE' '=N'.
  PERFORM bdc_field USING 'BDC_OKCODE' '=BACK'.

  CALL FUNCTION 'SXMS_CREATE_RANDOM_NUMBER'
    IMPORTING
      random_number = random_number.

  CALL FUNCTION 'RANDOM_C'
    EXPORTING
      len_min   = 2
      len_max   = 2
      char_min  = 1
      char_max  = 26
    IMPORTING
      rnd_value = rnd_value.

  MOVE random_number TO temp_num.
* CONCATENATE rnd_value temp_num INTO trans_code.
  CONCATENATE p_module temp_num INTO trans_code.

  SELECT COUNT( * ) FROM tstc WHERE tcode EQ trans_code.
  IF sy-dbcnt NE 0.
    WRITE: / 'Transaction code: ', trans_code.
    CALL FUNCTION 'C14Z_WAIT_N_SECONDS'
      EXPORTING
        i_no_of_seconds = p_time.
    CALL TRANSACTION trans_code USING bdcdata MODE 'N'.
  ENDIF.
* WRITE: / 'Transaction code not in list: ', trans_code.


ENDFORM.                    "random_transactions
*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program  = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.
ENDFORM.                    "BDC_DYNPRO

*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
  IF NOT fval IS INITIAL.
    CLEAR bdcdata.
    bdcdata-fnam = fnam.
    bdcdata-fval = fval.
    CONDENSE bdcdata-fval.
    APPEND bdcdata.
  ENDIF.
ENDFORM.                    "BDC_FIELD


P.S. написано исключительно в целях самообучения...очень сырая версия...


Что-то я не пойму... у меня в логах только se38. может я ни туда смотрю... как посмотреть полный логв sm04? куда ткнуть то? :)))


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: не судите строго...
СообщениеДобавлено: Пт, апр 28 2006, 11:46 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, мар 10 2006, 10:26
Сообщения: 84
Preatos написал:

Что-то я не пойму... у меня в логах только se38. может я ни туда смотрю... как посмотреть полный логв sm04? куда ткнуть то? :)))

если вас понял правильно, то посмотреть , что запускалось/работает можно тут:
в SM04 кликните на пользователе...
еще есть STAT...
eще SM21...


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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