REUSE_ALV_GRID_DISPLAY双击事件

REUSE_ALV_GRID_DISPLAY双击事件,

最主要在样式设置中,有的字段不能使用的。

FORM FRM_ALV.

  PERFORM ALV_SET_FIELD_LIST.

*  X_LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'.
  REPORT_ID = SY-CPROG ."SY-REPID. “不能是REPID
  X_LAYOUT-ZEBRA = 'X'.
  X_LAYOUT-DETAIL_POPUP = 'X'.
  X_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
*  X_LAYOUT-BOX_FIELDNAME  = 'BOX'. 有双击事件,不能加BOX

  DATA: FRM_PF_STATUS_SET   TYPE SLIS_FORMNAME  VALUE 'ALV_SET_STATUS'.   "ALV_SET_STATUS

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM = REPORT_ID
      IT_FIELDCAT        = GT_FIELDCAT
      I_CALLBACK_TOP_OF_PAGE  = 'END_OF_PAGE'
      I_CALLBACK_PF_STATUS_SET = FRM_PF_STATUS_SET        "触发事件调用子程序 "如果ALV使用自定义的工具栏,如果使用系统工具栏则忽略该行
      I_CALLBACK_USER_COMMAND  = 'FRM_UCOMM'   "自定义工具栏的事件
*      it_sort            = gt_sort
      IS_LAYOUT          = X_LAYOUT
      IS_PRINT           = GT_PRINT
      I_SAVE             = 'A'
    TABLES
      T_OUTTAB           = OEKBE. "IT_OUTPUT. "


ENDFORM.                    "FRM_ALV

 

 

FORM FRM_UCOMM USING R_UCOMM LIKE SY-UCOMM
                     RS_SELFIELD TYPE SLIS_SELFIELD.
  DATA:GV_MJAHR LIKE MSEG-MJAHR,
       GV_EBELP LIKE MSEG-EBELP,
       GV_EBELN LIKE EKKO-EBELN,
       GV_BSART LIKE EBAN-BSART.
  CASE R_UCOMM.

    WHEN 'B_PRINT'  .
      PERFORM PREPARE_FOR_OUTPUT.
      PERFORM OUTPUT_2.

    WHEN  'B_OUT'  .
      PERFORM EXPORTTOEXCEL.

    WHEN '&F03' OR '&F15'.
      LEAVE TO SCREEN 0.
    WHEN '&F12'.
      LEAVE PROGRAM.

    WHEN '&IC1'" "双击事件
      IF RS_SELFIELD IS NOT INITIAL.
        CLEAR:GV_EBELN,GV_EBELP, GV_MJAHR,GV_EBELN,GV_BSART.
        CASE RS_SELFIELD-FIELDNAME.
          WHEN 'BELNR'" Display material document 就是物料文件号, MIGO
            GV_EBELN = RS_SELFIELD-VALUE.
            READ TABLE OEKBE INDEX RS_SELFIELD-TABINDEX.
            IF SY-SUBRC = 0.
              GV_MJAHR = OEKBE-BUDAT+0(4).
              GV_EBELP = OEKBE-EBELP.
            ENDIF.
*          SET  PARAMETER ID  'MBN'  FIELD  RS_SELFIELD-VALUE. "PO
*          SET  PARAMETER ID  'MJA'  FIELD  GV_MJAHR.  "年度
*          CALL  TRANSACTION  'MIGO'  AND  SKIP  FIRST  SCREEN. "不能使用这个,因为如果不是物料文件号为黙认输入框,则读不到数据

            CALL FUNCTION 'MIGO_DIALOG'
              EXPORTING
                I_ACTION            = 'A04'
                I_REFDOC            = 'R02'
                I_NOTREE            = 'X'
                I_NO_AUTH_CHECK     = ' '
                I_DEADEND           = 'X'
                I_SKIP_FIRST_SCREEN = 'X'
                I_OKCODE            = 'OK_GO'
                I_MBLNR             = GV_EBELN  " Document Number
                I_MJAHR             = GV_MJAHR. " Document Year
*              I_ZEILE             = GV_EBELP.  " Document Item

          WHEN 'EBELN'.                                     " PO ME23N
            CLEAR:GV_EBELP,GV_EBELN .
            GV_EBELN = RS_SELFIELD-VALUE.
            READ TABLE OEKBE INDEX RS_SELFIELD-TABINDEX.
            IF SY-SUBRC = 0.
              GV_EBELP = OEKBE-EBELP.
            ENDIF.
            CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
              EXPORTING
                I_EBELN = GV_EBELN
                I_EBELP = GV_EBELP
              EXCEPTIONS
                OTHERS  = 1.

          WHEN 'BANFN'.                                     "PR ME53N
            CLEAR GV_BSART.
            READ TABLE OEKBE INDEX RS_SELFIELD-TABINDEX.
            IF SY-SUBRC = 0.
              GV_BSART = OEKBE-BSART.
            ENDIF.
            SET  PARAMETER ID  'BBA'  FIELD  GV_BSART. "PR TYPE
            SET  PARAMETER ID  'BAN'  FIELD  RS_SELFIELD-VALUE.  "PR
            CALL  TRANSACTION  'ME53N'  AND  SKIP  FIRST  SCREEN.

        ENDCASE.
      ENDIF.
  ENDCASE.
  RS_SELFIELD-REFRESH = 'X'.


ENDFORM.                    "frm_ucomm

posted @ 2011-10-28 15:35  VerySky  阅读(4637)  评论(0)    收藏  举报