Текущее время: Пт, авг 01 2025, 14:50

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


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

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


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

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