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 |
Спасибо!!! |
Автор: | Leha [ Вт, мар 12 2013, 07:53 ] |
Заголовок сообщения: | Re: Как написать цикл в ABAP |
прошу прощения, не увидел самого главного |
Автор: | 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. Вот еще решение 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 или последнее А так все зависит от конкретной задачи можно и так 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 как отработает ваш код?? |
Автор: | Korvax [ Вт, мар 19 2013, 07:30 ] |
Заголовок сообщения: | Re: Как написать цикл в ABAP |
Bimit написал(а): Это у Вас 6 в примере 5 или последнее. Вы меня не путайте, в постановке ясно сказано, если есть 5, то 5, если нету то последнее. Следовательно Ваш предыдущий код вернет максимальное и это неправильно.Bimit написал(а): если 6 или 4 как отработает ваш код?? Мой код как раз при наличии 5 выйдет из цикла, при отсутствии пройдет до конца, до самого последнего элемента.Bimit написал(а): можно и так Тоже нельзя, Вы учтите что нигде не сказано что элементы идут по порядку, и явно сказано что нужен самый последний элемент (не обязательно максимальный).upd. Я бы сказал что все зависит не то что от задачи, а чаще от конкретной постановки. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |