我在想我可能错过了一个导出参数(来自我的函数调用POV)。
在函数调用中,我传递的参数是: 出口: i_callback_program, i_callback_pf_status_set, i_callback_user_command, is_layout, it_fieldcat, i_save 表: t_outtab 以及例外和处理。
我已经检查过我传递的内部表有数据而且确实存在。
我认为我提供的信息就足够了,但如果你真的需要查看代码,我会这样做。
我是菜鸟,任何帮助都会受到赞赏。
感谢名单。
答案 0 :(得分:1)
有几种方法可以使用ALV,因此我们可能确实需要有关您的代码的更多信息来提供帮助。
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参数中使用它。
在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.
在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.
希望这有帮助,
问候
Guillaume PATRY
答案 1 :(得分:1)
===
如果未传递结构名称,则必须确保传递完整的(!)字段目录,否则ALV网格可能会开始不正常工作或根本不工作。使用功能模块LVC_FIELDCATALOG_MERGE和LVC_FIELDCAT_COMPLETE(按此顺序)获取可与类或REUSE_ALV_GRID_DISPLAY_LVC一起使用的LVC字段目录。
答案 2 :(得分: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
使用它实际上也很方便。
答案 3 :(得分:0)
感谢您的努力,但事实证明,我所做的错误是我没有在构建Field Catalog时将字段名称大写。这样的新手错误。我想我很快就不会再犯这个错误了。
-migs
答案 4 :(得分:0)
将输出内部表传递给FM参数“t_outtab”。 它将打印您的数据输出。