yhlmr009交货单查询

Rainystuday Rainystuday     2022-08-14     179

关键词:

***********************************************************************
* Title           : YHLMR009                                          *
* Application     : LM                                               *
* Subject         : 交货清单查询                                      *
* Requested by    : Yang_Teng Fei (YH_LM)                             *
* Execution       : Online when required                              *
* Ref no:         : ERPS0115                                          *
* Author          : AD_CAIXIANG                                       *
* Req Date        : 20120722                                          *
***********************************************************************
*              交货清单查询程序                                   *
***********************************************************************
*              设计主要逻辑与原理说明                             *
***********************************************************************
*1.取数:根据用户的输入单据编号、交货单类型、计划发货日期、实际发货日期*
* 配入机构、商品编码等输入条件单一或者组合进行交货订单的查询。        *
* 涉及到的表  LIKP T001W KNA1 LIPS MARA MAKT MBEW MEAN LIPSD ZMADQ    *
*2.输出: 进行alv输出交货清单信息                                      *
***********************************************************************
* MODIFICATIONS (latest entry at the top)                             *
* ------------------------------------------------------------------- *
* REL  DATE    NAME (COMPANY)   DESCRIPTION               TASK-NO     *
* ---  ----    ---- ---------     -----------             -------     *
* 01 20121206   LM  交货清单查询修改  by  AD_CAIXIANG      ECDK906448 *
* 02 20121210   LM  交货清单查询修改  by  AD_CAIXIANG      ECDK906618 *
* 03 20121210   LN  程序规范化        by  AD_CAIXIANG      ECDK906622 *
* 04 20130111   LM  加直接显示明细按钮 BY AD_CAIXIANG      ECDK907564 *
* 05 20130126   LM  交货单类型增添    BY AD_CAIXIANG       ECDK907564 *
* 06 20130222   LM  价格取数修改    移动类型671,673       ECDK908753.*
*                                  价格取数改为 EKPO-KZWI1/EKPO-MENGE *
* 07 20130402   LM  程序优化          BY AD_CAIXIANG       ECDK910228 *
* 08 20130516   LM  移出库位作为查询条件出现问题的修改                *
*                                     BY AD_CAIXIANG       ECDK911439 *
* 09 20130603   LM  价格取数问题调整  BY AD_CAIXIANG       ECDK912048 *
* 10 20130703   LM  取税率优化        BY AD_CAIXIANG       ECDK912680 *
* 11 20130726   LM  取数部分优化,                                    *
*                   当S_WBSTK 为空的时候,把VBUK的取数单独出来,      *
*                   对于EKPO和EKBE进行分批取数             ECDK913630 *
***********************************************************************
REPORT  YHLMR009 NO STANDARD PAGE HEADING
                      LINE-SIZE 132
                      LINE-COUNT 65(1)
                      MESSAGE-ID YH_LM1.

*----------------------------------------------------------------------
*                          PUB-INCLDUE
*----------------------------------------------------------------------
INCLUDE  <ICON>.
*INCLUDE YHLM009_TOP.

*----------------------------------------------------------------------
*                          TYPE-POOLS
*----------------------------------------------------------------------
TYPE-POOLS: SLIS.



*--------------------------------------------------------------------*
*  宏的调用方式:
*--------------------------------------------------------------------*

*----------------------------------------------------------------------
*                          TABLES/Structure
*----------------------------------------------------------------------
TABLES: LIKP, "SD凭证:交货抬头数据
        LIPS, "SD凭证 :交货:项目数据
        KNA1, "客户主文件的一般数据
        MBEW, "商品评估
        MEAN, "商品的条码
        LIPSD,"交货项目的动态部分
        VBUK, "销售凭证:抬头状态和管理数据
        VBFA, "销售凭证流
        ADRP, "个人(办公地址管理)
        EKPO. "采购凭证项目
TABLES: MARA, MARC, MAKT, T001W.

*----------------------------------------------------------------------
*                          Internal table
*----------------------------------------------------------------------
DATA: BEGIN OF GT_ITAB OCCURS 0,
       VBELN LIKE LIKP-VBELN,
       POSNR LIKE LIPS-POSNR,
       LFART LIKE LIKP-LFART,
       WERKS LIKE LIPS-WERKS,
       NAME1 LIKE T001W-NAME1,"配出机构名称
       KUNNR LIKE LIKP-KUNNR,
       NAME2 LIKE KNA1-NAME1,
     YYCARNO LIKE LIKP-YYCARNO,
       TDDAT LIKE LIKP-TDDAT,
       BLDAT LIKE LIKP-BLDAT,
       ANZPK LIKE LIKP-ANZPK,
       RESLO LIKE EKPO-RESLO,
      LGOBE1 LIKE T001L-LGOBE,"移出
       LGORT LIKE LIPS-LGORT,
      LGOBE2 LIKE T001L-LGOBE,"移入
       MENGE TYPE EKPO-MENGE, "订货数量
       LFIMG TYPE LIPS-LFIMG, "实发数量
        SHFA TYPE  P DECIMALS 1, "实发件数
       VGBEL LIKE LIPS-VGBEL,
       VGPOS LIKE LIPS-VGPOS,
       VGTYP LIKE LIPS-VGTYP,
       MATNR LIKE LIPS-MATNR,
       EAN11 LIKE MEAN-EAN11,
   WADAT_IST LIKE LIKP-WADAT_IST,
       MAKTX LIKE MAKT-MAKTX,
       MEINS LIKE LIPS-MEINS,
       VRKME LIKE LIPS-VRKME,
       GROES LIKE MARA-GROES,
     YUMREZ1 LIKE YTMADQ-YUMREZ1,
       BRGEW TYPE LIPS-BRGEW,  "毛重
       NTGEW TYPE LIPS-NTGEW,  "净重
       JINZH TYPE LIPS-NTGEW,  "皮重
       KOSTK TYPE VBUK-KOSTK,  "交货状态
       ERNAM LIKE LIKP-ERNAM,
       VTEXT TYPE TVLKT-VTEXT,
        DINH TYPE P DECIMALS 1,"订货件数
       WBSTK TYPE VBUK-WBSTK,   "状态
  NAME_TEXT  LIKE ADRP-NAME_FIRST,
       LIFEX TYPE LIKP-LIFEX,
       LIFNR TYPE EORD-LIFNR,
       NAME3 TYPE LFA1-NAME1,

       JIAGE TYPE EKPO-KZWI5,
       JINE  TYPE EKPO-KZWI5,

       KZWI5 TYPE EKPO-KZWI5,
       DMBTR TYPE MSEG-DMBTR,
       ERZET TYPE LIKP-ERZET,
       BWART LIKE LIPS-BWART,
       KBETR TYPE KBETR,
*&->START ADD BY AD_CAIXIANG ON 20130514.
      YLBID1 LIKE YTLBDY-YLBID2,
      YDLNAM LIKE YTLBCJ-YLBNAME,
*&-END ADD
       TIMMM(14) TYPE C,
       FLAG(1)  TYPE C,

    END OF GT_ITAB.


DATA: BEGIN OF GT_DATA OCCURS 0,
      VBELN LIKE LIKP-VBELN,
      LFART LIKE LIKP-LFART,
      VTEXT TYPE TVLKT-VTEXT,
      WERKS LIKE LIPS-WERKS,
      NAME1 LIKE T001W-NAME1,
      KUNNR LIKE LIKP-KUNNR,
      NAME2 LIKE KNA1-NAME1,
      RESLO LIKE EKPO-RESLO,  "移出
     LGOBE1 LIKE T001L-LGOBE,
      LGORT LIKE EKPO-LGORT, "移入
     LGOBE2 LIKE T001L-LGOBE,
    YYCARNO LIKE LIKP-YYCARNO,
      TDDAT LIKE LIKP-TDDAT,
      BLDAT LIKE LIKP-BLDAT,
  WADAT_IST LIKE LIKP-WADAT_IST,
      MENGE TYPE EKPO-MENGE,   "订货数量
      LFIMG TYPE LIPS-LFIMG,   "实发数量
      JINZH TYPE LIPS-NTGEW,   "皮重
      ERNAM LIKE LIKP-ERNAM,
 NAME_TEXT  LIKE ADRP-NAME_FIRST,
      KOSTK TYPE VBUK-KOSTK,    "交货状态
      WBSTK TYPE VBUK-WBSTK,     "状态
      LIFEX TYPE LIKP-LIFEX,
*&START CHANGED BY AD_CAIXIANG ON 20121210 ECDK906622
*      LIFNR TYPE EORD-LIFNR,
*      NAME3 TYPE LFA1-NAME1,
*&END CHANGED BY AD_CAIXIANG ON 20121210.
      ERZET TYPE LIPS-ERZET,
      JINE  TYPE EKPO-KZWI5,
*      LNN   TYPE SY-TABIX,

     END OF GT_DATA.
*----------------------------------------------------------------------
*                          Variants
*----------------------------------------------------------------------
DATA: G_LEN   TYPE I.
DATA: WA LIKE GT_ITAB.
DATA: G_LIN TYPE I.
DATA: G_TABIX LIKE SY-TABIX.
RANGES:R_LFART FOR LIKP-LFART.

*---------------------------------------------------------------------*
*  Data parameters for alv report use
*---------------------------------------------------------------------*
DATA: G_PROGRAM    TYPE SY-REPID,
      GS_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      GT_FIELDCAT  TYPE SLIS_T_FIELDCAT_ALV,
      GS_FIELDCAT  LIKE LINE OF GT_FIELDCAT,
      GT_FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV,
      GS_FIELDCAT2 LIKE LINE OF GT_FIELDCAT,
      WA_FIELDCAT  TYPE SLIS_FIELDCAT_ALV,
      IT_EVENTS    TYPE SLIS_T_EVENT WITH HEADER LINE,
      GT_EVENT     TYPE SLIS_T_EVENT,
      WA_EVENT     TYPE SLIS_ALV_EVENT.
DATA: GT_LIST_TOP_OF_PAGE     TYPE SLIS_T_LISTHEADER.
DATA: GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME
                              VALUE ALV_TOP_OF_PAGE.
DATA: G_GRID       TYPE REF TO CL_GUI_ALV_GRID.

*--------------------------------------------------------------------*
*  D宏的定义
*--------------------------------------------------------------------*
DEFINE MAR_ADD_FIELDCAT.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME    =  &1.
  WA_FIELDCAT-SELTEXT_L    =  &2.
  WA_FIELDCAT-COL_POS      =  &3.
  WA_FIELDCAT-JUST         =  &4.
  WA_FIELDCAT-OUTPUTLEN    =  &5.
  WA_FIELDCAT-FIX_COLUMN   =  &6.
  WA_FIELDCAT-EDIT         =  &7.
  WA_FIELDCAT-NO_ZERO      =  &8.
  APPEND WA_FIELDCAT TO GT_FIELDCAT.
END-OF-DEFINITION.


*--------------------------------------------------------------------*
*  D宏的定义2
*--------------------------------------------------------------------*
DEFINE MAR_ADD_FIELDCAT2.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-FIELDNAME    =  &1.
  WA_FIELDCAT-SELTEXT_L    =  &2.
  WA_FIELDCAT-COL_POS      =  &3.
  WA_FIELDCAT-JUST         =  &4.
  WA_FIELDCAT-OUTPUTLEN    =  &5.
  WA_FIELDCAT-FIX_COLUMN   =  &6.
  WA_FIELDCAT-EDIT         =  &7.
  WA_FIELDCAT-NO_ZERO      =  &8.
  APPEND WA_FIELDCAT TO GT_FIELDCAT2.
END-OF-DEFINITION.




*======================================================================
*                          SELECTION-SCREEN
*======================================================================
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.

PARAMETERS:     P_WERKS LIKE MARC-WERKS MEMORY ID WRK OBLIGATORY.
SELECT-OPTIONS: S_VBELN FOR LIKP-VBELN,
                S_LFART FOR LIKP-LFART.           "交货类型

"S_TDDAT FOR LIKP-TDDAT OBLIGATORY, "运输计划日期
"s_ERZET FOR LIKP-ERZET default ‘000000‘ to sy-uzeit no-extension OBLIGATORY,

PARAMETERS:     P_BLDATL LIKE LIKP-BLDAT DEFAULT SY-DATUM  OBLIGATORY,
                P_ERZETL LIKE LIKP-ERZET DEFAULT 000000,
                P_BLDATH LIKE LIKP-BLDAT DEFAULT SY-DATUM  OBLIGATORY,
                P_ERZETH LIKE LIKP-ERZET DEFAULT SY-UZEIT.

SELECT-OPTIONS: "S_BLDAT FOR LIKP-BLDAT OBLIGATORY,"凭证日期
                S_WADAT FOR LIKP-WADAT_IST,        "实际发货日期
                S_WBSTK FOR VBUK-WBSTK,
                S_KUNNR FOR LIKP-KUNNR,
                S_MATNR FOR LIPS-MATNR ,
                S_VGBEL FOR LIPS-VGBEL,
                S_YYCAR FOR LIKP-YYCARNO MATCHCODE OBJECT YH_YTCARNUM,
                S_RESLO FOR EKPO-RESLO,   "移出库位
                S_LGORT FOR EKPO-LGORT,   "移入库位
                S_ERNAM FOR LIKP-ERNAM MATCHCODE OBJECT USER_COMP.

SELECTION-SCREEN SKIP.

PARAMETERS: P_DETAIL TYPE C AS CHECKBOX DEFAULT ‘‘.

SELECTION-SCREEN END OF BLOCK BLK1.

*----------------------------------------------------------------------
*  INITIALIZATION
*----------------------------------------------------------------------
INITIALIZATION.

* 初始化数据
  PERFORM FRM_INITIAL.

*----------------------------------------------------------------------
*  AT SELECTION-SCREEN
*----------------------------------------------------------------------
AT SELECTION-SCREEN.
* 权限检查部分
  PERFORM FRM_CHECK_AUTHOR.

*======================================================================
*                          MAIN PROGRAM
*======================================================================
*  START-OF-SELECTION
*----------------------------------------------------------------------
START-OF-SELECTION.

*&S1: 取得数据:
  PERFORM FRM_GET_DATA.

*BREAK AD_CAIXIANG.
*&--->START ADD BY AD_CAIXIANG ON 20130111 ECDK907564.
  IF P_DETAIL IS NOT INITIAL.

    PERFORM FRM_DETAIL_DISP .

  ELSE.
*----------------------------------------------------------------------
*  END-OF-SELECTION
*----------------------------------------------------------------------
*&S3:  输出数据:
    PERFORM FRM_ALV_OUTPUT.

  ENDIF.

*&---<END ADD BY AD_CAIXIANG ON 20130111.

*&---------------------------------------------------------------------*
*&      Form  FRM_INITIAL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_INITIAL.

*&设定日期默认:
*  IF S_TDDAT[] IS INITIAL.
*    S_TDDAT-LOW  = SY-DATUM.
*    S_TDDAT-HIGH = SY-DATUM + 5.
*    APPEND S_TDDAT.
*  ENDIF.
*  IF S_BLDAT[] IS INITIAL.
*    S_BLDAT-LOW  = SY-DATUM - 5.
*    S_BLDAT-HIGH = SY-DATUM.
*    APPEND S_BLDAT.
*  ENDIF.

ENDFORM.                    " FRM_INITIAL

*&---------------------------------------------------------------------*
*&      Form  FRM_CHECK_AUTHOR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_CHECK_AUTHOR.

*  IF S_BLDAT-LOW IS INITIAL OR S_BLDAT-HIGH IS INITIAL.
*    MESSAGE I011 WITH ‘凭证日期应上限都输入!‘.
*    STOP.
*  ENDIF.
* IF s_ERZET-LOW IS NOT INITIAL AND S_ERZET-HIGH IS INITIAL.
*   MESSAGE I011 WITH ‘时间应上下限都输入!‘.
*   STOP.
*  ELSE.
* IF s_ERZET-LOW IS INITIAL AND s_ERZET-HIGH IS NOT INITIAL.
*   MESSAGE I011 WITH ‘时间应上下限都输入!‘.
*   STOP.
* endif.
* ENDIF.
* IF s_ERZET-LOW IS INITIAL OR S_ERZET-HIGH IS INITIAL.
*   MESSAGE I011 WITH ‘时间应上下限都输入!‘.
*   STOP.
* ENDIF.

*&权限检查:
  AUTHORITY-CHECK OBJECT  V_LIKP_VST
    ID  VSTEL FIELD P_WERKS
    ID  ACTVT FIELD 03.
  IF SY-SUBRC NE 0.
    MESSAGE I002 WITH  P_WERKS .
    STOP.
  ENDIF.

ENDFORM.                    " FRM_CHECK_AUTHOR


*&---------------------------------------------------------------------*
*&      Form  frm_get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_GET_DATA .
  DATA: L_BZIRK LIKE T001W-BZIRK,
        L_NAME_FIRST LIKE ADRP-NAME_FIRST,
        L_WERKS LIKE T001W-WERKS,
        L_NAME_LAST  LIKE ADRP-NAME_LAST,
        L_NAME_TEXT  LIKE ADRP-NAME_FIRST.
  DATA: LT_ITAB LIKE GT_ITAB OCCURS 0 WITH HEADER LINE,
        LT_WTAB LIKE GT_ITAB OCCURS 0 WITH HEADER LINE.

  DATA: BEGIN OF LT_MADQ OCCURS 0,
        MATNR LIKE MARA-MATNR,
        WERKS LIKE MARC-WERKS,
        YUMREZ1 LIKE YTMADQ-YUMREZ1,
        END OF LT_MADQ.
  DATA: BEGIN OF LT_MEAN OCCURS 0,
         MATNR LIKE MARA-MATNR,
         EAN11 LIKE MEAN-EAN11,
        END OF LT_MEAN.
*  DATA: BEGIN OF LT_MARA OCCURS 0,
*        MATNR LIKE MARA-MATNR,
*        GROES LIKE MARA-GROES,
*        MATKL LIKE MARA-MATKL,
*       END OF LT_MARA.
  DATA: BEGIN OF LT_T001W OCCURS 0,
         WERKS LIKE T001W-WERKS,
         NAME1 LIKE T001W-NAME1,
         KUNNR LIKE T001W-KUNNR,
        END OF LT_T001W.

  DATA: BEGIN OF  LT_T001L OCCURS 0,
         WERKS LIKE MARD-WERKS,
         LGORT LIKE MARD-LGORT,
         LGOBE LIKE T001L-LGOBE,
       END OF LT_T001L.
  DATA: BEGIN OF LT_TVLKT OCCURS 0,
        LFART LIKE TVLKT-LFART,
        VTEXT LIKE TVLKT-VTEXT,
       END OF LT_TVLKT .

  DATA: BEGIN OF LT_TAB OCCURS 0,
        VBELN LIKE LIKP-VBELN,
        LFART LIKE LIKP-LFART,
        VTEXT TYPE TVLKT-VTEXT,
        WERKS LIKE LIPS-WERKS,
        JINE  TYPE EKPO-KZWI5,
       END OF LT_TAB.

  DATA: G_TEXT TYPE KBETR,
        C_TEXT(8) TYPE N.
  DATA: G_MWSKZ LIKE EKPO-MWSKZ,
        G_KZWI5 LIKE EKPO-KZWI5,
        G_KZWI1 LIKE VBRP-KZWI1,
        G_MENGE LIKE EKPO-MENGE,
        G_DMBTR LIKE MSEG-DMBTR,
        G_FKIMG LIKE VBRP-FKIMG.
  DATA: L_MENGE TYPE EKPO-MENGE,   "订货数量
        L_LFIMG TYPE LIPS-LFIMG,   "实发数量
        L_JINZH TYPE LIPS-NTGEW.   "皮重
  DATA: L_TIMEL(14) TYPE C,
        L_TIMEH(14) TYPE C.

  DATA:BEGIN OF LT_EORD OCCURS 0,
        WERKS LIKE EORD-WERKS,
        MATNR LIKE EORD-MATNR,
        LIFNR LIKE EORD-LIFNR,
       END OF LT_EORD.

*  DATA: BEGIN OF LT_MARA2 OCCURS 0,
*        MATNR LIKE MARA-MATNR,
*        SATNR LIKE MARA-MATNR,
*      END OF LT_MARA2.
  DATA:BEGIN OF LT_LFA1 OCCURS 0,
         LIFNR LIKE LFA1-LIFNR,
         NAME1 LIKE LFA1-NAME1,
        END OF LT_LFA1.
  DATA: BEGIN OF LT_KNA1 OCCURS 0,
         KUNNR LIKE KNA1-KUNNR,
         NAME1 LIKE KNA1-NAME1,
        END OF LT_KNA1.
  DATA: BEGIN OF LT_NAME OCCURS 0,
      BNAME     LIKE V_USR_NAME-BNAME,
      NAME_TEXT LIKE V_USR_NAME-NAME_TEXT,
        END OF LT_NAME .

  DATA:BEGIN OF LT_EKPO OCCURS 0,
         EBELN LIKE EKPO-EBELN,
         EBELP LIKE EKPO-EBELP,
         TXZ01 LIKE EKPO-TXZ01,
         LGORT LIKE EKPO-LGORT,
         RESLO LIKE EKPO-RESLO,
         MWSKZ LIKE EKPO-MWSKZ,
         MENGE LIKE EKPO-MENGE,
         KZWI1 LIKE EKPO-KZWI1,
         KZWI5 LIKE EKPO-KZWI5,
    END OF LT_EKPO.
  DATA:BEGIN OF LT_EKKO OCCURS 0 ,
          EBELN LIKE EKPO-EBELN,
          EBELP LIKE EKPO-EBELP,
          VBELN LIKE LIPS-VBELN,
     END OF LT_EKKO.
  DATA: LT_WEKO LIKE TABLE OF LT_EKKO WITH HEADER LINE.

  DATA:BEGIN OF LT_EKBE OCCURS 0,
        EBELN LIKE EKBE-EBELN,
        EBELP LIKE EKBE-EBELP,
        VBELN LIKE LIKP-VBELN,
        DMBTR LIKE EKBE-DMBTR,
      END OF LT_EKBE.
  DATA: BEGIN OF LT_VBFA OCCURS 0,
         VBELV LIKE VBFA-VBELV,
         POSNV LIKE VBFA-POSNV,
         VBELN LIKE VBFA-VBELN,
         POSNN LIKE VBFA-POSNN,
        END OF LT_VBFA.
  DATA: LT_TAB1 LIKE TABLE OF LT_VBFA WITH HEADER LINE.

  DATA: BEGIN OF LT_VBRP OCCURS 0,
         VBELN LIKE VBRP-VBELN,
         POSNR LIKE VBRP-POSNR,
         KZWI1 LIKE VBRP-KZWI1,
         FKIMG LIKE VBRP-FKIMG,
        END OF LT_VBRP.
  DATA: BEGIN OF LT_VBAP OCCURS 0,
         VBELN LIKE VBAP-VBELN,
         POSNR LIKE VBAP-POSNR,
        KWMENG LIKE VBAP-KWMENG,
         ARKTX LIKE VBAP-ARKTX,
        END OF LT_VBAP.
  DATA: LT_WVBAP LIKE TABLE OF LT_VBAP WITH HEADER LINE.

  DATA: BEGIN OF LT_VBUK OCCURS 0,
         VBELN LIKE VBUK-VBELN,
         KOSTK LIKE VBUK-KOSTK,
         WBSTK LIKE VBUK-WBSTK,
        END OF LT_VBUK.
  DATA: BEGIN OF LT_YTLBCJ OCCURS 0,
         YLBID LIKE YTLBCJ-YLBID,
       YLBNAME LIKE YTLBCJ-YLBNAME,
        END OF LT_YTLBCJ.
  DATA: BEGIN OF LT_MARA3 OCCURS 0,
         MATNR LIKE MARA-MATNR,
         ATTYP LIKE MARA-ATTYP,
         SATNR LIKE MARA-SATNR,
         GROES LIKE MARA-GROES,
         MATKL LIKE MARA-MATKL,
         LVORM LIKE MARA-LVORM,
        END OF LT_MARA3.
  DATA: BEGIN OF LT_A003 OCCURS 0,
           MWSKZ LIKE A003-MWSKZ,
           KBETR LIKE KONP-KBETR,
         END OF LT_A003.
  DATA: LT_MARA LIKE TABLE OF LT_MARA3 WITH HEADER LINE,
        LT_MARA2 LIKE TABLE OF LT_MARA3 WITH HEADER LINE.
  RANGES:R_LFARTN FOR LIKP-LFART.
  DATA: L_TIAN(5) TYPE N.
  DATA: L_COUNT TYPE I.
  DATA: L_LAST TYPE C.
  DATA: L_NMAX TYPE I.

  SELECT SINGLE TBMAXSEL INTO L_NMAX FROM YTMMREPNUM
    WHERE PROGNAME = SY-REPID AND ACTIVE = X.
  IF SY-SUBRC NE 0.
    L_NMAX = 150000.
  ENDIF.

*&->START CHANGE BY AD_CX ON 20130708 ECDK912680
  L_TIAN = P_BLDATH - P_BLDATL.
  IF L_TIAN GT 37.
    MESSAGE S011 WITH 时间范围查询条件输入过大!请将时间段分开查询,谢谢! DISPLAY LIKE E.
    STOP.
  ENDIF.
*&->END CHANGE.

*&S1.默认交货单移动类型:
  PERFORM FRM_LFART.

*&->START CHANGE BY AD_CX ON 20130725 ECDK913587.
*&S1.1先取出单据类型:
  SELECT LFART VTEXT
    INTO TABLE LT_TVLKT
    FROM TVLKT
   WHERE SPRAS EQ SY-LANGU
     AND LFART IN S_LFART
     AND LFART IN R_LFART.
  SORT LT_TVLKT BY LFART.

*&S1.2形成单据最终RANGE.
  LOOP AT LT_TVLKT.
    R_LFARTN(3) = IEQ.
    R_LFARTN-LOW = LT_TVLKT-LFART.
    APPEND R_LFARTN.
  ENDLOOP.

  IF S_WBSTK[] IS NOT INITIAL .

*&S2.1:数据表LIPS LIKP VBUK关联取数
    SELECT A~VBELN
           A~ANZPK
           A~ERNAM    "创建对象人员的名称
           A~KUNNR    "配入机构
           A~LFART    "交货单类型(加描述)
           A~TDDAT    "计划发货日期
           A~BLDAT    "凭证日期
           A~WADAT_IST"实际发货日期
           A~YYCARNO
           A~LIFEX    "融通单号
           A~ERZET

           B~BWART
           B~POSNR   "序号
           B~WERKS   "配出机构
           B~VGBEL   "参考凭证号
           B~VGPOS   "参考凭证项目
           B~VGTYP
           B~MATNR   "商品编码
           B~MEINS   "单位
           B~VRKME
           B~LFIMG   "实发数量
           B~BRGEW   "毛重
           B~NTGEW   "净重
           B~LGORT

           C~KOSTK
           C~WBSTK
      INTO CORRESPONDING FIELDS OF TABLE  GT_ITAB
      FROM LIKP AS A
      JOIN VBUK AS C
        ON ( A~VBELN EQ C~VBELN )
      JOIN LIPS AS B
        ON ( A~VBELN EQ B~VBELN )
      UP TO L_NMAX ROWS
*&start changed by robin 20130514  ECDK910228
*&性能优化:
     WHERE A~BLDAT >= P_BLDATL
       AND A~BLDAT <= P_BLDATH
       AND A~LFART IN R_LFARTN
       AND B~WERKS EQ P_WERKS
       AND C~WBSTK IN S_WBSTK
       AND A~VBELN IN S_VBELN
       AND A~KUNNR IN S_KUNNR
       AND A~YYCARNO IN S_YYCAR
       AND A~WADAT_IST IN S_WADAT
       AND A~ERNAM IN S_ERNAM
     "AND B~WERKS EQ P_WERKS
       AND B~MATNR IN S_MATNR
       AND B~VGBEL IN S_VGBEL
*&->START ADD
       AND B~LGORT IN S_LGORT.
*&->END ADD.


**&end changed by robin 20130514.

  ELSE.

*&S2.2:数据表LIPS LIKP 关联取数,将VBUK取数移出
*&->START CHANGE BY AD_CX ON 20130725 ECDK913587.
    SELECT A~VBELN
           A~ANZPK
           A~ERNAM    "创建对象人员的名称
           A~KUNNR    "配入机构
           A~LFART    "交货单类型(加描述)
           A~TDDAT    "计划发货日期
           A~BLDAT    "凭证日期
           A~WADAT_IST"实际发货日期
           A~YYCARNO
           A~LIFEX    "融通单号
           A~ERZET

           B~BWART
           B~POSNR   "序号
           B~WERKS   "配出机构
           B~VGBEL   "参考凭证号
           B~VGPOS   "参考凭证项目
           B~VGTYP
           B~MATNR   "商品编码
           B~MEINS   "单位
           B~VRKME
           B~LFIMG   "实发数量
           B~BRGEW   "毛重
           B~NTGEW   "净重
           B~LGORT
*         C~KOSTK
*         C~WBSTK
      INTO CORRESPONDING FIELDS OF TABLE  GT_ITAB
      FROM LIKP AS A
*  JOIN VBUK AS C
*    ON ( A~VBELN EQ C~VBELN )
      JOIN LIPS AS B
        ON ( A~VBELN EQ B~VBELN )
      UP TO L_NMAX ROWS
*&start changed by robin 20130514  ECDK910228
*&性能优化:
     WHERE A~BLDAT >= P_BLDATL
       AND A~BLDAT <= P_BLDATH
       AND A~LFART IN R_LFARTN
       AND B~WERKS EQ P_WERKS
       AND A~VBELN IN S_VBELN
       AND A~KUNNR IN S_KUNNR
       AND A~YYCARNO IN S_YYCAR
       AND A~WADAT_IST IN S_WADAT
       AND A~ERNAM IN S_ERNAM
       AND B~MATNR IN S_MATNR
       AND B~VGBEL IN S_VGBEL
*&->START ADD
       AND B~LGORT IN S_LGORT.
*&->END ADD.

*   AND C~WBSTK IN S_WBSTK.
*&->END CHANGE BY AD_CX.

  ENDIF.

*&S2.3.内表排序
  SORT GT_ITAB BY VBELN POSNR.


*&S4.1当数量极大时提示:
*  IF G_LEN GT 80000.
*    MESSAGE E011 WITH ‘你查询的数据太多,请重新选择条件!‘.
*    STOP.
*  ENDIF.

*&S3.日期加时间点作为时间段查询数据
*&->START ADD BY AD_CAIXIANG ON 20121128.  增加按详细时间筛选数据逻辑:
*&判断时间范围内的数据
  LOOP AT GT_ITAB .
    CONCATENATE GT_ITAB-BLDAT GT_ITAB-ERZET INTO GT_ITAB-TIMMM.

    CONCATENATE P_BLDATL P_ERZETL INTO L_TIMEL.
    CONCATENATE P_BLDATH P_ERZETH INTO L_TIMEH.

    IF GT_ITAB-TIMMM > L_TIMEH OR GT_ITAB-TIMMM < L_TIMEL.
      GT_ITAB-FLAG = X.
      DELETE GT_ITAB.
      CONTINUE.
    ENDIF.

    CHECK GT_ITAB-VGBEL IS NOT INITIAL.
    IF GT_ITAB-VGTYP = V.
*&S3.1 形成采购订单数据中间表
      LT_EKKO-EBELN = GT_ITAB-VGBEL.
      LT_EKKO-EBELP = GT_ITAB-VGPOS.
      LT_EKKO-VBELN = GT_ITAB-VBELN.
      COLLECT LT_EKKO.
      CLEAR LT_EKKO.
    ELSE."销售凭证
      LT_WVBAP-VBELN = GT_ITAB-VGBEL.
      LT_WVBAP-POSNR = GT_ITAB-VGPOS.
      COLLECT LT_WVBAP.
    ENDIF.

*    MODIFY GT_ITAB TRANSPORTING FLAG.
  ENDLOOP.

*&S3.2 删除不满足条件的数据
  DELETE GT_ITAB WHERE FLAG EQ X.
*& END ADD BY AD_CAIXIANG ON 20121128.

*&->START ADD BY AD_CX ON 20130727.
  IF LINES( GT_ITAB ) = L_NMAX.
    MESSAGE I014(YH_FI1) WITH 条目的最大数值限制为 L_NMAX , 请分批查询!.
    STOP.
  ENDIF.
*&->END ADD.

*&S4.检查是否取到数据:
  DESCRIBE TABLE GT_ITAB LINES G_LEN.
  IF G_LEN EQ 0.
    MESSAGE I011 WITH 没有查询到符合条件的数据!.
    STOP.
  ENDIF.

*&S5.VBUK表取数:
*& 考虑用中间表:
  LT_WTAB[] = GT_ITAB[].
* SORT LT_WTAB BY VBELN.
  DELETE ADJACENT DUPLICATES FROM LT_WTAB  COMPARING VBELN.

  IF S_WBSTK[] IS INITIAL .
    LOOP AT LT_WTAB.
      CLEAR L_LAST.
      AT LAST.
        L_LAST = X.
      ENDAT.

      APPEND LT_WTAB TO LT_ITAB.
      ADD 1 TO L_COUNT.

      IF L_COUNT = 5000 OR L_LAST = X.
        SELECT VBELN KOSTK WBSTK
        APPENDING TABLE LT_VBUK
          FROM VBUK
           FOR ALL ENTRIES IN LT_ITAB
         WHERE VBELN EQ LT_ITAB-VBELN.

        REFRESH LT_ITAB.
        CLEAR L_COUNT.
      ENDIF.
    ENDLOOP.
    SORT LT_VBUK BY VBELN.
  ENDIF.
  FREE LT_WTAB.

*&S6.EKPO取数:
  IF LT_EKKO[] IS NOT INITIAL.
    LOOP AT LT_EKKO.
      CLEAR L_LAST.
      AT LAST.
        L_LAST = X.
      ENDAT.

      APPEND LT_EKKO TO LT_WEKO.

      ADD 1 TO L_COUNT.
      IF L_COUNT = 5000 OR L_LAST = X.
*&S6.1.通过凭证号关联到EKPO取数
        SELECT EBELN EBELP
               TXZ01 LGORT
               RESLO MWSKZ
               MENGE KZWI1
               KZWI5
        APPENDING TABLE LT_EKPO
          FROM EKPO
           FOR ALL ENTRIES IN LT_WEKO
         WHERE EBELN = LT_WEKO-EBELN
           AND EBELP = LT_WEKO-EBELP
           AND LOEKZ EQ SPACE.

*&S7.采购凭证历史表取数:
        SELECT EBELN EBELP
               VBELN_ST AS VBELN
               DMBTR
          APPENDING TABLE LT_EKBE
          FROM EKBE
           FOR ALL ENTRIES IN LT_WEKO
         WHERE EBELN EQ LT_WEKO-EBELN
           AND EBELP EQ LT_WEKO-EBELP
           AND VGABE EQ 6
           AND VBELN_ST EQ LT_WEKO-VBELN.

        REFRESH LT_WEKO.
        CLEAR L_COUNT.
      ENDIF.
    ENDLOOP.
    SORT LT_EKPO BY EBELN EBELP.
    SORT LT_EKBE BY EBELN EBELP VBELN.
  ENDIF.
  FREE: LT_WEKO,LT_EKKO.

*&—>START 以下备注:
**&S6.1.通过凭证号关联到EKPO取数
*    SELECT EBELN EBELP
*           TXZ01 LGORT
*           RESLO MWSKZ
*           MENGE KZWI1
*           KZWI5
*
*      INTO TABLE LT_EKPO
*      FROM EKPO
*       FOR ALL ENTRIES IN LT_EKKO
*     WHERE EBELN = LT_EKKO-EBELN
*       AND EBELP = LT_EKKO-EBELP
*       AND LOEKZ EQ SPACE.
**&->START ADD BY AD_CAIXIANG ON 20130516 ECDK911439
**    AND RESLO IN S_RESLO
**    AND LGORT IN S_LGORT.
**&->EDN ADD 20130516.
*    SORT LT_EKPO BY EBELN EBELP.

*&S6.2.关联到EKBE取数
*  *    BREAK AD_CAIXIANG.
* SELECT SINGLE DMBTR
*   FROM EKBE
*   INTO G_DMBTR
*  WHERE EBELN EQ WA-VGBEL
*    AND EBELP EQ WA-VGPOS+1(5)
*    AND BWART EQ WA-BWART.
* SELECT EBELN EBELP
*        DMBTR
*   INTO TABLE LT_EKBE
*   FROM EKBE
*    FOR ALL ENTRIES IN LT_EKKO
*  WHERE EBELN = LT_EKKO-EBELN
*    AND EBELP = LT_EKKO-EBELP
*    AND VGABE = ‘6‘.
*&->START CHANGE BY AD_CAIXIANG ON 20130603
*    LT_ITAB[] = GT_ITAB[].
*    SORT LT_ITAB BY VGBEL VGPOS VBELN.
*    DELETE ADJACENT DUPLICATES FROM LT_ITAB COMPARING VGBEL VGPOS VBELN.
*&->END 备注

*  IF LT_EKKO[] IS NOT INITIAL.
**&S7.采购凭证历史表取数:
*    SELECT EBELN EBELP
*           VBELN_ST AS VBELN
*           DMBTR
*      INTO TABLE LT_EKBE
*      FROM EKBE
*       FOR ALL ENTRIES IN LT_EKKO
*     WHERE EBELN EQ LT_EKKO-EBELN
*       AND EBELP EQ LT_EKKO-EBELP
*       AND VGABE EQ ‘6‘
*       AND VBELN_ST EQ LT_EKKO-VBELN.
*    SORT LT_EKBE BY EBELN EBELP VBELN.
** REFRESH LT_ITAB.
**&->END CHANGE .
*  ENDIF.

*&S8通过地点商品编码找对应大区件装数:
  LT_ITAB[] = GT_ITAB[].
  SORT LT_ITAB BY MATNR WERKS.
  DELETE ADJACENT DUPLICATES FROM LT_ITAB COMPARING MATNR WERKS.

  SELECT A~MATNR B~WERKS A~YUMREZ1
    INTO TABLE LT_MADQ
    FROM YTMADQ AS A
    JOIN T001W AS B
      ON ( A~BZIRK EQ B~BZIRK )
     FOR ALL ENTRIES IN LT_ITAB
   WHERE A~MATNR EQ LT_ITAB-MATNR
     AND B~WERKS EQ LT_ITAB-WERKS.
  SORT LT_MADQ BY MATNR WERKS.

*&S9通过货源找供应商:
  SELECT WERKS MATNR LIFNR
    INTO TABLE LT_EORD
    FROM YTMEORD
     FOR ALL ENTRIES IN LT_ITAB
   WHERE MATNR EQ  LT_ITAB-MATNR
     AND WERKS EQ  LT_ITAB-WERKS .
  SORT LT_EORD BY MATNR WERKS.
*  REFRESH LT_ITAB.

*&S10:商品编码找条码:
*  LT_ITAB[] = GT_ITAB[].
*  SORT LT_ITAB BY MATNR.

  DELETE ADJACENT DUPLICATES FROM LT_ITAB COMPARING MATNR.
  SELECT MATNR EAN11
    INTO TABLE LT_MEAN
    FROM MEAN
     FOR ALL ENTRIES IN LT_ITAB
   WHERE MATNR EQ LT_ITAB-MATNR
     AND HPEAN EQ X.
  SORT LT_MEAN BY MATNR.

*S6.6:商品编码取规格:
*  SORT LT_ITAB BY MATNR.
*  DELETE ADJACENT DUPLICATES FROM LT_ITAB COMPARING MATNR.
*  SELECT MATNR GROES
**&->START ADD BY AD_CAIXIANG ON 20130514  ECDK911331
*         MATKL
**&->END ADD BY AD_CAIXIANG.
*    INTO TABLE LT_MARA
*    FROM MARA
*     FOR ALL ENTRIES IN LT_ITAB
*   WHERE MATNR EQ LT_ITAB-MATNR
*     AND LVORM EQ SPACE.
**&6.7分子母码找对应的商品编码:
*  SELECT MATNR SATNR
*    INTO TABLE LT_MARA2
*    FROM MARA
*     FOR ALL ENTRIES IN LT_ITAB
*   WHERE MATNR EQ LT_ITAB-MATNR
*     AND ATTYP EQ ‘02‘
*     AND SATNR NE ‘‘.


*&S11.MARA表取数
  SELECT MATNR ATTYP SATNR GROES MATKL LVORM
    INTO TABLE LT_MARA3
    FROM MARA
     FOR ALL ENTRIES IN LT_ITAB
   WHERE MATNR EQ LT_ITAB-MATNR.

  LT_MARA[] = LT_MARA3[].
  DELETE LT_MARA WHERE LVORM NE SPACE.
  LT_MARA2[] = LT_MARA3[].
  DELETE LT_MARA2 WHERE ATTYP NE 02 OR SATNR EQ ‘‘.

  SORT LT_MARA BY MATNR.
  SORT LT_MARA2 BY MATNR.

  FREE LT_MARA3.
*&->START ADD BY AD_CAIXIANG ON 20130514  ECDK911331
*&S12.取大类名称
  SELECT YLBID YLBNAME
    INTO TABLE LT_YTLBCJ
    FROM YTLBCJ.
*     FOR ALL ENTRIES IN LT_MARA
*   WHERE YLBID EQ LT_MARA-MATKL+0(2).
  SORT LT_YTLBCJ BY YLBID.

*&->END ADD BY AD_CAIXIANG.

*&---?

  REFRESH LT_ITAB.

*&S13:取机构名称:
*  LT_ITAB[] = GT_ITAB[].
*  SORT LT_ITAB BY WERKS.
*  DELETE ADJACENT DUPLICATES FROM LT_ITAB COMPARING WERKS.
  SELECT WERKS NAME1 KUNNR
    INTO TABLE LT_T001W
    FROM T001W.
*     FOR ALL ENTRIES IN LT_ITAB
*   WHERE WERKS EQ LT_ITAB-WERKS.
  SORT LT_T001W BY WERKS.

*&S14.找出库位描述:
  SELECT WERKS LGORT LGOBE
    INTO TABLE LT_T001L
    FROM T001L.
*     FOR ALL ENTRIES IN LT_ITAB
*   WHERE WERKS EQ  LT_ITAB-WERKS.
  SORT LT_T001L BY WERKS LGORT.
  REFRESH LT_ITAB.

*&->START CHANGE BY AD_CX ON 20130725 ECDK913587.
*&S6.10取凭证类型描述:
*  SELECT LFART VTEXT
*    INTO TABLE LT_TVLKT
*    FROM TVLKT
*   WHERE SPRAS EQ SY-LANGU
*     AND LFART IN S_LFART
*     AND LFART IN R_LFART.
*  SORT LT_TVLKT BY LFART.
*&->END CHANGE.

*&S15.取供应商名称
*  LT_ITAB[] = GT_ITAB[].
*  SORT LT_ITAB BY LIFNR.
*  DELETE ADJACENT DUPLICATES FROM LT_LFA1 COMPARING LIFNR.

  SELECT LIFNR NAME1
    INTO TABLE LT_LFA1
    FROM LFA1
     FOR ALL ENTRIES IN LT_EORD
   WHERE LIFNR EQ LT_EORD-LIFNR.
  SORT LT_LFA1 BY LIFNR.
  REFRESH LT_ITAB.


*&S16.取客户名称:
  LT_ITAB[] = GT_ITAB[].
  SORT LT_ITAB BY KUNNR.
  DELETE ADJACENT DUPLICATES FROM LT_ITAB COMPARING KUNNR.
  SELECT KUNNR NAME1
    INTO TABLE LT_KNA1
    FROM KNA1
     FOR ALL ENTRIES IN LT_ITAB
   WHERE KUNNR EQ LT_ITAB-KUNNR.
  SORT LT_KNA1 BY KUNNR.
  REFRESH LT_ITAB.

*&S17.取制单人名称
  LT_ITAB[] = GT_ITAB[].
  SORT LT_ITAB BY ERNAM.
  DELETE ADJACENT DUPLICATES FROM LT_ITAB COMPARING ERNAM.
  SELECT BNAME NAME_TEXT
    INTO TABLE LT_NAME
    FROM V_USR_NAME
     FOR ALL ENTRIES IN LT_ITAB
   WHERE BNAME EQ LT_ITAB-ERNAM.
  SORT LT_NAME BY BNAME.
  REFRESH LT_ITAB.

*& 销售凭证
  IF LT_WVBAP[] IS NOT INITIAL.
    LOOP AT LT_WVBAP.
      CLEAR L_LAST.
      AT LAST.
        L_LAST = X.
      ENDAT.

      LT_TAB1-VBELV = LT_WVBAP-VBELN.
      LT_TAB1-POSNV = LT_WVBAP-POSNR.
      APPEND LT_TAB1.

      ADD 1 TO L_COUNT.
      IF L_COUNT = 5000 OR L_LAST = X.

*&S19.取销售凭证对应数量
        SELECT VBELN  POSNR
               KWMENG ARKTX
          APPENDING TABLE LT_VBAP
          FROM VBAP
           FOR ALL ENTRIES IN LT_TAB1
         WHERE VBELN EQ LT_TAB1-VBELV
           AND POSNR EQ LT_TAB1-POSNV.

*&S18.取销售凭证发票
        SELECT VBELV POSNV
               VBELN POSNN
          APPENDING TABLE LT_VBFA
          FROM VBFA
           FOR ALL ENTRIES IN LT_TAB1
         WHERE VBELV EQ LT_TAB1-VBELV
           AND POSNV EQ LT_TAB1-POSNV
           AND VBTYP_N EQ M.
        IF SY-SUBRC = 0.
          SELECT VBELN POSNR
                 KZWI1 FKIMG
            APPENDING TABLE LT_VBRP
            FROM VBRP
             FOR ALL ENTRIES IN LT_VBFA
           WHERE VBELN = LT_VBFA-VBELN
             AND POSNR = LT_VBFA-POSNN.
        ENDIF.

        REFRESH LT_TAB1.
        CLEAR L_COUNT.
      ENDIF.

    ENDLOOP.

    SORT LT_VBFA BY VBELV POSNV.
    SORT LT_VBAP BY VBELN POSNR.
    SORT LT_VBRP BY VBELN POSNR.
  ENDIF.
  FREE: LT_TAB1,LT_WVBAP.

*  LT_ITAB[] = GT_ITAB[].
*  SORT LT_ITAB BY VGBEL VGPOS.
*  DELETE ADJACENT DUPLICATES FROM LT_ITAB COMPARING VGBEL VGPOS.
*  SELECT VBELV POSNV
*         VBELN POSNN
*    INTO TABLE LT_VBFA
*    FROM VBFA
*     FOR ALL ENTRIES IN LT_ITAB
*   WHERE VBELV EQ LT_ITAB-VGBEL
*     AND POSNV EQ LT_ITAB-VGPOS
*     AND VBTYP_N EQ ‘M‘.
*  SORT LT_VBFA BY VBELV POSNV.
*
*
*
**&S19.取销售凭证对应数量
*  SELECT VBELN  POSNR
*         KWMENG ARKTX
*    INTO TABLE LT_VBAP
*    FROM VBAP
*     FOR ALL ENTRIES IN LT_ITAB
*   WHERE VBELN EQ LT_ITAB-VGBEL
*     AND POSNR EQ LT_ITAB-VGPOS.
*  SORT LT_VBAP BY VBELN POSNR.
*
*  REFRESH LT_ITAB.
*
**&S20.取发票数量与金额
*  LT_TAB1[] = LT_VBFA[].
*  SORT LT_TAB1 BY VBELN POSNN.
*  DELETE ADJACENT DUPLICATES FROM LT_TAB1 COMPARING VBELN POSNN.
*  IF LT_TAB1[] IS NOT INITIAL.
*    SELECT VBELN POSNR
*           KZWI1 FKIMG
*      INTO TABLE LT_VBRP
*      FROM VBRP
*       FOR ALL ENTRIES IN LT_TAB1
*     WHERE VBELN = LT_TAB1-VBELN
*       AND POSNR = LT_TAB1-POSNN.
*    SORT LT_VBRP BY VBELN POSNR.
*  ENDIF.



*&S21获取税率
  SELECT A~MWSKZ
         B~KBETR
    INTO TABLE LT_A003
    FROM A003 AS A
    JOIN KONP AS B
      ON A~KNUMH = B~KNUMH AND B~KOPOS = 01
   WHERE A~KAPPL = TX
     AND A~KSCHL = MWVS
     AND A~ALAND = CN
     AND B~LOEVM_KO = SPACE.
  SORT LT_A003 BY MWSKZ.

*&S22,环取得其他表中取其它值
  LOOP AT GT_ITAB. " INTO WA.
    G_TABIX = SY-TABIX.

    MOVE GT_ITAB TO WA.

*&S检查ekpo中的库位:
*&读取EKPO中金额,税码等数据
    IF  WA-VGBEL NE SPACE AND WA-VGTYP = V.
      READ TABLE LT_EKPO WITH KEY EBELN = WA-VGBEL
                                  EBELP = WA-VGPOS+1(5) BINARY SEARCH.
      IF SY-SUBRC EQ 0.
*& 取小计金额 和 数量
        G_MWSKZ = LT_EKPO-MWSKZ.
        G_KZWI5 = LT_EKPO-KZWI5.
        G_KZWI1 = LT_EKPO-KZWI1.
        G_MENGE = LT_EKPO-MENGE.
*&->ADD BY AD_CAIXIANG.
        WA-MENGE = LT_EKPO-MENGE.
*&->END ADD.
        " WA-LGORT = LT_EKPO-LGORT.
*      WA-RESLO = LT_EKPO-RESLO.
        WA-RESLO = LT_EKPO-LGORT.
*&->START CHANGE BY AD_CAIXIANG ON 20130516.
        WA-MAKTX = LT_EKPO-TXZ01.
*&->END CHANGE BY AD_CAIXIANG.
*&判断库位:
*&IF WA-LGORT IN S_LGORT AND
        IF WA-RESLO IN S_RESLO.
*          WA-MAKTX = LT_EKPO-TXZ01.
*          WA-LGORT = LT_EKPO-LGORT.
*          WA-RESLO = LT_EKPO-RESLO.
        ELSE.
          CLEAR WA.
          DELETE GT_ITAB INDEX G_TABIX.
          CONTINUE.
        ENDIF.

*     ENDIF.
**&->START CHANGE BY AD_CAIXIANG ON 20130513  ECDK911294.
*      ELSE.
*        CLEAR WA.
*        DELETE GT_ITAB INDEX G_TABIX.
*        CONTINUE.

      ENDIF.
*&->END CHANGE BY AD_CAIXIANG ON 20130513.

    ENDIF.

*&--->START CHANGE BY AD_CAIXIANG ON 20130406 ECDK910228

    IF S_WBSTK[] IS INITIAL .
      READ TABLE LT_VBUK WITH KEY VBELN = GT_ITAB-VBELN BINARY SEARCH.
      IF SY-SUBRC = 0.
        GT_ITAB-KOSTK = LT_VBUK-KOSTK.
        GT_ITAB-WBSTK = LT_VBUK-WBSTK.
        WA-KOSTK = LT_VBUK-KOSTK.
        WA-WBSTK = LT_VBUK-WBSTK.
      ENDIF.
    ENDIF.

*& 分子母码找对应的商品编码:
*    SELECT SINGLE SATNR
*             INTO WA-MATNR
*             FROM MARA
*            WHERE ATTYP = ‘02‘
*              AND SATNR <> ‘‘
*              AND MATNR = WA-MATNR.
    READ TABLE LT_MARA2 WITH KEY MATNR = WA-MATNR BINARY SEARCH.
    IF SY-SUBRC EQ 0.
      WA-MATNR = LT_MARA2-SATNR.
    ENDIF.

*&读取供应商
    READ TABLE LT_EORD WITH KEY MATNR = WA-MATNR
                                WERKS = WA-WERKS BINARY SEARCH.
    IF SY-SUBRC EQ 0.
      WA-LIFNR = LT_EORD-LIFNR.
    ENDIF.

*& 取供应商名称:
    READ TABLE LT_LFA1 WITH KEY LIFNR = WA-LIFNR BINARY SEARCH.
    IF SY-SUBRC = 0.
      WA-NAME3 = LT_LFA1-NAME1.
    ENDIF.


    AT NEW VBELN .
      CLEAR:L_NAME_TEXT.
*&S1.5.1:获取制单人信息:
      READ TABLE LT_NAME WITH KEY BNAME = WA-ERNAM BINARY SEARCH.
      IF SY-SUBRC EQ 0.
        L_NAME_TEXT = LT_NAME-NAME_TEXT.
      ENDIF.

*&S1.5.2:取客户描述:
      CLEAR KNA1-NAME1.
      READ TABLE LT_KNA1 WITH KEY KUNNR = WA-KUNNR BINARY SEARCH.
      IF SY-SUBRC = 0.
        KNA1-NAME1 = LT_KNA1-NAME1.
      ENDIF.

*&S1.5.3:取出客户对应的工厂:
      CLEAR L_WERKS.
      READ TABLE LT_T001W WITH KEY KUNNR = WA-KUNNR. " BINARY SEARCH.
      IF SY-SUBRC = 0.
        L_WERKS = LT_T001W-WERKS.
      ENDIF.

    ENDAT.


*&--->END CHANGE BY AD_CAIXIANG ON 20130406.


*& 金额:
    WA-JINE = WA-JIAGE *  GT_ITAB-LFIMG.

*&---> START CHANGE BY AD_CAIXIANG ON 20130222  ECDK908753
    IF WA-BWART EQ 641 OR WA-BWART EQ 643.
*&当交货单的凭证类型为‘641’ ‘643’时,取交货单凭证里的KZWI5
*& 当小计5不为0:价格=  小计5/数量
*&  当小计5为0: 通过交货单凭证中的税码EKPO-MWSKZ,计算税率,然后通
*&   ( DMBTR * ( 1 + 税率 / 100 ) ) / 数量.计算价格。
*&---> END CHANGE BY AD_CAIXIANG.
      READ TABLE LT_EKBE WITH KEY EBELN = WA-VGBEL
                                  EBELP = WA-VGPOS+1(5)
                                  VBELN = WA-VBELN BINARY SEARCH.
      IF SY-SUBRC = 0.
        G_DMBTR = LT_EKBE-DMBTR.

*& 当KZWI5不为0:
        IF G_KZWI5 NE 0.
          IF G_MENGE NE 0.
            WA-JIAGE = G_KZWI5 / G_MENGE.
          ELSE.
            WA-JIAGE = 0.
          ENDIF.
*& 金额:
          WA-JINE = WA-JIAGE *  GT_ITAB-LFIMG.
        ELSE.

*&获取税率
*&->START CHANGE BY AD_CX ON 20130703 ECDK912680

          READ TABLE LT_A003 WITH KEY MWSKZ = G_MWSKZ BINARY SEARCH.
          IF SY-SUBRC = 0.
            G_TEXT = LT_A003-KBETR / 10.
*&剔除税率小数点后的零
            C_TEXT = TRUNC( G_TEXT ).
            CONCATENATE C_TEXT % INTO C_TEXT.
          ENDIF.
*&->START CHANGE BY AD_CAIXIANG ON 20130603 ECDK912048.
          WA-JINE  = ( G_DMBTR * ( 1 + C_TEXT / 100 ) ) .
          IF G_MENGE NE 0.
*&->START CHANGE BY AD_CAIXIANG ON 20130604.
            WA-JIAGE = WA-JINE / GT_ITAB-LFIMG.
          ELSE.
            WA-JIAGE = 0.
          ENDIF.


*&函数注释
*    CALL FUNCTION ‘YH_PUB_TAX_VALUE_GET‘
*       EXPORTING
*           I_KSCHL = ‘MWVS‘
*              I_MWSKZ = G_MWSKZ
*            IMPORTING
*              O_KBETR = G_TEXT.
**&->START CHANGE BY AD_CAIXIANG ON 20130603 ECDK912048.
*          WA-JINE  = ( G_DMBTR * ( 1 + G_TEXT / 100 ) ) .
*          IF G_MENGE NE 0.
**&->START CHANGE BY AD_CAIXIANG ON 20130604.
*            WA-JIAGE = WA-JINE / GT_ITAB-LFIMG.
**  WA-JIAGE = WA-JINE / G_MENGE.
*&->END CHANGE BY AD_CX.

**&->END CHANGE.
*          ELSE.
*            WA-JIAGE = 0.
*          ENDIF.
*     IF G_MENGE NE 0.
*       WA-JIAGE = ( G_DMBTR * ( 1 + G_TEXT / 100 ) ) / G_MENGE.
*     ELSE.
*       WA-JIAGE = 0.
*     ENDIF.
*&->END CHANGE .

        ENDIF.

      ENDIF.

    ENDIF.

*&---> START ADD BY AD_CAIXIANG ON 20130222 ECDK908753.
*&当交货单移动类型为 ‘671’ ‘673’时, 小计1/数量 计算价格,
    IF WA-BWART EQ 671 OR WA-BWART EQ 673.
      WA-JIAGE = G_KZWI1 / G_MENGE.
*& 金额:
      WA-JINE = WA-JIAGE *  GT_ITAB-LFIMG.
    ENDIF.
*&---> END ADD BY AD_CAIXIANG ON 20130222.

*&当移动类型为‘653’ ‘601’,通过交货凭证找到对应的开票凭证数据计算价格
    IF WA-BWART EQ 653 OR WA-BWART EQ 601 .

*&读取开票凭证
      READ TABLE LT_VBFA WITH KEY VBELV = WA-VGBEL
                                  POSNV = WA-VGPOS
                                  BINARY SEARCH.
      IF SY-SUBRC EQ 0.
        VBFA-VBELN = LT_VBFA-VBELN.
        VBFA-POSNN = LT_VBFA-POSNN.
      ENDIF.


      READ TABLE LT_VBRP WITH KEY VBELN = VBFA-VBELN
                                  POSNR = VBFA-POSNN
                                  BINARY SEARCH.
      IF SY-SUBRC EQ 0.
        G_KZWI1 = LT_VBRP-KZWI1.
        G_FKIMG = LT_VBRP-FKIMG.
      ENDIF.
*&计算价格
      IF G_FKIMG NE SPACE.
        WA-JIAGE = G_KZWI1 / G_FKIMG.

      ELSE.
        WA-JIAGE = 0.
      ENDIF.
*& 金额:
      WA-JINE = WA-JIAGE *  GT_ITAB-LFIMG.

    ENDIF.

**& 金额:
*    WA-JINE = WA-JIAGE *  GT_ITAB-LFIMG.
*& END ADD ON 20121128

*&S1.6.1: 读取条码:
    READ TABLE LT_MEAN WITH KEY MATNR = WA-MATNR
*                                MEINH = WA-MEINS
                          BINARY SEARCH.
    IF SY-SUBRC EQ 0.
      WA-EAN11 = LT_MEAN-EAN11.
    ENDIF.

*S1.6.2:取规格:
    READ TABLE LT_MARA WITH KEY MATNR = WA-MATNR
                           BINARY SEARCH.
    IF SY-SUBRC EQ 0.
      WA-GROES = LT_MARA-GROES.
*&->ADD BY AD_CAIXIANG
      WA-YLBID1 = LT_MARA-MATKL+0(4).
*&->END ADD.
    ENDIF.

*&->ADD BY AD_CAIXIANG
*&S1.6.2.1读取大类名称
    READ TABLE LT_YTLBCJ WITH KEY YLBID = WA-YLBID1 BINARY SEARCH.
    IF SY-SUBRC EQ 0.
      WA-YDLNAM = LT_YTLBCJ-YLBNAME.
    ENDIF.
*&->END ADD.

*S1.6.3:取工厂描述:
    READ TABLE LT_T001W WITH KEY WERKS = WA-WERKS BINARY SEARCH.
    IF SY-SUBRC EQ 0.
      WA-NAME1 = LT_T001W-NAME1.
    ENDIF.

*S1.6.5: 取件数:
    READ TABLE LT_MADQ WITH KEY MATNR = WA-MATNR
                                WERKS = WA-WERKS
                               BINARY SEARCH.
    IF SY-SUBRC EQ 0.
      WA-YUMREZ1 = LT_MADQ-YUMREZ1.
    ENDIF.

*&S1.6.6:取数量:
    IF  WA-LFART = ZLF OR WA-LFART = ZLR OR WA-LFART = ZLF2 OR WA-LFART = ZLR2.

      READ TABLE LT_VBAP WITH KEY VBELN = WA-VGBEL
                                  POSNR = WA-VGPOS
                                  BINARY SEARCH.
      IF SY-SUBRC EQ 0.
        WA-MENGE = LT_VBAP-KWMENG.
        WA-MAKTX = LT_VBAP-ARKTX.
      ENDIF.
*    ELSE.
**      WA-MENGE = EKPO-MENGE.
    ENDIF.

*&皮重:
    WA-JINZH  = WA-BRGEW  - WA-NTGEW.

*&订货件数
    IF WA-YUMREZ1 NE 0.
      WA-DINH = WA-MENGE / WA-YUMREZ1.
    ENDIF.

*&实发件数
    IF WA-YUMREZ1 NE 0.
      WA-SHFA = WA-LFIMG / WA-YUMREZ1.
    ENDIF.

*&找移入库位描述:
    IF WA-RESLO NE SPACE.
      READ TABLE LT_T001L WITH KEY WERKS = L_WERKS
                                   LGORT = WA-RESLO
                                   BINARY SEARCH.
      IF SY-SUBRC EQ 0.
        WA-LGOBE1 = LT_T001L-LGOBE.
      ENDIF.
    ENDIF.

**S1.5.12:找移出库位描述:
    IF WA-LGORT NE SPACE.
      READ TABLE LT_T001L WITH KEY WERKS = WA-WERKS
                                   LGORT = WA-LGORT
                                   BINARY SEARCH.
      IF SY-SUBRC EQ 0.
        WA-LGOBE2 = LT_T001L-LGOBE.
      ENDIF.

    ENDIF.


*& 找类型描述:
    READ TABLE LT_TVLKT WITH KEY LFART = WA-LFART BINARY SEARCH.
    IF SY-SUBRC EQ 0.
      WA-VTEXT = LT_TVLKT-VTEXT.
    ENDIF.

*&S1.5.11:汇总数量:
    L_MENGE  = L_MENGE + WA-MENGE.
    L_LFIMG  = L_LFIMG + WA-LFIMG.
    L_JINZH  = L_JINZH + WA-JINZH.
    WA-NAME2 =  KNA1-NAME1.
    WA-NAME_TEXT = L_NAME_TEXT.

*& 单位转换:
    CALL FUNCTION CONVERSION_EXIT_CUNIT_OUTPUT
      EXPORTING
        INPUT          = WA-MEINS
        LANGUAGE       = SY-LANGU
      IMPORTING
        OUTPUT         = WA-MEINS
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS         = 2.


*&START ADD BY AD_CAIXIANG ON 201211206
    MOVE-CORRESPONDING WA TO GT_DATA.
    GT_DATA-MENGE = L_MENGE.
    GT_DATA-LFIMG = L_LFIMG.
    GT_DATA-JINZH = L_JINZH.


    COLLECT GT_DATA.
    CLEAR   GT_DATA.

    MODIFY GT_ITAB FROM WA.
    CLEAR: WA.
    CLEAR : L_MENGE, L_LFIMG, L_JINZH.

  ENDLOOP.
*&END ADD BY AD_CAIXIANG ON ...

*&筛选条件]
*&->START ADD BY AD_CAIXIANG ON 20130513 ECDK911373
  IF S_RESLO[] IS NOT INITIAL.
    DELETE GT_ITAB WHERE RESLO NOT IN S_RESLO.
    DELETE GT_DATA WHERE RESLO NOT IN S_RESLO.
  ENDIF.
*&->EDN ADD BY AD_CX.

*&S1.7: 检查是否取到数据:
  DESCRIBE TABLE GT_DATA LINES G_LEN.
  IF G_LEN EQ 0.
    MESSAGE I011 WITH 没有查询到符合条件的数据!.
    STOP.
  ENDIF.

ENDFORM.                    " frm_get_data


*&---------------------------------------------------------------------*
*&      Form  FRM_LFART
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_LFART .

  CLEAR:R_LFART[],R_LFART.
  R_LFART-SIGN = I. R_LFART-OPTION = EQ.
  R_LFART-LOW = NLR.  APPEND R_LFART.
  R_LFART-LOW = NL.   APPEND R_LFART.
  R_LFART-LOW = NLCC. APPEND R_LFART.
  R_LFART-LOW = NCR.  APPEND R_LFART.
  R_LFART-LOW = ZLF.  APPEND R_LFART.
  R_LFART-LOW = ZLR.  APPEND R_LFART.
*&->START ADD BY AD_CAIXIANG ON 20120126 ECDK907564
  R_LFART-LOW = ZLF2. APPEND R_LFART.
  R_LFART-LOW = ZLR2. APPEND R_LFART.
*&->END ADD BY AD_CAIXIANG

ENDFORM.                    " FRM_LFART


*&---------------------------------------------------------------------*
*&      Form  frm_output_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_ALV_OUTPUT.

  CHECK G_LEN NE 0.

*&S4.1: 设定输出字段:
  PERFORM FRM_FIELDCAT_GET.
  PERFORM FRM_EVENTS_SET.

*&S4.2:设定输出格式:
  PERFORM FRM_LAYOUT_SET.

  G_LEN = LINES( GT_DATA[] ).
  MESSAGE S013 WITH 找到数据: G_LEN .

*&调用ALV函数输出:
  CALL FUNCTION REUSE_ALV_GRID_DISPLAY
    EXPORTING
      I_CALLBACK_PROGRAM       = SY-REPID
*     I_CALLBACK_PF_STATUS_SET = ‘SET_PF_STATUS‘
      I_CALLBACK_USER_COMMAND  = USER_COMMAND
      IS_LAYOUT                = GS_LAYOUT
      IT_FIELDCAT              = GT_FIELDCAT
      I_SAVE                   = A
*     it_events                = gt_event
    TABLES
      T_OUTTAB                 = GT_DATA
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.


ENDFORM.                    " FRM_ALV_OUTPUT.

*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                        RS_SELFIELD TYPE SLIS_SELFIELD.
  DATA: LR_GRID TYPE REF TO CL_GUI_ALV_GRID.

*&将变更的数据刷新
  CALL FUNCTION GET_GLOBALS_FROM_SLVC_FULLSCR
    IMPORTING
      E_GRID = LR_GRID.
  CALL METHOD LR_GRID->CHECK_CHANGED_DATA.
  RS_SELFIELD-REFRESH = X.

*  break ad_taoxb.

  CLEAR WA.
  CASE R_UCOMM.
    WHEN &IC1.
*&Double deal with:
      CLEAR GT_DATA.
      READ TABLE  GT_DATA INDEX RS_SELFIELD-TABINDEX.
      IF SY-SUBRC EQ 0.
        PERFORM FRM_DETAIL_DISP.
      ENDIF.
*      CALL METHOD lr_grid->refresh_table_display.
    WHEN OTHERS.
  ENDCASE.
ENDFORM.                    "USER_COMMAND


*&---------------------------------------------------------------------*
*&      ALV EVENT Form  f_pf_status_set
*&---------------------------------------------------------------------*
FORM F_PF_STATUS_SET  USING EXTAB TYPE SLIS_T_EXTAB.

  SET PF-STATUS STANDARD EXCLUDING EXTAB.

ENDFORM.                    " f_pf_status_set
*&---------------------------------------------------------------------*
*&      Form  FRM_FIELDCAT_GET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_FIELDCAT_GET .

  CLEAR GT_FIELDCAT.
  REFRESH GT_FIELDCAT.
*&设定输出的相关字段结构:
  MAR_ADD_FIELDCAT VBELN     交货单       1  ‘‘ 10 X ‘‘ ‘‘.
  MAR_ADD_FIELDCAT WERKS     配出机构     2  ‘‘ 6    ‘‘ ‘‘.
  MAR_ADD_FIELDCAT NAME1     配出机构名称 3  ‘‘ 15   ‘‘ ‘‘.
  MAR_ADD_FIELDCAT KUNNR     配入机构     5  ‘‘ 6    ‘‘ X.
  MAR_ADD_FIELDCAT NAME2     配入机构名称 6  ‘‘ 20   ‘‘ ‘‘.

  MAR_ADD_FIELDCAT LGORT     移出库位     7 ‘‘ 6      ‘‘ ‘‘.
  MAR_ADD_FIELDCAT LGOBE2    移出库位描述 8 ‘‘ 15     ‘‘ ‘‘.
  MAR_ADD_FIELDCAT RESLO     移入库位     9  ‘‘ 6     ‘‘ ‘‘.
  MAR_ADD_FIELDCAT LGOBE1    移入库位描述 10  ‘‘ 15   ‘‘ ‘‘.
  MAR_ADD_FIELDCAT LIFEX     融通单号     12 ‘‘ 20   ‘‘ ‘‘.
  MAR_ADD_FIELDCAT LFART     类型         13 ‘‘ 5    ‘‘ ‘‘.
  MAR_ADD_FIELDCAT VTEXT     交货类型描述 14 ‘‘ 15   ‘‘ ‘‘.
  MAR_ADD_FIELDCAT YYCARNO   车辆号       15 ‘‘ 10   ‘‘ ‘‘.
  MAR_ADD_FIELDCAT BLDAT     凭证日期     17 ‘‘ 10   ‘‘ ‘‘.
  MAR_ADD_FIELDCAT ERZET     时间         17 ‘‘ 10   ‘‘ ‘‘.
  MAR_ADD_FIELDCAT WADAT_IST 实际发货日期 18 ‘‘ 10   ‘‘ ‘‘.
  MAR_ADD_FIELDCAT MENGE     订货数量     20 ‘‘ 10   ‘‘ ‘‘.
  MAR_ADD_FIELDCAT LFIMG     实发数量     21 ‘‘ 10   ‘‘ ‘‘.
  MAR_ADD_FIELDCAT JINZH     皮重         22 ‘‘ 10   ‘‘ ‘‘.
  MAR_ADD_FIELDCAT JINE      金额         22 ‘‘ 10   ‘‘ ‘‘.
  MAR_ADD_FIELDCAT KOSTK     总拣配状态   23 ‘‘ 6    ‘‘ ‘‘.
  MAR_ADD_FIELDCAT WBSTK     移动总状态   25 ‘‘ 8    ‘‘ ‘‘.
  MAR_ADD_FIELDCAT NAME_TEXT 制单人       26 ‘‘ 10   ‘‘ ‘‘.
  "MAR_ADD_FIELDCAT ‘TDDAT‘ ‘计划日期‘ ‘16‘ ‘‘ ‘10‘ ‘ ‘ ‘ ‘.

ENDFORM.                    " FRM_FIELDCAT_GET
*&---------------------------------------------------------------------*
*&      Form  FRM_EVENTS_SET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_EVENTS_SET .

ENDFORM.                    " FRM_EVENTS_SET
*&---------------------------------------------------------------------*
*&      Form  FRM_LAYOUT_SET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_LAYOUT_SET .

  CLEAR GS_LAYOUT.
  MOVE:  X  TO  GS_LAYOUT-ZEBRA,
         X  TO  GS_LAYOUT-COLWIDTH_OPTIMIZE,
         X  TO  GS_LAYOUT-DETAIL_POPUP.

ENDFORM.                    " FRM_LAYOUT_SET
*&---------------------------------------------------------------------*
*&      Form  FRM_DETAIL_DISP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_DETAIL_DISP .
  DATA: LT_ITAB LIKE GT_ITAB OCCURS 0 WITH HEADER LINE.
  DATA: G_LEN2 TYPE SY-TABIX.

*&T1.找到需显示的数据:
  LT_ITAB[] = GT_ITAB[].
  IF P_DETAIL IS INITIAL.
    DELETE LT_ITAB WHERE VBELN NE GT_DATA-VBELN.
    SORT  LT_ITAB BY MATNR.
  ENDIF.

*&T2:获取结构:
  PERFORM FRM_FIELDCAT_GET2.

  G_LEN2 = LINES( LT_ITAB[] ).
  MESSAGE S013 WITH 找到数据: G_LEN2 .

*&T3: 显示:
  CALL FUNCTION REUSE_ALV_GRID_DISPLAY
    EXPORTING
      I_CALLBACK_PROGRAM       = SY-CPROG
*     I_CALLBACK_PF_STATUS_SET = ‘SET_PF_STATUS‘
*     I_CALLBACK_USER_COMMAND  = ‘USER_COMMAND‘
      IS_LAYOUT                = GS_LAYOUT
      IT_FIELDCAT              = GT_FIELDCAT2
      I_SAVE                   = A
*     it_events                = gt_event
    TABLES
      T_OUTTAB                 = LT_ITAB
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.

ENDFORM.                    " FRM_DETAIL_DISP
*&---------------------------------------------------------------------*
*&      Form  FRM_FIELDCAT_GET2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_FIELDCAT_GET2 .

  CLEAR GT_FIELDCAT2.
  REFRESH GT_FIELDCAT2.
*&设定输出的相关字段结构:
  MAR_ADD_FIELDCAT2 VBELN     交货单       1  ‘‘ 10  X ‘‘   ‘‘.
  MAR_ADD_FIELDCAT2 POSNR     项次         2  ‘‘ 5   X    ‘‘.
  MAR_ADD_FIELDCAT2 WERKS     配出机构     3  ‘‘ 6        ‘‘.
  MAR_ADD_FIELDCAT2 NAME1     配出机构名称 4  ‘‘ 15       ‘‘.
  MAR_ADD_FIELDCAT2 KUNNR     配入机构     5  ‘‘ 6        ‘‘.
  MAR_ADD_FIELDCAT2 NAME2     配入机构名称 6  ‘‘ 20       ‘‘.

  MAR_ADD_FIELDCAT2 LGORT     移出库位     7 ‘‘ 6      ‘‘ ‘‘.
  MAR_ADD_FIELDCAT2 LGOBE2    移出库位描述 8 ‘‘ 15     ‘‘ ‘‘.
  MAR_ADD_FIELDCAT2 RESLO     移入库位     9  ‘‘ 6     ‘‘ ‘‘.
  MAR_ADD_FIELDCAT2 LGOBE1    移入库位描述 10  ‘‘ 15   ‘‘ ‘‘.

*  MAR_ADD_FIELDCAT2 ‘RESLO‘     ‘移出库位‘     ‘8‘  ‘‘ ‘6‘   ‘ ‘ ‘ ‘  ‘‘.
*  MAR_ADD_FIELDCAT2 ‘LGOBE1‘    ‘移出库位描述‘ ‘9‘  ‘‘ ‘15‘  ‘ ‘ ‘ ‘  ‘‘.
*  MAR_ADD_FIELDCAT2 ‘LGORT‘     ‘移入库位‘     ‘10‘ ‘‘ ‘6‘   ‘ ‘ ‘ ‘  ‘‘.
*  MAR_ADD_FIELDCAT2 ‘LGOBE2‘    ‘移入库位描述‘ ‘11‘ ‘‘ ‘15‘  ‘ ‘ ‘ ‘  ‘‘.
  MAR_ADD_FIELDCAT2 LFART     类型         13 ‘‘ 5        ‘‘.
  MAR_ADD_FIELDCAT2 VTEXT     交货类型描述 14 ‘‘ 15       ‘‘.
  MAR_ADD_FIELDCAT2 VGBEL     参考凭证     14 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 VGPOS     参考项次     14 ‘‘ 5        ‘‘.
  MAR_ADD_FIELDCAT2 MATNR     商品编码     15 ‘‘ 18       X.
  MAR_ADD_FIELDCAT2 EAN11     条码         16 ‘‘ 15       ‘‘.
  MAR_ADD_FIELDCAT2 MAKTX     商品名称     17 ‘‘ 30       ‘‘.
*&->START ADD BY AD_CAIXIANG ON 20130514 ECDK911331
  MAR_ADD_FIELDCAT2 YLBID1    大类编码     18 ‘‘ 15       ‘‘.
  MAR_ADD_FIELDCAT2 YDLNAM    大类名称     18 ‘‘ 30       ‘‘.
*&->END ADD.

  MAR_ADD_FIELDCAT2 MEINS     单位         19 ‘‘ 5        ‘‘.
  MAR_ADD_FIELDCAT2 YYCARNO   车辆号       20 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 BLDAT     凭证日期     23 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 ERZET     时间         23 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 WADAT_IST 实际发货日期 24 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 ANZPK     包数         25 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 GROES     规格         26 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 YUMREZ1   件装数       28 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 DINH      订货件数     29 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 MENGE     订货数量     30 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 SHFA      实发件数     31 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 LFIMG     实发数量     32 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 JINZH     皮重         33 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 NAME_TEXT 制单人       36 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 LIFNR     供应商编码   37 ‘‘ 10       X.
  MAR_ADD_FIELDCAT2 NAME3     供应商名称   38 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 JIAGE     价格         38 ‘‘ 10       ‘‘.
  MAR_ADD_FIELDCAT2 JINE      金额         38 ‘‘ 10       ‘‘.
  "MAR_ADD_FIELDCAT2 ‘TDDAT‘ ‘计划日期‘ ‘21‘ ‘‘ ‘10‘ ‘ ‘ ‘ ‘ ‘‘.

ENDFORM.                    " FRM_FIELDCAT_GET2

 

.netcore009api参数和复合搜索(代码片段)

文章目录API参数FromQuery查询参数和FromRoute路由参数API参数请求方法参数拼接FromQuery查询参数和FromRoute路由参数FromQueryapi/touristRoutes?keyword=传入的参数publicIActionResultGerTouristRoutes([FromQuery(Name="keyword")]strin 查看详情

.netcore009api参数和复合搜索(代码片段)

文章目录API参数Get请求FromQuery查询参数和FromRoute路由参数POST请求FromBodyAPI参数请求方法参数拼接Get请求FromQuery查询参数和FromRoute路由参数FromQueryapi/touristRoutes?keyword=传入的参数publicIActionResultGerTouristRoutes([FromQuery(Name= 查看详情

95-30-009-channel-总述

文章目录1.Netty的Channel概览2.继承结构3.总述4.Channel配置参数4.1通用参数4.2SocketChannel4.3ServerSocketChannel4.4DatagramChannel参数5.Channel接口5.1状态查询5.2getter方法5.3异步结果生成5.4I/O事件处理5.5Unsafe 查看详情

怎样破解论坛交货币下载附件

参考技术A使用52破解工具破解论坛交货币下载附件。根据查询相关公开信息显示,52破解,在这个论坛上下载东西都需要大量的金币,这时52破解论坛挂机工具2015就出现了。 查看详情

abap交货单屏幕增强增加自建表(代码片段)

需求描述:实际业务中,交货单行项目存在多个传票号,所以需要在交货单行项目自定义屏幕上增加一个长文本框(或者表),如下图所示实现过程:1. 屏幕添加控件①在自定义屏幕添加自定义控件②... 查看详情

abap交货单屏幕增强增加自建表(代码片段)

需求描述:实际业务中,交货单行项目存在多个传票号,所以需要在交货单行项目自定义屏幕上增加一个长文本框(或者表),如下图所示实现过程:1. 屏幕添加控件①在自定义屏幕添加自定义控件②... 查看详情

abap交货单屏幕增强增加自建表(代码片段)

需求描述:实际业务中,交货单行项目存在多个传票号,所以需要在交货单行项目自定义屏幕上增加一个长文本框(或者表),如下图所示实现过程:1. 屏幕添加控件①在自定义屏幕添加自定义控件②... 查看详情

OBIEE 合并两个查询(连接)

】OBIEE合并两个查询(连接)【英文标题】:OBIEEMergetwoqueries(join)【发布时间】:2016-04-2519:35:11【问题描述】:我需要帮助。我是obiee的新手(最近从业务对象转移并在obiee中重新创建所有报告)。这是一个我需要帮助的例子。我... 查看详情

关于后台查询sap物料凭证是用啥事物代码操作的如下图?

...住:每一次的交货和收货都会产生物料凭证,而且,一个交货单会对用一个物料凭证,一个收货单也会产生一个物料凭参考技术A如果你要想大家帮助你的话,就要把图完整清晰地画出来,不过你这个太专业了,一般人是回答不... 查看详情

sap冲销销售订单后如何生成新的销售单

...号,输入事务码VA03进入后,通过凭证流查询到该单据的后续交货单号。并记录下该订单前端引用的预订单号。2.通过事务码VL09冲销交货单,VL02N删除交货单,VA02删除销售订单。3.创建新的销售订单,填写初始屏幕相关字段,及订单表头客... 查看详情

无法创建外向交货单

业务场景:系统增强,如果没有库存不允许创建外向交货单。可用数量为0,无法生成交货单。可考虑把销售订单计划行确认的数量改为0将库存释放出来 查看详情

交货单开票

REPORTZLYTEST001."BAPI_BILLINGDOC_CREATEMULTIPLE交货单开票DATA:GT_VBRKTYPETABLEOFBAPIVBRK,GW_VBRKLIKELINEOFGT_VBRK,GT_RETURNTYPETABLEOFBAPIRET1,GW_RETURNLIKELINEOFGT_RETURN,GT_SUCCESSTYPETABLEOFBAPIVBRKSUC 查看详情

获取最近 3 个月数据的 SQL 查询

】获取最近3个月数据的SQL查询【英文标题】:SQLqueryforgettingdataforlast3months【发布时间】:2014-03-2115:41:30【问题描述】:如何获取今天的日期并将其转换为01/mm/yyyy格式并从表中获取3个月前交货月份的数据?表中已包含交货月份为... 查看详情

sapmm公司间sto里交货单pgi之后自动触发内向交货单功能的实现

SAPMM公司间STO里交货单PGI之后自动触发内向交货单功能的实现  笔者所在的项目上的公司间STO的流程里,发货公司在做PGI之后系统自动触发收货公司的内向交货单。这个功能是通过交货单的Output来实现的。 如下单据为... 查看详情

交货单过账后过账日期

交货单过账后过账日期等于实际发货日期,如实际发货日期填写为5.30但是当前日期为5.27那么过账后的凭证显示过账日期为5.30但是文件操作日期是当前日期  查看详情

交货单批次拆分

外向交货单批次拆分目录外向交货单批次拆分一、前台操作二、BAPI处理三、库表字段四、备注: 一、前台操作VL02N选中行,点批次拆分 填写批次后,回车,会将项目号和库位自动带出(视具体配置而定) 点保存后,... 查看详情

sap公司间sto场景中外向交货单过账后自动触发内向交货单功能的实现

SAP公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现  如下STO,是从公司代码SZSP转入CSAS, 如下图示的内向交货单180018660。该内向交货单是在外向交货单80016325发货过账的时候自动触发的, 如何实... 查看详情

abapewmprdo交货单过账(代码片段)

/N/SCWM/PRDO交货单过账FUNCTIONzewm_post_pdo.*"----------------------------------------------------------------------*"*"本地接口:*"IMPORTING*"VALUE(IV_LGNUM)TYPE/SCWM/LGNUM*"VALU 查看详情