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

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


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

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


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

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