我的一段abap代码,关于SD运输环节的相关报表

界面如下:

 界面

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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值