Текущее время: Ср, июн 18 2025, 14:27

Часовой пояс: 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 часа


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

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


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

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