Как я могу получить свои данные для отображения в моем ALV? - PullRequest
2 голосов
/ 17 сентября 2010

Я думаю, что, возможно, мне не хватает параметра экспорта (из моего POV функции вызова).

При вызове функции параметры, которые я передаю, следующие: Export: i_callback_program, i_callback_pf_status_set, i_callback_user_command, is_layout, it_fieldcat, i_save Таблицы: t_outtab И исключения плюс обработка.

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

Я думаю, что информации, которую я выложу, будет достаточно, но если вам действительно нужно увидеть код, я сделаю это.

Я новичок, и любая помощь будет оценена.

Спасибо.

Ответы [ 5 ]

1 голос
/ 09 ноября 2010

Несколько человек здесь предложили использовать REUSE_ALV_GRID_DISPLAY.Я уверен, что это обычный способ сделать что-то (я сам использовал его), но я недавно прошел курс обучения sap delta, и они настоятельно рекомендовали больше его не использовать (вы можете посмотреть его, REUSE_ALV_GRID_DISPLAYофициально не поддерживается SAP).

Вместо этого используйте CL_SALV_TABLE, документация здесь: http://help.sap.com/erp2005_ehp_04/helpdata/EN/d7/b22041aa7df323e10000000a155106/frameset.htm

На самом деле это тоже довольно удобно использовать.

1 голос
/ 18 сентября 2010

РЕДАКТИРОВАТЬ: Да, и еще одна вещь - если вы действительно в POV (процесс на Value-Request = F4), знайте, что есть ограничения на то, что вы можете сделать.Попробуйте свой код в простом отчете сразу после START-OF-SELECTION, и, если это работает, попробуйте тот же код в модуле POV.

===

Если вы не пройдетеимя структуры, вы должны убедиться, что вы прошли полный (!) каталог полей, в противном случае сетка ALV может начать работать беспорядочно или не работать вообще.Используйте функциональные модули LVC_FIELDCATALOG_MERGE и LVC_FIELDCAT_COMPLETE (в этом порядке), чтобы получить каталог полей LVC, который можно использовать с классами или REUSE_ALV_GRID_DISPLAY_LVC.

1 голос
/ 17 сентября 2010

Существует несколько способов использования ALV, поэтому нам действительно может понадобиться дополнительная информация о вашем коде.

  • Первый способ - использовать функциональный модуль REUSE_ALV_GRID_DISPLAY.Это непосредственно отобразит содержимое таблицы в выходном dynpro.Если все, что вам нужно, это отображение, то сделайте это, так как это проще всего: если структура таблицы находится в словаре, этот вызов может быть простым, как показано ниже (при этом все члены структуры будут отображаться в виде столбца)

myreport = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
          i_callback_program          = myreport
          it_excluding                = exclude_tab
       TABLES
          t_outtab                    = display_data
       EXCEPTIONS
          program_error               = 1
          OTHERS                      = 2.

Если структура объявлена ​​в программе, необходимо создать каталог полей.следующий код может служить основой:

FORM fill_fieldcat CHANGING p_fieldcat   TYPE slis_t_fieldcat_alv.

* Data definition
  DATA ls_fieldcat  TYPE slis_fieldcat_alv.

* Macro definition
  DEFINE append_fieldcat.
    clear ls_fieldcat.

    ls_fieldcat-fieldname      = &1. * name of the field in struct
    ls_fieldcat-tabname        = &2. * name of the table
    ls_fieldcat-row_pos        = &3. * column
    ls_fieldcat-ref_fieldname  = &4. * field in ref table
    ls_fieldcat-ref_tabname    = &5. * ref table
    ls_fieldcat-outputlen      = &6. * size of output
    ls_fieldcat-seltext_m      = &7. * text (space if using the element typetext)
    ls_fieldcat-ddictxt        = 'M'.
    ls_fieldcat-key            = &8.  * is this a key field in table
    ls_fieldcat-emphasize      = &9.  * emphisze  column display

    append ls_fieldcat to p_fieldcat.
  END-OF-DEFINITION.

* Init.
  REFRESH p_fieldcat.

* Append fielcatalog for ALV
  append_fieldcat:
  'FORMATIONCODE' 'DISPLAY_TAB' 1 'SHORT' 'HRP1000' 12    'Code Stage'     space space,
  'FORMATIONTEXT' 'DISPLAY_TAB' 1 'STEXT' 'HRP1000' 20    'Libelle Stage'  space space,
  'SESSIONID'     'DISPLAY_TAB' 1 'OBJID' 'HRP1000' space 'Session'        space space,
  'BEGDA'         'DISPLAY_TAB' 1 'BEGDA' 'HRP1000' space 'Debut'          space space,
  'ENDDA'         'DISPLAY_TAB' 1 'BEGDA' 'HRP1000' space 'Fin'            space space,
ENDFORM.                    "fill_fieldCat

затем вы вызываете форму для создания каталога полей и используете ее в параметре it_fieldcat вызова функции.

  • SecondМетод заключается в использовании ABAP-объекта.Используйте проверку se83 для примеров этого использования.Основа такова:

В вашем Dynpro вы объявляете пользовательский контейнер с заданным именем ("ALV_CONT").Затем в PBO dynpro вы инициализируете контейнер и помещаете объект ALV внутрь:

* global variables :
DATA : delegationlist_table     TYPE REF TO cl_gui_alv_grid,
       delegationlist_container TYPE REF TO cl_gui_custom_container.
data : gs_layout   TYPE lvc_s_layo.

в PBO

  IF delegationlist_container IS INITIAL.
*   create a custom container control for our ALV Control
    CREATE OBJECT delegationlist_container
      EXPORTING
        container_name              = 'ALV_CONT'
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5.

*   create an instance of alv control
    CREATE OBJECT delegationlist_table
      EXPORTING
        i_parent = delegationlist_container.

*   Set a titlebar for the grid control
    gs_layout-grid_title = 'Délégations'.
    gs_layout-sel_mode = 'A'.
    gs_layout-cwidth_opt ='X'.

*   set table as data source
*   the struct name *must* be uppercase
*   the table must have this struc
    CALL METHOD delegationlist_table->set_table_for_first_display
      EXPORTING
        i_structure_name = 'ZPRT_DELEGATIONLIST'
        is_layout        = gs_layout
      CHANGING
        it_outtab        = delegationlist.

  ENDIF.

Надеется на эту помощь,
С уважением

Гийом ПАТРИ

0 голосов
/ 15 марта 2011

Передать внутреннюю таблицу вывода в FM-параметр "t_outtab". Он напечатает ваш вывод данных.

0 голосов
/ 07 октября 2010

Спасибо за усилия, но, как оказалось, ошибка, которую я сделал, заключалась в том, что я не использовал заглавные буквы в названиях при создании каталога полей. Такая ошибка новичка. Я думаю, что я не буду делать эту ошибку снова в ближайшее время.

-migs

...