调用外部接口实例

*&---------------------------------------------------------------------*
*& Report ZTMSD001
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTMSD001.

INCLUDE ZTMSD001_T.

INCLUDE ZTMSD001_F.
*&---------------------------------------------------------------------*
*& 包含               ZTMSD001_T
*&---------------------------------------------------------------------*
TABLES:LIKP.
DATA G_SUM TYPE P.

*SAP交货单结构_抬头
TYPES:BEGIN OF TY_HEAD,
        VBELN         TYPE LIKP-VBELN,      "交货单号
        LFART         TYPE LIKP-LFART,      "交货类型
        ZDDLX         TYPE TVLKT-VTEXT,     "交货类型描述
        ZZCARTYPE     TYPE LIKP-ZZCARTYPE,  "车型
        ZCX           TYPE DD07T-DDTEXT,    "车型描述
        WADAT         TYPE LIKP-WADAT,      "计划发货日期
        ZSP           TYPE VBPA-LIFNR,      "承运商
        ZCYS          TYPE LFA1-NAME1,      "承运商名称
        ZZDELIVERY    TYPE LIKP-ZZDELIVERY, "提货方式
        ZTHFS         TYPE DD07T-DDTEXT,    "提货方式描述
        ZZRECIPIENT   TYPE LIKP-ZZRECIPIENT, "运费承担方式
        ZYFCD         TYPE DD07T-DDTEXT,    "运费承担方式描述
        ZAG           TYPE VBPA-KUNNR,      "客户编码
        ZKH           TYPE KNA1-NAME1,      "客户名称
        VSTEL         TYPE LIKP-VSTEL,      "装运点
        VTEXT         TYPE TVSTT-VTEXT,     "装运点描述
        ZWE           TYPE VBPA-KUNNR,      "送达方编码
        ZSDF          TYPE ADRC-NAME1,      "送达方名称
        CITY_CODE     TYPE ADRC-CITY_CODE,  "城市代码
        CITY1         TYPE ADRC-CITY1,      "城市描述
        STREET        TYPE ADRC-STREET,     "详细地址
        REMARK        TYPE ADRCT-REMARK,    "联系人
        ZZE           TYPE VBPA-KUNNR,      "制单人编号
        ZZD           TYPE KNA1-NAME1,      "制单人名称
        ZZB           TYPE VBPA-KUNNR,      "开拓业务员编号
        ZYW           TYPE KNA1-NAME1,      "开拓业务员名称
        ZTXT_H        TYPE STRING,          "抬头长文本
        BU_SORT1      TYPE BU_SORT1,        "客服业务员工号
        ZKF           TYPE KNA1-NAME1,      "客服业务员名称
        ZKFTEL        TYPE AD_MBNMBR1,      "客服业务员电话
        ERDAT         TYPE LIKP-ERDAT,      "交货单创建日期
        ERZET         TYPE ERZET, "交货单创建时间
        WADAT_IST     TYPE WADAT_IST, "交货单过账日期
        SPE_WAUHR_IST TYPE WAUHR, "交货单过账时间
        VBELN_NEW     TYPE VBELN, "VORNU, "订单来历
        ZZVEHICLE     TYPE ZZVEHICLE, "整车时效
        ZZLTL         TYPE ZZLTL, "零担时效
        ZZDHDAT       TYPE LIKP-ZZDHDAT, "计划到货时间
      END OF TY_HEAD.
DATA GT_TAB_H TYPE TABLE OF TY_HEAD.

*SAP交货单结构_行项
TYPES:BEGIN OF TY_ITEM,
        VBELN         TYPE LIPS-VBELN,
        POSNR         TYPE LIPS-POSNR,  "DN行项
        PSTYV         TYPE LIPS-PSTYV,  "行项类别
        ZHXLB         TYPE BEZEI20,     "行项类别描述
        ARKTX         TYPE LIPS-ARKTX,  "物料描述
        ZZDYMC        TYPE MARA-ZZDYMC, "打印名称
        NORMT         TYPE MARA-NORMT, "型号
        MATNR         TYPE LIPS-MATNR,  "物料编码
        MATKL         TYPE MARA-MATKL,  "物料组编码
        WGBEZ         TYPE T023T-WGBEZ, "物料组描述
        LFIMG         TYPE LIPS-LFIMG,  "交货数量
        lgmng TYPE lips-lgmng,"基础单位数量
        GROES         TYPE MARA-GROES,  "规格
        MEINS         TYPE LIPS-MEINS,  "基本单位
        FRTME         TYPE MARC-FRTME,  "辅单位
        VRKME         TYPE LIPS-VRKME,  "销售单位
        BRGEW         TYPE LIPS-BRGEW,  "重量
        WERKS          TYPE LIPS-WERKS,  "工厂编码
        NAME1         TYPE T001W-NAME1, "工厂描述
        LGORT          TYPE LIPS-LGORT,  "库存地点编码
        LGOBE         TYPE T001L-LGOBE, "库存地点描述
        VGBEL         TYPE LIPS-VGBEL,  "参照销售订单
        VGPOS         TYPE LIPS-VGPOS,  "参照销售订单行项
        UECHA         TYPE LIPS-UECHA,  "上层项
        ZZZLZX        TYPE VBAK-ZZZLZX, "战略中心
        ZZVKBUR       TYPE VBAK-ZZVKBUR, "战略办事处
        BZIRK         TYPE VBKD-BZIRK,  "销售大区编号
        BZTXT         TYPE T171T-BZTXT, "销售大区描述
        VKBUR         TYPE VBAK-VKBUR,  "销售办事处编码
        BEZEI         TYPE TVKBT-BEZEI, "销售办事处描述
        BUKRS         TYPE T001K-BUKRS, "工厂对应公司
        BUTXT         TYPE BUTXT, "公司名称
        VKORG         TYPE VKORG, "销售组织代码
        VTEXT         TYPE VTEXT, "销售组织描述
        ZZPROJECTNO   TYPE ZZPROJECTNO,    "项目号
        ZZPROJECTNAME TYPE ZZPROJECTNAME,  "项目名称
        ZZQY          TYPE ZE_ZZQY, "区域
        ZZAUFNR       TYPE AUFNR, "深圳合同号
        VKGRP         TYPE VKGRP, "销售组
        VKGRP_T       TYPE BEZEI20, "销售组描述
        BWKEY         TYPE BWKEY, "创建PO用到的工厂
        LTEXT         TYPE LTEXT, "深圳描述
        ZXMSD         TYPE ZE_TAXPOINT,    "项目税点

        ZTXT_I        TYPE STRING, "行项长文本
        VTWEG         TYPE VTWEG, "渠道
        DISPO         TYPE DISPO, "MRP控制员
        DSNAM         TYPE DSNAM, "MRP控制员姓名
      END OF TY_ITEM.
DATA GT_TAB_I TYPE TABLE OF TY_ITEM.


*TMS交货单结构
TYPES:BEGIN OF TY_TMS_I,
        DN_NO           TYPE STRING,   "DN单号
        LINE            TYPE STRING,   "行号
        SKUNO           TYPE STRING,   "物料名称
        SKUDESC         TYPE STRING,   "打印名称
        PRINTDESC       TYPE STRING,   "物料编码
        SKUGROUPNO      TYPE STRING,   "物料组编码
        SKUGROUP        TYPE STRING,   "物料组描述
        QTY             TYPE STRING,   "待发货数量
        ASQTY           TYPE STRING,   "辅数量
        SPEC            TYPE STRING,   "规格
        UNIT            TYPE STRING,   "计量单位
        ASUNIT          TYPE STRING,   "辅单位
        WEIGHT          TYPE STRING,   "待发货重量
        REMARK          TYPE STRING,   "交货单行项目备注
        FACTORYNO       TYPE STRING,   "工厂编码
        FACTORYNAME     TYPE STRING,   "工厂描述
        WAREHOUSENO     TYPE STRING,   "库存地点编码
        WAREHOUSENAME   TYPE STRING,   "库存地点描述
        SALESNO         TYPE STRING,   "销售订单单号
        SALESLINENO     TYPE STRING,   "销售订单行项
        STRATEGYCENTER  TYPE STRING,   "战略中心
        STRATEGYOFFICE  TYPE STRING,   "战略办事处
        SALESAREANO     TYPE STRING,   "销售大区编号
        SALESAREADESC   TYPE STRING,   "销售大区描述
        SALESOFFICENO   TYPE STRING,   "销售办事处编码
        SALESOFFICEDESC TYPE STRING,   "销售办事处描述
        TAXCODE         TYPE STRING,   "税码
        PROJECTNO       TYPE STRING,   "项目号
        PROJECTDESC     TYPE STRING,   "项目描述
        SZPROJNO        TYPE STRING,   "深圳工程所属项目
        SZPROJDESC      TYPE STRING,   "深圳工程所属项目编码
        TAXPOINT        TYPE STRING,   "项目税点
        COMPANYNO       TYPE STRING,   "公司代码
        COMPANYNAME     TYPE STRING,   "公司名称
        SALEGROUPNO     TYPE STRING,   "销售组织编码
        SALEGROUPNAME   TYPE STRING,   "销售组织描述
        DEPTNO          TYPE STRING,   "销售组
        DEPTNAME        TYPE STRING,   "销售组描述
        AREA            TYPE STRING,   "区域
        ROWTYPE         TYPE STRING,   "行项类别
        ROWDESC         TYPE STRING,   "行项类别描述
        SKUGROUPTYPE    TYPE STRING,   "MRP控制员
        SKUGROUPDESC    TYPE STRING,   "MRP控制员姓名
      END OF TY_TMS_I.
TYPES: T_TMS_I TYPE TABLE OF TY_TMS_I WITH DEFAULT KEY.

TYPES:BEGIN OF TY_TMS,
        DN_NO                 TYPE STRING,   "DN单号
        ORDERTYPE             TYPE STRING,   "订单类型
        ORDERTYPEDESC         TYPE STRING,   "订单类型描述
        CARTYPENO             TYPE STRING,   "车型编码
        CARTYPEDESC           TYPE STRING,   "车型描述
        PLANDELIVERYDATE      TYPE STRING,   "计划发货日期
        FORWARDERNO           TYPE STRING,   "承运商编码
        FORWARDERDESC         TYPE STRING,   "承运商名称
        SHIPPINGTYPENO        TYPE STRING,   "提货方式
        SHIPPINGTYPEDESC      TYPE STRING,   "提货描述
        FREIGHTPAYTYPENO      TYPE STRING,   "运输承担方式
        FREIGHTPAYTYPE        TYPE STRING,   "运费承担方式
        CUSTOMERNO            TYPE STRING,   "客户编码
        CUSTOMERNAME          TYPE STRING,   "客户名称
        PROJECTDESC           TYPE STRING,   "项目描述
        SHIPPINGPOINTNO       TYPE STRING,   "装运点编码
        SHIPPINGPOINTDESC     TYPE STRING,   "装运点描述
        CUSTOMERADDRESSNO     TYPE STRING,   "收货编码
        CUSTOMERADDRESSDESC   TYPE STRING,   "收货名称
        TARGETNO              TYPE STRING,   "城市代码
        TARGETDESC            TYPE STRING,   "收货省市区
        ARRIVALADDRESS        TYPE STRING,   "收货具体地址
        DELIVERYPHONENUM      TYPE STRING,   "收货人及联系电话
        NOSEEDGOODSDESC       TYPE STRING,   "未发货原因
        ZDRNO                 TYPE STRING,   "制单人
        ZDRNAME               TYPE STRING,   "制单人名称
        HEADREMARK            TYPE STRING,   "交货单抬头备注
        CATCHNOTE             TYPE STRING,   "异常记录
        DNCREATETIME          TYPE STRING,   "交货单创建日期
        SALESMANNO            TYPE STRING,   "开拓业务员编号
        SALESMANNAME          TYPE STRING,   "开拓业务员姓名
        PURCHASENO            TYPE STRING,   "采购订单号
        PURCHASENAME          TYPE STRING,   "采购订单公司名称
        TAXPOINT              TYPE STRING,   "项目税点
        ISSENDDCCODE          TYPE STRING,   "是否短信通知
        YWYNO                 TYPE STRING,   "客服业务员工号
        YWYNAME               TYPE STRING,   "客服业务员姓名
        POSTINGDATE           TYPE STRING,   "出库单过账日期
        POSTINGTING           TYPE STRING,   "出库单过账时间
        PROOFOFGDATE          TYPE STRING,   "出库单创建日期
        PROOFOFTING           TYPE STRING,   "出库创建时间
        PARENTDNNO            TYPE STRING,   "先前订单
        FREIGHTTIMELIMITFORFL TYPE STRING,   "零担时效
        FREIGHTTIMELIMITFORZC TYPE STRING,   "整车时效
        REQUIREDDELIVERYDATE  TYPE STRING,   "计划到货时间
        ORDERDETAILS          TYPE T_TMS_I,  "行项结构
      END OF TY_TMS.

DATA:GT_TMS  TYPE TABLE OF TY_TMS,
     GS_TMS  TYPE TY_TMS,
     GT_ITEM TYPE TABLE OF TY_TMS_I,
     GS_ITEM TYPE TY_TMS_I.

DATA:GT_ZTMST002   TYPE TABLE OF ZTMST002,
     GS_ZTMST002   TYPE ZTMST002,
     GS_LINE(100)  TYPE C,
     GS_LINE2(100) TYPE C.

TYPES:BEGIN OF TY_DN,
        DN_NO       TYPE STRING,   "DN单号
        POSTINGDATE TYPE STRING,   "过账日期
      END OF TY_DN.
DATA:GT_DN TYPE TABLE OF TY_DN,
     GS_DN TYPE TY_DN.

DATA:LV_TDNAME TYPE  TDOBNAME,
     LT_TLINE  TYPE TABLE OF TLINE,
     WA_TLINE  TYPE TLINE.
types:BEGIN OF ty_vbeln,
  vbeln TYPE vbeln,
  END OF ty_vbeln.
  DATA:tab_vbeln_TMS TYPE TABLE OF ty_vbeln WITH HEADER LINE,
        ZDATE TYPE D.
  "----------------------------------------------
  "修改日期29.05.2021 13:45:12
  "修改用户KS001
  "------------------------------ 增加企业微信提醒
   DATA: tab_mess TYPE TABLE OF zswx WITH HEADER LINE,
         tab_007 TYPE TABLE OF ZTMST007 WITH HEADER LINE.

SELECT-OPTIONS:S_VBELN FOR LIKP-VBELN.
PARAMETERS : P1 RADIOBUTTON GROUP D1 DEFAULT 'X' USER-COMMAND SINGLECLICK,
             P2 RADIOBUTTON GROUP D1,
             S1 RADIOBUTTON GROUP D2 DEFAULT 'X',
             S2 RADIOBUTTON GROUP D2.
*&---------------------------------------------------------------------*
*& 包含               ZTMSD001_F
*&---------------------------------------------------------------------*
***********************************************************************
*调用说明:利用时戳+用户名+程序名进行时间开始和结束记录
DATA GV_ZKET TYPE TZNTSTMPS.
CALL FUNCTION 'CIF_GEN4_CONVERT_DATETIME'
  EXPORTING
    IV_DATE                = SY-DATUM
    IV_TIME                = SY-UZEIT
*   IV_TIMEZONE            = SY-ZONLO
  IMPORTING
    EV_TIMESTAMP           = GV_ZKET
  EXCEPTIONS
    TIME_CONVERSION_FAILED = 1
    OTHERS                 = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

***********************************************************************
*开始时间
PERFORM RUN_LOG.
***********************************************************************
*DATA LS_CHAR TYPE C.
*LS_CHAR = CL_ABAP_CHAR_UTILITIES=>CR_LF.  " 获取换行符

"----------------------------19.04.2021 17:19:48 修改者 chenyongjian 通过检查程序推送需要重刷过账数量的单据号
IMPORT B = TAB_VBELN_TMS FROM MEMORY ID 'VBELN_TMS'.

FREE MEMORY ID 'VBELN_TMS'.
IMPORT C = ZDATE FROM MEMORY ID 'REDATE'.
FREE MEMORY ID 'REDATE'.
IF TAB_VBELN_TMS[] IS NOT INITIAL.
  CLEAR P1.
  P2 = 'X'.
  LOOP AT TAB_VBELN_TMS.
    S_VBELN-LOW = TAB_VBELN_TMS-VBELN.
    S_VBELN-SIGN = 'I'.
    S_VBELN-OPTION = 'EQ'.
    APPEND S_VBELN.
  ENDLOOP.
ENDIF.


IF S1 EQ 'X'.
  GS_LINE = 'LIKP~WBSTK NE '''  && 'C'''.
  GS_LINE2 = 'LIPS~WBSTA NE ''' && 'C'''.
ENDIF.


CASE ABAP_TRUE.
  WHEN P1.
    IF S_VBELN[] IS INITIAL.

*DN抬头
      SELECT
            LIKP~VBELN,           "交货单号
            LIKP~LFART,           "交货类型
            TVLKT~VTEXT AS ZDDLX, "交货类型描述
            LIKP~ZZCARTYPE,       "车型
            A~DDTEXT AS ZCX,      "车型描述
            LIKP~WADAT,           "计划发货日期
*            VBPA_SP~LIFNR AS ZSP, "承运商
        ZTMST005~KUNNR AS ZSP,"承运商
            LFA1_SP~NAME1 AS ZCYS,"承运商名称
            LIKP~ZZDELIVERY,      "提货方式
            B~DDTEXT AS ZTHFS,    "提货方式描述
            LIKP~ZZRECIPIENT,     "运费承担方式
            C~DDTEXT AS ZYFCD,    "运费承担方式描述
            VBPA_AG~KUNNR AS ZAG, "客户编码
            KNA1_AG~NAME1 AS ZKH, "客户名称
            LIKP~VSTEL,           "装运点
            TVSTT~VTEXT,          "装运点描述
            VBPA_WE~KUNNR AS ZWE, "送达方编码
            ADRC~NAME1 AS ZSDF,   "送达方名称
*          ADRC~CITY_CODE,       "城市代码
            ADRC~CITY1,           "城市描述
            ADRC~STREET,          "详细地址
            ADRCT~REMARK,         "联系人
            CASE LIKP~LFART
            WHEN 'NLCC' THEN LIKP~ERNAM
            WHEN 'ZNLC' THEN LIKP~ERNAM
            ELSE VBPA_ZE~KUNNR END AS ZZE,
            CASE LIKP~LFART
            WHEN 'NLCC' THEN ADRP~NAME_FIRST
            WHEN 'ZNLC' THEN ADRP~NAME_FIRST
            ELSE KNA1_ZE~NAME1 END AS ZZD,
*            VBPA_ZE~KUNNR AS ZZE, "制单人编号
*            KNA1_ZE~NAME1 AS ZZD, "制单人名称
            VBPA_ZB~KUNNR AS ZZB, "开拓业务员编号
            KNA1_ZB~NAME1 AS ZYW, "开拓业务员名称
*            STXL~CLUSTR,
*            STXL~CLUSTD,
            LIKP~ERDAT,           "交货单创建日期
            BUT000~BU_SORT1,      "客服业务员工号
            KNA1_ZK~NAME1 AS ZKF, "客服业务员名称
            ZSDT_SONGHUOREN~ZZTELF1 AS ZKFTEL,"客服业务员电话
            LEDSPD_FLOW~VBELN_NEW,       "先前订单

        CASE ADRC~CITY_CODE
          WHEN ' ' THEN ADRCITYT~CITY_CODE
          ELSE
            ADRC~CITY_CODE END AS CITY_CODE, "城市代码
            LIKP~ZZDHDAT "计划到货时间
        FROM LIKP

        INNER JOIN ZTMST003 ON ZTMST003~LFART EQ LIKP~LFART

        JOIN TVLKT ON TVLKT~LFART EQ LIKP~LFART
                  AND TVLKT~SPRAS EQ @SY-LANGU

LEFT JOIN ZTMST005 ON LIKP~VBELN = ZTMST005~VBELN
*    LEFT JOIN VBPA AS VBPA_SP
*              ON VBPA_SP~VBELN EQ LIKP~VBELN
*             AND VBPA_SP~PARVW EQ 'SP'
    LEFT JOIN LFA1 AS LFA1_SP
              ON LFA1_SP~LIFNR EQ ZTMST005~KUNNR

        LEFT JOIN DD07T AS A
               ON A~DOMVALUE_L EQ LIKP~ZZCARTYPE
              AND A~DOMNAME EQ 'ZZCARTYPE'
        LEFT JOIN DD07T AS B
               ON B~DOMVALUE_L EQ LIKP~ZZDELIVERY
              AND B~DOMNAME EQ 'ZZDELIVERY'
        LEFT JOIN DD07T AS C
               ON C~DOMVALUE_L EQ LIKP~ZZRECIPIENT
              AND C~DOMNAME EQ 'ZZRECIPIENT'

        LEFT JOIN VBPA AS VBPA_AG
               ON VBPA_AG~VBELN EQ LIKP~VBELN
              AND VBPA_AG~PARVW EQ 'AG'
        LEFT JOIN KNA1 AS KNA1_AG
               ON KNA1_AG~KUNNR EQ VBPA_AG~KUNNR

        LEFT JOIN TVSTT ON TVSTT~VSTEL EQ LIKP~VSTEL
              AND TVSTT~SPRAS EQ @SY-LANGU

        LEFT JOIN VBPA AS VBPA_WE
               ON VBPA_WE~VBELN EQ LIKP~VBELN
              AND VBPA_WE~PARVW EQ 'WE'
        LEFT JOIN ADRC
               ON ADRC~ADDRNUMBER EQ VBPA_WE~ADRNR
        LEFT JOIN ADRCT
               ON ADRCT~ADDRNUMBER EQ VBPA_WE~ADRNR
        LEFT JOIN ADRCITYT
               ON ADRCITYT~CITY_NAME EQ ADRC~CITY1
               AND ADRCITYT~COUNTRY EQ 'CN'
               AND ADRCITYT~LANGU EQ @SY-LANGU

        LEFT JOIN VBPA AS VBPA_ZE
               ON VBPA_ZE~VBELN EQ LIKP~VBELN
              AND VBPA_ZE~PARVW EQ 'ZE'
        LEFT JOIN KNA1 AS KNA1_ZE
               ON KNA1_ZE~KUNNR EQ VBPA_ZE~KUNNR

        LEFT JOIN VBPA AS VBPA_ZB
               ON VBPA_ZB~VBELN EQ LIKP~VBELN
              AND VBPA_ZB~PARVW EQ 'ZB'
        LEFT JOIN KNA1 AS KNA1_ZB
               ON KNA1_ZB~KUNNR EQ VBPA_ZB~KUNNR

        LEFT JOIN VBPA AS VBPA_ZK
               ON VBPA_ZK~VBELN EQ LIKP~VBELN
              AND VBPA_ZK~PARVW EQ 'ZK'
        LEFT JOIN KNA1 AS KNA1_ZK
               ON KNA1_ZK~KUNNR EQ VBPA_ZK~KUNNR
        LEFT JOIN BUT000 ON BUT000~PARTNER EQ VBPA_ZK~KUNNR
        LEFT JOIN ZSDT_SONGHUOREN ON ZSDT_SONGHUOREN~PARTNER EQ VBPA_ZK~KUNNR

        LEFT JOIN LEDSPD_FLOW
               ON LEDSPD_FLOW~VBELN EQ LIKP~VBELN
              AND LEDSPD_FLOW~POSNR IS INITIAL

        LEFT JOIN USR21 ON USR21~BNAME EQ LIKP~ERNAM
        LEFT JOIN ADRP ON ADRP~PERSNUMBER EQ USR21~PERSNUMBER
      WHERE
      "----------------------------19.04.2021 15:01:38 修改者 chenyongjian
      (GS_LINE) "LIKP~WBSTK NE 'C'
      ORDER BY LIKP~VBELN
       INTO CORRESPONDING FIELDS OF TABLE @GT_TAB_H.

    ELSE.
      "----------------------------20.02.2021 08:43:02 修改者 chenyongjian 手工填入运单号不限制单据类型
      SELECT
        LIKP~VBELN,           "交货单号
        LIKP~LFART,           "交货类型
        TVLKT~VTEXT AS ZDDLX, "交货类型描述
        LIKP~ZZCARTYPE,       "车型
        A~DDTEXT AS ZCX,      "车型描述
        LIKP~WADAT,           "计划发货日期
*        VBPA_SP~LIFNR AS ZSP, "承运商
        ZTMST005~KUNNR AS ZSP,"承运商
        LFA1_SP~NAME1 AS ZCYS,"承运商名称
        LIKP~ZZDELIVERY,      "提货方式
        B~DDTEXT AS ZTHFS,    "提货方式描述
        LIKP~ZZRECIPIENT,     "运费承担方式
        C~DDTEXT AS ZYFCD,    "运费承担方式描述
        VBPA_AG~KUNNR AS ZAG, "客户编码
        KNA1_AG~NAME1 AS ZKH, "客户名称
        LIKP~VSTEL,           "装运点
        TVSTT~VTEXT,          "装运点描述
        VBPA_WE~KUNNR AS ZWE, "送达方编码
        ADRC~NAME1 AS ZSDF,   "送达方名称
*          ADRC~CITY_CODE,       "城市代码
        ADRC~CITY1,           "城市描述
        ADRC~STREET,          "详细地址
        ADRCT~REMARK,         "联系人
*        VBPA_ZE~KUNNR AS ZZE, "制单人编号
*        KNA1_ZE~NAME1 AS ZZD, "制单人名称
         CASE LIKP~LFART
         WHEN 'NLCC' THEN LIKP~ERNAM
         WHEN 'ZNLC' THEN LIKP~ERNAM
         ELSE VBPA_ZE~KUNNR END AS ZZE,
         CASE LIKP~LFART
         WHEN 'NLCC' THEN ADRP~NAME_FIRST
         WHEN 'ZNLC' THEN ADRP~NAME_FIRST
         ELSE KNA1_ZE~NAME1 END AS ZZD,
        VBPA_ZB~KUNNR AS ZZB, "开拓业务员编号
        KNA1_ZB~NAME1 AS ZYW, "开拓业务员名称
*        STXL~CLUSTR,
*        STXL~CLUSTD,
        LIKP~ERDAT,           "交货单创建日期
        BUT000~BU_SORT1,      "客服业务员工号
        KNA1_ZK~NAME1 AS ZKF, "客服业务员名称
        ZSDT_SONGHUOREN~ZZTELF1 AS ZKFTEL,"客服业务员电话
        LEDSPD_FLOW~VBELN_NEW,       "先前订单
    CASE ADRC~CITY_CODE
      WHEN ' ' THEN ADRCITYT~CITY_CODE
      ELSE
        ADRC~CITY_CODE END AS CITY_CODE, "城市代码
        LIKP~ZZDHDAT "计划到货时间
    FROM LIKP

    JOIN TVLKT ON TVLKT~LFART EQ LIKP~LFART
              AND TVLKT~SPRAS EQ @SY-LANGU
LEFT JOIN ZTMST005 ON LIKP~VBELN = ZTMST005~VBELN
*    LEFT JOIN VBPA AS VBPA_SP
*              ON VBPA_SP~VBELN EQ LIKP~VBELN
*             AND VBPA_SP~PARVW EQ 'SP'
    LEFT JOIN LFA1 AS LFA1_SP
              ON LFA1_SP~LIFNR EQ ZTMST005~KUNNR

    LEFT JOIN DD07T AS A
           ON A~DOMVALUE_L EQ LIKP~ZZCARTYPE
          AND A~DOMNAME EQ 'ZZCARTYPE'
    LEFT JOIN DD07T AS B
           ON B~DOMVALUE_L EQ LIKP~ZZDELIVERY
          AND B~DOMNAME EQ 'ZZDELIVERY'
    LEFT JOIN DD07T AS C
           ON C~DOMVALUE_L EQ LIKP~ZZRECIPIENT
          AND C~DOMNAME EQ 'ZZRECIPIENT'

    LEFT JOIN VBPA AS VBPA_AG
           ON VBPA_AG~VBELN EQ LIKP~VBELN
          AND VBPA_AG~PARVW EQ 'AG'
    LEFT JOIN KNA1 AS KNA1_AG
           ON KNA1_AG~KUNNR EQ VBPA_AG~KUNNR

    LEFT JOIN TVSTT ON TVSTT~VSTEL EQ LIKP~VSTEL
          AND TVSTT~SPRAS EQ @SY-LANGU

    LEFT JOIN VBPA AS VBPA_WE
           ON VBPA_WE~VBELN EQ LIKP~VBELN
          AND VBPA_WE~PARVW EQ 'WE'
    LEFT JOIN ADRC
           ON ADRC~ADDRNUMBER EQ VBPA_WE~ADRNR
    LEFT JOIN ADRCT
           ON ADRCT~ADDRNUMBER EQ VBPA_WE~ADRNR
    LEFT JOIN ADRCITYT
           ON ADRCITYT~CITY_NAME EQ ADRC~CITY1
           AND ADRCITYT~COUNTRY EQ 'CN'
           AND ADRCITYT~LANGU EQ @SY-LANGU

    LEFT JOIN VBPA AS VBPA_ZE
           ON VBPA_ZE~VBELN EQ LIKP~VBELN
          AND VBPA_ZE~PARVW EQ 'ZE'
    LEFT JOIN KNA1 AS KNA1_ZE
           ON KNA1_ZE~KUNNR EQ VBPA_ZE~KUNNR

    LEFT JOIN VBPA AS VBPA_ZB
           ON VBPA_ZB~VBELN EQ LIKP~VBELN
          AND VBPA_ZB~PARVW EQ 'ZB'
    LEFT JOIN KNA1 AS KNA1_ZB
           ON KNA1_ZB~KUNNR EQ VBPA_ZB~KUNNR

    LEFT JOIN VBPA AS VBPA_ZK
           ON VBPA_ZK~VBELN EQ LIKP~VBELN
          AND VBPA_ZK~PARVW EQ 'ZK'
    LEFT JOIN KNA1 AS KNA1_ZK
           ON KNA1_ZK~KUNNR EQ VBPA_ZK~KUNNR
    LEFT JOIN BUT000 ON BUT000~PARTNER EQ VBPA_ZK~KUNNR
    LEFT JOIN ZSDT_SONGHUOREN ON ZSDT_SONGHUOREN~PARTNER EQ VBPA_ZK~KUNNR

    LEFT JOIN LEDSPD_FLOW
           ON LEDSPD_FLOW~VBELN EQ LIKP~VBELN
          AND LEDSPD_FLOW~POSNR IS INITIAL

        LEFT JOIN USR21 ON USR21~BNAME EQ LIKP~ERNAM
        LEFT JOIN ADRP ON ADRP~PERSNUMBER EQ USR21~PERSNUMBER
  WHERE
*    likp~ROUTE ne ''
*    AND
      "----------------------------19.04.2021 15:01:38 修改者 chenyongjian
      (GS_LINE) "LIKP~WBSTK NE 'C'
    AND
    LIKP~VBELN IN @S_VBELN
  ORDER BY LIKP~VBELN
   INTO CORRESPONDING FIELDS OF TABLE @GT_TAB_H.

    ENDIF.
    IF SY-SUBRC NE 0.
      WRITE:/ '未找到符合推送规则的未清订单!'.
      STOP.
    ENDIF.
    DELETE ADJACENT DUPLICATES FROM GT_TAB_H COMPARING VBELN.
    PERFORM SET_GT_TAB_H.

*DN行项 未过账订单的推送如输单号的只要推送记录无过账推送的就重新推送
    DATA LV_WHERE TYPE STRING.
    IF S_VBELN[] IS INITIAL.
      LV_WHERE = 'NOT EXISTS ( SELECT * FROM ZTMST002 WHERE VBELN EQ LIPS~VBELN AND POSNR EQ LIPS~POSNR )'.
*    ELSE.
*      LV_WHERE = 'NOT EXISTS ( SELECT * FROM ZTMST002 WHERE VBELN EQ LIPS~VBELN AND POSNR EQ LIPS~POSNR AND ZZZTTSRQ NE '''&&'00000000 '''&&')'.
    ENDIF.


    SELECT
          LIPS~VBELN,
          LIPS~POSNR,   "DN行项
          LIPS~PSTYV,   "行项类别
          TVAPT~VTEXT AS ZHXLB,  "行项类别描述
          LIPS~ARKTX,   "物料描述
          MARA~ZZDYMC,  "打印名称
          MARA~NORMT,   "产品型号
          LIPS~MATNR,   "物料编码
          MARA~MATKL,   "物料组编码
          T023T~WGBEZ,  "物料组描述
          LIPS~LFIMG,   "交货数量
      LIPS~LGMNG,"交货基本数量
          MARA~GROES,   "规格
          LIPS~MEINS,   "基本单位
          MARC~FRTME,   "辅单位
          LIPS~VRKME,   "销售单位
          MARC~ZZBRGEW AS BRGEW,   "待发货重量取工厂重量进行计算
          LIPS~WERKS,   "发货工厂编码
          T001W~NAME1,  "发货工厂描述
          LIPS~LGORT,   "库存地点编码
          T001L~LGOBE,  "库存地点描述
          LIPS~VGBEL,  "参照销售订单
          LIPS~VGPOS,  "参照销售订单行项
          LIPS~UECHA,  "上层项
          VBAK~ZZZLZX, "战略中心
          VBAK~ZZVKBUR, "战略办事处
          VBKD~BZIRK,  "销售大区编号
          T171T~BZTXT, "销售大区描述
          VBAK~VKBUR, "销售办事处编码
          TVKBT~BEZEI, "销售办事处描述
*          VBAK~ZZZLZX,  "战略中心
      "----------------------------------------------
      "修改日期14.06.2021 12:14:56
      "修改用户KS001
      "------------------------------  临时恢复
          "VBAK~ZZVKBUR, "战略办事处
          "VBAK~ZZQY, "区域
      "----------------------------------------------
      "修改日期14.06.2021 12:13:17
      "修改用户KS001
      "------------------------------  暂时屏蔽
          ZVKBUR_T~ZZVKBUR,        "战略办事处
          ZQY_T~ZZQY,              "区域
      "------------------------------------------end
          TVKO~BUKRS, "销售组织对应公司
*          VBAK~ZZPROJECTNO,    "项目号
*          VBAK~ZZPROJECTNAME,  "项目名称
          ZPROJECT~ZPROJECTNO AS ZZPROJECTNO,           "项目编号
          ZPROJECT~ZPROJECTNAME AS ZZPROJECTNAME,       "项目名称
          T001~BUTXT,  "公司名称
          VBAK~VKORG, "销售组织代码
          TVKOT~VTEXT, "销售组织描述
          LIKP~ZZAUFNR,
          VBAK~VKGRP, "销售组
          TVGRT~BEZEI AS VKGRP_T, "销售组描述
          T001K~BWKEY AS BWKEY ,"创建PO用到的工厂
          LIPS~VTWEG, "渠道
          T024D~DISPO,  "MRP控制者
          T024D~DSNAM   "MRP控制者姓名
      FROM LIPS
      JOIN ZTMST001 ON ZTMST001~WERKS EQ LIPS~WERKS
*                   AND ZTMST001~LGORT EQ LIPS~LGORT
      JOIN MAKT ON MAKT~MATNR EQ LIPS~MATNR
               AND MAKT~SPRAS EQ @SY-LANGU
      JOIN MARA ON MARA~MATNR EQ LIPS~MATNR
      JOIN T023T ON T023T~MATKL EQ MARA~MATKL
                AND T023T~SPRAS EQ @SY-LANGU

      LEFT JOIN T001W ON T001W~WERKS EQ LIPS~WERKS
      LEFT JOIN T001L ON T001L~WERKS EQ LIPS~WERKS
                     AND T001L~LGORT EQ LIPS~LGORT
      LEFT JOIN CEPCT ON CEPCT~PRCTR EQ LIPS~PRCTR
                     AND CEPCT~SPRAS EQ @SY-LANGU
                     AND CEPCT~KOKRS EQ '1000'

      LEFT JOIN VBAK ON VBAK~VBELN EQ LIPS~VGBEL
      LEFT JOIN T001 ON T001~BUKRS EQ VBAK~BUKRS_VF
      LEFT JOIN VBKD ON VBKD~VBELN EQ LIPS~VGBEL
                    AND VBKD~POSNR IS INITIAL
      LEFT JOIN T171T ON T171T~BZIRK EQ VBKD~BZIRK
      LEFT JOIN TVKBT ON TVKBT~VKBUR EQ VBAK~VKBUR
      LEFT JOIN TVKOT ON TVKOT~VKORG EQ VBAK~VKORG
                     AND TVKOT~SPRAS EQ @SY-LANGU
      JOIN LIKP ON LIKP~VBELN EQ LIPS~VBELN
      LEFT JOIN TVGRT ON TVGRT~VKGRP EQ VBAK~VKGRP AND TVGRT~SPRAS EQ @SY-LANGU
      LEFT JOIN TVKO ON TVKO~VKORG EQ LIKP~VKORG
      LEFT JOIN T001K ON T001K~BUKRS EQ TVKO~BUKRS
      LEFT JOIN MARC ON MARC~MATNR EQ LIPS~MATNR AND MARC~WERKS EQ LIPS~WERKS
      LEFT JOIN TVAPT ON TVAPT~PSTYV EQ LIPS~PSTYV AND TVAPT~SPRAS EQ @SY-LANGU
      LEFT JOIN T024D ON T024D~WERKS EQ MARC~WERKS AND T024D~DISPO EQ MARC~DISPO
      LEFT JOIN ZPROJECT ON ZPROJECT~ZPROJECTNO EQ VBAK~ZPROJECTNO
      LEFT JOIN ZQY_T ON ZQY_T~ZQY EQ VBAK~ZQY
      LEFT JOIN ZVKBUR_T ON ZVKBUR_T~ZVKBUR EQ VBAK~ZVKBUR
       FOR ALL ENTRIES IN @GT_TAB_H
     WHERE LIPS~VBELN EQ @GT_TAB_H-VBELN
     "----------------------------19.04.2021 15:03:48 修改者 chenyongjian
     "  AND LIPS~WBSTA NE 'C'
     AND (GS_LINE2)
       AND (LV_WHERE)
*       NOT EXISTS ( SELECT * FROM ZTMST002
*                          WHERE VBELN EQ LIPS~VBELN
*                            AND POSNR EQ LIPS~POSNR
*                            AND ZZZTTSRQ NE 0 )
      INTO CORRESPONDING FIELDS OF TABLE @GT_TAB_I.
    IF SY-SUBRC NE 0.
      WRITE:/ '未找到符合推送规则的未清订单!'.
      STOP.
    ENDIF.
    SORT GT_TAB_I BY VBELN POSNR.

  WHEN P2.
    IF S1 IS NOT  INITIAL.
      GS_LINE =   'ZTMST002~ZZZTTSRQ IS INITIAL '.
    ELSE.
      CLEAR GS_LINE.

    ENDIF.
    IF TAB_VBELN_TMS[] IS INITIAL.


*DN抬头
      SELECT
            LIKP~VBELN,           "交货单号
            LIKP~LFART,           "交货类型
            TVLKT~VTEXT AS ZDDLX, "交货类型描述
            LIKP~ZZCARTYPE,       "车型
            A~DDTEXT AS ZCX,      "车型描述
            LIKP~WADAT,           "计划发货日期
*          VBPA_SP~LIFNR AS ZSP, "承运商
        ZTMST005~KUNNR AS ZSP,"承运商
            LFA1_SP~NAME1 AS ZCYS,"承运商名称
            LIKP~ZZDELIVERY,      "提货方式
            B~DDTEXT AS ZTHFS,    "提货方式描述
            LIKP~ZZRECIPIENT,     "运费承担方式
            C~DDTEXT AS ZYFCD,    "运费承担方式描述
            VBPA_AG~KUNNR AS ZAG, "客户编码
            KNA1_AG~NAME1 AS ZKH, "客户名称
            LIKP~VSTEL,           "装运点
            TVSTT~VTEXT,          "装运点描述
            VBPA_WE~KUNNR AS ZWE, "送达方编码
            ADRC~NAME1 AS ZSDF,   "送达方名称
*          ADRC~CITY_CODE,       "城市代码
            ADRC~CITY1,           "城市描述
            ADRC~STREET,          "详细地址
            ADRCT~REMARK,         "联系人
*          VBPA_ZE~KUNNR AS ZZE, "制单人编号
*          KNA1_ZE~NAME1 AS ZZD, "制单人名称
            CASE LIKP~LFART
            WHEN 'NLCC' THEN LIKP~ERNAM
            WHEN 'ZNLC' THEN LIKP~ERNAM
            ELSE VBPA_ZE~KUNNR END AS ZZE,
            CASE LIKP~LFART
            WHEN 'NLCC' THEN ADRP~NAME_FIRST
            WHEN 'ZNLC' THEN ADRP~NAME_FIRST
            ELSE KNA1_ZE~NAME1 END AS ZZD,
            VBPA_ZB~KUNNR AS ZZB, "开拓业务员编号
            KNA1_ZB~NAME1 AS ZYW, "开拓业务员名称
            LIKP~ERDAT,           "交货单创建日期
            LIKP~ERZET,           "交货单创建时间
            LEDSPD_FLOW~VBELN_NEW,       "先前订单
            LIKP~WADAT_IST,       "交货单过账日期
            LIKP~SPE_WAUHR_IST,   "交货单过账时间
            BUT000~BU_SORT1,      "开拓业务员工号
            KNA1_ZK~NAME1 AS ZKF, "客服业务员名称
            ZSDT_SONGHUOREN~ZZTELF1 AS ZKFTEL,"客服业务员电话
        CASE ADRC~CITY_CODE
          WHEN ' ' THEN ADRCITYT~CITY_CODE
          ELSE
            ADRC~CITY_CODE END AS CITY_CODE, "城市代码
           LIKP~ZZDHDAT "计划到货时间
        FROM LIKP

        JOIN TVLKT ON TVLKT~LFART EQ LIKP~LFART
                  AND TVLKT~SPRAS EQ @SY-LANGU

*      LEFT JOIN VBPA AS VBPA_SP
*                ON VBPA_SP~VBELN EQ LIKP~VBELN
*               AND VBPA_SP~PARVW EQ 'SP'
  LEFT JOIN ZTMST005 ON LIKP~VBELN = ZTMST005~VBELN
        LEFT JOIN LFA1 AS LFA1_SP
                  ON LFA1_SP~LIFNR EQ ZTMST005~KUNNR

        LEFT JOIN DD07T AS A
                   ON A~DOMVALUE_L EQ LIKP~ZZCARTYPE
                  AND A~DOMNAME EQ 'ZZCARTYPE'
        LEFT JOIN DD07T AS B
                   ON B~DOMVALUE_L EQ LIKP~ZZDELIVERY
                  AND B~DOMNAME EQ 'ZZDELIVERY'
        LEFT JOIN DD07T AS C
                   ON C~DOMVALUE_L EQ LIKP~ZZRECIPIENT
                  AND C~DOMNAME EQ 'ZZRECIPIENT'

        LEFT JOIN VBPA AS VBPA_AG
                  ON VBPA_AG~VBELN EQ LIKP~VBELN
                 AND VBPA_AG~PARVW EQ 'AG'
        LEFT JOIN KNA1 AS KNA1_AG
                  ON KNA1_AG~KUNNR EQ VBPA_AG~KUNNR

        LEFT JOIN TVSTT ON TVSTT~VSTEL EQ LIKP~VSTEL
                  AND TVSTT~SPRAS EQ @SY-LANGU

        LEFT JOIN VBPA AS VBPA_WE
                  ON VBPA_WE~VBELN EQ LIKP~VBELN
                 AND VBPA_WE~PARVW EQ 'WE'
        LEFT JOIN ADRC ON ADRC~ADDRNUMBER EQ VBPA_WE~ADRNR
        LEFT JOIN ADRCT ON ADRCT~ADDRNUMBER EQ VBPA_WE~ADRNR
        LEFT JOIN ADRCITYT ON ADRCITYT~CITY_NAME EQ ADRC~CITY1
                         AND ADRCITYT~COUNTRY EQ 'CN'
                         AND ADRCITYT~LANGU EQ @SY-LANGU

        LEFT JOIN VBPA AS VBPA_ZE
                  ON VBPA_ZE~VBELN EQ LIKP~VBELN
                 AND VBPA_ZE~PARVW EQ 'ZE'
        LEFT JOIN KNA1 AS KNA1_ZE
                  ON KNA1_ZE~KUNNR EQ VBPA_ZE~KUNNR

        LEFT JOIN VBPA AS VBPA_ZB
                  ON VBPA_ZB~VBELN EQ LIKP~VBELN
                 AND VBPA_ZB~PARVW EQ 'ZB'
        LEFT JOIN KNA1 AS KNA1_ZB
                  ON KNA1_ZB~KUNNR EQ VBPA_ZB~KUNNR

        JOIN ZTMST002 ON ZTMST002~VBELN EQ LIKP~VBELN

        LEFT JOIN VBPA AS VBPA_ZK
                  ON VBPA_ZK~VBELN EQ LIKP~VBELN
                 AND VBPA_ZK~PARVW EQ 'ZK'
        LEFT JOIN KNA1 AS KNA1_ZK
                  ON KNA1_ZK~KUNNR EQ VBPA_ZK~KUNNR
        LEFT JOIN BUT000 ON BUT000~PARTNER EQ VBPA_ZK~KUNNR
        LEFT JOIN ZSDT_SONGHUOREN ON ZSDT_SONGHUOREN~PARTNER EQ VBPA_ZK~KUNNR
        LEFT JOIN LEDSPD_FLOW
               ON LEDSPD_FLOW~VBELN EQ LIKP~VBELN
              AND LEDSPD_FLOW~POSNR IS INITIAL

          LEFT JOIN USR21 ON USR21~BNAME EQ LIKP~ERNAM
          LEFT JOIN ADRP ON ADRP~PERSNUMBER EQ USR21~PERSNUMBER
      WHERE LIKP~WBSTK EQ 'C'
      AND (GS_LINE)
        AND LIKP~VBELN IN @S_VBELN
      ORDER BY LIKP~VBELN
       INTO CORRESPONDING FIELDS OF TABLE @GT_TAB_H.

    ELSE.
      SELECT
  LIKP~VBELN,           "交货单号
  LIKP~LFART,           "交货类型
  TVLKT~VTEXT AS ZDDLX, "交货类型描述
  LIKP~ZZCARTYPE,       "车型
  A~DDTEXT AS ZCX,      "车型描述
  LIKP~WADAT,           "计划发货日期
*          VBPA_SP~LIFNR AS ZSP, "承运商
        ZTMST005~KUNNR AS ZSP,"承运商
  LFA1_SP~NAME1 AS ZCYS,"承运商名称
  LIKP~ZZDELIVERY,      "提货方式
  B~DDTEXT AS ZTHFS,    "提货方式描述
  LIKP~ZZRECIPIENT,     "运费承担方式
  C~DDTEXT AS ZYFCD,    "运费承担方式描述
  VBPA_AG~KUNNR AS ZAG, "客户编码
  KNA1_AG~NAME1 AS ZKH, "客户名称
  LIKP~VSTEL,           "装运点
  TVSTT~VTEXT,          "装运点描述
  VBPA_WE~KUNNR AS ZWE, "送达方编码
  ADRC~NAME1 AS ZSDF,   "送达方名称
*          ADRC~CITY_CODE,       "城市代码
  ADRC~CITY1,           "城市描述
  ADRC~STREET,          "详细地址
  ADRCT~REMARK,         "联系人
*          VBPA_ZE~KUNNR AS ZZE, "制单人编号
*          KNA1_ZE~NAME1 AS ZZD, "制单人名称
  CASE LIKP~LFART
  WHEN 'NLCC' THEN LIKP~ERNAM
  WHEN 'ZNLC' THEN LIKP~ERNAM
  ELSE VBPA_ZE~KUNNR END AS ZZE,
  CASE LIKP~LFART
  WHEN 'NLCC' THEN ADRP~NAME_FIRST
  WHEN 'ZNLC' THEN ADRP~NAME_FIRST
  ELSE KNA1_ZE~NAME1 END AS ZZD,
  VBPA_ZB~KUNNR AS ZZB, "开拓业务员编号
  KNA1_ZB~NAME1 AS ZYW, "开拓业务员名称
  LIKP~ERDAT,           "交货单创建日期
  LIKP~ERZET,           "交货单创建时间
  LEDSPD_FLOW~VBELN_NEW,       "先前订单
  LIKP~WADAT_IST,       "交货单过账日期
  LIKP~SPE_WAUHR_IST,   "交货单过账时间
  BUT000~BU_SORT1,      "开拓业务员工号
  KNA1_ZK~NAME1 AS ZKF, "客服业务员名称
  ZSDT_SONGHUOREN~ZZTELF1 AS ZKFTEL,"客服业务员电话
CASE ADRC~CITY_CODE
WHEN ' ' THEN ADRCITYT~CITY_CODE
ELSE
  ADRC~CITY_CODE END AS CITY_CODE, "城市代码
 LIKP~ZZDHDAT "计划到货时间
FROM LIKP

JOIN TVLKT ON TVLKT~LFART EQ LIKP~LFART
        AND TVLKT~SPRAS EQ @SY-LANGU

LEFT JOIN ZTMST005 ON LIKP~VBELN = ZTMST005~VBELN
LEFT JOIN LFA1 AS LFA1_SP
        ON LFA1_SP~LIFNR EQ ZTMST005~KUNNR

LEFT JOIN DD07T AS A
         ON A~DOMVALUE_L EQ LIKP~ZZCARTYPE
        AND A~DOMNAME EQ 'ZZCARTYPE'
LEFT JOIN DD07T AS B
         ON B~DOMVALUE_L EQ LIKP~ZZDELIVERY
        AND B~DOMNAME EQ 'ZZDELIVERY'
LEFT JOIN DD07T AS C
         ON C~DOMVALUE_L EQ LIKP~ZZRECIPIENT
        AND C~DOMNAME EQ 'ZZRECIPIENT'

LEFT JOIN VBPA AS VBPA_AG
        ON VBPA_AG~VBELN EQ LIKP~VBELN
       AND VBPA_AG~PARVW EQ 'AG'
LEFT JOIN KNA1 AS KNA1_AG
        ON KNA1_AG~KUNNR EQ VBPA_AG~KUNNR

LEFT JOIN TVSTT ON TVSTT~VSTEL EQ LIKP~VSTEL
        AND TVSTT~SPRAS EQ @SY-LANGU

LEFT JOIN VBPA AS VBPA_WE
        ON VBPA_WE~VBELN EQ LIKP~VBELN
       AND VBPA_WE~PARVW EQ 'WE'
LEFT JOIN ADRC ON ADRC~ADDRNUMBER EQ VBPA_WE~ADRNR
LEFT JOIN ADRCT ON ADRCT~ADDRNUMBER EQ VBPA_WE~ADRNR
LEFT JOIN ADRCITYT ON ADRCITYT~CITY_NAME EQ ADRC~CITY1
               AND ADRCITYT~COUNTRY EQ 'CN'
               AND ADRCITYT~LANGU EQ @SY-LANGU

LEFT JOIN VBPA AS VBPA_ZE
        ON VBPA_ZE~VBELN EQ LIKP~VBELN
       AND VBPA_ZE~PARVW EQ 'ZE'
LEFT JOIN KNA1 AS KNA1_ZE
        ON KNA1_ZE~KUNNR EQ VBPA_ZE~KUNNR

LEFT JOIN VBPA AS VBPA_ZB
        ON VBPA_ZB~VBELN EQ LIKP~VBELN
       AND VBPA_ZB~PARVW EQ 'ZB'
LEFT JOIN KNA1 AS KNA1_ZB
        ON KNA1_ZB~KUNNR EQ VBPA_ZB~KUNNR

*      JOIN ZTMST002 ON ZTMST002~VBELN EQ LIKP~VBELN AND ZTMST002~ZZZTTSRQ IS INITIAL

LEFT JOIN VBPA AS VBPA_ZK
        ON VBPA_ZK~VBELN EQ LIKP~VBELN
       AND VBPA_ZK~PARVW EQ 'ZK'
LEFT JOIN KNA1 AS KNA1_ZK
        ON KNA1_ZK~KUNNR EQ VBPA_ZK~KUNNR
LEFT JOIN BUT000 ON BUT000~PARTNER EQ VBPA_ZK~KUNNR
LEFT JOIN ZSDT_SONGHUOREN ON ZSDT_SONGHUOREN~PARTNER EQ VBPA_ZK~KUNNR
LEFT JOIN LEDSPD_FLOW
     ON LEDSPD_FLOW~VBELN EQ LIKP~VBELN
    AND LEDSPD_FLOW~POSNR IS INITIAL

LEFT JOIN USR21 ON USR21~BNAME EQ LIKP~ERNAM
LEFT JOIN ADRP ON ADRP~PERSNUMBER EQ USR21~PERSNUMBER
WHERE LIKP~WBSTK EQ 'C'
AND LIKP~VBELN IN @S_VBELN
ORDER BY LIKP~VBELN
INTO CORRESPONDING FIELDS OF TABLE @GT_TAB_H.
    ENDIF.
    IF SY-SUBRC NE 0.
      WRITE:/ '未找到符合推送规则的未清订单!'.
      STOP.
    ENDIF.
    SORT GT_TAB_H BY VBELN.
    DELETE ADJACENT DUPLICATES FROM GT_TAB_H COMPARING VBELN.
    PERFORM SET_GT_TAB_H.

*DN行项
    DATA LT_TAB_I TYPE TABLE OF TY_ITEM.
    SELECT
          LIPS~VBELN,
          LIPS~POSNR,   "DN行项
          LIPS~PSTYV,   "行项类别
          TVAPT~VTEXT AS ZHXLB,  "行项类别描述
          LIPS~ARKTX,   "物料描述
          MARA~ZZDYMC,  "打印名称
          MARA~NORMT,   "产品型号
          LIPS~MATNR,   "物料编码
          MARA~MATKL,   "物料组编码
          T023T~WGBEZ,  "物料组描述
          LIPS~LFIMG,   "交货数量
          LIPS~LGMNG,"交货基本数量
          MARA~GROES,   "规格
          LIPS~MEINS,   "基本单位
          MARC~FRTME,   "辅单位
          LIPS~VRKME,   "销售单位
          MARC~ZZBRGEW AS BRGEW,   "待发货重量取工厂重量进行计算
          LIPS~WERKS,   "发货工厂编码
          T001W~NAME1,  "发货工厂描述
          LIPS~LGORT,   "库存地点编码
          T001L~LGOBE,  "库存地点描述
          LIPS~VGBEL,  "参照销售订单
          LIPS~VGPOS,  "参照销售订单行项
          LIPS~UECHA,  "上层项
          VBAK~ZZZLZX, "战略中心
          VBAK~ZZVKBUR, "战略办事处
          VBKD~BZIRK,  "销售大区编号
          T171T~BZTXT, "销售大区描述
          VBAK~VKBUR, "销售办事处编码
          TVKBT~BEZEI, "销售办事处描述
*          VBAK~ZZZLZX,  "战略中心
*          VBAK~ZZVKBUR, "战略办事处
*          VBAK~ZZQY, "区域
          ZVKBUR_T~ZZVKBUR,        "战略办事处
          ZQY_T~ZZQY,              "区域
          TVKO~BUKRS, "销售组织对应公司
*          VBAK~ZZPROJECTNO,    "项目号
*          VBAK~ZZPROJECTNAME,  "项目名称
          ZPROJECT~ZPROJECTNO AS ZZPROJECTNO,           "项目编号
          ZPROJECT~ZPROJECTNAME AS ZZPROJECTNAME,       "项目名称
          T001~BUTXT,  "公司名称
          VBAK~VKORG, "销售组织代码
          TVKOT~VTEXT, "销售组织描述
          LIKP~ZZAUFNR,
          VBAK~VKGRP, "销售组
          TVGRT~BEZEI AS VKGRP_T, "销售组描述
          T001K~BWKEY AS BWKEY, "创建PO用到的工厂
          T024D~DISPO,  "MRP控制者
          T024D~DSNAM   "MRP控制者姓名
      FROM LIPS
      JOIN MAKT ON MAKT~MATNR EQ LIPS~MATNR
               AND MAKT~SPRAS EQ @SY-LANGU
      JOIN MARA ON MARA~MATNR EQ LIPS~MATNR
      JOIN T023T ON T023T~MATKL EQ MARA~MATKL
                AND T023T~SPRAS EQ @SY-LANGU

      LEFT JOIN T001W ON T001W~WERKS EQ LIPS~WERKS
      LEFT JOIN T001L ON T001L~WERKS EQ LIPS~WERKS
                     AND T001L~LGORT EQ LIPS~LGORT
      LEFT JOIN CEPCT ON CEPCT~PRCTR EQ LIPS~PRCTR
                     AND CEPCT~SPRAS EQ @SY-LANGU
                     AND CEPCT~KOKRS EQ '1000'
      LEFT JOIN VBAK ON VBAK~VBELN EQ LIPS~VGBEL
      LEFT JOIN T001 ON T001~BUKRS EQ VBAK~BUKRS_VF
      LEFT JOIN VBKD ON VBKD~VBELN EQ LIPS~VGBEL
                    AND VBKD~POSNR IS INITIAL
      LEFT JOIN T171T ON T171T~BZIRK EQ VBKD~BZIRK
      LEFT JOIN TVKBT ON TVKBT~VKBUR EQ VBAK~VKBUR
      LEFT JOIN TVKOT ON TVKOT~VKORG EQ VBAK~VKORG
                     AND TVKOT~SPRAS EQ @SY-LANGU
      JOIN LIKP ON LIKP~VBELN EQ LIPS~VBELN
      LEFT JOIN TVGRT ON TVGRT~VKGRP EQ VBAK~VKGRP AND TVGRT~SPRAS EQ @SY-LANGU
      LEFT JOIN TVKO ON TVKO~VKORG EQ LIKP~VKORG
      LEFT JOIN T001K ON T001K~BUKRS EQ TVKO~BUKRS
      LEFT JOIN MARC ON MARC~MATNR EQ LIPS~MATNR AND MARC~WERKS EQ LIPS~WERKS
      JOIN ZTMST002 ON ZTMST002~VBELN EQ LIKP~VBELN " AND ZTMST002~POSNR EQ LIPS~POSNR
      LEFT JOIN TVAPT ON TVAPT~PSTYV EQ LIPS~PSTYV AND TVAPT~SPRAS EQ @SY-LANGU
      LEFT JOIN T024D ON T024D~WERKS EQ MARC~WERKS AND T024D~DISPO EQ MARC~DISPO
      LEFT JOIN ZPROJECT ON ZPROJECT~ZPROJECTNO EQ VBAK~ZPROJECTNO
      LEFT JOIN ZQY_T ON ZQY_T~ZQY EQ VBAK~ZQY
      LEFT JOIN ZVKBUR_T ON ZVKBUR_T~ZVKBUR EQ VBAK~ZVKBUR
       FOR ALL ENTRIES IN @GT_TAB_H
     WHERE LIPS~VBELN EQ @GT_TAB_H-VBELN
       AND LIPS~WBSTA EQ 'C'
*       AND EXISTS ( SELECT * FROM ZTMST002
*                     WHERE ZTMST002~VBELN EQ LIPS~VBELN
**                       AND ZTMST002~POSNR EQ LIPS~POSNR
*                       )
      INTO CORRESPONDING FIELDS OF TABLE @LT_TAB_I.
    IF SY-SUBRC NE 0.
***********************************************************************
*结束时间
      PERFORM RUN_LOG.
***********************************************************************
      WRITE:/ '未找到符合推送规则的未清订单!'.
      STOP.
    ENDIF.
    SORT LT_TAB_I BY VBELN POSNR.
    LOOP AT LT_TAB_I INTO DATA(WA_TAB_I).
      IF WA_TAB_I-UECHA IS INITIAL.
        APPEND WA_TAB_I TO GT_TAB_I.
      ELSE.
        READ TABLE GT_TAB_I ASSIGNING FIELD-SYMBOL(<FS_TAB_I>)
                             WITH KEY VBELN = WA_TAB_I-VBELN
                                      POSNR = WA_TAB_I-UECHA
                                      BINARY SEARCH.
        IF SY-SUBRC EQ 0.
          <FS_TAB_I>-LFIMG = <FS_TAB_I>-LFIMG + WA_TAB_I-LFIMG.
          <FS_TAB_I>-LGMNG = <FS_TAB_I>-LGMNG + WA_TAB_I-LGMNG.
        ENDIF.
      ENDIF.
    ENDLOOP.

  WHEN OTHERS.
ENDCASE.
DELETE ADJACENT DUPLICATES FROM GT_TAB_I COMPARING VBELN POSNR.
PERFORM SET_GT_TAB_I.
PERFORM SET_JOSN_DATA.
***********************************************************************
*结束时间
PERFORM RUN_LOG.
"------------------------31.05.2021 14:44:15----------
"-----------------------chenyongjian 增加异常同步订单的提醒
IF P2 IS NOT INITIAL AND SY-UNAME NE 'RFCUSER'.
  PERFORM SEND_WX USING 'YICHANG'.
ENDIF.
***********************************************************************
*&---------------------------------------------------------------------*
*& Form RUN_LOG
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM RUN_LOG .
  CALL FUNCTION 'ZFM_RUN_LOG'
    EXPORTING
      I_KEY    = GV_ZKET
      I_ZUNAME = SY-UNAME
      I_ZPNAME = 'ZTMSD001'. "程序名
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CALL_TMS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM CALL_TMS USING P_VBELN P_DATUM.
  IF P_DATUM IS INITIAL.
    P_DATUM = SY-DATUM.
  ENDIF.
  DATA LV_JSON TYPE STRING.
  DATA LV_VBELN TYPE VBELN.
*    内表转JSON接口数据
  CALL METHOD /UI2/CL_JSON=>SERIALIZE
    EXPORTING
      DATA   = GT_TMS
    RECEIVING
      R_JSON = LV_JSON.
  IF LV_JSON IS NOT INITIAL.

    CASE ABAP_TRUE.
      WHEN P1.
        LV_JSON = '{"interId":215,"data":' && LV_JSON && '}'.
      WHEN P2.
        LV_JSON = '{"interId":221,"data":' && LV_JSON && '}'.
      WHEN OTHERS.
    ENDCASE.
  ELSE.
    WRITE:/ 'JOSN转换出现异常,本次任务已取消!!'.
    STOP.
  ENDIF.

  "传输到OA
  DATA :E_MSG              TYPE STRING,
        E_CODE(1)          TYPE C,
        E_DATA             TYPE STRING,
        E_HTTP_STATUS_CODE TYPE I,
        E_BIZ_CODE(1)      TYPE C.

  IF SY-UNAME EQ 'LUOLIN'.
    TYPES: BEGIN OF LTY_FILE,
             GV_JSON TYPE  STRING,
           END OF LTY_FILE.
    DATA :LS_FILE TYPE LTY_FILE,
          LT_FILE TYPE STANDARD TABLE OF LTY_FILE.
    LS_FILE-GV_JSON = LV_JSON.
    APPEND LS_FILE TO LT_FILE .

    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        FILENAME         = 'C:UsersluolinDesktopjosn.txt' "file name
      TABLES
        DATA_TAB         = LT_FILE    "inner table
      EXCEPTIONS
        FILE_WRITE_ERROR = 1
        FILE_NOT_FOUND   = 2.
  ENDIF.
  WRITE:/ P_VBELN,SY-DATUM,SY-UZEIT,'开始推送!'..
  "传输到OA
  CALL FUNCTION 'ZFM_RESTFUL_CKS'
    EXPORTING
      I_URL_ID           = 'DISTRIBUTE' "http://172.16.8.47:8081/rs/hub
      I_BODYDATA         = LV_JSON
      I_HTTP_METHOD      = 'POST'
    IMPORTING
      E_MSG              = E_MSG
      E_CODE             = E_CODE
      E_DATA             = E_DATA
      E_HTTP_STATUS_CODE = E_HTTP_STATUS_CODE
*     e_biz_code         = e_biz_code
    EXCEPTIONS
      URL_NOT_FOUND      = 1
      OTHERS             = 2.
*      返回S代表成功,将返回状态码写回ZSDT_DN_30DAY.

  IF E_HTTP_STATUS_CODE NE 200.
    E_CODE = 'E'.
    E_MSG = '服务器连接失败!'.
    RETURN.
  ENDIF.

  IF E_CODE = 'S'.
*JSON数据转为内表数据
    TYPES : BEGIN OF LTY_ZITMSG,
              CODE(2)  TYPE C,
              ERRORMSG TYPE STRING,
              DATA     TYPE STRING,
            END OF LTY_ZITMSG.
    DATA :LS_MSG TYPE LTY_ZITMSG,
          LT_MSG TYPE STANDARD TABLE OF LTY_ZITMSG.

    CALL METHOD /UI2/CL_JSON=>DESERIALIZE
      EXPORTING
        JSON = E_DATA
*       PRETTY_NAME = ABAP_FALSE
      CHANGING
        DATA = LS_MSG.
    IF LS_MSG-CODE EQ '0'.

      CASE ABAP_TRUE.
        WHEN P1.
          MODIFY ZTMST002 FROM TABLE GT_ZTMST002.
        WHEN P2.
          SELECT *  FROM ZTMST002
            WHERE VBELN EQ @P_VBELN
            INTO TABLE @DATA(LT_ZTMST002).
          IF SY-SUBRC EQ 0.
            LOOP AT LT_ZTMST002 INTO DATA(LS_ZTMST002).
              IF LS_ZTMST002-ZZZTTSRQ IS INITIAL.
                LS_ZTMST002-ZZZTTSRQ = P_DATUM.
                LS_ZTMST002-ZZZTTST =  SY-TIMLO.
              ENDIF.


              LS_ZTMST002-ZZTTSR = SY-UNAME.
              MODIFY LT_ZTMST002 FROM LS_ZTMST002.
              CLEAR:LS_ZTMST002.
            ENDLOOP.
            MODIFY ZTMST002 FROM TABLE LT_ZTMST002.
          ENDIF.
        WHEN OTHERS.
      ENDCASE.

      IF SY-SUBRC EQ 0.
        COMMIT WORK AND WAIT.
      ELSE.
        ROLLBACK WORK.
      ENDIF.
      G_SUM = G_SUM + 1.
      WRITE:/ P_VBELN,'推送成功!'.
    ELSE.
      DATA WA_ZTMST004 TYPE ZTMST004.
      WA_ZTMST004-VBELN = P_VBELN.
      CASE ABAP_TRUE.
        WHEN P1.
          WA_ZTMST004-ZP = 'P1'.
        WHEN P2.
          WA_ZTMST004-ZP = 'P2'.
        WHEN OTHERS.
      ENDCASE.
      WA_ZTMST004-UNAME = SY-UNAME.
      WA_ZTMST004-DATUM = SY-DATUM.
      WA_ZTMST004-UZEIT = SY-UZEIT.
      WA_ZTMST004-ZLOG = LS_MSG-ERRORMSG.
      MODIFY ZTMST004 FROM WA_ZTMST004.
      "------------------------23.06.2021 09:52:03----------
      "-----------------------chenyongjian 增加校验逻辑 ,当已经存在的单再次推送时,并且ztmst002表无记录,则插入已同步记录
      IF LS_MSG-ERRORMSG CS '单已存在'.
        CLEAR LS_ZTMST002.
        CASE WA_ZTMST004-ZP.
          WHEN 'P1'.
            SELECT VBELN,POSNR INTO TABLE @DATA(TAB_LIPS) FROM LIPS
              WHERE
              VBELN = @WA_ZTMST004-VBELN.
            DATA LT_TMST002 TYPE TABLE OF ZTMST002 .
            LOOP AT TAB_LIPS INTO DATA(WA_LIPS).
              CLEAR LS_ZTMST002.
              LS_ZTMST002-ZZDDTSRQ = SY-DATUM.
              LS_ZTMST002-ZDDTSR = SY-UNAME.
              LS_ZTMST002-VBELN = WA_LIPS-VBELN.
              LS_ZTMST002-POSNR = WA_LIPS-POSNR.
              APPEND LS_ZTMST002 TO LT_TMST002.
            ENDLOOP.
*            MOVE-CORRESPONDING WA_ZTMST004 TO LS_ZTMST002.

            MODIFY ZTMST002 FROM TABLE LT_TMST002.
          WHEN OTHERS.
        ENDCASE.
      ENDIF.
      COMMIT WORK AND WAIT.
      WRITE:/ P_VBELN,'推送失败!', LS_MSG-ERRORMSG.
    ENDIF.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_GT_TAB_H
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM SET_GT_TAB_H .

  LOOP AT GT_TAB_H ASSIGNING FIELD-SYMBOL(<FS_TAB_H>).

    IF <FS_TAB_H>-LFART EQ 'NLCC'
      AND <FS_TAB_H>-ZWE IS NOT INITIAL
      AND <FS_TAB_H>-CITY_CODE IS INITIAL.
      SELECT SINGLE
             ADRC~NAME1,   "送达方名称
             ADRC~CITY_CODE,  "城市代码
             ADRC~STREET,          "详细地址
             ADRCT~REMARK         "联系人
        FROM ADRC
        JOIN KNA1 ON KNA1~ADRNR EQ ADRC~ADDRNUMBER
        LEFT JOIN ADRCT ON KNA1~ADRNR EQ KNA1~ADRNR
        WHERE KNA1~KUNNR EQ @<FS_TAB_H>-ZWE
         INTO (@<FS_TAB_H>-ZSDF,@<FS_TAB_H>-CITY_CODE,@<FS_TAB_H>-STREET,@<FS_TAB_H>-REMARK).
      IF <FS_TAB_H>-ZSDF IS INITIAL.
        SELECT SINGLE NAME_ORG1 FROM BUT000 WHERE PARTNER EQ @<FS_TAB_H>-ZWE INTO @<FS_TAB_H>-ZSDF."内部调拨单如果送达方为空取BP名称
      ENDIF.
    ENDIF.

*  抬头长文本  STXL有时候没有数据导致取不到,直接使用READ_TEXT独取
    LV_TDNAME = <FS_TAB_H>-VBELN.
    CALL FUNCTION 'READ_TEXT'
      EXPORTING
*       CLIENT                  = SY-MANDT
        ID                      = '0001'
        LANGUAGE                = '1'
        NAME                    = LV_TDNAME
        OBJECT                  = 'VBBK'
*       ARCHIVE_HANDLE          = 0
*       LOCAL_CAT               = ' '
* IMPORTING
*       HEADER                  =
*       OLD_LINE_COUNTER        =
      TABLES
        LINES                   = LT_TLINE
      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 EQ 0.
      LOOP AT LT_TLINE INTO WA_TLINE.
        <FS_TAB_H>-ZTXT_H = <FS_TAB_H>-ZTXT_H && WA_TLINE-TDLINE.
        CLEAR WA_TLINE.
      ENDLOOP.
    ENDIF.

    CLEAR:LV_TDNAME,LT_TLINE.
  ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_GT_TAB_I
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM SET_GT_TAB_I .
**  DATA LS_STXL TYPE STXL.
  DATA UDATE TYPE D.

  SELECT * FROM ZMMT_LGORT_DES ORDER BY WERKS,LGORT INTO TABLE @DATA(LT_LGORT_DES).

  DATA:LV_WERKS TYPE WERKS_D,
       LV_LGORT TYPE LGORT.

  LOOP AT GT_TAB_I ASSIGNING FIELD-SYMBOL(<FS_TAB_I>).

    IF <FS_TAB_I>-VRKME NE <FS_TAB_I>-MEINS.
      DATA E_MENGE  LIKE  EKPO-MENGE.
      CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
        EXPORTING
          I_MATNR              = <FS_TAB_I>-MATNR
          I_IN_ME              = <FS_TAB_I>-VRKME
          I_OUT_ME             = <FS_TAB_I>-MEINS
          I_MENGE              = <FS_TAB_I>-LFIMG
        IMPORTING
          E_MENGE              = E_MENGE
        EXCEPTIONS
          ERROR_IN_APPLICATION = 1
          ERROR                = 2
          OTHERS               = 3.
      IF SY-SUBRC EQ 0.
        <FS_TAB_I>-BRGEW = E_MENGE * <FS_TAB_I>-BRGEW.
        CLEAR E_MENGE.
      ENDIF.
    ELSE.
      <FS_TAB_I>-BRGEW = <FS_TAB_I>-LFIMG * <FS_TAB_I>-BRGEW.
    ENDIF.
    "套件母件不计算重量
    IF <FS_TAB_I>-PSTYV EQ 'ZTAQ' OR <FS_TAB_I>-PSTYV EQ 'ZTQ5' .
      CLEAR:<FS_TAB_I>-BRGEW.
    ENDIF.

*行项文本备注   STXL有时候不能正常存放数据,改用函数直接读取
    LV_TDNAME = <FS_TAB_I>-VBELN && <FS_TAB_I>-POSNR.
    CALL FUNCTION 'READ_TEXT'
      EXPORTING
*       CLIENT                  = SY-MANDT
        ID                      = '0002'
        LANGUAGE                = '1'
        NAME                    = LV_TDNAME
        OBJECT                  = 'VBBP'
*       ARCHIVE_HANDLE          = 0
*       LOCAL_CAT               = ' '
* IMPORTING
*       HEADER                  =
*       OLD_LINE_COUNTER        =
      TABLES
        LINES                   = LT_TLINE
      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 EQ 0.
      LOOP AT LT_TLINE INTO WA_TLINE.
        <FS_TAB_I>-ZTXT_I = <FS_TAB_I>-ZTXT_I && WA_TLINE-TDLINE.
        CLEAR WA_TLINE.
      ENDLOOP.
    ENDIF.

    IF <FS_TAB_I>-ZZAUFNR IS INITIAL.
      <FS_TAB_I>-ZXMSD = '9'.
    ELSE.
      CASE <FS_TAB_I>-ZZAUFNR+0(1).
        WHEN 'A'.
          LV_WERKS = '3001'.
          LV_LGORT =  <FS_TAB_I>-ZZAUFNR+1(4).
        WHEN 'B'.
          LV_WERKS = '3011'.
          LV_LGORT =  <FS_TAB_I>-ZZAUFNR+1(4).
        WHEN OTHERS.
      ENDCASE.
      READ TABLE LT_LGORT_DES INTO DATA(LS_LGORT_DES)
                          WITH KEY WERKS = LV_WERKS
                                   LGORT = LV_LGORT
                                   BINARY SEARCH.
      IF SY-SUBRC EQ 0.
        <FS_TAB_I>-LTEXT = LS_LGORT_DES-LTEXT.
        <FS_TAB_I>-ZXMSD = LS_LGORT_DES-TAX_POINT.
      ELSE.
        "----------------------------------------------
        "修改日期29.05.2021 13:49:24
        "修改用户KS001
        "------------------------------ 增加自动提醒
        SELECT SINGLE UDATE INTO UDATE FROM ZTMST007 WHERE AUFNR = <FS_TAB_I>-ZZAUFNR.
        IF UDATE IS  INITIAL.
          TAB_007-AUFNR = <FS_TAB_I>-ZZAUFNR.
          TAB_007-UDATE = SY-DATUM.
          APPEND TAB_007.
        ENDIF.

        " CASE <FS_TAB_I>-ZZAUFNR+0(1).
        "  WHEN 'A'.
        "   tab_007-.
        "  WHEN 'B'.
        "   ENDCASE.


      ENDIF.
    ENDIF.

    CLEAR:LV_TDNAME,LT_TLINE,LS_LGORT_DES,LV_WERKS,LV_LGORT.
  ENDLOOP.
  IF TAB_007[] IS NOT INITIAL.
    PERFORM SEND_WX USING 'SHUI'.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_JOSN_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM SET_JOSN_DATA .
*    获取ZWMS_T001跟进销售订单自定义的打印名称
  SELECT VBELN,POSNR,Z0008 FROM ZWMS_T001
     FOR ALL ENTRIES IN @GT_TAB_I
   WHERE VBELN EQ @GT_TAB_I-VGBEL
     AND POSNR EQ @GT_TAB_I-VGPOS
    INTO TABLE @DATA(LT_ZWMS_T001).
  IF SY-SUBRC EQ 0.
    DELETE LT_ZWMS_T001 WHERE Z0008 IS INITIAL.
    SORT LT_ZWMS_T001 BY VBELN POSNR.
  ENDIF.

  DATA LV_DATUM TYPE DATUM.
* 如果属于子单的获取母单推送日期
  SELECT * FROM ZTMST002 FOR ALL ENTRIES IN @GT_TAB_H
   WHERE VBELN EQ @GT_TAB_H-VBELN_NEW
    INTO TABLE @DATA(LT_ZTMST002).
  IF SY-SUBRC EQ 0.
    SORT LT_ZTMST002 BY VBELN.
    DELETE ADJACENT DUPLICATES FROM LT_ZTMST002 COMPARING VBELN.
  ENDIF.

*获取时效
  SELECT * FROM ZSD_DN_TE
     FOR ALL ENTRIES IN @GT_TAB_H
   WHERE ZZFLAG IS INITIAL
     AND ZSD_DN_TE~LIFNR EQ @GT_TAB_H-ZSP
     AND ZSD_DN_TE~WERKS EQ @GT_TAB_H-VSTEL
     AND ZSD_DN_TE~CITY_CODE EQ @GT_TAB_H-CITY_CODE
    INTO TABLE @DATA(LT_ZSD_DN_TE).
  SORT LT_ZSD_DN_TE BY LIFNR WERKS CITY_CODE LGORT.

*结构转换
  LOOP AT GT_TAB_H INTO DATA(LS_TAB_H).
    GS_TMS-DN_NO               = LS_TAB_H-VBELN.   "DN单号
    GS_TMS-ORDERTYPE           = LS_TAB_H-LFART.   "订单类型
    GS_TMS-ORDERTYPEDESC       = LS_TAB_H-ZDDLX.   "订单类型描述
    GS_TMS-CARTYPENO           = LS_TAB_H-ZZCARTYPE.   "车型编码
    GS_TMS-CARTYPEDESC         = LS_TAB_H-ZCX.   "车型描述
    IF LS_TAB_H-WADAT IS NOT INITIAL.
      GS_TMS-PLANDELIVERYDATE = LS_TAB_H-WADAT+0(4)
                             && '-'
                             && LS_TAB_H-WADAT+4(2)
                             && '-'
                             && LS_TAB_H-WADAT+6(2).  "计划发货日期
    ENDIF.
    GS_TMS-FORWARDERNO         = LS_TAB_H-ZSP.   "承运商编码
    GS_TMS-FORWARDERDESC       = LS_TAB_H-ZCYS.   "承运商名称
    GS_TMS-SHIPPINGTYPENO      = LS_TAB_H-ZZDELIVERY.   "提货方式
    GS_TMS-SHIPPINGTYPEDESC    = LS_TAB_H-ZTHFS.   "提货描述
    GS_TMS-FREIGHTPAYTYPENO    = LS_TAB_H-ZZRECIPIENT.   "运输承担方式
    GS_TMS-FREIGHTPAYTYPE      = LS_TAB_H-ZYFCD.   "运费承担方式
    GS_TMS-CUSTOMERNO          = LS_TAB_H-ZAG.   "客户编码
    GS_TMS-CUSTOMERNAME        = LS_TAB_H-ZKH.   "客户名称
*  GS_TMS-PROJECTDESC         = LS_TAB_H-XXX.   "项目描述
    GS_TMS-SHIPPINGPOINTNO     = LS_TAB_H-VSTEL.   "装运点编码
    GS_TMS-SHIPPINGPOINTDESC   = LS_TAB_H-VTEXT.   "装运点描述
    IF ( LS_TAB_H-LFART EQ 'ZNLC' OR LS_TAB_H-LFART EQ 'NLCC' ) OR LS_TAB_H-ZAG EQ '0000003010'.
      IF LS_TAB_H-ZAG EQ '0000003010'.
        GS_TMS-CUSTOMERADDRESSNO   = LS_TAB_H-ZAG.   "收货编码用售达方
      ELSE.
        GS_TMS-CUSTOMERADDRESSNO   = LS_TAB_H-ZWE.   "收货编码
      ENDIF.
    ENDIF.
    GS_TMS-CUSTOMERADDRESSDESC = LS_TAB_H-ZSDF.   "收货名称
    GS_TMS-TARGETNO            = LS_TAB_H-CITY_CODE.   "城市代码
    GS_TMS-TARGETDESC          = LS_TAB_H-CITY1.   "收货省市区
    GS_TMS-ARRIVALADDRESS      = LS_TAB_H-STREET.   "收货具体地址
    GS_TMS-DELIVERYPHONENUM    = LS_TAB_H-REMARK.   "收货人及联系电话
    CONDENSE GS_TMS-DELIVERYPHONENUM NO-GAPS.
    REPLACE '#' IN GS_TMS-DELIVERYPHONENUM WITH ''.
*  GS_TMS-NOSEEDGOODSDESC     = LS_TAB_H-XXX.   "未发货原因
    GS_TMS-ZDRNO               = LS_TAB_H-ZZE.   "制单人
    GS_TMS-ZDRNAME             = LS_TAB_H-ZZD.   "制单人名称
    GS_TMS-HEADREMARK          = LS_TAB_H-ZTXT_H.   "交货单抬头备注
*  GS_TMS-CATCHNOTE           = LS_TAB_H-XXX.   "异常记录
    "----------------------------27.12.2020 17:07:08 修改者 chenyongjian 修正过账日期的传输 20201227
    IF LS_TAB_H-WADAT_IST IS NOT INITIAL.
      GS_TMS-DNCREATETIME = GS_TMS-POSTINGDATE = LS_TAB_H-WADAT_IST+0(4)
                         && '-'
                         && LS_TAB_H-WADAT_IST+4(2)
                         && '-'
                         && LS_TAB_H-WADAT_IST+6(2).  "交货单创建日期
    ENDIF.
    GS_TMS-SALESMANNO          = LS_TAB_H-ZZB.   "开拓业务员编号
    GS_TMS-SALESMANNAME        = LS_TAB_H-ZYW.   "开拓业务员姓名
    GS_TMS-YWYNO               = LS_TAB_H-BU_SORT1.   "客服业务员工号
    GS_TMS-YWYNAME               = LS_TAB_H-ZKF.   "客服业务员姓名
    "----------------------------19.04.2021 11:45:04 修改者 chenyongjian   只有直营单才有送货联系人信息
*    IF LS_TAB_H-ZKFTEL IS NOT INITIAL AND ."客服业务员电话
*      GS_TMS-YWYNAME = GS_TMS-YWYNAME && '/' && LS_TAB_H-ZKFTEL.
*    ENDIF.
*  GS_TMS-POSTINGDATE         = LS_TAB_H-WADAT_IST.   "出库过账日期
*  GS_TMS-SZPROJNO            = LS_TAB_H-XXX.   "深圳工程所属项目
*  GS_TMS-SZPROJDESC          = LS_TAB_H-XXX.   "深圳工程所属项目编码
*  GS_TMS-PURCHASENO          = LS_TAB_H-XXX.   "采购订单号
*  GS_TMS-PURCHASENAME        = LS_TAB_H-XXX.   "采购订单公司名称
*  GS_TMS-TAXPOINT            = LS_TAB_H-XXX.   "项目税点
    GS_TMS-ISSENDDCCODE    = 'False'.   "是否短信通知
*  GS_TMS-CATCHNOTE           = LS_TAB_H-XXX.   "异常记录
    IF LS_TAB_H-ERDAT IS NOT INITIAL.
      GS_TMS-POSTINGTING = LS_TAB_H-ERDAT+0(4)
                         && '-'
                         && LS_TAB_H-ERDAT+4(2)
                         && '-'
                         && LS_TAB_H-ERDAT+6(2).  "交货单创建日期
    ENDIF.

    IF LS_TAB_H-ERZET IS NOT INITIAL.
      GS_TMS-POSTINGTING = LS_TAB_H-ERZET.  "交货单创建时间
    ENDIF.

    IF LS_TAB_H-WADAT_IST IS NOT INITIAL.
      GS_TMS-PROOFOFGDATE = LS_TAB_H-WADAT_IST+0(4)
                         && '-'
                         && LS_TAB_H-WADAT_IST+4(2)
                         && '-'
                         && LS_TAB_H-WADAT_IST+6(2).  "交货单过账日期
    ENDIF.

    IF LS_TAB_H-SPE_WAUHR_IST IS NOT INITIAL.
      GS_TMS-PROOFOFTING = LS_TAB_H-SPE_WAUHR_IST.  "交货单创建时间
    ENDIF.
    IF LS_TAB_H-VBELN_NEW IS NOT INITIAL.
      GS_TMS-PARENTDNNO = LS_TAB_H-VBELN_NEW."先前订单
    ENDIF.
*    GS_TMS-FREIGHTTIMELIMITFORFL = LS_TAB_H-ZZLTL.   "零担时效
*    GS_TMS-FREIGHTTIMELIMITFORZC = LS_TAB_H-ZZVEHICLE.   "整车时效

    READ TABLE LT_ZTMST002 INTO DATA(LS_ZTMST002) WITH KEY VBELN = LS_TAB_H-VBELN BINARY SEARCH.
    IF SY-SUBRC EQ 0.
      LV_DATUM = LS_ZTMST002-ZZDDTSRQ.
    ENDIF.

    IF LS_TAB_H-ZZDHDAT IS NOT INITIAL.
      GS_TMS-REQUIREDDELIVERYDATE = LS_TAB_H-ZZDHDAT+0(4)
                         && '-'
                         && LS_TAB_H-ZZDHDAT+4(2)
                         && '-'
                         && LS_TAB_H-ZZDHDAT+6(2).  "计划到货时间
    ENDIF.

    LOOP AT GT_TAB_I INTO DATA(LS_TAB_I) WHERE VBELN EQ LS_TAB_H-VBELN.
      IF GS_TMS-FREIGHTTIMELIMITFORFL IS INITIAL AND GS_TMS-FREIGHTTIMELIMITFORZC IS INITIAL.
        READ TABLE LT_ZSD_DN_TE INTO DATA(WA_ZSD_DN_TE) WITH KEY LIFNR = LS_TAB_H-ZSP
                                                                 WERKS = LS_TAB_H-VSTEL
                                                                 CITY_CODE = LS_TAB_H-CITY_CODE
                                                                 LGORT = LS_TAB_I-LGORT
                                                                 BINARY SEARCH.
        IF SY-SUBRC EQ 0.
          GS_TMS-FREIGHTTIMELIMITFORFL = WA_ZSD_DN_TE-ZZLTL.   "零担时效
          GS_TMS-FREIGHTTIMELIMITFORZC = WA_ZSD_DN_TE-ZZVEHICLE.   "整车时效
        ELSE.
          READ TABLE LT_ZSD_DN_TE INTO WA_ZSD_DN_TE WITH KEY LIFNR = LS_TAB_H-ZSP
                                                             WERKS = LS_TAB_H-VSTEL
                                                             CITY_CODE = LS_TAB_H-CITY_CODE
                                                             BINARY SEARCH.
          IF SY-SUBRC EQ 0 AND WA_ZSD_DN_TE-LGORT IS INITIAL.
            GS_TMS-FREIGHTTIMELIMITFORFL = WA_ZSD_DN_TE-ZZLTL.   "零担时效
            GS_TMS-FREIGHTTIMELIMITFORZC = WA_ZSD_DN_TE-ZZVEHICLE.   "整车时效
          ENDIF.
        ENDIF.
      ENDIF.

      GS_ITEM-DN_NO           = LS_TAB_I-VBELN.   "DN单号
      GS_ITEM-LINE            = LS_TAB_I-POSNR.   "行号
      GS_ITEM-SKUNO           = LS_TAB_I-MATNR.   "物料编码
      GS_ITEM-SKUDESC       = LS_TAB_I-ARKTX.     "物料名称
      "----------------------------19.04.2021 11:46:09 修改者 chenyongjian 增加客服联系人电话取数
      IF LS_TAB_H-ZKFTEL IS NOT INITIAL AND LS_TAB_I-VTWEG EQ '20' AND LS_TAB_I-VKORG NE '4000' AND LS_TAB_I-VKORG NE '4010'."客服业务员电话
        GS_TMS-YWYNAME = GS_TMS-YWYNAME && '/' && LS_TAB_H-ZKFTEL.
        CLEAR LS_TAB_H-ZKFTEL.
      ENDIF.
      READ TABLE LT_ZWMS_T001 INTO DATA(LS_ZWMS_T001)"优先使用销售订单自定义的打印名称,如果没有的就使用物料主数据打印名称
                               WITH KEY VBELN = LS_TAB_I-VGBEL
                                        POSNR = LS_TAB_I-VGPOS
                                        BINARY SEARCH.
      IF SY-SUBRC EQ 0.
        GS_ITEM-PRINTDESC       = LS_ZWMS_T001-Z0008.  "销售订单自定义打印名称
      ELSE.
        GS_ITEM-PRINTDESC       = LS_TAB_I-ZZDYMC && LS_TAB_I-NORMT.  "物料主数据打印名称
      ENDIF.
      GS_ITEM-SKUGROUPNO      = LS_TAB_I-MATKL.   "物料组编码
      GS_ITEM-SKUGROUP        = LS_TAB_I-WGBEZ.   "物料组描述

      GS_ITEM-SPEC            = LS_TAB_I-GROES.   "规格
      IF LS_TAB_I-MEINS IS NOT INITIAL .
        CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
          EXPORTING
            INPUT     = LS_TAB_I-MEINS
*           LANGUAGE  = SY-LANGU
          IMPORTING
            LONG_TEXT = GS_ITEM-UNIT
*           OUTPUT    =
*           SHORT_TEXT           =
*         EXCEPTIONS
*           UNIT_NOT_FOUND       = 1
*           OTHERS    = 2
          .
        IF SY-SUBRC <> 0.
* Implement suitable error handling here
        ENDIF.

      ENDIF.
      "----------------------------22.02.2021 11:45:16 修改者 chenyongjian 当主单位和销售单位不一致时,需把交货单数量由销售单位数量改为主单位数量
*      IF LS_TAB_I-MEINS NE LS_TAB_I-VRKME.
*         DATA LV_MENGE2 TYPE BSTMG.
*        CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
*          EXPORTING
*            I_MATNR              = LS_TAB_I-MATNR
*            I_IN_ME              = LS_TAB_I-VRKME
*            I_OUT_ME             = LS_TAB_I-MEINS
*            I_MENGE              = LS_TAB_I-Lgmng
*          IMPORTING
*            E_MENGE              = LV_MENGE2
*          EXCEPTIONS
*            ERROR_IN_APPLICATION = 1
*            ERROR                = 2
*            OTHERS               = 3.
*        IF SY-SUBRC <> 0.
** Implement suitable error handling here
*        ENDIF.
*
*      ENDIF.
      "------------------------19.05.2021 16:50:48----------
      "-----------------------chenyongjian
      GS_ITEM-QTY             = LS_TAB_I-LGMNG.   "待发货数量  基本单位放在主单位上
*      GS_ITEM-UNIT            = LS_TAB_I-MEINS.   "计量单位
      IF LS_TAB_I-FRTME IS NOT INITIAL.
        CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
          EXPORTING
            INPUT     = LS_TAB_I-FRTME
*           LANGUAGE  = SY-LANGU
          IMPORTING
            LONG_TEXT = GS_ITEM-ASUNIT
*           OUTPUT    =
*           SHORT_TEXT           =
*         EXCEPTIONS
*           UNIT_NOT_FOUND       = 1
*           OTHERS    = 2
          .
        IF SY-SUBRC <> 0.
* Implement suitable error handling here
        ENDIF.
*        GS_ITEM-ASUNIT        = LS_TAB_I-FRTME.   "辅单位
        IF LS_TAB_I-MEINS NE LS_TAB_I-FRTME."辅数量转换
          DATA LV_MENGE TYPE BSTMG.
          CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
            EXPORTING
              I_MATNR  = LS_TAB_I-MATNR
              I_IN_ME  = LS_TAB_I-MEINS
              I_OUT_ME = LS_TAB_I-FRTME
              I_MENGE  = LS_TAB_I-LGMNG
            IMPORTING
              E_MENGE  = LV_MENGE
*           EXCEPTIONS
*             ERROR_IN_APPLICATION       = 1
*             ERROR    = 2
*             OTHERS   = 3
            .
          IF SY-SUBRC EQ 0.
            GS_ITEM-ASQTY = LV_MENGE.
          ENDIF.
        ELSE.
          GS_ITEM-ASQTY = LS_TAB_I-LGMNG.
        ENDIF.
      ENDIF.
      GS_ITEM-WEIGHT          = LS_TAB_I-BRGEW.         "待发货重量
      GS_ITEM-REMARK          = LS_TAB_I-ZTXT_I.        "交货单行项目备注
      GS_ITEM-FACTORYNO       = LS_TAB_I-WERKS.         "工厂编码
      GS_ITEM-FACTORYNAME     = LS_TAB_I-NAME1.         "工厂描述
      GS_ITEM-WAREHOUSENO     = LS_TAB_I-LGORT.         "库存地点编码
      GS_ITEM-WAREHOUSENAME   = LS_TAB_I-LGOBE.         "库存地点描述
      GS_ITEM-SALESNO         = LS_TAB_I-VGBEL.         "销售订单单号
      GS_ITEM-SALESLINENO     = LS_TAB_I-VGPOS.         "销售订单行项
      GS_ITEM-STRATEGYCENTER  = LS_TAB_I-ZZZLZX.        "战略中心
      GS_ITEM-STRATEGYOFFICE  = LS_TAB_I-ZZVKBUR.       "战略办事处
      GS_ITEM-SALESAREANO     = LS_TAB_I-BZIRK.         "销售大区编号
      GS_ITEM-SALESAREADESC   = LS_TAB_I-BZTXT.         "销售大区描述
      GS_ITEM-SALESOFFICENO   = LS_TAB_I-VKBUR.         "销售办事处编码
      GS_ITEM-SALESOFFICEDESC = LS_TAB_I-BEZEI.         "销售办事处描述

      GS_ITEM-PROJECTNO       = LS_TAB_I-ZZPROJECTNO.   "项目号
      GS_ITEM-PROJECTDESC     = LS_TAB_I-ZZPROJECTNAME. "项目名称
      GS_ITEM-SZPROJNO        = LS_TAB_I-ZZAUFNR.       "深圳工程所属项目
      GS_ITEM-SZPROJDESC      = LS_TAB_I-LTEXT.         "深圳工程所属项目编码
      GS_ITEM-TAXPOINT        = LS_TAB_I-ZXMSD.         "项目税点
      CASE GS_ITEM-TAXPOINT.
        WHEN '3'.
          GS_ITEM-TAXCODE  = 'O1'. "税码
        WHEN OTHERS.
          GS_ITEM-TAXCODE  = 'J3'."税码
      ENDCASE.
*    GS_ITEM-TAXCODE         = LS_TAB_I-ZXMSD.   "税码
      IF ( LS_TAB_H-LFART EQ 'NLCC' OR LS_TAB_H-LFART EQ 'ZNLC') AND LS_TAB_I-VGBEL IS NOT INITIAL."内部调拨取PO公司
        SELECT SINGLE T001~BUKRS,T001~BUTXT
          FROM T001

          WHERE BUKRS = '1000'
          INTO ( @LS_TAB_I-BUKRS,@LS_TAB_I-BUTXT ).
      ENDIF.

      CASE LS_TAB_H-ZAG.
        WHEN '0000003000'.
          LS_TAB_I-BUKRS = '3000'.
          SELECT SINGLE BUTXT FROM T001 WHERE BUKRS EQ @LS_TAB_I-BUKRS INTO @LS_TAB_I-BUTXT.
        WHEN '0000003010'.
          LS_TAB_I-BUKRS = '3010'.
          SELECT SINGLE BUTXT FROM T001 WHERE BUKRS EQ @LS_TAB_I-BUKRS INTO @LS_TAB_I-BUTXT.
        WHEN OTHERS.
      ENDCASE.

      GS_ITEM-COMPANYNO       = LS_TAB_I-BUKRS.   "公司代码
      GS_ITEM-COMPANYNAME     = LS_TAB_I-BUTXT.   "公司名称
      GS_ITEM-SALEGROUPNO     = LS_TAB_I-VKORG.   "销售组织编码
      GS_ITEM-SALEGROUPNAME   = LS_TAB_I-VTEXT.   "销售组织描述
      GS_ITEM-DEPTNO          = LS_TAB_I-VKGRP.   "销售组
      GS_ITEM-DEPTNAME        = LS_TAB_I-VKGRP_T. "销售组描述
      GS_ITEM-AREA            = LS_TAB_I-ZZQY.    "区域
      GS_ITEM-ROWTYPE         = LS_TAB_I-PSTYV.   "行项类别
      GS_ITEM-ROWDESC         = LS_TAB_I-ZHXLB.   "行项类别描述
      GS_ITEM-SKUGROUPTYPE    = LS_TAB_I-DISPO.   "MRP控制员
      GS_ITEM-SKUGROUPDESC    = LS_TAB_I-DSNAM.   "MRP控制员姓名

      APPEND GS_ITEM TO GS_TMS-ORDERDETAILS.
      MOVE-CORRESPONDING LS_TAB_I TO GS_ZTMST002.
      GS_ZTMST002-ZZDDTSRQ = SY-DATUM.
      GS_ZTMST002-ZZDDTST = SY-TIMLO.
      GS_ZTMST002-ZDDTSR = SY-UNAME.

      APPEND GS_ZTMST002 TO GT_ZTMST002.
      CLEAR GS_ITEM.
    ENDLOOP.

    IF GS_TMS-ORDERDETAILS[] IS NOT INITIAL.
      APPEND GS_TMS TO GT_TMS.
      IF ZDATE IS NOT INITIAL.
        LV_DATUM = ZDATE.
      ENDIF.
      PERFORM CALL_TMS USING LS_TAB_H-VBELN LV_DATUM.
    ENDIF.

    CLEAR:GS_TMS,GT_TMS[],GT_ZTMST002[],LV_DATUM.
  ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form SEND_WX
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM SEND_WX USING MODE.
  DATA: E_CODE TYPE C,
        LV_ID2 TYPE STRING,
        E_MSG  TYPE STRING,
        TAB_WX TYPE TABLE OF ZPPT_WX WITH HEADER LINE.
  DATA WA_HEAD LIKE LINE OF GT_TAB_H.
  IF MODE EQ 'SHUI'.


    LOOP AT TAB_007.
      TAB_MESS-MESS = TEXT-001 && TAB_007-AUFNR && TEXT-002.
      APPEND TAB_MESS.
    ENDLOOP.
    DELETE ADJACENT DUPLICATES FROM TAB_MESS.
    SELECT  PURCHASER INTO CORRESPONDING FIELDS OF TABLE TAB_WX FROM ZPPT_WX WHERE ZTCODE EQ 'ZMMT_LGORT_DES'.
  ELSEIF MODE EQ 'YICHANG' .
    SELECT  PURCHASER INTO CORRESPONDING FIELDS OF TABLE TAB_WX FROM ZPPT_WX WHERE ZTCODE EQ 'ZTMSD001_YC'.
    LOOP AT GT_TAB_H  INTO WA_HEAD WHERE WADAT_IST IS NOT INITIAL AND WADAT_IST < ( SY-DATUM - 2 )  .
      TAB_MESS-MESS = TEXT-003 && WA_HEAD-VBELN && TEXT-004 && TEXT-005 && SY-UNAME && TEXT-006 && WA_HEAD-WADAT_IST && ','.
      APPEND TAB_MESS.
    ENDLOOP.
  ENDIF.
  IF TAB_WX[] IS NOT  INITIAL.
    LOOP AT TAB_WX.
      IF LV_ID2 IS INITIAL.
        LV_ID2 =  TAB_WX-PURCHASER .
      ELSE.
        LV_ID2 = LV_ID2 && ',' && TAB_WX-PURCHASER .
      ENDIF.

    ENDLOOP.
  ENDIF.
  CALL FUNCTION 'ZFM_PUB_MSG_PUSH'
    EXPORTING
      I_TYPE   = '2'
      I_DATUM  = SY-DATUM
      ZTCODE   = 'ZTMSD001'
*     WERKS    =
*     DISPO    =
      LV_ID2   = LV_ID2
    IMPORTING
      E_CODE   = E_CODE
      E_MSG    = E_MSG
    TABLES
      TAB_MESS = TAB_MESS.
  IF E_CODE NE 'E' AND TAB_007[] IS NOT INITIAL.
    MODIFY ZTMST007 FROM TABLE TAB_007.
  ENDIF.
ENDFORM.
关键词: ABAP

网友评论

发表评论