SAP ABAP ALV list background render

157 阅读1分钟

Created by Jerry Wang, last modified on Jun 23, 2014

以后台方式运行report BCALV_GRID_DEMO:
clipboard1

该background job运行会失败:
clipboard2
原因如下:
clipboard3
将代码里使用custom container的地方全部替换成docking container,即可解决此问题:

PARAMETERS: d TYPE i NO-DISPLAY.
DATA: ok_code            LIKE sy-ucomm,
      gt_sflight         TYPE TABLE OF sflight,
      g_container        TYPE scrfname VALUE 'BCALV_GRID_DEMO_0100_CONT1',
      grid1              TYPE REF TO cl_gui_alv_grid,
      g_custom_container TYPE REF TO cl_gui_custom_container,
      g_doc              TYPE REF TO cl_gui_docking_container.
AT SELECTION-SCREEN OUTPUT.
  SELECT * FROM sflight INTO TABLE gt_sflight.
  CREATE OBJECT g_doc EXPORTING ratio = 100 parent = cl_gui_container=>screen0.
  CREATE OBJECT grid1
    EXPORTING
      i_parent = g_doc.
  CALL METHOD grid1->set_table_for_first_display
    EXPORTING
      i_structure_name = 'SFLIGHT'
    CHANGING
      it_outtab        = gt_sflight.

替换之后ALV grid即使在后台也能够成功render:
clipboard4
clipboard5