Текущее время: Ср, июл 23 2025, 10:16

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Нужно описать цикл. Помогите в синтаксисе.
СообщениеДобавлено: Пт, июл 27 2012, 07:34 
Ассистент
Ассистент

Зарегистрирован:
Пн, июл 16 2012, 14:15
Сообщения: 33
Нужно описать этот цикл:
Цитата:
В цикле по таблице ITAB выполнить следующие операции:
a. Выбрать из таблицы J_3RFTAX_OBJSEL запись (одну) по ключу HIER_KEY = ITAB-HIER_KEY, NODE_CODE = ITAB-NODE_CODE, LINENUM = ITAB-LINENUM, TABLE = ‘GLU1’, FIELDNAME = ‘RTAXOBJ’.
b. Если запись найдена, то записать поле J_3RFTAX_OBJSEL-LOW в поле ITAB-RTAXOBJ.
c. Сохранить изменение в таблице с помощью оператора MODIFY.


Не могу понять в чем разница между обычно внутренней таблицей и внутренней переменной таблицей... И как записать поле J_3RFTAX_OBJSEL-LOW в поле ITAB-RTAXOBJ, если поля ITAB-RTAXOBJ нет? Может должен создаться дополнительный столбец, который как раз будет называться RTAXOBJ?

Пока что имеется такой код:

Code:
REPORT  ZFISL_DECL_CHK.
include <icon>.

tables:  J_3RFTAX_OBJECTS, J_3RFTAX_OBJSEL.
data:       hier_key like J_3RFTAX_OBJSEL-hier_key,
            NODE_CODE like  J_3RFTAX_OBJSEL-NODE_CODE,
            RTAXOBJ like J_3RFTAX_OBJSEL-LOW,
            HIGH like J_3RFTAX_OBJSEL-HIGH,
            HSL like ZTAXREGT-HSLVT,
            LINENUM like J_3RFTAX_OBJSEL-LINENUM,
            p_itab type itab,
            itab type J_3RFTAX_OBJSEL occurs 100 with header line.

parameters: p1 like  J_3RFTAX_OBJECTS-HIER_KEY obligatory.

selection-screen skip.
SELECT-OPTIONS p2 FOR itab-NODE_CODE.
        select * from J_3RFTAX_OBJSEL
                into itab
                where NODE_CODE in p2.
        ENDSELECT.

START-OF-SELECTION.


select *   from J_3RFTAX_OBJSEL into itab
           WHERE HIER_KEY = P1 and NODE_CODE = P2 and SEQNR = '01'.
endselect.
"sy-subrc = 0.
   select single *  from J_3RFTAX_OBJSEL
      where HIER_KEY = ITAB-HIER_KEY and
      NODE_CODE = ITAB-NODE_CODE and
      LINENUM = ITAB-LINENUM and
      TABNAME = 'GLU1' and
      FIELDNAME = 'RTAXOBJ'.
      if sy-subrc = 0.
 
        write:/ itab-HIER_KEY, ITAB-NODE_CODE, itab-LOW, itab-HIGH,  itab-LINENUM.
      else.
      write 'Запись не найдена'.
      endif.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Нужно описать цикл. Помогите в синтаксисе.
СообщениеДобавлено: Пт, июл 27 2012, 08:23 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
1)
Code:
       select * from J_3RFTAX_OBJSEL
                into itab
                where NODE_CODE in p2.
        ENDSELECT.

в описании экрана этот код зачем нужен?
2)
Code:
select *   from J_3RFTAX_OBJSEL into itab
           WHERE HIER_KEY = P1 and NODE_CODE = P2 and SEQNR = '01'.
endselect.

P2 описана как select-options, поэтому писать NODE_CODE = P2 некорректно, нужно NODE_CODE in P2
3) у вас табличка itab всегда будет пустой
Code:
itab type J_3RFTAX_OBJSEL occurs 100 [b]with header line[/b].

то есть itab это строка таблицы itab[] (лучше описывать отдельно таблицу и переменную для строки, чтобы не путаться)
Code:
DATA: itab type STANDARD TABLE OF J_3RFTAX_OBJSEL,
         l_itab LIKE LINE OF itab.

если даже оставлять как есть with header line, то нужно в
Code:
       select * from J_3RFTAX_OBJSEL
                into itab
                where NODE_CODE in p2.
        ENDSELECT.

добавить APPEND itab
Code:
       select * from J_3RFTAX_OBJSEL
                into itab
                where NODE_CODE in p2.
                APPEND itab.
        ENDSELECT.

4) вобще неясно зачем столько сложностей для выборки в 1 Select.
5)
Цитата:
И как записать поле J_3RFTAX_OBJSEL-LOW в поле ITAB-RTAXOBJ, если поля ITAB-RTAXOBJ нет?

логично было бы предположить, что раз такого поля нет, то и записать в него никак нельзя.
чем поле itab-low (аналогичное J_3RFTAX_OBJSEL-LOW) не устраивает?
6) я бы написал как-то так
Code:
REPORT  ZFISL_DECL_CHK.
INCLUDE <icon>.

DATA:
            itab TYPE STANDARD TABLE OF j_3rftax_objsel,
            l_itab LIKE LINE OF itab.

PARAMETERS: p1 LIKE  j_3rftax_objects-hier_key OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS p2 FOR l_itab-node_code.

START-OF-SELECTION.

  SELECT *   FROM j_3rftax_objsel INTO CORRESPONDING FIELDS OF TABLE itab
             WHERE hier_key = p1
             AND node_code IN p2
             AND seqnr = '01'
             AND tabname = 'GLU1'
             AND fieldname = 'RTAXOBJ'
              .
  IF sy-subrc = 0.
    LOOP AT itab INTO l_itab.
      WRITE:/ l_itab.
    ENDLOOP.
  ELSE.
    WRITE 'Запись не найдена'.
  ENDIF.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужно описать цикл. Помогите в синтаксисе.
СообщениеДобавлено: Пт, июл 27 2012, 10:23 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
1. откуда взялось понятие внутренней переменной таблицы? по сути все внутренние таблицы можно считать переменными
2. судя по тому тексту задачи, что вы привели - уже есть какая -то таблица itab, где видимо это поле есть, если другого не оговорено в ТЗ, и просто предполагается изменить эту таблицу обновив поле RTAXOBJ.

И вообще, если возникают такие непонятки, то лучше уточнить спорные моменты у постановщика ТЗ, а не гадать на кофейной гуще.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужно описать цикл. Помогите в синтаксисе.
СообщениеДобавлено: Пт, июл 27 2012, 12:06 
Ассистент
Ассистент

Зарегистрирован:
Пн, июл 16 2012, 14:15
Сообщения: 33
Ребята, спасибо! Помогли! Просто на самом деле я только недельку стажируюсь. И тут вот такое. Растерялась.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Нужно описать цикл. Помогите в синтаксисе.
СообщениеДобавлено: Пт, июл 27 2012, 12:09 
Ассистент
Ассистент

Зарегистрирован:
Пн, июл 16 2012, 14:15
Сообщения: 33
bossjohn написал(а):
1. откуда взялось понятие внутренней переменной таблицы? по сути все внутренние таблицы можно считать переменными
2. судя по тому тексту задачи, что вы привели - уже есть какая -то таблица itab, где видимо это поле есть, если другого не оговорено в ТЗ, и просто предполагается изменить эту таблицу обновив поле RTAXOBJ.

И вообще, если возникают такие непонятки, то лучше уточнить спорные моменты у постановщика ТЗ, а не гадать на кофейной гуще.



Мой руководитель пока что не скоро увижу. А это задание нужно сделать до его приезда. :(


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Нужно описать цикл. Помогите в синтаксисе.
СообщениеДобавлено: Пт, июл 27 2012, 13:14 
Ассистент
Ассистент

Зарегистрирован:
Пн, июл 16 2012, 14:15
Сообщения: 33
Теперь не получается корректно вписать в код операнд modify.

Code:
REPORT  ZFISL_DECL_CHK.
INCLUDE <icon>.
tables: J_3RFTAX_OBJSEL, j_3rftax_objects.

DATA: "itab type J_3RFTAX_OBJSEL occurs 100,
   begin of itab,
            hier_key like J_3RFTAX_OBJSEL-hier_key,
            NODE_CODE like  J_3RFTAX_OBJSEL-NODE_CODE,
            RTAXOBJ like J_3RFTAX_OBJSEL-LOW,
            HIGH like J_3RFTAX_OBJSEL-HIGH,
            HSL like ZTAXREGT-HSLVT,
            LINENUM like J_3RFTAX_OBJSEL-LINENUM,
  end of itab.
    data: l_itab like itab occurs 100.
PARAMETERS: p1 LIKE  j_3rftax_objects-hier_key OBLIGATORY.
SELECT-OPTIONS p2 FOR J_3RFTAX_OBJSEL-NODE_CODE.

START-OF-SELECTION.

  SELECT *   FROM j_3rftax_objsel INTO CORRESPONDING FIELDS OF TABLE l_itab
             WHERE hier_key = p1
             AND node_code IN p2
             AND seqnr = '02'
             AND tabname = 'GLU1'
             AND fieldname = 'RTAXOBJ'.
   "and LINENUM = ITAB-LINENUM.
  "read table itab.
  IF sy-subrc = 0.
    LOOP AT l_itab INTO itab.
      J_3RFTAX_OBJSEL-LOW = itab-RTAXOBJ.
     "modify itab.
     WRITE:/ itab-hier_key, itab-NODE_CODE, itab-RTAXOBJ, itab-HIGH, itab-HSL, itab-LINENUM.
  ENDLOOP.
  ELSE.
    WRITE 'Запись не найдена'.

  ENDIF.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Нужно описать цикл. Помогите в синтаксисе.
СообщениеДобавлено: Пт, июл 27 2012, 13:25 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322
Modify <Таблица для обновления> from <Чем обновляем>


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужно описать цикл. Помогите в синтаксисе.  Тема решена
СообщениеДобавлено: Пт, июл 27 2012, 13:52 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
Внимательно почитайте хелп по используемым операторам
если Вы пишете
Code:
SELECT *   FROM j_3rftax_objsel INTO CORRESPONDING FIELDS OF TABLE l_itab
, это значит что будут заполняться поля внутренней таблицы, которые совпадают по имени
так как поля RTAXOBJ в таблице j_3rftax_objsel нет, то в l_itab оно ничем не заполнится
HSL аналогично
И когда делаете
Code:
LOOP AT l_itab INTO itab.
, то внутри цикла нужна менять itab (типа itab-RTAXOBJ = чему-нибудь), а потом
Code:
MODIFY l_itab FROM itab.

в чем глубинный смысл названия поля RTAXOBJ и связанного с ним гемороя?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужно описать цикл. Помогите в синтаксисе.
СообщениеДобавлено: Пт, июл 27 2012, 16:35 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322
Мне кажется это психологический тест,
через неделю на форуме появится похожая тема от пользователя с мужским ником и в ней будет 0 ответов


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужно описать цикл. Помогите в синтаксисе.
СообщениеДобавлено: Пт, июл 27 2012, 17:02 
Ассистент
Ассистент

Зарегистрирован:
Пн, июл 16 2012, 14:15
Сообщения: 33
LELUK написал(а):
Мне кажется это психологический тест,
через неделю на форуме появится похожая тема от пользователя с мужским ником и в ней будет 0 ответов



Не появится. И это не психологический тест) Увы и ах.
С программированием у меня обстоят дела так себе. А тут приходится изучать литературу на английском. Еще один барьер. Языковой. Не правильно переведенное слово и трудности с прогой.
И вообще, я только неделю в сапе. И пришла консультантом, а не абапером.
Обычно за это время читают-читают-читают. А у меня идет распараллеливание процесса. :)
Вот к чему это приводит.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Нужно описать цикл. Помогите в синтаксисе.
СообщениеДобавлено: Пт, июл 27 2012, 17:08 
Ассистент
Ассистент

Зарегистрирован:
Пн, июл 16 2012, 14:15
Сообщения: 33
Цитата:
в чем глубинный смысл названия поля RTAXOBJ и связанного с ним гемороя?


Не задумывалась) Спрошу уже в понедельник... :oops:


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Нужно описать цикл. Помогите в синтаксисе.
СообщениеДобавлено: Пт, июл 27 2012, 17:09 
Ассистент
Ассистент

Зарегистрирован:
Пн, июл 16 2012, 14:15
Сообщения: 33
MantiCore1977, спасибо за терпение :wink:


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

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


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

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


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

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