*&---------------------------------------------------------------------
*& Program name: 
*& T-Code:
*& Porgram Type: Report
*& Description: 订单状
*&----------------------------------------------------------------------
*& Modification Log:
*& Version     Date        Author       DESCRIPTION     CHANGE REQUEST
*             2016/3/31

REPORT zsdr017 NO STANDARD PAGE HEADING MESSAGE-ID oo.

*----------------------------------------------------------------------*
* INCLUDE                                                              *
*----------------------------------------------------------------------*
"TYPES:vbfa.

TYPE-POOLS: slis.

*----------------------------------------------------------------------*
* CONSTANTS                                                            *
*----------------------------------------------------------------------*

"CONSTANTS: c_s TYPE bapi_mtype VALUE 'S'.

*----------------------------------------------------------------------*
* TYPES                                                                *
*----------------------------------------------------------------------*
TYPES: BEGIN OF typ_vbap ,
         erdat      TYPE vbak-erdat,
         vdatu      TYPE vbak-vdatu , "交货日期
         vbeln      TYPE vbak-vbeln,
         kunnr      TYPE vbak-kunnr,
         vkorg      TYPE vbak-vkorg,
         vtweg      TYPE vbak-vtweg,
         spart      TYPE vbak-spart,
         spart2     TYPE vbap-spart,
         bzirk      TYPE  vbkd-bzirk, "销售部
         "route      LIKE  vttk-route, "路线

vkgrp      TYPE vbak-vkgrp,
         vkbur      TYPE vbak-vkbur,
         bstnk      TYPE vbak-bstnk,
         erzet      TYPE vbak-erzet,

posnr      TYPE vbap-posnr,
         pstyv      TYPE vbap-pstyv, "
         matnr      TYPE vbap-matnr,
         arktx      TYPE vbap-arktx,
         werks      TYPE vbap-werks,
*          lgort type vbap-lgort ,
         kwmeng     TYPE vbap-kwmeng,
         vrkme      TYPE vbap-vrkme,
         netwr      TYPE vbap-netwr,
         mwsbp      TYPE vbap-mwsbp,
         umvkz      TYPE vbap-umvkz,
         umvkn      TYPE vbap-umvkn,
         meins      TYPE vbap-meins,
         klmeng     TYPE vbap-klmeng,

kdmat      TYPE vbap-kdmat, "客户物料编码
         kdmat_quan TYPE vbap-kwmeng,
         auart      TYPE vbak-auart, "订单类型
         matkl      TYPE vbap-matkl, "物料组
         ztext      TYPE string, "行项目长文本
*       ------20120312修改------
         vstel      TYPE vbap-vstel, "装运点
*         20120406修改
         rise_text  TYPE  tdline, "抬头文本
         so_text    TYPE  tdline, "抬头文本
         eannr      LIKE vbap-eannr,
         knumv      LIKE vbak-knumv,

END OF typ_vbap .

TYPES: BEGIN OF typ_output.
        INCLUDE TYPE typ_vbap.
TYPES: zsel          TYPE c, "选择标识
       name1_kna1    TYPE kna1-name1, "客户名称
       bzirk_txt     TYPE tvkbt-bezei, "销售部描述
       route_txt     LIKE tvkbt-bezei,
       pstyv_txt     LIKE tvapt-vtext, "行项目类型描述
       bezei_tvkbt   TYPE tvkbt-bezei, "销售大区描述
       bezei_tvgrt   TYPE tvgrt-bezei, "销售办事处描述
       kunnr_we      TYPE vbpa-kunnr, "  送达方代码
       name1_we      TYPE adrc-name1, "  送达方名称
       name1_t001w   TYPE t001w-name1, "工厂名称
       lgobe         TYPE t001l-lgobe, "库存名称
       zdj           TYPE   vbap-netwr, "含税单价--销售单位
       zsl_base      TYPE   vbap-kwmeng, "基本单位数量
       zdj_base      TYPE vbap-netwr, "含税单价--基本单位
       absta         TYPE vbup-absta, "so项目状态
       zabsta_des    TYPE char10, "拒绝状态描述
       kdgrp         TYPE knvv-kdgrp, "客户组
       ktext         TYPE t151t-ktext, "客户组描述

dmbtr         LIKE bseg-dmbtr, "新增金额字段

"PO采购订单信息
       ebeln_po      TYPE ekko-ebeln,
       aedat_po      TYPE ekko-aedat,
       ebelp_po      TYPE ekpo-ebelp,
       menge_po      TYPE ekpo-menge, "数量
       netpr_po      TYPE ekpo-netpr, "净价
       meins_po      TYPE ekpo-meins, "单位
       "PO对应的收货单GR
       mblnr_po_gr   TYPE mseg-mblnr,
       zeile_po_gr   TYPE mseg-zeile,
       menge_po_gr   TYPE mseg-menge,
       meins_po_gr   TYPE mseg-meins,
       "PO对应的发票校验单
       belnr_po_ir   TYPE rseg-belnr,
       buzei_po_ir   TYPE rseg-buzei,
       menge_po_ir   TYPE rseg-menge,
       meins_po_ir   TYPE rseg-meins,
       "DN交货单信息
       vbeln_dn      TYPE lips-vbeln,
       route         LIKE  vttk-route, "路线描述
       posnr_dn      TYPE lips-posnr,
       charg_dn      TYPE lips-charg,
       lgmng_dn      TYPE lips-lgmng,
       meins_dn      TYPE lips-meins,

bolnr         TYPE likp-bolnr, "车牌号
       bezei         TYPE tvakt-bezei, "订单类型
       wgbez         TYPE t023t-wgbez, "物料组
       devlv         TYPE lips-lgmng,  "交货率

*        werks type lips-werks,
       lgort         TYPE lips-lgort,
       posnr_dn_chai TYPE lips-posnr, "交货单拆分
       charg_dn_chai TYPE lips-charg,
       lgmng_dn_chai TYPE lips-lgmng,
       meins_dn_chai TYPE lips-meins,

"DN对应的收货单GR
       mblnr_dn_gr   TYPE mseg-mblnr,
       zeile_dn_gr   TYPE mseg-zeile,
       menge_dn_gr   TYPE mseg-menge,
       meins_dn_gr   TYPE mseg-meins,
       "DN对应的开票凭证
       vbeln_dn_bl   TYPE vbrp-vbeln,
       posnr_dn_bl   TYPE vbrp-posnr,
       fkimg_dn_bl   TYPE vbrp-fkimg,
       vrkme_dn_bl   TYPE vbrp-vrkme,

erdat_likp    LIKE likp-erdat, "新加四个字段,用于过滤屏幕
       erzet_likp    LIKE likp-erzet,

cpudt         LIKE mkpf-cpudt,
       cputm         LIKE mkpf-cputm,
       ddlx          TYPE string,

erzet_fp      LIKE vbrk-erzet,
       erdat_fp      LIKE vbrk-erdat,

zh_kwert      LIKE konv-kwert,
       zj_kwert      LIKE konv-kwert,
       fy_kwert      LIKE konv-kwert.
TYPES: END OF typ_output.

TYPES: BEGIN OF typ_m_mbmps ,
         smbln TYPE m_mbmps-smbln,
         sjahr TYPE m_mbmps-sjahr,
         smblp TYPE m_mbmps-smblp,
         mjahr TYPE m_mbmps-mjahr,
         zeile TYPE m_mbmps-zeile,
         mblnr TYPE m_mbmps-mblnr,
       END OF typ_m_mbmps .

TYPES: BEGIN OF typ_kna1 ,
         kunnr TYPE kna1-kunnr,
         name1 TYPE kna1-name1,
       END OF typ_kna1 .
TYPES: BEGIN OF typ_tvkbt ,
         vkbur TYPE tvkbt-vkbur,
         bezei TYPE tvkbt-bezei,
       END OF typ_tvkbt .
TYPES: BEGIN OF typ_tvgrt ,
         vkgrp TYPE tvgrt-vkgrp,
         bezei TYPE tvgrt-bezei,
       END OF typ_tvgrt .
TYPES: BEGIN OF typ_t001w ,
         werks TYPE t001w-werks,
         name1 TYPE t001w-name1,
       END OF typ_t001w .
TYPES: BEGIN OF typ_t001l ,
         werks TYPE t001l-werks,
         lgort TYPE t001l-lgort,
         lgobe TYPE t001l-lgobe,
       END OF typ_t001l .
TYPES: BEGIN OF typ_vbup ,
         vbeln TYPE vbup-vbeln,
         posnr TYPE vbup-posnr,
         absta 
TYPE vbup-absta,
       
END OF typ_vbup .

TYPES: BEGIN OF typ_vbfa_so ,
         vbelv   
TYPE vbfa-vbelv,
         posnv   
TYPE vbfa-posnv,
         vbeln   
TYPE vbfa-vbeln,
         posnn   
TYPE vbfa-posnn,
         posnn_5 
TYPE ekpo-ebelp,
         vbtyp_n 
TYPE vbfa-vbtyp_n,
         erdat   
TYPE vbfa-erdat,
         erzet   
TYPE vbfa-erzet,
         rfmng   
TYPE vbfa-rfmng,
         rfwrt   
TYPE vbfa-rfwrt,
         meins   
TYPE vbfa-meins,
       
END OF typ_vbfa_so .

TYPES: BEGIN OF typ_ekbe ,
         ebeln   
TYPE ekbe-ebeln,
         ebelp   
TYPE ekbe-ebelp,
         zekkn   
TYPE ekbe-zekkn,
         vgabe   
TYPE ekbe-vgabe,
         gjahr   
TYPE ekbe-gjahr,
         belnr   
TYPE ekbe-belnr,
         buzei   
TYPE ekbe-buzei,
         buzei_6 
TYPE rseg-buzei,
       
END OF typ_ekbe .

TYPES: BEGIN OF typ_mseg_po ,
         mblnr 
TYPE mseg-mblnr,
         mjahr 
TYPE mseg-mjahr,
         zeile 
TYPE mseg-zeile,
         menge 
TYPE mseg-menge,
         meins 
TYPE mseg-meins,
       
END OF typ_mseg_po .

TYPES: BEGIN OF typ_rseg ,
         belnr 
TYPE rbkp-belnr,
         gjahr 
TYPE rbkp-gjahr,
         buzei 
TYPE rseg-buzei,
         menge 
TYPE rseg-menge,
         meins 
TYPE rseg-meins,
       
END OF typ_rseg .

TYPES: BEGIN OF typ_lips ,
         vbeln      
TYPE lips-vbeln,
         posnr      
TYPE lips-posnr,
         charg      
TYPE lips-charg,
         lgmng      
TYPE lips-lgmng,
         meins      
TYPE lips-meins,
         uecha      
TYPE lips-uecha,

*          werks type lips-werks,
         lgort      
TYPE lips-lgort,

* 车牌号
         bolnr      
TYPE likp-bolnr,

erdat_likp

LIKE likp-erdat, "新加四个字段,用于过滤屏幕
         erzet_likp 
LIKE likp-erzet,
       
END OF typ_lips .

TYPES: BEGIN OF typ_vbfa_dn ,
         vbelv   
TYPE vbfa-vbelv,
         posnv   
TYPE vbfa-posnv,
         vbeln   
TYPE vbfa-vbeln,
         posnn   
TYPE vbfa-posnn,
         posnn_4 
TYPE mseg-zeile,
         vbtyp_n 
TYPE vbfa-vbtyp_n,
         mjahr   
TYPE vbfa-mjahr,
         plmin   
TYPE vbfa-plmin,
       
END OF typ_vbfa_dn .

TYPES: BEGIN OF typ_mseg_dn ,
         mblnr 
TYPE mseg-mblnr,
         mjahr 
TYPE mseg-mjahr,
         zeile 
TYPE mseg-zeile,
         menge 
TYPE mseg-menge,
         meins 
TYPE mseg-meins,
         cpudt 
LIKE mkpf-cpudt,
         cputm 
LIKE mkpf-cputm,
       
END OF typ_mseg_dn .

TYPES: BEGIN OF typ_vbrp ,
         vkorg 
TYPE vbrk-vkorg,
         kunag 
TYPE vbrk-kunag,
         vbeln 
TYPE vbrp-vbeln,
         posnr 
TYPE vbrp-posnr,
         fkimg 
TYPE vbrp-fkimg,
         vrkme 
TYPE vbrp-vrkme,

erzet

TYPE vbrk-erzet,
         erdat 
TYPE vbrk-erdat,
       
END OF typ_vbrp .

TYPES: BEGIN OF typ_vbpa ,
         vbeln 
TYPE vbpa-vbeln,
         posnr 
TYPE vbpa-posnr,
         parvw 
TYPE vbpa-parvw,
         kunnr 
TYPE vbpa-kunnr,
         adrnr 
TYPE vbpa-adrnr,
       
END OF typ_vbpa .

TYPES: BEGIN OF typ_adrc ,
         addrnumber 
TYPE adrc-addrnumber,
         date_from  
TYPE adrc-date_from,
         nation     
TYPE adrc-nation,
         name1      
TYPE adrc-name1,
         street     
TYPE adrc-street,
       
END OF typ_adrc .

TYPES: BEGIN OF typ_knvv ,
         kunnr 
TYPE knvv-kunnr,
         vkorg 
TYPE knvv-vkorg,
         vtweg 
TYPE knvv-vtweg,
         spart 
TYPE knvv-spart,
         kdgrp 
TYPE knvv-kdgrp,
       
END OF typ_knvv .

TYPES: BEGIN OF typ_t151t ,
         kdgrp 
TYPE t151t-kdgrp,
         ktext 
TYPE t151t-ktext,
       
END OF typ_t151t .

DATA: BEGIN OF git_tvak OCCURS 0,
        auart 
LIKE tvakt-auart,
        bezei 
LIKE tvakt-bezei,
      
END OF git_tvak.

DATA: BEGIN OF git_t023 OCCURS 0,
        matkl 
LIKE t023-matkl,
        wgbez 
LIKE t023t-wgbez,
      
END OF git_t023.

DATA:BEGIN OF gwa_konv,
       knumv 
LIKE konv-knumv,
       kposn 
LIKE konv-kposn,
       kwert 
LIKE konv-kwert,
       kschl 
LIKE konv-kschl,
     
END OF gwa_konv.

DATA:git_konv LIKE gwa_konv OCCURS 0 WITH HEADER LINE.

*----------------------------------------------------------------------*

* DATA                                                                 *

*----------------------------------------------------------------------*

DATA: git_output      TYPE TABLE OF typ_output,
      gwa_output      
TYPE typ_output,
      git_vbrp        
TYPE TABLE OF typ_vbrp,
      gwa_vbrp        
TYPE typ_vbrp,
      git_mseg_dn     
TYPE TABLE OF typ_mseg_dn,
      gwa_mseg_dn     
TYPE typ_mseg_dn,
      git_m_mbmps_po  
TYPE TABLE OF typ_m_mbmps,
      gwa_m_mbmps_po  
TYPE typ_m_mbmps,
      git_m_mbmps_dn  
TYPE TABLE OF typ_m_mbmps,
      gwa_m_mbmps_dn  
TYPE typ_m_mbmps,
      git_vbfa_dn     
TYPE TABLE OF typ_vbfa_dn WITH HEADER LINE,
      tmp_git_vbfa_dn 
TYPE TABLE OF typ_vbfa_dn WITH HEADER LINE,
      gwa_vbfa_dn     
TYPE typ_vbfa_dn,
      git_lips        
TYPE TABLE OF typ_lips,
      gwa_lips        
TYPE typ_lips,
      gwa_lips_chai   
TYPE typ_lips,
      git_rseg        
TYPE TABLE OF typ_rseg,
      gwa_rseg        
TYPE typ_rseg,
      git_mseg_po     
TYPE TABLE OF typ_mseg_po,
      gwa_mseg_po     
TYPE typ_mseg_po,
      git_ekbe        
TYPE TABLE OF typ_ekbe,
      gwa_ekbe        
TYPE typ_ekbe,
      git_vbfa_so     
TYPE TABLE OF typ_vbfa_so WITH HEADER LINE,
      gwa_vbfa_so     
TYPE typ_vbfa_so,
      git_vbup        
TYPE TABLE OF typ_vbup,
      gwa_vbup        
TYPE typ_vbup,
      git_t001l       
TYPE TABLE OF typ_t001l,
      gwa_t001l       
TYPE typ_t001l,
      git_t001w       
TYPE TABLE OF typ_t001w,
      gwa_t001w       
TYPE typ_t001w,
      git_tvgrt       
TYPE TABLE OF typ_tvgrt,
      gwa_tvgrt       
TYPE typ_tvgrt,
      git_tvkbt       
TYPE TABLE OF typ_tvkbt,
      gwa_tvkbt       
TYPE typ_tvkbt,
      git_kna1        
TYPE TABLE OF typ_kna1,
      gwa_kna1        
TYPE typ_kna1,
      git_vbap        
TYPE TABLE OF typ_vbap,
      gwa_vbap        
TYPE typ_vbap,
      git_adrc        
TYPE TABLE OF typ_adrc,
      gwa_adrc        
TYPE typ_adrc,
      git_vbpa        
TYPE TABLE OF typ_vbpa,
      gwa_vbpa        
TYPE typ_vbpa,
      git_t151t       
TYPE TABLE OF typ_t151t,
      gwa_t151t       
TYPE typ_t151t,
      git_knvv        
TYPE TABLE OF typ_knvv,
      gwa_knvv        
TYPE typ_knvv.

*---for selection-screen

DATA: BEGIN OF gwa_screen,
        erdat       
TYPE   vbak-erdat, "创建日期
        vbeln       
TYPE   vbak-vbeln, "销售订单编号
        auart       
TYPE  vbak-auart, "销售订单类型
        kunnr       
TYPE  vbak-kunnr, "  客户代码
        vkorg       
TYPE  vbak-vkorg, "  销售组织
        vtweg       
TYPE  vbak-vtweg, "  分销渠道
        spart       
TYPE  vbak-spart, "  产品组
        bzirk       
TYPE  vbkd-bzirk, "销售部
        route       
LIKE  vttk-route, "路线
        route_txt   
LIKE  tvrot-bezei, "路线描述
        vkbur       
TYPE  vbak-vkbur, "    销售大区
        vkgrp       
TYPE  vbak-vkgrp, "    销售办事处
        bstnk       
TYPE vbak-bstnk, "客户采购订单编号
        matnr       
TYPE  vbap-matnr, "    物料号
        pstyv       
TYPE vbap-pstyv, "行项目类型
        werks       
TYPE  vbap-werks, "    交货工厂
        lgort       
TYPE  vbap-lgort, "    库存地
        vstel       
TYPE  vbap-vstel, "    装载点
        matkl       
TYPE vbap-matkl, "物料组
        vbeln_dn    
TYPE lips-vbeln, "交货单号
        vbeln_dn_bl 
TYPE vbrp-vbeln, "开票号
        audat       
TYPE vbak-audat,  "订单日期
      
END OF gwa_screen.

*---for alv

DATA: gwa_layout      TYPE slis_layout_alv,
      git_field       
TYPE slis_t_fieldcat_alv,
      gwa_field       
LIKE LINE OF git_field,
      git_sort        
TYPE slis_t_sortinfo_alv,
      gwa_sort        
LIKE LINE OF git_sort,
      g_grid_title    
TYPE lvc_title,
      go_gui_alv_grid 
TYPE REF TO cl_gui_alv_grid.

*----------------------------------------------------------------------*

* SCREEN DECLARATION: PARAMETERS & SELECT-OPTIONS                      *

*----------------------------------------------------------------------*

TABLES: knvv,likp,mkpf,vbfa .

SELECTION-SCREEN: BEGIN OF BLOCK b01 WITH FRAME TITLE text-t01.

SELECT-OPTIONS:
  s_erdat 
FOR gwa_screen-erdat OBLIGATORY ,"订单创建日期

"  s_audat FOR gwa_screen-audat, "单据日期
  s_vbeln 
FOR gwa_screen-vbeln,"销售订单编号
  s_auart 
FOR gwa_screen-auart,"销售订单类型
  s_kunnr 
FOR gwa_screen-kunnr,"客户代码
  s_kunnr2 
FOR gwa_screen-kunnr,"送达方代码
  s_vkorg 
FOR gwa_screen-vkorg,"销售组织
  s_vtweg 
FOR gwa_screen-vtweg,"分销渠道

"  s_spart FOR gwa_screen-spart OBLIGATORY,"产品组

"  s_kdgrp FOR knvv-kdgrp,"客户组
  s_bzirk 
FOR gwa_screen-bzirk,"销售部
  s_vkbur 
FOR gwa_screen-vkbur,"销售大区
  s_vkgrp 
FOR gwa_screen-vkgrp,"销售办事处
  s_bstnk 
FOR gwa_screen-bstnk,"客户采购订单编号
  s_matnr 
FOR gwa_screen-matnr,"物料号
  s_pstyv 
FOR gwa_screen-pstyv,"行项目类型
  s_matkl 
FOR gwa_screen-matkl,"物料组
  s_werks 
FOR gwa_screen-werks,"交货工厂

"  s_lgort FOR gwa_screen-lgort,"库存地
  s_vstel 
FOR gwa_screen-vstel,"装载点 “20120312增加
  s_vbeln2 
FOR gwa_screen-vbeln_dn,"交货单号
  s_vbeln3 
FOR gwa_screen-vbeln_dn_bl,"开票凭证号
  s_vbelns 
FOR vbfa-vbeln,
  erdat1 
FOR likp-erdat,"交货单创建日期
  erzet1 
FOR likp-erzet,"交货单创建时间
cpudt 
FOR mkpf-cpudt,"发货过账日期
cputm 
FOR mkpf-cputm."发货过账时间

PARAMETER: p_flag TYPE c AS CHECKBOX DEFAULT 'X'."不显示采购订单

"PARAMETER: p_bl TYPE c AS CHECKBOX."不显示公司间开票

PARAMETER: p_del TYPE c AS CHECKBOX DEFAULT 'X'."删除DN总数量是0的交货单

"PARAMETER: p_th TYPE c AS CHECKBOX .                        "48小时订单

"PARAMETER: p_one TYPE c AS CHECKBOX.

SELECTION-SCREEN SKIP 1.

PARAMETER: r_1 TYPE c RADIOBUTTON GROUP rg1.

PARAMETER: r_2 TYPE c RADIOBUTTON GROUP rg1.

PARAMETER: r_3 TYPE c RADIOBUTTON GROUP rg1 DEFAULT 'X'.

SELECTION-SCREEN: END OF BLOCK b01.

*----------------------------------------------------------------------*

* DEFINE                                                               *

*----------------------------------------------------------------------*

DEFINE m_alv_fieldcat.
  GWA_FIELD
-FIELDNAME = &1."字段名称
  GWA_FIELD
-OUTPUTLEN = &2."输出长度
  GWA_FIELD
-REPTEXT_DDIC = &3.
  GWA_FIELD
-EDIT      = &4."是否编辑
  GWA_FIELD
-CHECKBOX    = &5."复选框
  GWA_FIELD
-REF_FIELDNAME = &6.
  GWA_FIELD
-REF_TABNAME   = &7.
  GWA_FIELD
-KEY = &8.
  GWA_FIELD
-NO_ZERO  = &9.

*  WA_FIELD-EMPHASIZE = 'X'.

*  WA_FIELD-just = ''.

*  WA_FIELD-datatype = 'X'.

*  WA_FIELD-REPTEXT_DDIC   = &9.

*  WA_FIELD-NO_OUT         = &9.

*  WA_FIELD-COL_POS   = &10.

*  WA_FIELD-CHECKBOX  = &9.

*  WA_FIELD-HOTSPOT   = &9.

APPEND GWA_FIELD TO GIT_FIELD.
  
CLEAR GWA_FIELD.

END-OF-DEFINITION.

*----------------------------------------------------------------------*

* INITIALIZATION                                                       *

*----------------------------------------------------------------------*

INITIALIZATION.
  
PERFORM frm_initialization.

*----------------------------------------------------------------------*

* AT SELECTION-SCREEN OUTPUT                                           *

*----------------------------------------------------------------------*

AT SELECTION-SCREEN OUTPUT.
  
PERFORM frm_modify_screen.

*----------------------------------------------------------------------*

* AT SELECTION-SCREEN                                                  *

*----------------------------------------------------------------------*

AT SELECTION-SCREEN.
  
PERFORM frm_check_input.

*----------------------------------------------------------------------*

* START-OF-SELECTION                                                   *

*----------------------------------------------------------------------*

START-OF-SELECTION.
  
PERFORM frm_retrive_data."get data
  
PERFORM frm_process_data."process data
  
PERFORM frm_process_data1."process data

*----------------------------------------------------------------------*

* END-OF-SELECTION                                                     *

*----------------------------------------------------------------------*

END-OF-SELECTION.
  
PERFORM frm_output.

*&---------------------------------------------------------------------*

*&      Form  frm_initialization

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_initialization .

*---将订单日期初始化为当月
  
DATA: lwa_erdat LIKE LINE OF s_erdat.

lwa_erdat

-sign = 'I'.
  lwa_erdat
-option = 'BT'.
  
"lwa_erdat-high = sy-datum.
  
CONCATENATE sy-datum+0(6) '01' INTO lwa_erdat-low.

APPEND lwa_erdat TO s_erdat.

ENDFORM. " frm_initialization

*&---------------------------------------------------------------------*

*&      Form  frm_modify_screen

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_modify_screen .

ENDFORM. " frm_modify_screen

*&---------------------------------------------------------------------*

*&      Form  frm_check_input

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_check_input .

ENDFORM. " frm_check_input

*&---------------------------------------------------------------------*

*&      Form  frm_retrive_data

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_retrive_data .
  
DATA: lc_tabix TYPE sy-tabix.

*---get 1. 销售订单信息
  
SELECT vbak~erdat
         vbak
~vdatu
          vbak
~vbeln
          vbak
~kunnr
          vbak
~vkorg"销售组织
          vbak
~vtweg

*          vbak~spart
          vbak
~vkgrp"销售办事处
          vbak
~vkbur
          vbak
~bstnk"客户采购订单编号
          vbak
~erzet "add by yk
          vbap
~spart AS spart2
          vbap
~posnr
          vbap
~matnr
          vbap
~arktx
          vbap
~werks
          
"vbap~lgort
          vbap
~kwmeng"数量
          vbap
~vrkme
          vbap
~netwr"总净值-item
          vbap
~mwsbp"总税额-item
          vbap
~umvkz"分子
          vbap
~umvkn"分母
          vbap
~meins
          
"2011-1-2 添加
          vbap
~kdmat "红白条头数
          vbak
~auart "订单类型
          vbap
~matkl "物料组

*     ------20120312修改--------------
          vbap
~vstel "装载点
          vbap
~eannr
          vbap
~pstyv
          vbak
~knumv
          vbkd
~bzirk
  
INTO CORRESPONDING FIELDS OF TABLE git_vbap
  
FROM vbak
  INNER 
JOIN vbap ON vbak~vbeln = vbap~vbeln
  INNER 
JOIN vbkd ON vbak~vbeln = vbkd~vbeln" AND vbap~posnr = vbkd~posnr
  
WHERE vbak~erdat IN s_erdat
    
"AND vbak~audat IN s_audat
    
AND vbak~vbeln IN s_vbeln
    
AND vbak~auart IN s_auart
    
AND vbak~kunnr IN s_kunnr
    
AND vbak~vkorg IN s_vkorg
    
AND vbak~vtweg IN s_vtweg
    
"AND vbak~spart IN s_spart
    
AND vbak~vkbur IN s_vkbur
    
AND vbak~vkgrp IN s_vkgrp
    
AND vbak~bstnk IN s_bstnk
    
AND vbap~matnr IN s_matnr
    
AND vbap~pstyv IN s_pstyv
    
AND vbkd~bzirk IN s_bzirk
    
AND vbap~werks IN s_werks
  
"AND vbap~lgort IN s_lgort
  
AND vbap~matkl IN s_matkl
  
AND vbap~vstel IN s_vstel.

SORT git_vbap BY vbeln.
  
DELETE ADJACENT DUPLICATES FROM git_vbap.

*---权限检查
  
DATA: BEGIN OF gt_t001w OCCURS 0,
          werks 
LIKE t001w-werks,
          vkorg 
LIKE t001w-vkorg,
        
END OF gt_t001w.
  
IF NOT git_vbap IS INITIAL.
    
SELECT werks vkorg INTO CORRESPONDING FIELDS OF TABLE gt_t001w
      
FROM t001w
      
FOR ALL ENTRIES IN git_vbap
      
WHERE werks = git_vbap-werks.
    
SORT gt_t001w BY werks.
  
ENDIF.

*  LOOP AT git_vbap INTO gwa_vbap.

*    lc_tabix = sy-tabix.

*    "对销售办事处进行检查

*    AUTHORITY-CHECK OBJECT 'Z_SD_VKGRP'

*          ID 'VKGRP' FIELD gwa_vbap-vkgrp.

*    IF sy-subrc <> 0.

*      DELETE git_vbap INDEX lc_tabix.

*      CONTINUE.

*    ENDIF.

*

**---权限检查1.1

*    AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'

*          ID 'VKORG' FIELD gwa_vbap-vkorg

*          ID 'VTWEG' DUMMY

*          ID 'SPART' DUMMY"FIELD "gwa_vbap-spart

*          ID 'ACTVT' FIELD '03'.

*    IF sy-subrc <> 0.

*      DELETE git_vbap INDEX lc_tabix.

*      CONTINUE.

*    ENDIF.

*

*  ENDLOOP.

**---权限检查1.2

*      AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'

*            ID 'VKORG' FIELD gwa_vbap-vkorg

*            ID 'VTWEG' DUMMY

*            ID 'SPART' FIELD gwa_vbap-spart2 "行项目

*            ID 'ACTVT' FIELD '03'.

*      IF sy-subrc <> 0.

**---权限检查2.1

*        READ TABLE gt_t001w WITH KEY werks = gwa_vbap-werks BINARY SEARCH.

*        IF sy-subrc = 0.

*          AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'

*                ID 'VKORG' FIELD gt_t001w-vkorg

*                ID 'VTWEG' DUMMY

*                ID 'SPART' FIELD gwa_vbap-spart

*                ID 'ACTVT' FIELD '03'.

*          IF sy-subrc <> 0.

**---权限检查2.2

*            AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'

*                  ID 'VKORG' FIELD gt_t001w-vkorg

*                  ID 'VTWEG' DUMMY

*                  ID 'SPART' FIELD gwa_vbap-spart2 "行项目

*                  ID 'ACTVT' FIELD '03'.

*            IF sy-subrc <> 0.

*              DELETE git_vbap INDEX lc_tabix.

*              CONTINUE.

*            ENDIF.

*          ENDIF.

*        ELSE.

*          "没有读到数据,删除

*          DELETE git_vbap INDEX lc_tabix.

*          CONTINUE.

*        ENDIF.

*      ENDIF.

*    ENDIF.

IF git_vbap IS NOT INITIAL.

*--取折扣价值
    
SELECT knumv kposn kwert kschl INTO TABLE git_konv FROM konv FOR ALL ENTRIES IN git_vbap
      
WHERE knumv = git_vbap-knumv AND kposn = git_vbap-posnr AND kschl IN ( 'ZB03','ZB04','ZB07' ).

*---物料组描述
    
SELECT matkl
           wgbez

INTO CORRESPONDING FIELDS OF TABLE git_t023
      
FROM t023t
       
FOR ALL ENTRIES IN git_vbap
     
WHERE matkl = git_vbap-matkl
       
AND spras = sy-langu.

*---订单类型
    
SELECT auart
           bezei

INTO CORRESPONDING FIELDS OF TABLE git_tvak
      
FROM tvakt
      
FOR ALL ENTRIES IN git_vbap
     
WHERE auart = git_vbap-auart
       
AND spras = sy-langu.

*---get 客户组
    
SELECT kunnr
            vkorg
            vtweg
            spart
            kdgrp

INTO CORRESPONDING FIELDS OF TABLE git_knvv
      
FROM knvv
      
FOR ALL ENTRIES IN git_vbap
      
WHERE kunnr = git_vbap-kunnr
        
AND vkorg = git_vbap-vkorg
        
AND vtweg = git_vbap-vtweg
        
AND spart = '00'.
    
IF git_knvv IS NOT INITIAL.

*---get 客户组描述
      
SELECT kdgrp
              ktext

INTO CORRESPONDING FIELDS OF TABLE git_t151t
        
FROM t151t
        
WHERE spras = sy-langu.
    
ENDIF.

*---get 送达方
    
SELECT vbeln
            posnr
            parvw
            kunnr
            adrnr

INTO CORRESPONDING FIELDS OF TABLE git_vbpa
       
FROM vbpa
       
FOR ALL ENTRIES IN git_vbap
       
WHERE vbeln = git_vbap-vbeln

*         and POSNR = git_vbrp-posnr
         
AND parvw = 'WE'.
    
IF git_vbpa IS NOT INITIAL.

*---get 地址相关信息
      
SELECT addrnumber
             date_from
             nation
             name1
             street

INTO CORRESPONDING FIELDS OF TABLE git_adrc
        
FROM adrc
        
FOR ALL ENTRIES IN git_vbpa
        
WHERE addrnumber = git_vbpa-adrnr.

ENDIF.

*---get 工厂名称
    
SELECT werks
            name1

INTO CORRESPONDING FIELDS OF TABLE git_t001w
      
FROM t001w.

*---get 客户名称
    
SELECT kunnr
            name1

INTO CORRESPONDING FIELDS OF TABLE git_kna1
      
FROM kna1
      
FOR ALL ENTRIES IN git_vbap
      
WHERE kunnr = git_vbap-kunnr.

*---get 销售大区描述
    
SELECT vkbur
            bezei

INTO CORRESPONDING FIELDS OF TABLE git_tvkbt
      
FROM tvkbt
      
WHERE spras = sy-langu.

*---get 销售办事处描述
    
SELECT vkgrp
            bezei

INTO CORRESPONDING FIELDS OF TABLE git_tvgrt
      
FROM tvgrt
      
WHERE spras = sy-langu.

*---get SO项目状态
    
SELECT vbeln
            posnr
            absta

INTO CORRESPONDING FIELDS OF TABLE git_vbup
      
FROM vbup
      
FOR ALL ENTRIES IN git_vbap
      
WHERE vbeln = git_vbap-vbeln
        
AND posnr = git_vbap-posnr.

*---get 合并 1.1  1.2 SO对应的采购订单、交货单
    
SELECT vbelv
            posnv
            vbeln
            posnn
            posnn

AS posnn_5
            vbtyp_n
            erdat
            rfmng
            rfwrt
            meins
            erzet

INTO CORRESPONDING FIELDS OF TABLE git_vbfa_so
      
FROM vbfa
      
FOR ALL ENTRIES IN git_vbap
      
WHERE vbelv = git_vbap-vbeln
        
AND posnv = git_vbap-posnr
        
AND vbtyp_n IN ('V','J','T')."V 表示采购订单,J表示交货单,T表示订单的退货

IF git_vbfa_so[] IS NOT INITIAL.

*---如果T类型前面含有J类型的情况,则删除T类型

SORT git_vbfa_so BY vbelv posnv  erdat erzet vbtyp_n.
      
DATA:tmp_type  TYPE vbtyp_n,
           tmp_vbelv 
TYPE vbeln_von,
           tmp_posnv 
TYPE posnr_von.
      
LOOP AT git_vbfa_so.
        
IF git_vbfa_so-vbtyp_n = 'T' AND tmp_type = 'J' AND  git_vbfa_so-vbelv = tmp_vbelv AND git_vbfa_so-posnv = tmp_posnv.
          
DELETE git_vbfa_so.
        
ELSEIF git_vbfa_so-vbtyp_n = 'V'."排除类型V
        
ELSE.
          tmp_type 
= git_vbfa_so-vbtyp_n.
          tmp_vbelv 
= git_vbfa_so-vbelv.
          tmp_posnv 
= git_vbfa_so-posnv.
        
ENDIF.
      
ENDLOOP.

*---get 合并1.1.1     1.1.2 PO对应的收货单、发票校验号
      
SELECT ebeln
              ebelp
              zekkn
              vgabe
              gjahr
              belnr
              buzei
              buzei

AS buzei_6
        
INTO CORRESPONDING FIELDS OF TABLE git_ekbe
        
FROM ekbe
        
FOR ALL ENTRIES IN git_vbfa_so
        
WHERE ebeln = git_vbfa_so-vbeln
          
AND ebelp = git_vbfa_so-posnn_5
          
AND vgabe IN ('1','2')."1 表示收货,2 表示发票收据

IF git_ekbe IS NOT INITIAL.

*---get 1.1.1 PO对应的物料凭证(收货)信息
        
SELECT mblnr
                mjahr
                zeile
                menge
                meins

INTO CORRESPONDING FIELDS OF TABLE git_mseg_po
          
FROM mseg
          
FOR ALL ENTRIES IN git_ekbe
          
WHERE mblnr = git_ekbe-belnr
            
AND mjahr = git_ekbe-gjahr
            
AND zeile = git_ekbe-buzei
            
AND smbln = ''."冲销凭证为空,表示该物料凭证不是冲销凭证、
        
IF git_mseg_po IS NOT INITIAL.
          
"get 检查选择出来的物料凭证是否已经被冲销
          
SELECT smbln
                  sjahr
                  smblp
                  mjahr
                  zeile
                  mblnr

INTO CORRESPONDING FIELDS OF TABLE git_m_mbmps_po
            
FROM m_mbmps
            
FOR ALL ENTRIES IN git_mseg_po
            
WHERE smbln = git_mseg_po-mblnr
              
AND sjahr = git_mseg_po-mjahr
              
AND smblp = git_mseg_po-zeile.

ENDIF.

*---get 1.1.2 PO对应的发票校验信息
        
SELECT rbkp~belnr
                rbkp
~gjahr
                rseg
~buzei
                rseg
~menge
                rseg
~meins
          
INTO CORRESPONDING FIELDS OF TABLE git_rseg
          
FROM rbkp
          INNER 
JOIN rseg ON rseg~belnr = rbkp~belnr AND rseg~gjahr = rbkp~gjahr
          
FOR ALL ENTRIES IN git_ekbe
          
WHERE rbkp~belnr = git_ekbe-belnr
            
AND rbkp~gjahr = git_ekbe-gjahr
            
AND rseg~buzei = git_ekbe-buzei_6
            
AND rbkp~stblg = ''."该字段为空,表示当前凭证既不是冲销凭证,也没有被冲销

ENDIF.

*---get 1.2 交货单信息

*2011-1-2

*      SELECT  VBELN

*              POSNR

*              CHARG

*              LGMNG

*              MEINS

*              UECHA"批次拆分项目的上层项目

**              werks

*              LGORT

*        INTO CORRESPONDING FIELDS OF TABLE GIT_LIPS

*        FROM LIPS

*        FOR ALL ENTRIES IN GIT_VBFA_SO

*        WHERE VBELN = GIT_VBFA_SO-VBELN

*          AND POSNR = GIT_VBFA_SO-POSNN.
      
SELECT  a~vbeln
              a
~posnr
              a
~charg
              a
~lgmng
              a
~meins
              a
~uecha"批次拆分项目的上层项目

*              werks
              a
~lgort

*              b~bolnr  "车牌号
              b
~erzet AS erzet_likp
              b
~erdat AS erdat_likp
        
INTO CORRESPONDING FIELDS OF TABLE git_lips
        
FROM lips AS a INNER JOIN likp AS b
          
ON a~vbeln = b~vbeln
        
FOR ALL ENTRIES IN git_vbfa_so
        
WHERE a~vbeln = git_vbfa_so-vbeln
          
AND a~posnr = git_vbfa_so-posnn.

IF git_lips IS NOT INITIAL.

*---get 库存描述
        
SELECT werks
                lgort
                lgobe

INTO CORRESPONDING FIELDS OF TABLE git_t001l
          
FROM t001l.

*---get 1.2.1    1.2.2 交货单对应的物料凭证、开票凭证
        
SELECT vbelv
                posnv
                vbeln
                posnn
                posnn

AS posnn_4
                vbtyp_n
                mjahr

"物料凭证年度
                plmin

INTO CORRESPONDING FIELDS OF TABLE git_vbfa_dn
          
FROM vbfa
          
FOR ALL ENTRIES IN git_lips
          
WHERE vbelv = git_lips-vbeln
            
AND posnv = git_lips-posnr
            
AND vbtyp_n IN ('R','M','5','O')
            
AND vbeln IN s_vbelns."R 表示过账发货,M表示开具发票,5表示公司间开具发票,O表示退货的一种凭证类型
        
"如果选中不显示公司间开票,那么删除公司开票记录

*        IF p_bl = 'X'.

*          DELETE git_vbfa_dn WHERE vbtyp_n = '5'.

*        ENDIF.

IF git_vbfa_dn[] IS NOT INITIAL.

*---(M,5,O)三种类型中,如果存在PLMIN字段是+的,则删除所有-值的条目,R类型,如果有PLMIN正值条目,删除所有-值条目
          
SORT git_vbfa_dn BY vbelv posnv vbtyp_n plmin DESCENDING.
          tmp_git_vbfa_dn[] 
= git_vbfa_dn[].
          
LOOP AT git_vbfa_dn WHERE vbtyp_n <> 'R' AND plmin = '+'.
            
DELETE  tmp_git_vbfa_dn WHERE vbelv = git_vbfa_dn-vbelv AND posnv = git_vbfa_dn-posnv AND plmin = '' AND  vbtyp_n <> 'R'.
          
ENDLOOP.

LOOP AT  git_vbfa_dn WHERE vbtyp_n = 'R' AND plmin = '+'.
            
DELETE tmp_git_vbfa_dn WHERE vbelv = git_vbfa_dn-vbelv AND posnv = git_vbfa_dn-posnv AND plmin = '' AND vbtyp_n = 'R'.
          
ENDLOOP.

CLEAR git_vbfa_dn[].
          git_vbfa_dn[] 
= tmp_git_vbfa_dn[].
          
CLEAR tmp_git_vbfa_dn[].

*---get 1.2.1 交货单对应的物料凭证
          
SELECT mseg~mblnr
                  mseg
~mjahr
                  zeile
                  menge
                  meins
            mkpf

~cpudt
            mkpf
~cputm
            
INTO CORRESPONDING FIELDS OF TABLE git_mseg_dn
            
FROM mseg
            INNER 
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
            
FOR ALL ENTRIES IN git_vbfa_dn
            
WHERE mseg~mblnr = git_vbfa_dn-vbeln
              
AND mseg~mjahr = git_vbfa_dn-mjahr
              
AND zeile = git_vbfa_dn-posnn_4
              
AND smbln = ''
             
."冲销凭证为空,表示该物料凭证不是冲销凭证

*              and LFBNR = ''."参考凭证为空,表示该物料凭证没有被冲销
          
IF git_mseg_dn IS NOT INITIAL.
            
"get 检查选择出来的物料凭证是否已经被冲销
            
SELECT smbln
                    sjahr
                    smblp
                    mjahr
                    zeile
                    mblnr

INTO CORRESPONDING FIELDS OF TABLE git_m_mbmps_dn
              
FROM m_mbmps
              
FOR ALL ENTRIES IN git_mseg_dn
              
WHERE smbln = git_mseg_dn-mblnr
                
AND sjahr = git_mseg_dn-mjahr
                
AND smblp = git_mseg_dn-zeile.

ENDIF.

*---get 1.2.2 交货单对应的开票凭证
          
SELECT vbrp~vbeln
                  vbrp
~posnr
                  vbrp
~fkimg
                  vbrp
~vrkme
                  vbrk
~erzet
                  vbrk
~erdat
            
INTO CORRESPONDING FIELDS OF TABLE git_vbrp
            
FROM vbrp
            INNER 
JOIN vbrk ON vbrk~vbeln = vbrp~vbeln
            
FOR ALL ENTRIES IN git_vbfa_dn
            
WHERE vbrp~vbeln = git_vbfa_dn-vbeln
              
AND vbrp~posnr = git_vbfa_dn-posnn
              
AND vbrk~fksto <> 'X'."不为X,表示未取消

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " frm_retrive_data

*&---------------------------------------------------------------------*

*&      Form  frm_process_data

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_process_data .
  
DATA: BEGIN OF lwa_flag,"判断是否已经输出
          so    
TYPE c, "销售订单
          po    
TYPE c, "采购订单
          dn_gr 
TYPE c, "交货单DN对应的发货单GR

*          dn type c,"交货单

*          dn_chai type c,"交货单拆分
        
END OF lwa_flag.
  
DATA: lwa_output_so    TYPE typ_output,
        lwa_output_so_po 
TYPE typ_output,
        lwa_output_so_dn 
TYPE typ_output,
        lc_name          
TYPE thead-tdname,
        lit_lines        
TYPE TABLE OF tline,
        lwa_lines        
TYPE tline.

*        lwa_output_so_dn_chai type typ_output.

*---process 1. 销售订单相关信息
  
LOOP AT git_vbap INTO gwa_vbap.
    
CLEAR: gwa_output,lwa_flag,lc_name,lit_lines.
    
"process 销售订单
    
MOVE-CORRESPONDING gwa_vbap TO gwa_output.

*    IF gwa_vbap-auart = 'ZORJ' OR gwa_vbap-auart = 'ZORS' OR gwa_vbap-auart = 'ZORW'.

*      gwa_output-eannr = gwa_output-klmeng.

*    ENDIF.

*     gwa_output-kwmeng = gwa_vbap-kwmeng.

*--取折扣价值
    
LOOP AT git_konv WHERE knumv = gwa_vbap-knumv AND kposn = gwa_output-posnr.
      
"gwa_output-zh_kwert = git_konv-kwert + gwa_output-zh_kwert.
      
CASE git_konv-kschl.
        
WHEN 'ZB03'.gwa_output-zh_kwert = git_konv-kwert * -1."显示正数
        
WHEN 'ZB04'.gwa_output-zj_kwert = git_konv-kwert * -1.
        
WHEN 'ZB07'.gwa_output-fy_kwert = git_konv-kwert * -1.
      
ENDCASE.
    
ENDLOOP.

"process 红白条数
    
TRY .

*        gwa_output-kdmat_quan = gwa_vbap-kdmat.
      
CATCH cx_root.

ENDTRY.

*---2011-1-2 hanlin s
    
READ TABLE git_t023 WITH KEY matkl = gwa_vbap-matkl.

IF sy-subrc = 0.
      gwa_output
-wgbez = git_t023-wgbez.
    
ENDIF.

READ TABLE  git_tvak WITH KEY auart = gwa_vbap-auart.
    
IF sy-subrc = 0.
      gwa_output
-bezei  = git_tvak-bezei.
    
ENDIF.

"process 客户组
    
READ TABLE git_knvv INTO gwa_knvv WITH KEY kunnr = gwa_vbap-kunnr vkorg = gwa_vbap-vkorg vtweg = gwa_vbap-vtweg.
    
IF sy-subrc = 0.
      gwa_output
-kdgrp = gwa_knvv-kdgrp.
      
"process 客户组描述
      
READ TABLE git_t151t INTO gwa_t151t WITH KEY kdgrp = gwa_knvv-kdgrp.
      
IF sy-subrc = 0.
        gwa_output
-ktext = gwa_t151t-ktext.
      
ENDIF.
    
ENDIF.
    
"process 送达方代码
    
READ TABLE git_vbpa INTO gwa_vbpa WITH KEY vbeln = gwa_vbap-vbeln  parvw = 'WE'.
    
IF sy-subrc = 0 AND gwa_vbpa-kunnr IN s_kunnr2.
      gwa_output
-kunnr_we = gwa_vbpa-kunnr.
      
"process 送达方名称
      
READ TABLE git_adrc INTO gwa_adrc WITH KEY addrnumber = gwa_vbpa-adrnr.
      
IF sy-subrc = 0.
        gwa_output
-name1_we = gwa_adrc-name1.
      
ENDIF.
    
ELSE.
      
DELETE TABLE git_output FROM gwa_output.
      
CONTINUE.
    
ENDIF.
    
"process 工厂名称
    
READ TABLE git_t001w INTO gwa_t001w WITH KEY werks = gwa_vbap-werks.
    
IF sy-subrc = 0.
      gwa_output
-name1_t001w = gwa_t001w-name1.
    
ENDIF.
    
"process 客户名称
    
READ TABLE git_kna1 INTO gwa_kna1 WITH KEY kunnr = gwa_vbap-kunnr.
    
IF sy-subrc = 0.
      gwa_output
-name1_kna1 = gwa_kna1-name1.
    
ENDIF.
    
"process 销售大区描述
    
READ TABLE git_tvkbt INTO gwa_tvkbt WITH KEY vkbur = gwa_vbap-vkbur.
    
IF sy-subrc = 0.
      gwa_output
-bezei_tvkbt = gwa_tvkbt-bezei.
    
ENDIF.
    
"process 销售办事处描述
    
READ TABLE git_tvgrt INTO gwa_tvgrt WITH KEY vkgrp = gwa_vbap-vkgrp.
    
IF sy-subrc = 0.
      gwa_output
-bezei_tvgrt = gwa_tvgrt-bezei.
    
ENDIF.
    
"process 含税单价--销售单位
    
IF gwa_output-kwmeng IS NOT INITIAL.
      gwa_output
-zdj = ( gwa_output-netwr + gwa_output-mwsbp ) / gwa_output-kwmeng.
    
ENDIF.
    
"process 基本单位数量
    
IF gwa_output-umvkn IS NOT INITIAL.
      gwa_output
-zsl_base = gwa_output-kwmeng * gwa_output-umvkz / gwa_output-umvkn.
    
ENDIF.
    
"process 基本单位含税单价
    
IF gwa_output-zsl_base IS NOT INITIAL.
      gwa_output
-zdj_base = ( gwa_output-netwr + gwa_output-mwsbp ) / gwa_output-zsl_base.
    
ENDIF.
    
"process SO项目状态
    
READ TABLE git_vbup INTO gwa_vbup WITH KEY vbeln = gwa_vbap-vbeln posnr = gwa_vbap-posnr.
    
IF sy-subrc = 0.
      gwa_output
-absta = gwa_vbup-absta.
      
CASE gwa_vbup-absta.
        
WHEN 'A'.
          gwa_output
-zabsta_des = '没有处理'.
        
WHEN 'B'.
          gwa_output
-zabsta_des = '部分处理'.
        
WHEN 'C'.
          gwa_output
-zabsta_des = '完全地处理 '.
        
WHEN OTHERS.
      
ENDCASE.
    
ENDIF.
    
"备份 SO数据
    lwa_output_so 
= gwa_output.
    
"process 1.1 SO对应的PO采购订单
    
IF p_flag = ''."当flag为空时,才取采购订单
      
LOOP AT git_vbfa_so INTO gwa_vbfa_so WHERE vbelv = gwa_vbap-vbeln AND posnv = gwa_vbap-posnr AND vbtyp_n = 'V'.
        
CLEAR: lwa_flag-po.
        
"还原 SO数据
        gwa_output 
= lwa_output_so.
        
"process PO相关信息
        gwa_output
-ebeln_po = gwa_vbfa_so-vbeln.
        gwa_output
-ebelp_po = gwa_vbfa_so-posnn.
        gwa_output
-aedat_po = gwa_vbfa_so-erdat."订单日期
        gwa_output
-menge_po = gwa_vbfa_so-rfmng."数量
        
IF gwa_vbfa_so-rfmng IS NOT INITIAL.
          gwa_output
-netpr_po = gwa_vbfa_so-rfwrt / gwa_vbfa_so-rfmng."净单价
        
ENDIF.
        gwa_output
-meins_po = gwa_vbfa_so-meins."单位
        
"process 1.1.1 PO对应的GR收货单
        
"备份 SO-PO数据
        lwa_output_so_po 
= gwa_output.

LOOP AT git_ekbe INTO gwa_ekbe WHERE ebeln = gwa_vbfa_so-vbeln AND ebelp = gwa_vbfa_so-posnn_5 AND vgabe = '1'.
          
"process GR相关信息
          
READ TABLE git_mseg_po INTO gwa_mseg_po WITH KEY mblnr = gwa_ekbe-belnr mjahr = gwa_ekbe-gjahr zeile = gwa_ekbe-buzei.
          
IF sy-subrc = 0.
            
"process 过滤掉已经被冲销的物料凭证
            
READ TABLE git_m_mbmps_po INTO gwa_m_mbmps_po WITH KEY smbln = gwa_mseg_po-mblnr sjahr = gwa_mseg_po-mjahr smblp = gwa_mseg_po-zeile.
            
IF sy-subrc <> 0.
              gwa_output
-mblnr_po_gr = gwa_mseg_po-mblnr.
              gwa_output
-zeile_po_gr = gwa_mseg_po-zeile.
              gwa_output
-menge_po_gr = gwa_mseg_po-menge.
              gwa_output
-meins_po_gr = gwa_mseg_po-meins.

APPEND gwa_output TO git_output.
              lwa_flag
-so = 'X'."销售订单已经输出过
              lwa_flag
-po = 'X'."采购订单已经输出过
            
ENDIF.
          
ENDIF.
        
ENDLOOP.
        
"还原 so-po数据
        gwa_output 
= lwa_output_so_po.
        
"process 1.1.2 PO对应的IR发票校验
        
LOOP AT git_ekbe INTO gwa_ekbe WHERE ebeln = gwa_vbfa_so-vbeln AND ebelp = gwa_vbfa_so-posnn_5 AND vgabe = '2'.
          
"process IR相关信息
          
READ TABLE git_rseg INTO gwa_rseg WITH KEY belnr = gwa_ekbe-belnr gjahr = gwa_ekbe-gjahr buzei = gwa_ekbe-buzei_6.
          
IF sy-subrc = 0.
            gwa_output
-belnr_po_ir = gwa_rseg-belnr.
            gwa_output
-buzei_po_ir = gwa_rseg-buzei.
            gwa_output
-menge_po_ir = gwa_rseg-menge.
            gwa_output
-meins_po_ir = gwa_rseg-meins.

APPEND gwa_output TO git_output.
            lwa_flag
-so = 'X'."销售订单已经输出过
            lwa_flag
-po = 'X'."采购订单已经输出过
          
ENDIF.
        
ENDLOOP.

"检查PO采购订单是否已经输出过
        
IF lwa_flag-po = ''.
          
APPEND gwa_output TO git_output.
          lwa_flag
-so = 'X'."销售订单已经输出过
          lwa_flag
-po = 'X'."采购订单已经输出过
        
ENDIF.
      
ENDLOOP.

ENDIF.

"process 1.2 SO对应的交货单DN
    
LOOP AT git_vbfa_so INTO gwa_vbfa_so WHERE vbelv = gwa_vbap-vbeln AND posnv = gwa_vbap-posnr AND ( vbtyp_n = 'J' OR vbtyp_n = 'T' ).
      
"还原so数据
      gwa_output 
= lwa_output_so.
      
"process 交货单

*      READ TABLE git_lips INTO gwa_lips WITH KEY vbeln = gwa_vbfa_so-vbeln posnr = gwa_vbfa_so-posnn uecha = ''.
      
READ TABLE git_lips INTO gwa_lips WITH KEY vbeln = gwa_vbfa_so-vbeln posnr = gwa_vbfa_so-posnn.
      
IF sy-subrc = 0.
        
"process 交货单DN相关信息
        gwa_output
-vbeln_dn = gwa_lips-vbeln.
        gwa_output
-posnr_dn = gwa_lips-posnr.
        gwa_output
-charg_dn = gwa_lips-charg.
        gwa_output
-lgmng_dn = gwa_lips-lgmng.
        gwa_output
-meins_dn = gwa_lips-meins.

*        gwa_output-werks = gwa_lips-werks.
        gwa_output
-lgort = gwa_lips-lgort.

**2011-1-2 HANLIN
        gwa_output
-bolnr = gwa_lips-bolnr.

**2011-1-2 HANLIN
        gwa_output
-erdat_likp = gwa_lips-erdat_likp.
        gwa_output
-erzet_likp = gwa_lips-erzet_likp.

"process 库存描述
        
READ TABLE git_t001l INTO gwa_t001l WITH KEY werks = gwa_vbap-werks lgort = gwa_lips-lgort.
        
IF sy-subrc = 0.
          gwa_output
-lgobe = gwa_t001l-lgobe.
        
ENDIF.

"process 行项目文本
        
CONCATENATE gwa_output-vbeln_dn gwa_output-posnr_dn INTO lc_name.
        
CALL FUNCTION 'READ_TEXT'
          
EXPORTING

*           CLIENT                  = SY-MANDT
            
id                      = '0001'
            
language                = sy-langu
            name                    
= lc_name
            object                  
= 'VBBP'

*           ARCHIVE_HANDLE          = 0

*           LOCAL_CAT               = ' '

*     IMPORTING

*           HEADER                  =
          
TABLES
            
lines                   = lit_lines
          
EXCEPTIONS
            
id                      = 1
            
language                = 2
            name                    
= 3
            not_found               
= 4
            object                  
= 5
            reference_check         
= 6
            wrong_access_to_archive 
= 7
            
OTHERS                  = 8.

IF sy-subrc = 4.
          
CALL FUNCTION 'READ_TEXT'
            
EXPORTING

*             CLIENT                  = SY-MANDT
              
id                      = '0001'
              
language                = sy-langu
              name                    
= lc_name
              object                  
= 'VBBP'

*             ARCHIVE_HANDLE          = 0

*             LOCAL_CAT               = ' '

*     IMPORTING

*             HEADER                  =
            
TABLES
              
lines                   = lit_lines
            
EXCEPTIONS
              
id                      = 1
              
language                = 2
              name                    
= 3
              not_found               
= 4
              object                  
= 5
              reference_check         
= 6
              wrong_access_to_archive 
= 7
              
OTHERS                  = 8.
        
ENDIF.

LOOP AT lit_lines INTO lwa_lines.
          
CONCATENATE gwa_output-ztext lwa_lines-tdline INTO gwa_output-ztext.
        
ENDLOOP.

"process 抬头文本
        
CLEAR: lit_lines ,
           lc_name
,
           lwa_lines
.
        lc_name 
= gwa_output-vbeln_dn.
        
CALL FUNCTION 'READ_TEXT'
          
EXPORTING

*           CLIENT                  = SY-MANDT
            
id                      = '0001'
            
language                = sy-langu
            name                    
= lc_name
            object                  
= 'VBBK'

*           ARCHIVE_HANDLE          = 0

*           LOCAL_CAT               = ' '

*     IMPORTING

*           HEADER                  =
          
TABLES
            
lines                   = lit_lines
          
EXCEPTIONS
            
id                      = 1
            
language                = 2
            name                    
= 3
            not_found               
= 4
            object                  
= 5
            reference_check         
= 6
            wrong_access_to_archive 
= 7
            
OTHERS                  = 8.

IF sy-subrc = 4.
          
CALL FUNCTION 'READ_TEXT'
            
EXPORTING

*             CLIENT                  = SY-MANDT
              
id                      = '0001'
              
language                = sy-langu
              name                    
= lc_name
              object                  
= 'VBBK'

*             ARCHIVE_HANDLE          = 0

*             LOCAL_CAT               = ' '

*     IMPORTING

*             HEADER                  =
            
TABLES
              
lines                   = lit_lines
            
EXCEPTIONS
              
id                      = 1
              
language                = 2
              name                    
= 3
              not_found               
= 4
              object                  
= 5
              reference_check         
= 6
              wrong_access_to_archive 
= 7
              
OTHERS                  = 8.
        
ENDIF.

LOOP AT lit_lines INTO lwa_lines.

*      GWA_OUTPUT-RISE_TEXT = LWA_LINES-TDLINE .
          
CONCATENATE gwa_output-rise_text lwa_lines-tdline INTO gwa_output-rise_text.
        
ENDLOOP.

CLEAR: lit_lines ,
            lc_name
,
            lwa_lines
.
        lc_name 
= gwa_output-vbeln.
        
CALL FUNCTION 'READ_TEXT'
          
EXPORTING

*           CLIENT                  = SY-MANDT
            
id                      = '0001'
            
language                = sy-langu
            name                    
= lc_name
            object                  
= 'VBBK'

*           ARCHIVE_HANDLE          = 0

*           LOCAL_CAT               = ' '

*     IMPORTING

*           HEADER                  =
          
TABLES
            
lines                   = lit_lines
          
EXCEPTIONS
            
id                      = 1
            
language                = 2
            name                    
= 3
            not_found               
= 4
            object                  
= 5
            reference_check         
= 6
            wrong_access_to_archive 
= 7
            
OTHERS                  = 8.

IF sy-subrc = 4.
          
CALL FUNCTION 'READ_TEXT'
            
EXPORTING

*             CLIENT                  = SY-MANDT
              
id                      = '0001'
              
language                = sy-langu
              name                    
= lc_name
              object                  
= 'VBBK'

*             ARCHIVE_HANDLE          = 0

*             LOCAL_CAT               = ' '

*     IMPORTING

*             HEADER                  =
            
TABLES
              
lines                   = lit_lines
            
EXCEPTIONS
              
id                      = 1
              
language                = 2
              name                    
= 3
              not_found               
= 4
              object                  
= 5
              reference_check         
= 6
              wrong_access_to_archive 
= 7
              
OTHERS                  = 8.
        
ENDIF.

LOOP AT lit_lines INTO lwa_lines.

*      GWA_OUTPUT-RISE_TEXT = LWA_LINES-TDLINE .
          
CONCATENATE gwa_output-so_text lwa_lines-tdline INTO gwa_output-so_text.
        
ENDLOOP.

"备份 so-dn数据
        lwa_output_so_dn 
= gwa_output.
        
"判断当前交货单是否被拆分过:1.如果被拆分,那么多条;2.如果未被拆分,一条数据
        
READ TABLE git_lips INTO gwa_lips_chai WITH KEY vbeln = gwa_lips-vbeln uecha = gwa_lips-posnr.
        
IF sy-subrc = 0.
          
"process 交货单DN的拆分项目
          
LOOP AT git_lips INTO gwa_lips_chai WHERE vbeln = gwa_lips-vbeln AND uecha = gwa_lips-posnr.
            
"还原 so-dn数据
            gwa_output 
= lwa_output_so_dn.

gwa_output

-posnr_dn_chai = gwa_lips_chai-posnr.
            gwa_output
-charg_dn_chai = gwa_lips_chai-charg.
            gwa_output
-lgmng_dn_chai = gwa_lips_chai-lgmng.
            gwa_output
-meins_dn_chai = gwa_lips_chai-meins.
            
"process 交货单DN拆分的发货单GR
            
LOOP AT git_vbfa_dn INTO gwa_vbfa_dn WHERE vbelv = gwa_lips_chai-vbeln AND posnv = gwa_lips_chai-posnr AND vbtyp_n = 'R'.
              
"process DN拆分对应的发货单信息
              
READ TABLE git_mseg_dn INTO gwa_mseg_dn WITH KEY mblnr = gwa_vbfa_dn-vbeln mjahr = gwa_vbfa_dn-mjahr zeile = gwa_vbfa_dn-posnn_4.
              
IF sy-subrc = 0.
                
"process 过滤掉已经被冲销的物料凭证
                
READ TABLE git_m_mbmps_dn INTO gwa_m_mbmps_dn WITH KEY smbln = gwa_mseg_dn-mblnr sjahr = gwa_mseg_dn-mjahr smblp = gwa_mseg_dn-zeile.
                
IF sy-subrc <> 0.
                  gwa_output
-mblnr_dn_gr = gwa_mseg_dn-mblnr.
                  gwa_output
-zeile_dn_gr = gwa_mseg_dn-zeile.
                  gwa_output
-menge_dn_gr = gwa_mseg_dn-menge.
                  gwa_output
-meins_dn_gr = gwa_mseg_dn-meins.

ENDIF.
              
ENDIF.
            
ENDLOOP.
            
"process 交货单DN拆分的开票凭证BL
            
LOOP AT git_vbfa_dn INTO gwa_vbfa_dn WHERE vbelv = gwa_lips_chai-vbeln AND posnv = gwa_lips_chai-posnr AND ( vbtyp_n = 'M' OR vbtyp_n = '5' OR vbtyp_n = 'O').
              
"process DN拆分对应的开票凭证
              
READ TABLE git_vbrp INTO gwa_vbrp WITH KEY vbeln = gwa_vbfa_dn-vbeln posnr = gwa_vbfa_dn-posnn.
              
IF sy-subrc = 0.
                gwa_output
-vbeln_dn_bl = gwa_vbrp-vbeln.
                gwa_output
-posnr_dn_bl = gwa_vbrp-posnr.
                gwa_output
-fkimg_dn_bl = gwa_vbrp-fkimg.
                gwa_output
-vrkme_dn_bl = gwa_vbrp-vrkme.

"process 交货单拆分是否输出过.
                
APPEND gwa_output TO git_output.
                lwa_flag
-so = 'X'."销售订单已经输出过
                lwa_flag
-dn_gr = 'X'."交货单DN的发货单GR已经输出过
              
ENDIF.
            
ENDLOOP.

"判断交货单DN的发货单GR是否输出过
            
IF lwa_flag-dn_gr = ''.
              
APPEND gwa_output TO git_output.
              lwa_flag
-so = 'X'."销售订单已经输出过
            
ENDIF.

ENDLOOP.
        
ELSE.                                               "2.未被拆分
          
"process 交货单DN的发货单GR
          
LOOP AT git_vbfa_dn INTO gwa_vbfa_dn WHERE vbelv = gwa_lips-vbeln AND posnv = gwa_lips-posnr AND vbtyp_n = 'R'.
            
"process DN对应的发货单信息
            
READ TABLE git_mseg_dn INTO gwa_mseg_dn WITH KEY mblnr = gwa_vbfa_dn-vbeln mjahr = gwa_vbfa_dn-mjahr zeile = gwa_vbfa_dn-posnn_4.
            
IF sy-subrc = 0.
              
"process 过滤掉已经被冲销的物料凭证
              
READ TABLE git_m_mbmps_dn INTO gwa_m_mbmps_dn WITH KEY smbln = gwa_mseg_dn-mblnr sjahr = gwa_mseg_dn-mjahr smblp = gwa_mseg_dn-zeile.
              
IF sy-subrc <> 0.
                gwa_output
-mblnr_dn_gr = gwa_mseg_dn-mblnr.
                gwa_output
-zeile_dn_gr = gwa_mseg_dn-zeile.
                gwa_output
-menge_dn_gr = gwa_mseg_dn-menge.
                gwa_output
-meins_dn_gr = gwa_mseg_dn-meins.

gwa_output

-cpudt = gwa_mseg_dn-cpudt.
                gwa_output
-cputm = gwa_mseg_dn-cputm.
              
ENDIF.
            
ENDIF.
          
ENDLOOP.
          
"process 交货单DN的开票凭证BL
          
LOOP AT git_vbfa_dn INTO gwa_vbfa_dn WHERE vbelv = gwa_lips-vbeln AND posnv = gwa_lips-posnr AND ( vbtyp_n = 'M' OR vbtyp_n = '5' OR vbtyp_n = 'O').
            
"process DN对应的开票凭证
            
READ TABLE git_vbrp INTO gwa_vbrp WITH KEY vbeln = gwa_vbfa_dn-vbeln posnr = gwa_vbfa_dn-posnn.
            
IF sy-subrc = 0.
              gwa_output
-vbeln_dn_bl = gwa_vbrp-vbeln.
              gwa_output
-posnr_dn_bl = gwa_vbrp-posnr.
              gwa_output
-fkimg_dn_bl = gwa_vbrp-fkimg.
              gwa_output
-vrkme_dn_bl = gwa_vbrp-vrkme.
              gwa_output
-erzet_fp = gwa_vbrp-erzet.
              gwa_output
-erdat_fp = gwa_vbrp-erdat.

"process 交货单DN是否输出过
              
APPEND gwa_output TO git_output.
              lwa_flag
-so = 'X'."销售订单已经输出过
              lwa_flag
-dn_gr = 'X'."交货单DN的发货单GR已经输出过
            
ENDIF.
          
ENDLOOP.

"判断交货单DN的发货单GR是否输出过
          
IF lwa_flag-dn_gr = ''.
            
APPEND gwa_output TO git_output.
            lwa_flag
-so = 'X'."销售订单已经输出过
          
ENDIF.

ENDIF.
      
ENDIF.
    
ENDLOOP.

"判断销售订单SO是否输出过
    
IF lwa_flag-so = ''.
      
APPEND gwa_output TO git_output.
    
ENDIF.

ENDLOOP.

*---按照库存地点 过滤数据

*  IF s_lgort IS NOT INITIAL.

*    DELETE git_output WHERE lgort NOT IN s_lgort.

*  ENDIF.

*---按照送达方编码 过滤数据

*  IF s_kunnr2 IS NOT INITIAL.

*    DELETE git_output WHERE kunnr_we NOT IN s_kunnr2.

*  ENDIF.

*---按照是否审批,过滤数据:1.已审批,则删除交货单为空的;2.未审批,则删除交货单不为空的
  
IF r_1 = 'X'.
    
DELETE git_output WHERE vbeln_dn IS INITIAL.
  
ELSEIF r_2 = 'X'.
    
DELETE git_output WHERE vbeln_dn IS NOT INITIAL.
  
ENDIF.

*---按照交货单号、开票凭证号进行过滤
  
IF s_vbeln2 IS NOT INITIAL."交货单号
    
DELETE git_output WHERE vbeln_dn NOT IN s_vbeln2.
  
ENDIF.
  
IF s_vbeln3 IS NOT INITIAL."开票凭证号
    
DELETE git_output WHERE vbeln_dn_bl NOT IN s_vbeln3.
  
ENDIF.

**---按照客户组过滤数据

*  IF s_kdgrp IS NOT INITIAL.

*    DELETE git_output WHERE kdgrp NOT IN s_kdgrp.

*  ENDIF.

**---判断是否存在相应的选择数据
  
IF git_output IS INITIAL.
    
MESSAGE text-001 TYPE 'S'.
    
LEAVE  LIST-PROCESSING.
  
ENDIF.
  
"--------------修改使销售单位数量、基本单位数量不重复显示---add by sxl 2011.01.08-------------
  
DATA: gwa_output_temp TYPE typ_output.
  
LOOP AT git_output INTO gwa_output.

*    IF gwa_output-vbeln = gwa_output_temp-vbeln AND gwa_output-posnr = gwa_output_temp-posnr.

*      CLEAR: gwa_output-kwmeng , gwa_output-zdj , gwa_output-zsl_base, gwa_output-zdj_base.

*      MODIFY git_output FROM gwa_output.

*    ELSE.

*      gwa_output_temp = gwa_output.

*    ENDIF.

"-------------退货订单加负----add by sxl-----2011.06.13-------
    
IF gwa_output-auart  = 'ZKA1' OR gwa_output-auart = 'ZKR1' OR gwa_output-auart = 'ZRE1' OR gwa_output-auart = 'ZRE2'.
      gwa_output
-kwmeng = gwa_output-kwmeng * ( -1 ).
      gwa_output
-zsl_base = gwa_output-zsl_base * ( -1 ).
    
ENDIF.
    
"-------------增加金额计算----add by sxl-----2011.01.10-------
    
" gwa_output-dmbtr = gwa_output-kwmeng * gwa_output-zdj.
    gwa_output
-dmbtr =  gwa_output-netwr + gwa_output-mwsbp.
    
SELECT SINGLE bztxt INTO gwa_output-bzirk_txt
      
FROM t171t
      
WHERE bzirk EQ gwa_output-bzirk.

SELECT SINGLE vtext INTO gwa_output-pstyv_txt
      
FROM tvapt
      
WHERE pstyv EQ gwa_output-pstyv.

SELECT SINGLE route INTO gwa_output-route
      
FROM likp
     
WHERE vbeln EQ gwa_output-vbeln_dn.

SELECT SINGLE bezei INTO gwa_output-route_txt
      
FROM tvrot
      
WHERE route EQ gwa_output-route.
    
MODIFY git_output FROM gwa_output.
  
ENDLOOP.

ENDFORM. " frm_process_data

*&---------------------------------------------------------------------*

*&      Form  frm_output

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_output .

gwa_layout

-colwidth_optimize = 'X'."宽度自动优化
  gwa_layout
-zebra             = 'X'."斑马线

*  GWA_LAYOUT-F2CODE            = '&ETA'.

gwa_layout

-box_fieldname     = 'ZSEL'.

gwa_sort

-fieldname = 'VBELN'."销售订单
  gwa_sort
-up = 'X'.
  
APPEND gwa_sort TO git_sort.

SORT git_output BY vbeln posnr vbeln_dn posnr_dn.
  
DELETE ADJACENT DUPLICATES FROM git_output.

DATA:luecha  LIKE lips-uecha.
  
DATA:lpstyv  LIKE lips-pstyv.
  
DATA:ls_output TYPE typ_output.

**  LOOP AT git_output INTO gwa_output.

**    SELECT SINGLE pstyv uecha INTO ( lpstyv ,luecha )

**      FROM lips

**      WHERE vbeln EQ gwa_output-vbeln_dn AND posnr EQ gwa_output-posnr_dn.

**

**    IF lpstyv EQ 'ZMN'.

**      READ TABLE git_output INTO ls_output

**            WITH KEY vbeln = gwa_output-vbeln vbeln_dn = gwa_output-vbeln_dn posnr_dn = luecha.

**      ls_output-kwmeng = ls_output-kwmeng + gwa_output-kwmeng.

**      ls_output-lgmng_dn = ls_output-lgmng_dn + gwa_output-lgmng_dn.

**      ls_output-menge_dn_gr = ls_output-menge_dn_gr + gwa_output-menge_dn_gr.

**      MODIFY TABLE git_output FROM ls_output.

**      DELETE TABLE git_output FROM gwa_output.

**    ENDIF.

**    CLEAR:luecha,lpstyv,ls_output.

**  ENDLOOP.
  
DATA:lv_output TYPE  typ_output.
  
LOOP AT git_output INTO gwa_output WHERE posnr_dn_chai IS NOT INITIAL .
    
"IF gwa_output-posnr_dn_chai IS NOT INITIAL.
    
READ TABLE git_output INTO lv_output WITH KEY vbeln = gwa_output-vbeln
                                                  vbeln_dn 
= gwa_output-vbeln_dn
                                                  posnr_dn 
= gwa_output-posnr_dn_chai.

*    CLEAR gwa_output-menge_dn_gr .

*    CLEAR gwa_output-dmbtr.
    
IF sy-subrc EQ 0.
      gwa_output
-lgmng_dn  =  lv_output-lgmng_dn.
      gwa_output
-menge_dn_gr  =  lv_output-menge_dn_gr.
      gwa_output
-dmbtr  =  lv_output-dmbtr.
      gwa_output
-cpudt  =  lv_output-cpudt.
      gwa_output
-cputm  =  lv_output-cputm.
      gwa_output
-erzet_fp  =  lv_output-erzet_fp.
      gwa_output
-erdat_fp  =  lv_output-erdat_fp.
      
DELETE TABLE git_output FROM lv_output.
    
ENDIF.

MODIFY git_output FROM gwa_output.
    
"ENDIF.
    
CLEAR lv_output.
  
ENDLOOP.

LOOP AT git_output INTO gwa_output WHERE posnr_dn_chai IS NOT INITIAL .
    
LOOP AT git_output INTO lv_output WHERE vbeln EQ gwa_output-vbeln
                                         
AND vbeln_dn EQ gwa_output-vbeln_dn
                                         
AND posnr_dn EQ gwa_output-posnr_dn
                                         
AND posnr_dn_chai <> gwa_output-posnr_dn_chai .

gwa_output

-lgmng_dn = gwa_output-lgmng_dn + lv_output-lgmng_dn.
      gwa_output
-menge_dn_gr = gwa_output-menge_dn_gr + lv_output-menge_dn_gr.
      
DELETE TABLE git_output FROM lv_output.
    
ENDLOOP.
    
CLEAR gwa_output-posnr_dn_chai.

READ TABLE git_vbfa_dn INTO gwa_vbfa_dn WITH KEY vbelv = gwa_output-vbeln_dn  posnv = gwa_output-posnr_dn vbtyp_n = 'M' .
    
IF sy-subrc = 0.
      
READ TABLE git_vbrp INTO gwa_vbrp WITH KEY vbeln = gwa_vbfa_dn-vbeln posnr = gwa_vbfa_dn-posnn.
      
IF sy-subrc = 0.
        gwa_output
-vbeln_dn_bl = gwa_vbrp-vbeln.
        gwa_output
-posnr_dn_bl = gwa_vbrp-posnr.
        gwa_output
-fkimg_dn_bl = gwa_vbrp-fkimg.
        gwa_output
-vrkme_dn_bl = gwa_vbrp-vrkme.
        gwa_output
-erzet_fp = gwa_vbrp-erzet.
        gwa_output
-erdat_fp = gwa_vbrp-erdat.
      
ENDIF.
    
ENDIF.

MODIFY git_output FROM gwa_output.
  
ENDLOOP.
  m_alv_fieldcat
:

*                  'ZSEL' 4 text-f01 'X' 'X' '' '' '' 'X',

'ERDAT' 8 text-f02 '' '' '' '' 'X' 'X',
                  
'ERZET' 6 '创建时间' '' '' '' '' 'X' 'X',
                  
'VDATU' 8 '交货日期' '' '' '' '' 'X' 'X',
                  
'VBELN' 8 text-f03 '' '' '' '' 'X' 'X',
                  
'KUNNR' 8 text-f04 '' '' '' '' 'X' 'X',
                  
'NAME1_KNA1' 8 text-f05 '' '' '' '' 'X' 'X',
                  
'KUNNR_WE' 30 text-f59 '' '' '' '' '' 'X',
                  
'NAME1_WE' 30 text-f60 '' '' '' '' '' 'X',
                  
'VKORG' 30 text-f06 '' '' '' '' '' 'X',
                  
'VTWEG' 30 text-f07 '' '' '' '' '' 'X',
                  
"'SPART' 10 text-f08 '' '' '' '' '' '',
                  
'KDGRP' 10 text-f61 '' '' '' '' '' '',
                  
'KTEXT' 10 text-f62 '' '' '' '' '' '',
                  
'BZIRK' 10 '销售部' '' '' '' '' '' '',
                  
'BZIRK_TXT' 10 '销售部描述' '' '' '' '' '' '',
                  
'VKBUR' 10 text-f09 '' '' '' '' '' '',
                  
'BEZEI_TVKBT' 25 text-f10 '' '' '' '' '' 'X',
                  
'VKGRP' 25 text-f11 '' '' '' '' '' '',
                  
'BEZEI_TVGRT' 25 text-f12 '' '' '' '' '' 'X',
                  
'BSTNK' '' text-f58 '' '' '' '' '' '',
                  
'POSNR' 25 text-f13 '' '' '' '' '' 'X',
                  
'PSTYV' 25 '行项目类型' '' '' '' '' '' 'X',
                  
'PSTYV_TXT' 25 '行项目类型描述' '' '' '' '' '' 'X',
                  
'MATNR' 25 text-f14 '' '' '' '' '' 'X',
                  
'ARKTX' 25 text-f15 '' '' '' '' '' 'X',
                  
'WERKS' 25 text-f16 '' '' '' '' '' 'X',
                  
'NAME1_T001W' '' text-f17 '' '' '' '' '' 'X',
                  
'KWMENG' '' text-f20 '' '' '' '' '' 'X',
                  
"'ZDJ' '' text-f21 '' '' '' '' '' 'X',
                  
'DMBTR' '' '销售订单行项目金额' '' '' '' '' '' 'X',
                  
'ZH_KWERT' '' '折扣金额'  '' '' '' '' '' 'X',
                  
'ZJ_KWERT' '' '折价金额'  '' '' '' '' '' 'X',
                  
'FY_KWERT' '' '费用折扣'  '' '' '' '' '' 'X',
                  
'VRKME' '' text-f22 '' '' '' '' '' 'X',
                  
"'ZSL_BASE' '' text-f23 '' '' '' '' '' 'X',
                  
'ZDJ_BASE' '' text-f24 '' '' '' '' '' 'X',
                  
'MEINS' '' text-f25 '' '' '' '' '' 'X',
                  
'ZABSTA_DES' '' text-f26 '' '' '' '' '' 'X',

"'KDMAT_QUAN' '' '红白条头数' '' '' '' '' '' 'X',
                  
"'BOLNR' '' '车牌号'  '' '' '' '' '' 'X',
                  
'AUART' '' '订单类型'  '' '' '' '' '' 'X',
                  
'BEZEI' '' '订单类型描述'  '' '' '' '' '' 'X',
                  
'MATKL' '' '物料组'  '' '' '' '' '' 'X',
                  
'WGBEZ' '' '物料组描述'  '' '' '' '' '' 'X',

'ERDAT_LIKP' '' '交货单创建日期'  '' '' '' '' '' 'X',
                  
'ERZET_LIKP' '' '交货单创建时间'  '' '' '' '' '' 'X',
                  
"'DDLX' '' '时间订单'  '' '' '' '' '' 'X',

*-----------------------------ADD BY YK
                  
'CPUDT' '' '物料凭证创建日期'  '' '' '' '' '' 'X',
                  
'CPUTM' '' '物料凭证创建时间'  '' '' '' '' '' 'X',
                  
'ERZET_FP' '' '发票创建时间'  '' '' '' '' '' 'X',
                  
'ERDAT_FP' '' '发票创建日期'  '' '' '' '' '' 'X'.
  
"erdat_likp

IF p_flag = 'X'."当flag为空的时候,不显示跟采购订单有关的列
    m_alv_fieldcat
:  'EBELN_PO' '' text-f27 '' '' '' '' '' 'X',
                    
'AEDAT_PO' '' text-f28 '' '' '' '' '' 'X',
                    
'EBELP_PO' '' text-f29 '' '' '' '' '' 'X',
                    
'MENGE_PO' '' text-f30 '' '' '' '' '' 'X',
                    
'NETPR_PO' '' text-f31 '' '' '' '' '' 'X',
                    
'MEINS_PO' '' text-f32 '' '' '' '' '' 'X',
                    
'MBLNR_PO_GR' '' text-f33 '' '' '' '' '' 'X',
                    
'ZEILE_PO_GR' '' text-f34 '' '' '' '' '' 'X',
                    
'MENGE_PO_GR' '' text-f35 '' '' '' '' '' 'X',
                    
'MEINS_PO_GR' '' text-f36 '' '' '' '' '' 'X',
                    
'BELNR_PO_IR' '' text-f37 '' '' '' '' '' 'X',
                    
'BUZEI_PO_IR' '' text-f38 '' '' '' '' '' 'X',
                    
'MENGE_PO_IR' '' text-f39 '' '' '' '' '' 'X',
                    
'MEINS_PO_IR' '' text-f40 '' '' '' '' '' 'X'.
  
ENDIF.

m_alv_fieldcat

:
                   
'VBELN_DN' '' text-f41 '' '' '' '' '' 'X',
                   
'POSNR_DN' '' text-f42 '' '' '' '' '' 'X',
                   
'ROUTE' '' '路线代码' '' '' '' '' '' 'X',
                   
'ROUTE_TXT' '' '路线描述' '' '' '' '' '' 'X',

'ZTEXT' '' '交货单行项目长文本'  '' '' '' '' '' 'X',
                   
'RISE_TEXT' '' '交货单抬头文本'  '' '' '' '' '' 'X',
                   
'SO_TEXT' '' '订单抬头文本'  '' '' '' '' '' 'X',
                   
'LGORT' '' text-f18 '' '' '' '' '' 'X',
                   
'LGOBE' '' text-f19 '' '' '' '' '' 'X',
                   
'VSTEL' '' text-f63 '' '' '' '' '' 'X',  "20120312增加

'CHARG_DN' '' text-f43 '' '' '' '' '' 'X',
                   
'LGMNG_DN' '' text-f44 '' '' '' '' '' 'X',
                   
'MEINS_DN' '' text-f45 '' '' '' '' '' 'X',
                   
'POSNR_DN_CHAI' '' text-f46 '' '' '' '' '' 'X',
                   
'CHARG_DN_CHAI' '' text-f47 '' '' '' '' '' 'X',
                   
'LGMNG_DN_CHAI' '' text-f48 '' '' '' '' '' 'X',
                   
'MEINS_DN_CHAI' '' text-f49 '' '' '' '' '' 'X',

'MBLNR_DN_GR' '' text-f50 '' '' '' '' '' 'X',
                   
'ZEILE_DN_GR' '' text-f51 '' '' '' '' '' 'X',
                   
'MENGE_DN_GR' '' text-f52 '' '' '' '' '' 'X',
                   
'MEINS_DN_GR' '' text-f53 '' '' '' '' '' 'X',
                   
'VBELN_DN_BL' '' text-f54 '' '' '' '' '' 'X',
                   
'POSNR_DN_BL' '' text-f55 '' '' '' '' '' 'X',
                   
'FKIMG_DN_BL' '' text-f56 '' '' '' '' '' 'X',
                   
'VRKME_DN_BL' '' text-f57 '' '' '' '' '' 'X',
                   
'EANNR' '' '  ' '' '' '' '' '' 'X'.

**********************************************************************

* 删除交货单数量为0的条目
  
IF p_del = 'X'.

*    delete git_output where vbeln_dn <> '' and lgmng_dn = 0.
    
DATA: BEGIN OF lt_filter OCCURS 10,
            vbeln_dn 
LIKE likp-vbeln,
            lgmng_dn 
LIKE lips-lgmng,
          
END OF lt_filter.

LOOP AT git_output INTO gwa_output.

MOVE-CORRESPONDING gwa_output TO lt_filter.
      
COLLECT lt_filter.
    
ENDLOOP.

DELETE lt_filter WHERE lgmng_dn <> 0 OR vbeln_dn = ''.

RANGES: lr_filter FOR likp-vbeln.
    
LOOP AT lt_filter.
      lr_filter
-sign = 'I'.
      lr_filter
-option = 'EQ'.
      lr_filter
-low = lt_filter.
      
APPEND lr_filter.
    
ENDLOOP.
    
IF NOT lr_filter IS INITIAL.
      
DELETE git_output WHERE vbeln_dn IN lr_filter.
    
ENDIF.
  
ENDIF.

**********************************************************************
  
IF NOT erdat1 IS INITIAL.
    
DELETE git_output WHERE erdat_likp NOT IN erdat1.
  
ENDIF.

IF NOT erzet1 IS INITIAL.
    
DELETE git_output WHERE erzet_likp NOT IN erzet1.
  
ENDIF.

IF NOT cpudt IS INITIAL.
    
DELETE git_output WHERE cpudt NOT IN cpudt.
  
ENDIF.

IF NOT cputm IS INITIAL.
    
DELETE git_output WHERE cputm NOT IN cputm.
  
ENDIF.

**********************************************************************

* 删除不是48小时的订单

*  IF p_th = 'X'.

*    DATA: temp_date TYPE dats.

*    LOOP AT git_output INTO gwa_output.

*      CLEAR temp_date.

*      temp_date = gwa_output-vdatu - gwa_output-erdat.

*      IF temp_date <> 1."add by yk 原来的两天改为一天.

*        DELETE git_output.

*      ENDIF.

*    ENDLOOP.

*  ENDIF.

**********************************************************************

**********************************************************************

* 删除不是24小时的订单 ADD BY YK

*  IF p_one = 'X'.

*    DATA: temp_date_one TYPE dats.

*    LOOP AT git_output INTO gwa_output.

*      CLEAR temp_date_one.

*      temp_date_one = gwa_output-vdatu - gwa_output-erdat.

*      IF temp_date_one <> 0."add by y

*        DELETE git_output.

*      ENDIF.

*    ENDLOOP.

*  ENDIF.

**********************************************************************

*---加上订单描述
  
DATA: temp_date_ddlx TYPE dats.
  
DATA: temp_date_one TYPE dats.
  
LOOP AT git_output INTO gwa_output.
    
CLEAR temp_date_one.
    temp_date_ddlx 
= gwa_output-vdatu - gwa_output-erdat.
    
IF temp_date_ddlx = 0."add by y

*      gwa_output-ddlx = '24小时订单'.
      
MODIFY git_output FROM gwa_output.
    
ENDIF.
    
IF temp_date_ddlx = 1.

*      gwa_output-ddlx = '48小时订单'.
      
MODIFY git_output FROM gwa_output.
    
ENDIF.
  
ENDLOOP.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    
EXPORTING
      i_callback_program 
= sy-repid

*     I_CALLBACK_PF_STATUS_SET    = 'FRM_SET_STATUS'

*     I_CALLBACK_USER_COMMAND     = 'FRM_USER_COMMAND'
      is_layout          
= gwa_layout
      it_fieldcat        
= git_field
      it_sort            
= git_sort
      i_default          
= 'X'
      i_save             
= 'A'
    
TABLES
      t_outtab           
= git_output
    
EXCEPTIONS
      program_error      
= 1
      
OTHERS             = 2.

*  IF sy-subrc <> 0.

*    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

*            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

*  ENDIF.

ENDFORM. " frm_output

*&---------------------------------------------------------------------*

*&      Form  frm_set_status

*&---------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

FORM frm_set_status USING rt_extab TYPE slis_t_extab.

*  SET PF-STATUS 'GS_1000' EXCLUDING RT_EXTAB.

ENDFORM. "FRM_SET_STATUS

*&---------------------------------------------------------------------*

*&      Form  frm_user_command

*&---------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

FORM frm_user_command USING rf_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.

*  DATA: l_ok_code TYPE sy-ucomm,

*        l_valid(1) TYPE c.

*  l_ok_code = rf_ucomm.

*  CLEAR: rf_ucomm.

*

***---screen=>internal table

**  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'

**    IMPORTING

**      E_GRID = go_gui_alv_grid.

**  CALL METHOD go_gui_alv_grid->CHECK_CHANGED_DATA

**    IMPORTING

**      E_VALID = L_VALID.

**

**---get 双击行的相关数据

*

*  read table git_PLAF into gwa_PLAF index RS_SELFIELD-TABINDEX.

*

**

***---PAI

**

*

*  CASE l_ok_code.

*    WHEN '&IC1'."双击

*      case rs_selfield-FIELDNAME.

*        when 'KDAUF'."双击销售订单字段

*          CHECK gwa_PLAF-KDAUF IS NOT INITIAL.

*          "跳转到销售订单显示

*          SET PARAMETER ID 'AUN' FIELD gwa_PLAF-KDAUF.

*          CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

*        when others."默认情况

*          CHECK gwa_PLAF-plnum IS NOT INITIAL.

*          "跳转到计划订单显示

*          SET PARAMETER ID 'PAF' FIELD gwa_PLAF-plnum.

*          CALL TRANSACTION 'MD13' AND SKIP FIRST SCREEN.

*      endcase.

*

*    WHEN OTHERS.

*  ENDCASE.

*

**

**

***---PBO

**

***  LOOP AT git_output INTO gwa_output.

***

***  ENDLOOP.

**

***---internal table=>screen

**  RS_SELFIELD-REFRESH = 'X'.

ENDFORM. "USER_COMMAND

*&---------------------------------------------------------------------*

*&      Form  FRM_PROCESS_DATA1

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_process_data1 .
  
DATA: BEGIN OF v_itab OCCURS 0,
          vbeln_dn 
TYPE lips-vbeln,
          lgmng_dn 
TYPE lips-lgmng,
        
END OF v_itab.
  
DATA: vw_itab LIKE LINE OF v_itab.
  
DATA: v_itab1 LIKE TABLE OF v_itab WITH HEADER LINE.
  
LOOP AT git_output INTO  gwa_output WHERE vbeln_dn <> ''.      "取出交货单号不为空数据
    vw_itab
-vbeln_dn = gwa_output-vbeln_dn.
    vw_itab
-lgmng_dn = gwa_output-lgmng_dn.
    
APPEND vw_itab TO v_itab.
  
ENDLOOP.
  
SORT v_itab BY vbeln_dn ASCENDING.
  
LOOP AT v_itab.   " 汇总数据
    
COLLECT v_itab INTO v_itab1.
  
ENDLOOP.
  
RANGES: v_rangs FOR vbrk-vbeln.

LOOP AT  v_itab1.    "将数据为0的存入rangs
    
IF v_itab1-lgmng_dn = 0.
      v_rangs
-sign = 'I'.
      v_rangs
-option = 'EQ'.
      v_rangs
-low = v_itab1-vbeln_dn.
      
APPEND v_rangs.
    
ENDIF.
  
ENDLOOP.
  
IF v_rangs[] IS NOT INITIAL.
    
DELETE git_output WHERE vbeln_dn IN v_rangs.            "删除数据为0的数据
  
ENDIF.

ENDFORM.                    " FRM_PROCESS_DATA1

INCLUDE zsdr017_inc.

SAP 订单状态跟踪的更多相关文章

  1. SAP订单状态最详细的解释

    order status description explanation CRTD 建立 生产订单创建时的状态,表明订单处于刚刚创建时点,不允许做后续发料,确认等操作. PREL 部分释放(部分下达) ...

  2. SAP生产订单状态

    SAP系统的常见订单状态如下: ·        CRTD (创建):标识生产订单刚刚创建,此时禁止做后续发料和报工确认等操作: ·        PREL (部分下达):当生产订单部分下达时,如仅下 ...

  3. SAP订单编排和流程增强概述

    SAP产品里的订单处理,无论是On-Premises解决方案还是云产品,我认为归根到底可以概括成四个字:订单编排,包含两个层次的内容: 1. 单个订单通过业务流程或者工作流驱动的状态迁移: 2. 多种 ...

  4. PP-生产订单状态

    转自:http://www.cnblogs.com/mingdashu/p/5566108.html SAP系统的常见订单状态如下: ·        CRTD (创建):标识生产订单刚刚创建,此时禁 ...

  5. PP-判断生产订单状态(关闭)

    方法一.工单号通过 resb找到对象号 然后找到状态为I0045利用表JEST与TJ02T . 方法二.函数'STATU_CHECK' 检查工单状态为'I0045' 则为已做技术性关闭. READ T ...

  6. Magento后台手动修改订单状态方法及手动修改方法php

    订单详细内容页手动修改订单状态方法: 打开此文件:app\design\adminhtml\default\default\template\sales\order\view\history.phtm ...

  7. ecshop 订单-》订单状态 2

    // 判断订单状态 public function get_order_status($os,$ps,$ss){ $arr = array('已取消','待付款','待发货','待收货','确认收货' ...

  8. ecshop的订单状态

    ecshop的订单状态都是在ecs_order_info表中的字段里. 订单状态 未确认 取消 确认 已付款 配货中 已发货 已收货 退货 order_status 0 2 1 1 1 5 5 4 s ...

  9. Entity Framework 第五篇 状态跟踪

    本人建议尽量使用EntityState来表名Entry的状态,而不要使用Configuration.AutoDetectChangesEnabled自动状态跟踪,为什么我这么建议呢?他们到底有什么异同 ...

随机推荐

  1. ios学习资源

    1.BigShow学习Demo集合 https://github.com/BigShow1949/BigShow1949 2.[干货]一行代码实现自定义转场动画http://www.cocoachin ...

  2. Javascript数组操作(转)

    1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...

  3. TypeScript 素描-基础类型

    博文读自 TypeScript 官方文档而来,不具有学习性,仅是本人学习时记录以供日后翻阅 ,有学习TypeScript的朋友还请去看更为详细的官方文档 TypeScript官网文档中的基础类型, T ...

  4. 理解Compressed Sparse Column Format (CSC)

    最近在看<Spark for Data Science>这本书,阅读到<Machine Learning>这一节的时候被稀疏矩阵的存储格式CSC给弄的晕头转向的.所以专门写一篇 ...

  5. 这两天遇到iphone使用app store下载免费软件,必须验证付款信息才能购物是怎么回事???

    答案: 在你这台设备上再设置一下,具体方法是:1.点设置进入2.点iTunes Store 和App Store 3.点 Apple ID ,如果没设置,设置一下,如果有的,再点击 4.出现一上选择的 ...

  6. HTML DOM prompt() 方法

    1. 定义和用法 prompt() 方法用于显示可提示用户进行输入的对话框. 语法 prompt(text,defaultText) 参数 描述 text 可选.要在对话框中显示的纯文本(而不是 HT ...

  7. mysql复习相关

    Mysql相关 mysql增删改查 我们需要修改数据表名或者修改数据表字段时,就需要使用到Mysql Alter命令 删除,添加或修改表字段 alter table student drop regi ...

  8. mac机快捷键操作

    1. 屏幕最大和缩小:command+ctrl +f 2.切换应用:comand+tab, 3.大小写转换:comand + 空格 4.切换到下/上一个标签页:同时按 ⌘-Option 和向右/左箭头 ...

  9. js控制只能输入数字和控制小数的位数

    <input class="form130" style="width: 80px;" maxlength="10" id=" ...

  10. CSS 7阶层叠水平

    著名的7阶层叠水平(stacking level) 层叠上下文 background/border 负z-index block块状水平盒子:正常流失布局,非inline-block,无positio ...