Текущее время: Пт, май 02 2025, 06:07

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: F4IF_INT_TABLE_VALUE_REQUEST - в dump
СообщениеДобавлено: Чт, июл 28 2011, 09:21 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, июл 27 2011, 16:12
Сообщения: 12
ДВС всем. Знаю, что на форуме много тем по сабжу, но для себя не нашел ответов. Теперь собственно сама трабла.

Есть внутренняя таблица простенькая. Вывожу ее этим ФМ, если не задавать таблицу с заголовками, то все отрабатывает нормально. Но если задать заголовки с норм. русскими названиями, то при нажатии на заголовок для сортировки, падает в дапм с известным исключением ASSIGN_CAST_WRONG_TYPE.

Таблицу с заголовками field_tab заполняю вручную, либо автоматом с помощью DDIF_FIELDINFO_GET, этот ФМ не считывает параметры полей, передает нули. dynpfld_mapping тоже заполнил. Так то работает, но при сортировке бок. Где я что-то напутал или забыл?
Таблицу заголовков заполняю так:
Code:
 
CLEAR: str_field.
  str_field-tabname     = 'TBL_F4P'.
  str_field-fieldname   = 'PL'.
  str_field-offset      = 14.
  str_field-position    = 2.
  str_field-leng        = 20.
  str_field-intlen      = 40.
  str_field-outputlen   = 20.
  str_field-scrtext_s   = 'Тип выгрузки'.
  str_field-scrtext_m   = 'Тип выгрузки'.
  str_field-scrtext_l   = 'Тип выгрузки'.
  str_field-dynpfld     = 'X'.
  str_field-headlen     = 20.
  str_field-keyflag     = 1.
  str_field-f4availabl  = 1.
  str_field-fieldtext   = 'Тип выгрузки'.
  str_field-lfieldname  = 'Тип выгрузки'.
  APPEND str_field TO tbl_field.

ФМ ниже не заполняет параметры полей из моей таблички...
Code:
FORM f_fieldinfo_get USING p_tabname p_fieldname
                     CHANGING p_s_field.

  CLEAR p_s_field.
  CALL FUNCTION 'DDIF_FIELDINFO_GET'
    EXPORTING
      TABNAME        = p_tabname
      FIELDNAME      = ''
      LFIELDNAME     = p_fieldname
    IMPORTING
      DFIES_WA       = p_s_field
    EXCEPTIONS
      NOT_FOUND      = 1
      INTERNAL_ERROR = 2
      OTHERS         = 3.

ENDFORM.                    " F_FIELDINFO_GET

_________________
подпись в отпуске... в отличии от меня ;)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: F4IF_INT_TABLE_VALUE_REQUEST - в dump
СообщениеДобавлено: Чт, июл 28 2011, 10:25 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
А может все-таки информацию из дампа приведете? :?

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: F4IF_INT_TABLE_VALUE_REQUEST - в dump
СообщениеДобавлено: Чт, июл 28 2011, 10:42 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, июл 27 2011, 16:12
Сообщения: 12
Извините.
Code:
ДинамОшибка            ASSIGN_CAST_WRONG_TYPE
Дата и время           28.07.2011 10:27:34
Краткий текст
    Wrong type specified in program "SAPLSDH4".

Что произошло?
    Error in the ABAP Application Program

    The current ABAP program "SAPLSDH4" had to be terminated because it has
    come across a statement that unfortunately cannot be executed.

    The type assigned to one of the field symbols
    is not allowed.

Анализ ошибки
    In the current program "SAPLSDH4", an ASSIGN ... TYPE statement was
    used to assign an invalid ABAP/4 type.
    The type can be found in the field "<%_1_SYSINI>" and
    is " ".

Место инициации динамической ошибки:
    Программа                               SAPLSDH4
    Include                                 LSDH4F09
    Строка                                  685
    Тип модуля                              (FORM)
    Имя модуля                              SORT_IT

   662   IF first_record = 1.
   663     DESCRIBE TABLE record_tab.
   664     IF last_record = sy-tfill.
   665       IF descending IS INITIAL.
   666         fielddescr-mask+3(1) = 'A'.
   667       ELSE.
   668         fielddescr-mask+3(1) = 'D'.
   669       ENDIF.
   670       READ TABLE parlist INDEX 1.
   671       MODIFY fielddescr TRANSPORTING mask+3(1)
   672              WHERE fieldname = parlist.
   673     ENDIF.
   674   ENDIF.
   675 * Eine Zeile ist immer sortiert.
   676   CHECK first_record < last_record.
   677 * Nun die zu sortierenden Spalten in die Sortiertabelle überführen
   678   PERFORM to_sort_tab TABLES record_tab fielddescr parlist
   679                              s_tab dfies_tab
   680                       USING first_record last_record
   681                       CHANGING mark_tab.
   682   SORT dfies_tab BY position.
   683   ASSIGN s_tab-rec TO <x> CASTING.
   684 * Nun die eigentliche Sortierung durchführen.
>>>>>   do_assign: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
   686   IF descending IS INITIAL.
   687     SORT s_tab AS TEXT STABLE BY <f1> <f2> <f3> <f4> <f5> <f6> <f7>
   688                                  <f8> <f9> <f10>.
   689   ELSE.
   690     SORT s_tab AS TEXT STABLE DESCENDING
   691          BY <f1> <f2> <f3> <f4> <f5> <f6> <f7> <f8> <f9> <f10>.
   692   ENDIF.
   693 * Die Sortiertabelle in die Ursprungstabelle zurücküberführen.
   694   PERFORM from_sort_tab TABLES s_tab record_tab
   695                         USING first_record last_record
   696                         CHANGING mark_tab.
   697 ENDFORM.                    " Sort_it
   698
   699
   700 *&---------------------------------------------------------------------*
   701 *&      Form  To_sort_tab
   702 *&---------------------------------------------------------------------*
   703 *       Überträgt den zu sortierenden Inhalt der record_tab zusammen   *
   704 *       mit den Markierungen in eine sortierfähige Form.               *

_________________
подпись в отпуске... в отличии от меня ;)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: F4IF_INT_TABLE_VALUE_REQUEST - в dump
СообщениеДобавлено: Чт, июл 28 2011, 11:05 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Цитата:
Но если задать заголовки с норм. русскими названиями

Так написали как будто, если с англ. буквами то все норм? или так и есть? :)
Цитата:
Таблицу с заголовками field_tab заполняю вручную, либо автоматом с помощью DDIF_FIELDINFO_GET, этот ФМ не считывает параметры полей, передает нули. dynpfld_mapping тоже заполнил. Так то работает, но при сортировке бок.

Лучше конечно автоматом. DDIF_FIELDINFO_GET игрались с параметрами FIELDNAME/LFIELDNAME? "передает нули" это где? в смещении offset? у этого ФМ были траблы я помню.
dynpfld_mapping зачем заполнили? Вам нужно получить еще и другие значения смежных полей при выборе значения из СП? или просто до кучи? попробуйте без dynpfld_mapping.

Что еще? покажите как вызываете СП. value_org = 'S'? Также в дампе можно в отладку пройти, попробуйте там глянуть содержимое переменных во время дампа, может это натолкнет на причину? Вообще там нужно аккуратно смотреть когда каталог передаете, то есть сколько полей у Вас на входе в таблице, сколько в каталоге, с том ли порядки или в другом и тд...

upd: ноты смотрели?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: F4IF_INT_TABLE_VALUE_REQUEST - в dump
СообщениеДобавлено: Чт, июл 28 2011, 12:09 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Besa написал:
Вообще там нужно аккуратно смотреть когда каталог передаете, то есть сколько полей у Вас на входе в таблице, сколько в каталоге, с том ли порядки или в другом и тд...

+1
ошибка возникает, когда происходит чтение значений полей с 1-го по 10 из строки таблицы.
Code:
  DEFINE do_assign.
    field-symbols <f&1> type any.
    read table dfies_tab assigning <dfies> index &1.
    if sy-subrc = 0.
      perform get_type_leng using <dfies> changing t len.
      if t = 'P'.
        assign <x>+<dfies>-offset(len) to <f&1>
               type t decimals <dfies>-decimals.
      else.
        assign <x>+<dfies>-offset(len) to <f&1>
               type t.
      endif.
    endif.
  END-OF-DEFINITION.                        " Do_assign

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: F4IF_INT_TABLE_VALUE_REQUEST - в dump
СообщениеДобавлено: Чт, июл 28 2011, 12:14 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, июл 27 2011, 16:12
Сообщения: 12
Цитата:
Так написали как будто, если с англ. буквами то все норм? или так и есть?

:) Я имел ввиду, что если без каталога полей передавать там же аглицкие буквы ;).
Code:
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'PL'
      dynpprog        = sy-cprog
      dynpnr          = sy-dynnr
      dynprofield     = 'PL'
      window_title    = 'Выберете тип выгрузки'
      value_org       = 'S'
    TABLES
      value_tab       = tbl_f4p
      field_tab       = tbl_field
      return_tab      = return_tab
      dynpfld_mapping = dynpfld_mapping
    EXCEPTIONS
      PARAMETER_ERROR = 1
      NO_VALUES_FOUND = 2
    OTHERS = 3.

Цитата:
"передает нули" это где?

Нет он передает вообще одни нули. Просто не отрабатывает. Про траблы с ним прочитал полностью.
Цитата:
с параметрами FIELDNAME/LFIELDNAME?

Пробовал по всякому. Остановился на передаче только LFIELDNAME, как вы и советовали в предыдущих постах, но это ничего не дало.
dynpfld_mapping - там нужно передавать и айди в другое поле, но можно и обойтись, без него все равно не работает.
Цитата:
Также в дампе можно в отладку пройти

Да я смотрел что там с ним, вроде все норм. Но ковырять глубже времени не было. Проблема-то вроде детская. Сколько использовал этот ФМ не было такого. А тут... проблема только с передачей таблицы с полями.
Ведь так оставлять не хочется...
Изображение
Конечно дамп посмотрю хорошенько как время освободится. Может там все-таки символ поля тип имеет не ANY. Что это даст хз, но гляну. А ноты искать времени нет вообще. Спасибо за помощь.

Цитата:
+1
ошибка возникает, когда происходит чтение значений полей с 1-го по 10 из строки таблицы.

так ведь без указания полей правильно отрабатывает, кол-во полей на входе = полям в каталоге.

_________________
подпись в отпуске... в отличии от меня ;)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: F4IF_INT_TABLE_VALUE_REQUEST - в dump
СообщениеДобавлено: Чт, июл 28 2011, 12:26 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Так посмотрите, что содержиться в таблице dfies в полях inttype, intlen, outputlen, mask, offset
И что содержится в анализируемой строке s_tab-rec.

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: F4IF_INT_TABLE_VALUE_REQUEST - в dump
СообщениеДобавлено: Пт, июл 29 2011, 11:43 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, июл 27 2011, 16:12
Сообщения: 12
В общем проблему решил старым дедовским способом. Взял из дампа заполненные поля для вывода ну и заполнил также вручную. Загвоздка была все-таки в:
Code:
  str_field-DATATYPE    = 'CHAR'.
  str_field-INTTYPE     = 'C'.

этих двух строках, похоже они обязательны для заполнения, не помню точно, но раньше я вроде их указывал по-этому проблем не было. Надо не забывать. ;)

Конечный вариант выглядит так:
Code:
  str_field-tabname     = 'TBL_F4P'.
  str_field-fieldname   = 'PL'.
  str_field-position    = 2.
  str_field-offset      = 14.
  str_field-leng        = 20.
  str_field-intlen      = 40.
  str_field-outputlen   = 20.
  str_field-DATATYPE    = 'CHAR'.
  str_field-INTTYPE     = 'C'.
  str_field-REPTEXT     = 'Тип выгрузки'.
  str_field-SCRTEXT_S   = 'Тип выгрузки'.
  str_field-SCRTEXT_M   = 'Тип выгрузки'.
  str_field-SCRTEXT_L   = 'Тип выгрузки'.
  str_field-LFIELDNAME  = 'PL'.

Всем большое спасибо за помощь.

_________________
подпись в отпуске... в отличии от меня ;)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: F4IF_INT_TABLE_VALUE_REQUEST - в dump  Тема решена
СообщениеДобавлено: Вс, июл 31 2011, 12:12 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Sunflower написал(а):
Цитата:
Так написали как будто, если с англ. буквами то все норм? или так и есть?

:) Я имел ввиду, что если без каталога полей передавать там же аглицкие буквы ;).
Code:
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'PL'
      dynpprog        = sy-cprog
      dynpnr          = sy-dynnr
      dynprofield     = 'PL'
      window_title    = 'Выберете тип выгрузки'
      value_org       = 'S'
    TABLES
      value_tab       = tbl_f4p
      field_tab       = tbl_field
      return_tab      = return_tab
      dynpfld_mapping = dynpfld_mapping
    EXCEPTIONS
      PARAMETER_ERROR = 1
      NO_VALUES_FOUND = 2
    OTHERS = 3.

Цитата:
"передает нули" это где?

Нет он передает вообще одни нули. Просто не отрабатывает. Про траблы с ним прочитал полностью.
Цитата:
с параметрами FIELDNAME/LFIELDNAME?

Пробовал по всякому. Остановился на передаче только LFIELDNAME, как вы и советовали в предыдущих постах, но это ничего не дало.
dynpfld_mapping - там нужно передавать и айди в другое поле, но можно и обойтись, без него все равно не работает.
Цитата:
Также в дампе можно в отладку пройти

Да я смотрел что там с ним, вроде все норм. Но ковырять глубже времени не было. Проблема-то вроде детская. Сколько использовал этот ФМ не было такого. А тут... проблема только с передачей таблицы с полями.
Ведь так оставлять не хочется...
Изображение
Конечно дамп посмотрю хорошенько как время освободится. Может там все-таки символ поля тип имеет не ANY. Что это даст хз, но гляну. А ноты искать времени нет вообще. Спасибо за помощь.

Цитата:
+1
ошибка возникает, когда происходит чтение значений полей с 1-го по 10 из строки таблицы.

так ведь без указания полей правильно отрабатывает, кол-во полей на входе = полям в каталоге.

Так если у Вас кол-во и порядок полей в каталоге равно тому, что у Вас во вн. таблице значений СП, то есть, если Вы используете параметр field_tab, только потому, что Вас не устраивает название колонок CHAR20 и тд. Может иногда легче и целесообразнее, например в целях экономии времени, просто правильно декларировать вн. табличку
Code:
  data: begin of help_item occurs 0,
          iwerk type iflot-iwerk,
          tplnr type iflot-tplnr,
          pltxt type iflotx-pltxt,
        end of help_item.

В этом случае названия подтянуться из ЭД.

В других случаях, да, лучше заполнять каталог полей через ФМ. Кстати вот еще ФМ GET_FIELDTAB.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: F4IF_INT_TABLE_VALUE_REQUEST - в dump
СообщениеДобавлено: Ср, июн 26 2024, 07:33 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, ноя 08 2018, 14:09
Сообщения: 96
Откуда: Челябинск
Пол: Мужской
Подскажите, что означает сортировка в данном месте SORT s_tab AS TEXT STABLE BY <f1> <f2> <f3> <f4>....

Как можно сортировать таблицу по значениям ? Самое интересное, что в справке этого нету....


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

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


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

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


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

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