很幸运,在博问里提的问题自己经过埋头的领悟之后终于解决了。
关于双击“工单号码”,跳转到工单显示的界面,可以看到此单子的内容及处理情况。
*&---------------------------------------------------------------------*
*& Report ZPM_ZWEID_************ *
*& *
*&----------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
report zpm_zweid_******* .
tables: afko,afpo,aufk,caufvd,afih,t003o,tj30t,eban,
ebkn,jest,ekko,ekpo,afvc,esuh,essr,tj02t.
data: begin of gt_data occurs 0,
aufnr like aufk-aufnr,
bukrs like aufk-bukrs,
werks like aufk-werks,
auart like aufk-auart,
ktext(500) type c,
objnr like aufk-objnr,
ilart like afih-ilart,
stsma like t003o-stsma,
txt04 like tj30t-txt04,
menge_pr type i,
commitment like esuh-commitment,
menge_po type i,
netwr_po like ekpo-netwr, "采购订单金额
netwr like essr-netwr,
menge_po_j type i,
wkgbtr like auas-wkgbtr,
tcost type dgeskosist,
index type i,
sel type c,
txt04_x like tj02t-txt04,
msg(250) type c,
aufpl like afko-aufpl,
end of gt_data.
*sort gt_data by aufnr.
*sort gt_data by ilart.
data: itab like gt_data occurs 0 with header line.
type-pools slis.
*data line type i .
*data: i_grid_title type lvc_title.
*data: title type lvc_title.
*data: ilen type i value 0,
* clen(7) type c.
*data: myrepid like sy-repid.
*data: allfields type slis_t_fieldcat_alv.
*data: wa_allfields type line of slis_t_fieldcat_alv.
*data:ls_layout type slis_layout_alv.
data:
ws_events type slis_t_event,
i_grid_title type lvc_title value '测试表', "ALV抬头名称
it_fieldcat type slis_t_fieldcat_alv, "ALV输出内表
wa_fieldcat type line of slis_t_fieldcat_alv, "ALV输出表结构
is_layout type slis_layout_alv.
*----------------------------------------
selection-screen begin of block blk01 with frame title text-001 .
select-options:
s_cdate for afko-gstrp, "工单日期
s_aufnr for aufk-aufnr, "工单号码
s_txt04 for tj30t-txt04, "工单状态
s_werks for afih-iwerk, "维护工厂
s_ingpr for afih-ingpr, "计划员组
s_ilart for afih-ilart. "作业类型
selection-screen end of block blk01 .
*****************************************************************
initialization.
start-of-selection.
perform frm_get_data.
perform frm_out_data.
*&---------------------------------------------------------------------*
*& Form frm_get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form frm_get_data .
select aufk~aufnr
aufk~bukrs
aufk~werks
aufk~auart
aufk~ktext
aufk~objnr
afko~aufpl
afih~ilart
from aufk
inner join afih on aufk~aufnr = afih~aufnr
inner join afko on aufk~aufnr = afko~aufnr
into corresponding fields of table gt_data
where aufk~aufnr in s_aufnr "工单号码
and aufk~bukrs = '5000'
and aufk~auart between 'PM11' and 'PM18' "工单类型
and afko~gstrp in s_cdate "工单日期
and aufk~sowrk in s_werks "维护工厂
and afih~ingpr in s_ingpr "计划员组
and afih~ilart in s_ilart "作业类型
.
if gt_data[] is initial.
message '没有获取到相关数据,程序终止' type 'S'.
stop.
endif.
endform. " frm_get_data
*&---------------------------------------------------------------------*
*& Form frm_out_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form frm_out_data .
* data: l_line type slis_listheader.
* data hinfo type slis_t_listheader.
data fieldcat type slis_t_fieldcat_alv with header line.
data layout type slis_layout_alv .
* data sortable type slis_t_sortinfo_alv with header line.
*-------Field List Table Setting--------
clear fieldcat.
fieldcat-fieldname = 'INDEX '.
fieldcat-just = 'R'.
fieldcat-seltext_l = '序号'.
fieldcat-outputlen = '6'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'AUFNR '.
fieldcat-just = 'L'.
fieldcat-seltext_l = '工单号'.
fieldcat-outputlen = '12'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'KTEXT '.
fieldcat-just = 'L'.
fieldcat-seltext_l = '工单描述'.
fieldcat-outputlen = '20'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'AUART '.
fieldcat-just = 'L'.
fieldcat-seltext_l = '工单类型'.
fieldcat-outputlen = '8'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'TXT04 '.
fieldcat-just = 'L'.
fieldcat-seltext_l = '工单状态'.
fieldcat-outputlen = '8'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'ILART '.
fieldcat-just = 'L'.
fieldcat-seltext_l = '作业类型'.
fieldcat-outputlen = '8'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'MENGE_PR '.
fieldcat-just = 'R'.
fieldcat-seltext_l = '采购申请数量'.
fieldcat-outputlen = '12'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'MENGE_PO '.
fieldcat-just = 'R'.
fieldcat-seltext_l = '采购订单数量'.
fieldcat-outputlen = '12'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'MENGE_PO_J '.
fieldcat-just = 'R'.
fieldcat-seltext_l = '采购订单结算数量'.
fieldcat-outputlen = '18'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'COMMITMENT '.
fieldcat-just = 'R'.
fieldcat-seltext_l = '委托金额'.
fieldcat-outputlen = '15'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'NETWR_PO '.
fieldcat-just = 'R'.
fieldcat-seltext_l = '采购订单金额'.
fieldcat-outputlen = '15'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'NETWR '.
fieldcat-just = 'R'.
fieldcat-seltext_l = '结算金额'.
fieldcat-outputlen = '15'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'TCOST '.
fieldcat-just = 'R'.
fieldcat-seltext_l = '工单的实际成本 '.
fieldcat-outputlen = '16'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'WKGBTR '.
fieldcat-just = 'R'.
fieldcat-seltext_l = '成本结转'.
fieldcat-outputlen = '15'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'TXT04_X '.
fieldcat-just = 'L'.
fieldcat-seltext_l = '完成状态'.
fieldcat-outputlen = '8'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'MSG '.
fieldcat-just = 'L'.
fieldcat-outputlen = '500'.
fieldcat-seltext_l = '提示'.
append fieldcat.
*------------------------------------begin of layout
layout-colwidth_optimize = 'X'. "单元格随着字段的大小自动调节
layout-zebra = 'X'. "ALV隔行显示颜色相同---斑马条纹
* layout-box_fieldname = 'SEL'. "
* layout-edit = 'X'. "内容是否可以修改
*--------------------------------------end of layout
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = sy-repid
i_grid_title = i_grid_title
is_layout = layout
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = fieldcat[]
it_events = ws_events[]
* i_interface_check = ''
* i_callback_program = sy-repid
* is_layout = layout
* i_callback_pf_status_set = ''
* i_callback_user_command = 'USER_COMMAND'
* it_fieldcat = fieldcat[]
*--------这里是动态嵌入的代码,用于ALV控制头部和尾部数据
*---------------动态代码结束
tables
t_outtab = gt_data
exceptions
program_error = 1
others = 2.
endform. " frm_out_data
*代码写到这里,已经实现了基本的查询功能,实现双击工单号码进入工单显示界面的代码如下:
*&--------------------------------------------------------------------*
*& Form user_command
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->UCOMM text
* -->SELFIELD text
*---------------------------------------------------------------------*
form user_command using ucomm type sy-ucomm
selfield type slis_selfield.
data: lv_msg(60) type c. "报错文本
case ucomm.
when '&IC1'. "双击工单号
read table gt_data index selfield-tabindex."定位双击行
if sy-subrc eq 0.
case selfield-fieldname.
when 'AUFNR'.
if gt_data-aufnr is not initial .
set parameter id: 'ANR' field gt_data-aufnr.
call transaction 'IW33' and skip first screen.
else.
message '请选择工单号!' type 'S'.
endif.
endcase.
endif.
endcase.
endform. "user_command

浙公网安备 33010602011771号