测试程序来自标准报表:RHVAKRI0
界面显示为:
运行效果为:
技术亮点:
(1)不使用evaluation path的情况下使用逻辑数据库PCH
(2)ALV显示结果中使用checkbox(ALV checkbox)
测试程序:
*&---------------------------------------------------------------------*
*& Report ZTEST12
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ztest12.
TABLES: objec.
INFOTYPES: 1001,1007.
*&--------------------------------------
*& data define for get display data
*&--------------------------------------
DATA: BEGIN OF gty_itab_1007,
box(1) TYPE c,
text LIKE objec-stext,
i1007 LIKE p1007,
END OF gty_itab_1007.
DATA: gs_itab_1007 LIKE gty_itab_1007,
gt_itab_1007 LIKE TABLE OF gty_itab_1007,
gs_p1007 TYPE p1007.
*&--------------------------------------
*& data define for ALV
*&--------------------------------------
DATA: gt_itab_1007_fields TYPE slis_t_fieldcat_alv,
gt_itab_1007_layout TYPE slis_layout_alv.
INITIALIZATION.
pchotype = 'S'.
CLEAR: pchtimed, p1001,p1007.
GET objec.
LOOP AT p1007 INTO gs_p1007.
gs_itab_1007-text = objec-stext.
gs_itab_1007-i1007 = gs_p1007.
APPEND gs_itab_1007 TO gt_itab_1007.
ENDLOOP.
END-OF-SELECTION.
* fieldcat
PERFORM fill_gt_itab_1007_fields TABLES gt_itab_1007_fields.
CLEAR gt_itab_1007_layout.
gt_itab_1007_layout-box_fieldname = 'BOX'.
gt_itab_1007_layout-box_tabname = 'ITAB_1007'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
* I_STRUCTURE_NAME =
is_layout = gt_itab_1007_layout
it_fieldcat = gt_itab_1007_fields[]
TABLES
t_outtab = gt_itab_1007
EXCEPTIONS
program_error = 1
OTHERS = 2.
*&---------------------------------------------------------------------*
*& Form FILL_GT_ITAB_1007_FIELDS
*& create alv field text
*----------------------------------------------------------------------*
FORM fill_gt_itab_1007_fields TABLES it_field_tab TYPE slis_t_fieldcat_alv.
* head line for field table
DATA: field_head_struc TYPE slis_fieldcat_alv.
REFRESH it_field_tab.
CLEAR field_head_struc.
field_head_struc-col_pos = 1.
field_head_struc-fieldname = 'I1007-OTYPE'.
field_head_struc-ref_fieldname = 'OTYPE'.
field_head_struc-ref_tabname = 'P1001'.
APPEND field_head_struc TO it_field_tab.
CLEAR field_head_struc.
field_head_struc-col_pos = 2.
field_head_struc-fieldname = 'I1007-OBJID'.
field_head_struc-ref_fieldname = 'OBJID'.
field_head_struc-ref_tabname = 'P1007'.
APPEND field_head_struc TO it_field_tab.
CLEAR field_head_struc.
field_head_struc-col_pos = 3.
field_head_struc-fieldname = 'I1007-BEGDA'.
field_head_struc-ref_fieldname = 'BEGDA'.
field_head_struc-ref_tabname = 'P1007'.
APPEND field_head_struc TO it_field_tab.
ENDFORM. " FILL_GT_ITAB_1007_FIELDS
*& Report ZTEST12
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ztest12.
TABLES: objec.
INFOTYPES: 1001,1007.
*&--------------------------------------
*& data define for get display data
*&--------------------------------------
DATA: BEGIN OF gty_itab_1007,
box(1) TYPE c,
text LIKE objec-stext,
i1007 LIKE p1007,
END OF gty_itab_1007.
DATA: gs_itab_1007 LIKE gty_itab_1007,
gt_itab_1007 LIKE TABLE OF gty_itab_1007,
gs_p1007 TYPE p1007.
*&--------------------------------------
*& data define for ALV
*&--------------------------------------
DATA: gt_itab_1007_fields TYPE slis_t_fieldcat_alv,
gt_itab_1007_layout TYPE slis_layout_alv.
INITIALIZATION.
pchotype = 'S'.
CLEAR: pchtimed, p1001,p1007.
GET objec.
LOOP AT p1007 INTO gs_p1007.
gs_itab_1007-text = objec-stext.
gs_itab_1007-i1007 = gs_p1007.
APPEND gs_itab_1007 TO gt_itab_1007.
ENDLOOP.
END-OF-SELECTION.
* fieldcat
PERFORM fill_gt_itab_1007_fields TABLES gt_itab_1007_fields.
CLEAR gt_itab_1007_layout.
gt_itab_1007_layout-box_fieldname = 'BOX'.
gt_itab_1007_layout-box_tabname = 'ITAB_1007'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
* I_STRUCTURE_NAME =
is_layout = gt_itab_1007_layout
it_fieldcat = gt_itab_1007_fields[]
TABLES
t_outtab = gt_itab_1007
EXCEPTIONS
program_error = 1
OTHERS = 2.
*&---------------------------------------------------------------------*
*& Form FILL_GT_ITAB_1007_FIELDS
*& create alv field text
*----------------------------------------------------------------------*
FORM fill_gt_itab_1007_fields TABLES it_field_tab TYPE slis_t_fieldcat_alv.
* head line for field table
DATA: field_head_struc TYPE slis_fieldcat_alv.
REFRESH it_field_tab.
CLEAR field_head_struc.
field_head_struc-col_pos = 1.
field_head_struc-fieldname = 'I1007-OTYPE'.
field_head_struc-ref_fieldname = 'OTYPE'.
field_head_struc-ref_tabname = 'P1001'.
APPEND field_head_struc TO it_field_tab.
CLEAR field_head_struc.
field_head_struc-col_pos = 2.
field_head_struc-fieldname = 'I1007-OBJID'.
field_head_struc-ref_fieldname = 'OBJID'.
field_head_struc-ref_tabname = 'P1007'.
APPEND field_head_struc TO it_field_tab.
CLEAR field_head_struc.
field_head_struc-col_pos = 3.
field_head_struc-fieldname = 'I1007-BEGDA'.
field_head_struc-ref_fieldname = 'BEGDA'.
field_head_struc-ref_tabname = 'P1007'.
APPEND field_head_struc TO it_field_tab.
ENDFORM. " FILL_GT_ITAB_1007_FIELDS