界面如下:
REPORT ZSDPR_QSCX2.
*---------------------------------------------------------------------
* Program Nname : ZSDPR_QSCX2
* Application Name : SD
* Subsystem : ECC5.0
* Author : hans
* Transaction : zdev2
* Program Type : Report
* Program ID : ZSDPR_QSCX2
* Program Description : 发货查询报表
*---------------------------------------------------------------------
* REVISION LOG
* LOG# DATE AUTHOR DESCRIPTION
* 0001 2006/12/05 hans New create
*----------------------------------------------------------------------
* tables
*----------------------------------------------------------------------
tables: vttk,
vekp,
vfkp,
likp,
lips,
kna1,
vbak,
t001l,
TZONE,
TVST,
vtts,
vbfa,
makt.
TYPE-POOLS: SLIS,VRM.
INCLUDE <SYMBOL>.
DATA: NAME TYPE VRM_ID,
LIST TYPE VRM_VALUES,
VALUE LIKE LINE OF LIST.
data:
V_REPID like SY-REPID,
I_PERIOD type STRING.
data:
GT_FIELDCAT type SLIS_T_FIELDCAT_ALV with header line,
"ALV 字段
V_ALV_LAYOUT type SLIS_LAYOUT_ALV. "ALV 样式
data GIT_LISTHEADER type SLIS_T_LISTHEADER.
data GIT_EVENTS type SLIS_T_EVENT.
*----------------------------------------------------------------------
* Internal tables
*----------------------------------------------------------------------
data:begin of item occurs 0,
tknum like Vttk-TKNUM, "运输单号
lfart like Likp-LFART, "发货类型
vstel like Likp-VSTEL, "发站
vtext1 like TVSTT-VTEXT,"发站描述
lzone like Kna1-LZONE, "到站
vtext2 like TZONT-VTEXT, "到站描述
kunag like Likp-KUNAG, "订货单位编码
name1 like Kna1-name1, "订货单位
name2 like Kna1-name2, "收货人
tdlnr like Vtts-TDLNR, "承运商
vsart like VttK-VSART, "运输方式
dtabf like Vttk-DTABF, "发货日期
pland like vttk-dtabf, "预计到站日期
aaflag(2) type c, "签收信息是否返回
text2 like VTTK-TEXT2, "实收日期
text1 like VTTK-TEXT1, "签收人
text4 like VTTK-TEXT4, "维护日期
anzgl like Vekp-ANZGL, "总件数
btvol like Vekp-BTVOL, "总体积
brgew like Vekp-BRGEW, "总重量
kzwi3 like vfkp-KZWI3, "总运费
end of item.
data:begin of ttitem occurs 0,
tknum like Vttk-TKNUM, "运输单号
lfart like Likp-LFART, "发货类型
vstel like Likp-VSTEL, "发站
lzone like Kna1-LZONE, "到站
kunag like Likp-KUNAG, "订货单位编码
tdlnr like Vtts-TDLNR, "承运商
vsart like VttK-VSART, "运输方式
dtabf like Vttk-DTABF, "发货日期
text2 like VTTK-TEXT2, "实收日期
text1 like VTTK-TEXT1, "签收人
text4 like VTTK-TEXT4, "维护日期
gesztd like vttk-gesztd,
end of ttitem.
data:begin of tkna1 occurs 0,
kunnr like kna1-kunnr,
end of tkna1.
data:begin of tvbfa occurs 0,
vbeln like vbfa-vbeln,
end of tvbfa.
data:begin of a1 occurs 0,
tknum like vttk-tknum,
tdlnr like vtts-tdlnr,
vsart like vttk-vsart,
dtabf like vttk-dtabf,
text2 like vttk-text2,
text1 like vttk-text1,
text4 like vttk-text4,
gesztd like vttk-gesztd,
vbeln like vttp-vbeln,
end of a1.
data:begin of a2 occurs 0,
lfart like Likp-LFART, "发货类型
vstel like Likp-VSTEL, "发站
kunag like Likp-KUNAG, "订货单位编码
vbeln like likp-vbeln,
end of a2.
*----------------------------------------------------------------------
* global variables
*----------------------------------------------------------------------
data: line1 like table of TLINE with header line,
flag like VTTK-GESZTD,
nametmp like RSTXT-tdname.
*-------------------------------------------------------------------
* SELECT-OPTIONS AND PARAMETERS
*-------------------------------------------------------------------
* Main options block
SELECTION-SCREEN: BEGIN OF BLOCK FRAME01
WITH FRAME TITLE Text-001.
select-options:
s_vbelv for vbfa-vbelv, "销售订单号
s_vbeln for vbfa-vbeln no-display, "出库单号
s_tknum for vttk-tknum, "运输单号
s_lfart for Likp-LFART, "运输方式
s_dtabf for vttk-dtabf, "发货日期
s_vstel for likp-vstel, "发站
s_kunag for likp-kunag, "到站
* s_kunnr for kna1-kunnr no-display,
s_tdlnr for vtts-tdlnr, "承运商
s_text2 for VTTK-TEXT2. "签回时间
parameters: aaflag(4) type c as listbox visible length 10.
SELECTION-SCREEN: END OF BLOCK FRAME01.
*SELECTION-SCREEN: BEGIN OF BLOCK FRAME03
* WITH FRAME TITLE TEXT-004.
*SELECTION-SCREEN COMMENT /5(79) TEXT-005.
*SELECTION-SCREEN: END OF BLOCK FRAME03.
*-----------------------------------------
* initialization
*-----------------------------------------
initialization.
perform initialization.
*------------------------------------------
* start-of-selection
*------------------------------------------
perform check_condition.
start-of-selection.
call function 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
TEXT = text-008
EXCEPTIONS
OTHERS = 1.
perform get_data.
end-of-selection.
perform FRM_LISTADO.
**&---------------------------------------------------------------------
**
**& Form INITIALIZATION
**&---------------------------------------------------------------------
form initialization.
REFRESH LIST.
VALUE-KEY = 'Y'.
VALUE-TEXT = '是'.
APPEND VALUE TO LIST.
VALUE-KEY = 'N'.
VALUE-TEXT = '否'.
APPEND VALUE TO LIST.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'aaflag'
VALUES = LIST.
endform. " INITIALIZATION
**&---------------------------------------------------------------------
**
**& Form check_condition.
**&---------------------------------------------------------------------
form check_condition.
*if not s_zone1[] is initial.
* select * into corresponding fields of table tkna1 from kna1
* where LZONE in s_zone1.
* if sy-subrc EQ 0.
* loop at tkna1.
* s_kunnr-low = tkna1-kunnr.
* s_kunnr-sign = 'I'.
* s_kunnr-option = 'EQ'.
* append s_kunnr.
* endloop.
* endif.
*endif.
if not s_vbeln is initial.
select distinct vbeln into corresponding fields of table tvbfa from vbfa
where vbelv in s_vbelv.
if sy-subrc EQ 0.
loop at tvbfa.
s_vbeln-low = tvbfa-vbeln.
s_vbeln-sign = 'I'.
s_vbeln-option = 'EQ'.
append s_vbeln.
endloop.
endif.
endif.
endform. "check_condition
*&---------------------------------------------------------------------
*& Form GET_data
*&---------------------------------------------------------------------
form get_data.
select vttk~tknum vtts~tdlnr vttk~vsart vttk~dtabf
vttk~text2 vttk~text1 vttk~text4 vttk~gesztd
vttp~vbeln
into corresponding fields of table a1
from ( vttk
inner join vttp
on vttk~tknum = vttp~tknum
inner join vtts
on vttk~tknum = vtts~tknum )
where vttk~tknum in s_tknum
and vtts~tdlnr in s_tdlnr
and vttk~dtabf in s_dtabf
and vttp~vbeln in s_vbeln.
select * into corresponding fields of table a2 from likp
where lfart in s_lfart and vstel in s_vstel
and kunag in s_kunag.
loop at a1.
loop at a2 where vbeln = a1-vbeln.
ttitem-kunag = a2-kunag.
ttitem-tknum = a1-tknum.
ttitem-lfart = a2-lfart.
ttitem-vstel = a2-vstel.
ttitem-lzone = a2-kunag.
ttitem-tdlnr = a1-tdlnr.
ttitem-vsart = a1-vsart.
ttitem-dtabf = a1-dtabf.
ttitem-text2 = a1-text2.
ttitem-text1 = a1-text1.
ttitem-text4 = a1-text4.
ttitem-gesztd = a1-gesztd.
append ttitem.
endloop.
endloop.
if aaflag is initial.
loop at ttitem.
item-tknum = ttitem-tknum.
item-lfart = ttitem-lfart.
item-vstel = ttitem-vstel.
select single vtext into item-vtext1 from tvstt
where spras = sy-langu and vstel = ttitem-vstel.
item-kunag = ttitem-kunag.
select single lzone name1 name2
into (item-lzone,item-name1,item-name2)
from kna1 where kunnr = ttitem-kunag.
select single vtext into item-vtext2 from tzont
where spras = sy-langu and zone1 = item-lzone.
item-tdlnr = ttitem-tdlnr.
item-vsart = ttitem-vsart.
item-dtabf = ttitem-dtabf.
flag = ttitem-gesztd / 240000.
if flag < '0.5'.
flag = 0.
endif.
clear item-pland.
if not ttitem-dtabf is initial.
item-pland = ttitem-dtabf + flag.
endif.
item-text2 = ttitem-text2.
item-text1 = ttitem-text1.
item-text4 = ttitem-text4.
select count( * ) sum( btvol ) sum( brgew )
into (item-anzgl,item-btvol,item-brgew)
from vekp
where VPOBJKEY = ttitem-tknum.
select sum( kzwi3 ) into item-kzwi3 from vfkp
where FKNUM = ttitem-tknum.
if not ttitem-text1 is initial and not ttitem-text2 is initial.
item-aaflag = 'Y'.
else.
item-aaflag = 'N'.
endif.
append item.
endloop.
elseif aaflag = 'Y'.
loop at ttitem where ( not text1 is initial ) and ( not text2 is initial ).
item-tknum = ttitem-tknum.
item-lfart = ttitem-lfart.
item-vstel = ttitem-vstel.
select single vtext into item-vtext1 from tvstt
where spras = sy-langu and vstel = ttitem-vstel.
item-kunag = ttitem-kunag.
select single lzone name1 name2
into (item-lzone,item-name1,item-name2)
from kna1 where kunnr = ttitem-kunag.
select single vtext into item-vtext2 from tzont
where spras = sy-langu and zone1 = item-lzone.
item-tdlnr = ttitem-tdlnr.
item-vsart = ttitem-vsart.
flag = ttitem-gesztd / 240000.
if flag < '0.5'.
flag = 0.
endif.
clear item-pland.
if not ttitem-dtabf is initial.
item-pland = ttitem-dtabf + flag.
endif.
item-text2 = ttitem-text2.
item-text1 = ttitem-text1.
item-text4 = ttitem-text4.
select count( * ) sum( btvol ) sum( brgew )
into (item-anzgl,item-btvol,item-brgew)
from vekp
where VPOBJKEY = ttitem-tknum.
select sum( kzwi3 ) into item-kzwi3 from vfkp
where fknum = ttitem-tknum.
item-aaflag = 'Y'.
append item.
endloop.
elseif aaflag = 'N'.
loop at ttitem where text1 is initial or text2 is initial.
item-tknum = ttitem-tknum.
item-lfart = ttitem-lfart.
item-vstel = ttitem-vstel.
select single vtext into item-vtext1 from tvstt
where spras = sy-langu and vstel = ttitem-vstel.
item-kunag = ttitem-kunag.
select single lzone name1 name2
into (item-lzone,item-name1,item-name2)
from kna1 where kunnr = ttitem-kunag.
select single vtext into item-vtext2 from tzont
where spras = sy-langu and zone1 = item-lzone.
item-tdlnr = ttitem-tdlnr.
item-vsart = ttitem-vsart.
flag = ttitem-gesztd / 240000.
if flag < '0.5'.
flag = 0.
endif.
clear item-pland.
if not ttitem-dtabf is initial.
item-pland = ttitem-dtabf + flag.
endif.
item-text2 = ttitem-text2.
item-text1 = ttitem-text1.
item-text4 = ttitem-text4.
select count( * ) sum( btvol ) sum( brgew )
into (item-anzgl,item-btvol,item-brgew)
from vekp
where VPOBJKEY = ttitem-tknum.
select sum( kzwi3 ) into item-kzwi3 from vfkp
where fknum = ttitem-tknum.
item-aaflag = 'N'.
append item.
endloop.
endif.
endform. " GET_data
*&---------------------------------------------------------------------*
*& Form frm_listado
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form FRM_LISTADO .
data L_TMP type LVC_TITLE.
* PERFORM frm_get_events."alv表头所用
* PERFORM frm_comment_build."alv表头所用
* v_alv_layout-colwidth_optimize = 'X'.
* v_alv_layout-info_fieldname = 'COLOR'.
perform INIT_FIELDCAT.
* 调用ALV函数显示
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
I_CALLBACK_PROGRAM = V_REPID
I_GRID_TITLE = L_TMP
IS_LAYOUT = V_ALV_LAYOUT
IT_FIELDCAT = GT_FIELDCAT[]
* i_save = 'X'
* IS_VARIANT =
* it_events = git_events[]"alv表头赋值
* i_callback_user_command = 'FRM_UCOMM'
tables
T_OUTTAB = item
exceptions
PROGRAM_ERROR = 1
others = 2.
endform. " frm_listado
*&---------------------------------------------------------------------*
*& Form init_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form INIT_FIELDCAT .
GT_FIELDCAT-FIELDNAME = 'TKNUM'.
GT_FIELDCAT-SELTEXT_L = '运输单号'.
GT_FIELDCAT-SELTEXT_S = '运输单号'.
GT_FIELDCAT-SELTEXT_M = '运输单号'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'LFART'.
GT_FIELDCAT-SELTEXT_L = '发货类型'.
GT_FIELDCAT-SELTEXT_S = '发货类型'.
GT_FIELDCAT-SELTEXT_M = '发货类型'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'VSTEL'.
GT_FIELDCAT-SELTEXT_L = '发站'.
GT_FIELDCAT-SELTEXT_S = '发站'.
GT_FIELDCAT-SELTEXT_M = '发站'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'VTEXT1'.
GT_FIELDCAT-SELTEXT_L = '发站描述'.
GT_FIELDCAT-SELTEXT_S = '发站描述'.
GT_FIELDCAT-SELTEXT_M = '发站描述'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'LZONE'.
GT_FIELDCAT-SELTEXT_L = '到站'.
GT_FIELDCAT-SELTEXT_S = '到站'.
GT_FIELDCAT-SELTEXT_M = '到站'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'VTEXT2'.
GT_FIELDCAT-SELTEXT_L = '到站描述'.
GT_FIELDCAT-SELTEXT_S = '到站描述'.
GT_FIELDCAT-SELTEXT_M = '到站描述'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'KUNAG'.
GT_FIELDCAT-SELTEXT_L = '订货单位编码'.
GT_FIELDCAT-SELTEXT_S = '订货单位编码'.
GT_FIELDCAT-SELTEXT_M = '订货单位编码'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'NAME1'.
GT_FIELDCAT-SELTEXT_L = '订货单位'.
GT_FIELDCAT-SELTEXT_S = '订货单位'.
GT_FIELDCAT-SELTEXT_M = '订货单位'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'NAME2'.
GT_FIELDCAT-SELTEXT_L = '收货人'.
GT_FIELDCAT-SELTEXT_S = '收货人'.
GT_FIELDCAT-SELTEXT_M = '收货人'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'TDLNR'.
GT_FIELDCAT-SELTEXT_L = '承运商'.
GT_FIELDCAT-SELTEXT_S = '承运商'.
GT_FIELDCAT-SELTEXT_M = '承运商'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'VSART'.
GT_FIELDCAT-SELTEXT_L = '运输方式'.
GT_FIELDCAT-SELTEXT_S = '运输方式'.
GT_FIELDCAT-SELTEXT_M = '运输方式'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'DTABF'.
GT_FIELDCAT-SELTEXT_L = '发货日期'.
GT_FIELDCAT-SELTEXT_S = '发货日期'.
GT_FIELDCAT-SELTEXT_M = '发货日期'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'PLAND'.
GT_FIELDCAT-SELTEXT_L = '预计到站日期'.
GT_FIELDCAT-SELTEXT_S = '预计到站日期'.
GT_FIELDCAT-SELTEXT_M = '预计到站日期'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'AAFLAG'.
GT_FIELDCAT-SELTEXT_L = '签收信息是否返回'.
GT_FIELDCAT-SELTEXT_S = '签收信息是否返回'.
GT_FIELDCAT-SELTEXT_M = '签收信息是否返回'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'TEXT2'.
GT_FIELDCAT-SELTEXT_L = '实收日期'.
GT_FIELDCAT-SELTEXT_S = '实收日期'.
GT_FIELDCAT-SELTEXT_M = '实收日期'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'TEXT1'.
GT_FIELDCAT-SELTEXT_L = '签收人'.
GT_FIELDCAT-SELTEXT_S = '签收人'.
GT_FIELDCAT-SELTEXT_M = '签收人'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'TEXT4'.
GT_FIELDCAT-SELTEXT_L = '维护日期'.
GT_FIELDCAT-SELTEXT_S = '维护日期'.
GT_FIELDCAT-SELTEXT_M = '维护日期'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'ANZGL'.
GT_FIELDCAT-SELTEXT_L = '总件数'.
GT_FIELDCAT-SELTEXT_S = '总件数'.
GT_FIELDCAT-SELTEXT_M = '总件数'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'BTVOL'.
GT_FIELDCAT-SELTEXT_L = '总体积'.
GT_FIELDCAT-SELTEXT_S = '总体积'.
GT_FIELDCAT-SELTEXT_M = '总体积'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'BRGEW'.
GT_FIELDCAT-SELTEXT_L = '总重量'.
GT_FIELDCAT-SELTEXT_S = '总重量'.
GT_FIELDCAT-SELTEXT_M = '总重量'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'KZWI3'.
GT_FIELDCAT-SELTEXT_L = '总运费'.
GT_FIELDCAT-SELTEXT_S = '总运费'.
GT_FIELDCAT-SELTEXT_M = '总运费'.
append GT_FIELDCAT.
clear GT_FIELDCAT.
endform. " init_fieldcat