Текущее время: Вт, окт 24 2017, 04:23

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Как написать цикл в ABAP
СообщениеДобавлено: Пт, янв 25 2013, 14:20 
Начинающий
Начинающий

Зарегистрирован:
Пт, янв 25 2013, 14:09
Сообщения: 2
Добрый день. Я пока очень слабая в программирование в ABAP.
Помогите мне в следующем:
У меня есть Excell файл, который загружается в систему и его значения заносятся в табличку со структурой ALSMEX_TABLINE. Мне нужно чтобы значения первого столбца этой таблицы (1) он сравнивал со значениями столбца из другой таблицы (2), в случае если значения одинаковые, он их удалил из таблицы (2).
Вопрос мне так же не ясно, как он называет столбцы в таблице (1), ведь эта таблица временная, с помощью какого оператора.
Спасибо за помощь.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Пт, янв 25 2013, 14:25 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 10:15
Сообщения: 1525
Наверное так:
Код:
loop at таблица1 into структура этой таблицы
  read table таблица2 into структура таблицы2 with key ключи поиска по таблице...
  if sy-sybrc = 0.
  endif.
endloop


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Пт, янв 25 2013, 14:31 
Менеджер
Менеджер

Зарегистрирован:
Пн, янв 28 2008, 17:56
Сообщения: 512
Откуда: Воронеж
Пол: Мужской
Код:
loop at ALSMEX_TABLINE.
      TABIX = SY-TABIX.
     
      if ALSMEX_TABLINE-POLE1 = ALSMEX_TABLINE-POLE2.
        delete ALSMEX_TABLINE index TABIX.
      endif.
    endloop.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Пт, янв 25 2013, 15:09 
Начинающий
Начинающий

Зарегистрирован:
Пт, янв 25 2013, 14:09
Сообщения: 2
Спасибо огромное!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Вс, мар 10 2013, 22:02 
Начинающий
Начинающий

Зарегистрирован:
Вс, мар 10 2013, 21:54
Сообщения: 6
Всем привет! У меня тоже вопрос про цикл. У меня есть вн таблица lt_tab . В поле lt_tab-x записаны значения, например 1,2,3,4,5. Мне надо просмотреть весь столбец x и если в нем есть значение 5 то вывести его в переменную ls_tab иначе вывести самый последний элемент в этом поле.
Код:
loop at  lt_tab
if  lt_tab-x = '5'
ls_tab = lt_tab-x
else
ls_tab = lt_tab-x
endif.
endloop.

Может как-то по другому можно?

Может надо в переменные записывать предыдущие значения столбца x?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Пн, мар 11 2013, 09:51 
Начинающий
Начинающий

Зарегистрирован:
Пн, сен 26 2011, 09:36
Сообщения: 16
Пол: Мужской
можно так:
Код:
loop at it_tab into wa_tab where x = '5'.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Пн, мар 11 2013, 09:51 
Начинающий
Начинающий

Зарегистрирован:
Пн, сен 26 2011, 09:36
Сообщения: 16
Пол: Мужской
можно так:
Код:
loop at it_tab into wa_tab where x = '5'.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Пн, мар 11 2013, 13:07 
Начинающий
Начинающий

Зарегистрирован:
Вс, мар 10 2013, 21:54
Сообщения: 6
Cпасибо


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Пн, мар 11 2013, 13:25 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 14:29
Сообщения: 356
Пол: Мужской
Leha, а как же последнее значение?
Вообще решение кажется таким:
Код:
LOOP AT lt_tab INTO ls_tab.
  IF ls_tab-x EQ '5'.
    EXIT.
  ENDIF.
ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Пн, мар 11 2013, 19:37 
Начинающий
Начинающий

Зарегистрирован:
Вс, мар 10 2013, 21:54
Сообщения: 6
:lol: :lol: Спасибо!!!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Вт, мар 12 2013, 08:53 
Начинающий
Начинающий

Зарегистрирован:
Пн, сен 26 2011, 09:36
Сообщения: 16
Пол: Мужской
прошу прощения, не увидел самого главного :oops:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Пн, мар 18 2013, 07:08 
Специалист
Специалист

Зарегистрирован:
Пн, июл 11 2011, 11:50
Сообщения: 145
Korvax писал(а):
Leha, а как же последнее значение?
Вообще решение кажется таким:
Код:
LOOP AT lt_tab INTO ls_tab.
  IF ls_tab-x EQ '5'.
    EXIT.
  ENDIF.
ENDLOOP.


Вот еще решение :D

Код:
SORT lt_tab BY x DESCENDING.
READ TABLE lt_tab ASSIGNING <fs_tab> INDEX 1.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Пн, мар 18 2013, 08:19 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 14:29
Сообщения: 356
Пол: Мужской
это не решение. пример: 1,2,3,4,5,6. => 6, а надо 5.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Пн, мар 18 2013, 20:27 
Специалист
Специалист

Зарегистрирован:
Пн, июл 11 2011, 11:50
Сообщения: 145
JULIA86ru писал(а):
Всем привет! У меня тоже вопрос про цикл. У меня есть вн таблица lt_tab . В поле lt_tab-x записаны значения, например 1,2,3,4,5. Мне надо просмотреть весь столбец x и если в нем есть значение 5 то вывести его в переменную ls_tab иначе вывести самый последний элемент в этом поле.
loop at lt_tab
if lt_tab-x = '5'
ls_tab = lt_tab-x
else
ls_tab = lt_tab-x
endif.
endloop.

Может как-то по другому можно?

Может надо в переменные записывать предыдущие значения столбца x?


Korvax писал(а):
это не решение. пример: 1,2,3,4,5,6. => 6, а надо 5.


Это у Вас 6 в примере 5 или последнее :D

А так все зависит от конкретной задачи

можно и так

Код:
SORT lt_tab BY x DESCENDING.
READ TABLE lt_tab ASSIGNING <fs_tab> WITH KEY x = '5' BINARY SEARCH.
  IF sy-subrc <> 0.
   READ TABLE lt_tab ASSIGNING <fs_tab> INDEX 1.
   ....
   ENDIF.
 


З.Ы. Ваше решение не выполняет требование

Korvax писал(а):
Leha, а как же последнее значение?
Вообще решение кажется таким:
Код:
LOOP AT lt_tab INTO ls_tab.
  IF ls_tab-x EQ '5'.
    EXIT.
  ENDIF.
ENDLOOP.


если 6 или 4 как отработает ваш код?? :roll:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как написать цикл в ABAP
СообщениеДобавлено: Вт, мар 19 2013, 08:30 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 14:29
Сообщения: 356
Пол: Мужской
Bimit писал(а):
Это у Вас 6 в примере 5 или последнее.
Вы меня не путайте, в постановке ясно сказано, если есть 5, то 5, если нету то последнее. Следовательно Ваш предыдущий код вернет максимальное и это неправильно.
Bimit писал(а):
если 6 или 4 как отработает ваш код??
Мой код как раз при наличии 5 выйдет из цикла, при отсутствии пройдет до конца, до самого последнего элемента.
Bimit писал(а):
можно и так
Тоже нельзя, Вы учтите что нигде не сказано что элементы идут по порядку, и явно сказано что нужен самый последний элемент (не обязательно максимальный).

upd. Я бы сказал что все зависит не то что от задачи, а чаще от конкретной постановки. :wink:


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

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


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

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


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

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