Текущее время: Сб, апр 27 2024, 02:29

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Хочу поделиться программой поиска в ABAP-коде WebDynpro и функциях планирования FOX
СообщениеДобавлено: Сб, мар 17 2012, 16:05 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 02 2009, 22:28
Сообщения: 228
Откуда: MOW
Пол: Мужской
Добрый день!

Вот такая программа, написана по образу и подобию транзакции CODE_SCANNER, позволяет искать по тексту ABAP в компонентах WebDynpro. По клику открывается нужное место.

Дополнительная возможность - поиск в тексте функций планирования FOX. По клику функция открывается в браузере (эта возможность больше интересна BW-шникам).

Code:
REPORT  z_code_scanner.

TYPE-POOLS: abap, rs, slis, wdyrt.

TABLES: wdy_ctlr_compo_key, rsplf_srv, sscrfields.

CONSTANTS: c_fox          TYPE rsplf_srvtypenm VALUE '0RSPL_FORMULA',
           c_type_wdy     TYPE c VALUE '1',
           c_type_fox     TYPE c VALUE '2'.

TYPES: BEGIN OF lty_comp,
         component        TYPE wdy_component_name,
       END OF lty_comp.

TYPES: BEGIN OF lty_fox,
         srvnm            TYPE rsplf_srvnm,
       END OF lty_fox.

TYPES: BEGIN OF lty_found,
         type                TYPE char1,
         component_name      TYPE wdy_ctlr_compo-component_name,
         controller_name     TYPE wdy_ctlr_compo-controller_name,
         cmpname             TYPE wdy_ctlr_compo-cmpname,
         srvnm               TYPE rsplf_srv-srvnm,
         title               TYPE string,
         line                TYPE string,
         line_num            TYPE i,
       END OF lty_found.

DATA: gt_comp         TYPE TABLE OF lty_comp WITH HEADER LINE,
      gt_fox          TYPE TABLE OF lty_fox WITH HEADER LINE,
      gt_found        TYPE TABLE OF lty_found WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(23) twdy FOR FIELD s_wdyc.
SELECTION-SCREEN POSITION 30.
SELECT-OPTIONS: s_wdyc          FOR wdy_ctlr_compo_key-component_name.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(23) tfox FOR FIELD s_fox.
SELECTION-SCREEN POSITION 30.
SELECT-OPTIONS: s_fox           FOR rsplf_srv-srvnm.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(23) tstr FOR FIELD p_strg.
SELECTION-SCREEN POSITION 30.
PARAMETERS: p_strg(80).
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(23) twdyp FOR FIELD p_wdyc.
SELECTION-SCREEN POSITION 30.
PARAMETERS: p_wdyc       TYPE char1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(23) tfoxp FOR FIELD p_fox.
SELECTION-SCREEN POSITION 30.
PARAMETERS: p_fox        TYPE char1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN: FUNCTION KEY 1.

* INCLUDE Z79Y_CODE_SCANNER_EX_O01                .  " PBO-Modules
* INCLUDE Z79Y_CODE_SCANNER_EX_I01                .  " PAI-Modules
* INCLUDE Z79Y_CODE_SCANNER_EX_F01                .  " FORM-Routines

INITIALIZATION.

  twdy = 'Web-Dynpro-Component'.
  tfox = 'Fox Formulas'.
  tstr = 'Search string'.
  twdyp = 'Search in WebDynpro Components'.
  tfoxp = 'Search in Fox Formulas'.

  " Set default values
  s_wdyc-sign   = 'I'.
  s_wdyc-option = 'CP'.
  s_wdyc-low    = 'Z*'.
  APPEND s_wdyc.

  s_fox-sign   = 'I'.
  s_fox-option = 'CP'.
  s_fox-low    = 'Z*'.
  APPEND s_fox.

  sscrfields-functxt_01 = 'Запустить code_scanner'.
*  CALL FUNCTION 'ICON_CREATE'
*    EXPORTING
*      name                        = 'ICON_DESELECT_ALL'
*      text                        = ''
*      info                        = 'Отменить выделение'
**     ADD_STDINF                  = 'X'
*    IMPORTING
*      RESULT                      = sscrfields-functxt_01
*    EXCEPTIONS
*      icon_not_found              = 1
*      outputfield_too_short       = 2
*      OTHERS                      = 3.
*
*  IF sy-subrc <> 0.
*    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*  ENDIF.

AT SELECTION-SCREEN.
  CASE sscrfields-ucomm.
    WHEN 'FC01'.
      CALL TRANSACTION 'CODE_SCANNER'.
  ENDCASE.

START-OF-SELECTION.
  PERFORM main.

*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_data CHANGING value(c_rc)   TYPE sysubrc.

  CLEAR c_rc.

  CLEAR: gt_comp, gt_fox, gt_found.
  REFRESH: gt_comp[], gt_fox[], gt_found[].

  IF p_wdyc = abap_true.
    SELECT DISTINCT component_name
      FROM wdy_component
      INTO TABLE gt_comp                                 "#EC CI_BYPASS
      WHERE component_name IN s_wdyc.                 "#EC CI_SGLSELECT
  ENDIF.

  IF p_fox = abap_true.
    SELECT DISTINCT srvnm
      FROM rsplf_srv
      INTO TABLE gt_fox
      WHERE srvnm IN s_fox
        AND objvers = rs_c_objvers-active                "#EC CI_BYPASS
        AND srvtypenm = c_fox.                        "#EC CI_SGLSELECT
  ENDIF.

  IF gt_comp[] IS INITIAL AND gt_fox[] IS INITIAL.
    MESSAGE 'Данные не выбраны' TYPE 'S'.
    c_rc = 1.
  ENDIF.
ENDFORM.                    " get_data
*&---------------------------------------------------------------------*
*&      Form  main
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM main .

  DATA: lv_rc          TYPE sysubrc.

  IF p_strg IS INITIAL.
    MESSAGE 'Заполните строку поиска' TYPE 'S' DISPLAY LIKE 'E'.
    RETURN.
  ENDIF.

  PERFORM get_data CHANGING lv_rc.
  IF lv_rc <> 0.
    RETURN.
  ENDIF.

  PERFORM search_wdy.
  PERFORM search_fox.

  PERFORM create_alvlist.
ENDFORM.                    " main
*&---------------------------------------------------------------------*
*&      Form  search_wdy
*&---------------------------------------------------------------------*
*       Поиск в компонентах WebDynpro
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM search_wdy .

  TYPES: BEGIN OF lty_found_wdy_ex.
  INCLUDE TYPE lty_found.
  TYPES: code_body        TYPE wdy_ctlr_compo-code_body,
       END OF lty_found_wdy_ex.

  DATA: lv_search        TYPE string,
        lt_found_wdy_ex  TYPE TABLE OF lty_found_wdy_ex,
        lt_lines         TYPE TABLE OF string,
        lt_results       TYPE TABLE OF match_result. " WITH HEADER LINE.

  FIELD-SYMBOLS: <ls_found_wdy_ex>           TYPE lty_found_wdy_ex,
                 <ls_result>                 TYPE match_result.

  CHECK gt_comp[] IS NOT INITIAL.

  SELECT component_name controller_name cmpname code_body
    FROM wdy_ctlr_compo
    INTO CORRESPONDING FIELDS OF TABLE lt_found_wdy_ex
    FOR ALL ENTRIES IN gt_comp
    WHERE component_name = gt_comp-component.

  LOOP AT lt_found_wdy_ex ASSIGNING <ls_found_wdy_ex>
    WHERE code_body CS p_strg.

    SPLIT <ls_found_wdy_ex>-code_body AT cl_abap_char_utilities=>cr_lf
      INTO TABLE lt_lines.

    FIND ALL OCCURRENCES OF p_strg IN TABLE lt_lines
      IGNORING CASE
      RESULTS lt_results.

    IF sy-subrc <> 0.
      BREAK-POINT.
      MESSAGE 'Произошла внутренняя ошибка' TYPE 'E'.
    ENDIF.

    LOOP AT lt_results ASSIGNING <ls_result>.

      CLEAR gt_found.
      MOVE-CORRESPONDING <ls_found_wdy_ex> TO gt_found.

      gt_found-type = c_type_wdy.
      gt_found-line_num = <ls_result>-line.
      READ TABLE lt_lines INDEX <ls_result>-line INTO gt_found-line.

      CONCATENATE gt_found-component_name gt_found-controller_name gt_found-cmpname
        INTO gt_found-title SEPARATED BY '/'.
      CONCATENATE 'WDY:' gt_found-title INTO gt_found-title SEPARATED BY space.

      APPEND gt_found.
    ENDLOOP.
  ENDLOOP.
ENDFORM.                    " search_wdy
*&---------------------------------------------------------------------*
*&      Form  create_alvlist
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_alvlist .

  DATA: ls_layout         TYPE slis_layout_alv,
        lt_all_events     TYPE TABLE OF slis_alv_event,
        lt_events         TYPE TABLE OF slis_alv_event,
        ls_event          TYPE slis_alv_event,
        lt_fieldcat       TYPE TABLE OF slis_fieldcat_alv.

  FIELD-SYMBOLS: <ls_fieldcat>        TYPE slis_fieldcat_alv.

* Initialize Layout for activity log
  ls_layout-detail_popup         = abap_true.
  ls_layout-detail_initial_lines = abap_true.
  ls_layout-expand_all           = abap_true.
  ls_layout-colwidth_optimize    = abap_true.
  ls_layout-zebra                = abap_true.

* Get possible events
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type = 0
    IMPORTING
      et_events   = lt_all_events[].

* User-command for activity log
  READ TABLE lt_all_events WITH KEY name = slis_ev_user_command
             INTO ls_event.
  IF sy-subrc = 0.
    ls_event-form = 'ALV_USER_COMMAND'.
    APPEND ls_event TO lt_events.
  ENDIF.

  APPEND INITIAL LINE TO lt_fieldcat ASSIGNING <ls_fieldcat>.
  <ls_fieldcat>-fieldname = 'TITLE'.
  <ls_fieldcat>-outputlen = 70.
  <ls_fieldcat>-seltext_l = 'Месторасположение'.

  APPEND INITIAL LINE TO lt_fieldcat ASSIGNING <ls_fieldcat>.
  <ls_fieldcat>-fieldname = 'LINE_NUM'.
  "<ls_fieldcat>-outputlen = .
  <ls_fieldcat>-seltext_s = '№ строки'.

  APPEND INITIAL LINE TO lt_fieldcat ASSIGNING <ls_fieldcat>.
  <ls_fieldcat>-fieldname = 'LINE'.
  <ls_fieldcat>-outputlen = 70.
  <ls_fieldcat>-seltext_l = 'Текст'.

  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
*   I_INTERFACE_CHECK                 = con_false
*   I_BYPASSING_BUFFER                = con_false
*   I_BUFFER_ACTIVE                   = ' '
      i_callback_program                = sy-repid
*   I_CALLBACK_PF_STATUS_SET          = con_false
*   I_CALLBACK_USER_COMMAND           = con_false
*   I_CALLBACK_TOP_OF_PAGE            = con_false
*   I_CALLBACK_HTML_TOP_OF_PAGE       = con_false
*   I_CALLBACK_HTML_END_OF_LIST       = con_false
*   i_structure_name                  = con_false
*   I_BACKGROUND_ID                   = con_false
*   I_GRID_TITLE                      =
*   I_GRID_SETTINGS                   =
      is_layout                         = ls_layout
      it_fieldcat                       = lt_fieldcat
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
   "it_sort                           = l_tab_sort
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = con_true
      i_save                            = 'A'
*   IS_VARIANT                        =
      it_events                         = lt_events
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   I_HTML_HEIGHT_TOP                 =
*   I_HTML_HEIGHT_END                 =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
  TABLES
    t_outtab                          = gt_found[]
  EXCEPTIONS
    program_error                     = 1
    OTHERS                            = 2.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    " create_alvlist

*---------------------------------------------------------------------*
*       FORM ALV_USER_COMMAND                                         *
*---------------------------------------------------------------------*
FORM alv_user_command
     USING i_ucomm TYPE syucomm
           i_selfield TYPE slis_selfield.                   "#EC CALLED

  "FIELD-SYMBOLS: <ls_line>            TYPE lty_found.

  CHECK i_ucomm = '&IC1'.
  READ TABLE gt_found INDEX i_selfield-tabindex.
  IF sy-subrc = 0.

    CASE gt_found-type.
      WHEN c_type_wdy.
        PERFORM open_webdynpro USING gt_found-component_name
                                     gt_found-controller_name
                                     gt_found-cmpname
                                     gt_found-line_num.
      WHEN c_type_fox.
        PERFORM open_fox_in_browser USING gt_found-srvnm.
    ENDCASE.
  ENDIF.
*
*  l_position = 1.
*  READ TABLE g_tab_lines INTO l_str_lines INDEX i_selfield-tabindex.
*  IF sy-subrc = 0.
*    l_position = l_str_lines-linno.
*  ENDIF.
*
**  BREAK-POINT.
*  CASE i_ucomm.
*
*    WHEN '&IC1'.
*      PERFORM navigate_to_object USING l_str_lines-progname
*                                       l_position
*                                       p_edit.
*
*  ENDCASE.
*
** Do refresh always col- and row-stable
*  IF i_selfield-refresh = con_true.
*    i_selfield-col_stable = con_true.
*    i_selfield-row_stable = con_true.
*  ENDIF.

ENDFORM.                    "alv_user_command

*&---------------------------------------------------------------------*
*&      Form  open_webdynpro
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->VALUE(U_COMPONENT_NAME)   text
*      -->VALUE(U_CONTROLLER_NAME)  text
*      -->VALUE(U_METHOD)           text
*      -->VALUE(U_LINE)             text
*----------------------------------------------------------------------*
FORM open_webdynpro USING value(u_component_name) TYPE wdy_ctlr_compo-component_name
                          value(u_controller_name) TYPE wdy_ctlr_compo-controller_name
                          value(u_method) TYPE wdy_ctlr_compo-cmpname
                          value(u_line)   TYPE i.

  DATA: ls_cont_key        TYPE wdy_controller_key,
        lv_include         TYPE program,
        lt_map             TYPE wdyrt_line_info_tab_type WITH HEADER LINE,
        lv_line            TYPE i,
        lo_req             TYPE REF TO cl_wb_request,
        lt_request_set     TYPE swbm_wb_request_set.

  ls_cont_key-component_name = u_component_name.
  ls_cont_key-controller_name = u_controller_name.

  CALL METHOD cl_wdy_wb_naming_service=>get_includename_for_controller
    EXPORTING
      p_controller       = ls_cont_key
    RECEIVING
      p_includename      = lv_include
    EXCEPTIONS
      no_generation_info = 1
      OTHERS             = 2.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CALL FUNCTION 'WDY_WB_GET_SOURCECODE_MAPPING'
    EXPORTING
      p_include          = lv_include
    IMPORTING
      p_map              = lt_map[]
*   P_HEADER           =
    EXCEPTIONS
      import_error       = 1
      OTHERS             = 2.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  "READ TABLE lt_map WITH KEY meta-text = u_method.
  "READ TABLE lt_map WITH KEY code-text = u_method.
  LOOP AT lt_map WHERE code-text = u_method.            "#EC CI_SORTSEQ
  ENDLOOP.

  IF sy-subrc <> 0.
    MESSAGE 'Не удалось' TYPE 'I'.
    RETURN.
  ENDIF.

  lv_line = lt_map-line + u_line - 1.

  CALL FUNCTION 'WDY_WB_REQUEST_FOR_SOURCEPOS'
    EXPORTING
      p_include             = lv_include
      p_line                = lv_line
      p_operation           = 'DISPLAY'
    IMPORTING
      p_wb_request          = lo_req
    EXCEPTIONS
      no_corresponding_code = 1
      OTHERS                = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  APPEND lo_req TO lt_request_set.

  CALL METHOD cl_wb_startup=>start
    EXPORTING
      p_wb_request_set = lt_request_set.
*  IMPORTING
*    p_wb_error          = l_error
*  CHANGING
*    p_wb_data_container = l_container.
ENDFORM.                    "open_webdynpro

*&---------------------------------------------------------------------*
*&      Form  search_fox
*&---------------------------------------------------------------------*
*       Поиск текста в формулах FOX
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM search_fox .

  DATA: lo_srv                  TYPE REF TO cl_rsplfs_srv,
        lt_param_set_rule       TYPE TABLE OF rsplfa_s_param_set_rule,
        lt_param_tab            TYPE TABLE OF REF TO if_rsplfa_param_struc,
        lv_formula_string       TYPE string,
        lo_fline                TYPE REF TO if_rsplfa_param_elem,
        lv_line                 TYPE c LENGTH 60,
        lt_forml                TYPE rspls_ts_forml,
        lt_lines                TYPE TABLE OF string,
        lt_results              TYPE TABLE OF match_result.

  FIELD-SYMBOLS: <ls_param_set_rule>       TYPE rsplfa_s_param_set_rule,
                 <ls_param_tab>            TYPE REF TO if_rsplfa_param_struc,
                 <ls_result>               TYPE match_result,
                 <ls_forml>                TYPE rspls_s_forml.

  LOOP AT gt_fox.

    TRY.
        lo_srv = cl_rsplfs_srv=>factory( gt_fox-srvnm ).
      CATCH cx_rspls_msg_static_check .
        MESSAGE e001(00) WITH 'Ошибка cl_rsplfs_srv=>factory' gt_fox-srvnm.
    ENDTRY.

    lt_param_set_rule = lo_srv->if_rsplfa_srv~get_param_set_rules( ).
    SORT lt_param_set_rule BY rulepos.

    LOOP AT lt_param_set_rule ASSIGNING <ls_param_set_rule>.

      " Get FOX coding from parameters
      lt_param_tab = <ls_param_set_rule>-r_param_set->get_tab_param_struc( 'FORMULATAB' ).

      CLEAR lv_formula_string.
      LOOP AT lt_param_tab ASSIGNING <ls_param_tab>.
        lo_fline = <ls_param_tab>->get_comp_elem( 'FLINE' ).
        lo_fline->get_value( IMPORTING e_value = lv_line ).
        CONCATENATE lv_formula_string lv_line INTO lv_formula_string
          RESPECTING BLANKS.
      ENDLOOP.

      " Convert FOX coding and get field catalog for parsing
      lt_forml[] =  cl_rsplfc_formula=>string_to_forml_tab( lv_formula_string ).

      REFRESH lt_lines.
      LOOP AT lt_forml ASSIGNING <ls_forml>.
        APPEND <ls_forml>-fline TO lt_lines.
      ENDLOOP.

      " Find
      FIND ALL OCCURRENCES OF p_strg IN TABLE lt_lines
        IGNORING CASE
        RESULTS lt_results.

      CHECK sy-subrc = 0.

      LOOP AT lt_results ASSIGNING <ls_result>.

        CLEAR gt_found.

        gt_found-type = c_type_fox.
        gt_found-srvnm = gt_fox-srvnm.
        gt_found-line_num = <ls_result>-line.

        READ TABLE lt_lines INDEX <ls_result>-line INTO gt_found-line.

        CONCATENATE 'FOX:' gt_fox-srvnm INTO gt_found-title SEPARATED BY space.
        APPEND gt_found.
      ENDLOOP.
    ENDLOOP.
  ENDLOOP.
ENDFORM.                    " search_fox
*&---------------------------------------------------------------------*
*&      Form  open_fox_in_browser
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM open_fox_in_browser USING value(u_srvnm)    TYPE rsplf_srvnm.

  DATA: lv_iobjnm         TYPE sobj_name.

  lv_iobjnm = u_srvnm.
  cl_rspls_wdapp=>start_modeler( i_tlogo = rs_c_tlogo-planning_service
                                 i_objnm = lv_iobjnm ).
ENDFORM.                    " open_fox_in_browser


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Хочу поделиться программой поиска в ABAP-коде WebDynpro и функциях планирования FOX
СообщениеДобавлено: Сб, мар 24 2012, 22:25 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Спасибо :)
p.s.
Надо бы закинуть в "Разработки участников форума".


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Хочу поделиться программой поиска в ABAP-коде WebDynpro и функциях планирования FOX
СообщениеДобавлено: Вс, мар 25 2012, 10:18 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Besa написал:
Надо бы закинуть в "Разработки участников форума".

Закинул

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


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

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


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

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


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

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