多个屏幕关联的数据显示

------------恢复内容开始------------

*&---------------------------------------------------------------------*
*& Report Z_SALAH_SHOWDATA
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_salah_showdata.
**********************************************************************
*REPORT DESCRIBE:OOALV数据显示
*DEVELOPER:SALAH
*DEVELOP DATE:20191023
*MODIFY DATE:
*FUNCTION SPEC:
*KEY USER:
**********************************************************************
TYPE-POOLS:slis.
TABLES:mara,marc,mard,makt.

TYPESBEGIN OF typ_01,
         matnr TYPE mara-matnr,
         werks TYPE marc-werks,
         lgort TYPE mard-lgort,
       END OF typ_01.
TYPES:BEGIN OF typ_02,
        pstat  TYPE mard-pstat,
        zplace TYPE i,
        zwerks TYPE i,
        zlgort TYPE i,
      END OF typ_02.
TYPES:BEGIN OF typ_03,
        matnr TYPE mara-matnr,
        werks TYPE marc-werks,
        lgort TYPE mard-lgort,
        ersda TYPE mara-ersda,
        pstat TYPE mara-pstat,
        maktx TYPE makt-maktx,
        spras TYPE makt-spras,
        meins TYPE mara-meins,
        matkl TYPE mara-matkl,
        ekgrp TYPE marc-ekgrp,
        dismm TYPE marc-dismm,
        perkz TYPE marc-perkz,
        lfgja TYPE mard-lfgja,
        prctl TYPE mard-prctl,
      END OF typ_03.
DATA gt_01 TYPE STANDARD TABLE OF typ_01 WITH HEADER LINE.
DATA gt_02 TYPE STANDARD TABLE OF typ_02 WITH HEADER LINE.
DATA gt_03 TYPE STANDARD TABLE OF typ_03 WITH HEADER LINE.
DATA ik_01 TYPE c.
DATA ir_01 TYPE REF TO cl_gui_alv_grid."ALV显示类
DATA ir_02 TYPE REF TO cl_gui_custom_container."容器类
DATA ir_03 TYPE REF TO cl_gui_alv_grid."ALV显示类
DATA ir_04 TYPE REF TO cl_gui_custom_container."容器类
DATA ir_05 TYPE REF TO cl_gui_alv_grid."ALV显示类
DATA ir_06 TYPE REF TO cl_gui_custom_container."容器类
DATA gt_fieldcat TYPE lvc_t_fcat.
DATA gv_fieldcat TYPE lvc_s_fcat.
DATA gv_layout TYPE lvc_s_layo.
DEFINE fieldcat.
  CLEAR: gv_fieldcat.
  gv_fieldcat-col_pos = &1.
  gv_fieldcat-fieldname = &2.
  gv_fieldcat-scrtext_l = &3.
    IF gv_fieldcat-fieldname 'MATNR'.
    gv_fieldcat-hotspot 'X'.
  ENDIF.
  APPEND gv_fieldcat TO gt_fieldcat.
END-OF-DEFINITION.
**单击事件
CLASS cl_hotspot_click DEFINITION.
  PUBLIC SECTION.
    METHODS hotspot FOR EVENT hotspot_click OF cl_gui_alv_grid
      IMPORTING e_row_id e_column_id es_row_no.
ENDCLASS.
CLASS cl_hotspot_click IMPLEMENTATION.
  METHOD hotspot.
    PERFORM frm_hotspot_click USING e_row_id e_column_id es_row_no.
*    CONDENSE e_row_id NO-GAPS.
*CONDENSE e_column_id NO-GAPS.
*MESSAGE I001(00) WITH '单击事件->行号:' e_row_id '、列名:' e_column_id.
  ENDMETHOD.
ENDCLASS.

DATA ok_code TYPE syucomm.

START-OF-SELECTION.
  CALL SCREEN 1010.
*&---------------------------------------------------------------------*
*&      Module  STATUS_1010  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_1010 OUTPUT.
  SET PF-STATUS 'MENU'.
*  SET TITLEBAR 'xxx'.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit INPUT.
  LEAVE PROGRAM.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  DISPLAY  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE display OUTPUT.
  DATA lr_hot TYPE REF TO cl_hotspot_click.
  CREATE OBJECT lr_hot.

  SELECT mara~matnr,
         marc~werks,
         mard~lgort
    FROM mara
    LEFT OUTER JOIN marc ON mara~matnr = marc~matnr
    LEFT OUTER JOIN mard ON mara~matnr = mard~matnr AND marc~werks = mard~werks
  INTO CORRESPONDING FIELDS OF TABLE @gt_01 .
  fieldcat '1' 'MATNR' '物料编号' .
  fieldcat '2' 'WERKS' '工厂'    .
  fieldcat '3' 'LGORT' '库存地点' .


  gv_layout-zebra 'X'.
  gv_layout-cwidth_opt 'X'.
  gv_layout-no_toolbar 'X'.

  IF NOT ir_02 IS BOUND.
    CREATE OBJECT ir_02
      EXPORTING
*       PARENT                      =
        container_name              'SJXS'
*       STYLE                       =
*       LIFETIME                    = lifetime_default
        repid                       = sy-repid
        dynnr                       = sy-dynnr
*       NO_AUTODEF_PROGID_DYNNR     =
      EXCEPTIONS
        cntl_error                  1
        cntl_system_error           2
        create_error                3
        lifetime_error              4
        lifetime_dynpro_dynpro_link 5
        OTHERS                      6.
    IF sy-subrc <> 0.
*    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF.

  IF NOT ir_01 IS BOUND.
    CREATE OBJECT ir_01
      EXPORTING
*       I_SHELLSTYLE      = 0
*       I_LIFETIME        =
        i_parent = ir_02
*       I_APPL_EVENTS     = space
*       I_PARENTDBG       =
*       I_APPLOGPARENT    =
*       I_GRAPHICSPARENT  =
*       I_NAME   =
*       I_FCAT_COMPLETE   = SPACE
*        EXCEPTIONS
*       ERROR_CNTL_CREATE = 1
*       ERROR_CNTL_INIT   = 2
*       ERROR_CNTL_LINK   = 3
*       ERROR_DP_CREATE   = 4
*       OTHERS   = 5
      .
    IF sy-subrc <> 0.
*       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF.

  SET HANDLER lr_hot->hotspot FOR ir_01.

  IF ik_01 IS INITIAL.
    ik_01 'X'.
    CALL METHOD ir_01->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       = gv_layout
*       IS_PRINT        =
*       IT_SPECIAL_GROUPS             =
*       IT_TOOLBAR_EXCLUDING          =
*       IT_HYPERLINK    =
*       IT_ALV_GRAPHICS =
*       IT_EXCEPT_QINFO =
*       IR_SALV_ADAPTER =
      CHANGING
        it_outtab       = gt_01[]
        it_fieldcatalog = gt_fieldcat
*       IT_SORT         =
*       IT_FILTER       =
*          EXCEPTIONS
*       INVALID_PARAMETER_COMBINATION = 1
*       PROGRAM_ERROR   = 2
*       TOO_MANY_LINES  = 3
*       OTHERS          = 4
      .
    IF sy-subrc <> 0.
*         Implement suitable error handling here
    ENDIF.
  ELSE.
    CALL METHOD ir_01->refresh_table_display
*          EXPORTING
*            IS_STABLE      =
*            I_SOFT_REFRESH =
*          EXCEPTIONS
*            FINISHED       = 1
*            OTHERS         = 2
      .
    IF sy-subrc <> 0.
*         Implement suitable error handling here
    ENDIF.
  ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  DISPLAY2  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

FORM frm_hotspot_click  USING    p_e_row_id    TYPE lvc_s_row
                                 p_e_column_id TYPE lvc_s_col
                                 p_es_row_no   TYPE lvc_s_roid.
  TYPESBEGIN OF typ_lg,
           matnr TYPE mara-matnr,
           lgort TYPE mard-lgort,
         END OF typ_lg.
  DATA gt_lg TYPE TABLE OF typ_lg WITH HEADER LINE.

  CLEAR:gt_02 ,gt_03.
  DATA gt_we TYPE TABLE OF typ_01.
  DATA sum1 TYPE i.
  DATA sum2 TYPE i.
  READ TABLE gt_01  INDEX p_es_row_no-row_id.

  SELECT pstat
    FROM mard
    INTO CORRESPONDING FIELDS OF TABLE gt_02
    WHERE matnr = gt_01-matnr.

  LOOP AT gt_01 INTO DATA(gv_weWHERE matnr = gt_01-matnr.
    APPEND gv_we TO gt_we.
    MOVE-CORRESPONDING gv_we TO gt_lg.
    APPEND gt_lg.
  ENDLOOP.

**取工厂的数量
  SORT gt_we BY werks ASCENDING.
  LOOP AT gt_we INTO gv_we.
    AT END OF werks.
      sum1 = sum1 + 1.
    ENDAT.
  ENDLOOP.

**取库存地点的数量
  LOOP AT gt_lg.
    AT END OF lgort.
      sum2 = sum2 + 1.
    ENDAT.
  ENDLOOP.

  LOOP AT gt_02 .
    gt_02-zplace = p_es_row_no-row_id.
    gt_02-zwerks = sum1.
    gt_02-zlgort = sum2.
    MODIFY gt_02  INDEX sy-tabix.
  ENDLOOP.
  CLEAR: gt_fieldcat.
  fieldcat '1' 'PSTAT' '维护状态'.
  fieldcat '2' 'ZPLACE' '具体位置'.
  fieldcat '3' 'ZWERKS' '复工厂'.
  fieldcat '4' 'ZLGORT' '复库存地点'.

CLEAR gv_layout.
  gv_layout-zebra 'X'.
  gv_layout-cwidth_opt 'X'.
  gv_layout-no_toolbar 'X'.

  IF ir_04 IS NOT BOUND.
    CREATE OBJECT ir_04
      EXPORTING
*       PARENT                      =
        container_name              'SXXS'
*       STYLE                       =
*       LIFETIME                    = lifetime_default
        repid                       = sy-repid
        dynnr                       = sy-dynnr
*       NO_AUTODEF_PROGID_DYNNR     =
      EXCEPTIONS
        cntl_error                  1
        cntl_system_error           2
        create_error                3
        lifetime_error              4
        lifetime_dynpro_dynpro_link 5
        OTHERS                      6.
    IF sy-subrc <> 0.
*    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF.
  IF ir_03 IS NOT BOUND.
    CREATE OBJECT ir_03
      EXPORTING
*       I_SHELLSTYLE      = 0
*       I_LIFETIME        =
        i_parent = ir_04
*       I_APPL_EVENTS     = space
*       I_PARENTDBG       =
*       I_APPLOGPARENT    =
*       I_GRAPHICSPARENT  =
*       I_NAME   =
*       I_FCAT_COMPLETE   = SPACE
*        EXCEPTIONS
*       ERROR_CNTL_CREATE = 1
*       ERROR_CNTL_INIT   = 2
*       ERROR_CNTL_LINK   = 3
*       ERROR_DP_CREATE   = 4
*       OTHERS   = 5
      .
  ENDIF.
  CLEAR ik_01 .
*  IF ik_01 IS INITIAL.
*    ik_01 = 'X'.
    CALL METHOD ir_03->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                     = gv_layout
*       IS_PRINT                      =
*       IT_SPECIAL_GROUPS             =
*       IT_TOOLBAR_EXCLUDING          =
*       IT_HYPERLINK                  =
*       IT_ALV_GRAPHICS               =
*       IT_EXCEPT_QINFO               =
*       IR_SALV_ADAPTER               =
      CHANGING
        it_outtab                     = gt_02[]
        it_fieldcatalog               = gt_fieldcat
*       IT_SORT                       =
*       IT_FILTER                     =
      EXCEPTIONS
        invalid_parameter_combination 1
        program_error                 2
        too_many_lines                3
        OTHERS                        4.
    IF sy-subrc <> 0.
*         Implement suitable error handling here
    ENDIF.
*  ELSE.
*    CALL METHOD ir_03->refresh_table_display
**          EXPORTING
**            IS_STABLE      =
**            I_SOFT_REFRESH =
**          EXCEPTIONS
**            FINISHED       = 1
**            OTHERS         = 2
*      .
*    IF sy-subrc <> 0.
**         Implement suitable error handling here
*    ENDIF.
*  ENDIF.
ENDFORM.

**&---------------------------------------------------------------------*
**&      Module  DISPLAY3  OUTPUT
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
*MODULE display3 OUTPUT.
*  SELECT a~matnr a~ersda a~pstat a~meins a~matkl
*     c~werks c~ekgrp c~dismm c~perkz
*     d~lgort d~lfgja d~prctl
*     k~maktx k~spras
*FROM mara AS a
*INNER JOIN marc AS c ON c~matnr = a~matnr
*INNER JOIN mard AS d ON d~matnr = a~matnr
*                    AND d~werks = c~werks
*INNER JOIN makt AS k ON k~matnr = a~matnr
*                    AND k~spras = 1
*INTO CORRESPONDING FIELDS OF TABLE gt_03
* WHERE a~matnr = gt_01-matnr.
*
*
*  CLEAR: gt_fieldcat,gv_layout.
*  fieldcat '1' 'MATNR' '物料编号'.
*  fieldcat '2' 'WERKS' '工厂'.
*  fieldcat '3' 'LGORT' '库存地点'.
*  fieldcat '4' 'ERSDA' '创建日期'.
*  fieldcat '5' 'PSTAT' '物料状态'.
*  fieldcat '6' 'MAKTX' '物料描述'.
*  fieldcat '7' 'SPRAS' '语言代码'.
*  fieldcat '8' 'MEINS' '基本计量单位'.
*  fieldcat '9' 'MATKL' '物料组'.
*  fieldcat '10' 'EKGRP' '采购组'.
*  fieldcat '11' 'DISMM' '物料需求计划类型'.
*  fieldcat '12' 'PERKZ' '周期指标'.
*  fieldcat '13' 'LFGIA' '当前会计年度'.
*  fieldcat '14' 'PRCTL' '利润中心'.
*
*  LOOP AT gt_fieldcat INTO gv_fieldcat .
*    IF  gv_fieldcat-fieldname = 'matnr'
*     OR gv_fieldcat-fieldname = 'werks'
*     OR gv_fieldcat-fieldname = 'lgort'.
*      gv_fieldcat-emphasize = 'C610'.
*    ENDIF.
*    MODIFY gt_fieldcat FROM gv_fieldcat INDEX sy-tabix.
*  ENDLOOP.
*  gv_layout-zebra = 'X'.
*  gv_layout-cwidth_opt = 'X'.
*  gv_layout-no_toolbar = 'X'.
*
*  IF NOT ir_06 IS BOUND.
*    CREATE OBJECT ir_06
*      EXPORTING
**       PARENT                      =
*        container_name              = 'XXXX'
**       STYLE                       =
**       LIFETIME                    = lifetime_default
*        repid                       = sy-repid
*        dynnr                       = sy-dynnr
**       NO_AUTODEF_PROGID_DYNNR     =
*      EXCEPTIONS
*        cntl_error                  = 1
*        cntl_system_error           = 2
*        create_error                = 3
*        lifetime_error              = 4
*        lifetime_dynpro_dynpro_link = 5
*        OTHERS                      = 6.
*    IF sy-subrc <> 0.
**    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*    ENDIF.
*  ENDIF.
*  IF NOT ir_05 IS BOUND.
*    CREATE OBJECT ir_05
*      EXPORTING
**       I_SHELLSTYLE      = 0
**       I_LIFETIME        =
*        i_parent = ir_06
**       I_APPL_EVENTS     = space
**       I_PARENTDBG       =
**       I_APPLOGPARENT    =
**       I_GRAPHICSPARENT  =
**       I_NAME   =
**       I_FCAT_COMPLETE   = SPACE
**        EXCEPTIONS
**       ERROR_CNTL_CREATE = 1
**       ERROR_CNTL_INIT   = 2
**       ERROR_CNTL_LINK   = 3
**       ERROR_DP_CREATE   = 4
**       OTHERS   = 5
*      .
*    IF sy-subrc <> 0.
**       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*    ENDIF.
*  ENDIF.
*  DATA ii_01 TYPE c.
*  IF ii_01 IS INITIAL.
*    ii_01 = 'X'.
*    CALL METHOD ir_05->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       = gv_layout
**       IS_PRINT        =
**       IT_SPECIAL_GROUPS             =
**       IT_TOOLBAR_EXCLUDING          =
**       IT_HYPERLINK    =
**       IT_ALV_GRAPHICS =
**       IT_EXCEPT_QINFO =
**       IR_SALV_ADAPTER =
*      CHANGING
*        it_outtab       = gt_03[]
*        it_fieldcatalog = gt_fieldcat
**       IT_SORT         =
**       IT_FILTER       =
**          EXCEPTIONS
**       INVALID_PARAMETER_COMBINATION = 1
**       PROGRAM_ERROR   = 2
**       TOO_MANY_LINES  = 3
**       OTHERS          = 4
*      .
*    IF sy-subrc <> 0.
**         Implement suitable error handling here
*    ENDIF.
*  ELSE.
*    CALL METHOD ir_05->refresh_table_display
**          EXPORTING
**            IS_STABLE      =
**            I_SOFT_REFRESH =
**          EXCEPTIONS
**            FINISHED       = 1
**            OTHERS         = 2
*      .
*    IF sy-subrc <> 0.
**         Implement suitable error handling here
*    ENDIF.
*  ENDIF.
*ENDMODULE.

------------恢复内容结束------------

猜你喜欢

转载自www.cnblogs.com/salah/p/11935319.html