SD 送货清单报表

来源:互联网 发布:mac过热保护 编辑:程序博客网 时间:2024/04/30 02:30

text symbol

002 总览 4 4
003 明细 4 4

 

selection text

 

P_BUKRS ?...
P_WERKS ?...
S_ERDAT 创建日期
S_ERNAM 制单人
S_FKSTK 开票状态
S_KUNAG 售达方
S_KUNNR 送达方
S_LFART 交货类型
S_MATKL 物料组
S_REGIO 区域
S_VBELN 发货单号
S_VKBUR 销售办公室
S_VKORG 销售组织
S_WADAT 实际发货日期
S_WBSTK 过帐状态

 

source code

*& 修改日期:2010.06.13
*& 修 改 人:zhouxu V1.1
*& 修改原因:1 显示ZK07和ZK05的折扣原因
*& 修改日期:2010.08.23
*& 修 改 人:zhouxu V1.2
*& 修改原因:1 销售办事处BUG处理。
REPORT  ysdr0017bak MESSAGE-ID ysd
        LINE-COUNT 65(14)
        LINE-SIZE  154
        NO STANDARD PAGE HEADING.

INCLUDE ysdalv.

TABLES: vbak,                        "销售订单抬头
        vbap,                        "销售订单项目
        likp,                        "交货单抬头
        lips,                        "交货单项目
        vbfa,                        "单据流
        vbpa,                        "合作伙伴
        mara,                        "物料主数据
        makt,                        "物料描述
        t001l,                       "仓库描述
        t001w,                       "工厂描述
        tvkot,                       "分公司描述
        kna1,                        "客户描述
        ekko,                        "采购订单抬头
        ekpo,                        "采购订单项目
        konv,                        "条件(事务数据)
        marm,                        "物料的计量单位
        tvakt,                       "销售凭证类型 : 文本
        adrp,                        "个人(办公地址管理)
        usr21,
        vbuk,
        vbep,
        vbrp,
        knvv,
        t171t,
        tvkbt,
        knvk,
        vbkd."销售凭证 : 业务数据

*****定义抬头数据内表
DATA: BEGIN OF i_title_data OCCURS 0,
          vbeln LIKE likp-vbeln,    "交货单号码
          vbelv LIKE vbak-vbeln,    "销售订单
          vdatu LIKE vbak-vdatu,    "请求交货日期kaijunli
          erdat LIKE likp-erdat,    "发货单创建日期
          wadat_ist  LIKE likp-wadat_ist,   "计划货物移动日期
          erdat1 LIKE likp-erdat,   "订单日期
          lfart LIKE likp-lfart,    "单据类别
          kunnr LIKE likp-kunnr,    "送达方
          kunag LIKE likp-kunag,    "售达方kaijunli
          adrnr LIKE kna1-adrnr,    "地址编号
          telfx LIKE kna1-telfx,    "传真号码
          vkorg LIKE likp-vkorg,    "销售组织"即产业1010电工产业1020照明产业add by LKj 2008/10/20
          changye(10) TYPE c,       "产业
          str_suppl1 LIKE adrc-str_suppl1,  "送货地址
          name1(60) TYPE c,         "商家名称售达方
          name5(60) TYPE c,         "送达方kaijunli
          sedto(80) TYPE c,         "收货单位
          addrs(80) TYPE c,         "收货地址
          pannr(20) TYPE c,         "联系人
          auart LIKE vbak-auart,    "订单类型
          bezei LIKE tvakt-bezei,   "订单类型描述
          fkstk LIKE vbuk-fkstk,    "开票状态
          fkstt(12),
          wbstk LIKE vbuk-wbstk,    "发货过账状态
          cmgst LIKE vbuk-cmgst,    "交货单信贷支票的总状态"A表示通过"其它不通过add by LKj 2008/11/27
          cmgstx(100) TYPE c,
          wbstt(12),

          lifnr LIKE knvp-lifnr,    "货运站的名称
          text1 LIKE lfa1-telf1,    "货运站电话
          text3 LIKE lfa1-name1,    "货运站名称
          text5 LIKE lfa1-stras,    "货运站地址

          telef(20) TYPE c,         "联系电话
          text2(60),                "付运费方式
          text4(60),                "备注
          page TYPE i,              "页数
          ernam LIKE likp-ernam,    "创建对象的人员名称
          name2(10) TYPE c,                "制单人
          netwr TYPE p DECIMALS 2,  "结算金额
          regio LIKE  kna1-regio,   "地区
          spart LIKE knvv-spart,    "产品组
          vtweg LIKE knvv-vtweg,    "分销渠道
          vkbur LIKE  knvv-vkbur,   "办事处
          bezeii LIKE tvkbt-bezei,  "办事处描述
          bzirk  LIKE knvv-bzirk,   "销售地区
          bztxt  LIKE t171t-bztxt,"销售地区描述
          kpein LIKE vbap-kpein," 价格单位数  add by kevin 2009/06/22
         waers LIKE konv-waers,        "订单币别
         kbetr19 LIKE konv-kbetr,       "订单本位金额
         kbetr20 LIKE konv-kbetr,       "订单总计金额
         zhekoo LIKE konv-kbetr,"物价金额
         waers2(3) TYPE c,                "本位币别

         bstkd LIKE vbkd-bstkd, "销售订单文本
         bezei1 LIKE tvm1t-bezei,     "物料定价组--品牌
         kwmeng  LIKE vbap-kwmeng,  "以销售单位计的订单数量
         kwmengx LIKE vbap-kwmeng,"以基本单位计的订单数量
         kbetr LIKE konv-kbetr,
         lgmng LIKE lips-lgmng,
             kvgr5 LIKE vbak-kvgr5,                         " V1.1 折扣原因
      yyms TYPE string,                                     "V1.1 原因描述

      END OF i_title_data.

*****定义行数据内表
DATA: BEGIN OF i_item_data OCCURS 0,
         vbeln LIKE likp-vbeln,     "交货单
         posnr LIKE lips-posnr,     "项目号
         erdat LIKE likp-erdat,     "发货单创建日期
         erdat1 LIKE likp-erdat,
         wadat_ist LIKE likp-wadat_ist,    "实际发货日期lkj所属时期
         wadat_ist2(6) TYPE c,                              "所属日期6位lkj
         vkorg LIKE likp-vkorg,     "销售组织"即产业1010电工产业1020照明产业add by LKj 2008/10/20
         changye(10) TYPE c,        "产业
         cmgst LIKE vbuk-cmgst,     "交货单信贷支票的总状态 add by LKj 2008/11/27
         cmgstx(100) TYPE c,        "交货单信贷支票的总状态,文本
         mvgr1 LIKE mvke-mvgr1,     "品牌add by LKj 2008/10/20
         bezei1 LIKE tvm1t-bezei,   "品牌的中文显示add by LKj 2008/10/20
         kunnr LIKE likp-kunnr,     "送达方
         kunag LIKE likp-kunag,     "售达方kaijunli
         knprs LIKE konv-knprs,     "条件定价单位
         kumza LIKE konv-kumza,     "从条件单位到基准单位转换的分子
         umvkz LIKE vbap-umvkz,
         umziz LIKE vbap-umziz,
         umzin LIKE vbap-umzin,
         name1(60) TYPE c,          "商家名称售达方
         name5(60) TYPE c,          "送达方kaijunli
         matnr LIKE mara-matnr,     "物料号码
         bismt LIKE mara-bismt,
         maktx LIKE makt-maktx,     "物料描述
         matkl LIKE lips-matkl,     "物料组
         brgew LIKE lips-brgew,     "毛重kaijunli
         gewei LIKE lips-gewei,     "重量单位kaijunli
         volum LIKE lips-volum,     "业务量kaijunli
         voleh LIKE lips-voleh,     "体积单位kaijunli
         kwmeng  LIKE vbap-kwmeng,  "以销售单位计的订单数量
         kwmengx LIKE vbap-kwmeng,"以基本单位计的订单数量
         wgbez LIKE t023t-wgbez,
         spart LIKE tspat-spart,
         vtext LIKE tspat-vtext,
         meins LIKE lips-meins,     "单位
         kbetr  TYPE p DECIMALS 7,  "单价
         kzwi1 LIKE vbap-kzwi1,     "项目小计
         kbetr1 LIKE konv-kbetr,    "折扣1
         kbetr2 LIKE konv-kbetr,    "折扣2
         netwr2 TYPE p DECIMALS 2,  "折扣金额1/2  add by LKJ 2009/02/24
         netwr3 TYPE p DECIMALS 2,  "折扣金额1/2  add by LKJ 2009/02/24
         kbetr9 LIKE konv-kbetr,    "折扣金额ZK09  add by FOK 2009/12/15
         kbetr4 LIKE konv-kbetr,    "ZK04-ZK07-ZK08
         kbetr5 LIKE konv-kbetr,                            "ZK05-ZK06
         netwr9 TYPE p DECIMALS 2,  "折扣金额ZK09  add by FOK 2009/12/15
         netwr4 TYPE p DECIMALS 2,  "折扣金额4/7  add by LKJ 2009/02/24
         netwr5 TYPE p DECIMALS 2,  "退货折点金额 3  add by kevin 2009/06/23
         lfimg TYPE p DECIMALS 2,   "交货件数
         vgbel LIKE  lips-vgbel,    "订单号码
         auart LIKE vbak-auart,     "订单类型
         vdatu LIKE vbak-vdatu,     "请求交货日期kaijunli
         edatu LIKE vbep-edatu,   "销售订单的计划行日期,即首个交货日期 add by lkj 2008/12/19
         bezei LIKE tvakt-bezei,    "订单类型描述
         vgpos LIKE  lips-vgpos,    "参考凭证项目号
         cmpre  TYPE p DECIMALS 7,  "净价值
         lgmng TYPE p DECIMALS 2,
         lgmngx TYPE p DECIMALS 2,
         netwr TYPE p DECIMALS 2,   "结算金额
         vrkme LIKE lips-vrkme,     "销售单位
         netwr1 TYPE p DECIMALS 2,
         name2(10) TYPE c,                 "制单人
         rebate1(8),                                        "回扣1
         rebate2(8),                                        "回扣2
         rebate4(8),                                        "回扣ZK04-ZK07
         zheko9(8),
         zheko(8),
         zheko4(8),
         zheko5(8),
         zhekoo LIKE konv-kbetr,"物价金额
         vtweg LIKE knvv-vtweg,"分销渠道 add v1.2
         regio LIKE  kna1-regio,       "地区
         vkbur LIKE  knvv-vkbur,       "办事处
         bezeii LIKE tvkbt-bezei,      "办事处描述
         bzirk  LIKE knvv-bzirk,   "销售地区
         bztxt  LIKE t171t-bztxt,"销售地区描述

         lifnr LIKE knvp-lifnr,    "货运站的名称
         text1 LIKE lfa1-telf1,    "货运站电话
         text3 LIKE lfa1-name1,    "货运站名称
         text5 LIKE lfa1-stras,    "货运站地址
         pannr(20) TYPE c,         "联系人
         kpein LIKE vbap-kpein," 价格单位数  add by kevin 2009/06/22
*         waers like konv-waers,        "订单币别
         kbetr19 LIKE konv-kbetr,       "订单本位金额
         kbetr20 LIKE konv-kbetr,       "订单总计金额
         waers2(3) TYPE c,                "本位币别

         bstkd LIKE vbkd-bstkd, "销售订单文本
         waerk LIKE vbak-waerk,        "订单币别
         bbezei LIKE tvm1t-bezei,     "物料定价组--品牌
                     kvgr5 LIKE vbak-kvgr5,                 " V1.1 折扣原因
      yyms TYPE string,                                     "V1.1 原因描述
      END OF i_item_data.

DATA:BEGIN OF i_con OCCURS 0,
        vbeln LIKE vbak-vbeln,            "订单号码
        posnr LIKE vbap-posnr,            "订单项目号码
        knumv LIKE vbak-knumv,            "定价条件号码
        netpr TYPE p DECIMALS 7,          "净价值
      END OF i_con.

DATA: wadat_ist1(6) TYPE c,               "所属日期中间变量
      volumx TYPE p DECIMALS 3,           "体积换算
      total2 TYPE p DECIMALS 7,           "交货件数合计
      total3 TYPE p DECIMALS 7,           "交货数量合计
      total4 TYPE p DECIMALS 4.           "金额合计

DATA: g_lfimg TYPE i,                     "交货数量合计
      g_page TYPE i,                      "页数
      g_page01 TYPE p DECIMALS 7,         "页数(计算)
      g_line TYPE i ,                     "项目数
      total(50),
      total1 TYPE p DECIMALS 7.

DATA: g_lines_had TYPE i VALUE 0,        "计算有数据的行数
      index TYPE i VALUE 0.              "序号

DATA: g_lines_empty TYPE i VALUE 0.      "要打印的空行数

DATA: kbetr LIKE konv-kbetr,
      p_change LIKE konv-kbetr.

DATA: netwr(10).

DATA:netwr1 TYPE p DECIMALS 7,
     netwr2 TYPE p DECIMALS 7,
     netwr3 TYPE p DECIMALS 7.

DATA: name1(12).                         "制单人
DATA: params LIKE pri_params.
DATA: valid TYPE c.
DATA: datum LIKE sy-datum.

*****selection-screen***************************************************
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE tt1.
SELECT-OPTIONS: s_vkorg FOR likp-vkorg,                    "销售组织
s_regio FOR kna1-regio,
s_vkbur FOR knvv-vkbur,
                s_vbeln FOR likp-vbeln,"OBLIGATORY,        "交货单号码
                s_lfart FOR likp-lfart,
                s_kunag FOR likp-kunag,                    "售达方
                s_kunnr FOR likp-kunnr,                    "送达方kaijuli
                        s_kunnr1 FOR likp-kunnr NO-DISPLAY, "ADD V1.2
                s_erdat FOR likp-wadat_ist ,               "计划货物移动日期,实际发货过账日期
                s_wadat FOR likp-wadat_ist,
*                p_spart FOR vbrp-spart,
                s_ernam FOR usr21-bname,                   "创建者
                s_fkstk FOR vbuk-fkstk,                    "开票状态
                s_wbstk FOR vbuk-wbstk,                    "过帐状态
*                S_BUCHK FOR VBUK-BUCHK.                    "出具发票凭证的过账状态
                s_matkl FOR lips-matkl.                    "物料组

SELECTION-SCREEN END OF BLOCK bl1.
SELECTION-SCREEN BEGIN OF BLOCK bl2 WITH FRAME TITLE tt2.

SELECTION-SCREEN: BEGIN OF LINE.
PARAMETERS: p_bukrs RADIOBUTTON GROUP grp1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(6)   text-002 FOR FIELD p_bukrs.    "总览
PARAMETERS: p_werks RADIOBUTTON GROUP grp1.
SELECTION-SCREEN COMMENT 22(6)   text-003 FOR FIELD p_werks.   "明细
SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN END OF BLOCK bl2.

INITIALIZATION.
  AUTHORITY-CHECK OBJECT 'YREPORT'
    ID 'BUKRS' FIELD 'HL01'
    ID 'WERKS' FIELD 'LN01'.
  IF sy-subrc NE 0.
    MESSAGE e005(ymess) WITH 'No Authorization!'.
  ENDIF.


AT SELECTION-SCREEN.
  PERFORM sub_check_data.

START-OF-SELECTION.
  PERFORM sub_get_item_data TABLES i_title_data             "读取数据
                                   i_item_data.

END-OF-SELECTION.
  PERFORM i_item_data_hui.
  PERFORM frm_change_dignn.
  PERFORM sub_process_data  TABLES i_title_data             "处理数据
                                  i_item_data.
  IF p_bukrs = 'X'.
    PERFORM sub_title_data.
  ELSEIF p_werks = 'X'.
    PERFORM delete_data.
    PERFORM sub_item_data.
  ENDIF.

*&--------------------------------------------------------------------*
*&      Form  SUB_CHECK_DATA
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*****检查数据输入
FORM sub_check_data.
*  SELECT SINGLE l~vbeln FROM likp AS l
*                      INNER JOIN vbuk AS v ON l~vbeln = v~vbeln
*                      INTO likp-vbeln
*                      WHERE l~vbeln IN s_vbeln
*                        AND l~vkorg IN s_vkorg
*                        AND l~kunag IN s_kunag
*                        AND l~erdat IN s_erdat
*                        AND l~WADAT_IST IN S_WADAT
*                        AND l~ernam IN s_ernam
*                        AND l~lfart IN s_lfart
*                        AND v~fkstk IN s_fkstk
*                        AND v~wbstk IN s_wbstk.
*  IF sy-subrc NE 0.
*    MESSAGE e899 WITH '符合条件的交货单不存在,请检查输入'.
*  ENDIF.
ENDFORM.                    "SUB_CHECK_DATA

*&--------------------------------------------------------------------*
*&      Form  SUB_GET_ITEM_DATA
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*****获取行数据
FORM sub_get_item_data TABLES v_title_data STRUCTURE i_title_data
                              v_item_data  STRUCTURE i_item_data.


  IF s_fkstk-low = 'C'.
    SELECT l~vbeln l~vkorg l~kunnr l~kunag l~werks l~bolnr l~wadat_ist
           l~erdat l~wadat_ist l~wadat l~wauhr l~lfdat l~exnum l~lfart l~aenam l~ernam l~erdat
           v~fkstk v~wbstk v~cmgst
           m~vkbur m~bzirk
           FROM likp AS l
           INNER JOIN vbuk AS v ON l~vbeln = v~vbeln
          INNER JOIN knvv AS m ON l~kunnr = m~kunnr

           INTO CORRESPONDING FIELDS OF TABLE v_title_data
                        WHERE l~vbeln IN s_vbeln
                         AND l~vkorg IN s_vkorg
                         AND l~kunnr IN s_kunnr
                          AND l~kunag IN s_kunag
                          AND l~erdat IN s_erdat
                          AND l~wadat_ist IN s_wadat
                          AND l~ernam IN s_ernam
                          AND l~lfart IN s_lfart
                         AND m~vkbur IN s_vkbur
                          AND v~fkstk IN s_fkstk
                          AND v~wbstk IN s_wbstk.
    CHECK NOT v_title_data[] IS INITIAL."""""""""""""""""""""""""""""""""???????????????
    SELECT lips~vbeln lips~posnr lips~pstyv lips~matnr lips~lgort
           lips~brgew lips~gewei lips~volum lips~voleh
           lips~werks lfimg lips~charg lips~vgbel lips~vgpos likp~kunag likp~kunnr
           lips~meins lgmng lips~vrkme lips~matkl lips~umvkz likp~vkorg likp~wadat_ist "取发货记账日期wadat_ist-lkj
           vb~kpein vb~kwmeng vb~umziz vb~umzin
      FROM lips
      INNER JOIN vbrp ON vbrp~aubel = lips~vgbel
      INNER JOIN likp ON likp~vbeln = lips~vbeln
      INNER JOIN vbap AS vb ON vb~vbeln = lips~vgbel AND vb~posnr = lips~vgpos
      INTO CORRESPONDING FIELDS OF TABLE v_item_data
      FOR ALL ENTRIES IN v_title_data
         WHERE lips~vbeln = v_title_data-vbeln AND lips~matkl IN s_matkl.

  ELSE.
    SELECT l~vbeln l~vkorg l~kunnr l~kunag l~werks l~bolnr l~wadat_ist
           l~erdat l~wadat_ist l~wadat l~wauhr l~lfdat l~exnum l~lfart l~aenam l~ernam l~erdat
           v~fkstk v~wbstk v~cmgst
           m~bzirk m~spart m~vtweg  "m~vkbur
           FROM likp AS l
           INNER JOIN vbuk AS v ON l~vbeln = v~vbeln
           INNER JOIN knvv AS m ON l~kunnr = m~kunnr
           INTO CORRESPONDING FIELDS OF TABLE v_title_data
                        WHERE l~vbeln IN s_vbeln
                          AND l~vkorg IN s_vkorg
                          AND l~kunnr IN s_kunnr
                          AND l~kunag IN s_kunag
                          AND l~erdat IN s_erdat
                          AND l~wadat_ist IN s_wadat
                          AND l~ernam IN s_ernam
                          AND l~lfart IN s_lfart
                          AND m~vkbur IN s_vkbur
                          AND v~fkstk IN s_fkstk
                          AND v~wbstk IN s_wbstk.
    CHECK NOT v_title_data[] IS INITIAL.

    SELECT lips~vbeln lips~posnr lips~pstyv lips~matnr lips~lgort
           lips~brgew lips~gewei lips~volum lips~voleh
           lips~werks lfimg lips~charg lips~vgbel lips~vgpos likp~kunag likp~kunnr
           lips~meins lgmng lips~vrkme lips~matkl lips~umvkz likp~vkorg likp~wadat_ist "取发货记账日期wadat_ist-lkj
           vb~kpein vb~kwmeng vb~umziz vb~umzin
      FROM lips
      INNER JOIN likp ON likp~vbeln = lips~vbeln
      INNER JOIN vbap AS vb ON vb~vbeln = lips~vgbel AND vb~posnr = lips~vgpos
      INTO CORRESPONDING FIELDS OF TABLE v_item_data
      FOR ALL ENTRIES IN v_title_data
         WHERE lips~vbeln = v_title_data-vbeln AND lips~matkl IN s_matkl.


  ENDIF.

ENDFORM.                   "SUB_GET_DATA

*&---------------------------------------------------------------------*
*&      Form  sub_process_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_I_TITLE_DATA  text
*      -->P_I_ITEM_DATA  text
*----------------------------------------------------------------------*
FORM i_item_data_hui.
  LOOP AT i_item_data.

    MOVE i_item_data-wadat_ist TO wadat_ist1.
*    WRITE wadat_ist1+0(6) TO i_item_data-wadat_ist2. "订单发货过账日期取前6位

    DATA: l_fiscper3 LIKE t009b-poper,
          l_fiscyer LIKE t009b-bdatj,
          c_fiscyer(4) TYPE c,
          c_fiscper(3) TYPE c,
          indate LIKE sy-datum.
    CLEAR l_fiscper3.
    CLEAR l_fiscyer.

    CLEAR indate.
    indate = i_item_data-wadat_ist.

    CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
      EXPORTING
        i_date         = indate "Value in 0CALDAY (Calendar Day)
        i_periv        = 'Z1' "Value in 0FISCVARNT (Fiscal Year Variant)
      IMPORTING
        e_buper        = l_fiscper3 "Value returned is 3 digit Fiscal Period
        e_gjahr        = l_fiscyer "Value returned is YYY format for Fiscal Year
      EXCEPTIONS
        input_false    = 1
        t009_notfound  = 2
        t009b_notfound = 3
        OTHERS         = 4.


    c_fiscper = l_fiscper3.
    c_fiscyer = l_fiscyer.
    CONCATENATE c_fiscyer c_fiscper+1(2) INTO i_item_data-wadat_ist2.

    CLEAR wadat_ist1.
******bstkd like vbkd-bstkd, "销售订单文本
    SELECT SINGLE bstkd
    INTO i_item_data-bstkd
    FROM vbkd
    WHERE  vbeln = i_item_data-vgbel.
*       and posnr = i_item_data-posnr.

*取物料的品牌add by LKJ 2008/10/20
    SELECT SINGLE mvgr1
    INTO i_item_data-mvgr1
    FROM mvke
    WHERE matnr = i_item_data-matnr
     AND  vkorg = i_item_data-vkorg.

*取物料的品牌add by LKJ 2008/10/20
    SELECT SINGLE bezei
    INTO i_item_data-bezei1
    FROM tvm1t
    WHERE mvgr1 = i_item_data-mvgr1.

    i_item_data-bbezei = i_item_data-bezei1.
*****************    append i_title_data.

***取送达方名称
    SELECT SINGLE name1 FROM kna1 INTO i_item_data-name5  WHERE kunnr = i_item_data-kunnr.

    SELECT SINGLE wgbez
    INTO i_item_data-wgbez
    FROM t023t
    WHERE matkl = i_item_data-matkl.

    SELECT SINGLE spart
    INTO i_item_data-spart
    FROM mara
    WHERE matnr = i_item_data-matnr
     AND  matkl  = i_item_data-matkl.

    SELECT SINGLE vtext
    INTO i_item_data-vtext
    FROM tspat
    WHERE spart = i_item_data-spart.

    MODIFY i_item_data.
    CLEAR i_item_data.
  ENDLOOP.
ENDFORM.                    "I_ITEM_DATA_HUI


*&---------------------------------------------------------------------*
*&      Form  sub_process_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->V_TITLE_DATA  text
*      -->V_ITEM_DATA   text
*----------------------------------------------------------------------*
FORM sub_process_data  TABLES   v_title_data STRUCTURE i_title_data
                                v_item_data STRUCTURE i_item_data.

  DATA: i_lines LIKE tline OCCURS 0 WITH HEADER LINE.
  DATA: l_tdname LIKE thead-tdname.
  DATA: knumh LIKE konv-knumh.                              "v1.1 条件记录号
  DATA: kosrt  LIKE konh-kosrt .                            "v1.1 查询条款
  DATA: kzust LIKE konh-kzust.                              "v1.1 责任
*处理抬头数据

  SORT v_title_data BY vbeln.
  SORT v_item_data BY vbeln posnr.

*取办事处编码
  LOOP AT v_title_data.
    SELECT SINGLE vkbur
    FROM knvv
    INTO v_title_data-vkbur
    WHERE vkorg = v_title_data-vkorg
      AND vtweg = v_title_data-vtweg
      AND spart = v_title_data-spart
      AND kunnr = v_title_data-kunnr.
    MODIFY v_title_data.
  ENDLOOP.

  LOOP AT v_title_data.

    READ TABLE v_item_data WITH KEY vbeln = v_title_data-vbeln.
    v_title_data-vbelv = v_item_data-vgbel.
*    v_title_data-erdat = v_title_data-erdat + 1. "计算发货日期
    SELECT SINGLE name1 name2 FROM kna1
                     INTO (kna1-name1, kna1-name2)
                     "取客户名称售达方
          WHERE kunnr = v_title_data-kunag.
    IF sy-subrc = 0.
      CONCATENATE kna1-name1 kna1-name2 INTO v_title_data-name1.
    ENDIF.
*去发货单开票,过账状态****************************************

*取客户名称地址售达方送达方--------------------
    SELECT SINGLE name1 stras FROM kna1 INTO (v_title_data-sedto,
     v_title_data-addrs)  WHERE kunnr = v_title_data-kunag.
    SELECT SINGLE name1 FROM kna1 INTO v_title_data-name5  WHERE kunnr = v_title_data-kunnr.
    CLEAR knvk.

*销售大区名称
    SELECT SINGLE bztxt
     INTO v_title_data-bztxt
      FROM t171t
      WHERE bzirk = v_title_data-bzirk.

*取客户的承运方  add by LKJ 2008/12/18
    SELECT SINGLE lifnr
      FROM knvp
      INTO v_title_data-lifnr
      WHERE knvp~kunnr = v_title_data-kunnr AND
            knvp~parvw = 'SP'.     "CR货运站的合作伙伴功能标记是SP,不是CR

*取客户的货运站名称、地址和电话 add 2008/12/18 LKJ
    SELECT SINGLE name1 stras telf1
      FROM lfa1
      INTO (v_title_data-text3,v_title_data-text5,v_title_data-text1)
      WHERE lfa1~lifnr = v_title_data-lifnr.

***取办事处名称
    SELECT SINGLE bezei
    INTO v_title_data-bezeii
    FROM tvkbt
    WHERE vkbur = v_title_data-vkbur.


*  制单人姓名------------------------------------------------
    SELECT SINGLE name_last name_first FROM adrp
     INNER JOIN usr21 ON usr21~persnumber = adrp~persnumber
     INTO (adrp-name_last,adrp-name_first)
     WHERE usr21~bname = v_title_data-ernam.
    IF sy-subrc = 0.
      CONCATENATE adrp-name_last adrp-name_first INTO v_title_data-name2.
    ENDIF.

*取联系人姓名-----------------------------------------------------
    SELECT SINGLE * FROM knvk WHERE kunnr = v_title_data-kunnr.
*    CONCATENATE knvk-name1 knvk-namev INTO v_title_data-pannr.
    CONCATENATE knvk-namev knvk-name1 INTO v_title_data-pannr.
    CLEAR knvk.
*取订单类型------------------------------------------------------
    SELECT SINGLE bezei
      FROM tvakt
      INNER JOIN vbak ON vbak~auart = tvakt~auart
      INTO v_title_data-bezei
      WHERE vbak~vbeln = v_item_data-vgbel
       AND tvakt~spras = '1'.

***取销售订单请求交货日期
    SELECT SINGLE vdatu
      FROM vbak
      INTO v_title_data-vdatu
      WHERE vbak~vbeln = v_item_data-vgbel.


* 处理项目数据
    LOOP AT v_item_data WHERE vbeln = v_title_data-vbeln.


*换算体积单位,单位是CM3的转成M3
      IF v_item_data-voleh = 'CCM'.
        volumx = v_item_data-volum.
        v_item_data-volum = volumx / 1000000.
        v_item_data-voleh = 'M3'.
      ENDIF.
      CLEAR volumx.

*取计划行交货日期 add 2008/12/22 LKJ
      SELECT SINGLE edatu
        FROM vbep
        INTO v_item_data-edatu
        WHERE vbeln = v_item_data-vgbel AND
              posnr = v_item_data-vgpos.

*如果为退货的交货单,把数量和金额取负值--------------------------------
      IF v_title_data-lfart = 'LR'.
        v_item_data-lfimg = 0 - v_item_data-lfimg.
        v_item_data-lgmng = 0 - v_item_data-lgmng.
      ENDIF.

*-----------------------------------------------------------------------
      SELECT SINGLE bezei
        FROM tvakt
        INNER JOIN vbak ON vbak~auart = tvakt~auart
        INTO v_item_data-bezei
        WHERE vbak~vbeln = v_item_data-vgbel
         AND tvakt~spras = '1'.

      SELECT SINGLE vbak~knumv vbap~posnr
        INTO (i_con-knumv, i_con-posnr)
        FROM vbak
          INNER JOIN vbap ON vbak~vbeln = vbap~vbeln
          WHERE vbak~vbeln = v_item_data-vgbel
             AND   vbap~posnr = v_item_data-vgpos.

* 原始订单金额-------------------------------------------------------------------------
      SELECT SINGLE kwert kumza knprs FROM konv
           INTO (v_item_data-kbetr20,v_item_data-kumza,v_item_data-knprs)
           WHERE knumv = i_con-knumv
             AND kposn = i_con-posnr
             AND kschl = 'PR01'.
      IF sy-subrc = 0.
        v_item_data-zheko = 'PR01'.

      ELSE.
        SELECT SINGLE kwert kumza knprs FROM konv
            INTO (v_item_data-kbetr20,v_item_data-kumza,v_item_data-knprs)
           WHERE knumv = i_con-knumv
             AND kposn = i_con-posnr
          AND kschl = 'PR03'.
        IF sy-subrc = 0.
          v_item_data-zheko = 'PR03'.
        ENDIF.
      ENDIF.
***************************************************

      IF v_title_data-vkorg <> 'L001' AND v_title_data-vkorg <> 'L002'.
        IF sy-subrc = 0.
          IF v_item_data-knprs NE 'PCS'.
            v_item_data-kbetr = v_item_data-kbetr / v_item_data-kumza.
          ENDIF.
          IF v_item_data-vrkme = 'PCS'.
            v_item_data-netwr = v_item_data-lfimg * v_item_data-kbetr / v_item_data-umvkz.
          ELSE.
            v_item_data-netwr = v_item_data-lfimg * v_item_data-kbetr.
          ENDIF.
        ENDIF.

        IF v_item_data-kpein > 1 .
          v_item_data-netwr = v_item_data-netwr / v_item_data-kpein.
        ENDIF.

*抓取折扣1-------------------------------------------------------------
        SELECT SINGLE kwert FROM konv
          INTO v_item_data-kbetr1
          WHERE knumv = i_con-knumv
            AND kposn = i_con-posnr
            AND kschl = 'ZK02'
            AND kinak NE 'A'.
        IF sy-subrc = '0'.
          v_item_data-zheko = 'ZK02'.
          netwr = v_item_data-kbetr1.
        ELSE.
          SELECT SINGLE kwert FROM konv
          INTO v_item_data-kbetr1
          WHERE knumv = i_con-knumv
                AND kposn = i_con-posnr
                AND kschl = 'ZK01'
                AND kinak NE 'A'.
          IF sy-subrc = '0'.
            v_item_data-zheko = 'ZK01'.
          ENDIF.
          netwr = v_item_data-kbetr1.
        ENDIF.

*抓取折扣zk05-zk06--add by LKJ 2009/04/09--------------------------------------------
        SELECT SINGLE kwert FROM konv
          INTO v_item_data-kbetr5
          WHERE knumv = i_con-knumv
            AND kposn = i_con-posnr
            AND kschl = 'ZK05'
            AND kinak NE 'A'.
        IF sy-subrc = '0'.
          v_item_data-zheko = 'ZK05'.
          netwr = v_item_data-kbetr5.
        ELSE.
          SELECT SINGLE kwert FROM konv
          INTO v_item_data-kbetr5
          WHERE knumv = i_con-knumv
            AND kposn = i_con-posnr
            AND kschl = 'ZK06'
            AND kinak NE 'A'.
          IF sy-subrc = '0'.
            v_item_data-zheko = 'ZK06'.
          ENDIF.
          netwr = v_item_data-kbetr5.
        ENDIF.

*抓取订单折扣zk09--add by FXL 2009/12/15-----zkbetr8,9-----------netwr8,9-----zheko8,9-------------------
        SELECT SINGLE kwert FROM konv
             INTO v_item_data-kbetr9
             WHERE knumv = i_con-knumv
               AND kposn = i_con-posnr
               AND kschl = 'ZK09'
               AND kinak NE 'A'.
        IF sy-subrc = '0'.
          v_item_data-zheko9 = 'ZK09'.
        ENDIF.

*抓取折扣zk04-zk07--add by LKJ 2008/10/20-------------ZK08 2009/12/16---------------
        DATA:kbetr4 LIKE  v_item_data-kbetr4.
        CLEAR kbetr4.
        SELECT    kwert   FROM konv
          INTO kbetr4
          WHERE knumv = i_con-knumv
            AND kposn = i_con-posnr
            AND kschl = 'ZK04'
            AND kinak NE 'A'
            AND kwert <> 0.
          v_item_data-kbetr4  =  v_item_data-kbetr4 + kbetr4.
        ENDSELECT.
        IF sy-subrc = '0'.
          v_item_data-zheko4 = 'ZK04'.
          netwr = v_item_data-kbetr4.
        ELSE.
          CLEAR kbetr4.
          SELECT  kwert  FROM konv
      INTO  kbetr4
      WHERE knumv = i_con-knumv
        AND kposn = i_con-posnr
        AND kschl = 'ZK07'
        AND kinak NE 'A'
        AND kwert <> 0.
            v_item_data-kbetr4  =  v_item_data-kbetr4 + kbetr4.
          ENDSELECT.
          IF sy-subrc = '0'.
            v_item_data-zheko4 = 'ZK07'.
          ELSE.
* 返利折扣金额ZK08-----------------------------
            CLEAR: knumh,kosrt,kzust.                       "v1.1
            SELECT SINGLE kwert knumh FROM konv
                  INTO (v_item_data-kbetr4,knumh)
                  WHERE knumv = i_con-knumv
                    AND kposn = i_con-posnr
                    AND kschl = 'ZK08'
                    AND kinak NE 'A'.
            IF sy-subrc = '0'.
              v_item_data-zheko4 = 'ZK08'.
            ENDIF.

          ENDIF.
        ENDIF.
* --------------Begin V1.1 折扣原因----------------------------------------------
        IF  v_item_data-zheko4 = 'ZK04' OR  v_item_data-zheko4 = 'ZK07'.
          SELECT SINGLE kvgr5 FROM vbak
          INTO v_item_data-kvgr5
          WHERE vbeln = v_item_data-vgbel.
          SELECT SINGLE bezei FROM tvv5t
          INTO v_item_data-yyms
          WHERE kvgr5 =  v_item_data-kvgr5 AND spras = sy-langu.
        ELSEIF     v_item_data-yyms IS INITIAL.
          SELECT SINGLE kosrt kzust FROM konh
          INTO (kosrt,kzust)
          WHERE  knumh = knumh .
*      IF sy-subrc = 0 .
          SELECT SINGLE vtext FROM t686d
          INTO v_item_data-yyms
          WHERE kzust = kzust AND spras = sy-langu.

          CONCATENATE v_item_data-yyms  kosrt INTO v_item_data-yyms SEPARATED BY space.
        ENDIF.
*抓取折扣2-------------------------------------------------------------
        SELECT SINGLE kwert FROM konv
          INTO v_item_data-kbetr2
          WHERE knumv = i_con-knumv
            AND kposn = i_con-posnr
            AND kschl = 'ZK03'
            AND kinak NE 'A'.
        IF sy-subrc = '0'.
          v_item_data-zheko5 = 'ZK03'.
          v_item_data-netwr5 = v_item_data-kbetr2.
        ENDIF.

*特价金额 = ZK01/ZK02/ZK03/ZK05/ZK06 + ZK04/ZK07/ZK08 + ZK09 ---------------
        v_item_data-zhekoo = v_item_data-kbetr2 + v_item_data-kbetr4 + v_item_data-kbetr9 + v_item_data-kbetr5 + v_item_data-kbetr1."特价金额

*订单总金额------
        v_item_data-kbetr20 = v_item_data-kbetr20 + v_item_data-zhekoo.

*抓取单价-------------------------------------------------------------
        v_item_data-kbetr = v_item_data-kbetr20 / v_item_data-kwmeng.

        IF v_item_data-vrkme NE 'PCS'.
          v_item_data-kwmengx = v_item_data-kwmeng * ( v_item_data-umziz / v_item_data-umzin ).
        ELSE.
          v_item_data-kwmengx = v_item_data-kwmeng.
        ENDIF.
        v_item_data-kbetr20 = v_item_data-kbetr20 * v_item_data-lgmng / v_item_data-kwmengx."实际交货金额

*-----各折扣算法------------
        v_item_data-kbetr1 = v_item_data-kbetr1 * v_item_data-lgmng / v_item_data-kwmeng.
        v_item_data-kbetr5 = v_item_data-kbetr5 * v_item_data-lgmng / v_item_data-kwmeng.
        v_item_data-kbetr9 = v_item_data-kbetr9 * v_item_data-lgmng / v_item_data-kwmeng.
        v_item_data-kbetr4 = v_item_data-kbetr4 * v_item_data-lgmng / v_item_data-kwmeng.
        v_item_data-kbetr2 = v_item_data-kbetr2 * v_item_data-lgmng / v_item_data-kwmeng.
        IF v_item_data-kbetr1 EQ 0.
          v_item_data-kbetr1 = v_item_data-kbetr5.
        ENDIF.


        IF netwr1 = 100.
          netwr = '0'.
        ELSE.
          netwr = netwr1.
          CONCATENATE netwr '%'  INTO netwr.
        ENDIF.
        CONDENSE netwr NO-GAPS.
        v_item_data-rebate2 = netwr.
      ELSEIF v_title_data-vkorg = 'L001' OR v_title_data-vkorg = 'L002'.
        SELECT SINGLE kbetr kumza knprs FROM konv
          INTO (v_item_data-kbetr,v_item_data-kumza,v_item_data-knprs)

          WHERE knumv = i_con-knumv
            AND kposn = i_con-posnr
            AND kschl = 'PR00'.

        IF sy-subrc = 0.
          IF v_item_data-knprs NE 'PCS'.
            v_item_data-kbetr = v_item_data-kbetr / v_item_data-kumza.
          ENDIF.
          IF v_item_data-vrkme = 'PCS'.
            v_item_data-netwr = v_item_data-lfimg * v_item_data-kbetr / v_item_data-umvkz.
          ELSE.
            v_item_data-netwr = v_item_data-lfimg * v_item_data-kbetr.
          ENDIF.
        ENDIF.
      ENDIF.


*添加交货单信贷状态 add by LKJ 2008/11/27
      IF v_title_data-cmgst = ''.
        v_title_data-cmgstx = '信用检查未执行/状态未设置'.
      ELSEIF v_title_data-cmgst = 'A'.
        v_title_data-cmgstx = '信用检查已完成, 单据完备'.
      ELSEIF v_title_data-cmgst = 'B'.
        v_title_data-cmgstx = '信用检查已完成, 单据不完备'.
      ELSEIF v_title_data-cmgst = 'C'.
        v_title_data-cmgstx = '信用检查已完成,单据不完备,部分批准'.
      ELSEIF v_title_data-cmgst = 'D'.
        v_title_data-cmgstx = '信贷代表批准的单据'.
      ELSE.
        v_title_data-cmgstx = '未知...'.
      ENDIF.

*加产业add by LKJ 2008/10/20
      IF v_title_data-vkorg = '1010'.
        v_title_data-changye = '电工产业'.
      ELSEIF v_title_data-vkorg = '1020'.
        v_title_data-changye = '照明产业'.
      ELSE.
        v_title_data-changye = ''.
      ENDIF.

      SELECT SINGLE * FROM marm WHERE matnr = v_item_data-matnr AND meinh NE 'PCS'.
      v_item_data-lgmngx = v_item_data-lgmng * ( marm-umren / marm-umrez ).
      v_item_data-kunnr = v_title_data-kunnr.
      v_item_data-cmgst = v_title_data-cmgst.
      v_item_data-cmgstx = v_title_data-cmgstx.   "把抬头数据放到项目明细中,信贷,产业lkj
      v_item_data-changye = v_title_data-changye.
      v_item_data-pannr = v_title_data-pannr.
      v_item_data-lifnr = v_title_data-lifnr.    "货运站的名称
      v_item_data-text1 = v_title_data-text1.    "货运站电话
      v_item_data-text3 = v_title_data-text3.    "货运站名称
      v_item_data-text5 = v_title_data-text5.    "货运站地址
      v_item_data-name1 = v_title_data-name1.
      v_item_data-name2 = v_title_data-name2.
      v_item_data-erdat = v_title_data-erdat.
      v_item_data-vdatu = v_title_data-vdatu.
      i_item_data-vkbur = v_title_data-vkbur.
      i_item_data-bezeii = v_title_data-bezeii.
      i_item_data-bztxt = v_title_data-bztxt.
*      v_title_data-netwr =  v_title_data-netwr +  v_item_data-netwr.
      v_title_data-kbetr20 = v_title_data-kbetr20 + v_item_data-kbetr20.
      v_title_data-kbetr = v_item_data-kbetr.
      v_title_data-lgmng = v_item_data-lgmng.
      v_title_data-kwmeng = v_item_data-kwmeng.
*调整项目号显示
      SELECT SINGLE * FROM makt WHERE matnr = v_item_data-matnr
                                  AND spras = '1'.
      IF sy-subrc = 0.
        v_item_data-maktx = makt-maktx.
        "取物料描述
      ENDIF.

      SHIFT v_item_data-vbeln LEFT DELETING LEADING '0'.
      SHIFT v_item_data-posnr LEFT DELETING LEADING '0'.
      SHIFT v_item_data-kunag LEFT DELETING LEADING '0'.
      SHIFT v_item_data-kunnr LEFT DELETING LEADING '0'.
      SHIFT v_item_data-matnr LEFT DELETING LEADING '0'.
      SHIFT v_item_data-lifnr LEFT DELETING LEADING '0'.

      MODIFY v_item_data.
      CLEAR v_item_data.

    ENDLOOP.


    SHIFT v_title_data-vbeln LEFT DELETING LEADING '0'.
    SHIFT v_title_data-kunnr LEFT DELETING LEADING '0'.
    SHIFT v_title_data-kunag LEFT DELETING LEADING '0'.
    SHIFT v_title_data-vbelv LEFT DELETING LEADING '0'.
    SHIFT v_title_data-lifnr LEFT DELETING LEADING '0'.
    MODIFY v_title_data.
    CLEAR v_title_data.
    CLEAR l_tdname.

  ENDLOOP.


  IF s_regio-low NE '' OR s_regio-high NE ''.
    DELETE i_item_data WHERE regio = ''.
  ENDIF.

  IF s_vkbur-low NE '' OR s_vkbur-high NE ''.
    DELETE i_item_data WHERE vkbur = ''.
  ENDIF.
ENDFORM.                    " sub_process_data

*&---------------------------------------------------------------------*
*&      Form  frm_change_dignn
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_change_dignn.
  LOOP AT i_title_data.
    SELECT SINGLE regio
    INTO i_title_data-regio
    FROM kna1

    WHERE kunnr = i_title_data-kunnr
      AND regio IN s_regio.
** DEL v1.2
*    SELECT SINGLE vkbur
*    INTO i_title_data-vkbur
*    FROM knvv
*    WHERE kunnr = i_title_data-kunnr
*      AND vkbur IN s_vkbur.
**  add v1.2
    CLEAR :i_title_data-vkbur,i_title_data-bzirk,i_title_data-spart,i_title_data-vtweg.
    SELECT SINGLE knvv~vkbur knvv~bzirk knvv~spart knvv~vtweg
    FROM  knvv
    INTO (i_title_data-vkbur,i_title_data-bzirk,i_title_data-spart,i_title_data-vtweg)
    WHERE EXISTS (
     SELECT * FROM lips INNER JOIN vbak ON lips~vgbel = vbak~vbeln
     WHERE knvv~vkorg = vbak~vkorg
     AND  knvv~vtweg = vbak~vtweg AND knvv~spart = vbak~spart
     AND knvv~kunnr = vbak~kunnr
     AND  lips~vbeln =  i_title_data-vbeln
    )
    AND  kunnr  = i_title_data-kunnr
.

 

 

    MODIFY i_title_data.
    CLEAR i_title_data.
  ENDLOOP.

  IF s_regio-low NE '' OR s_regio-high NE ''.
    DELETE i_title_data WHERE regio = ''.
  ENDIF.

  IF s_vkbur-low NE '' OR s_vkbur-high NE ''.
    DELETE i_title_data WHERE vkbur = ''.
  ENDIF.
ENDFORM.                    "FRM_CHANGE_DIGNN

*&---------------------------------------------------------------------*
*&      Form  frm_change_sign
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->VALUE(P_CHANGE)  text
*----------------------------------------------------------------------*
FORM frm_change_sign CHANGING value(p_change).
  IF p_change CA '-'.
    CONCATENATE '-' p_change INTO p_change.
    CONDENSE p_change NO-GAPS.
    SHIFT p_change RIGHT DELETING TRAILING ' -'.
  ELSEIF p_change NA '123456789'.
    p_change = ''.
  ENDIF.
ENDFORM.                    "frm_change_sign

*&---------------------------------------------------------------------*
*&      Form  sub_list_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM sub_item_dataone.
  IF s_regio-low NE '' OR s_regio-high NE ''.
    DELETE i_item_data WHERE regio = ''.
  ENDIF.

  IF s_vkbur-low NE '' OR s_vkbur-high NE ''.
    DELETE i_item_data WHERE vkbur NE ''.
  ENDIF.

ENDFORM.                    "SUB_ITEM_DATAONE
*&---------------------------------------------------------------------*
*&      Form  DELETE_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM delete_data.
  LOOP AT i_item_data.
*取销售订单创建日期
    SELECT SINGLE erdat
      FROM vbak
      INTO i_item_data-erdat1
      WHERE vbak~vbeln = i_item_data-vgbel.
    SHIFT i_item_data-vgbel LEFT DELETING LEADING '0'.
    MODIFY i_item_data.
    CLEAR i_item_data.
  ENDLOOP.
ENDFORM.                    "DELETE_DATA

*&---------------------------------------------------------------------*
*&      Form  sub_item_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM sub_item_data.
  DATA temp_waers LIKE konv-waers.
  DATA: ex_rate       TYPE tcurr-ukurs,
        f_factor      TYPE tcurr-ffact,
        l_factor      TYPE tcurr-tfact,
        v_date        TYPE datum,
        audat LIKE vbak-audat,  " 订单凭证日期
        knumv LIKE vbak-knumv,            "定价条件号码
        d_erate(12)   TYPE c.
  LOOP AT i_item_data.
    CLEAR: temp_waers,audat,knumv.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = i_item_data-vgbel
      IMPORTING
        output = i_item_data-vgbel.

    SELECT SINGLE vbak~audat vbak~knumv vbak~waerk
      INTO (audat,knumv,temp_waers)
      FROM vbak
        WHERE vbeln = i_item_data-vgbel.

    i_item_data-waerk = temp_waers.
    i_item_data-waers2 = 'CNY'.

    CALL FUNCTION 'READ_EXCHANGE_RATE'
      EXPORTING
       client                  = sy-mandt
*        date                    = audat
        date                    =  i_item_data-wadat_ist
        foreign_currency        = temp_waers
        local_currency          = 'CNY'
        type_of_rate            = 'M'
*     EXACT_DATE              = ' '
     IMPORTING
          exchange_rate           = ex_rate
          foreign_factor          = f_factor
          local_factor            = l_factor
          valid_from_date         = v_date
     EXCEPTIONS
       no_rate_found           = 1
       no_factors_found        = 2
       no_spread_found         = 3
       derived_2_times         = 4
       overflow                = 5
       zero_rate               = 6
       OTHERS                  = 7
              .
    i_item_data-kbetr19 = i_item_data-kbetr20 * ex_rate * l_factor / f_factor.
    i_item_data-netwr = i_item_data-netwr / ex_rate.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
        input  = i_item_data-vgbel
      IMPORTING
        output = i_item_data-vgbel.
    MODIFY i_item_data.
  ENDLOOP.

*choose_data_get2.
  REFRESH  i_fieldcat.
  add_filed 'I_ITEM_DATA' 'VBELN'  '交货单号'  'L ' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'ERDAT' '交货单创建日期'  'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'BEZEI'  '订单类型'  'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'VGBEL' '订单号码'  'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'ERDAT1' '订单日期'  'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'VDATU' '请求交货日期'  'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'EDATU' '首个交货日期'  'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'VKBUR' '办事处'  'L' 'CHAR' '' '' . "kaijunli
  add_filed 'I_ITEM_DATA' 'BEZEII' '办事处描述'  'L' 'CHAR' '' '' . "kaijunli
  add_filed 'I_ITEM_DATA' 'BZTXT' '销售地区'  'L' 'CHAR' '' '' . "kaijunli
  add_filed 'I_ITEM_DATA' 'POSNR'  '项目编号'  'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'WADAT_IST'  '发货过账日期'  'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'KUNAG'  '售达方' 'L'  'CHAR' '' '' . "kaijunli
  add_filed 'I_ITEM_DATA' 'NAME1'  '售达方名称' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'PANNR'  '客户联系人' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'KUNNR'  '送达方' 'L'  'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'NAME5'  '送达方名称' 'L' 'CHAR' '' '' . "kaijunli
  add_filed 'I_ITEM_DATA' 'CMGST'  '交货信贷状态' 'L' 'CHAR' '' '' .   "add by LKJ 2008/11/27
  add_filed 'I_ITEM_DATA' 'CMGSTX'  '交货信贷状态' 'L' 'CHAR' '' '' .   "add by LKJ 2008/11/27
  add_filed 'I_ITEM_DATA' 'LIFNR'  '货运站' 'L' 'CHAR' '' '' .   "add by LKJ 2008/12/18
  add_filed 'I_ITEM_DATA' 'TEXT3'  '货运站名称' 'L' 'CHAR' '' '' .   "add by LKJ 2008/12/18
  add_filed 'I_ITEM_DATA' 'TEXT5'  '货运站地址' 'L' 'CHAR' '' '' .   "add by LKJ 2008/12/18
  add_filed 'I_ITEM_DATA' 'TEXT1'  '货运站电话' 'L' 'CHAR' '' '' .   "add by LKJ 2008/12/18
  add_filed 'I_ITEM_DATA' 'NAME2'  '制单人' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'MATNR'  '产品编号' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'MAKTX'  '产品名称' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'CHANGYE'  '产业' 'L' 'CHAR' '' '' .   "add by LKJ 2008/10/20
  add_filed 'I_ITEM_DATA' 'BEZEI1'  '品牌' 'L' 'CHAR' '' '' .   "add by LKJ 2008/10/20
  add_filed 'I_ITEM_DATA' 'SPART'  '产品组' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'VTEXT'  '产品组描述' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'MATKL'  '物料组' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'WGBEZ'  '物料组描述' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'LGMNG'  '交货数量' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'LGMNGX'  '交货件数' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'MEINS'  '单位' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'VOLUM'  '体积' 'L' 'CHAR' '' '' .         "add by lkj 08/10/07
  add_filed 'I_ITEM_DATA' 'VOLEH'  '体积单位' 'L' 'CHAR' '' '' .     "add by lkj 08/10/07
  add_filed 'I_ITEM_DATA' 'BRGEW'  '毛重' 'L' 'CHAR' '' '' .         "add by lkj 08/10/07
  add_filed 'I_ITEM_DATA' 'GEWEI'  '重量单位' 'L' 'CHAR' '' '' .     "add by lkj 08/10/07
  add_filed 'I_ITEM_DATA' 'ZHEKO'  '经销折扣' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'KBETR1'  '经销折扣金额' 'L' 'CHAR' '' '' . "add by lkj 09/02/24
  add_filed 'I_ITEM_DATA' 'ZHEKO4'  '订单折扣' 'L' 'CHAR' '' '' .    "add by LKJ 2008/10/20
  add_filed 'I_ITEM_DATA' 'YYMS'  '订单折扣性质' 'L' 'CHAR' '' ''."add V1.1
  add_filed 'I_ITEM_DATA' 'KBETR4'  '订单折扣金额' 'L' 'CHAR' '' '' . "add by lkj 09/02/24
  add_filed 'I_ITEM_DATA' 'ZHEKO9'  '物流商折扣' 'L' 'CHAR' '' '' .    "add by FOK 2009/12/15
  add_filed 'I_ITEM_DATA' 'KBETR9'  '物流商折扣金额' 'L' 'CHAR' '' '' . "add by FOK 2009/12/15
  add_filed 'I_ITEM_DATA' 'ZHEKO5'  '退货扣点' 'L' 'CHAR' '' '' .    "add by kevin 2009/06/23
  add_filed 'I_ITEM_DATA' 'NETWR5'  '退货扣点金额' 'L' 'CHAR' '' '' . "add by kevin 2009/06/23
  add_filed 'I_ITEM_DATA' 'KBETR20'  '订单总计金额(原)' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'WADAT_IST2'  '发票所属时期' 'L' 'CHAR' '' '' .
  add_filed 'I_ITEM_DATA' 'WAERK' '外币币别' 'L' 'CHAR' '' ''.
  add_filed 'I_ITEM_DATA' 'KBETR19' '本币订单金额' 'L' 'CHAR' '' ''.
  add_filed 'I_ITEM_DATA' 'WAERS2' '本币币别' 'L' 'CHAR' '' ''.

  add_filed 'I_ITEM_DATA' 'BBEZEI' '物料定价组' 'L' 'CHAR' '' ''.
  add_filed 'I_ITEM_DATA' 'BSTKD' '订单文本' 'L' 'CHAR' '' ''.

  display_data i_item_data ''.
ENDFORM.                    "sub_list_data

*&---------------------------------------------------------------------*
*&      Form  sub_title_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM sub_title_data.
******************************ADD BY KEVIN 2009/07/31***********************************
  DATA temp_waers LIKE konv-waers.
  DATA: ex_rate       TYPE tcurr-ukurs,
        f_factor      TYPE tcurr-ffact,
        l_factor      TYPE tcurr-tfact,
        v_date        TYPE datum,
        audat LIKE vbak-audat,  " 订单凭证日期
        knumv LIKE vbak-knumv,            "定价条件号码
        d_erate(12)   TYPE c.
  LOOP AT i_title_data.
    CLEAR: temp_waers,audat,knumv.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = i_title_data-vbelv
      IMPORTING
        output = i_title_data-vbelv.

    SELECT SINGLE vbak~audat vbak~knumv vbak~waerk
      INTO (audat,knumv,temp_waers)
      FROM vbak
        WHERE vbeln = i_title_data-vbelv.

    i_title_data-waers = temp_waers.
    i_title_data-waers2 = 'CNY'.

    CALL FUNCTION 'READ_EXCHANGE_RATE'
      EXPORTING
       client                  = sy-mandt
*        date                    = audat
        date                    = i_title_data-wadat_ist
        foreign_currency        =  temp_waers
        local_currency          = 'CNY'
        type_of_rate            = 'M'
*     EXACT_DATE              = ' '
     IMPORTING
          exchange_rate           = ex_rate
          foreign_factor          = f_factor
          local_factor            = l_factor
          valid_from_date         = v_date
     EXCEPTIONS
       no_rate_found           = 1
       no_factors_found        = 2
       no_spread_found         = 3
       derived_2_times         = 4
       overflow                = 5
       zero_rate               = 6
       OTHERS                  = 7
              .
    i_title_data-kbetr19 = i_title_data-kbetr20 * ex_rate * l_factor / f_factor.
    i_title_data-netwr = i_title_data-netwr / ex_rate.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
        input  = i_title_data-vbelv
      IMPORTING
        output = i_title_data-vbelv.
    MODIFY i_title_data.
  ENDLOOP.
******************************END BY KEVIN**********************************

  DELETE i_title_data WHERE vbelv = ''.
  REFRESH  i_fieldcat.
  add_filed 'I_TITLE_DATA' 'VBELN'  '交货单号'  'L ' 'CHAR' '' '' .
  add_filed 'I_TITLE_DATA' 'ERDAT'  '交货单创建日期'  'L ' 'CHAR' '' '' .
  add_filed 'I_TITLE_DATA' 'CHANGYE'  '产业' 'L' 'CHAR' '' '' .   "add by LKJ 2008/10/20
  add_filed 'I_TITLE_DATA' 'WADAT_IST'  '发货过账日期'  'L' 'CHAR' '' '' .
  add_filed 'I_TITLE_DATA' 'VBELV'  '订单号码'  'L' 'CHAR' '' '' .
  add_filed 'I_TITLE_DATA' 'BEZEI'  '订单类型'  'L' 'CHAR' '' '' .
  add_filed 'I_TITLE_DATA' 'KUNAG'  '售达方' 'L'  'CHAR' '' '' .     "kaijunli
  add_filed 'I_TITLE_DATA' 'NAME1'  '售达方名称' 'L' 'CHAR' '' '' .
  add_filed 'I_TITLE_DATA' 'PANNR'  '客户联系人' 'L' 'CHAR' '' '' .
  add_filed 'I_TITLE_DATA' 'KUNNR'  '送达方' 'L'  'CHAR' '' '' .
  add_filed 'I_TITLE_DATA' 'NAME5'  '送达方名称' 'L' 'CHAR' '' '' .  "kaijunli
  add_filed 'I_TITLE_DATA' 'CMGST'  '交货信贷状态' 'L' 'CHAR' '' '' .   "add by LKJ 2008/11/27
  add_filed 'I_TITLE_DATA' 'CMGSTX'  '交货信贷状态' 'L' 'CHAR' '' '' .   "add by LKJ 2008/11/27
  add_filed 'I_TITLE_DATA' 'LIFNR'  '货运站' 'L' 'CHAR' '' '' .   "add by LKJ 2008/12/18
  add_filed 'I_TITLE_DATA' 'TEXT3'  '货运站名称' 'L' 'CHAR' '' '' .   "add by LKJ 2008/12/18
  add_filed 'I_TITLE_DATA' 'TEXT5'  '货运站地址' 'L' 'CHAR' '' '' .   "add by LKJ 2008/12/18
  add_filed 'I_TITLE_DATA' 'TEXT1'  '货运站电话' 'L' 'CHAR' '' '' .   "add by LKJ 2008/12/18
  add_filed 'I_TITLE_DATA' 'VKBUR' '办事处'  'L' 'CHAR' '' '' .      "kaijunli
  add_filed 'I_TITLE_DATA' 'BEZEII' '办事处描述'  'L' 'CHAR' '' '' . "kaijunli
  add_filed 'I_TITLE_DATA' 'BZTXT' '销售地区'  'L' 'CHAR' '' '' . "kaijunli
  add_filed 'I_TITLE_DATA' 'NAME2'  '制单人' 'L' 'CHAR' '' '' .
  add_filed 'I_TITLE_DATA' 'KBETR20'  '金额(原)' 'L' 'CHAR' '' '' .
  add_filed 'I_TITLE_DATA' 'FKSTK'  '开票状态' 'L' 'CHAR' '' '' .
  add_filed 'I_TITLE_DATA' 'WBSTK'  '过帐状态' 'L' 'CHAR' '' '' .

  add_filed 'I_TITLE_DATA' 'WAERS' '外币币别' 'L' 'CHAR' '' ''.
  add_filed 'I_TITLE_DATA' 'KBETR19' '本币订单金额' 'L' 'CHAR' '' ''.
  add_filed 'I_TITLE_DATA' 'WAERS2' '本币币别' 'L' 'CHAR' '' ''.

  display_data i_title_data ''.
ENDFORM.                    "sub_list_data

*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM user_command  USING r_ucomm LIKE sy-ucomm
                           rs_selfield TYPE slis_selfield.
  CASE r_ucomm.
    WHEN '&IC1'.
      CASE rs_selfield-sel_tab_field.
        WHEN  'I_TITLE_DATA-VBELN'.
          SET PARAMETER ID 'VL' FIELD rs_selfield-value.
          CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
        WHEN  'I_ITEM_DATA-VBELN'.
          SET PARAMETER ID 'VL' FIELD rs_selfield-value.
          CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
      ENDCASE.
    WHEN OTHERS.
  ENDCASE.

ENDFORM.                    "user_command

原创粉丝点击