SAPфорум.RU
https://sapboard.ru/forum/

Как написать цикл в ABAP
https://sapboard.ru/forum/viewtopic.php?f=13&t=80771
Страница 1 из 2

Автор:  Alena_Fedorova [ Пт, янв 25 2013, 13:20 ]
Заголовок сообщения:  Как написать цикл в ABAP

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

Автор:  hub2002 [ Пт, янв 25 2013, 13:25 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

Наверное так:
Code:
loop at таблица1 into структура этой таблицы
  read table таблица2 into структура таблицы2 with key ключи поиска по таблице...
  if sy-sybrc = 0.
  endif.
endloop

Автор:  freed84 [ Пт, янв 25 2013, 13:31 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

Code:
loop at ALSMEX_TABLINE.
      TABIX = SY-TABIX.
     
      if ALSMEX_TABLINE-POLE1 = ALSMEX_TABLINE-POLE2.
        delete ALSMEX_TABLINE index TABIX.
      endif.
    endloop.

Автор:  Alena_Fedorova [ Пт, янв 25 2013, 14:09 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

Спасибо огромное!

Автор:  JULIA86ru [ Вс, мар 10 2013, 21:02 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

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

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

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

Автор:  Leha [ Пн, мар 11 2013, 08:51 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

можно так:
Code:
loop at it_tab into wa_tab where x = '5'.

Автор:  Leha [ Пн, мар 11 2013, 08:51 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

можно так:
Code:
loop at it_tab into wa_tab where x = '5'.

Автор:  JULIA86ru [ Пн, мар 11 2013, 12:07 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

Cпасибо

Автор:  Korvax [ Пн, мар 11 2013, 12:25 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

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

Автор:  JULIA86ru [ Пн, мар 11 2013, 18:37 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

:lol: :lol: Спасибо!!!

Автор:  Leha [ Вт, мар 12 2013, 07:53 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

прошу прощения, не увидел самого главного :oops:

Автор:  Bimit [ Пн, мар 18 2013, 06:08 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

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


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

Code:
SORT lt_tab BY x DESCENDING.
READ TABLE lt_tab ASSIGNING <fs_tab> INDEX 1.

Автор:  Korvax [ Пн, мар 18 2013, 07:19 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

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

Автор:  Bimit [ Пн, мар 18 2013, 19:27 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

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

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

можно и так

Code:
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, а как же последнее значение?
Вообще решение кажется таким:
Code:
LOOP AT lt_tab INTO ls_tab.
  IF ls_tab-x EQ '5'.
    EXIT.
  ENDIF.
ENDLOOP.


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

Автор:  Korvax [ Вт, мар 19 2013, 07:30 ]
Заголовок сообщения:  Re: Как написать цикл в ABAP

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

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

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/