S_BSTKD 合同编号
S_EDATU 销售要求交货日期
S_KUNNR 客户编号
S_LFGSA 是否完全出货
S_MATNR 物料号
S_VBELN 销售订单号
S_VKBUR 销售办公室
________ ______________________________
________ ______________________________
report zsd_r_11.
include zsd_r_11top.
include zsd_r_11form .
include zsd_r_11ui .
initialization.
perform layout_init using g_layout_s. "ALV GRID LAYOUT
perform eventtab_build using g_events_t[]. "ALV GRID EVENT
start-of-selection.
perform get_data.
if sy-subrc = 0.
perform displaycatalog_merge1 using g_fieldcat_t[] 'ITAB'.
perform alv_display tables itab[].
else.
write: 'NO DATA'.
endif.
*******************************************************************************
*&---------------------------------------------------------------------*
*& Include ZSD_R_11FORM
*&---------------------------------------------------------------------*
*&--------------------------------------------------------------------*
*& Form GET_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
form get_data.
select distinct vbap~vbeln vbap~posnr vbap~matnr vbap~arktx vbap~netwr
vbap~kwmeng vbap~bedae vbep~ettyp vbep~edatu vbup~lfgsa vbak~kunnr
vbkd~bstkd t171t~bztxt
into corresponding fields of table itab
from vbak inner join vbap on vbak~vbeln = vbap~vbeln
inner join vbkd on vbak~vbeln = vbkd~vbeln
inner join vbep on vbap~vbeln = vbep~vbeln and vbap~posnr = vbep~posnr
inner join vbup on vbup~vbeln = vbap~vbeln and vbup~posnr = vbap~posnr
left join t171t on t171t~bzirk = vbkd~bzirk
where vbap~vbeln in s_vbeln
and vbep~etenr = 0001
and vbap~matnr in s_matnr
and vbep~edatu in s_edatu
and vbup~lfgsa in s_lfgsa
and vbak~vkbur in s_vkbur
and vbak~kunnr in s_kunnr
and vbkd~bstkd in s_bstkd
and vbep~ettyp <> 'CD'
and vbep~ettyp <> 'DN'
and vbep~ettyp <> 'BN'.
loop at itab.
select single vbelv into itab-vbelv
from vbfa
where vbfa~vbeln = itab-vbeln.
modify itab.
endloop.
loop at itab.
if itab-bedae = 'KSV'.
itab-char = '不需要'.
modify itab.
clear itab1.
else.
select single stlan into itab1-stlan
from kdst
where vbeln = itab-vbeln
and vbpos = itab-posnr
and matnr = itab-matnr.
if itab1-stlan <> ''.
itab-char = '已存在'.
modify itab.
clear itab1.
else.
itab-char = '需维护'.
modify itab.
clear itab1.
endif.
endif.
endloop.
perform get_lflist.
endform. "GET_DATA
*得到出货明细
form get_lflist .
select lips~vgbel as vbeln lips~vgpos as posnr lfimg likp~wadat_ist
into corresponding fields of table itab_lflist
from lips
inner join likp on lips~vbeln = likp~vbeln
inner join vbuk on lips~vbeln = vbuk~vbeln
for all entries in itab
where lips~vgbel = itab-vbeln
and lips~vgpos = itab-posnr
and vbuk~wbstk = 'C'
.
loop at itab .
loop at itab_lflist into wa_lflist where vbeln = itab-vbeln and posnr = itab-posnr .
itab-lfimg = itab-lfimg + wa_lflist-lfimg .
itab-lfamount = itab-lfamount + wa_lflist-lfimg / itab-kwmeng * itab-netwr .
if itab-wadat_ist < wa_lflist-wadat_ist or itab-wadat_ist is initial .
itab-wadat_ist = wa_lflist-wadat_ist .
endif .
endloop .
modify itab .
endloop .
endform . "GET_LFLIST
**************************************************************************************
*&---------------------------------------------------------------------*
*& Include ZSD_R_11TOP
*&---------------------------------------------------------------------*
type-pools : slis.
types: slis_t_fieldcat_alv type slis_fieldcat_alv occurs 1.
data : g_events_t type slis_t_event,
g_fieldcat_t type slis_t_fieldcat_alv.
data : g_layout_s type slis_layout_alv.
data: l_fieldcat_s type slis_fieldcat_alv.
define __field_tab.
l_fieldcat_s-seltext_l = &1.
l_fieldcat_s-seltext_m = &1.
l_fieldcat_s-seltext_s = &1.
l_fieldcat_s-ddictxt = ' '.
end-of-definition.
tables: vbak,vbap,vbup,marc,vbep,kdst,vbkd,t171t,makt.
data: begin of itab occurs 0,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
matnr like vbap-matnr,
arktx like makt-maktx,
kwmeng like vbap-kwmeng,
netwr like vbap-netwr,
lfimg like lips-lfimg ,
lfamount like vbap-netwr ,
wadat_ist like likp-wadat_ist ,
bedae like vbap-bedae,
* DISGR like marc-DISGR,
ettyp like vbep-ettyp,
char(10) type c ,
edatu like vbep-edatu,
* char1(10) type c,
lfgsa like vbup-lfgsa,
kunnr like vbak-kunnr,
bstkd like vbkd-bstkd,
bztxt like t171t-bztxt,
vbelv like vbfa-vbelv,
end of itab.
data: begin of itab1 occurs 0,
stlan like kdst-stlan,
end of itab1.
*出货明细
types: begin of s_lflist ,
vbeln like vbak-vbeln,"订单号
posnr like vbap-posnr,"行项目号
lfimg like lips-lfimg,"交货数量
wadat_ist like likp-wadat_ist,"实际货物移动日期
end of s_lflist .
data:itab_lflist type standard table of s_lflist with key vbeln posnr,
wa_lflist like line of itab_lflist .
selection-screen begin of block bl1 with frame title text-bl1 .
select-options:s_vbeln for vbap-vbeln.
select-options:s_matnr for vbap-matnr.
select-options:s_edatu for vbep-edatu.
select-options:s_lfgsa for vbup-lfgsa.
select-options:s_vkbur for vbak-vkbur.
select-options:s_kunnr for vbak-kunnr.
select-options:s_bstkd for vbkd-bstkd.
selection-screen end of block bl1.
*****************************************************************************************
*&---------------------------------------------------------------------*
*& Include ZSD_R_11UI
*&---------------------------------------------------------------------*
*&--------------------------------------------------------------------*
*& Form LAYOUT_INIT
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_G_LAYOUT_text
*---------------------------------------------------------------------*
form layout_init using p_g_layout_s type slis_layout_alv.
** Build layout for list display
p_g_layout_s-detail_popup = 'X'.
p_g_layout_s-colwidth_optimize = 'X'.
endform. " LAYOUT_INIT
*--------------------------------------------------------------------
* FORM EVENTTAB_BUILD
*--------------------------------------------------------------------
form eventtab_build using p_g_events_t type slis_t_event.
** Registration of events to happen during list display
data: l_event type slis_alv_event.
*
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = p_g_events_t.
* GUI STATUS
read table p_g_events_t with key name = slis_ev_pf_status_set
into l_event.
if sy-subrc eq 0.
move 'PF_STATUS_SET' to l_event-form.
append l_event to p_g_events_t.
endif.
endform. " EVENTTAB_BUILD
*--------------------------------------------------------------------
* FORM ALV_DISPLAY
*--------------------------------------------------------------------
form alv_display tables p_int_t.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
* I_BACKGROUND_ID = 'ALV_BACKGROUND'
i_callback_program = 'ZRSD0008' "G_REPID
* I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
* I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
is_layout = g_layout_s
it_fieldcat = g_fieldcat_t[]
i_save = 'A'
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER = G_EXIT_CAUSED_BY_CALLER
* ES_EXIT_CAUSED_BY_USER = G_EXIT_CAUSED_BY_USER_S
tables
t_outtab = p_int_t
exceptions
program_error = 1
others = 2.
endform. " ALV_DISPLAY
*&--------------------------------------------------------------------*
*& Form DISPLAYCATALOG_MERGE1
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->对应汇总表
* -->P_TABNAME text
*---------------------------------------------------------------------*
form displaycatalog_merge1 using p_g_fieldcat_t
type slis_t_fieldcat_alv
p_tabname.
clear l_fieldcat_s.
l_fieldcat_s-fieldname = 'VBELN'.
l_fieldcat_s-seltext_m = '销售订单号'.
l_fieldcat_s-fix_column = 'X' .
l_fieldcat_s-emphasize = 'X'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'POSNR'.
l_fieldcat_s-seltext_m = '行项目'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'MATNR'.
l_fieldcat_s-seltext_m = '物料号'.
l_fieldcat_s-ref_tabname = 'MARA'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'ARKTX'.
l_fieldcat_s-seltext_m = '物料描述'.
append l_fieldcat_s to p_g_fieldcat_t.
clear l_fieldcat_s .
l_fieldcat_s-fieldname = 'KWMENG'.
l_fieldcat_s-seltext_m = '数量'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'BEDAE'.
l_fieldcat_s-seltext_m = '需求类型'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'ETTYP'.
l_fieldcat_s-seltext_m = '需求传递'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'CHAR'.
l_fieldcat_s-seltext_m = '是否存在销售订单BOM'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'EDATU'.
l_fieldcat_s-seltext_m = '需求日期'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'LFGSA'.
l_fieldcat_s-seltext_m = '是否完全发货'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'KUNNR'.
l_fieldcat_s-seltext_m = '客户编号'.
l_fieldcat_s-ref_tabname = 'KNA1'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'BSTKD'.
l_fieldcat_s-seltext_m = '合同号'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'BZTXT'.
l_fieldcat_s-seltext_m = '销售地区'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'VBELV'.
l_fieldcat_s-seltext_m = '合同/报价号'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'LFIMG'.
l_fieldcat_s-seltext_m = '出货数量'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'LFAMOUNT'.
l_fieldcat_s-seltext_m = '出货金额'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'WADAT_IST'.
l_fieldcat_s-seltext_m = '出货日期'.
append l_fieldcat_s to p_g_fieldcat_t.
endform. " FIELDCATALOG_MERGE