*&---------------------------------------------------------------------*
*& 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.
网友评论