Текущее время: Ср, июл 30 2025, 03:14

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 11:43 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Любаша написал(а):

Вы делаете цикл по 'хорошим ' ячейкам (mt_good_cells ).
А у меня изначально попадает в 'плохие'. Вот я и пытаюсь их сделать 'хорошими'. Как обновить протокол после занесения значения в ячейку?

Хорошо, а вот так :D
Code:
  LOOP AT er_data_changed->mt_inserted_rows INTO  ls_inserted_row .

        AT NEW row_id.

      ADD 1 TO max_anlue_num.
      CONCATENATE '$'  max_anlue_num INTO anlue.
      l_row = ls_inserted_row-row_id.
      CALL METHOD er_data_changed->modify_cell
        EXPORTING
          i_row_id    = l_row
          i_fieldname = 'ANLUE'
          i_value     = anlue.

    ENDAT.
  CALL METHOD er_data_changed->modify_cell
      EXPORTING
        i_row_id    = l_row
        i_fieldname = 'UPDKZ'
        i_value     = 'H'.

  ENDLOOP.



Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 11:50 
Гость
Lars написал:
Любаша написал(а):
Вы делаете цикл по 'хорошим ' ячейкам (mt_good_cells ).
А у меня изначально попадает в 'плохие'. Вот я и пытаюсь их сделать 'хорошими'. Как обновить протокол после занесения значения в ячейку?


Вот теперь я точно уверенн, что я не понимаю :)

mt_good_cells - у Вас пустой ?
mt_protocol - не пустой ?

Это вы protocol заполняли, или сиситема его заполнила ? Какая там ошибка ?


Протокол заполнила система. mt_good_cells не пустой, потому как в новой строке много полей. Но 'плохие' туда не попадают.
Есть ещё mt_mod_cells - это все измененные ячейки.
Есть ещё MT_DELETED_ROWS , MT_INSERTED_ROWS...
Кстати - это всё внутренние таблицы.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 11:52 
Гость
ROKO написал:
Любаша написал(а):

Вы делаете цикл по 'хорошим ' ячейкам (mt_good_cells ).
А у меня изначально попадает в 'плохие'. Вот я и пытаюсь их сделать 'хорошими'. Как обновить протокол после занесения значения в ячейку?

Хорошо, а вот так :D
Code:
  LOOP AT er_data_changed->mt_inserted_rows INTO  ls_inserted_row .

        AT NEW row_id.

      ADD 1 TO max_anlue_num.
      CONCATENATE '$'  max_anlue_num INTO anlue.
      l_row = ls_inserted_row-row_id.
      CALL METHOD er_data_changed->modify_cell
        EXPORTING
          i_row_id    = l_row
          i_fieldname = 'ANLUE'
          i_value     = anlue.

    ENDAT.
  CALL METHOD er_data_changed->modify_cell
      EXPORTING
        i_row_id    = l_row
        i_fieldname = 'UPDKZ'
        i_value     = 'H'.

  ENDLOOP.



Я так и делаю. Но не получается. Поэтому у меня и возник вопрос.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 12:02 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Любаша написал(а):
Кстати - это всё внутренние таблицы.


Ценное замечание :)

STATUS у Вас где? В протоколе или good_cells? И есть ли он там после того как отработал modify_cell.

Посмотрите в отладчике, что у Вас делает modify_cell.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 12:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Любаша написал(а):
Я так и делаю. Но не получается. Поэтому у меня и возник вопрос.


На самом деле странно :( У меня то все идет :D Нада точно посмотреть, что в modify_cell заносится, али нет. Если не заносится нада все-таки проверить что принимают следующие параметры:
Code:
CALL METHOD p_pr_data_changed->modify_cell    " Статус записи в реестре
     EXPORTING
        i_row_id    = p_l_ins_row-row_id - номер строки чему-то равен?
*            i_tabix     =
        i_fieldname = 'STATUS' -ну поле вы сами сказали такое
        i_value     = c_status - это в принципе не важно

Все таки у меня подозрение на номер вставляемой строки :D
Попробуйте типа l_row = ls_inserted_row-row_id. :D


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 13:15 
Гость
ROKO написал:
Любаша написал(а):
Я так и делаю. Но не получается. Поэтому у меня и возник вопрос.


На самом деле странно :( У меня то все идет :D Нада точно посмотреть, что в modify_cell заносится, али нет. Если не заносится нада все-таки проверить что принимают следующие параметры:
Code:
CALL METHOD p_pr_data_changed->modify_cell    " Статус записи в реестре
     EXPORTING
        i_row_id    = p_l_ins_row-row_id - номер строки чему-то равен?
*            i_tabix     =
        i_fieldname = 'STATUS' -ну поле вы сами сказали такое
        i_value     = c_status - это в принципе не важно

Все таки у меня подозрение на номер вставляемой строки :D
Попробуйте типа l_row = ls_inserted_row-row_id. :D


Спасибо, ROKO.
В отладчике, ес-но, всё давным давно и по многу раз просмотрено. Похоже, дело в другом. Щас попытаюсь кое-что сделать. Потом скажу результат.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 14:09 
Гость
Кажется, я поняла, в чём дело.

Путём сравнения данных.

У меня в новой строке около 100 полей. Методом modify_cell я меняю ... не буду считать, сколько. Много.
НО: протокол ругается только на те, значения у которых подбираются из домена. Все остальные работают, как надо.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 14:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Любаша написал(а):
Кажется, я поняла, в чём дело.

Путём сравнения данных.

У меня в новой строке около 100 полей. Методом modify_cell я меняю ... не буду считать, сколько. Много.
НО: протокол ругается только на те, значения у которых подбираются из домена. Все остальные работают, как надо.


Че то это для меня слишком сложно :D А зачем 100 полей? Их кто-то будет читать? Я понимаю там штук 30 еще куда ни шло :o


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 14:28 
Гость
ROKO написал:

Че то это для меня слишком сложно :D А зачем 100 полей? Их кто-то будет читать? Я понимаю там штук 30 еще куда ни шло :o


не только читать, но и редактировать. Правда, редактировать не все.
Такая уж задача. :roll:


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 14:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Любаша написал(а):
ROKO написал:

Че то это для меня слишком сложно :D А зачем 100 полей? Их кто-то будет читать? Я понимаю там штук 30 еще куда ни шло :o


не только читать, но и редактировать. Правда, редактировать не все.
Такая уж задача. :roll:

Кстати вопросик: у вас предусматривается удаление строк?
Если да, то как вы обошли тот момент, что в SAP сделал так, что строка сначала исчезает из GRIDA, а потом осуществляется проверка, можно ли ее вообще удалять?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 14:45 
Гость
ROKO написал:
Любаша написал(а):
ROKO написал:

Че то это для меня слишком сложно :D А зачем 100 полей? Их кто-то будет читать? Я понимаю там штук 30 еще куда ни шло :o


не только читать, но и редактировать. Правда, редактировать не все.
Такая уж задача. :roll:

Кстати вопросик: у вас предусматривается удаление строк?
Если да, то как вы обошли тот момент, что в SAP сделал так, что строка сначала исчезает из GRIDA, а потом осуществляется проверка, можно ли ее вообще удалять?


В PBO логике делаю проверку, можно или нет удалять строки, затем:

Code:
  DATA: BEGIN OF gt_naklad OCCURS 0.
          INCLUDE STRUCTURE zsalv_reestr.
  DATA: celltab TYPE lvc_t_styl.
  DATA: light TYPE c.
  DATA: END OF gt_naklad.

  DATA: ls_celltab TYPE lvc_s_styl,
        l_mode TYPE raw4.

  LOOP AT gt_naklad.
    IF gt_naklad-celltab IS INITIAL.
      l_index = sy-tabix.

      REFRESH lt_celltab.
      IF gt_naklad-ebeln IS NOT INITIAL.

         ls_celltab-style = cl_gui_alv_grid=>mc_style_no_delete_row.      " удалять эти записи нельзя!
         INSERT ls_celltab INTO TABLE pt_celltab.
         INSERT lines of зt_celltab INTO TABLE gt_naklad-celltab.
      ENDIF.
      MODIFY gt_naklad INDEX l_index.
   
    ENDIF.
  ENDLOOP.



Это то?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 14:59 
Гость
Вопрос по изменению протокола остался открытым.

Попробовала следующее:
Code:
    LOOP AT pr_data_changed->mt_inserted_rows INTO l_ins_row.
      CALL METHOD get_cell_values
        EXPORTING
          row_id          = l_ins_row-row_id
          pr_data_changed = pr_data_changed
        IMPORTING
          key             = ls_key.

* изменения в новой записи :
      APPEND ls_key TO inserted_rows.

      READ TABLE  pr_data_changed->mt_protocol INTO l_lvc_s_msg1 WITH KEY fieldname = 'STATUS' row_id = l_ins_row-row_id.
      IF sy-subrc = 0.
        DELETE pr_data_changed->mt_protocol  INDEX sy-tabix.
* проверка введенных данных по ячейкакм
        READ TABLE pr_data_changed->mt_mod_cells INTO ls_good WITH KEY fieldname = 'STATUS' row_id = l_ins_row-row_id.        " mt_good_cells
        IF sy-subrc = 0.
          ls_good-error = ' '.
          INSERT ls_good  INTO TABLE pr_data_changed->mt_good_cells .
          MODIFY pr_data_changed->mt_mod_cells FROM ls_good  INDEX sy-tabix.
        ENDIF.
      ENDIF.
*
      PERFORM novoe_ins USING  l_ins_row ls_key  pr_data_changed .        " modify_cell

    ENDLOOP.


Работает не до конца: остаётся висеть окно протокола якобы с ошибкой.
Что делать?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 15:01 
Гость
ROKO написал:
Любаша написал(а):
ROKO написал:

Че то это для меня слишком сложно :D А зачем 100 полей? Их кто-то будет читать? Я понимаю там штук 30 еще куда ни шло :o


не только читать, но и редактировать. Правда, редактировать не все.
Такая уж задача. :roll:

Кстати вопросик: у вас предусматривается удаление строк?
Если да, то как вы обошли тот момент, что в SAP сделал так, что строка сначала исчезает из GRIDA, а потом осуществляется проверка, можно ли ее вообще удалять?



Да, ещё забыла добавить:

Code:
  gs_layout-stylefname = 'CELLTAB'.
  gs_layout-cwidth_opt = 'X'.
*    gs_layout-no_toolbar = 'X'.      " это - скрытие кнопок на панели, но удалять всё равно можно.
*    gs_layout-excp_fname = p_lignam.


Code:
  CALL METHOD g_alv1->set_table_for_first_display
    EXPORTING
*      i_buffer_active      = ' '      "gs_test-buffer_active
*      i_bypassing_buffer   = ' '      "gs_test-bypassing_buffer
*      i_consistency_check  = l_consistency_check
      is_variant           = ls_vari
      i_save               = 'U'
*      i_default            = 'X'      "con_true
      i_structure_name     = czsalv
      is_layout            = gs_layout
      it_toolbar_excluding = lt_exclude
    CHANGING
      it_outtab            = gt_naklad[]
      it_fieldcatalog      = lt_fcat
      it_filter            = gt_filter.



Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 11 2007, 15:13 
Гость
Кажется заработало. Добавила проверку:

Code:
      DESCRIBE TABLE pr_data_changed->mt_protocol LINES l_i.

      IF l_i = 0.
        CALL METHOD pr_data_changed->refresh_protocol.
      ENDIF.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, май 14 2007, 07:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Любаша написал(а):
В PBO логике делаю проверку, можно или нет удалять строки, затем:

Code:
  DATA: BEGIN OF gt_naklad OCCURS 0.
          INCLUDE STRUCTURE zsalv_reestr.
  DATA: celltab TYPE lvc_t_styl.
  DATA: light TYPE c.
  DATA: END OF gt_naklad.

  DATA: ls_celltab TYPE lvc_s_styl,
        l_mode TYPE raw4.

  LOOP AT gt_naklad.
    IF gt_naklad-celltab IS INITIAL.
      l_index = sy-tabix.

      REFRESH lt_celltab.
      IF gt_naklad-ebeln IS NOT INITIAL.

         ls_celltab-style = cl_gui_alv_grid=>mc_style_no_delete_row.      " удалять эти записи нельзя!
         INSERT ls_celltab INTO TABLE pt_celltab.
         INSERT lines of зt_celltab INTO TABLE gt_naklad-celltab.
      ENDIF.
      MODIFY gt_naklad INDEX l_index.
   
    ENDIF.
  ENDLOOP.



Это то?

Оно самое :D Кстати это первый случай на форуме когда, более или менее разъяснено, как можно "правильно" удалять строки. Хотя честно немного грязненький способ, но другого к сожалению я пока тожа не нашол :(

Любаша написал(а):
Кажется заработало. Добавила проверку:
Code:
      DESCRIBE TABLE pr_data_changed->mt_protocol LINES l_i.

      IF l_i = 0.
        CALL METHOD pr_data_changed->refresh_protocol.
      ENDIF.


А че протокольчик выводится и када ваще записей нет? Странно.... :shock:


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

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


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

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


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

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