关闭

ALV 例子

307人阅读 评论(0) 收藏 举报
分类:
REPORT  ZZZ1.

INCLUDE ztop1.


TABLES:marc,mvke,pbim,pbed,mard,zzj_pp_001.

TYPES:BEGIN OF ty_alv_itab.
        INCLUDE STRuCTURE zzj_pp_001.
TYPES:lv(4),
END OF ty_alv_itab.

TYPES:BEGIN OF ty_pbim,
  matnr like pbim-matnr,
  werks like pbim-werks,
  plnmg like pbed-plnmg,
  END OF ty_pbim.

TYPES:BEGIN OF ty_matnr,
  matnr TYPE marc-matnr,
  werks TYPE marc-werks,
  plifz TYPE marc-plifz,
  END OF ty_matnr.

DATA:g_itab_fieldcat_lvc TYPE lvc_t_fcat,
      g_itab_sort_lvc TYPE lvc_t_sort.

DATA:ok_code_9000 LIKE sy-datum.
DATA:save_ok LIKE sy-datum.

DATA:g_ischange,
      g_tabnm(30TYPE VALUE 'ZZJ_PP_001',
      GS_variant TYPE disvariant,
      gs_alv_itab TYPE ty_alv_itab,
      gt_alv_itab TYPE TABLE OF ty_alv_itab WITH HEADER LINE,
      gt_type_dec TYPE TABLE OF dd07t WITH HEADER LINE,
      gt_fieldcat TYPE lvc_t_fcat,
      gs_layout TYPE lvc_s_layo,
      gt_exclude TYPE ui_functions,
      wcl_container TYPE REF TO cl_gui_docking_container,
      wcl_alv TYPE REF TO cl_gui_alv_grid.

INCLUDE zs01.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1.
  SELECT-OPTIONS:s_werks FOR marc-werks OBLIGATORY MODIF ID zwk,
                 s_matnr FOR marc-matnr.
  PARAMETERS:p_budat LIKE marc-mmstd DEFAULT sy-datum.
  SELECTION-SCREEN END OF BLOCK b1.

INCLUDE ze01.


INITIALIZATION.
t1 '数据库选择'.

at SELECTION-SCREEN .
  START-OF-SELECTION.
  IF p_budat sy-datum.
    PERFORM frm_get_data.
    ELSE.
      MESSAGE e000(zzj_001WITH '请输入正确的日期'.
  ENDIF.

  PERFORM dispay_data.

  PERFORM display_data.



INCLUDE zf01.


FORM frm_get_data.
  CLEAR:gt_alv_itab,gt_alv_itab[].
  DATA:lt_mard TYPE TABLE OF mard WITH HEADER LINE,
        lt_pbim TYPE TABLE OF ty_pbim WITH HEADER LINE,
        lt_vbap TYPE TABLE OF vbap WITH HEADER LINE,
        lt_pp TYPE TABLE OF zzj_pp_001 WITH HEADER LINE,
        lt_marc TYPE TABLE OF marc WITH HEADER LINE,
        lt_matnr TYPE TABLE OF ty_matnr WITH HEADER LINE.

  SELECT
    t01~matnr
    t01~werks
    t02~maktx
    FROM marc AS t01
    INNER JOIN makt AS t02 on t01~matnr t02~matnr AND t02~spras '1'
    INNER JOIN t001w as t03 on t01~werks t03~werks
    INNER JOIN mara as t04 on t01~matnr t04~matnr
    INto CORRESPONDING FIELDS OF TABLE gt_alv_itab
    WHERE t01~werks IN s_werks
    AND   t01~matnr IN s_matnr
    AND   t04~mtart 'FERT'.

  SELECT
    matnr
    werks
    plifz
    FROM marc
    into CORRESPONDING FIELDS OF TABLE lt_matnr
    WHERE matnr IN s_matnr
    AND   werks IN s_werks.

  SELECT
    matnr
    werks
    sumplnmg AS plnmg
    FROM pbim AS t01
    INNER JOIN pbed AS t02 ON t01~bdzei t02~bdzei
    into CORRESPONDING FIELDS OF TABLE lt_pbim
    WHERE werks IN s_werks
    AND   matnr IN s_matnr
    AND   versb '00'
    AND   t01~loevr ''
    AND   t02~loevr ''
    GROUP BY matnr werks
    .

  SELECT
    matnr
    werks
    lgort
    labst
    FROM mard
    INTO CORRESPONDING FIELDS OF TABLE lt_mard
    WHERE werks IN s_werks
    AND   matnr IN s_matnr.

  SELECT
    matnr
    werks
    bstmi
    FROM marc
    INTO CORRESPONDING FIELDS OF TABLE lt_marc
    WHERE werks IN s_werks
    AND   matnr IN s_matnr.

  LOOP AT gt_alv_itab.
    READ TABLE lt_pbim WITH KEY werks gt_alv_itab-werks
    matnr gt_alv_itab-matnr.
    IF sy-subrc 0.
      gt_alv_itab-plnmg lt_pbim-plnmg."计划数量
    ENDIF.

*    读取库存数量
    READ TABLE lt_mard WITH KEY werks gt_alv_itab-werks matnr gt_alv_itab-matnr.

    IF sy-subrc 0.
      gt_alv_itab-labst lt_mard-labst."库存数量
    ENDIF.

*    读取最小批量
    READ TABLE lt_marc WITH KEY werks gt_alv_itab-werks matnr gt_alv_itab-matnr.

    IF sy-subrc 0.
      gt_alv_itab-bstmi lt_marc-bstmi."最小批量
    ENDIF.

*  要求到货时间 = 当前日期 + 采购周期
    READ TABLE lt_matnr WITH KEY werks gt_alv_itab-werks matnr gt_alv_itab-matnr.

    IF sy-subrc 0.
      gt_alv_itab-zyqdh sy-datum + lt_matnr-plifz."要求到货时间
    ENDIF.

    READ TABLE lt_pp WITH KEY werks gt_alv_itab-werks  matnr gt_alv_itab-matnr.

    IF SY-SUBRC 0.
      gt_alv_itab-zdjs lt_pp-zdjs.
      gt_alv_itab-zwqcgdd lt_pp-zwqcgdd.
      gt_alv_itab-zjxq lt_pp-zjxq.
*      gt_alv_itab-bstmi = lt_pp-bstmi.
      gt_alv_itab-ztzsl lt_pp-ztzsl.
      gt_alv_itab-zcgxdsl lt_pp-zcgxdsl.
*      gt_alv_itab-zyqdh = lt_pp-zyqdh.
      gt_alv_itab-zyjdh lt_pp-zyjdh.
    ENDIF.

    MODIFY gt_alv_itab.
    CLEAR gt_alv_itab.
  ENDLOOP.
ENDform.
*&---------------------------------------------------------------------*
*&      Form  DISPAY_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DISPAY_DATA .
  gs_layout-zebra 'X'.
  gs_layout-cwidth_opt 'X'.

  PERFORM frm_pre_fieldcat.

ENDFORM.                    " DISPAY_DATA
*&---------------------------------------------------------------------*
*&      Form  FRM_PRE_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_PRE_FIELDCAT .
  PERFORM sub_fill_alv_fieldcat USING 'WERKS' '工厂' space space 'X' space.
  PERFORM sub_fill_alv_fieldcat USING 'MATNR' '物料号' space 'X' space space.
  PERFORM sub_fill_alv_fieldcat USING 'MAKTX' '物料描述' space space space space.
  PERFORM sub_fill_alv_fieldcat USING 'PLNMG' '需求' space 'X' space 'X'.
  PERFORM sub_fill_alv_fieldcat USING 'LABST' '库存数量' space 'X' space space.
  PERFORM sub_fill_alv_fieldcat USING 'ZDJS' '待检数' space 'X' space space.
  PERFORM sub_fill_alv_fieldcat USING 'ZWQCGDD' '未清采购订单数(在途)' space 'X' space space.
  PERFORM sub_fill_alv_fieldcat USING 'ZJXQ' '净需求'space 'X' space space.
  PERFORM sub_fill_alv_fieldcat USING 'BSTMI' '最小批量' space 'X' space space.
  PERFORM sub_fill_alv_fieldcat USING 'ZTZSL' '调整数量' space 'X' space space.
  PERFORM sub_fill_alv_fieldcat USING 'ZCGXDSL' '采购下单数量' space 'X' space space.
  PERFORM sub_fill_alv_fieldcat USING 'ZYQDH' '要求到货时间' space space space space.
  PERFORM sub_fill_alv_fieldcat USING 'ZYJDH' '预计到货时间' 'X'space space space.

ENDFORM.                    " FRM_PRE_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  SUB_FILL_ALV_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0363   text
*      -->P_0364   text
*      -->P_SPACE  text
*      -->P_SPACE  text
*      -->P_0367   text
*      -->P_SPACE  text
*----------------------------------------------------------------------*
FORM SUB_FILL_ALV_FIELDCAT  USING  p_fieldname "TYPE slis_fieldname
                                    p_reptext_ddic "LIKE dd03p-reptext
                                     P_edit" TYPE slis_edit_mask
                                      p_zero" TYPE c
                                       p_hotspot
                                        p_sum.
  DATA:l_fieldcat_lvc TYPE lvc_s_fcat.
  l_fieldcat_lvc-fieldname p_fieldname.
  l_fieldcat_lvc-reptext p_reptext_ddic.
  l_fieldcat_lvc-edit p_edit.
  l_fieldcat_lvc-no_zero p_zero.
  l_fieldcat_lvc-hotspot p_hotspot.
  l_fieldcat_lvc-do_sum p_sum.
  APPEND l_fieldcat_lvc to g_itab_fieldcat_lvc.

ENDFORM.                    " SUB_FILL_ALV_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .
DATA:gs_repid LIKE sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
 EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                =
*   I_BUFFER_ACTIVE                   =
    I_CALLBACK_PROGRAM                GS_REPID
*    I_CALLBACK_PF_STATUS_SET          = 'STATUS9000'
*   I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
*   I_CALLBACK_TOP_OF_PAGE            = '世上最好看的报表'
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
    I_GRID_TITLE                      '最好看的报表'
*   I_GRID_SETTINGS                   =
    IS_LAYOUT_LVC                     GS_LAYOUT
    IT_FIELDCAT_LVC                   g_itab_fieldcat_lvc
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS_LVC             =
*   IT_SORT_LVC                       =
*   IT_FILTER_LVC                     =
*   IT_HYPERLINK                      =
*   IS_SEL_HIDE                       =
    I_DEFAULT                         'X'
    I_SAVE                            'A'
*   IS_VARIANT                        =
*   IT_EVENTS                         =
*   IT_EVENT_EXIT                     =
*   IS_PRINT_LVC                      =
*   IS_REPREP_ID_LVC                  =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   I_HTML_HEIGHT_TOP                 =
*   I_HTML_HEIGHT_END                 =
*   IT_ALV_GRAPHICS                   =
*   IT_EXCEPT_QINFO_LVC               =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
  TABLES
    T_OUTTAB                          gt_alv_itab
 EXCEPTIONS
   PROGRAM_ERROR                     1
   OTHERS                            2
          .
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.


ENDFORM.                    " DISPLAY_DATA



*FORM USER_COMMAND USING r_ucomm LIKE sy-ucomm
*                  rs_selfield TYPE slis_selfield.
*
*    CASE R_UCOMM.
*      WHEN 'BACK'.
*        LEAVE TO SCREEN 0.
*        ENDCASE.
*ENDFORM.
*
*form STATUS9000 using extab type slis_t_extab.           "#EC CALLED
*  set pf-status 'STATUS9000' excluding extab.
*endform.



0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场