SAPфорум.RU
https://sapboard.ru/forum/

Дамп при суммировании по столбцу
https://sapboard.ru/forum/viewtopic.php?f=13&t=97045
Страница 1 из 2

Автор:  sonics [ Вт, ноя 13 2018, 14:26 ]
Заголовок сообщения:  Дамп при суммировании по столбцу

Здравствуйте.
Название ошибки MESSAGE_TYPE_X

Ниже мой код ПБО
Code:
MODULE PBO OUTPUT.
  SET PF-STATUS 'MRP5_VS_12'.
   SET TITLEBAR 'MRP5_VS_12'.

PERFORM get_fieldcatalog." using 'ZPP_COPYDATA_MRP5_VS_12'.

   IF G_CUSTOM_CONTAINER IS INITIAL.
    CREATE OBJECT G_CUSTOM_CONTAINER
            EXPORTING CONTAINER_NAME = G_CONTAINER.
    CREATE OBJECT GRID1
           EXPORTING I_PARENT = G_CUSTOM_CONTAINER.

*   связиваем "обработчик" событий с "гридом"
        SET HANDLER lcl_events=>on_toolbar         FOR GRID1.
        SET HANDLER lcl_events=>on_user_command    FOR GRID1.
        SET HANDLER lcl_events=>on_mouse_dbl_click FOR GRID1.
        SET HANDLER lcl_events=>on_after_user_command FOR GRID1.

        CALL METHOD GRID1->register_edit_event "After return key
      EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_enter.

      CALL METHOD GRID1->register_edit_event "cursor is moved to another field
        EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_modified.

    CLEAR: gt_excluding.
    APPEND cl_gui_alv_grid=>mc_fc_info  TO gt_excluding.

    clear gs_layout.
    gs_layout-edit = 'X'.
    gs_layout-stylefname = 'CELLTAB'.
    gs_layout-ctab_fname = 'CELLCOLOR'.
    gs_variant-handle = 1.


    gs_variant-username = sy-uname.
    gs_variant-report   = sy-repid.

    gs_layout-no_rowmark = ''.
    gs_layout-cwidth_opt = 'X'.
    gs_layout-sel_mode   = ' '.
    gs_layout-numc_total = 'X'.


    PERFORM init_style.


    CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
         EXPORTING  "I_STRUCTURE_NAME = 'GS_RESULT_TAB'
*                    IT_FIELDCATALOG = gt_fieldcat[] "название каталога полей
                    it_toolbar_excluding = gt_excluding
                    is_variant           = gs_variant
                    is_layout = gs_layout
                    i_save               = 'A'
                    i_default            = 'X'
         CHANGING   it_outtab        = gt_result_tab
                    it_filter            = gt_filter[]
                    it_sort              = gt_sort[]
                    it_fieldcatalog = gt_fieldcat.
  ENDIF.
ENDMODULE.

То, что дамп пишет, где оишбка
Цитата:
Программа - SAPLSLVC
Include - LSLVCF01
Строка - 924
Имя модуля - LINE_OUT_NEW_2


Не совсем понимаю куда мне смотреть, подскажите пожалуйста.

Автор:  Besa [ Вт, ноя 13 2018, 14:34 ]
Заголовок сообщения:  Re: Вылетает в дамп при суммировании по столбцу

sonics написал(а):
Здравствуйте.

Code:
MODULE PBO OUTPUT.
  SET PF-STATUS 'MRP5_VS_12'.
   SET TITLEBAR 'MRP5_VS_12'.

PERFORM get_fieldcatalog." using 'ZPP_COPYDATA_MRP5_VS_12'.

   IF G_CUSTOM_CONTAINER IS INITIAL.
    CREATE OBJECT G_CUSTOM_CONTAINER
            EXPORTING CONTAINER_NAME = G_CONTAINER.
    CREATE OBJECT GRID1
           EXPORTING I_PARENT = G_CUSTOM_CONTAINER.

*   связиваем "обработчик" событий с "гридом"
        SET HANDLER lcl_events=>on_toolbar         FOR GRID1.
        SET HANDLER lcl_events=>on_user_command    FOR GRID1.
        SET HANDLER lcl_events=>on_mouse_dbl_click FOR GRID1.
        SET HANDLER lcl_events=>on_after_user_command FOR GRID1.

        CALL METHOD GRID1->register_edit_event "After return key
      EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_enter.

      CALL METHOD GRID1->register_edit_event "cursor is moved to another field
        EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_modified.

    CLEAR: gt_excluding.
    APPEND cl_gui_alv_grid=>mc_fc_info  TO gt_excluding.

    clear gs_layout.
    gs_layout-edit = 'X'.
    gs_layout-stylefname = 'CELLTAB'.
    gs_layout-ctab_fname = 'CELLCOLOR'.
    gs_variant-handle = 1.


    gs_variant-username = sy-uname.
    gs_variant-report   = sy-repid.

    gs_layout-no_rowmark = ''.
    gs_layout-cwidth_opt = 'X'.
    gs_layout-sel_mode   = ' '.
    gs_layout-numc_total = 'X'.


    PERFORM init_style.


    CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
         EXPORTING  "I_STRUCTURE_NAME = 'GS_RESULT_TAB'
*                    IT_FIELDCATALOG = gt_fieldcat[] "название каталога полей
                    it_toolbar_excluding = gt_excluding
                    is_variant           = gs_variant
                    is_layout = gs_layout
                    i_save               = 'A'
                    i_default            = 'X'
         CHANGING   it_outtab        = gt_result_tab
                    it_filter            = gt_filter[]
                    it_sort              = gt_sort[]
                    it_fieldcatalog = gt_fieldcat.
  ENDIF.
ENDMODULE.


Не совсем понимаю куда мне смотреть, подскажите пожалуйста.


Читать дамп и смотреть стандартные примеры, тем более что их масса.

P.S. на что Вы рассчитываете создавая такие вот темы? :roll:

Автор:  sonics [ Вт, ноя 13 2018, 14:51 ]
Заголовок сообщения:  Re: Вылетает в дамп при суммировании по столбцу

Besa написал:
P.S. на что Вы рассчитываете создавая такие вот темы? :roll:

честно, на любой ответ, который хотя бы направит
сел, увидел дамп и не могу понять по какой причине вообще такое может произойти и куда смотреть.
В этой ситуации нашел единственное решение, чтобы кто-нибудь куда-нибудь пнул в нужную сторону, хотя бы мыслью... чтобы я пошел туда и искал там ответ)
в целом вы замечательно справились с этой задачей :) Ладно, буду пробовать искать проблему дальше :(
p.s. я на стандартных примерах вырос :D и дамп почитал....

Автор:  sonics [ Вт, ноя 13 2018, 15:46 ]
Заголовок сообщения:  Re: Вылетает в дамп при суммировании по столбцу

что-то не так с моим каталогом . . . не совсем понимаю, что именно с ним не так :(
ну что ж, буду искать)

Автор:  pberezin [ Вт, ноя 13 2018, 15:59 ]
Заголовок сообщения:  Re: Вылетает в дамп при суммировании по столбцу

филдкат надеюсь формируете стандартным ФМом (на основе словарной структуры)? Не аппендами в коде?

А что мешает точку останова влепить в коде ALV-грида, непосредственно перед местом дампа, - обычно там цикл конверсии данных, и видно, о какое поле спотыкается.

Автор:  sonics [ Вт, ноя 13 2018, 16:04 ]
Заголовок сообщения:  Re: Вылетает в дамп при суммировании по столбцу

pberezin написал:
филдкат надеюсь формируете стандартным ФМом (на основе словарной структуры)? Не аппендами в коде?

А что мешает точку останова влепить в коде ALV-грида, непосредственно перед местом дампа, - обычно там цикл конверсии данных, и видно, о какое поле спотыкается.

так спотыкается только при нажатии на суммирование, это тупо 5 полей, на каждом из них стопится.
я сразу и думал поставить точку прерывания. но что я там увижу? что оно сейчас стопится?

про стандартный ФМ не понял, предоставлю объявление
Code:
TABLES: zppmrp5, zppmrp5_12, mard, makt.
TYPES:
     BEGIN OF ty_mpr5vs12,"gt_result_tab,
      datuv TYPE zppmrp5_tmp1-datuv, "Дата
      seqnr TYPE zppmrp5-seqnr, "Порядковый номер
      matnr TYPE zppmrp5-matnr,    "Изделие
      werks_1 TYPE zppmrp5-werks_1, "Завод
      matnr_1 TYPE zppmrp5-matnr_1, "ДСЕ
      matnr_2 TYPE zppmrp5-matnr_2, "УЗЕЛ
      maktg TYPE zpp_result_tab_mpr5vs12-maktg, "Название материала большими буквами для кода поиска
      lgort_1 TYPE zppmrp5-lgort_1, "Склад отправитель
      lgort_2 TYPE zppmrp5-lgort_2, "Склад получатель
      arbpl_1 TYPE zppmrp5-arbpl_1, "Цех изготовитель
      arbpl_2 TYPE zppmrp5-arbpl_2, "Цех потребитель
      gamng_td TYPE zppmrp5-gamng, "Нормативная потребность
      gamng_1_td TYPE zppmrp5_12-gamng, "Нормативная потребность за прошедший период
      gamng_ld TYPE zppmrp5-gamng_1, "Подать в цех-потребитель(месяц)
      gamng_1_ld TYPE zppmrp5_12-gamng_1, "Подать в цех-потребитель(месяц) за прошедший период
      pbdnr TYPE zppmrp5-pbdnr, "Номер плана потребности
      zbesk TYPE zppmrp5-zbesk, "Вид заготовки в концерне
      elevel TYPE zppmrp5-elevel, "Уровень при разузловании
      ia TYPE zppmrp5-ia, "Внутренний узел (индикатор)
      id TYPE icon_d,"zppmrp5-id, "ID
      count TYPE zppmrp5-ch, "Счетчик
      celltab TYPE lvc_t_styl,
      cellcolor TYPE lvc_t_scol,
     END OF ty_mpr5vs12."gt_result_tab.

DATA: gt_result_tab TYPE TABLE OF ty_mpr5vs12.

DATA:
  go_navigation_profile TYPE REF TO if_navp.
DATA: ok_code LIKE sy-ucomm,
      g_container TYPE scrfname VALUE 'GRID1',
      grid1  TYPE REF TO cl_gui_alv_grid,
      gt_fieldcat TYPE lvc_t_fcat," каталог полей
      gs_layout TYPE lvc_s_layo, " layout для строк документа
      gs_variant      TYPE disvariant,
      gt_excluding    TYPE ui_functions,
      gt_sort         TYPE lvc_t_sort,
      gs_sort         TYPE lvc_s_sort,
      gt_filter       TYPE lvc_t_filt,
      gs_filter       TYPE lvc_s_filt,
      gt_okcode       TYPE navp_t_okcode,


      ls_alv_cell_style TYPE lvc_s_styl,
      it_alv_style_list TYPE lvc_t_styl,
      ls_alv_cell_color TYPE lvc_s_scol,
      it_alv_color_list TYPE lvc_t_scol,
      g_custom_container TYPE REF TO cl_gui_custom_container.
DATA l_elevel LIKE zppmrp5-elevel.
RANGES r_elevel FOR l_elevel.

FIELD-SYMBOLS: <fs_fieldcat> TYPE lvc_s_fcat,
               <gs_result_tab> LIKE LINE OF gt_result_tab.


селекшн скрины пропускаю и селекты сами
Code:
CALL SCREEN 101.

FORM get_fieldcatalog.
  FIELD-SYMBOLS:
    <fs_fcat> LIKE LINE OF gt_fieldcat.

  CLEAR gt_fieldcat[].
  "Получаем FIELD-каталог по структуре-------------------
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name       = 'ZPP_RESULT_TAB_MPR5VS12'
      i_bypassing_buffer     = 'X'
    CHANGING
      ct_fieldcat            = gt_fieldcat
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.

  "Редактируем FIELD-каталог-----------------------
  LOOP AT gt_fieldcat ASSIGNING <fs_fieldcat>.
    <fs_fieldcat>-col_opt = 'X'.
  ENDLOOP.
ENDFORM.                    " GET_FIELDCATALOG

FORM init_style.
  LOOP AT gt_result_tab ASSIGNING <gs_result_tab>.
    CLEAR: <gs_result_tab>-celltab, it_alv_style_list, <gs_result_tab>-cellcolor, it_alv_color_list, ls_alv_cell_color.
    "LOOP AT gt_fieldcat[] ASSIGNING <fs_fieldcat>.
    LOOP AT gt_fieldcat ASSIGNING <fs_fieldcat>.
      ls_alv_cell_style-fieldname = <fs_fieldcat>-fieldname.
      ls_alv_cell_style-style = cl_gui_alv_grid=>mc_style_disabled."mc_style_enabled.
      <fs_fieldcat>-col_opt = 'X'.
      INSERT ls_alv_cell_style INTO TABLE it_alv_style_list.
    ENDLOOP.
    CLEAR: ls_alv_cell_color,it_alv_color_list.
    IF  <gs_result_tab>-gamng_td IS NOT INITIAL.
      ls_alv_cell_color-fname = 'GAMNG_TD'. "gamng_td
      ls_alv_cell_color-color-col = '2'.  "color code 1-7, if outside rage defaults to 7
      ls_alv_cell_color-color-int = '1'.  "1 = Intensified on, 0 = Intensified off
      ls_alv_cell_color-color-inv = '0'.  "1 = text colour, 0 = background colour
      APPEND ls_alv_cell_color TO it_alv_color_list.
    ENDIF.
    IF  <gs_result_tab>-gamng_ld IS NOT INITIAL.
      ls_alv_cell_color-fname = 'GAMNG_LD'."gamng_ld
      ls_alv_cell_color-color-col = '0'.  "color code 1-7, if outside rage defaults to 7
      ls_alv_cell_color-color-int = '1'.  "1 = Intensified on, 0 = Intensified off
      ls_alv_cell_color-color-inv = '0'.  "1 = text colour, 0 = background colour
      APPEND ls_alv_cell_color TO it_alv_color_list.
    ENDIF.
    IF  <gs_result_tab>-gamng_1_td IS NOT INITIAL.
      ls_alv_cell_color-fname = 'GAMNG_1_TD'.               "gamng_1_td
      ls_alv_cell_color-color-col = '2'.  "color code 1-7, if outside rage defaults to 7
      ls_alv_cell_color-color-int = '1'.  "1 = Intensified on, 0 = Intensified off
      ls_alv_cell_color-color-inv = '0'.  "1 = text colour, 0 = background colour
      APPEND ls_alv_cell_color TO it_alv_color_list.
    ENDIF.
    IF  <gs_result_tab>-gamng_1_ld IS NOT INITIAL.
      ls_alv_cell_color-fname = 'GAMNG_1_LD'.               "gamng_1_ld
      ls_alv_cell_color-color-col = '0'.  "color code 1-7, if outside rage defaults to 7
      ls_alv_cell_color-color-int = '1'.  "1 = Intensified on, 0 = Intensified off
      ls_alv_cell_color-color-inv = '0'.  "1 = text colour, 0 = background colour
      APPEND ls_alv_cell_color TO it_alv_color_list.
    ENDIF.

    IF it_alv_color_list IS NOT INITIAL.
      APPEND LINES OF it_alv_color_list TO <gs_result_tab>-cellcolor.
    ENDIF.
    APPEND LINES OF it_alv_style_list TO <gs_result_tab>-celltab.
  ENDLOOP.
ENDFORM.           

Автор:  Kuranov.Dmitry [ Вт, ноя 13 2018, 16:08 ]
Заголовок сообщения:  Re: Вылетает в дамп при суммировании по столбцу

Запускаете программу. нажимаете суммирование. получаете дамп. наверх будет кнопка отладчик. покажет где упал.

могу предположить пытаетесь строки суммировать

Автор:  Kuranov.Dmitry [ Вт, ноя 13 2018, 16:11 ]
Заголовок сообщения:  Re: Вылетает в дамп при суммировании по столбцу

У вас gt_result_tab типа ty_mpr5vs12

а филд каталог строите по типу ZPP_RESULT_TAB_MPR5VS12.

соответственно филд каталог не соответствует таблице алв.

Автор:  sonics [ Вт, ноя 13 2018, 16:42 ]
Заголовок сообщения:  Re: Вылетает в дамп при суммировании по столбцу

Kuranov.Dmitry написал(а):
У вас gt_result_tab типа ty_mpr5vs12

а филд каталог строите по типу ZPP_RESULT_TAB_MPR5VS12.

соответственно филд каталог не соответствует таблице алв.

i_structure_name = 'ZPP_RESULT_TAB_MPR5VS12'
структура же только имеет название как ZPP_RESULT_TAB_MPR5VS12
больше нигде нет ничего по ней, а везде я обращаюсь через gt_result_tab
Code:
FORM get_fieldcatalog.
  FIELD-SYMBOLS:
    <fs_fcat> LIKE LINE OF gt_fieldcat."[]. "gt_fieldcat[]

  CLEAR gt_fieldcat[].
  "Получаем FIELD-каталог по структуре-------------------
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name       = 'ZPP_RESULT_TAB_MPR5VS12'
      i_bypassing_buffer     = 'X'
    CHANGING
      ct_fieldcat            = gt_fieldcat
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.

  "Редактируем FIELD-каталог-----------------------
  LOOP AT gt_fieldcat ASSIGNING <fs_fieldcat>.
    <fs_fieldcat>-col_opt = 'X'.
  ENDLOOP.
ENDFORM.     

Code:
CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
         EXPORTING 
                    it_toolbar_excluding = gt_excluding
                    is_variant           = gs_variant
                    is_layout = gs_layout
                    i_save               = 'A'
                    i_default            = 'X'
         CHANGING   it_outtab        = gt_result_tab
                    it_filter            = gt_filter[]
                    it_sort              = gt_sort[]
                    it_fieldcatalog = gt_fieldcat"gt_fieldcat[]
        EXCEPTIONS
                    invalid_parameter_combination = 1
                    program_error                 = 2
                    too_many_lines                = 3
                    OTHERS                        = 4.
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
  ENDIF.

Автор:  Kuranov.Dmitry [ Вт, ноя 13 2018, 17:11 ]
Заголовок сообщения:  Re: Вылетает в дамп при суммировании по столбцу

Цитата:
структура же только имеет название как ZPP_RESULT_TAB_MPR5VS12
больше нигде нет ничего по ней, а везде я обращаюсь через gt_result_tab

по этому и дамп

встаем на строку CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY

и в отладчике смотрим соответствие филдкаталога передаваемой таблице с данными.

Смотреть названия полей и их типы

Автор:  sonics [ Ср, ноя 14 2018, 08:49 ]
Заголовок сообщения:  Re: Вылетает в дамп при суммировании по столбцу

Kuranov.Dmitry написал(а):
встаем на строку CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY

и в отладчике смотрим соответствие филдкаталога передаваемой таблице с данными.

Смотреть названия полей и их типы


Сменил название структуры и сразу дамп выпадает.
Отследил где, как раз и ругается что пустой получает fieldcatalog
Цитата:
Exception condition "NO_FIELDCATALOG_AVAILABLE" rasied

В коде доходит до этого участка и отваливается
Code:
if m_cl_variant->mt_fieldcatalog is initial.
raise no_filedcatalog_availble.
endif.


Проблема, что ко мне понимание происходящего не пришло.
Оно почему-то работало, когда я ему давал другую структуру и в попытке дать i_structure_name = 'gt_result_tab' или i_structure_name = 'ty_mpr5vs12'
по сути мы берем структуру именно ty_mpr5vs12.
Самое странное, что с i_structure_name = 'ZPP_RESULT_TAB_MPR5VS12' работает, но не суммирует, хотя ZPP_RESULT_TAB_MPR5VS12 вообще не существует в природе :(
я намутил, блин
мне нужна структура.... но она же создана уже? ty_mpr5vs12
полагаю gt_result_tab должен был быть LIKE ty_mpr5vs12

Автор:  Kuranov.Dmitry [ Ср, ноя 14 2018, 10:28 ]
Заголовок сообщения:  Re: Вылетает в дамп при суммировании по столбцу

sonics написал(а):

Сменил название структуры и сразу дамп выпадает.
Отследил где, как раз и ругается что пустой получает fieldcatalog

Exception condition "NO_FIELDCATALOG_AVAILABLE" rasied

дело не в названии.

sonics написал(а):
Проблема, что ко мне понимание происходящего не пришло.


фм LVC_FIELDCATALOG_MERGE берет описание структуры из словаря и делает из нее филд каталог.

создайте/отредактируйте словарную структуру ZPP_RESULT_TAB_MPR5VS12
чтобы она содержала поля таблицы gt_result с правильными типами данных

Автор:  sonics [ Ср, ноя 14 2018, 11:01 ]
Заголовок сообщения:  Re: Вылетает в дамп при суммировании по столбцу

Kuranov.Dmitry написал(а):

фм LVC_FIELDCATALOG_MERGE берет описание структуры из словаря и делает из нее филд каталог.

создайте/отредактируйте словарную структуру ZPP_RESULT_TAB_MPR5VS12
чтобы она содержала поля таблицы gt_result с правильными типами данных


вы правы, блин, снова моя невнимательность и месяц отпуска, я дорабатывал структуру.

Автор:  sonics [ Ср, ноя 14 2018, 15:54 ]
Заголовок сообщения:  Re: Дамп при суммировании по столбцу

От ошибок я избавился, но печаль одна тут есть
Цитата:
Для суммирования полей расчет промежуточных сумм невозможен

поиск не дал ничего интересного....
по дате выставляет нормально, а по периоду не хочет (порядковый номер, у нас их только 4)

Автор:  sonics [ Чт, ноя 15 2018, 08:41 ]
Заголовок сообщения:  Re: Дамп при суммировании по столбцу

блин и сортировка стала как-то странно работать и подсуммирование по столбцу с порядковым номером перестало вовсе работать.
я что-то намудрил

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/