Vous êtes sur la page 1sur 3

*&---------------------------------------------------------------------*

*& Report  ZMR_OOALV_CUSTOMCONT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZMR_OOALV_DIALOGBOXCONT.
types : begin of ty_ekko,
         ebeln type ebeln,
         bukrs type bukrs,
         aedat type aedat,
        end of ty_ekko.
data : lt_ekko type STANDARD TABLE OF ty_ekko. "ekko.
DATA : LR_dialog TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER,
       LR_ALV TYPE REF TO CL_GUI_ALV_GRID.
data : lt_fldcat type lvc_t_fcat,
       wa_fldcat type lvc_s_fcat.
class lc_events DEFINITION.
  PUBLIC SECTION.
  methods : handle_close for EVENT CLOSE of CL_GUI_DIALOGBOX_CONTAINER IMPORTI
NG SENDER.
ENDCLASS.

CLASS LC_EVENTS IMPLEMENTATION.
  METHOD handle_close.
    CALL METHOD SENDER->SET_VISIBLE
      EXPORTING
        VISIBLE           = SPACE "  ' '
      EXCEPTIONS
        CNTL_ERROR        = 1
        CNTL_SYSTEM_ERROR = 2
        others            = 3.
    ENDMETHOD.
ENDCLASS.

data : lr_events type ref to lc_events.
PARAMETERS : p_lifnr type lifnr.

START-OF-SELECTION.
  select ebeln bukrs aedat from ekko into TABLE lt_ekko where lifnr = p_lifnr.
  if sy-subrc = 0.
    call screen 9000.
  else.

  endif.
*&---------------------------------------------------------------------*
*&      Module  STATUS_9000  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
* CREATE OBJECT FOR DIALOG BOX CONTINER
  IF LR_dialog IS INITIAL.
CREATE OBJECT LR_DIALOG
  EXPORTING
    WIDTH                       = 800
    HEIGHT                      = 200
    TOP                         = 150
    LEFT                        = 150
    CAPTION                     = 'PURCHASE ORDERS'
  EXCEPTIONS
    CNTL_ERROR                  = 1
    CNTL_SYSTEM_ERROR           = 2
    CREATE_ERROR                = 3
    LIFETIME_ERROR              = 4
    LIFETIME_DYNPRO_DYNPRO_LINK = 5
    EVENT_ALREADY_REGISTERED    = 6
    ERROR_REGIST_EVENT          = 7
    others                      = 8.
create object lr_events.
SET HANDLER lr_events->handle_close for lr_dialog.
  IF LR_DIALOG IS NOT INITIAL.
* CREATE OBJECT FOR ALV GRID.
    CREATE OBJECT LR_ALV
      EXPORTING
        I_PARENT          = LR_DIALOG  "DIALOG BOX CONTAINER OBJECT
      EXCEPTIONS
        ERROR_CNTL_CREATE = 1
        ERROR_CNTL_INIT   = 2
        ERROR_CNTL_LINK   = 3
        ERROR_DP_CREATE   = 4
        others            = 5.
    IF LR_ALV IS NOT INITIAL. "IS BOUND
* Prepare field catalog.
      wa_fldcat-COL_POS = 1.
      wa_fldcat-FIELDNAME = 'EBELN'.
      wa_fldcat-TABNAME = 'LT_EKKO'.
      wa_fldcat-SCRTEXT_S = 'Pur Ord'.
      wa_fldcat-SCRTEXT_m = 'Purchase Ord'.
      wa_fldcat-SCRTEXT_l = 'Purchase Order'.
      append wa_fldcat to lt_fldcat.
      clear wa_fldcat.
      wa_fldcat-COL_POS = 2.
      wa_fldcat-FIELDNAME = 'AEDAT'.
      wa_fldcat-TABNAME = 'LT_EKKO'.
      wa_fldcat-REF_FIELD = 'AEDAT'.
      WA_FLDCAT-REF_TABLE = 'EKKO'.
      append wa_fldcat to lt_fldcat.
      clear wa_fldcat.

      wa_fldcat-COL_POS = 3.
      wa_fldcat-FIELDNAME = 'BUKRS'.
      wa_fldcat-TABNAME = 'LT_EKKO'.
      wa_fldcat-REF_FIELD = 'BUKRS'.
      WA_FLDCAT-REF_TABLE = 'T001'.
      append wa_fldcat to lt_fldcat.
      clear wa_fldcat.

*  CALL METHOD SET TABLE FOR FIRST DISPLAY
      CALL METHOD LR_ALV->SET_TABLE_FOR_FIRST_DISPLAY
        CHANGING
          IT_OUTTAB                     = LT_EKKO
          IT_FIELDCATALOG               = LT_FLDCAT
        EXCEPTIONS
          INVALID_PARAMETER_COMBINATION = 1
          PROGRAM_ERROR                 = 2
          TOO_MANY_LINES                = 3
          others                        = 4.

    ENDIF.
  ENDIF.
ENDIF.
ENDMODULE.                 " STATUS_9000  OUTPUT