Chinaunix首页 | 论坛 | 博客
  • 博客访问: 228150
  • 博文数量: 17
  • 博客积分: 50
  • 博客等级: 民兵
  • 技术积分: 329
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-31 20:05
个人简介

linux kernal research

文章分类

全部博文(17)

文章存档

2023年(7)

2013年(10)

分类: 项目管理

2013-10-08 17:26:16

*&---------------------------------------------------------------------*
*& Report  ZMM_OOALV_THOMAS
*&
*&---------------------------------------------------------------------*
*& 建一个DIALOG程序,只含一个主屏幕.
*&
*& 屏幕上方建一子屏幕含以下屏幕元素:
*&      日期范围MKPF-CPUDT;
*&      时间范围MKPF-CPUTM;
*&      物料凭证编号范围MKPF-MBLNR;
*&      物料字段范围 MSEG-MATNR;
*&      工厂单选 MSEG-WERKS 必填;
*&      库存地点范围MSEG-LGORT.
*&
*&   屏幕下方用OOALV显示报表,含以下字段:
*&   物料凭证编号MKPF-MBLNR;
*&   日期MKPF-CPUDT;
*&   时间MKPF-CPUTM;
*&   工厂 MSEG-WERKS;
*&   库存地点MSEG-LGORT;
*&   物料号MSEG-MATNR;
*&   移动类型MSEG-BWART;
*&   借贷标识MSEG-SHKZG;
*&   数量 MSEG-MENGE;
*&   单位 MSEG-MEINS.
*&
*&   响应双击事件,双击某行CALL另外一个屏幕显示当行各字段信息并含一个按钮PRINT,点击PRINT用SMARTFORMS打印当前行的信息。
*&
*&---------------------------------------------------------------------*
*&  DATE:      20131008
*&  DEVELOPER: THOMAS
*&---------------------------------------------------------------------*

REPORT  ZMM_OOALV_THOMAS.

TABLESMKPFMSEG.

DATABEGIN OF IT_MSEG OCCURS 0,
      MBLNR TYPE MKPF-MBLNR,      "物料凭证编号
      CPUDT TYPE MKPF-CPUDT,      "日期
      CPUTM TYPE MKPF-CPUTM,      "时间;
      WERKS TYPE MSEG-WERKS,      "工厂 ;
      LGORT TYPE MSEG-LGORT,      "库存地点;
      MATNR TYPE MSEG-MATNR,      "物料号;
      BWART TYPE MSEG-BWART,      "移动类型;
      SHKZG TYPE MSEG-SHKZG,      "借贷标识;
      MENGE TYPE MSEG-MENGE,      "数量 ;
      MEINS TYPE MSEG-MEINS,      "单位 .
END OF IT_MSEG.
DATAWA_MSEG LIKE LINE OF IT_MSEG.

DATAG_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATAGRID TYPE REF TO CL_GUI_ALV_GRID.
"DATA: IT_FIELDCAT TYPE LVC_T_FCAT.
"DATA: WA_FIELDCAT TYPE LVC_S_FCAT.
DATAWA_LAYOUT TYPE LVC_S_LAYO.
DATAOKCODE2000 TYPE SY-UCOMM.
DATAOKCODE3000 TYPE SY-UCOMM.
DATAIT_FIELDCATALOG TYPE LVC_T_FCAT,
      WA_FIELDCATALOG TYPE LINE OF LVC_T_FCAT.

CALL SCREEN 2000.

CLASS EVENT_RECEIVER DEFINITION.
  PUBLIC SECTION.
  CLASS-METHODS:HANDLER_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN ES_ROW_NO.
ENDCLASS.
CLASS EVENT_RECEIVER IMPLEMENTATION.
  METHOD HANDLER_DOUBLE_CLICK.
*    BREAK-POINT.
*    MESSAGE I036(Z_DC) WITH ES_ROW_NO-ROW_ID E_COLUMN-FIELDNAME.
*     CALL TRANSACTION 'MM03'.
    READ TABLE IT_MSEG INTO WA_MSEG INDEX ES_ROW_NO-ROW_ID.
    CALL SCREEN 3000.
*    MESSAGE ' 你双击了' TYPE 'I'.
  ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

SELECTION-SCREEN BEGIN OF SCREEN 1500 AS SUBSCREEN.   "建1500子屏幕
SELECTION-SCREEN BEGIN OF BLOCK 10 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONSS_CPUDT FOR MKPF-CPUDT,               "日期范围
                S_CPUTM FOR MKPF-CPUTM,               "时间范围
                S_MBLNR FOR MKPF-MBLNR,               "物料凭证编号范围
                S_MATNR FOR MSEG-MATNR.               "物料字段范围
PARAMETERSP_WERKS LIKE MSEG-WERKS OBLIGATORY.       "工厂单选, 必填
SELECT-OPTIONSS_LGORT FOR MSEG-LGORT.               "库存地点范围
SELECTION-SCREEN END OF BLOCK 10.
SELECTION-SCREEN END OF SCREEN 1500.

*&---------------------------------------------------------------------*
*&      Module  STATUS_2000  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_2000 OUTPUT.
  SET PF-STATUS 'PF2000'.
*  SET TITLEBAR 'xxx'.

ENDMODULE.                 " STATUS_2000  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  EXIT2000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE EXIT2000 INPUT.
  IF OKCODE2000 'BACK'.
    LEAVE PROGRAM.
  ENDIF.
ENDMODULE.                 " EXIT2000  INPUT

FORM APPEND_WA USING COL_POS
                     FIELDNAME
"                     REF_TABLE
"                     REF_FIELD
                     SCRTEXT.
  WA_FIELDCATALOG-COL_POS COL_POS.
  WA_FIELDCATALOG-FIELDNAME FIELDNAME.

"  WA_FIELDCATALOG-REF_TABLE = REF_TABLE.
"  WA_FIELDCATALOG-REF_FIELD = REF_FIELD.
  WA_FIELDCATALOG-SCRTEXT_M SCRTEXT.
BREAK-POINT.
  APPEND WA_FIELDCATALOG TO IT_FIELDCATALOG.
  CLEAR WA_FIELDCATALOG.
ENDFORM.                    " ADD_FIELD
*&---------------------------------------------------------------------*
*&      Module  STATUS_3000  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_3000 OUTPUT.
  SET PF-STATUS 'STATUS3000'.
*  SET TITLEBAR 'xxx'.

ENDMODULE.                 " STATUS_3000  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  EXIT3000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE EXIT3000 INPUT.
 IF OKCODE3000 'BACK'.
    LEAVE TO SCREEN 0.
 ENDIF.
ENDMODULE.                 " EXIT3000  INPUT
*&---------------------------------------------------------------------*
*&      Module  GET_DATA  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE GET_DATA INPUT.
  SELECT MKPF~MBLNR               "物料凭证编号
         MKPF~CPUDT               "日期
         MKPF~CPUTM               "时间
         MSEG~WERKS                    "工厂
         MSEG~LGORT                    "库存地点
         MSEG~MATNR                    "物料号
         MSEG~BWART                    "移动类型
         MSEG~SHKZG                    "借贷标识
         MSEG~MENGE                    "数量
         MSEG~MEINS                    "单位
    INTO CORRESPONDING FIELDS OF TABLE IT_MSEG
    FROM MSEG
   INNER JOIN MKPF
      ON MSEG~MBLNR MKPF~MBLNR
     AND MKPF~MJAHR MSEG~MJAHR
   WHERE MKPF~CPUDT IN S_CPUDT
     AND MKPF~CPUTM IN S_CPUTM
     AND MKPF~MBLNR IN S_MBLNR
     AND MSEG~MATNR IN S_MATNR
     AND MSEG~LGORT IN S_LGORT
     AND WERKS P_WERKS.
ENDMODULE.                 " GET_DATA  INPUT
*&---------------------------------------------------------------------*
*&      Module  SHOW_ALV  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE SHOW_ALV INPUT.
IF G_CUSTOM_CONTAINER IS INITIAL.
PERFORM APPEND_WA USING'1' 'MBLNR' '物料凭证编号',
                         '2' 'CPUDT' '日期',
                         '3' 'CPUTM' '时间',
                         '4' 'WERKS' '工厂',
                         '5' 'LGORT' '库存地点',
                         '6' 'MATNR' '物料号',
                         '7' 'BWART' '移动类型',
                         '8' 'SHKZG' '借贷标识',
                         '9' 'MENGE' '数量',
                        '10' 'MEINS' '单位'.

CREATE OBJECT G_CUSTOM_CONTAINER
  EXPORTING
    CONTAINER_NAME              'CONTAINER'.
CREATE OBJECT GRID
  EXPORTING
    I_PARENT          G_CUSTOM_CONTAINER.
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
  EXPORTING
*    I_BUFFER_ACTIVE               =
*    I_BYPASSING_BUFFER            =
*    I_CONSISTENCY_CHECK           =
*    I_STRUCTURE_NAME              =
*    IS_VARIANT                    =
*    I_SAVE                        =
*    I_DEFAULT                     = 'X'
    IS_LAYOUT                     WA_LAYOUT
*    IS_PRINT                      =
*    IT_SPECIAL_GROUPS             =
*    IT_TOOLBAR_EXCLUDING          =
*    IT_HYPERLINK                  =
*    IT_ALV_GRAPHICS               =
*    IT_EXCEPT_QINFO               =
*    IR_SALV_ADAPTER               =
  CHANGING
    IT_OUTTAB                     IT_MSEG[]
    IT_FIELDCATALOG               IT_FIELDCATALOG
*    IT_SORT                       =
*    IT_FILTER                     =
  EXCEPTIONS
    INVALID_PARAMETER_COMBINATION 1
    PROGRAM_ERROR                 2
    TOO_MANY_LINES                3
    others                        4
        .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
SET HANDLER EVENT_RECEIVER=>HANDLER_DOUBLE_CLICK FOR ALL INSTANCES.
ENDIF.

ENDMODULE.                 " SHOW_ALV  INPUT
阅读(2455) | 评论(0) | 转发(0) |
0

上一篇:SAP OOALV例题

下一篇:SAP:显示TCODE用户出口

给主人留下些什么吧!~~