Текущее время: Чт, апр 18 2024, 22:46

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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