Chinaunix首页 | 论坛 | 博客
  • 博客访问: 240638
  • 博文数量: 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.

TABLES: MKPF, MSEG.

DATA: BEGIN 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.
DATA: WA_MSEG LIKE LINE OF IT_MSEG.

DATA: G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: GRID TYPE REF TO CL_GUI_ALV_GRID.
"DATA: IT_FIELDCAT TYPE LVC_T_FCAT.
"DATA: WA_FIELDCAT TYPE LVC_S_FCAT.
DATA: WA_LAYOUT TYPE LVC_S_LAYO.
DATA: OKCODE2000 TYPE SY-UCOMM.
DATA: OKCODE3000 TYPE SY-UCOMM.
DATA: IT_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-OPTIONS: S_CPUDT FOR MKPF-CPUDT,               "日期范围
                S_CPUTM FOR MKPF-CPUTM,               "时间范围
                S_MBLNR FOR MKPF-MBLNR,               "物料凭证编号范围
                S_MATNR FOR MSEG-MATNR.               "物料字段范围
PARAMETERS: P_WERKS LIKE MSEG-WERKS OBLIGATORY.       "工厂单选, 必填
SELECT-OPTIONS: S_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
阅读(2696) | 评论(0) | 转发(0) |
0

上一篇:SAP OOALV例题

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

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