Текущее время: Вт, июл 29 2025, 15:46

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


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

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


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

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