原版日报表
来源:互联网 发布:google在线翻译软件 编辑:程序博客网 时间:2024/04/28 06:04
INCLUDE zppr_0017a_top.
*********************************
INCLUDE <icon>.
TABLES:marc,mvke.
*声明存放ALV显示内表类型
TYPES:BEGIN OF ty_alv_itab.
INCLUDE STRUCTURE zzt_pp_001.
TYPES:
zstatus_sc(220),"是否生产
zstatus_qh(220),"是否缺货
zqhqsrq TYPE d,"缺货起始日期
mvgr1 TYPE mvke-mvgr1,
bezei TYPE tvm1t-bezei,"描述
maktx TYPE makt-maktx,"物料描述
plnmg TYPE pbed-plnmg,"本月计划数
zmeng TYPE vbap-zmeng,"销售需求量
labst TYPE mard-labst,"库存数量
zqhjs TYPE menge13,"缺货数量(件)
zqhts TYPE menge13,"缺货天数
name1 TYPE t001w-name1,"工厂描述
lfimg TYPE lips-lfimg,"已发货数
menge TYPE mseg-menge,"当月已生产数量
lfimg1 TYPE lips-lfimg,"当月已发货数量
rowcolor(4),"行颜色
type_dd_hndl TYPE int4,"设置下拉
cellstyles TYPE lvc_t_styl,"样式
END OF ty_alv_itab.
TYPES:BEGIN OF ty_mvke,
matnr TYPE mvke-matnr,"物料
mvgr1 TYPE mvke-mvgr1,"物料组1
bezei TYPE tvm1t-bezei,"描述
END OF ty_mvke.
TYPES:BEGIN OF ty_pbim,
matnr TYPE pbim-matnr,"物料
werks TYPE pbim-werks,"工厂
plnmg TYPE pbed-plnmg,"需求数量
END OF ty_pbim.
DATA:
ok_code_9000 LIKE sy-ucomm,
ok_code_9001 LIKE sy-ucomm,
save_ok like sy-ucomm.
*ALV数量
DATA:
g_ischange,
g_tabnm(30) TYPE c VALUE 'ZZT_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,"ALV字段目录
gs_layout TYPE lvc_s_layo,"ALV样式
gt_exclude TYPE ui_functions,"ALV排除按钮
wcl_container TYPE REF TO cl_gui_docking_container,"容器类
wcl_alv TYPE REF TO cl_gui_alv_grid."ALV 类
*----------------------------------------------------------------------*
* CLASS lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
* 处理ALV事件类声明
*----------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS:
* 工具栏自定义按钮
handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
* 监控按钮
handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
* 数据改变
handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed e_onf4 e_onf4_before e_onf4_after e_ucomm,
* 数据改变后
handle_data_changed_finished FOR EVENT data_changed_finished OF
cl_gui_alv_grid
IMPORTING e_modified et_good_cells.
ENDCLASS. "lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
* 处理ALV事件类实现
*----------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
* handle toolbar
METHOD handle_toolbar.
PERFORM handle_toolbar USING e_object e_interactive.
ENDMETHOD. "handle_toolbar
* handler user command
METHOD handle_user_command.
PERFORM handle_user_command USING e_ucomm.
ENDMETHOD. "handle_user_command
* handler data changed
METHOD handle_data_changed.
PERFORM handle_data_changed USING er_data_changed e_onf4
e_onf4_before e_onf4_after e_ucomm.
ENDMETHOD. "handle_data_changed
* handler data changed finished
METHOD handle_data_changed_finished.
PERFORM handle_data_changed_finished USING e_modified et_good_cells.
ENDMETHOD. "handle_data_changed_finished
ENDCLASS. "lcl_event_handler IMPLEMENTATION
RANGES:
r_now FOR marc-mmstd,
r_erdat FOR vbak-erdat.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
s_werks FOR marc-werks OBLIGATORY MEMORY ID zwk,"工厂
s_xqdat FOR marc-mmstd NO-DISPLAY,"OBLIGATORY MEMORY ID zxq,"销售需求日期
s_qhdat FOR marc-mmstd NO-DISPLAY,"缺货起始日期
s_wcdat FOR marc-mmstd NO-DISPLAY,"实际完成日期
s_mvgr1 FOR mvke-mvgr1,"品牌
s_matnr FOR marc-matnr ."物料编码
PARAMETERS P_BUDAT like marc-mmstd DEFAULT sy-datum.
*PARAMETER:p_check AS CHECKBOX NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK b1.
INITIALIZATION.
PERFORM frm_init."初始化
AT SELECTION-SCREEN.
PERFORM frm_auth_check.
START-OF-SELECTION.
IF sy-batch = 'X' AND sy-uname = 'ZBIT'.
CLEAR:S_WERKS,S_WERKS[].
S_WERKS-sign = 'I'.
S_WERKS-option = 'CP'.
S_WERKS-low = '*'.
APPEND S_WERKS.
p_budat = sy-datum.
ENDIF.
IF p_budat = sy-datum.
PERFORM frm_get_data.
ELSEIF p_budat < sy-datum.
PERFORM frm_get_data1.
ELSEIF p_budat > sy-datum.
MESSAGE e008(zpp_001).
ENDIF.
IF sy-batch = 'X' AND sy-uname = 'ZBIT'.
PERFORM pf_save_data.
ENDIF.
PERFORM frm_added.
end-OF-SELECTION.
IF sy-batch ne 'X'.
IF p_budat = sy-datum.
call SCREEN 9000.
ELSEIF p_budat < sy-datum.
CALL SCREEN 9001.
ENDIF.
ENDIF.
INCLUDE zppr_0017a_pbo.
INCLUDE zppr_0017a_pai.
*&---------------------------------------------------------------------*
*& Form FRM_INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_INIT .
r_now-sign = 'I'.
r_now-option = 'BT'.
r_now-low = sy-datum.
r_now-low+6(2) = '01'.
CALL FUNCTION 'DATE_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = r_now-low
IMPORTING
E_DATE = r_now-high.
APPEND r_now.
s_xqdat-sign = 'I'.
s_xqdat-option = 'BT'.
s_xqdat-low = sy-datum.
s_xqdat-low+4(4) = '0101'.
s_xqdat-high = sy-datum.
APPEND s_xqdat.
* 后台运行数据自动清除,原因不明
r_erdat-sign = 'I'.
r_erdat-option = 'BT'.
r_erdat-LOW = sy-datum.
r_erdat-low+4(4) = '0101'.
r_erdat-high = sy-datum.
APPEND r_erdat.
ENDFORM. " FRM_INIT
*&---------------------------------------------------------------------*
*& Form FRM_AUTH_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_AUTH_CHECK .
DATA lt_t001w LIKE TABLE OF t001w WITH HEADER LINE.
DATA lt_tvm1 LIKE TABLE OF tvm1 WITH HEADER LINE.
SELECT werks
INTO CORRESPONDING FIELDS OF TABLE lt_t001w
FROM t001w
WHERE werks IN s_werks.
SELECT mvgr1
INTO CORRESPONDING FIELDS OF TABLE lt_tvm1
FROM tvm1
WHERE mvgr1 IN s_mvgr1.
LOOP AT lt_t001w.
CALL FUNCTION 'ZZ_CHECK_REPAUTH'
EXPORTING
I_MODULE = 'PP'
I_WERKS = lt_t001w-WERKS
EXCEPTIONS
not_authorized = 1
no_modue = 2
OTHERS = 3.
IF sy-subrc <> 0.
ENDIF.
ENDLOOP.
LOOP AT lt_tvm1.
AUTHORITY-CHECK OBJECT 'ZZ_MM005'
ID 'MVGR1' FIELD lt_tvm1-mvgr1.
IF sy-subrc <> 0.
MESSAGE e004(zcomm) WITH lt_tvm1-mvgr1.
ENDIF.
ENDLOOP.
ENDFORM. " FRM_AUTH_CHECK
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_DATA .
CLEAR:gs_alv_itab,gt_alv_itab[].
DATA:
lt_mvke TYPE TABLE OF ty_mvke WITH HEADER LINE,
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_lips type TABLE OF lips WITH HEADER LINE,
lt_pp_01 type TABLE OF zzt_pp_001 WITH HEADER LINE.
*取物料工厂数据
SELECT t01~matnr"物料
t01~werks"工厂
t02~maktx"物料描述
t03~name1"工厂描述
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~matnr IN s_matnr
AND t01~werks IN s_werks
AND t04~mtart = 'FERT'.
* 取物料组数据
SELECT t01~matnr"物料
t01~mvgr1 "物料组1
t02~bezei"描述
FROM mvke AS t01
INNER JOIN tvm1t AS t02 ON t01~mvgr1 = t02~mvgr1 AND t02~spras = '1'
INTO CORRESPONDING FIELDS OF TABLE lt_mvke
WHERE t01~matnr IN s_matnr.
* 库存数量
SELECT matnr "物料
werks"工厂
lgort"库存地点
labst"库存数
* SUM( labst ) AS labst"库存数累计
FROM mard
INTO CORRESPONDING FIELDS OF TABLE lt_mard
WHERE matnr IN s_matnr
AND werks IN s_werks.
* GROUP BY matnr werks.
* 本月需求数量
SELECT matnr "物料
werks "工厂
SUM( plnmg ) AS plnmg"需求数量
FROM pbim AS t01
INNER JOIN pbed AS t02 ON t01~bdzei = t02~bdzei
INTO CORRESPONDING FIELDS OF TABLE lt_pbim
WHERE matnr IN s_matnr
AND werks IN s_werks
AND versb = '00'
* AND pdatu IN r_now
AND t01~loevr = ''
AND t02~loevr = ''
GROUP BY matnr werks.
* 销售数量
SELECT t01~vbeln"销售订单
t01~posnr"销售订单行
t01~matnr "物料
t01~werks "工厂
t01~zmeng "销售订单数量
t01~kwmeng "销售订单数量
t02~edatu AS erdat"计划交货日期
FROM vbap AS t01
INNER JOIN vbep AS t02 ON t01~vbeln = t02~vbeln AND t01~posnr = t02~posnr
INNER JOIN vbak AS t03 ON t01~vbeln = t03~vbeln
INTO CORRESPONDING FIELDS OF TABLE lt_vbap
WHERE t01~matnr IN s_matnr
AND t01~werks IN s_werks
* AND t02~edatu IN s_xqdat
AND t02~edatu IN r_erdat
AND t01~abgru = ''
AND t03~auart IN ('ZBOR','ZBFR').
* 已交货数量
IF lt_vbap[] IS NOT INITIAL .
SELECT t01~vbeln "交货单
t01~posnr "交货单行
t01~matnr "物料
t01~werks "工厂
t01~lfimg "交货数量
t01~vgbel "参考凭证
t01~vgpos "凭证行
FROM lips AS t01
INNER JOIN vbup AS t02 ON t01~vbeln = t02~vbeln AND t01~posnr = t02~posnr AND t02~wbsta = 'C'
INTO CORRESPONDING FIELDS OF TABLE lt_lips
FOR ALL ENTRIES IN lt_vbap
WHERE t01~vgbel = lt_vbap-vbeln
AND t01~vgpos = lt_vbap-posnr
AND t01~pstyv BETWEEN 'ZANN' AND 'ZTAN'.
ENDIF.
* 取保存数据
SELECT *
FROM zzt_pp_001
INTO TABLE lt_pp_01
WHERE matnr IN s_matnr
AND werks IN s_werks.
LOOP AT lt_vbap.
IF lt_vbap-zmeng IS INITIAL.
lt_vbap-zmeng = lt_vbap-kwmeng.
MODIFY lt_vbap.
ENDIF.
ENDLOOP.
LOOP AT gt_alv_itab.
* 读取品牌
READ TABLE lt_mvke WITH KEY matnr = gt_alv_itab-matnr.
IF sy-subrc = 0.
gt_alv_itab-mvgr1 = lt_mvke-mvgr1. "物料组1
gt_alv_itab-bezei = lt_mvke-bezei."描述
ENDIF.
** 读取库存数量
* READ TABLE lt_mard WITH KEY matnr = gt_alv_itab-matnr
* werks = gt_alv_itab-werks.
* IF sy-subrc = 0.
* gt_alv_itab-labst = lt_mard-labst."库存数量
* ENDIF.
* 非限制数量
LOOP AT lt_mard WHERE matnr = gt_alv_itab-matnr
AND werks = gt_alv_itab-werks.
IF lt_mard-werks = '1000'.
CASE lt_mard-lgort.
WHEN '1001' OR '1004' OR '1007' OR '1010' OR '1012' OR '1014' OR '1015'.
WHEN OTHERS.
CONTINUE.
ENDCASE.
ELSEIF lt_mard-werks = '1010'.
CASE lt_mard-lgort.
WHEN '1001' OR '1004' OR '1005' OR '1010' OR '1012' OR '1015'.
WHEN OTHERS.
CONTINUE.
ENDCASE.
ELSEIF lt_mard-werks = '1020'.
CASE lt_mard-lgort.
WHEN '1001' OR '1004' OR '1007' OR '1010' OR '1012' OR '1015'.
WHEN OTHERS.
CONTINUE.
ENDCASE.
ELSEIF lt_mard-werks = '1030'.
CASE lt_mard-lgort.
WHEN '1001' OR '1004' OR '1005' OR '1007' OR '1010' OR '1015'.
WHEN OTHERS.
CONTINUE.
ENDCASE.
ENDIF.
ADD lt_mard-labst TO gt_alv_itab-labst.
ENDLOOP.
* 读取本月计划数量
READ TABLE lt_pbim WITH KEY matnr = gt_alv_itab-matnr
werks = gt_alv_itab-werks.
IF sy-subrc = 0.
gt_alv_itab-plnmg = lt_pbim-plnmg."计划数量
ENDIF.
* 读取保存数据
READ TABLE lt_pp_01 WITH KEY matnr = gt_alv_itab-matnr
werks = gt_alv_itab-werks.
IF sy-subrc = 0.
gt_alv_itab-zqhyy = lt_pp_01-zqhyy."缺货原因
gt_alv_itab-zzrbm = lt_pp_01-zzrbm."责任部门
gt_alv_itab-zzrr = lt_pp_01-zzrr."责任人
gt_alv_itab-zsjwcrq = lt_pp_01-zsjwcrq."实际完成日期
gt_alv_itab-zsfsc = lt_pp_01-zsfsc."是否生产
gt_alv_itab-zznote = lt_pp_01-zznote."备注
ENDIF.
* 累计已发货数,抵扣销售需求数量
LOOP AT lt_lips WHERE matnr = gt_alv_itab-matnr
AND werks = gt_alv_itab-werks.
ADD lt_lips-lfimg TO gt_alv_itab-lfimg.
* 扣减销售数量
READ TABLE lt_vbap WITH KEY vbeln = lt_lips-vgbel
posnr = lt_lips-vgpos.
IF sy-subrc = 0.
lt_vbap-zmeng = lt_vbap-zmeng - lt_lips-lfimg.
MODIFY lt_vbap INDEX sy-tabix.
ENDIF.
ENDLOOP.
DELETE lt_vbap WHERE zmeng = 0."删除完全交货的销售订单
SORT lt_vbap BY matnr werks erdat.
* 首个交货计划日期
READ TABLE lt_vbap WITH KEY matnr = gt_alv_itab-matnr
werks = gt_alv_itab-werks.
IF sy-subrc = 0.
gt_alv_itab-zqhqsrq = lt_vbap-erdat.
ENDIF.
* 累计销售需求数量
LOOP AT lt_vbap WHERE matnr = gt_alv_itab-matnr
AND werks = gt_alv_itab-werks.
ADD lt_vbap-zmeng TO gt_alv_itab-zmeng.
ENDLOOP.
* 缺货数量(件) = 销售需求数量 - 库存数量
gt_alv_itab-zqhjs = gt_alv_itab-zmeng - gt_alv_itab-labst.
IF gt_alv_itab-zqhjs > 0.
gt_alv_itab-zstatus_qh = icon_led_red.
ELSE.
gt_alv_itab-zstatus_qh = icon_led_green.
ENDIF.
CASE gt_alv_itab-zsfsc.
WHEN '是'.
gt_alv_itab-zstatus_sc = icon_led_green.
WHEN '否'.
gt_alv_itab-zstatus_sc = icon_led_red.
WHEN OTHERS.
gt_alv_itab-zsfsc = '其他'.
gt_alv_itab-zstatus_sc = icon_led_yellow.
ENDCASE.
* 缺货天数 = 实际完成时间 - 缺货起始日
IF gt_alv_itab-zqhqsrq IS NOT INITIAL
AND gt_alv_itab-zsjwcrq IS NOT INITIAL.
gt_alv_itab-zqhts = gt_alv_itab-zsjwcrq - gt_alv_itab-zqhqsrq.
ENDIF.
gt_alv_itab-type_dd_hndl = '1'.
*'MVGR1' '品牌'
MODIFY gt_alv_itab.
CLEAR gt_alv_itab.
ENDLOOP.
DELETE gt_alv_itab WHERE zqhqsrq NOT IN s_qhdat."缺货起始日期
DELETE gt_alv_itab WHERE zsjwcrq NOT IN s_wcdat."实际完成日期
DELETE gt_alv_itab WHERE mvgr1 NOT IN s_mvgr1."品牌
PERFORM FRM_ADD_FAHUO. "ADD BY PYM 20121019
SORT gt_alv_itab BY zstatus_sc.
ENDFORM. " FRM_GET_DATA
*&---------------------------------------------------------------------*
*& Form FRM_ADD_FAHUO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_ADD_FAHUO .
*本月发货
DATA:BEGIN OF L_T_MATNR OCCURS 0,
MATNR LIKE MAKT-MATNR,
END OF L_T_MATNR.
DATA:BEGIN OF L_T_LIPS OCCURS 0,
VBELN LIKE LIPS-VBELN,
POSNR LIKE LIPS-POSNR,
VGBEL LIKE LIPS-VGBEL,
VGPOS LIKE LIPS-VGPOS,
PSTYV LIKE LIPS-PSTYV,
MATNR LIKE LIPS-MATNR,
WERKS LIKE LIPS-WERKS,
LFIMG LIKE LIPS-LFIMG,
END OF L_T_LIPS.
DATA:BEGIN OF L_T_LIKP OCCURS 0,
VBELN LIKE LIKP-VBELN,
WADAT_IST LIKE LIKP-WADAT_IST,
END OF L_T_LIKP.
DATA:BEGIN OF L_T_VBUP OCCURS 0,
VBELN LIKE VBUP-VBELN,
POSNR LIKE VBUP-POSNR,
LFSTA LIKE VBUP-LFSTA,
END OF L_T_VBUP.
DATA:BEGIN OF L_T_LIPS1 OCCURS 0,
MATNR LIKE LIPS-MATNR,
WERKS LIKE LIPS-WERKS,
LFIMG LIKE LIPS-LFIMG,
END OF L_T_LIPS1.
DATA:BEGIN OF L_T_MKPF OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
MJAHR LIKE MKPF-MJAHR,
VGART LIKE MKPF-VGART,
BLART LIKE MKPF-BLART,
BUDAT LIKE MKPF-BUDAT,
END OF L_T_MKPF.
DATA:BEGIN OF L_T_MSEG OCCURS 0,
MBLNR LIKE MSEG-MBLNR,
MJAHR LIKE MSEG-MJAHR,
ZEILE LIKE MSEG-ZEILE,
BWART LIKE MSEG-BWART,
MATNR LIKE MSEG-MATNR,
WERKS LIKE MSEG-WERKS,
LGORT LIKE MSEG-LGORT,
CHARG LIKE MSEG-CHARG,
INSMK LIKE MSEG-INSMK,
SHKZG LIKE MSEG-SHKZG,
BWTAR LIKE MSEG-BWTAR,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
END OF L_T_MSEG.
DATA:BEGIN OF L_T_MSEG1 OCCURS 0,
MATNR LIKE MSEG-MATNR,
WERKS LIKE MSEG-WERKS,
MENGE LIKE MSEG-MENGE,
END OF L_T_MSEG1.
DATA L_T_FIRST_DAY TYPE D.
CONCATENATE P_BUDAT+0(6) '01' INTO L_T_FIRST_DAY.
IF gt_alv_itab[] IS NOT INITIAL.
SELECT VBELN
POSNR
VGBEL
VGPOS
PSTYV
MATNR
WERKS
LFIMG
INTO CORRESPONDING FIELDS OF TABLE L_T_LIPS
FROM LIPS
FOR ALL ENTRIES IN gt_alv_itab
WHERE MATNR = gt_alv_itab-MATNR
AND WERKS = gt_alv_itab-WERKS
AND PSTYV IN ('ZTAN', 'ZANN').
ENDIF.
IF L_T_LIPS[] IS NOT INITIAL.
SELECT
VBELN
WADAT_IST
INTO CORRESPONDING FIELDS OF TABLE L_T_LIKP
FROM LIKP
FOR ALL ENTRIES IN L_T_LIPS
WHERE VBELN = L_T_LIPS-VBELN
AND WADAT_IST BETWEEN L_T_FIRST_DAY AND P_BUDAT.
SELECT
VBELN
POSNR
LFSTA
INTO CORRESPONDING FIELDS OF TABLE L_T_VBUP
FROM VBUP
FOR ALL ENTRIES IN L_T_LIPS
WHERE VBELN = L_T_LIPS-VGBEL
AND POSNR = L_T_LIPS-VGPOS
AND LFSTA = 'C'.
ENDIF.
SORT L_T_LIPS BY VBELN.
SORT L_T_LIKP BY VBELN.
LOOP AT L_T_LIPS.
READ TABLE L_T_LIKP WITH KEY VBELN = L_T_LIPS-VBELN BINARY SEARCH.
IF SY-SUBRC NE 0.
DELETE L_T_LIPS.
ELSE.
READ TABLE L_T_VBUP WITH KEY VBELN = L_T_LIPS-VGBEL POSNR = L_T_LIPS-VGPOS.
IF SY-SUBRC NE 0.
DELETE L_T_LIPS.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT L_T_LIPS.
L_T_LIPS1-MATNR = L_T_LIPS-MATNR.
L_T_LIPS1-WERKS = L_T_LIPS-WERKS.
L_T_LIPS1-LFIMG = L_T_LIPS-LFIMG.
COLLECT L_T_LIPS1.
ENDLOOP.
SORT L_T_LIPS1 BY MATNR WERKS.
*本月生产
select
MBLNR
MJAHR
VGART
BLART
BUDAT
INTO CORRESPONDING FIELDS OF TABLE L_T_MKPF
FROM MKPF
WHERE BUDAT BETWEEN L_T_FIRST_DAY AND P_BUDAT.
IF L_T_MKPF[] IS NOT INITIAL.
SELECT
MBLNR
MJAHR
ZEILE
BWART
MATNR
WERKS
LGORT
CHARG
INSMK
SHKZG
BWTAR
MENGE
MEINS
INTO CORRESPONDING FIELDS OF TABLE L_T_MSEG
FROM MSEG
FOR ALL ENTRIES IN L_T_MKPF
WHERE MBLNR = L_T_MKPF-MBLNR
AND MJAHR = L_T_MKPF-MJAHR
AND WERKS IN s_werks
AND BWART IN ('101','102').
ENDIF.
loop at L_T_MSEG.
READ TABLE gt_alv_itab WITH KEY matnr = L_T_MSEG-matnr werks = L_T_MSEG-werks.
if sy-subrc ne 0.
delete l_t_mseg.
endif.
ENDLOOP.
LOOP AT L_T_MSEG.
L_T_MSEG1-MATNR = L_T_MSEG-MATNR.
L_T_MSEG1-WERKS = L_T_MSEG-WERKS.
IF L_T_MSEG-SHKZG = 'H'.
L_T_MSEG1-MENGE = 0 - L_T_MSEG-MENGE.
ELSE.
L_T_MSEG1-MENGE = L_T_MSEG-MENGE.
ENDIF.
COLLECT L_T_MSEG1.
CLEAR L_T_MSEG1.
ENDLOOP.
SORT L_T_MSEG1 BY MATNR WERKS.
LOOP AT gt_alv_itab.
READ TABLE L_T_MSEG1 WITH KEY MATNR = gt_alv_itab-MATNR WERKS = gt_alv_itab-WERKS.
IF SY-SUBRC = 0.
gt_alv_itab-MENGE = L_T_MSEG1-MENGE.
ENDIF.
READ TABLE L_T_LIPS1 WITH KEY MATNR = gt_alv_itab-MATNR WERKS = gt_alv_itab-WERKS.
IF SY-SUBRC = 0.
gt_alv_itab-LFIMG1 = L_T_LIPS1-LFIMG.
ENDIF.
MODIFY gt_alv_itab TRANSPORTING MENGE LFIMG1.
ENDLOOP.
ENDFORM. " FRM_ADD_FAHUO
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_DATA1 .
SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_alv_itab
FROM ZZT_PP_002
WHERE budat = P_BUDAT
AND matnr IN s_matnr
AND MVGR1 IN s_mvgr1
AND WERKS IN S_WERKS.
DATA:BEGIN OF l_t_TVM1T OCCURS 0,
SPRAS LIKE TVM1T-SPRAS,"语言代码
MVGR1 LIKE TVM1T-MVGR1,"物料组1
BEZEI LIKE TVM1T-BEZEI,"描述
END OF l_t_TVM1T.
DATA:BEGIN OF l_t_MAKT OCCURS 0,
MATNR LIKE MAKT-MATNR,"物料号
SPRAS LIKE MAKT-SPRAS,"语言代码
MAKTX LIKE MAKT-MAKTX,"物料描述(短文本)
MAKTG LIKE MAKT-MAKTG,"有关匹配码的大写的物料描述
END OF l_t_MAKT.
DATA:BEGIN OF l_t_T001W OCCURS 0,
WERKS like T001W-WERKS, "工厂
NAME1 like T001W-NAME1, "名称
END OF l_t_T001W.
select
SPRAS
MVGR1
BEZEI
INTO CORRESPONDING FIELDS OF TABLE l_t_TVM1T
FROM TVM1T
WHERE SPRAS = '1'.
SELECT
MATNR
SPRAS
MAKTX
MAKTG
INTO CORRESPONDING FIELDS OF TABLE l_t_MAKT
FROM makt
WHERE SPRAS = '1'.
SELECT
WERKS
NAME1
INTO CORRESPONDING FIELDS OF TABLE L_T_T001W
FROM T001W
.
LOOP AT gt_alv_itab.
CASE gt_alv_itab-zsfsc.
WHEN '是'.
gt_alv_itab-zstatus_sc = icon_led_green.
WHEN '否'.
gt_alv_itab-zstatus_sc = icon_led_red.
WHEN '其他'.
gt_alv_itab-zstatus_sc = icon_led_yellow.
WHEN OTHERS.
ENDCASE.
IF gt_alv_itab-zqhjs > 0.
gt_alv_itab-zstatus_qh = icon_led_red.
ELSE.
gt_alv_itab-zstatus_qh = icon_led_green.
ENDIF.
* READ TABLE l_t_TVM1T WITH KEY MVGR1 = gt_alv_itab-mvgr1 .
* if sy-subrc = 0.
* gt_alv_itab-bezei = l_t_TVM1T-bezei.
* endif.
READ TABLE l_t_TVM1T WITH KEY MVGR1 = gt_alv_itab-mvgr1 .
if sy-subrc = 0.
gt_alv_itab-bezei = l_t_TVM1T-bezei.
endif.
READ TABLE l_t_MAKT WITH KEY MATNR = gt_alv_itab-MATNR .
if sy-subrc = 0.
gt_alv_itab-MAKTX = l_t_MAKT-MAKTX.
endif.
READ TABLE L_T_T001W WITH KEY WERKS = gt_alv_itab-WERKS .
if sy-subrc = 0.
gt_alv_itab-NAME1 = L_T_T001W-NAME1.
endif.
MODIFY gt_alv_itab TRANSPORTING zstatus_sc zstatus_qh bezei MAKTX NAME1.
CLEAR gt_alv_itab.
ENDLOOP.
SORT gt_alv_itab BY zstatus_sc.
ENDFORM. " FRM_GET_DATA1
*&---------------------------------------------------------------------*
*& Form PF_SAVE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PF_SAVE_DATA .
*5日内生产数
DATA:BEGIN OF L_T_MKPF_1 OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
MJAHR LIKE MKPF-MJAHR,
VGART LIKE MKPF-VGART,
BLART LIKE MKPF-BLART,
BUDAT LIKE MKPF-BUDAT,
END OF L_T_MKPF_1.
DATA:BEGIN OF L_T_MSEG_1 OCCURS 0,
MBLNR LIKE MSEG-MBLNR,
MJAHR LIKE MSEG-MJAHR,
ZEILE LIKE MSEG-ZEILE,
BWART LIKE MSEG-BWART,
MATNR LIKE MSEG-MATNR,
WERKS LIKE MSEG-WERKS,
LGORT LIKE MSEG-LGORT,
CHARG LIKE MSEG-CHARG,
INSMK LIKE MSEG-INSMK,
SHKZG LIKE MSEG-SHKZG,
BWTAR LIKE MSEG-BWTAR,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
END OF L_T_MSEG_1.
DATA:BEGIN OF L_T_MSEG1_1 OCCURS 0,
MATNR LIKE MSEG-MATNR,
WERKS LIKE MSEG-WERKS,
MENGE LIKE MSEG-MENGE,
END OF L_T_MSEG1_1.
DATA L_V_FIVE_DAY TYPE D.
*P_BUDAT
L_V_FIVE_DAY = P_BUDAT - 5 + 1.
select
MBLNR
MJAHR
VGART
BLART
BUDAT
INTO CORRESPONDING FIELDS OF TABLE L_T_MKPF_1
FROM MKPF
WHERE BUDAT BETWEEN L_V_FIVE_DAY AND P_BUDAT.
IF L_T_MKPF_1[] IS NOT INITIAL.
SELECT
MBLNR
MJAHR
ZEILE
BWART
MATNR
WERKS
LGORT
CHARG
INSMK
SHKZG
BWTAR
MENGE
MEINS
INTO CORRESPONDING FIELDS OF TABLE L_T_MSEG_1
FROM MSEG
FOR ALL ENTRIES IN L_T_MKPF_1
WHERE MBLNR = L_T_MKPF_1-MBLNR
AND MJAHR = L_T_MKPF_1-MJAHR
AND WERKS IN s_werks
AND BWART IN ('101','102').
ENDIF.
LOOP AT L_T_MSEG_1.
L_T_MSEG1_1-MATNR = L_T_MSEG_1-MATNR.
L_T_MSEG1_1-WERKS = L_T_MSEG_1-WERKS.
IF L_T_MSEG_1-SHKZG = 'H'.
L_T_MSEG1_1-MENGE = 0 - L_T_MSEG_1-MENGE.
ELSE.
L_T_MSEG1_1-MENGE = L_T_MSEG_1-MENGE.
ENDIF.
COLLECT L_T_MSEG1_1.
CLEAR L_T_MSEG1_1.
ENDLOOP.
SORT L_T_MSEG1_1 BY MATNR WERKS.
*5日前缺货数
L_V_FIVE_DAY = L_V_FIVE_DAY - 1.
DATA L_T_PP002 LIKE TABLE OF ZZT_PP_002 WITH HEADER LINE.
SELECT * INTO CORRESPONDING FIELDS OF TABLE L_T_PP002
FROM ZZT_PP_002 WHERE
budat = L_V_FIVE_DAY
AND matnr IN s_matnr
AND MVGR1 IN s_mvgr1
AND WERKS IN S_WERKS.
DATA WT_TEMP LIKE TABLE OF ZZT_PP_002 WITH HEADER LINE.
loop at gt_alv_itab.
MOVE-CORRESPONDING gt_alv_itab to WT_TEMP.
WT_TEMP-budat = sy-datum.
READ TABLE L_T_MSEG1_1 WITH KEY MATNR = WT_TEMP-MATNR WERKS = WT_TEMP-WERKS.
IF SY-SUBRC = 0.
WT_TEMP-MENGE1 = L_T_MSEG1_1-MENGE."5日内生产数
ENDIF.
READ TABLE L_T_PP002 WITH KEY WERKS = WT_TEMP-WERKS MATNR = WT_TEMP-MATNR.
IF SY-SUBRC = 0.
WT_TEMP-MENGE2 = L_T_PP002-zqhjs."5日前缺货数
ENDIF.
WT_TEMP-UZEIT = SY-UZEIT.
append WT_TEMP.
clear WT_TEMP.
ENDLOOP.
DATA: TIME1 TYPE P, TIME2 TYPE P.
GET RUN TIME FIELD TIME1.
MODIFY ZZT_PP_002 FROM TABLE WT_TEMP.
IF sy-subrc = 0.
COMMIT WORK AND WAIT.
GET RUN TIME FIELD TIME2.
TIME1 = TIME2 - TIME1.
WRITE: / 'SUCESS' COLOR COL_HEADING.
WRITE: / TIME1.
ULINE.
ELSE.
ROLLBACK WORK.
FORMAT COLOR COL_KEY.
WRITE: / 'sy-subrc = ' , SY-SUBRC .
ENDIF.
ENDFORM. " PF_SAVE_DATA
*&---------------------------------------------------------------------*
*& Form FRM_ADDED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_ADDED .
DATA WT_TEMP LIKE ZZT_FI_005.
WT_TEMP-DATUM = SY-DATUM.
WT_TEMP-UZEIT = SY-UZEIT.
WT_TEMP-UNAME = SY-UNAME.
WT_TEMP-TCODE = SY-TCODE.
WT_TEMP-CPROG = SY-CPROG.
WT_TEMP-BATCH = SY-BATCH.
WT_TEMP-CALLD = SY-CALLD.
CONCATENATE 'werks:' s_werks-LOW ',' s_werks-HIGH ';mvgr1:' s_mvgr1-LOW ',' s_mvgr1-HIGH
';matnr:' s_matnr-LOW ',' s_matnr-HIGH ';BUDAT:' P_BUDAT INTO WT_TEMP-TITLE.
MODIFY ZZT_FI_005 FROM WT_TEMP.
IF SY-SUBRC = 0.
* IF sy-subrc <> 0.
* ROLLBACK WORK.
* ELSE.
COMMIT WORK.
ENDIF.
ENDFORM. " FRM_ADDED
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
* 显示ALV
*----------------------------------------------------------------------*
FORM frm_display_alv.
IF wcl_container IS INITIAL.
PERFORM frm_create_container.
PERFORM frm_exclude.
PERFORM frm_variant USING '1' CHANGING gs_variant.
PERFORM frm_pre_layout.
PERFORM frm_pre_fieldcat.
PERFORM frm_prepare_drilldown_values.
PERFORM frm_upload_event.
PERFORM frm_set_tab_display.
ELSE.
PERFORM frm_refresh_alv.
ENDIF.
ENDFORM. " FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
*& Form frm_create_container
*&---------------------------------------------------------------------*
* 创建ALV容器,并将类添加到容器
*----------------------------------------------------------------------*
FORM frm_create_container .
CREATE OBJECT wcl_container
EXPORTING
repid = sy-repid
dynnr = sy-dynnr
ratio = 95
side = cl_gui_docking_container=>dock_at_top.
CREATE OBJECT wcl_alv
EXPORTING
i_parent = wcl_container.
ENDFORM. " frm_create_container
*&---------------------------------------------------------------------*
*& Form FRM_EXCLUDE
*&---------------------------------------------------------------------*
* 排除按钮
*----------------------------------------------------------------------*
FORM frm_exclude .
DATA ls_exclude TYPE ui_func.
*排除打印按钮
ls_exclude = cl_gui_alv_grid=>mc_fc_print .
APPEND ls_exclude TO gt_exclude.
*排除添加、删除、插入、复制按钮
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row .
APPEND ls_exclude TO gt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row .
APPEND ls_exclude TO gt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy .
APPEND ls_exclude TO gt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut .
APPEND ls_exclude TO gt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row .
APPEND ls_exclude TO gt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row .
APPEND ls_exclude TO gt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row .
APPEND ls_exclude TO gt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste .
APPEND ls_exclude TO gt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row .
APPEND ls_exclude TO gt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo .
APPEND ls_exclude TO gt_exclude.
ENDFORM. " FRM_EXCLUDE
*&---------------------------------------------------------------------*
*& Form FRM_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PS_VARIANT text
*----------------------------------------------------------------------*
FORM frm_variant USING mode CHANGING ps_variant TYPE disvariant.
ps_variant-report = sy-repid."ABAP 程序名称
ps_variant-handle = mode."从相同程序重复调用管理标识
ps_variant-log_group = ''."逻辑组名
ps_variant-username = sy-uname."特定用户存储的用户名称
ps_variant-variant = ''."格式
ps_variant-text = ''."布局的描述
ps_variant-dependvars = '' ."相关变式条目向量
ENDFORM. " FRM_VARIANT
*&---------------------------------------------------------------------*
*& Form frm_pre_layout
*&---------------------------------------------------------------------*
* 设置ALV样式
*----------------------------------------------------------------------*
FORM frm_pre_layout .
gs_layout-zebra = 'X'.
gs_layout-sel_mode = 'A'.
* gs_layout-cwidth_opt = 'X'.
gs_layout-info_fname = 'ROWCOLOR'.
gs_layout-stylefname = 'CELLSTYLES'.
ENDFORM. " frm_pre_layout
*&---------------------------------------------------------------------*
*& Form frm_pre_fieldcat
*&---------------------------------------------------------------------*
* 设置字段目录属性
*----------------------------------------------------------------------*
FORM frm_pre_fieldcat .
PERFORM frm_fieldcat USING :
'ZSTATUS_SC' '是否生产' 'X' space space space space space 10 space ,
'ZSTATUS_QH' '是否缺货' 'X' space space space space space 10 space,
'ZQHQSRQ' '缺货起始日期' space space space space space space 12 space,
*'MVGR1' '品牌' space space space space space space 12 space,
'BEZEI' '品牌' space space space space space space 12 space,
'MATNR' '产品编码' space space space space space space 10 space,
'MAKTX' '产品名称、规格' space space space space space space 20 space,
'PLNMG' '本月计划数' space space space space space space 12 space,
'ZMENG' '销售需求量' space space space space space space 12 space,
'LABST' '库存数量' space space space space space space 10 space,
'ZQHJS' '缺货数量(件)' space space space space space space 14 space,
'ZQHYY' '缺货原因' space 'X' space space space space 50 space,
'WERKS' '工厂编码' space space space space space space 10 space,
'NAME1' '工厂描述' space space space space space space 20 space,
'ZZRBM' '责任部门' space 'X' space space space space 10 space,
'ZZRR' '责任人' space 'X' space space space space 10 space,
'ZSJWCRQ' '预计排产时间' space 'X' space space space space 14 space,"实际完成时间:改为预计排产时间
'ZQHTS' '缺货天数' space space space space space space 10 space,
'LFIMG' '已发货数' space space space space space space 10 space,
'MENGE' '当月已生产数量' space space space space space space 10 space,
'LFIMG1' '当月已发货数量' space space space space space space 10 space,
'ZSFSC' '是否生产' space 'X' space space space space 10 'TYPE_DD_HNDL',
'ZZNOTE' '计划下单时间' space 'X' space space space space 50 space."备注改为: 计划下单时间
ENDFORM. " frm_pre_fieldcat
*&---------------------------------------------------------------------*
*& Form frm_fieldcat
*&---------------------------------------------------------------------*
* 设置字段目录
*----------------------------------------------------------------------*
FORM frm_fieldcat USING p_field p_text p_icon p_edit p_f4 p_ref_tab p_ref_fld p_checkbox p_outputlen p_drdn_field.
DATA lw_fcat TYPE lvc_s_fcat.
lw_fcat-fieldname = p_field.
lw_fcat-coltext = p_text.
lw_fcat-icon = p_icon.
lw_fcat-edit = p_edit.
lw_fcat-f4availabl = p_f4.
lw_fcat-ref_table = p_ref_tab.
lw_fcat-ref_field = p_ref_fld.
lw_fcat-checktable = p_ref_tab.
lw_fcat-checkbox = p_checkbox.
lw_fcat-outputlen = p_outputlen.
lw_fcat-drdn_field = p_drdn_field.
lw_fcat-no_zero = 'X'.
lw_fcat-do_sum = 'X'.
APPEND lw_fcat TO gt_fieldcat.
ENDFORM. " frm_fieldcat
*&---------------------------------------------------------------------*
*& Form frm_prepare_drilldown_values
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_prepare_drilldown_values.
DATA lt_ddval TYPE lvc_t_drop .
DATA ls_ddval TYPE lvc_s_drop .
ls_ddval-handle = '1' .
ls_ddval-value = '是' .
APPEND ls_ddval TO lt_ddval .
ls_ddval-handle = '1' .
ls_ddval-value = '否' .
APPEND ls_ddval TO lt_ddval .
ls_ddval-handle = '1' .
ls_ddval-value = '其他' .
APPEND ls_ddval TO lt_ddval .
CALL METHOD wcl_alv->set_drop_down_table
EXPORTING
it_drop_down = lt_ddval.
ENDFORM. " frm_prepare_drilldown_values
*&---------------------------------------------------------------------*
*& Form frm_upload_event
*&---------------------------------------------------------------------*
* 注册事件
*----------------------------------------------------------------------*
FORM frm_upload_event .
DATA lr_event_handler TYPE REF TO lcl_event_handler.
CREATE OBJECT lr_event_handler.
SET HANDLER lr_event_handler->handle_toolbar FOR wcl_alv.
SET HANDLER lr_event_handler->handle_user_command FOR wcl_alv.
CALL METHOD wcl_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified
EXCEPTIONS
error = 1
OTHERS = 2.
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 lr_event_handler->handle_data_changed FOR wcl_alv.
SET HANDLER lr_event_handler->handle_data_changed_finished FOR
wcl_alv.
ENDFORM. " frm_upload_event
*&---------------------------------------------------------------------*
*& Form frm_set_tab_display
*&---------------------------------------------------------------------*
* 显示ALV
*----------------------------------------------------------------------*
FORM frm_set_tab_display .
CALL METHOD wcl_alv->set_table_for_first_display
EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
is_variant = gs_variant
i_save = 'A'
i_default = 'X'
is_layout = gs_layout
* IS_PRINT =
* IT_SPECIAL_GROUPS =
it_toolbar_excluding = gt_exclude
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
* IR_SALV_ADAPTER =
CHANGING
it_outtab = gt_alv_itab[]
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.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " frm_set_tab_display
*&---------------------------------------------------------------------*
*& Form frm_refresh_alv
*&---------------------------------------------------------------------*
* 刷新ALV
*----------------------------------------------------------------------*
FORM frm_refresh_alv .
*刷新稳定性
DATA: lw_stbl TYPE lvc_s_stbl.
lw_stbl-row = 'X'.
lw_stbl-col = 'X'.
CALL METHOD wcl_alv->refresh_table_display
EXPORTING
is_stable = lw_stbl
* I_SOFT_REFRESH =
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " frm_refresh_alv
*&---------------------------------------------------------------------*
*& Form frm_save_data
*&---------------------------------------------------------------------*
* 保存数据
*----------------------------------------------------------------------*
FORM frm_save_data USING p_title p_text CHANGING p_answer.
DATA:
lt_pp_01 TYPE TABLE OF zzt_pp_001 WITH HEADER LINE.
DATA:
lt_row TYPE lvc_t_row,
lt_row2 TYPE lvc_t_roid.
CALL METHOD wcl_alv->get_selected_rows
IMPORTING
et_index_rows = lt_row
et_row_no = lt_row2.
PERFORM frm_check_changed_data USING wcl_alv.
LOOP AT gt_alv_itab.
MOVE-CORRESPONDING gt_alv_itab TO lt_pp_01.
APPEND lt_pp_01.
CLEAR lt_pp_01.
ENDLOOP.
IF g_ischange = 'X'.
IF p_title IS INITIAL OR p_text IS INITIAL.
p_answer = '1'.
ELSE.
PERFORM frm_confirm USING p_title p_text CHANGING p_answer.
ENDIF.
IF p_answer = '1'.
MODIFY (g_tabnm) FROM TABLE lt_pp_01.
CLEAR g_ischange .
ENDIF.
ENDIF.
ENDFORM. " frm_save_data
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_CHANGED_DATA
*&---------------------------------------------------------------------*
* 获取改变数据
*----------------------------------------------------------------------*
FORM frm_check_changed_data USING pcl_alv TYPE REF TO cl_gui_alv_grid.
DATA:
l_valid.
CALL METHOD pcl_alv->check_changed_data
IMPORTING
e_valid = l_valid.
ENDFORM. "FRM_CHECK_CHANGED_DATA
*&---------------------------------------------------------------------*
*& Form frm_confirm
*&---------------------------------------------------------------------*
* 确认对话框
*----------------------------------------------------------------------*
FORM frm_confirm USING p_title p_text CHANGING p_answer.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = p_title
text_question = p_text
IMPORTING
answer = p_answer. "1、 2、 A
ENDFORM. " frm_confirm
*&---------------------------------------------------------------------*
*& Form handle_toolbar
*&---------------------------------------------------------------------*
* 自定义按钮
*----------------------------------------------------------------------*
* -->P_E_OBJECT text
* -->P_E_INTERACTIVE text
*----------------------------------------------------------------------*
FORM handle_toolbar USING
p_e_object TYPE REF TO cl_alv_event_toolbar_set
p_e_interactive.
ENDFORM. " handle_toolbar
*&---------------------------------------------------------------------*
*& Form handle_user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_UCOMM text
*----------------------------------------------------------------------*
FORM handle_user_command USING p_e_ucomm.
ENDFORM. " handle_user_command
*&---------------------------------------------------------------------*
*& Form handle_data_changed
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ER_DATA_CHANGED text
* -->P_E_ONF4 text
* -->P_E_ONF4_BEFORE text
* -->P_E_ONF4_AFTER text
* -->P_E_UCOMM text
*----------------------------------------------------------------------*
FORM handle_data_changed USING
p_er_data_changed TYPE REF TO cl_alv_changed_data_protocol
p_e_onf4
p_e_onf4_before
p_e_onf4_after
p_e_ucomm TYPE sy-ucomm.
g_ischange = 'X'.
ENDFORM. " handle_data_changed
*&---------------------------------------------------------------------*
*& Form handle_data_changed_finished
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_MODIFIED text
* -->P_ET_GOOD_CELLS text
*----------------------------------------------------------------------*
FORM handle_data_changed_finished USING p_e_modified
p_et_good_cells TYPE lvc_t_modi.
DATA:ls_good_cells TYPE lvc_s_modi.
LOOP AT p_et_good_cells INTO ls_good_cells WHERE fieldname = 'ZSFSC'.
READ TABLE gt_alv_itab INDEX ls_good_cells-row_id.
IF sy-subrc = 0.
CASE ls_good_cells-value.
WHEN '是'.
gt_alv_itab-zstatus_sc = icon_led_green.
WHEN '否'.
gt_alv_itab-zstatus_sc = icon_led_red.
WHEN '其他'.
gt_alv_itab-zstatus_sc = icon_led_yellow.
ENDCASE.
ENDIF.
MODIFY gt_alv_itab INDEX ls_good_cells-row_id.
ENDLOOP.
PERFORM frm_refresh_alv.
ENDFORM. " handle_data_changed_finished
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_DISPLAY_ALV1 .
IF wcl_container IS INITIAL.
PERFORM frm_create_container.
PERFORM frm_exclude.
PERFORM frm_variant USING '1' CHANGING gs_variant.
PERFORM frm_pre_layout.
PERFORM frm_pre_fieldcat1.
PERFORM frm_prepare_drilldown_values.
PERFORM frm_upload_event.
PERFORM frm_set_tab_display.
ELSE.
PERFORM frm_refresh_alv.
ENDIF.
ENDFORM. " FRM_DISPLAY_ALV1
*&---------------------------------------------------------------------*
*& Form FRM_PRE_FIELDCAT1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_PRE_FIELDCAT1 .
PERFORM frm_fieldcat USING :
'ZSTATUS_SC' '是否生产' space space space space space space 10 space ,
'ZSTATUS_QH' '是否缺货' space space space space space space 10 space,
'ZQHQSRQ' '缺货起始日期' space space space space space space 12 space,
*'MVGR1' '品牌' space space space space space space 12 space,
'BEZEI' '品牌' space space space space space space 12 space,
'MATNR' '产品编码' space space space space space space 10 space,
'MAKTX' '产品名称、规格' space space space space space space 20 space,
'PLNMG' '本月计划数' space space space space space space 12 space,
'ZMENG' '销售需求量' space space space space space space 12 space,
'LABST' '库存数量' space space space space space space 10 space,
'ZQHJS' '缺货数量(件)' space space space space space space 14 space,
'ZQHYY' '缺货原因' space space space space space space 50 space,
'WERKS' '工厂编码' space space space space space space 10 space,
'NAME1' '工厂描述' space space space space space space 20 space,
'ZZRBM' '责任部门' space space space space space space 10 space,
'ZZRR' '责任人' space space space space space space 10 space,
'ZSJWCRQ' '预计排产时间' space space space space space space 14 space,"实际完成时间:改为预计排产时间
'ZQHTS' '缺货天数' space space space space space space 10 space,
'LFIMG' '已发货数' space space space space space space 10 space,
'MENGE' '当月已生产数量' space space space space space space 10 space,
'LFIMG1' '当月已发货数量' space space space space space space 10 space,
'ZSFSC' '是否生产' space space space space space space 10 'TYPE_DD_HNDL',
'ZZNOTE' '计划下单时间' space space space space space space 50 space."备注改为: 计划下单时间
ENDFORM. " FRM_PRE_FIELDCAT1
- 原版日报表
- 生产日报表
- 现金日报表怎么做
- 承兑日报表格式
- 水日报表的使用小结
- 材料进出使用余额日报表
- 金蝶K3系统定制国内销售日报表
- 金蝶K3系统定制国际销售日报表
- xp原版
- 爱译版也爱原版
- menus2原版
- 《东邪西毒》原版
- Silverlight——施工计划日报表(二)
- Silverlight——施工计划日报表(一)
- 《口技》原版[Blog synchronous]
- Microsoft 原版系列下载
- 情景英语 原版电影
- 外文原版图书
- DOS 实方式下直接访问4GB 内存
- getch()与getchar()
- LR用户名参数化,运行场景中虚拟用户数,循环次数之间的关系
- 【Objective-C】OC中协议(Protocol)的基本概念和用法
- Linux下TI omap芯片 MUX 配置分析(以AM335X芯片为例)
- 原版日报表
- 十进制数转化为二进制数的方法(除模取余)
- js获取kindeditor里的html标签
- 6、spring的五种类型通知
- LR中select next row和update value on的设置
- C/C++创建windows服务程序
- PHP的包依赖管理工具Composer简介
- 用户空间内核空间与ring的概念
- 关于守护线程的理解和例子