Текущее время: Вт, июн 24 2025, 12:15

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Abap в экспертной рутине
СообщениеДобавлено: Пн, окт 05 2015, 14:49 
Ассистент
Ассистент

Зарегистрирован:
Пт, июл 29 2011, 11:43
Сообщения: 47
Добрый день.

Буду благодарен за любой совет.

мне нужно проверять 80 столбцов
Можно ли это сделать динамично?

Огромное спасибо
Code:

LOOP AT SOURCE_PACKAGE ASSIGNING <source_fields>.
      IF <source_fields>-zzabrsn001 <> ''.
        RESULT_FIELDS-/bic/zrvk_mita = <source_fields>-objid.
        RESULT_FIELDS-/bic/zrvk_abre = <source_fields>-zzabrsn001.
        APPEND RESULT_FIELDS TO RESULT_PACKAGE.
        CLEAR RESULT_FIELDS.
      ENDIF.
      IF <source_fields>-zzabrsn002 <> ''.
        RESULT_FIELDS-/bic/zrvk_mita = <source_fields>-objid.
        RESULT_FIELDS-/bic/zrvk_abre = <source_fields>-zzabrsn002.
        APPEND RESULT_FIELDS TO RESULT_PACKAGE.
        CLEAR RESULT_FIELDS.
      ENDIF.
      IF <source_fields>-zzabrsn003 <> ''.
        RESULT_FIELDS-/bic/zrvk_mita = <source_fields>-objid.
        RESULT_FIELDS-/bic/zrvk_abre = <source_fields>-zzabrsn003.
        APPEND RESULT_FIELDS TO RESULT_PACKAGE.
        CLEAR RESULT_FIELDS.
      ENDIF.
      IF <source_fields>-zzabrsn004 <> ''.
        RESULT_FIELDS-/bic/zrvk_mita = <source_fields>-objid.
        RESULT_FIELDS-/bic/zrvk_abre = <source_fields>-zzabrsn004.
        APPEND RESULT_FIELDS TO RESULT_PACKAGE.
        CLEAR RESULT_FIELDS.
      ENDIF.
     ...
     ...
     IF <source_fields>-zzabrsn080 <> ''.
        RESULT_FIELDS-/bic/zrvk_mita = <source_fields>-objid.
        RESULT_FIELDS-/bic/zrvk_abre = <source_fields>-zzabrsn080.
        APPEND RESULT_FIELDS TO RESULT_PACKAGE.
        CLEAR RESULT_FIELDS.
      ENDIF.
    ENDLOOP.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Abap в экспертной рутине
СообщениеДобавлено: Пн, окт 05 2015, 15:00 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
assign component of structure вам в руки. А тому, кто такое спроектировал, возможно, руки надо оторвать


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Abap в экспертной рутине
СообщениеДобавлено: Пн, окт 05 2015, 16:02 
Ассистент
Ассистент

Зарегистрирован:
Пт, июл 29 2011, 11:43
Сообщения: 47
спасибо.

но как это примерно должно выглядеть?

DO 80 TIMES.
я себе представлял это так:
IF <source_fields>-zzabrsn00.<SY-index> <> '' ???

ENDDO.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Abap в экспертной рутине
СообщениеДобавлено: Вт, окт 06 2015, 08:21 
Ассистент
Ассистент

Зарегистрирован:
Пт, июл 29 2011, 11:43
Сообщения: 47
Мурмур, Огромное спасибо !!!

решение

Code:
    FIELD-SYMBOLS: <fs> TYPE any.
    BREAK-POINT.
    SORT SOURCE_PACKAGE BY objid ASCENDING.

    DATA: int TYPE i.

    LOOP AT SOURCE_PACKAGE ASSIGNING <source_fields>.
      int = 18. "начиная с 18 столбца через один находятся данные
      DO.
        IF int = 178. "DataSource состоит из 178 столбцов
          EXIT.
        ENDIF.
        ASSIGN COMPONENT int OF STRUCTURE <source_fields> TO <fs>.
        IF <fs> <> ''.
          RESULT_FIELDS-/bic/zrvk_mita = <source_fields>-objid.
          RESULT_FIELDS-datefrom  = <source_fields>-begda.
          RESULT_FIELDS-dateto  = <source_fields>-endda.
          RESULT_FIELDS-/bic/zrvk_itsn = <source_fields>-seqnr.
          RESULT_FIELDS-/bic/zrvk_grun = <source_fields>-reasn.
          RESULT_FIELDS-/bic/zrvk_abre = <fs>.
          APPEND RESULT_FIELDS TO RESULT_PACKAGE.
          CLEAR RESULT_FIELDS.
        ENDIF.
        int = int + 2. " начиная с 18 столбца через один находятся данные
      ENDDO.
    ENDLOOP.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Abap в экспертной рутине
СообщениеДобавлено: Вт, окт 06 2015, 08:28 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
тут, имхо, больше подходит:
Code:
do 80 times varying lv_var from <source_fields>-zzabrsn001 next <source_fields>-zzabrcsn002.
...
enddo.


при изменении структуры не надо будет менять цифру 18 хотя бы


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Abap в экспертной рутине
СообщениеДобавлено: Вт, окт 06 2015, 13:30 
Ассистент
Ассистент

Зарегистрирован:
Пт, июл 29 2011, 11:43
Сообщения: 47
holocron спасибо!

проблема в том, что в DataSoruce колонки <source_fields>-zzabrsn001... <source_fields>-zzabrsn001 находятся через одну...

а вот в другом проекте - то через одну, то через 3. Что можно в этом случае сделать???

заранее благодарен


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Abap в экспертной рутине  Тема решена
СообщениеДобавлено: Вт, окт 06 2015, 15:08 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
схематично

Code:
DO 80 TIMES.
  DATA:
    index TYPE n LENGTH 3,
    field_name TYPE string.

  index = sy-index.
  CONCATENATE 'ZZABRSN' index INTO field_name.
 
  ASSIGN COMPONENT field_name OF STRUCTURE <source_fields> TO <fs>.
  ...
ENDDO.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

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


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

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


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

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