2

I'm thinking that I'm probably missing an export parameter (from my Function Call POV).

In the REUSE_ALV_GRID_DISPLAY function call, the parameters I pass around are: Exporting:

   i_callback_program,
   i_callback_pf_status_set,
   i_callback_user_command,
   is_layout,
   it_fieldcat,
   i_save
Tables:
   t_outtab

And the exceptions plus handling.

I've checked that the internal table that I pass has data and it does.

I think the information I put up will suffice but if you really need to see the code, I'll do so.

I'm a noob and any help would be appreciated.

Thanx.

4

5 回答 5

1

有多种使用 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 参数中使用它。

  • 第二种方法是使用 ABAP-Object。使用 check se83 作为此用途的示例。依据如下:

在您的 Dynpro 中,您声明一个具有给定名称(“ALV_CONT”)的自定义容器。然后在 dynpro 的 PBO 中初始化容器并在其中放置一个 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.

在公益组织

  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.

希望这有帮助,
问候

纪尧姆·帕特里

于 2010-09-17T08:26:30.743 回答
1

这里有几个人建议使用 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

其实用起来也挺方便的。

于 2010-11-09T15:35:47.703 回答
1

编辑:哦,还有一件事——如果你真的在 POV 中(价值请求的过程 = F4),请注意你可以做的事情是有限制的。在 START-OF-SELECTION 之后立即在简单报告中尝试您的代码,如果可行,请在 POV 模块中尝试相同的代码。

===

如果不传递结构名称,则必须确保传递完整的 (!) 字段目录,否则 ALV 网格可能会开始工作不正常或根本不工作。使用功能模块 LVC_FIELDCATALOG_MERGE 和 LVC_FIELDCAT_COMPLETE(按此顺序)获取可与类或 REUSE_ALV_GRID_DISPLAY_LVC 一起使用的 LVC 字段目录。

于 2010-09-18T12:55:35.703 回答
0

感谢您的努力,但事实证明,我犯的错误是我在构建字段目录时没有将字段名称大写。这样的新手错误。我想我不会很快再犯那个错误了。

-migs

于 2010-10-07T02:38:59.710 回答
0

将输出内部表传递给 FM 参数“t_outtab”。它将打印您的数据输出。

于 2011-03-15T03:40:51.917 回答