Roger  

很幸运,在博问里提的问题自己经过埋头的领悟之后终于解决了。

 

关于双击“工单号码”,跳转到工单显示的界面,可以看到此单子的内容及处理情况。

*&---------------------------------------------------------------------*
*& 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

posted on 2010-01-28 16:22  weidongef  阅读(575)  评论(0)    收藏  举报