Текущее время: Сб, авг 02 2025, 06:08

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 19 2008, 13:10 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вс, сен 02 2007, 15:10
Сообщения: 670
Откуда: Moscow
sibrin написал:
Попробуйте определение таблицы полностью заглавными буквами написать.
Пробовали. Более опытный коллега сказал, что он на такие затыки нарывался, когда структура таблицы определена с INCLUDE и хотя бы одним следующим за ним полем. А в моем случае даже две INCLUDE.

_________________
Если кризис ведет к очищению, то удар битой по голове должен вести к просветлению. (с) Я.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 19 2008, 15:40 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Моха написал(а):
sibrin написал:
Попробуйте определение таблицы полностью заглавными буквами написать.
Пробовали. Более опытный коллега сказал, что он на такие затыки нарывался, когда структура таблицы определена с INCLUDE и хотя бы одним следующим за ним полем. А в моем случае даже две INCLUDE.


вот как объявлена табличка в моем примере, с инклудом и больше чем с одним полем после него:
Code:
DATA: BEGIN OF MAIN_DATA OCCURS 1000.
   INCLUDE STRUCTURE BKPF.
DATA:    HKONT   LIKE BSIS-HKONT,           " Счет главной книги
         SAKNR   LIKE BSEG-SAKNR,           "
         BSCHL_S LIKE BSIS-BSCHL,           " Ключ проводки дебет. поз.
         HKONT_S LIKE BSIS-HKONT,           " Счет дебет. поз.
         XNEGP_S LIKE BSIS-XNEGP,
         BSCHL_H LIKE BSIS-BSCHL,           " Ключ проводки кред. поз.
         HKONT_H LIKE BSIS-HKONT,           " Счет кред. поз.
         XNEGP_H LIKE BSIS-XNEGP,
         KUNNR LIKE BSID-KUNNR,
         KUNNR_NAME(120),
         DMBTR LIKE BSIS-DMBTR,
         WRBTR LIKE BSIS-DMBTR,
         MARK(1),
      END OF MAIN_DATA.

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 19 2008, 16:12 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Моха написал(а):
Не хочет заполняться филд-каталог по структуре, которой нет в словаре :(.
Прийдется или структуру (с суффиксами) повторить в словаре (не хочется руками поля забивать ...), или узнать способ использования функции со структурой не из словаря (а возможно ли это ...?) :(.


Потому что вы в качестве имени структуры указываете TYPE, а нужно DATA.

I_STRUCTURE_NAME = 'LS_BKPF_BSIK'

напишите, например так
DATA: BKPF_BSIK TYPE ls_bkpf_bsik.
...
I_STRUCTURE_NAME = 'BKPF_BSIK'

_________________
С уважением, VGA
Мой блог


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 20 2008, 09:30 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вс, сен 02 2007, 15:10
Сообщения: 670
Откуда: Moscow
Блин, так и подмывает попробовать переписать код и проверить! :) Но времени сейчас нет :(.

_________________
Если кризис ведет к очищению, то удар битой по голове должен вести к просветлению. (с) Я.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 20 2008, 09:42 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
vga написал(а):
Потому что вы в качестве имени структуры указываете TYPE, а нужно DATA.
+1


vga написал(а):
напишите, например так
DATA: BKPF_BSIK TYPE ls_bkpf_bsik.
...
I_STRUCTURE_NAME = 'BKPF_BSIK'

–1 :shock: :
sy-uname написал(а):


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 20 2008, 09:51 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
sibrin написал:
vga написал(а):
Потому что вы в качестве имени структуры указываете TYPE, а нужно DATA.
+1


vga написал(а):
напишите, например так
DATA: BKPF_BSIK TYPE ls_bkpf_bsik.
...
I_STRUCTURE_NAME = 'BKPF_BSIK'

–1 :shock: :
sy-uname написал(а):


Проверенный код, что у вас вызывает сомнения?

Code:
TYPE-POOLS: SLIS.
TYPES: BEGIN OF ls_bkpf_bsik.
  INCLUDE TYPE bkpf AS bkpf RENAMING WITH SUFFIX _bkpf.
  INCLUDE TYPE bsik AS bsik RENAMING WITH SUFFIX _bsik.
TYPES: END OF ls_bkpf_bsik.

DATA: LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
      BKPF_BSIK TYPE ls_bkpf_bsik.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    I_STRUCTURE_NAME = 'BKPF_BSIK'
  CHANGING
    CT_FIELDCAT = LT_FIELDCAT
  EXCEPTIONS
    INCONSISTENT_INTERFACE = 1
    PROGRAM_ERROR = 2.

_________________
С уважением, VGA
Мой блог


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 20 2008, 09:57 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
vga написал(а):
Проверенный код

Действительно, в erp2005 работает. :)
Даже когда длина строки >72 символа!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 20 2008, 10:05 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
sibrin написал:
vga написал(а):
Проверенный код

Действительно, в erp2005 работает. :)
Даже когда длина строки >72 символа!

Может потому что BKPF_BSIK опеределено в словаре как ракурс? ;-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 20 2008, 10:12 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Alex80 написал:
Может потому что BKPF_BSIK опеределено в словаре как ракурс? ;-)

+100 :) И потому что BKPF_BSIK передаётся не в I_INTERNAL_TABNAME.
А в дамп не падает на длинных строках, потому что I_PROGRAM_NAME, I_INCLNAME не указаны же :)


Последний раз редактировалось sibrin Чт, мар 20 2008, 10:16, всего редактировалось 2 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 20 2008, 10:15 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Alex80 написал:
Может потому что BKPF_BSIK опеределено в словаре как ракурс? ;-)


Да, прикол :lol:
Тогда немного по другому.

Code:
TYPE-POOLS: SLIS.
DATA: BEGIN OF wa_bkpf_bsik.
  INCLUDE STRUCTURE bkpf AS bkpf RENAMING WITH SUFFIX _bkpf.
  INCLUDE STRUCTURE bsik AS bsik RENAMING WITH SUFFIX _bsik.
DATA: END OF wa_bkpf_bsik.

DATA: LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: g_repid TYPE sy-repid.
g_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = g_repid
I_INTERNAL_TABNAME = 'WA_BKPF_BSIK'
I_INCLNAME = g_repid
CHANGING
ct_fieldcat = lt_fieldcat[]
.

_________________
С уважением, VGA
Мой блог


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 20 2008, 10:54 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
У меня только так получилось.
Code:
TYPE-POOLS: slis.
DATA:  BEGIN OF lt_bkpf_bsik OCCURS 0.
        INCLUDE STRUCTURE bkpf AS bkpf RENAMING WITH SUFFIX _bkpf.
        INCLUDE STRUCTURE bsik AS bsik RENAMING WITH SUFFIX _bsik.
DATA: END OF lt_bkpf_bsik.

DATA gv_count TYPE sy-tabix.
DATA:
  ls_fieldcat TYPE LINE OF slis_t_fieldcat_alv,
  lt_fieldcat TYPE slis_t_fieldcat_alv,
  lt_fieldcat2 TYPE slis_t_fieldcat_alv.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    i_structure_name       = 'BKPF'
  CHANGING
    ct_fieldcat            = lt_fieldcat
  EXCEPTIONS
    inconsistent_interface = 1
    program_error          = 2.

LOOP AT lt_fieldcat INTO ls_fieldcat.
  CONCATENATE ls_fieldcat-fieldname '_BKPF' INTO ls_fieldcat-fieldname.
  MODIFY lt_fieldcat FROM ls_fieldcat TRANSPORTING fieldname.
ENDLOOP.

gv_count = LINES( lt_fieldcat ).
ADD 1 TO gv_count.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    i_structure_name       = 'BSIK'
  CHANGING
    ct_fieldcat            = lt_fieldcat2
  EXCEPTIONS
    inconsistent_interface = 1
    program_error          = 2.

LOOP AT lt_fieldcat2 INTO ls_fieldcat.
  CONCATENATE ls_fieldcat-fieldname '_BSIK' INTO ls_fieldcat-fieldname.
  ADD gv_count TO ls_fieldcat-col_pos.
  MODIFY lt_fieldcat2 FROM ls_fieldcat TRANSPORTING fieldname col_pos.
ENDLOOP.

APPEND LINES OF lt_fieldcat2 TO lt_fieldcat.

SELECT
  bkpf~bukrs AS bukrs_bkpf bkpf~belnr AS  belnr_bkpf bkpf~gjahr AS gjahr_bkpf
  bsik~bukrs AS bukrs_bsik bsik~lifnr AS lifnr_bsik
  bsik~belnr AS  belnr_bsik bsik~gjahr AS gjahr_bsik
    INTO CORRESPONDING FIELDS OF TABLE lt_bkpf_bsik
    FROM bkpf
    INNER JOIN bsik
    ON bsik~bukrs = bkpf~bukrs
    AND bsik~belnr = bkpf~belnr
    AND bsik~gjahr = bkpf~gjahr
    UP TO 10 ROWS.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    it_fieldcat   = lt_fieldcat
  TABLES
    t_outtab      = lt_bkpf_bsik
  EXCEPTIONS
    program_error = 1
    OTHERS        = 2.

IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: На основании всех полей таблиц BSIK и BKPF создаю структуру. Как избежать дублей полей?
СообщениеДобавлено: Вт, июн 09 2009, 06:09 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Здравствуйте коллеги.

Ситуация: есть две программы, в каждой из них написан следующий код:
Code:
DATA: BEGIN OF OUT_TAB OCCURS 100,
            LGORT LIKE J_3RMLISTMAT-LGORT,
            SOBKZ LIKE J_3RMLISTMAT-SOBKZ,
            MAKTX LIKE J_3RMLISTMAT-MAKTX,
            YMEINS LIKE J_3RMLISTMAT-YMEINS,
            BEGREMN LIKE J_3RMLISTMAT-BEGREMN,
            XDMSHB_IN LIKE J_3RMLISTDOK-XDMSHB_IN,
            XDMSHB_OUT LIKE J_3RMLISTDOK-XDMSHB_OUT,
            ENDREMN LIKE J_3RMLISTMAT-ENDREMN,
            ENDSUM LIKE J_3RMLISTMAT-ENDSUM,
            PSPNR LIKE J_3RMLISTMATW-PSPNR,
       END OF OUT_TAB.
       
DATA: LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
       
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
   i_program_name = SY-REPID
   I_INTERNAL_TABNAME = 'OUT_TAB'
   I_INCLNAME = SY-REPID
  CHANGING
    CT_FIELDCAT = LT_FIELDCAT
  EXCEPTIONS
    INCONSISTENT_INTERFACE = 1
    PROGRAM_ERROR = 2.


В одной из программ этот код записан в инклуде, в этой программе не отрабатывает функция REUSE_ALV_FIELDCATALOG_MERGE.
В чем может быть причина?

Заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: На основании всех полей таблиц BSIK и BKPF создаю структуру. Как избежать дублей полей?
СообщениеДобавлено: Вт, июн 09 2009, 06:38 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Только что попробовал, у меня отрабатывает. А какой sy-subrc выдает ФМ, или он в дамп падает? Еще можно почитать в se37 там есть описание входных параметров. Зачем в I_INCLNAME ставить sy-repid?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: На основании всех полей таблиц BSIK и BKPF создаю структуру. Как избежать дублей полей?
СообщениеДобавлено: Вт, июн 09 2009, 06:44 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Besa написал:
Только что попробовал, у меня отрабатывает. А какой sy-subrc выдает ФМ, или он в дамп падает? Еще можно почитать в se37 там есть описание входных параметров. Зачем в I_INCLNAME ставить sy-repid?


Вообще, как я понимаю в I_INCLNAME надо ставить имя инклуда, если вставляю его ФМ вылетает в дамп: "исходный код слишком длинный", это наверно про ограничение в 72 символа, а если I_INCLNAME = sy-repid, то sy-subrc = 0.
Код с инклудом:
Code:
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
     I_PROGRAM_NAME = SY-REPID
     I_INTERNAL_TABNAME = 'T'
     I_INCLNAME = 'ZJ_3ROSVEXCELM'
    CHANGING
      CT_FIELDCAT = LT_FIELDCAT
    EXCEPTIONS
      INCONSISTENT_INTERFACE = 1
      PROGRAM_ERROR = 2.


Как победить эту проблемку?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: На основании всех полей таблиц BSIK и BKPF создаю структуру. Как избежать дублей полей?
СообщениеДобавлено: Вт, июн 09 2009, 07:06 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Не в водите ничего в I_INCLNAME, должно быть все нормально, по крайней мере у меня отрабатывает.
А где у Вас объявлена таблица Т?


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2, 3  След.

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


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

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


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

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