代码改变世界

grid-alv-lvc模板

2017-07-06 09:37  slayer2  阅读(151)  评论(0)    收藏  举报


REPORT zsdrtd02.

TABLES:zsddtpc.

DATA:gt_zsddtpc TYPE TABLE OF zsddtpc.

DATA:gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat,
gs_layout TYPE lvc_s_layo.

SELECTION-SCREEN:BEGIN OF BLOCK blk.
SELECT-OPTIONS:s_werks FOR zsddtpc-werks OBLIGATORY,
s_vbeln FOR zsddtpc-vbeln,
s_bldat FOR zsddtpc-bldat,
s_matnr FOR zsddtpc-matnr,
s_abgru FOR zsddtpc-abgru,
s_dtdate FOR zsddtpc-dt_date,
s_i_date FOR zsddtpc-i_date.
SELECTION-SCREEN:END OF BLOCK blk.

AT SELECTION-SCREEN.
PERFORM fm_author_check.

START-OF-SELECTION.
PERFORM fm_getdata.
PERFORM fm_outshow.

END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form FM_GETDATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fm_getdata .
SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_zsddtpc
FROM zsddtpc
WHERE werks IN s_werks AND
vbeln IN s_vbeln AND
bldat IN s_bldat AND
matnr IN s_matnr AND
abgru IN s_abgru AND
dt_date IN s_dtdate AND
i_date IN s_i_date.

SORT gt_zsddtpc BY vbeln.
ENDFORM. " FM_GETDATA
*&---------------------------------------------------------------------*
*& Form FM_OUTSHOW
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fm_outshow .
PERFORM fm_fieldcat.
PERFORM fm_alvshow.
ENDFORM. " FM_OUTSHOW
*&---------------------------------------------------------------------*
*& Form FM_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fm_fieldcat .
DATA:l_num TYPE i.
CLEAR l_num.

CLEAR gt_fieldcat.
DEFINE edit_fieldcat.
l_num = l_num + 1.
gs_fieldcat-col_pos = l_num.
gs_fieldcat-fieldname = &1.
gs_fieldcat-scrtext_m = &2.

if gs_fieldcat-fieldname = 'VBELN'.
gs_fieldcat-convexit = 'ALPHA'.
endif.

append gs_fieldcat to gt_fieldcat.
clear gs_fieldcat.
END-OF-DEFINITION.

edit_fieldcat:'VBELN' '订单号',
'BLDAT' '凭证日期',
'WERKS' '工厂',
'POSNR' '行项目',
'MATNR' '物料',
'LFIMG' '订单数量',
'LFIMG_PC' '实际交货数量',
'LFIMG_XY' '排车差异数量',
'ABGRU' '未排原因',
* 'LFIMG_SH' '实际已交货数量',
'DT_DATE' '顶通发货日期',
'I_DATE' '回单日期',
'ZBZ' '备注'.

gs_layout-cwidth_opt = 'X'.
ENDFORM. " FM_FIELDCAT
*&---------------------------------------------------------------------*
*& Form FM_ALVSHOW
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fm_alvshow .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
* i_callback_pf_status_set = 'PF_STATUS'
* i_callback_user_command = 'PF_USER_COMMAND'
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_fieldcat
* it_events = gt_events
TABLES
t_outtab = gt_zsddtpc.
ENDFORM. " FM_ALVSHOW
*&---------------------------------------------------------------------*
*& Form FM_AUTHOR_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fm_author_check .
DATA:lt_t001k TYPE TABLE OF t001k,
wa_t001k TYPE t001k.

READ TABLE s_werks WITH KEY low = '*'.
IF sy-subrc = 0.
MESSAGE '不能输入*!' TYPE 'E'.
ENDIF.

SELECT *
INTO TABLE lt_t001k
FROM t001k
WHERE bwkey IN s_werks.

IF lt_t001k IS INITIAL.
MESSAGE e398(00) WITH '输入的工厂不存在'.
ENDIF.

LOOP AT lt_t001k INTO wa_t001k.
AUTHORITY-CHECK OBJECT 'Z_SD_WERKS'
ID 'WERKS' FIELD wa_t001k-bwkey.
IF sy-subrc <> 0.
MESSAGE e398(00) WITH '你没有工厂' wa_t001k-bwkey '的权限'.
ENDIF.
ENDLOOP.
ENDFORM. " FM_AUTHOR_CHECK