提单管理

*----------------------------------------------------------------------*
* Object         : ZMMR0123
* Created by     : ABAP024
* Creation date  : 
* Description    : 
* FS ID          : 
* Funct. analyst : 
* Request        :
* Transport(s)   :
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Changed by     : 
* Date of change : 
* Description    : 
* Funct. analyst : 
* Request        : 
* Change marker  :
* Transport(s)   :
*----------------------------------------------------------------------*
REPORT ZMMR0123_1118.


*----------------------------------------------------------------------*
* Table Declaration
*----------------------------------------------------------------------*
TABLES:LIKP,LIPS,EKKO,PROJ,MKPF.

*----------------------------------------------------------------------*
* Type Declaration
*----------------------------------------------------------------------*
TYPES: BEGIN OF TY_HEAD,
         ZSTATUS             TYPE LIKP-ZSTATUS,        "状态
         ZSTATUS_TXT         TYPE CHAR10,              "状态text
         ZHTBJ               TYPE CHAR100,             "合同附件(仅查看)
         ZTDFJ               TYPE CHAR100,             "提单附件
         ZFPFJ               TYPE CHAR100,             "发票附件
         ZZTRKDFJ            TYPE CHAR100,             "在途入库单附件
         ZZSRKDFJ            TYPE CHAR100,             "正式入库单附件
         ZBGDFJ              TYPE CHAR100,             "报关单附件(仅查看)
         ZCONF               TYPE CHAR02,              "确认
         ZCONF_TXT           TYPE CHAR10,              "确认text
         ZLEIBIE             TYPE CHAR10,              "类别
         NO_CUST             TYPE LIKP-NO_CUST,        "是否报关
         NO_CUST_TXT         TYPE CHAR10,              "是否报关
         THZT                TYPE CHAR10,              "退货状态
         ZKEGONG             TYPE CHAR01,              "客供
         VBELN               TYPE CHAR15, "LIKP-VBELN,          "系统编号 chg 20190528 cjj
         ZHTH                TYPE EKKO-ZHTH,           "合同编号
         ZDELIVERYPLANNO     TYPE LIKP-ZDELIVERYPLANNO, "合同批次
         EKGRP               TYPE EKKO-EKGRP,          "采购员
         EKGRP_TXT           TYPE T024-EKNAM,          "采购员text
         LIFNR               TYPE EKKO-LIFNR,          "供应商
         LIFNR_TXT           TYPE CHAR100,             "供应商text
         WERKS               TYPE LIKP-WERKS,          "入库基地
         WERKS_TXT           TYPE T001W-NAME1,         "入库基地text
         LGORT               TYPE LIPS-LGORT,          "入库仓库
         LGORT_TXT           TYPE T001L-LGOBE,         "入库仓库text
         ZLSCH               TYPE EKKO-ZLSCH,          "支付方式
         ZLSCH_TXT           TYPE CHAR30,              "支付方式
         SGTXT               TYPE LIKP-SGTXT,          "货物名称
         ANZPK               TYPE LIKP-ANZPK,          "件数
         BTGEW               TYPE LIKP-BTGEW,          "毛重
         NTGEW               TYPE LIKP-NTGEW,          "净重
         GEWEI               TYPE LIKP-GEWEI,          "重量单位
         GEWEI_TXT           TYPE CHAR30,              "重量单位text
         WAERS               TYPE EKKO-WAERS,          "货币
         WAERS_TXT           TYPE CHAR30,              "货币text
         WKURS               TYPE WKURS,               "人民币汇率
         ZFYJE               TYPE EKPO-NETWR,          "发运金额
         FREIGHT             TYPE EKPO-NETWR,          "运费
         ZTAX                TYPE T007V-KBETR,         "税率
         ZTOL                TYPE EKPO-NETWR,          "总额: 发运金额 + 运费
         BOLNR               TYPE LIKP-BOLNR,          "提单号(外部)
         INV_NO              TYPE LIKP-INV_NO,         "发票号码
         PACK_DATE           TYPE LIKP-PACK_DATE,      "提单日期
         CUST_NO             TYPE LIKP-CUST_NO,        "报关单号
         ITM_EXPVZ           TYPE LIKP-ITM_EXPVZ,      "发运类型
         ITM_EXPVZ_TXT       TYPE CHAR20,              "发运类型text
         TRADE_TYPE          TYPE LIKP-TRADE_TYPE,     "贸易类型
         TRADE_TYPE_TXT      TYPE CHAR20,              "贸易类型text
         LDDAT               TYPE LIKP-LDDAT,          "装船日期
         INSPECT_DATE        TYPE SY-DATUM, "商检日期 add cjj 20190529
         CUST_DATE           TYPE SY-DATUM, "报关日期 add cjj 20190529
         ITM_KZGBE           TYPE LIKP-ITM_KZGBE,      "起运港
         DUE_ARRIVE_DATE     TYPE LIKP-DUE_ARRIVE_DATE, "预计到港日期
         LFDAT               TYPE LIKP-LFDAT,          "预计到货日期
         ZQSRQ               TYPE DATUM,               "签收日期
         ZDHQS               TYPE CHAR10,              "到货签收
         USNAM               TYPE MKPF-USNAM,          "入库人
         USNAM_TXT           TYPE CHAR80,              "入库人text
         BUDAT               TYPE MKPF-BUDAT,          "入库日期
         MBLNR               TYPE MATDOC-MBLNR,        "收货凭证号 add cjj 20190528
         MEMO                TYPE CHAR100,             "备注
         ERDAT               TYPE LIKP-ERDAT,          "创建日期
         AEDAT               TYPE LIKP-AEDAT,          "修改日期
         BELNR               TYPE RBKP-BELNR,          "发票凭证号 add 20191118
         RBSTAT              TYPE CHAR5,               "发票状态 add 20191118
         ZWERKS              TYPE LIKP-ZWERKS,
         WERKS1              TYPE LIKP-WERKS1,
         ZCARGOVALUECURRENCY TYPE LIKP-ZCARGOVALUECURRENCY,
         TDDAT               TYPE LIKP-TDDAT,
         INCO1               TYPE EKKO-INCO1,
         QANETWR             TYPE LIKP-QANETWR,
         ZFASONG             TYPE CHAR01,
         ROWCOLOR            TYPE CHAR04,    "新添加用字段于设置行的颜色
       END OF TY_HEAD.

TYPES: BEGIN OF TY_ITEM,
         "开始-通过TR -  S4DK906152 添加 20190614
         IL_HS_NR         TYPE ZE_HS_NR,              "HS编码
         IL_EMS_NO_1      TYPE ZE_EMS_NO_1,           "海关商品料号
         IL_STATUS_N      TYPE ZMMT0005-IL_STATUS,    "新账册备案状态
         IL_STATUS_TXT_N  TYPE CHAR10,                "新账册备案状态
         IL_STATUS_LJBG_N TYPE CHAR10,                "新账册零件报关备案状态
         "结束-通过TR -  S4DK906152 添加 20190614
         POSNR            TYPE LIPS-POSNR,            "提单行项目
         VBELN            TYPE CHAR15, "LIKP-VBELN,            "系统编号 chg 20190528 cjj
         ZZNAME1          TYPE MARA-ZZNAME1,          "品名
         ZZCODE           TYPE MARA-ZZCODE,           "标准
         ZZBASM           TYPE MARA-ZZBASM,           "材质
         ZZSPEC           TYPE MARA-ZZSPEC,           "规格
         ZZGBCD           TYPE EKPO-ZZGBCD, "“长 ” add 20190705
         ZZGBKD           TYPE EKPO-ZZGBKD, "“宽” add 20190705
         ZZGBFYKS         TYPE EKPO-ZZGBFYKS, "“块数” add 20190705
         ZSGXH            TYPE EKPO-ZSGXH, "申购序号 add 20191205
         IL_STATUS        TYPE ZMMT0005-IL_STATUS,    "备案状态
         IL_STATUS_TXT    TYPE CHAR10,                "备案状态
         IL_STATUS_LJBG   TYPE CHAR10,                "零件报关备案状态
         IL_HS_CODE       TYPE ZMMT0005-IL_HS_CODE,   "海关编码
         IL_HS_ATTACH     TYPE ZMMT0005-IL_HS_ATTACH, "附加码
         IL_EMS_NO        TYPE ZMMT0005-IL_EMS_NO,    "报关项号
         LGORT            TYPE LIPS-LGORT,            "入库仓库
         LGORT_TXT        TYPE CHAR30,                "入库仓库
         LGORT1           TYPE EKPO-LGORT,            "计划仓库
         LGORT1_TXT       TYPE CHAR30,                "计划仓库
         WERKS1           TYPE EKPO-WERKS,            "计划工厂
         PSPHI            TYPE PRPS-PSPHI,            "产品工号
         ZGHZT            TYPE CHAR10,                "产品工号状态
         POST1            TYPE PROJ-POST1,            "项目明称
         ZLARQ            TYPE DATUM,                 "离岸日期
         ZLXRQ            TYPE DATUM,                 "立项日期
         ZTAXTYPE         TYPE CHAR10,                "赋税类型
         ZTAXTYPE_TXT     TYPE CHAR10,                "赋税类型text
         ZCGSM            TYPE CHAR100,               "采购说明
         LFIMG            TYPE LIPS-LFIMG,            "发运数量
         MWSKZ            TYPE EKPO-MWSKZ,            "税码
         ZTAX             TYPE KBETR_KOND,            "税率
         ZJE              TYPE EKPO-NETWR,            "金额
         ZPRICE           TYPE EKPO-NETWR,            "价格
         WAERS            TYPE EKKO-WAERS,            "货币
         WAERS_TXT        TYPE CHAR30,                "货币
         PART_CUST        TYPE CHAR01,                "零件报关
         PART_CUST_TXT    TYPE CHAR02,                "零件报关text
         PACK_CNT         TYPE I,                     "分解项数
         VRKME            TYPE LIPS-VRKME,            "单位
         MEINS_TXT        TYPE T006A-MSEHT,           "单位描述
         COUNTRY          TYPE LIPS-COUNTRY,          "原产国
         COUNTRY_TXT      TYPE CHAR30      ,          "原产国text
         VGBEL            TYPE LIPS-VGBEL,            "采购单号
         VGPOS            TYPE LIPS-VGPOS,            "采购单行号
         ZMATKL           TYPE CHAR02,                "类别
         ZMATKL_TXT       TYPE CHAR30,                "类别text
         ZJDFL            TYPE CHAR10,                "节点分类
         ZSGDH            TYPE CHAR10,                "申购单号
         ZMEMO            TYPE CHAR100,               "IBD项目文本
         MATNR            TYPE LIPS-MATNR,            "物资编码
         BANFN            TYPE EKPO-BANFN,            "计划编号
         BNFPO            TYPE EKPO-BNFPO,            "计划行号
         SHKZG            TYPE LIPS-SHKZG,            "退货项目
         ZSHMX            TYPE CHAR10,                "送货明细
         ZCGMX            TYPE CHAR10,                "采购明细
         CHARG            TYPE LIPS-CHARG,
         ZAMOUNT          TYPE LIPS-ZAMOUNT,
         ZJEBLD           TYPE LIPS-ZJEBLD,
         PS_PSP_PNR       TYPE LIPS-PS_PSP_PNR,           "工作分解 cjj 20190604
         DLCF_FLG         TYPE C,                     "电缆拆分 20190606 cjj
         FREIGHT          TYPE EKPO-NETWR,          "运费 add 20191119
         ROWCOLOR         TYPE CHAR04,    "新添加用字段于设置行的颜色
         CELL_COLOR       TYPE LVC_T_SCOL,
       END OF TY_ITEM.

TYPES: BEGIN OF TY_JKTD,
         VBELN           TYPE CHAR15, "LIKP-VBELN,          "系统编号 chg 20190528 cjj
         LIFNR           TYPE EKKO-LIFNR,          "供应商
         NAME1           TYPE LFA1-NAME1,          "供应商name
         PACK_DATE       TYPE LIKP-PACK_DATE,      "提单日期
         WERKS           TYPE LIKP-WERKS,          "入库基地
         WERKS_TXT       TYPE T001W-NAME1,         "入库基地
         LGORT_TXT       TYPE T001L-LGOBE,         "入库仓库
         LGORT           TYPE LIPS-LGORT,          "入库仓库
         EKGRP           TYPE EKKO-EKGRP,          "采购员
         EKGRP_TXT       TYPE T024-EKNAM,          "采购员name
         BOLNR           TYPE LIKP-BOLNR,          "提单号(外部)
         WERKS1          TYPE LIKP-WERKS1,         "转运基地
         ITM_EXPVZ       TYPE LIKP-ITM_EXPVZ,      "发运类型
         TRADE_TYPE      TYPE LIKP-TRADE_TYPE,     "贸易类型
         INV_NO          TYPE LIKP-INV_NO,         "发票号码
         ITM_KZGBE       TYPE LIKP-ITM_KZGBE,      "起运港
         LDDAT           TYPE LIKP-LDDAT,          "装船日期
         DUE_ARRIVE_DATE TYPE LIKP-DUE_ARRIVE_DATE, "预计到港日期
         LFDAT           TYPE LIKP-LFDAT,          "预计到货
         ANZPK           TYPE LIKP-ANZPK,          "件数
         BTGEW           TYPE LIKP-BTGEW,          "毛重
         NTGEW           TYPE LIKP-NTGEW,          "净重
         GEWEI           TYPE LIKP-GEWEI,          "重量单位
         GEWEI_TXT       TYPE T006A-MSEHL,         "重量单位
         FREIGHT         TYPE EKPO-NETWR,          "运费
         ZJGFS           TYPE EKKO-INCO1,          "价格方式
         ZZFFS           TYPE EKKO-ZLSCH,          "支付方式
         WAERK           TYPE LIKP-WAERK,          "货币
         WAERK_TXT       TYPE TCURT-KTEXT,         "货币文本
         ZZBJ            TYPE EKPO-NETWR,          "质保金
         ZHWMC           TYPE CHAR100,             "货物名称
         ZTAX            TYPE T007V-KBETR,         "税率
         MEMO            TYPE CHAR100,             "备注
         ZKEGONG         TYPE CHAR01,              "客供
         WERKS_EKPO      TYPE EKPO-WERKS,          "采购工厂
         NO_CUST         TYPE LIKP-NO_CUST,
         ZBAOGUAN        TYPE CHAR01,
         PORT_AREABILL   TYPE ZE_PORT_AREABILL,   "港区提单
         CUST_DATE       TYPE ZE_CUST_DATE,       "报关日期
         WHO_CUST        TYPE ZE_WHO_CUST,        "报关人
         CUST_INFO       TYPE ZE_CUST_INFO,       "报关说明
         PICK_DATE       TYPE ZE_PICK_DATE,       "提货日期
         AGENT           TYPE ZE_AGENT,           "货代
         AGENT_SITE      TYPE ZE_AGENT_SITE,      "货代送货地
         ZSTATUS         TYPE LIKP-ZSTATUS,       "状态
         CONFIRM         TYPE LIKP-CONFIRM,       "确认状态
         ZDELIVERYPLANNO TYPE ZE_ZDELIVERYPLANNO, "发运批次
         CUST_NO         TYPE ZE_CUST_NO,         "报关单号
       END OF TY_JKTD.
TYPES: BEGIN OF TY_TDMX,
         VBELN              TYPE CHAR15, "LIKP-VBELN,            "已生成IBD chg 20190528 cjj
         POSNR              TYPE LIPS-POSNR,            "交货项目
         ZZNAME1            TYPE MARA-ZZNAME1,          "品名
         ZZCODE             TYPE MARA-ZZCODE,           "标准
         ZZBASM             TYPE MARA-ZZBASM,           "材质
         ZZSPEC             TYPE MARA-ZZSPEC,           "规格
         ZZGBCD             TYPE EKPO-ZZGBCD, "“长 ” add 20190705
         ZZGBKD             TYPE EKPO-ZZGBKD, "“宽” add 20190705
         ZZGBFYKS           TYPE EKPO-ZZGBFYKS, "“块数” add 20190705
         ZSGXH              TYPE EKPO-ZSGXH, "申购序号 add cjj 20191205
         IL_STATUS          TYPE ZMMT0005-IL_STATUS,    "备案状态
         IL_STATUS_TXT      TYPE CHAR10,                "备案状态text
         IL_RECORD_STATUS_1 TYPE ZMMT0005-IL_RECORD_STATUS_1, "新备案状态
         IL_HS_CODE         TYPE ZMMT0005-IL_HS_CODE,   "海关编码
         IL_HS_ATTACH       TYPE ZMMT0005-IL_HS_ATTACH, "附加码
         IL_EMS_NO          TYPE ZMMT0005-IL_EMS_NO,    "报关项号
         "开始-通过TR -  S4DK906152 添加 20190614
         IL_STATUS_TXT_N    TYPE CHAR10,                "新账册备案状态
         IL_STATUS_LJBG_N   TYPE CHAR10,                "新账册零件报关备案状态
         IL_HS_NR           TYPE ZE_HS_NR,              "HS编码
         IL_EMS_NO_1        TYPE ZMMT0005-IL_EMS_NO_1,  "海关商品料号
         "结束-通过TR -  S4DK906152 添加 20190614

         ZLJBG              TYPE CHAR01,                "零件报关
         ZLFIMG             TYPE LIPS-LFIMG,            "发运数量
         MEINS              TYPE EKPO-MEINS,            "单位
         MEINS_TXT          TYPE T006A-MSEHT,           "单位描述
         ZPRICE             TYPE EKPO-NETWR,            "发运单价
         ZFYDJ              TYPE EKPO-NETWR,            "发运单价
         ZJE                TYPE EKPO-NETWR,            "金额
         ZJEBLD             TYPE CHAR01,                "金额不联动-X:不联动
         COUNTRY            TYPE T005-LAND1,            "原产国
         COUNTRY_TXT        TYPE CHAR30,                "原产国
         LGORT1             TYPE EKPO-LGORT,            "计划仓库
         LGORT1_TXT         TYPE CHAR30,                "计划仓库
         MEMO               TYPE CHAR200,               "备注
         MATNR              TYPE EKPO-MATNR,            "物料编码
         BANFN              TYPE EKPO-BANFN,            "申请单号
         BNFPO              TYPE EKPO-BNFPO,            "申请单行号
         EBELN              TYPE EKPO-EBELN,            "采购订单号
         EBELP              TYPE EKPO-EBELP,            "采购订单行号
         ZMSG               TYPE CHAR200,               "message text
         ZTAXTYPE           TYPE CHAR10,                "赋税类型
         ZTAXTYPE_TXT       TYPE CHAR10,                "赋税类型text
         PACK_CNT           TYPE I,                     "分解项数
         DLCF_FLG           TYPE C,                     "电缆拆分
         WAERS              TYPE EKKO-WAERS,
         WAERK_TXT          TYPE TCURT-KTEXT,         "货币文本
         PSPHI              TYPE PRPS-PSPHI,            "产品工号
         CHARG              TYPE LIPS-CHARG,
         KBETR              TYPE T007V-KBETR,    "税率 add 20190705
         ZHTH               TYPE EKKO-ZHTH,       "add cjj 20190910
       END OF TY_TDMX.
TYPES: BEGIN OF TY_SEARCH_PO,
         LIFNR     TYPE EKKO-LIFNR,          "供应商
         NAME1     TYPE LFA1-NAME1,          "供应商name
         EBELN     TYPE EKPO-EBELN,          "采购订单号
         ZHTH      TYPE EKKO-ZHTH,           "合同编号
         PSPHI     TYPE PROJ-PSPID,          "产品工号
         POST1     TYPE PROJ-POST1,          "产品工号text
         WERKS     TYPE LIKP-WERKS,          "入库基地
         WERKS_TXT TYPE T001W-NAME1,         "入库基地text
         LGORT_TXT TYPE T001L-LGOBE,         "入库仓库text
         LGORT     TYPE LIPS-LGORT,          "入库仓库
         MATNR     TYPE EKPO-MATNR,          "物料编码
         ZZNAME1   TYPE MARA-ZZNAME1,        "品名
         ZZCODE    TYPE MARA-ZZCODE,         "标准
         ZZBASM    TYPE MARA-ZZBASM,         "材质
         ZZSPEC    TYPE MARA-ZZSPEC,         "规格
         ZXSHTMX   TYPE CHAR01,              "显示已发完的合同明细
         ZALLSEL   TYPE CHAR01,              "sel all
         ZTHSEL    TYPE CHAR01,              "退货 add 20190604
       END OF TY_SEARCH_PO.
TYPES: BEGIN OF TY_PO_HEAD,
         EBELN     TYPE EKKO-EBELN,   "采购订单号
         ZHTH      TYPE EKKO-ZHTH,    "合同号码
         EKGRP     TYPE EKKO-EKGRP,   "采购员
         EKNAM     TYPE T024-EKNAM,   "采购员name
         ZLSCH     TYPE EKKO-ZLSCH,   "付款条件
         ZLSCH_TXT TYPE CHAR30,       "付款条件
         WAERS     TYPE EKKO-WAERS,   "货币
         ZTOL      TYPE EKPO-NETWR,   "总金额
         PSPHI     TYPE PRPS-PSPHI,   "产品工号
         POST1     TYPE PROJ-POST1,   "项目明称
         AEDAT     TYPE EKKO-AEDAT,   "采购订单日期
         INCO1     TYPE EKKO-INCO1,
         ZSFKG     TYPE EKKO-ZSFKG,
       END OF TY_PO_HEAD.
TYPES: BEGIN OF TY_PO_ITEM,
         EBELN           TYPE EKPO-EBELN,    "采购订单号
         EBELP           TYPE EKPO-EBELP,    "采购订单行号
         MATNR           TYPE EKPO-MATNR,    "物料编码
         ZZNAME1         TYPE MARA-ZZNAME1,  "品名
         ZZCODE          TYPE MARA-ZZCODE,   "标准
         ZZBASM          TYPE MARA-ZZBASM,   "材质
         ZZSPEC          TYPE MARA-ZZSPEC,   "规格
         ZZGBCD          TYPE EKPO-ZZGBCD, "“长 ” add cjj 20190705
         ZZGBKD          TYPE EKPO-ZZGBKD, "“宽” add cjj 20190705
         ZZGBFYKS        TYPE EKPO-ZZGBFYKS, "“块数”add cjj 20190705
         ZSGXH           TYPE EKPO-ZSGXH, "申购序号 add cjj 20191205
         IL_STATUS       TYPE ZMMT0005-IL_STATUS,    "备案状态
         IL_STATUS_TXT   TYPE CHAR10,        "备案状态text
         IL_HS_CODE      TYPE ZMMT0005-IL_HS_CODE,   "海关编码
         IL_HS_ATTACH    TYPE ZMMT0005-IL_HS_ATTACH, "附加码
         IL_EMS_NO       TYPE ZMMT0005-IL_EMS_NO,    "报关项号
         "开始-通过TR -  S4DK906152 添加 20190614
         IL_STATUS_TXT_N TYPE CHAR10,                "新账册零件报关备案状态
         IL_HS_NR        TYPE ZE_HS_NR,               "HS编码
         IL_EMS_NO_1     TYPE ZE_EMS_NO_1,            "海关商品料号
         "结束-通过TR -  S4DK906152 添加 20190614
         ZTEXT           TYPE CHAR100,       "采购说明
         MEINS           TYPE EKPO-MEINS ,   "单位
         ZPRICE          TYPE EKPO-NETWR,    "含税价
         ZFYDJ           TYPE EKPO-NETWR,    "发运单价
         MENGE           TYPE EKPO-MENGE,    "订购数
         ZLFIMG          TYPE LIPS-LFIMG,    "待发数
         ZJE             TYPE EKPO-NETWR,    "金额
         ZCPMC           TYPE CHAR40,        "产品名称
         BANFN           TYPE EKPO-BANFN,    "申请单号
         BNFPO           TYPE EKPO-BNFPO,    "申请单行号
         LGORT           TYPE EKPO-LGORT,    "计划仓库
         MEMO            TYPE CHAR100,       "备注
         ELIKZ           TYPE EKPO-ELIKZ,    "X:采购订单行为完成项
         ZTAX            TYPE KBETR_KOND,            "税率
         ZTAXTYPE        TYPE CHAR10,                "赋税类型
         ZTAXTYPE_TXT    TYPE CHAR10,                "赋税类型text
         WAERS           TYPE EKKO-WAERS,   "货币
         KBETR           TYPE T007V-KBETR,    "税率 add 20190705
         ZHTH            TYPE EKKO-ZHTH,     "合同号 add 20190910
       END OF TY_PO_ITEM.
TYPES: BEGIN OF TY_TDMX_FJ,
         POSNR      TYPE LIPS-POSNR,     "提单项号
         VBELN      TYPE CHAR15, "LIPS-VBELN,     "系统单号 chg 20190528 cjj
         ZJHBH      TYPE CHAR20,         "计划编号
         MATNR      TYPE LIPS-MATNR,     "物料编码
         ZPM        TYPE CHAR40,         "品名
         ZGG        TYPE CHAR40,         "规格
         ZZBASM     TYPE MARA-ZZBASM,    "材质
         ZZCODE     TYPE MARA-ZZCODE,    "标准
         ZLFIMG     TYPE LIPS-LFIMG,     "发运数量
         MEINS      TYPE LIPS-MEINS,
         ZUTXT      TYPE CHAR30,
* Rep by caijunjie 20190718 start
*         ZPRICE   TYPE EKPO-NETPR,     "发运价格
*         ZJE      TYPE EKPO-NETPR,     "发运金额
         ZPRICE     TYPE EKPO-NETWR,     "发运价格
         ZJE        TYPE EKPO-NETWR,     "发运金额
* Rep by caijunjie 20190718 end
         PS_PSP_PNR TYPE LIPS-PS_PSP_PNR,           "工作分解 cjj 20190729
         LFDAT      TYPE EBAN-LFDAT,     "要货日期
         MEMO       TYPE CHAR200,        "备注
         ZLJBG      TYPE CHAR01,         "零件报关
         COUNTRY    TYPE LIPS-COUNTRY,
         TAX_TYPE   TYPE ZMMT0007-TAX_TYPE,
         CHARG      TYPE LIPS-CHARG,
         WAERS      TYPE WAERS,
         WERKS      TYPE EKPO-WERKS,
       END OF TY_TDMX_FJ.
TYPES: BEGIN OF TY_CFMX,
         ZIDX         TYPE I,            "排列序号
         ZPAKNO       TYPE CHAR20,       "装箱单号
         MATNR_CF     TYPE MARA-MATNR,   "拆分品名编码
         MAKTX        TYPE MAKT-MAKTX,   "拆分品名描述
         MEINS        TYPE MARA-MEINS,   "拆分计量单位
         MEINS_TXT    TYPE CHAR30,       "拆分计量单位text
         ZPAKSL       TYPE LIPS-LFIMG,   "装箱数量
         ZCOUNTRY     TYPE LIPS-COUNTRY, "原产国
         ZCOUNTRY_TXT TYPE CHAR20,       "原产国text
         ZZJ          TYPE CHAR01,       "是否主件
         ZMEMO        TYPE CHAR100,      "备注
         ZMSG         TYPE CHAR200,
         ZSTATUS      TYPE CHAR10,
       END OF TY_CFMX.
TYPES: BEGIN OF TY_COND,
         MATNR   TYPE MARA-MATNR,
         ZZNAME1 TYPE MARA-ZZNAME1,    "品名
         ZZCODE  TYPE MARA-ZZCODE,     "标准
         ZZBASM  TYPE MARA-ZZBASM,     "材质
         ZZSPEC  TYPE MARA-ZZSPEC,     "规格
       END OF TY_COND.
TYPES: BEGIN OF TY_SEAR_MATNR,
         MATNR                TYPE MARA-MATNR,
         ZZNAME1              TYPE MARA-ZZNAME1,
         IL_ITEM_NAME         TYPE ZMMT0005-IL_ITEM_NAME,
         ZZCODE               TYPE MARA-ZZCODE,
         ZZSPEC               TYPE MARA-ZZSPEC,
         ZZBASM               TYPE MARA-ZZBASM,
         IL_STATUS            TYPE ZMMT0005-IL_STATUS,
         IL_STATUS_TXT        TYPE CHAR10,
         IL_HS_CODE           TYPE ZMMT0005-IL_HS_CODE,
         IL_HS_ATTACH         TYPE ZMMT0005-IL_HS_ATTACH,
         IL_EMS_NO            TYPE ZMMT0005-IL_EMS_NO,
         MEINS                TYPE MARA-MEINS,
         MEINS_TXT            TYPE CHAR30,
         IL_IMPORT_UNIT_1     TYPE ZMMT0005-IL_IMPORT_UNIT_1,
         IL_IMPORT_UNIT_1_TXT TYPE CHAR30,
         IL_IMPORT_UNIT_2     TYPE ZMMT0005-IL_IMPORT_UNIT_2,
         IL_IMPORT_UNIT_2_TXT TYPE CHAR30,
         IL_RECORD_FLAG       TYPE ZMMT0005-IL_RECORD_FLAG,
         IL_IMPORT_CATG       TYPE ZMMT0005-IL_IMPORT_CATG,
       END OF TY_SEAR_MATNR.
TYPES: BEGIN OF TY_FJXS,

         VBELN                TYPE CHAR15, "LIPS-VBELN, chg 20190528 cjj
         POSNR                TYPE LIPS-POSNR,
         SORT_ORDER           TYPE ZMMT0007-SORT_ORDER,    "排列序号
         PACK_BILL            TYPE ZMMT0007-PACK_BILL,     "装箱单号
         ITEM_ID              TYPE ZMMT0007-ITEM_ID,       "拆分品名编码
         ITEM_NAME            TYPE ZMMT0007-ITEM_NAME,     "拆分品名描述
         UNIT                 TYPE ZMMT0007-UNIT,          "拆分计量单位
         UNIT_TXT             TYPE CHAR30       ,          "拆分计量单位text
         PACK_QTY             TYPE ZMMT0007-PACK_QTY,      "装箱数量
         COUNTRY              TYPE ZMMT0007-COUNTRY,       "原产国
         MAIN_PART            TYPE ZMMT0007-MAIN_PART,     "是否主件
         MEMO                 TYPE ZMMT0007-MEMO,          "备注
         IL_STATUS            TYPE ZMMT0005-IL_STATUS,     "备案状态
         IL_STATUS_TXT        TYPE CHAR10,                 "备案状态text
         IL_HS_CODE           TYPE ZMMT0005-IL_HS_CODE,    "海关编码
         IL_HS_ATTACH         TYPE ZMMT0005-IL_HS_ATTACH,  "海关附加码
         IL_EMS_NO            TYPE ZMMT0005-IL_EMS_NO,     "报关项号
         "开始-通过TR -  S4DK906152 添加 20190614
         IL_STATUS_TXT_N      TYPE CHAR10,                "新账册零件报关备案状态
         IL_HS_NR             TYPE ZE_HS_NR,               "HS编码
         IL_EMS_NO_1          TYPE ZE_EMS_NO_1,            "海关商品料号
         "结束-通过TR -  S4DK906152 添加 20190614
         IL_UNIT              TYPE ZMMT0005-IL_UNIT,       "基本计量单位
         IL_UNIT_TXT          TYPE CHAR30,                 "基本计量单位
         IL_IMPORT_UNIT_1     TYPE ZMMT0005-IL_IMPORT_UNIT_1, "法定单位1
         IL_IMPORT_UNIT_1_TXT TYPE CHAR30, "法定单位1
         IL_IMPORT_UNIT_2     TYPE ZMMT0005-IL_IMPORT_UNIT_2, "法定单位2
         IL_IMPORT_UNIT_2_TXT TYPE CHAR30, "法定单位2
         IL_RECORD_FLAG       TYPE ZMMT0005-IL_RECORD_FLAG,   "备案标志
         IL_IMPORT_CATG       TYPE ZMMT0005-IL_IMPORT_CATG,   "报关类型
         IL_MEMO              TYPE ZMMT0005-IL_MEMO,          "备案意见
       END OF TY_FJXS.
TYPES: BEGIN OF TY_TREE_MATNR,
         MATKL1 TYPE CHAR02,
         MATKL2 TYPE CHAR04,
         MATKL3 TYPE CHAR6,
         MATNR  TYPE MARA-MATNR,
         MAKTX  TYPE MAKT-MAKTX,
         MATKL  TYPE MARA-MATKL,
       END OF TY_TREE_MATNR,
       BEGIN OF TY_MATDOC, "add cjj 20190528
         VBELN_IM TYPE MATDOC-VBELN_IM, "add cjj 20190528
         MBLNR    TYPE MATDOC-MBLNR, "add cjj 20190528
         BUDAT    TYPE MATDOC-BUDAT, "add cjj 20190528
       END OF TY_MATDOC, "add cjj 20190528
       TY_T_MATDOC TYPE STANDARD TABLE OF TY_MATDOC,
       BEGIN OF TY_PRPS, "add cjj 20190528 start
         USR08 TYPE PRPS-USR08,
         USR09 TYPE PRPS-USR09,
         USR00 TYPE PRPS-USR00,
         PSPNR TYPE PRPS-PSPNR,
         PSPHI TYPE PRPS-PSPHI, "add cjj 20190611
         POST1 TYPE PRPS-POST1, "add cjj 20190611
         SLWID TYPE PRPS-SLWID, "add cjj 20191028
       END OF TY_PRPS. "add cjj 20190528 end
"add cjj 20190611 start
TYPES: BEGIN OF TYP_T001L,
         LGORT TYPE T001L-LGORT,
         LGOBE TYPE T001L-LGOBE,
       END OF TYP_T001L,
       TYP_T_T001L TYPE STANDARD TABLE OF TYP_T001L,
       BEGIN OF TYP_T006A,
         MSEHI TYPE T006A-MSEHI,
         MSEHL TYPE T006A-MSEHL,
       END OF TYP_T006A,
       BEGIN OF TYP_T005T,
         LAND1 TYPE T005T-LAND1,
         LANDX TYPE T005T-LANDX,
       END OF TYP_T005T,
       BEGIN OF TYP_LFA1,
         LIFNR TYPE LFA1-LIFNR,
         NAME1 TYPE LFA1-NAME1,
         NAME2 TYPE LFA1-NAME2,
       END OF TYP_LFA1,
       TYP_T_LFA1 TYPE STANDARD TABLE OF TYP_LFA1,
       BEGIN OF TYP_USER_ADDR,
         BNAME      TYPE USER_ADDR-BNAME,
         NAME_TEXTC TYPE USER_ADDR-NAME_TEXTC,
       END OF TYP_USER_ADDR,
       TYP_T_USER_ADDR TYPE STANDARD TABLE OF TYP_USER_ADDR,
       BEGIN OF TYP_MKPF,
         USNAM    TYPE MKPF-USNAM,
         BUDAT    TYPE MKPF-BUDAT,
         VBELN_IM TYPE MSEG-VBELN_IM,
       END OF TYP_MKPF,
       TYP_T_MKPF TYPE STANDARD TABLE OF TYP_MKPF,
       BEGIN OF TYP_VBELN,
         VBELN TYPE TOA01-OBJECT_ID,
       END OF TYP_VBELN,
       BEGIN OF TYP_ZHTH,
         ZHTH TYPE TOA01-OBJECT_ID,
       END OF TYP_ZHTH,
       BEGIN OF TYP_TOA01,
         SAP_OBJECT TYPE TOA01-SAP_OBJECT,
         OBJECT_ID  TYPE TOA01-OBJECT_ID,
       END OF TYP_TOA01,
       TYP_T_TOA01     TYPE STANDARD TABLE OF TYP_TOA01,
       TYP_T_LIPS      TYPE STANDARD TABLE OF LIPS,
       TYP_T_ZMMT0123B TYPE STANDARD TABLE OF ZMMT0123B.
TYPES: BEGIN OF TY_EKKO,
         EBELN    TYPE  EKKO-EBELN,
         EKGRP    TYPE  EKKO-EKGRP,
         LIFNR    TYPE  EKKO-LIFNR,
         ZLSCH    TYPE  EKKO-ZLSCH,
         INCO1    TYPE  EKKO-INCO1,
         WKURS    TYPE  EKKO-WKURS,
         WAERS    TYPE  EKKO-WAERS,
         ZHTH     TYPE  EKKO-ZHTH,
         EBELP    TYPE  EKPO-EBELP,
         WERKS    TYPE  EKPO-WERKS,
         LGORT    TYPE  EKPO-LGORT,
         MWSKZ    TYPE  EKPO-MWSKZ,
         NETPR    TYPE  EKPO-NETPR,
         PEINH    TYPE  EKPO-PEINH,
         BANFN    TYPE  EKPO-BANFN,
         BNFPO    TYPE  EKPO-BNFPO,
         KNUMV    TYPE  EKKO-KNUMV,
         ZZGBCD   TYPE  EKPO-ZZGBCD, "“长 ” add 20190705
         ZZGBKD   TYPE  EKPO-ZZGBKD, "“宽” add 20190705
         ZZGBFYKS TYPE  EKPO-ZZGBFYKS, "“块数” add 20190705
         ZSGXH    TYPE  EKPO-ZSGXH,  "add cjj 20191205
       END OF TY_EKKO,
       BEGIN OF TY_PRCD_ELEMENTS,
         KNUMV TYPE PRCD_ELEMENTS-KNUMV,
         KPOSN TYPE PRCD_ELEMENTS-KPOSN,
         KBETR TYPE PRCD_ELEMENTS-KBETR,
         KPEIN TYPE PRCD_ELEMENTS-KPEIN,
         WAERS TYPE PRCD_ELEMENTS-WAERS,
       END OF TY_PRCD_ELEMENTS,
       "add cjj 20191118 start
       BEGIN OF TYP_RBKP,
         ZUONR  TYPE RBKP-ZUONR,
         BELNR  TYPE RBKP-BELNR,
         RBSTAT TYPE RBKP-RBSTAT,
       END OF TYP_RBKP,
       TYP_T_RBKP TYPE STANDARD TABLE OF TYP_RBKP,
       BEGIN OF TYP_ZUONR,
         VBELN TYPE RBKP-ZUONR,
       END OF TYP_ZUONR,
       TYP_T_DD07V TYPE STANDARD TABLE OF DD07V, "Add cjj 20191203
       BEGIN OF TYP_SCREEN,
         VBELN        TYPE LIKP-VBELN,       "提单号
         ZLSCH        TYPE RBKP-ZLSCH,        "付款方式
         ZTERM        TYPE INVFO-ZTERM,        "付款条件
         YFJE         TYPE DMBTR, "预付款金额  √       P_YFJE
         YFFS         TYPE RBKP-ZLSCH, "预付款付款方式 √       P_YFFS
         YFTJ         TYPE INVFO-ZTERM, "预付款付款条件 √       P_YFTJ
         ZBJE         TYPE DMBTR, "质保金金额 √       P_ZBJE
         ZBFS         TYPE RBKP-ZLSCH, "质保金付款方式 √       P_ZBFS
         ZBTJ         TYPE INVFO-ZTERM, "质保金付款条件 √       P_ZBTJ
         BUKRS        TYPE EKKO-BUKRS,
         BSART        TYPE EKKO-BSART,
         KNTTP        TYPE EKPO-KNTTP,
         WAERS        TYPE WAERS,
         SBA_INV_AMT2 TYPE ZMMT0034-SBA_INV_AMT, "发票含税金额 add cjj 20190806
         SBA_TAX_2    TYPE ZMMT0034-SBA_TAX, "发票税额 add cjj 20190806
         KOSTL        TYPE ZMMT0059_2-KOSTL, "成本中心
         HKONT        TYPE ZMMT0059_2-HKONT, "总账科目
         DMBTR_GAP    TYPE DMBTR, "余额
         FREIGHT      TYPE EKPO-NETWR,          "运费 add 20191119
         MWSKZ        TYPE EKPO-MWSKZ,           "税code add 20191119
       END OF TYP_SCREEN.
TYPES: TT_MSEG    TYPE STANDARD TABLE OF TY_MSEG,  "add cjj 20191120
       TT_BDCDATA TYPE STANDARD TABLE OF  BDCDATA. "add cjj 20191120
"add cjj 20191118 end
*----------------------------------------------------------------------*
* Data Declaration
*----------------------------------------------------------------------*
DATA GWA_FIELDCAT TYPE LVC_S_FCAT.
DATA GT_FIELDCAT1 TYPE LVC_T_FCAT.
DATA GT_FIELDCAT2 TYPE LVC_T_FCAT.
DATA GT_FIELDCAT3 TYPE LVC_T_FCAT.
DATA GT_FIELDCAT4 TYPE LVC_T_FCAT.
DATA GT_FIELDCAT5 TYPE LVC_T_FCAT.
DATA GT_FIELDCAT6 TYPE LVC_T_FCAT.
DATA GT_FIELDCAT7 TYPE LVC_T_FCAT.
DATA GT_FIELDCAT8 TYPE LVC_T_FCAT.
DATA: GT_FIELDCAT9 TYPE LVC_T_FCAT,
      GT_RBSTAT    TYPE STANDARD TABLE OF DD07V. "Add cjj 20191203
DATA GV_COL LIKE SY-CUCOL VALUE 1.
DATA OK_CODE TYPE SY-UCOMM.
DATA GT_HEAD TYPE STANDARD TABLE OF TY_HEAD.
DATA GT_ITEM TYPE STANDARD TABLE OF TY_ITEM.
DATA GT_ITEM_PARK TYPE STANDARD TABLE OF TY_ITEM. "Add cjj 20191119
DATA GT_ITEM_ALL TYPE STANDARD TABLE OF TY_ITEM.
DATA GT_TDMX TYPE STANDARD TABLE OF TY_TDMX.
DATA GT_TDMX_COPY TYPE STANDARD TABLE OF TY_TDMX.
DATA GT_TDMX_DEL TYPE STANDARD TABLE OF TY_TDMX.
DATA GT_PO_HEAD TYPE STANDARD TABLE OF TY_PO_HEAD.
DATA GT_PO_ITEM TYPE STANDARD TABLE OF TY_PO_ITEM.
DATA GT_PO_ITEM_ALL TYPE STANDARD TABLE OF TY_PO_ITEM.
DATA GCL_ALV_GRID1   TYPE REF TO CL_GUI_ALV_GRID.
DATA GCL_ALV_GRID2   TYPE REF TO CL_GUI_ALV_GRID.
DATA GCL_ALV_GRID3   TYPE REF TO CL_GUI_ALV_GRID.
DATA GCL_ALV_GRID4   TYPE REF TO CL_GUI_ALV_GRID.
DATA GCL_ALV_GRID5   TYPE REF TO CL_GUI_ALV_GRID.
DATA GCL_ALV_GRID6   TYPE REF TO CL_GUI_ALV_GRID.
DATA GCL_ALV_GRID7   TYPE REF TO CL_GUI_ALV_GRID.
DATA GCL_ALV_GRID8   TYPE REF TO CL_GUI_ALV_GRID.
DATA GCL_ALV_GRID9   TYPE REF TO CL_GUI_ALV_GRID.
DATA GCL_CCONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA GCL_CCONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA GCL_CCONTAINER3 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA GCL_CCONTAINER4 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA GCL_CCONTAINER5 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA GCL_CCONTAINER6 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA GCL_CCONTAINER7 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA GCL_CCONTAINER8 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA GCL_CCONTAINER9 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA GT_EXCLUDE  TYPE UI_FUNCTIONS.
DATA GWA_JKTD TYPE TY_JKTD.
DATA GWA_COND TYPE TY_SEARCH_PO.
DATA GWA_HEAD TYPE TY_HEAD.
DATA GV_TYPE TYPE CHAR01.
DATA GV_ROW TYPE I.
DATA GV_ROW_HEAD TYPE I.
DATA: GV_VBELN TYPE CHAR15."add 20190529 cjj
DATA GV_COLUM_HEAD TYPE CHAR30.
DATA GV_ROW4 TYPE I.
DATA GV_NEW_CHG TYPE CHAR01.
DATA : BEGIN OF GT_BDCDATA OCCURS 0.
    INCLUDE STRUCTURE BDCDATA.
DATA : END OF GT_BDCDATA.
TYPES: BEGIN OF TY_ZMMT0030.
TYPES: ZSTA TYPE CHAR10.
    INCLUDE TYPE ZMMT0030.
TYPES: END OF TY_ZMMT0030.
DATA GT_HTPC TYPE STANDARD TABLE OF TY_ZMMT0030.
DATA GWA_TDMX_FJ TYPE TY_TDMX_FJ.
DATA GT_CFMX TYPE STANDARD TABLE OF TY_CFMX.
DATA GWA_WL_COND TYPE TY_COND.
DATA GT_SEAR_MATNR TYPE STANDARD TABLE OF TY_SEAR_MATNR.
"simple tree
CLASS LCL_APPLICATION DEFINITION DEFERRED.
DATA: GCL_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      GCL_TREE             TYPE REF TO CL_GUI_SIMPLE_TREE.
DATA: NODE_TABLE LIKE TABLE OF MTREESNODE, "节点表
      NODE1      TYPE MTREESNODE.   "节点
DATA: G_APPLICATION TYPE REF TO LCL_APPLICATION.
DATA GT_FJXS_ALL TYPE STANDARD TABLE OF TY_FJXS.
DATA GT_FJXS TYPE STANDARD TABLE OF TY_FJXS.
"alv tree
DATA G_CONTAINER300 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA G_TREE_300           TYPE REF TO CL_GUI_ALV_TREE.
DATA GS_HIERARCHY_HEADER  TYPE TREEV_HHDR.
DATA GT_TREE_MATNR        TYPE STANDARD TABLE OF TY_TREE_MATNR.
DATA GT_FIELDCAT300       TYPE LVC_T_FCAT. "
DATA GT_SORT300           TYPE LVC_T_SORT.
DATA:BEGIN OF GT_FIELDNAME  OCCURS 0,
       NAME TYPE CHAR20,
     END  OF GT_FIELDNAME.
DATA GV_COUNT TYPE I.
DATA GV_DLPS TYPE I.   "电缆盘数
DATA FLG_RETURN TYPE C.   "退货处理标志 cjj 20190529
DATA: GT_T006A TYPE STANDARD TABLE OF TYP_T006A. "Add cjj 20190611

"开始-通过TR - S4DK906152 添加 20190614
DATA GV_OLD_ACCOUNT_NR    TYPE ZE_ACT_BOOK_NR. " 旧账册
DATA GV_ACCOUNT_NR        TYPE ZE_ACT_BOOK_NR. " 当前账册
DATA GV_NEW_ACCOUNT_NR    TYPE ZE_ACT_BOOK_NR. " 新账册
DATA GV_ACBK_USE          TYPE C.              " 是否启用新账册
"结束-通过TR - S4DK906152 添加 20190614
DATA: ZTERM         LIKE INVFO-ZTERM,
      GV_PARK_INDEX TYPE SY-TABIX, "add cjj 20191128
      GS_0101       TYPE  TYP_SCREEN. "0101 屏幕字段

*----------------------------------------------------------------------*
* Constants Declaration
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
*       class lcl_event_receiver definition
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_APPLICATION DEFINITION.
  PUBLIC SECTION.
    METHODS:
      HANDLE_NODE_DOUBLE_CLICK
      FOR EVENT NODE_DOUBLE_CLICK
                    OF CL_GUI_SIMPLE_TREE
        IMPORTING NODE_KEY.
ENDCLASS.
CLASS LCL_EVENT_RECEIVER DEFINITION.
  PUBLIC SECTION.
    METHODS:
*--用户双击事件
      HANDLE_DOUBLE_CLICK
                    FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
        IMPORTING E_ROW E_COLUMN ES_ROW_NO,
*--用户双击事件
      HANDLE_DOUBLE_CLICK2
                    FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
        IMPORTING E_ROW E_COLUMN ES_ROW_NO,
*--用户双击事件
      HANDLE_DOUBLE_CLICK3
                    FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
        IMPORTING E_ROW E_COLUMN ES_ROW_NO,
*--用户双击事件
      HANDLE_DOUBLE_CLICK4
                    FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
        IMPORTING E_ROW E_COLUMN ES_ROW_NO,

* USER COMMAND(LINK CLICK)
      ON_HOTSPOT_CLICK
                    FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
        IMPORTING E_ROW_ID E_COLUMN_ID,
* USER COMMAND(LINK CLICK)
      ON_HOTSPOT_CLICK_PO
                    FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
        IMPORTING E_ROW_ID E_COLUMN_ID,
* USER COMMAND(LINK CLICK)
      ON_HOTSPOT_CLICK_ITEM
                    FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
        IMPORTING E_ROW_ID E_COLUMN_ID,

* HANDLE_DATA_CHANGED_FINISHED
      HANDLE_DATA_CHANGED_FINISHED
                    FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID
        IMPORTING E_MODIFIED ET_GOOD_CELLS,
* HANDLE_DATA_CHANGED_FINISHED for GT_CFMX
      HANDLE_DATA_CHANGED_FINISHED1
                    FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID
        IMPORTING E_MODIFIED ET_GOOD_CELLS,
* add cjj 20190910 start
      HANDLE_TOOLBAR
                    FOR EVENT TOOLBAR  OF CL_GUI_ALV_GRID
        IMPORTING E_OBJECT  E_INTERACTIVE,
      ON_USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
        IMPORTING E_UCOMM.
* add cjj 20190910 end
ENDCLASS.                    "lcl_event_receiver DEFINITION
*&---------------------------------------------------------------------*
*&       class (implementation)  lcl_event_receiver
*&---------------------------------------------------------------------*
*        text
*----------------------------------------------------------------------*
CLASS LCL_APPLICATION IMPLEMENTATION.
  METHOD  HANDLE_NODE_DOUBLE_CLICK.
    DATA LV_STR TYPE STRING.

    IF NODE_KEY <> 'ROOT'.
      READ TABLE NODE_TABLE INTO NODE1 WITH KEY NODE_KEY = NODE_KEY.
      IF SY-SUBRC = 0.
        SPLIT NODE1-TEXT AT '' INTO GWA_WL_COND-MATNR LV_STR.
      ENDIF.

      LEAVE TO SCREEN 0.
    ENDIF.

  ENDMETHOD.
ENDCLASS.
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
*--handle_double_click
  METHOD HANDLE_DOUBLE_CLICK.
    PERFORM FRM_HANDLE_DOUBLE_CLICK USING E_ROW E_COLUMN ES_ROW_NO.
  ENDMETHOD.                  "HANDLE_DOUBLE_CLICK

  METHOD HANDLE_DOUBLE_CLICK2.
    PERFORM FRM_HANDLE_DOUBLE_CLICK2 USING E_ROW E_COLUMN ES_ROW_NO.
  ENDMETHOD.                  "HANDLE_DOUBLE_CLICK

  METHOD HANDLE_DOUBLE_CLICK3.
    PERFORM FRM_HANDLE_DOUBLE_CLICK3 USING E_ROW E_COLUMN ES_ROW_NO.
  ENDMETHOD.                  "HANDLE_DOUBLE_CLICK

  METHOD HANDLE_DOUBLE_CLICK4.
    PERFORM FRM_HANDLE_DOUBLE_CLICK4 USING E_ROW E_COLUMN ES_ROW_NO.
  ENDMETHOD.                  "HANDLE_DOUBLE_CLICK

  METHOD ON_HOTSPOT_CLICK.
    PERFORM FRM_DISP_ITEM USING E_ROW_ID E_COLUMN_ID.
  ENDMETHOD.                    " ON_HOTSPOT_CLICK

  METHOD ON_HOTSPOT_CLICK_PO.
    PERFORM FRM_DISP_ITEM_PO USING E_ROW_ID E_COLUMN_ID.
  ENDMETHOD.                    " ON_HOTSPOT_CLICK

  METHOD ON_HOTSPOT_CLICK_ITEM.
    PERFORM FRM_DISP_ITEM_LIPS USING E_ROW_ID E_COLUMN_ID.
  ENDMETHOD.                    " ON_HOTSPOT_CLICK

  METHOD HANDLE_DATA_CHANGED_FINISHED .
    PERFORM FRM_DATA_CHANGED_FINISHED TABLES ET_GOOD_CELLS USING E_MODIFIED .
  ENDMETHOD .

  METHOD HANDLE_DATA_CHANGED_FINISHED1.
    PERFORM FRM_DATA_CHANGED_FINISHED1 TABLES ET_GOOD_CELLS USING E_MODIFIED .
  ENDMETHOD .
* add cjj 20190910 start
  METHOD HANDLE_TOOLBAR.
*    PERFORM HANDLE_TOOLBAR changing E_OBJECT.
    DATA LS_TOOLBAR TYPE STB_BUTTON.
    CLEAR LS_TOOLBAR.
    LS_TOOLBAR-FUNCTION = 'SAL'.
    LS_TOOLBAR-ICON = ICON_SEARCH.
    LS_TOOLBAR-QUICKINFO = '查询'.
    LS_TOOLBAR-TEXT = ''.
    LS_TOOLBAR-DISABLED = ''.
    INSERT LS_TOOLBAR INTO E_OBJECT->MT_TOOLBAR INDEX 22.
*    CLEAR LS_TOOLBAR.
*    LS_TOOLBAR-FUNCTION = 'CAL'.
*    LS_TOOLBAR-ICON = ICON_DESELECT_ALL.
*    LS_TOOLBAR-QUICKINFO = '全取消'.
*    LS_TOOLBAR-TEXT = ''.
*    LS_TOOLBAR-DISABLED = ''.
*    insert LS_TOOLBAR inTO E_OBJECT->MT_TOOLBAR index 11.
  ENDMETHOD.
  METHOD ON_USER_COMMAND.
    PERFORM ON_USER_COMMAND CHANGING E_UCOMM.

  ENDMETHOD.
* add cjj 20190910 end
ENDCLASS.               "LCL_EVENT_RECEIVER


*&---------------------------------------------------------------------*
*& MACRO
*&---------------------------------------------------------------------*
DEFINE MCR_ADD_FDCAT.
  CLEAR gwa_fieldcat.
  gwa_fieldcat-col_pos      = gv_col.
  gwa_fieldcat-fieldname    = &1.
  gwa_fieldcat-tabname      = &2.
  gwa_fieldcat-reptext      = &3.
  gwa_fieldcat-checkbox     = &4.
  gwa_fieldcat-ref_field    = &5.
  gwa_fieldcat-edit         = &6.
  gwa_fieldcat-hotspot      = &7.
  gwa_fieldcat-convexit     = &8.
  gwa_fieldcat-ref_table    = &9.
  IF gv_type = '1'.
    IF gwa_fieldcat-fieldname = 'ZFYJE' OR gwa_fieldcat-fieldname = 'FREIGHT'
      OR gwa_fieldcat-fieldname = 'ZTOL'.
      gwa_fieldcat-cfieldname = 'WAERS'.
    ENDIF.
    APPEND gwa_fieldcat TO gt_fieldcat1.
  ELSEIF gv_type = '2'.
    IF gwa_fieldcat-fieldname = 'ZJE'.
      gwa_fieldcat-cfieldname = 'WAERS'.
    ENDIF.
    APPEND gwa_fieldcat TO gt_fieldcat2.
  ELSEIF gv_type = '3'.
    IF gwa_fieldcat-fieldname = 'ZPRICE'
        OR gwa_fieldcat-fieldname = 'ZFYDJ'
        OR gwa_fieldcat-fieldname = 'ZJE'.
      gwa_fieldcat-cfieldname = 'WAERS'.
    ENDIF.
    APPEND gwa_fieldcat TO gt_fieldcat3.
  ELSEIF gv_type = '4'.
    IF gwa_fieldcat-fieldname = 'ZTOL'.
      gwa_fieldcat-cfieldname = 'WAERS'.
    ENDIF.
    APPEND gwa_fieldcat TO gt_fieldcat4.
  ELSEIF gv_type = '5'.
    IF gwa_fieldcat-fieldname = 'ZPRICE' OR gwa_fieldcat-fieldname = 'ZFYDJ' OR gwa_fieldcat-fieldname = 'ZJE'.
      gwa_fieldcat-cfieldname = 'WAERS'.
    ENDIF.

    APPEND gwa_fieldcat TO gt_fieldcat5.
  ELSEIF gv_type = '6'.
    APPEND gwa_fieldcat TO gt_fieldcat6.
  ELSEIF gv_type = '7'.
    IF &1 = 'ZSTATUS'.
      gwa_fieldcat-icon    = 'X'.
    ENDIF.
    APPEND gwa_fieldcat TO gt_fieldcat7.
  ELSEIF gv_type = '8'.
    APPEND gwa_fieldcat TO gt_fieldcat8.
  ELSEIF gv_type = '9'.
    APPEND gwa_fieldcat TO gt_fieldcat9.
  ENDIF.

  gv_col = gv_col + 1.
END-OF-DEFINITION.

*----------------------------------------------------------------------*
* Description:
*   Screen layout
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS S_WERKS FOR LIPS-WERKS DEFAULT '1000'.
SELECT-OPTIONS S_LIFNR FOR EKKO-LIFNR.    "供应商
*SELECT-OPTIONS S_VBELN FOR LIPS-VBELN.    "提单号 chg 20190529 cjj
SELECT-OPTIONS S_VBELN FOR GV_VBELN MATCHCODE OBJECT F4_LIKP.    "提单号 chg 20190529 cjj

SELECT-OPTIONS S_EKGRP FOR EKKO-EKGRP.    "采购组
SELECT-OPTIONS S_PSPID FOR PROJ-PSPNR NO-EXTENSION NO INTERVALS. "PROJ-PSPID.    "项目号
SELECT-OPTIONS S_ZHTH  FOR EKKO-ZHTH.     "合同号
SELECT-OPTIONS S_LGORT FOR LIPS-LGORT.    "入库仓库
SELECT-OPTIONS S_PINM  FOR LIPS-ARKTX NO-EXTENSION NO INTERVALS. "品名
SELECT-OPTIONS S_GG    FOR LIPS-ARKTX NO-EXTENSION NO INTERVALS. "规格
SELECT-OPTIONS S_ERDAT FOR LIKP-PACK_DATE."提单日期
SELECT-OPTIONS S_ZZDATE FOR LIPS-ERDAT.   "中转日期(待定)
SELECT-OPTIONS S_BUDAT  FOR MKPF-BUDAT.   "入库日期
SELECT-OPTIONS S_LDDAT FOR LIKP-LDDAT.    "装船日期
SELECT-OPTIONS S_LFDAT FOR LIKP-LFDAT.    "预计到港
"状态
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(8) TEXT-005.
PARAMETERS: P_STA0 RADIOBUTTON GROUP RG1. "全部
SELECTION-SCREEN COMMENT 12(5) TEXT-011 FOR FIELD P_STA0.

PARAMETERS: P_STA1 RADIOBUTTON GROUP RG1 DEFAULT 'X'. "新建
SELECTION-SCREEN COMMENT 20(5) TEXT-002 FOR FIELD P_STA1.

PARAMETERS:  P_STA2 RADIOBUTTON GROUP RG1. "审核
SELECTION-SCREEN COMMENT 30(5) TEXT-003 FOR FIELD P_STA2.

*PARAMETERS: P_STA3 RADIOBUTTON GROUP RG1 . "完成
*SELECTION-SCREEN COMMENT 45(5) TEXT-004 FOR FIELD P_STA3.
SELECTION-SCREEN END OF LINE.
"中转状态
*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 1(8) TEXT-006.
*SELECTION-SCREEN END OF LINE.
"单据类型
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(8) TEXT-007.
PARAMETERS: P_DJLX0 RADIOBUTTON GROUP RG3. "全部
SELECTION-SCREEN COMMENT 12(5) TEXT-011 FOR FIELD P_DJLX0.

PARAMETERS: P_DJLX1 RADIOBUTTON GROUP RG3.  "退货
SELECTION-SCREEN COMMENT 20(5) TEXT-008 FOR FIELD P_DJLX1.

PARAMETERS: P_DJLX2 RADIOBUTTON GROUP RG3.  "送货
SELECTION-SCREEN COMMENT 30(10) TEXT-009 FOR FIELD P_DJLX2.
SELECTION-SCREEN END OF LINE.
"单据状态
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(8) TEXT-016.
PARAMETERS: P_DJZT0 RADIOBUTTON GROUP RG5. "全部
SELECTION-SCREEN COMMENT 12(5) TEXT-011 FOR FIELD P_DJZT0.

PARAMETERS: P_DJZT1 RADIOBUTTON GROUP RG5. "不报
SELECTION-SCREEN COMMENT 20(5) TEXT-017 FOR FIELD P_DJZT1.

PARAMETERS:  P_DJZT2 RADIOBUTTON GROUP RG5. "已报
SELECTION-SCREEN COMMENT 30(5) TEXT-018 FOR FIELD P_DJZT2.

PARAMETERS: P_DJZT3 RADIOBUTTON GROUP RG5. "未报
SELECTION-SCREEN COMMENT 40(5) TEXT-019 FOR FIELD P_DJZT3.

PARAMETERS: P_DJZT4 RADIOBUTTON GROUP RG5. "入库
SELECTION-SCREEN COMMENT 50(5) TEXT-020 FOR FIELD P_DJZT4.
SELECTION-SCREEN END OF LINE.
"辅助状态
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(8) TEXT-012.
PARAMETERS: P_FZZT0 RADIOBUTTON GROUP RG4. "全部
SELECTION-SCREEN COMMENT 12(5) TEXT-011 FOR FIELD P_FZZT0.

PARAMETERS: P_FZZT1 RADIOBUTTON GROUP RG4. "未确认
SELECTION-SCREEN COMMENT 20(5) TEXT-013 FOR FIELD P_FZZT1.

PARAMETERS:  P_FZZT2 RADIOBUTTON GROUP RG4. "确认
SELECTION-SCREEN COMMENT 30(5) TEXT-014 FOR FIELD P_FZZT2.

PARAMETERS: P_FZZT3 RADIOBUTTON GROUP RG4. "退回
SELECTION-SCREEN COMMENT 45(5) TEXT-015 FOR FIELD P_FZZT3.
SELECTION-SCREEN END OF LINE.
"工号状态
*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 1(8) TEXT-021.
**PARAMETERS: p_ghzt0 RADIOBUTTON GROUP rg6. "全部
**SELECTION-SCREEN COMMENT 12(5) TEXT-011 FOR FIELD p_ghzt0.
*SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BLK.

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

SELECT SINGLE PARVA INTO S_EKGRP-LOW
FROM USR05
WHERE BNAME = SY-UNAME
AND PARID = 'EKG'.
S_EKGRP-SIGN = 'I'.
S_EKGRP-OPTION = 'EQ'.
IF S_EKGRP-LOW IS NOT INITIAL.
APPEND S_EKGRP.
ENDIF.

PERFORM FRM_GET_ACCOUNT_NR. " 通过TR - S4DK906152 添加 20190614

*----------------------------------------------------------------------*
* AT SELECTION-SCREEN
*----------------------------------------------------------------------*
AT SELECTION-SCREEN .

*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM FRM_GET_DATA.
CALL SCREEN 9000.

*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
DATA LT_UCOMM1 TYPE STANDARD TABLE OF SY-UCOMM WITH HEADER LINE.

* LT_UCOMM1 = 'ZRESENT'.
* APPEND LT_UCOMM1.
* LT_UCOMM1 = 'ZHTFJ'.
* APPEND LT_UCOMM1.
* LT_UCOMM1 = 'ZTDFJ'.
* APPEND LT_UCOMM1.
* LT_UCOMM1 = 'ZFPFJ'.
* APPEND LT_UCOMM1.
* LT_UCOMM1 = 'ZZTRKDFJ'.
* APPEND LT_UCOMM1.
* LT_UCOMM1 = 'ZZSRKDFJ'.
* APPEND LT_UCOMM1.
* LT_UCOMM1 = 'ZBGDFJ'.
* APPEND LT_UCOMM1.

SET PF-STATUS 'STA_9000' EXCLUDING LT_UCOMM1.
SET TITLEBAR 'TIL_9000'.
PERFORM FRM_DISP_ALV.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_DISP_ALV
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DISP_ALV .
DATA LWA_LAYOUT TYPE LVC_S_LAYO.
DATA IS_VARIANT1 TYPE DISVARIANT.
DATA IS_VARIANT2 TYPE DISVARIANT.

"show head data
IF GCL_ALV_GRID1 IS INITIAL.
CREATE OBJECT GCL_CCONTAINER1
EXPORTING
CONTAINER_NAME = 'CON1'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CREATE OBJECT GCL_ALV_GRID1
EXPORTING
I_PARENT = GCL_CCONTAINER1.

PERFORM FRM_GET_FIELDCAT USING 'GT_HEAD'.
PERFORM FRM_GET_EXCLUDE CHANGING GT_EXCLUDE.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
* LWA_LAYOUT-SEL_MODE = 'D'.
LWA_LAYOUT-INFO_FNAME = 'ROWCOLOR'.
IS_VARIANT1-REPORT = SY-REPID && 'HEAD'.

CALL METHOD GCL_ALV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LWA_LAYOUT
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_VARIANT = IS_VARIANT1
I_DEFAULT = 'X'
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT1
IT_OUTTAB = GT_HEAD.

DATA EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK3 FOR GCL_ALV_GRID1.
SET HANDLER EVENT_RECEIVER->ON_HOTSPOT_CLICK FOR GCL_ALV_GRID1.

ELSE.
* CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
PERFORM FRM_SET_CURSOR.
ENDIF.

"show item data
IF GCL_ALV_GRID2 IS INITIAL.
CREATE OBJECT GCL_CCONTAINER2
EXPORTING
CONTAINER_NAME = 'CON2'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CREATE OBJECT GCL_ALV_GRID2
EXPORTING
I_PARENT = GCL_CCONTAINER2.

PERFORM FRM_GET_FIELDCAT USING 'GT_ITEM'.
PERFORM FRM_GET_EXCLUDE CHANGING GT_EXCLUDE.

* LOOP AT GT_FIELDCAT2 INTO GWA_FIELDCAT.
* IF GWA_FIELDCAT-fieldname = 'VBELN'.
* GWA_FIELDCAT-outputlen = '25'.
* MODIFY GT_FIELDCAT2 FROM GWA_FIELDCAT INDEX sy-tabix TRANSPORTING outputlen .
* ENDIF.
* ENDLOOP.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
LWA_LAYOUT-INFO_FNAME = 'ROWCOLOR'.
LWA_LAYOUT-CTAB_FNAME = 'CELL_COLOR'.
IS_VARIANT2-REPORT = SY-REPID && 'ITEM'.

CALL METHOD GCL_ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LWA_LAYOUT
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_VARIANT = IS_VARIANT2
I_DEFAULT = 'X'
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT2
IT_OUTTAB = GT_ITEM.

CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK2 FOR GCL_ALV_GRID2.
SET HANDLER EVENT_RECEIVER->ON_HOTSPOT_CLICK_ITEM FOR GCL_ALV_GRID2.

ELSE.
CALL METHOD GCL_ALV_GRID2->REFRESH_TABLE_DISPLAY.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0316 text
*----------------------------------------------------------------------*
FORM FRM_GET_FIELDCAT USING P_TNAME TYPE CHAR20.
REFRESH: GT_FIELDCAT1,GT_FIELDCAT2,GT_FIELDCAT3,GT_FIELDCAT4,GT_FIELDCAT5,
GT_FIELDCAT6,GT_FIELDCAT7,GT_FIELDCAT8,GT_FIELDCAT9.

IF P_TNAME = 'GT_HEAD'.
GV_TYPE = '1'.
MCR_ADD_FDCAT 'ZSTATUS_TXT' P_TNAME '状态' '' '' '' 'X' '' '' .
MCR_ADD_FDCAT 'ZHTBJ' P_TNAME '合同附件' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZTDFJ' P_TNAME '提单附件' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZFPFJ' P_TNAME '发票附件' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZZTRKDFJ' P_TNAME '在途入库单附件' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZZSRKDFJ' P_TNAME '正式入库单附件' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZBGDFJ' P_TNAME '报关单附件' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZCONF_TXT' P_TNAME '确认' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'THZT' P_TNAME '退货状态' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZFASONG' P_TNAME '发送标记' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZLEIBIE' P_TNAME '类别' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'NO_CUST_TXT' P_TNAME '是否报关' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZKEGONG' P_TNAME '客供' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'VBELN' P_TNAME '系统编号' '' '' '' 'X' 'ALPHA' ''.
MCR_ADD_FDCAT 'ZHTH ' P_TNAME '合同编号' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZDELIVERYPLANNO' P_TNAME '合同批次' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'EKGRP' P_TNAME '采购员' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'EKGRP_TXT' P_TNAME '采购员名称' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'LIFNR' P_TNAME '供应商' '' '' '' 'X' 'ALPHA' ''.
MCR_ADD_FDCAT 'LIFNR_TXT' P_TNAME '供应商名称' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZWERKS' P_TNAME '入库基地' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'WERKS_TXT' P_TNAME '入库基地名称' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'LGORT' P_TNAME '入库仓库' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'LGORT_TXT' P_TNAME '入库仓库名称' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZLSCH' P_TNAME '支付方式' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZLSCH_TXT' P_TNAME '支付方式描述' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'SGTXT' P_TNAME '货物名称' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ANZPK' P_TNAME '件数' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'BTGEW' P_TNAME '毛重' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'NTGEW' P_TNAME '净重' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'GEWEI' P_TNAME '重量单位' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'GEWEI_TXT' P_TNAME '重量单位描述' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'WAERS' P_TNAME '货币' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'WAERS_TXT' P_TNAME '货币描述' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'WKURS' P_TNAME '人民币汇率' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZFYJE' P_TNAME '发运金额' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'FREIGHT' P_TNAME '运费' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZTAX' P_TNAME '税率%' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZTOL' P_TNAME '总额' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'BOLNR' P_TNAME '提单号(外部)' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'INV_NO' P_TNAME '发票号码' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'PACK_DATE' P_TNAME '提单日期' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'CUST_NO' P_TNAME '报关单号' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ITM_EXPVZ' P_TNAME '发运类型' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ITM_EXPVZ_TXT' P_TNAME '发运类型描述' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'TRADE_TYPE' P_TNAME '贸易类型' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'TRADE_TYPE_TXT' P_TNAME '贸易类型描述' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'TDDAT' P_TNAME '装船日期' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'INSPECT_DATE' P_TNAME '商检日期' '' '' '' 'X' '' ''. "add cjj 20190529
MCR_ADD_FDCAT 'CUST_DATE' P_TNAME '报关日期' '' '' '' 'X' '' ''. "add cjj 20190529
MCR_ADD_FDCAT 'ITM_KZGBE' P_TNAME '起运港' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'DUE_ARRIVE_DATE' P_TNAME '预计到港日期' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'LFDAT' P_TNAME '预计到货日期' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZQSRQ' P_TNAME '签收日期' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZDHQS' P_TNAME '到货签收' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'USNAM' P_TNAME '入库人' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'USNAM_TXT' P_TNAME '入库人名' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'BUDAT' P_TNAME '入库日期' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'MBLNR' P_TNAME '收货凭证号' '' '' '' 'X' '' ''. "add cjj 20190611
MCR_ADD_FDCAT 'MEMO' P_TNAME '备注' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ERDAT' P_TNAME '创建日期' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'AEDAT' P_TNAME '修改日期' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'BELNR' P_TNAME '发票凭证号' '' '' '' 'X' '' ''. "add cjj 20191118
MCR_ADD_FDCAT 'RBSTAT' P_TNAME '发票状态' '' '' '' 'X' '' ''. "add cjj 20191118
ELSEIF P_TNAME = 'GT_ITEM'.
GV_TYPE = '2'.
MCR_ADD_FDCAT 'VBELN' P_TNAME '系统编号' '' '' '' '' 'ALPHA' ''.
MCR_ADD_FDCAT 'POSNR' P_TNAME '提单行项目' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZNAME1' P_TNAME '品名' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZCODE' P_TNAME '标准' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZBASM' P_TNAME '材质' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZSPEC' P_TNAME '规格' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZGBCD' P_TNAME '长' '' '' '' '' '' ''. "add cjj 20190705
MCR_ADD_FDCAT 'ZZGBKD' P_TNAME '宽' '' '' '' '' '' ''. "add cjj 20190705
MCR_ADD_FDCAT 'ZZGBFYKS' P_TNAME '块数' '' '' '' '' '' ''. "add cjj 20190705
MCR_ADD_FDCAT 'ZSGXH' P_TNAME '申购序号' '' '' '' '' '' ''. "add cjj 20191205
MCR_ADD_FDCAT 'IL_STATUS_TXT' P_TNAME '备案状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_STATUS_LJBG' P_TNAME '零件报关备案状态' '' '' '' '' '' ''.
IF GV_OLD_ACCOUNT_NR = 'E22105000006'. " 通过TR - S4DK906152 添加 20190614
MCR_ADD_FDCAT 'IL_HS_CODE' P_TNAME '海关编码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_HS_ATTACH' P_TNAME '附加码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_EMS_NO' P_TNAME '报关项号' '' '' '' '' '' ''.
" 开始-通过TR - S4DK906152 添加 20190614
ENDIF.
MCR_ADD_FDCAT 'IL_STATUS_TXT_N' P_TNAME '新账册备案状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_STATUS_LJBG_N' P_TNAME '新账册零件报关备案状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_HS_NR' P_TNAME 'HS编码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_EMS_NO_1' P_TNAME '海关商品料号' '' '' '' '' '' ''.
" 结束-通过TR - S4DK906152 添加 20190614
MCR_ADD_FDCAT 'LGORT' P_TNAME '入库仓库' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'LGORT_TXT' P_TNAME '入库仓库名称' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'LGORT1' P_TNAME '计划仓库' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'LGORT1_TXT' P_TNAME '计划仓库名称' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'PSPHI' P_TNAME '产品工号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZGHZT' P_TNAME '产品工号状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'POST1' P_TNAME '项目名称' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZLARQ' P_TNAME '离岸日期' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZLXRQ' P_TNAME '立项日期' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZTAXTYPE' P_TNAME '赋税类型' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZTAXTYPE_TXT' P_TNAME '赋税类型描述' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZCGSM' P_TNAME '采购说明' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'LFIMG' P_TNAME '发运数量' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'MWSKZ' P_TNAME '税码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZTAX' P_TNAME '税率%' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZJE' P_TNAME '金额' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'WAERS' P_TNAME '货币' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'WAERS_TXT' P_TNAME '货币描述' '' '' '' '' '' ''.
* MCR_ADD_FDCAT 'PART_CUST' P_TNAME '零件报关' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'PART_CUST_TXT' P_TNAME '零件报关' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'PACK_CNT' P_TNAME '分解项数' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'MEINS_TXT' P_TNAME '单位' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'COUNTRY' P_TNAME '原产国' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'COUNTRY_TXT' P_TNAME '原产国描述' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'VGBEL' P_TNAME '采购单号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'VGPOS' P_TNAME '采购单行号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZMATKL' P_TNAME '类别' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZMATKL_TXT' P_TNAME '类别描述' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZJDFL' P_TNAME '节点分类' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZSGDH' P_TNAME '申购单号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZMEMO' P_TNAME '项目文本' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'MATNR' P_TNAME '物资编码' '' '' '' '' 'MATN1' ''.
MCR_ADD_FDCAT 'CHARG' P_TNAME '批次' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'BANFN' P_TNAME '计划编号' '' '' '' '' 'ALPHA' ''.
MCR_ADD_FDCAT 'BNFPO' P_TNAME '计划行号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'SHKZG' P_TNAME '退货项目' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZSHMX' P_TNAME '送货明细' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZCGMX' P_TNAME '采购明细' '' '' '' '' '' ''.
ELSEIF P_TNAME = 'GT_TDMX'.
GV_TYPE = '3'.
MCR_ADD_FDCAT 'ZMSG' P_TNAME '消息' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'VBELN' P_TNAME '交货' '' '' '' '' 'ALPHA' ''.
MCR_ADD_FDCAT 'POSNR' P_TNAME '交货项目' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZNAME1' P_TNAME '品名' '' '' '' '' '' ''.
IF GV_NEW_CHG = 'N'
OR GV_NEW_CHG = 'C'."add 20190530 cjj
MCR_ADD_FDCAT 'DLCF_FLG' P_TNAME '电缆拆分' 'X' '' 'X' '' '' ''. "add cjj 20190515
ENDIF.
MCR_ADD_FDCAT 'ZZCODE' P_TNAME '标准' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZBASM' P_TNAME '材质' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZSPEC' P_TNAME '规格' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZGBCD' P_TNAME '长' '' '' '' '' '' ''. "add cjj 20190705
MCR_ADD_FDCAT 'ZZGBKD' P_TNAME '宽' '' '' '' '' '' ''. "add cjj 20190705
MCR_ADD_FDCAT 'ZZGBFYKS' P_TNAME '块数' '' '' '' '' '' ''. "add cjj 20190705
MCR_ADD_FDCAT 'ZSGXH' P_TNAME '申购序号' '' '' '' '' '' ''. "add cjj 2019120
MCR_ADD_FDCAT 'IL_STATUS_TXT' P_TNAME '备案状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_RECORD_STATUS_1' P_TNAME '新备案状态' '' '' '' '' '' ''.
IF GV_OLD_ACCOUNT_NR = 'E22105000006'. " 通过TR - S4DK906152 添加 20190614
MCR_ADD_FDCAT 'IL_HS_CODE' P_TNAME '海关编码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_HS_ATTACH' P_TNAME '附加码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_EMS_NO' P_TNAME '报关项号' '' '' '' '' '' ''.
" 开始-通过TR - S4DK906152 添加 20190614
ENDIF.
MCR_ADD_FDCAT 'IL_STATUS_TXT_N' P_TNAME '新账册备案状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_HS_NR' P_TNAME 'HS编码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_EMS_NO_1' P_TNAME '海关商品料号' '' '' '' '' '' ''.
" 结束-通过TR - S4DK906152 添加 20190614
* mcr_add_fdcat 'IL_EMS_NO_1' p_tname '新项号' '' '' '' '' '' ''. " 通过TR - S4DK906152 删除 20190614
MCR_ADD_FDCAT 'ZLJBG' P_TNAME '零件报关' 'X' '' 'X' '' '' ''.
MCR_ADD_FDCAT 'ZLFIMG' P_TNAME '发运数量' '' 'ZLFIMG' 'X' '' '' 'ZMMS0123'.
MCR_ADD_FDCAT 'MEINS_TXT' P_TNAME '单位' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPRICE' P_TNAME '含税价' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZFYDJ' P_TNAME '发运单价' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZJE' P_TNAME '金额' '' 'NETWR' 'X' '' '' 'ZMMS0123'.
"change 20190419 修改的时候金额不联动也能修改
* IF GV_NEW_CHG = 'C'.
* MCR_ADD_FDCAT 'ZJEBLD' P_TNAME '金额不联动' 'X' '' '' '' '' ''.
* ELSEIF GV_NEW_CHG = 'N'..
MCR_ADD_FDCAT 'ZJEBLD' P_TNAME '金额不联动' 'X' '' 'X' '' '' ''.
* ENDIF.
MCR_ADD_FDCAT 'COUNTRY' P_TNAME '原产国' '' 'LAND1' 'X' '' '' 'T005'.
MCR_ADD_FDCAT 'COUNTRY_TXT' P_TNAME '原产国描述' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'PACK_CNT' P_TNAME '分解项数' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'LGORT1' P_TNAME '计划仓库' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'LGORT1_TXT' P_TNAME '计划仓库描述' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'MEMO' P_TNAME '备注' '' 'MEMO' 'X' '' '' 'ZMMS0123'.
MCR_ADD_FDCAT 'MATNR' P_TNAME '物质编码' '' '' '' '' 'MATN1' ''.
MCR_ADD_FDCAT 'BANFN' P_TNAME '申请单号' '' '' '' '' 'ALPHA' ''.
MCR_ADD_FDCAT 'BNFPO' P_TNAME '申请单行号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'EBELN' P_TNAME '采购订单号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'EBELP' P_TNAME '采购订单行号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZTAXTYPE' P_TNAME '赋税类型' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZTAXTYPE_TXT' P_TNAME '赋税类型描述' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'WAERS' P_TNAME '货币' '' '' '' '' '' ''.
ELSEIF P_TNAME = 'GT_PO_HEAD'.
GV_TYPE = '4'.
MCR_ADD_FDCAT 'EBELN' P_TNAME '采购订单号' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZHTH' P_TNAME '合同号码' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'EKNAM' P_TNAME '采购员' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZLSCH' P_TNAME '支付方式' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZLSCH_TXT' P_TNAME '支付方式描述' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'WAERS' P_TNAME '货币' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'ZTOL' P_TNAME '总金额' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'PSPHI' P_TNAME '项目编号' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'POST1' P_TNAME '项目名称' '' '' '' 'X' '' ''.
MCR_ADD_FDCAT 'AEDAT' P_TNAME '采购订单日期' '' '' '' 'X' '' ''.

ELSEIF P_TNAME = 'GT_PO_ITEM'.
GV_TYPE = '5'.
MCR_ADD_FDCAT 'EBELN' P_TNAME '采购订单号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'EBELP' P_TNAME '采购订单行号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'MATNR' P_TNAME '物质编码' '' '' '' '' 'MATN1' ''.
MCR_ADD_FDCAT 'ZZNAME1' P_TNAME '品名' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZCODE' P_TNAME '标准' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZBASM' P_TNAME '材质' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZSPEC' P_TNAME '规格' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZGBCD' P_TNAME '长' '' '' '' '' '' ''. "add cjj 20190705
MCR_ADD_FDCAT 'ZZGBKD' P_TNAME '宽' '' '' '' '' '' ''. "add cjj 20190705
MCR_ADD_FDCAT 'ZZGBFYKS' P_TNAME '块数' '' '' '' '' '' ''. "add cjj 20190705
MCR_ADD_FDCAT 'ZSGXH' P_TNAME '申购序号' '' '' '' '' '' ''. "add cjj 20191205
MCR_ADD_FDCAT 'IL_STATUS_TXT' P_TNAME '备案状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_HS_CODE' P_TNAME '海关编码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_HS_ATTACH' P_TNAME '附加码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_EMS_NO' P_TNAME '报关项号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZTEXT' P_TNAME '采购说明' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'MEINS' P_TNAME '单位' '' '' '' '' 'CUNIT' ''.
MCR_ADD_FDCAT 'ZPRICE' P_TNAME '含税价' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZFYDJ' P_TNAME '发运单价' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'MENGE' P_TNAME '订购数' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZLFIMG' P_TNAME '待发数' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ELIKZ' P_TNAME '交货已完成' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZJE' P_TNAME '金额' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZCPMC' P_TNAME '产品名称' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'BANFN' P_TNAME '申请单号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'BNFPO' P_TNAME '申请单行号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'LGORT' P_TNAME '计划仓库' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'MEMO' P_TNAME '备注' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZTAXTYPE' P_TNAME '赋税类型' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZTAXTYPE_TXT' P_TNAME '赋税类型描述' '' '' '' '' '' ''.
ELSEIF P_TNAME = 'GT_HTPC'.
GV_TYPE = '6'.
MCR_ADD_FDCAT 'ZSTA' P_TNAME '匹配状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZDELIVERYPLANNO' P_TNAME '发运计划号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'EBELN' P_TNAME '采购凭证编号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'EBELP' P_TNAME '采购凭证的项目编号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'MATNR' P_TNAME '物料编号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZCONTRACTNO' P_TNAME '采购合同号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZSUPPLIER' P_TNAME '供应商' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZBUYER' P_TNAME '采购订单创建人名' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZBUYERPHONE' P_TNAME '采购订单创建人电话' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZBUYEREMAIL' P_TNAME '采购订单创建人邮箱' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZGOODSNAME' P_TNAME '物料描述' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPICKUPADDRESS' P_TNAME '提货地址' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPICKUPCONTACT' P_TNAME '联系人' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPICKUPPHONE' P_TNAME '联系电话' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPOD' P_TNAME '目的港' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZSPECIALREQUIREMENT' P_TNAME '发运特殊要求' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZDUEDATE' P_TNAME '要求到港日期' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPLANPICKUPDATE' P_TNAME '最早可提货日期' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZTRADETYPE' P_TNAME '贸易类型' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZSTATUS' P_TNAME '状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZCARGOVALUE' P_TNAME '货值' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZCARGOVALUECURRENCY' P_TNAME '货币码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZTRANSPORTATIONMODE' P_TNAME '运输方式' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZDNCREATEID' P_TNAME '发运计划创建者' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZDNCREATEDATE' P_TNAME '发运计划创建日期' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZDNCREATETIME' P_TNAME '发运计划创建时间' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZINSURANCENO' P_TNAME '保险单号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZVESSEL' P_TNAME '船名' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZARRIVALTIME' P_TNAME '到港时间' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZLOGISTICSSTATUS' P_TNAME '发运阶段' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZCURRENCY' P_TNAME '费用币种' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZVOYAGE' P_TNAME '航次号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZOPERATOR' P_TNAME '货代操作员' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZOPERATORPHONE' P_TNAME '货代电话' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZOPERATOREMAIL' P_TNAME '货代邮箱' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZCONFIRMEDDELIVERYTIME' P_TNAME '计划交货时间' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZCONFIRMEDPICKUPTIME' P_TNAME '计划提货时间' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPOL' P_TNAME '起运港' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZBLNO' P_TNAME '提单号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPICKUPTIME' P_TNAME '提货时间' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZEXCEPTIONREASON' P_TNAME '异常原因' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZETA' P_TNAME '预计到港时间' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZONBOARDTIME' P_TNAME '装船时间' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZTOTALCHARGE' P_TNAME '总费用' '' '' '' '' '' ''.
ELSEIF P_TNAME = 'GT_CFMX'.
GV_TYPE = '7'.
MCR_ADD_FDCAT 'ZIDX' P_TNAME '排列序号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZSTATUS' P_TNAME '状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZMSG' P_TNAME '消息' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPAKNO' P_TNAME '装箱单号' '' 'PACK_BILL' 'X' '' '' 'ZMMT0007'.
MCR_ADD_FDCAT 'MATNR_CF' P_TNAME '拆分品名编码' '' 'MATNR' 'X' '' 'MATN1' 'MARA'.
MCR_ADD_FDCAT 'MAKTX' P_TNAME '拆分品名描述' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'MEINS' P_TNAME '拆分计量单位' '' '' '' '' 'CUNIT' ''.
MCR_ADD_FDCAT 'MEINS_TXT' P_TNAME '单位描述' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPAKSL' P_TNAME '装箱数量' '' 'ZPCKQTY' 'X' '' '' 'ZMMS0123'.
MCR_ADD_FDCAT 'ZCOUNTRY' P_TNAME '原产国' '' 'LAND1' 'X' '' '' 'T005'.
MCR_ADD_FDCAT 'ZCOUNTRY_TXT' P_TNAME '原产国描述' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZJ' P_TNAME '是否主件' 'X' '' 'X' '' '' ''.
MCR_ADD_FDCAT 'ZMEMO' P_TNAME '备注' '' 'MEMO' 'X' '' '' 'ZMMT0007'.
ELSEIF P_TNAME = 'GT_SEAR_MATNR'.
GV_TYPE = '8'.
MCR_ADD_FDCAT 'MATNR' P_TNAME '物料编码' '' '' '' '' 'MATN1' ''.
MCR_ADD_FDCAT 'ZZNAME1' P_TNAME '品名' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_ITEM_NAME' P_TNAME '备案品名' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZCODE' P_TNAME '标准' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZSPEC' P_TNAME '规格' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZBASM' P_TNAME '材质' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_STATUS_TXT' P_TNAME '备案状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_HS_CODE' P_TNAME '海关编码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_HS_ATTACH' P_TNAME '海关附加码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_EMS_NO' P_TNAME '报关项号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'MEINS_TXT' P_TNAME '基本计量单位' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_IMPORT_UNIT_1_TXT' P_TNAME '法定单位1' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_IMPORT_UNIT_2_TXT' P_TNAME '法定单位2' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_RECORD_FLAG' P_TNAME '备案标志' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_IMPORT_CATG' P_TNAME '报关类型' '' '' '' '' '' ''.
ELSEIF P_TNAME = 'GT_FJXS'.
GV_TYPE = '9'.
MCR_ADD_FDCAT 'SORT_ORDER' P_TNAME '拆分序号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'PACK_BILL' P_TNAME '装箱单号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ITEM_ID' P_TNAME '拆分品名编码' '' '' '' '' 'MATN1' ''.
MCR_ADD_FDCAT 'ITEM_NAME' P_TNAME '拆分品名描述' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'UNIT_TXT' P_TNAME '拆分计量单位' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'PACK_QTY' P_TNAME '装箱数量' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'COUNTRY' P_TNAME '原产国' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'MAIN_PART' P_TNAME '是否主件' 'X' '' '' '' '' ''.
MCR_ADD_FDCAT 'MEMO' P_TNAME '备注' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_STATUS_TXT' P_TNAME '备案状态' '' '' '' '' '' ''.
IF GV_OLD_ACCOUNT_NR = 'E22105000006'. " 通过TR - S4DK906152 添加 20190614
MCR_ADD_FDCAT 'IL_HS_CODE' P_TNAME '海关编码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_HS_ATTACH' P_TNAME '海关附加码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_EMS_NO' P_TNAME '报关项号' '' '' '' '' '' ''.
" 开始-通过TR - S4DK906152 添加 20190614
ENDIF.
MCR_ADD_FDCAT 'IL_STATUS_TXT_N' P_TNAME '新账册备案状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_HS_NR' P_TNAME 'HS编码' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_EMS_NO_1' P_TNAME '海关商品料号' '' '' '' '' '' ''.

" 结束-通过TR - S4DK906152 添加 20190614
MCR_ADD_FDCAT 'IL_UNIT_TXT' P_TNAME '基本计量单位' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_IMPORT_UNIT_1_TXT' P_TNAME '法定单位1' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_IMPORT_UNIT_2_TXT' P_TNAME '法定单位2' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_RECORD_FLAG' P_TNAME '备案标志' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_IMPORT_CATG' P_TNAME '报关类型' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'IL_MEMO' P_TNAME '备案意见' '' '' '' '' '' ''.

ENDIF.

ENDFORM. " FRM_GET_FIELDCAT
*&---------------------------------------------------------------------*
*& Form FRM_GET_EXCLUDE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_EXCLUDE text
*----------------------------------------------------------------------*
FORM FRM_GET_EXCLUDE CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.
DATA LWA_EXCLUDE TYPE UI_FUNC.

LWA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
APPEND LWA_EXCLUDE TO PT_EXCLUDE.
LWA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
APPEND LWA_EXCLUDE TO PT_EXCLUDE.
LWA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_MAXIMUM.
APPEND LWA_EXCLUDE TO PT_EXCLUDE.
LWA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_MINIMUM.
APPEND LWA_EXCLUDE TO PT_EXCLUDE.
LWA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
APPEND LWA_EXCLUDE TO PT_EXCLUDE.
LWA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
APPEND LWA_EXCLUDE TO PT_EXCLUDE.
LWA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
APPEND LWA_EXCLUDE TO PT_EXCLUDE.
LWA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
APPEND LWA_EXCLUDE TO PT_EXCLUDE.
LWA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
APPEND LWA_EXCLUDE TO PT_EXCLUDE.
LWA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
APPEND LWA_EXCLUDE TO PT_EXCLUDE.
LWA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
APPEND LWA_EXCLUDE TO PT_EXCLUDE.

ENDFORM. " FRM_GET_EXCLUDE
*&---------------------------------------------------------------------*
*& Module MDU_CANCEL_SCR INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MDU_CANCEL_SCR INPUT.
LEAVE TO SCREEN 0.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_GET_DATA .
* TYPES: BEGIN OF TY_EKKO,
* EBELN TYPE EKKO-EBELN,
* EKGRP TYPE EKKO-EKGRP,
* LIFNR TYPE EKKO-LIFNR,
* ZLSCH TYPE EKKO-ZLSCH,
* INCO1 TYPE EKKO-INCO1,
* WKURS TYPE EKKO-WKURS,
* WAERS TYPE EKKO-WAERS,
* ZHTH TYPE EKKO-ZHTH,
* EBELP TYPE EKPO-EBELP,
* WERKS TYPE EKPO-WERKS,
* LGORT TYPE EKPO-LGORT,
* MWSKZ TYPE EKPO-MWSKZ,
* NETPR TYPE EKPO-NETPR,
* PEINH TYPE EKPO-PEINH,
* BANFN TYPE EKPO-BANFN,
* BNFPO TYPE EKPO-BNFPO,
* END OF TY_EKKO.
DATA LT_LIKP TYPE STANDARD TABLE OF LIKP.
DATA LT_LIKP_T TYPE STANDARD TABLE OF LIKP."add cjj 20190611
DATA LWA_LIKP TYPE LIKP.
DATA LT_LIPS TYPE STANDARD TABLE OF LIPS..
DATA LT_LIPS_T TYPE STANDARD TABLE OF LIPS..
DATA LWA_LIPS TYPE LIPS.
DATA LS_LIPS TYPE LIPS."add cjj 20190711
DATA LT_LIPS_M TYPE STANDARD TABLE OF LIPS.
DATA LT_MARA TYPE STANDARD TABLE OF MARA.
DATA LWA_MARA TYPE MARA.
DATA LT_ZMMT0005 TYPE STANDARD TABLE OF ZMMT0005.
DATA LWA_ZMMT0005 TYPE ZMMT0005.
DATA LT_EKKO TYPE STANDARD TABLE OF TY_EKKO.
DATA LT_EKKO_T TYPE STANDARD TABLE OF TY_EKKO.
DATA LWA_EKKO TYPE TY_EKKO.
DATA LT_R_ZT TYPE RANGE OF CHAR10 WITH HEADER LINE.
DATA LT_R_DJZT TYPE RANGE OF CHAR10 WITH HEADER LINE.
DATA LT_R_CONF TYPE RANGE OF CHAR10 WITH HEADER LINE.
DATA LT_R_DJLX TYPE RANGE OF CHAR10 WITH HEADER LINE.
DATA LV_ARKTX TYPE LIPS-ARKTX.
DATA LV_ARKTX1 TYPE LIPS-ARKTX.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LWA_ITEM TYPE TY_ITEM.
DATA LV_SHKZG_1 TYPE CHAR01.
DATA LV_SHKZG_2 TYPE CHAR01.
DATA LV_JE TYPE EKPO-NETWR.
DATA LV_DDTEXT TYPE DD07V-DDTEXT.
DATA LV_DOMVALUE TYPE DD07V-DOMVALUE_L.
DATA LT_ZMMT0007 TYPE STANDARD TABLE OF ZMMT0007.
DATA LT_ZMMT0007_T TYPE STANDARD TABLE OF ZMMT0007.
DATA LWA_ZMMT0007 TYPE ZMMT0007.
DATA LV_CNT TYPE I.
DATA LWA_FJXS TYPE TY_FJXS.
DATA LT_ZMMT0005_FJ TYPE STANDARD TABLE OF ZMMT0005.
DATA LWA_LFA1 TYPE LFA1.
DATA LV_ID TYPE THEAD-TDID.
DATA LV_TDNAME TYPE THEAD-TDNAME.
DATA LV_OBJECT TYPE THEAD-TDOBJECT.
DATA LT_LINES TYPE STANDARD TABLE OF TLINE .
DATA LWA_LINES TYPE TLINE.
DATA LV_EBELP TYPE EBELP.
DATA LV_BA_FLG.
DATA LV_BA_FLG_NEW. " 通过TR - S4DK906152 添加 20190614
DATA LV_IN_FLG.
DATA LT_ZMMT0069_H TYPE STANDARD TABLE OF ZMMT0069_H.
DATA LWA_ZMMT0069_H TYPE ZMMT0069_H.
DATA LT_ZMMT0011 TYPE STANDARD TABLE OF ZMMT0011.
DATA LWA_ZMMT0011 TYPE ZMMT0011.
DATA LV_XM_24 TYPE CHAR24.
DATA: LT_MATDOC TYPE STANDARD TABLE OF TY_MATDOC.
DATA: LS_MATDOC TYPE TY_MATDOC.
DATA: LT_PRPS TYPE STANDARD TABLE OF TY_PRPS. "add cjj 20190605
DATA: LT_PRPS_T TYPE STANDARD TABLE OF TY_PRPS. "add cjj 20190611
DATA: LT_PROJ TYPE STANDARD TABLE OF TY_PRPS. "add cjj 20190611
DATA: LS_PRPS TYPE TY_PRPS. "add cjj 20190605
DATA: LS_PROJ TYPE TY_PRPS. "add cjj 20190611
DATA: LT_PRCD TYPE STANDARD TABLE OF TY_PRCD_ELEMENTS, "add cjj 20190722
LS_PRCD TYPE TY_PRCD_ELEMENTS, "add cjj 20190722
LV_KPOSN TYPE PRCD_ELEMENTS-KPOSN, "add cjj 20190722
LT_RBKP TYPE STANDARD TABLE OF TYP_RBKP, "add cjj 20191118
LS_RBKP TYPE TYP_RBKP, "add cjj 20191118
LT_ZUONR TYPE STANDARD TABLE OF TYP_ZUONR, "add cjj 20191118
LS_ZUONR TYPE TYP_ZUONR. "add cjj 20191118
*add cjj 20191203 start
DATA:
LV_RETURN TYPE SY-SUBRC.

CALL FUNCTION 'DD_DOMVALUES_GET'
EXPORTING
DOMNAME = 'RBSTAT' "域名
TEXT = 'X'
LANGU = SY-LANGU
IMPORTING
RC = LV_RETURN
TABLES
DD07V_TAB = GT_RBSTAT
EXCEPTIONS
WRONG_TEXTFLAG = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

*add cjj 20191203 end
CLEAR LT_PRPS.
IF S_PSPID IS NOT INITIAL.
"提单只有.01的wbs
CALL FUNCTION 'CONVERSION_EXIT_KONPD_OUTPUT'
EXPORTING
INPUT = S_PSPID-LOW
IMPORTING
OUTPUT = LV_XM_24.
LV_XM_24 = LV_XM_24 && '.01'.
REFRESH S_PSPID.

S_PSPID-SIGN = 'I'.
S_PSPID-OPTION = 'EQ'.

CALL FUNCTION 'CONVERSION_EXIT_ABPSP_INPUT'
EXPORTING
INPUT = LV_XM_24
IMPORTING
OUTPUT = S_PSPID-LOW
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ELSE.
APPEND S_PSPID.
ENDIF.
ENDIF.

LT_R_ZT-SIGN = 'I'.
LT_R_ZT-OPTION = 'EQ'.
"状态
CASE 'X'.
WHEN P_STA0.
WHEN P_STA1.
LT_R_ZT-LOW = 'Z1'. "新建
APPEND LT_R_ZT.
WHEN P_STA2.
LT_R_ZT-LOW = 'Z2'. "审核
APPEND LT_R_ZT.
* WHEN P_STA3.
* LT_R_ZT-LOW = 'Z3'. "完成
* APPEND LT_R_ZT.
ENDCASE.

"单据状态
LT_R_DJZT-SIGN = 'I'.
LT_R_DJZT-OPTION = 'EQ'.
CASE 'X'.
WHEN P_DJZT0.
WHEN P_DJZT1.
LT_R_DJZT-LOW = 'Z1'. "不报
APPEND LT_R_DJZT.
WHEN P_DJZT2.
LT_R_DJZT-LOW = 'Z2'. "已报
APPEND LT_R_DJZT.
WHEN P_DJZT3.
LT_R_DJZT-LOW = 'Z3'. "未报
APPEND LT_R_DJZT.
* WHEN P_DJZT4. "LIPS-WBSTA是非A的作为入库
* LT_R_DJZT-LOW = 'Z4'. "入库
* APPEND LT_R_DJZT.
ENDCASE.

"是否确认
LT_R_CONF-SIGN = 'I'.
LT_R_CONF-OPTION = 'EQ'.
CASE 'X'.
WHEN P_FZZT0.
WHEN P_FZZT1.
LT_R_CONF-LOW = 'Z1'.
APPEND LT_R_CONF.
WHEN P_FZZT2.
LT_R_CONF-LOW = 'Z2'.
APPEND LT_R_CONF.
WHEN P_FZZT3.
LT_R_CONF-LOW = 'Z3'.
APPEND LT_R_CONF.
ENDCASE.

"单据类型
LT_R_DJLX-SIGN = 'I'.
LT_R_DJLX-OPTION = 'EQ'.
CASE 'X'.
WHEN P_DJLX0.
WHEN P_DJLX1.
LT_R_DJLX-LOW = 'X'.
APPEND LT_R_DJLX.
WHEN P_DJLX2.
LT_R_DJLX-LOW = ''.
APPEND LT_R_DJLX.
ENDCASE.
** 优化如果选择条件只有ekko的 add 20190606 start
* IF S_VBELN[] IS INITIAL AND S_LDDAT[] IS INITIAL AND S_ERDAT[] IS INITIAL
* AND S_LGORT[] IS INITIAL AND S_WERKS[] IS INITIAL AND S_PSPID[] IS INITIAL
* AND ( S_LIFNR[] IS NOT INITIAL OR S_EKGRP[] IS NOT INITIAL OR S_ZHTH[] IS NOT INITIAL ).
* "get po data
* SELECT EKKO~EBELN
* EKKO~EKGRP
* EKKO~LIFNR
* EKKO~ZLSCH
* EKKO~INCO1
* EKKO~WKURS
* EKKO~WAERS
* EKKO~ZHTH
* EKPO~EBELP
* EKPO~WERKS
* EKPO~LGORT
* EKPO~MWSKZ
* EKPO~NETPR
* EKPO~PEINH
* EKPO~BANFN
* EKPO~BNFPO
* FROM EKKO INNER JOIN EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
* ON EKKO~EBELN = EKPO~EBELN
* INTO CORRESPONDING FIELDS OF TABLE LT_EKKO
* FOR ALL ENTRIES IN LT_LIPS
* WHERE EKKO~EBELN = LT_LIPS-VGBEL
* AND EKKO~LIFNR IN S_LIFNR
* AND EKKO~EKGRP IN S_EKGRP
* AND EKKO~EKORG = '1010'
* AND EKKO~ZHTH IN S_ZHTH
* AND EKKO~LOEKZ = SPACE
* AND EKPO~LOEKZ = SPACE.
* SORT LT_EKKO BY EBELN EBELP.
* IF SY-SUBRC = 0.
* LV_ARKTX = '%' && S_PINM-LOW && '%'.
* LV_ARKTX1 = '%' && S_GG-LOW && '%'.
* LT_EKKO_T[] = LT_EKKO[].
* SORT LT_EKKO_T BY EBELN.
* DELETE ADJACENT DUPLICATES FROM LT_EKKO_T COMPARING EBELN.
* SELECT VBELN
* POSNR
* MATNR
* WERKS
* LGORT
* LFIMG
* VRKME
* PART_CUST
* COUNTRY
* VGBEL "PO
* VGPOS "PO item
* SHKZG
* PS_PSP_PNR
* CHARG
* ZAMOUNT
* ZJEBLD
* DLCF_FLG "Add cjj 20190606
* FROM LIPS ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
* INTO CORRESPONDING FIELDS OF TABLE LT_LIPS
* FOR ALL ENTRIES IN LT_EKKO_T
* WHERE VGBEL = LT_EKKO_T-EBELN
* AND LGORT IN S_LGORT
* AND WERKS IN S_WERKS
* AND ARKTX LIKE LV_ARKTX
* AND ARKTX LIKE LV_ARKTX1
* AND PS_PSP_PNR IN S_PSPID
* AND SHKZG IN LT_R_DJLX.
* IF SY-SUBRC = 0.
* LT_LIPS_T[] = LT_LIPS[].
* SORT LT_LIPS_T BY VBELN.
* DELETE ADJACENT DUPLICATES FROM LT_LIPS_T COMPARING VBELN.
* SELECT VBELN
* CONFIRM "确认
* NO_CUST "是否报关
* ZDELIVERYPLANNO "合同批次
* ZWERKS "入库基地
* SGTXT "货物名称
* ANZPK "件数
* BTGEW "毛重
* NTGEW "净重
* GEWEI "重量单位
* FREIGHT "运费
* BOLNR "提单号(外部)
* INV_NO "发票号码
* PACK_DATE "提单日期
* ITM_EXPVZ "发运类型
* TRADE_TYPE "贸易类型
* LDDAT "装船日期
* ITM_KZGBE "起运港
* DUE_ARRIVE_DATE "预计到港日期
* LFDAT "预计到货日期
* ERDAT "创建日期
* AEDAT "修改日期
* TDDAT
* ZSTATUS
* WERKS1
* ZCARGOVALUECURRENCY
* CLIENT_BUY
* CUST_NO
* QANETWR
* WBSTK
* FROM LIKP
* INTO CORRESPONDING FIELDS OF TABLE LT_LIKP
* FOR ALL ENTRIES IN LT_LIPS_T
* WHERE VBELN = LT_LIPS_T-VBELN
* AND LFART = 'EL' "IBD
* AND ZSTATUS IN LT_R_ZT "状态
* AND ZSTATUS <> SPACE "状态
* AND NO_CUST IN LT_R_DJZT "单据状态
* AND CONFIRM <> SPACE "确认
* AND CONFIRM IN LT_R_CONF "确认
* AND LDDAT IN S_LDDAT "装船日期
* AND ERDAT IN S_ERDAT
* AND DUE_ARRIVE_DATE IN S_LFDAT. "预计到港
** add cjj 20190528 start
* SELECT VBELN_IM
* MBLNR
* BUDAT
* INTO TABLE LT_MATDOC
* FROM MATDOC
* FOR ALL ENTRIES IN LT_LIKP
* WHERE VBELN_IM = LT_LIKP-VBELN
* AND BWART = '101'
* AND CANCELLED = SPACE.
* SORT LT_MATDOC BY VBELN_IM MBLNR BUDAT DESCENDING.
** add cjj 20190528 end
* IF P_DJZT4 IS NOT INITIAL.
* DELETE LT_LIKP WHERE WBSTK = 'A'.
* ENDIF.
* CLEAR:LT_ZMMT0069_H,LT_ZMMT0011.
* SELECT IV_VBELN
* ZRESULT
* ERDAT
* ERZET
* FROM ZMMT0069_H INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0069_H
* FOR ALL ENTRIES IN LT_LIKP
* WHERE IV_VBELN = LT_LIKP-VBELN.
* SELECT * FROM ZMMT0011 INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0011
* FOR ALL ENTRIES IN LT_LIKP
* WHERE VBELN = LT_LIKP-VBELN
* AND ZISSHEN = 'Z2'.
* LT_LIPS_M[] = LT_LIPS[].
* SORT LT_LIPS_M BY PS_PSP_PNR.
* DELETE ADJACENT DUPLICATES FROM LT_LIPS_M COMPARING PS_PSP_PNR.
* SELECT USR08 USR09 USR00 PSPNR
* FROM PRPS
* INTO TABLE LT_PRPS
* FOR ALL ENTRIES IN LT_LIPS_M
* WHERE PSPNR = LT_LIPS_M-PS_PSP_PNR.
* SORT LT_PRPS BY PSPNR.
* LT_LIPS_M = LT_LIPS.
* SORT LT_LIPS_M BY MATNR.
* DELETE ADJACENT DUPLICATES FROM LT_LIPS_M COMPARING MATNR.
* SELECT MATNR
* ZZNAME1
* ZZCODE
* ZZBASM
* ZZSPEC
* MATKL
* FROM MARA
* INTO CORRESPONDING FIELDS OF TABLE LT_MARA
* FOR ALL ENTRIES IN LT_LIPS_M
* WHERE MATNR = LT_LIPS_M-MATNR.
* SORT LT_MARA BY MATNR.
*
* SELECT IL_ITEM_ID
* IL_STATUS
* IL_HS_CODE
* IL_HS_ATTACH
* IL_EMS_NO
* FROM ZMMT0005
* INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0005
* FOR ALL ENTRIES IN LT_LIPS_M
* WHERE IL_ITEM_ID = LT_LIPS_M-MATNR.
* SORT LT_ZMMT0005 BY IL_ITEM_ID.
* "提单物资拆分表
* SELECT * FROM ZMMT0007
* INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0007
* FOR ALL ENTRIES IN LT_LIPS
* WHERE RECORD_TYPE = 'Z1'
* AND VBELN = LT_LIPS-VBELN
* AND POSNR = LT_LIPS-POSNR.
* IF SY-SUBRC = 0 .
* LT_ZMMT0007_T = LT_ZMMT0007.
* SORT LT_ZMMT0007_T BY ITEM_ID.
* DELETE ADJACENT DUPLICATES FROM LT_ZMMT0007_T COMPARING ITEM_ID.
* "备案
* SELECT * FROM ZMMT0005
* INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0005_FJ
* FOR ALL ENTRIES IN LT_ZMMT0007_T
* WHERE IL_ITEM_ID = LT_ZMMT0007_T-ITEM_ID.
* ENDIF.
* ENDIF.
* ENDIF.
*
* ELSEIF S_VBELN[] IS INITIAL AND S_LDDAT[] IS INITIAL AND S_ERDAT[] IS INITIAL
* "AND S_LIFNR[] IS INITIAL AND S_EKGRP[] IS INITIAL AND S_ZHTH[] IS INITIAL
* AND ( S_LGORT[] IS NOT INITIAL OR S_WERKS[] IS NOT INITIAL OR S_PSPID[] IS NOT INITIAL ).
* LV_ARKTX = '%' && S_PINM-LOW && '%'.
* LV_ARKTX1 = '%' && S_GG-LOW && '%'.
* SELECT VBELN
* POSNR
* MATNR
* WERKS
* LGORT
* LFIMG
* VRKME
* PART_CUST
* COUNTRY
* VGBEL "PO
* VGPOS "PO item
* SHKZG
* PS_PSP_PNR
* CHARG
* ZAMOUNT
* ZJEBLD
* DLCF_FLG "Add cjj 20190606
* FROM LIPS ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
* INTO CORRESPONDING FIELDS OF TABLE LT_LIPS
* WHERE LGORT IN S_LGORT
* AND WERKS IN S_WERKS
* AND ARKTX LIKE LV_ARKTX
* AND ARKTX LIKE LV_ARKTX1
* AND PS_PSP_PNR IN S_PSPID
* AND SHKZG IN LT_R_DJLX.
* IF SY-SUBRC = 0.
* LT_LIPS_M[] = LT_LIPS[].
* SORT LT_LIPS_M BY VGBEL.
* DELETE ADJACENT DUPLICATES FROM LT_LIPS_M COMPARING VGBEL.
* "get po data
* SELECT EKKO~EBELN
* EKKO~EKGRP
* EKKO~LIFNR
* EKKO~ZLSCH
* EKKO~INCO1
* EKKO~WKURS
* EKKO~WAERS
* EKKO~ZHTH
* EKPO~EBELP
* EKPO~WERKS
* EKPO~LGORT
* EKPO~MWSKZ
* EKPO~NETPR
* EKPO~PEINH
* EKPO~BANFN
* EKPO~BNFPO
* FROM EKKO INNER JOIN EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
* ON EKKO~EBELN = EKPO~EBELN
* INTO CORRESPONDING FIELDS OF TABLE LT_EKKO
* FOR ALL ENTRIES IN LT_LIPS_M
* WHERE EKKO~EBELN = LT_LIPS_M-VGBEL
* AND EKKO~LIFNR IN S_LIFNR
* AND EKKO~EKGRP IN S_EKGRP
* AND EKKO~EKORG = '1010'
* AND EKKO~ZHTH IN S_ZHTH
* AND EKKO~LOEKZ = SPACE
* AND EKPO~LOEKZ = SPACE.
* SORT LT_EKKO BY EBELN EBELP.
* LT_LIPS_T[] = LT_LIPS[].
* SORT LT_LIPS_T BY VBELN.
* DELETE ADJACENT DUPLICATES FROM LT_LIPS_T COMPARING VBELN.
* SELECT VBELN
* CONFIRM "确认
* NO_CUST "是否报关
* ZDELIVERYPLANNO "合同批次
* ZWERKS "入库基地
* SGTXT "货物名称
* ANZPK "件数
* BTGEW "毛重
* NTGEW "净重
* GEWEI "重量单位
* FREIGHT "运费
* BOLNR "提单号(外部)
* INV_NO "发票号码
* PACK_DATE "提单日期
* ITM_EXPVZ "发运类型
* TRADE_TYPE "贸易类型
* LDDAT "装船日期
* ITM_KZGBE "起运港
* DUE_ARRIVE_DATE "预计到港日期
* LFDAT "预计到货日期
* ERDAT "创建日期
* AEDAT "修改日期
* TDDAT
* ZSTATUS
* WERKS1
* ZCARGOVALUECURRENCY
* CLIENT_BUY
* CUST_NO
* QANETWR
* WBSTK
* FROM LIKP
* INTO CORRESPONDING FIELDS OF TABLE LT_LIKP
* FOR ALL ENTRIES IN LT_LIPS_T
* WHERE VBELN = LT_LIPS_T-VBELN
* AND LFART = 'EL' "IBD
* AND ZSTATUS IN LT_R_ZT "状态
* AND ZSTATUS <> SPACE "状态
* AND NO_CUST IN LT_R_DJZT "单据状态
* AND CONFIRM <> SPACE "确认
* AND CONFIRM IN LT_R_CONF "确认
* AND LDDAT IN S_LDDAT "装船日期
* AND ERDAT IN S_ERDAT
* AND DUE_ARRIVE_DATE IN S_LFDAT. "预计到港
** add cjj 20190528 start
* SELECT VBELN_IM
* MBLNR
* BUDAT
* INTO TABLE LT_MATDOC
* FROM MATDOC
* FOR ALL ENTRIES IN LT_LIKP
* WHERE VBELN_IM = LT_LIKP-VBELN
* AND BWART = '101'
* AND CANCELLED = SPACE.
* SORT LT_MATDOC BY VBELN_IM MBLNR BUDAT DESCENDING.
** add cjj 20190528 end
* IF P_DJZT4 IS NOT INITIAL.
* DELETE LT_LIKP WHERE WBSTK = 'A'.
* ENDIF.
* CLEAR:LT_ZMMT0069_H,LT_ZMMT0011.
* SELECT IV_VBELN
* ZRESULT
* ERDAT
* ERZET
* FROM ZMMT0069_H INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0069_H
* FOR ALL ENTRIES IN LT_LIKP
* WHERE IV_VBELN = LT_LIKP-VBELN.
* SELECT * FROM ZMMT0011 INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0011
* FOR ALL ENTRIES IN LT_LIKP
* WHERE VBELN = LT_LIKP-VBELN
* AND ZISSHEN = 'Z2'.
* LT_LIPS_M[] = LT_LIPS[].
* SORT LT_LIPS_M BY PS_PSP_PNR.
* DELETE ADJACENT DUPLICATES FROM LT_LIPS_M COMPARING PS_PSP_PNR.
* SELECT USR08 USR09 USR00 PSPNR
* FROM PRPS
* INTO TABLE LT_PRPS
* FOR ALL ENTRIES IN LT_LIPS_M
* WHERE PSPNR = LT_LIPS_M-PS_PSP_PNR.
* SORT LT_PRPS BY PSPNR.
* LT_LIPS_M = LT_LIPS.
* SORT LT_LIPS_M BY MATNR.
* DELETE ADJACENT DUPLICATES FROM LT_LIPS_M COMPARING MATNR.
* SELECT MATNR
* ZZNAME1
* ZZCODE
* ZZBASM
* ZZSPEC
* MATKL
* FROM MARA
* INTO CORRESPONDING FIELDS OF TABLE LT_MARA
* FOR ALL ENTRIES IN LT_LIPS_M
* WHERE MATNR = LT_LIPS_M-MATNR.
* SORT LT_MARA BY MATNR.
*
* SELECT IL_ITEM_ID
* IL_STATUS
* IL_HS_CODE
* IL_HS_ATTACH
* IL_EMS_NO
* FROM ZMMT0005
* INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0005
* FOR ALL ENTRIES IN LT_LIPS_M
* WHERE IL_ITEM_ID = LT_LIPS_M-MATNR.
* SORT LT_ZMMT0005 BY IL_ITEM_ID.
* "提单物资拆分表
* SELECT * FROM ZMMT0007
* INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0007
* FOR ALL ENTRIES IN LT_LIPS
* WHERE RECORD_TYPE = 'Z1'
* AND VBELN = LT_LIPS-VBELN
* AND POSNR = LT_LIPS-POSNR.
* IF SY-SUBRC = 0 .
* LT_ZMMT0007_T = LT_ZMMT0007.
* SORT LT_ZMMT0007_T BY ITEM_ID.
* DELETE ADJACENT DUPLICATES FROM LT_ZMMT0007_T COMPARING ITEM_ID.
* "备案
* SELECT * FROM ZMMT0005
* INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0005_FJ
* FOR ALL ENTRIES IN LT_ZMMT0007_T
* WHERE IL_ITEM_ID = LT_ZMMT0007_T-ITEM_ID.
* ENDIF.
* ENDIF.
* ELSE. "add 20190606 end
SELECT VBELN
CONFIRM "确认
NO_CUST "是否报关
ZDELIVERYPLANNO "合同批次
ZWERKS "入库基地
SGTXT "货物名称
ANZPK "件数
BTGEW "毛重
NTGEW "净重
GEWEI "重量单位
FREIGHT "运费
BOLNR "提单号(外部)
INV_NO "发票号码
PACK_DATE "提单日期
ITM_EXPVZ "发运类型
TRADE_TYPE "贸易类型
LDDAT "装船日期
ITM_KZGBE "起运港
DUE_ARRIVE_DATE "预计到港日期
LFDAT "预计到货日期
ERDAT "创建日期
AEDAT "修改日期
TDDAT
ZSTATUS
WERKS1
ZCARGOVALUECURRENCY
CLIENT_BUY
CUST_NO
QANETWR
WBSTK
FROM LIKP
INTO CORRESPONDING FIELDS OF TABLE LT_LIKP
WHERE VBELN IN S_VBELN
AND LFART = 'EL' "IBD
AND ZSTATUS IN LT_R_ZT "状态
AND ZSTATUS <> SPACE "状态
AND NO_CUST IN LT_R_DJZT "单据状态
AND CONFIRM <> SPACE "确认
AND CONFIRM IN LT_R_CONF "确认
AND LDDAT IN S_LDDAT "装船日期
AND ERDAT IN S_ERDAT
AND DUE_ARRIVE_DATE IN S_LFDAT. "预计到港
IF SY-SUBRC <> 0.
* MESSAGE '没有相关数据' TYPE 'S' DISPLAY LIKE 'E'.
* LEAVE LIST-PROCESSING.
ELSE.
* add cjj 20191118 start
MOVE-CORRESPONDING LT_LIKP[] TO LT_ZUONR[].
SORT LT_ZUONR.
DELETE ADJACENT DUPLICATES FROM LT_ZUONR COMPARING VBELN.
SELECT ZUONR
BELNR
RBSTAT
FROM RBKP
INTO TABLE LT_RBKP
FOR ALL ENTRIES IN LT_ZUONR
WHERE ZUONR = LT_ZUONR-VBELN
AND RBSTAT <> 2
AND STBLG = SPACE.
SORT LT_RBKP BY ZUONR.
* add cjj 20191118 end
* add cjj 20190528 start
SELECT VBELN_IM
MBLNR
BUDAT
INTO TABLE LT_MATDOC
FROM MATDOC
FOR ALL ENTRIES IN LT_LIKP
WHERE VBELN_IM = LT_LIKP-VBELN
AND BWART = '101'
AND CANCELLED = SPACE.
SORT LT_MATDOC BY VBELN_IM MBLNR BUDAT DESCENDING.
* add cjj 20190528 end
IF P_DJZT4 IS NOT INITIAL.
DELETE LT_LIKP WHERE WBSTK = 'A'.
ENDIF.
CLEAR:LT_ZMMT0069_H,LT_ZMMT0011.
SELECT IV_VBELN
ZRESULT
ERDAT
ERZET
FROM ZMMT0069_H INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0069_H
FOR ALL ENTRIES IN LT_LIKP
WHERE IV_VBELN = LT_LIKP-VBELN.
SELECT * FROM ZMMT0011 INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0011
FOR ALL ENTRIES IN LT_LIKP
WHERE VBELN = LT_LIKP-VBELN
AND ZISSHEN = 'Z2'.
ENDIF.

" 开始-通过TR - S4DK906152 添加 20190614
DATA: LV_NEW_ACCOUNT_NR TYPE ZE_ACT_BOOK_NR.
DATA: LV_OLD_ACCOUNT_NR TYPE ZE_ACT_BOOK_NR.

IF GV_ACBK_USE = ABAP_TRUE.
LV_NEW_ACCOUNT_NR = GV_NEW_ACCOUNT_NR.
LV_OLD_ACCOUNT_NR = GV_NEW_ACCOUNT_NR.
ELSE.
LV_NEW_ACCOUNT_NR = GV_NEW_ACCOUNT_NR.
LV_OLD_ACCOUNT_NR = GV_OLD_ACCOUNT_NR.
ENDIF.

" 结束-通过TR - S4DK906152 添加 20190614
LV_ARKTX = '%' && S_PINM-LOW && '%'.
LV_ARKTX1 = '%' && S_GG-LOW && '%'.
IF LT_LIKP[] IS NOT INITIAL. "add cjj 20190605
SELECT VBELN
POSNR
MATNR
WERKS
LGORT
LFIMG
VRKME
PART_CUST
COUNTRY
VGBEL "PO
VGPOS "PO item
SHKZG
PS_PSP_PNR
CHARG
ZAMOUNT
ZJEBLD
DLCF_FLG "Add cjj 20190606
FROM LIPS ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
INTO CORRESPONDING FIELDS OF TABLE LT_LIPS
FOR ALL ENTRIES IN LT_LIKP
WHERE VBELN = LT_LIKP-VBELN
AND LGORT IN S_LGORT
AND WERKS IN S_WERKS
AND ARKTX LIKE LV_ARKTX
AND ARKTX LIKE LV_ARKTX1
AND PS_PSP_PNR IN S_PSPID
AND SHKZG IN LT_R_DJLX.
IF SY-SUBRC = 0.
LT_LIPS_M = LT_LIPS.
SORT LT_LIPS_M BY PS_PSP_PNR.
DELETE ADJACENT DUPLICATES FROM LT_LIPS_M COMPARING PS_PSP_PNR.
SELECT USR08 USR09 USR00 PSPNR PSPHI
SLWID "add cjj 20191028
FROM PRPS
INTO CORRESPONDING FIELDS OF TABLE LT_PRPS
FOR ALL ENTRIES IN LT_LIPS_M
WHERE PSPNR = LT_LIPS_M-PS_PSP_PNR.
SORT LT_PRPS BY PSPNR.
LT_PRPS_T[] = LT_PRPS[]. "add cjj 20190613 start
SORT LT_PRPS_T BY PSPHI.
DELETE ADJACENT DUPLICATES FROM LT_PRPS_T COMPARING PSPHI.
SELECT PSPNR POST1
FROM PROJ
INTO CORRESPONDING FIELDS OF TABLE LT_PROJ
FOR ALL ENTRIES IN LT_PRPS_T
WHERE PSPNR = LT_PRPS_T-PSPHI."add cjj 20190613 end
LT_LIPS_M = LT_LIPS.
SORT LT_LIPS_M BY MATNR.
DELETE ADJACENT DUPLICATES FROM LT_LIPS_M COMPARING MATNR.
SELECT MATNR
ZZNAME1
ZZCODE
ZZBASM
ZZSPEC
MATKL
FROM MARA
INTO CORRESPONDING FIELDS OF TABLE LT_MARA
FOR ALL ENTRIES IN LT_LIPS_M
WHERE MATNR = LT_LIPS_M-MATNR.
SORT LT_MARA BY MATNR.

SELECT IL_ITEM_ID
IL_STATUS
IL_HS_CODE
IL_HS_ATTACH
IL_EMS_NO
" 开始-通过TR - S4DK906152 添加 20190614
ZACCOUNT_BOOK_NR
IL_HS_NR
IL_EMS_NO_1
" 结束-通过TR - S4DK906152 添加 20190614
FROM ZMMT0005
INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0005
FOR ALL ENTRIES IN LT_LIPS_M
WHERE IL_ITEM_ID = LT_LIPS_M-MATNR
" 开始-通过TR - S4DK906152 添加 20190614
AND ( ZACCOUNT_BOOK_NR = LV_NEW_ACCOUNT_NR
OR ZACCOUNT_BOOK_NR = LV_OLD_ACCOUNT_NR ).
" 结束-通过TR - S4DK906152 添加 20190614
SORT LT_ZMMT0005 BY IL_ITEM_ID.

LT_LIPS_M[] = LT_LIPS[].
SORT LT_LIPS_M BY VGBEL.
DELETE ADJACENT DUPLICATES FROM LT_LIPS_M COMPARING VGBEL.
"get po data
SELECT EKKO~EBELN
EKKO~EKGRP
EKKO~LIFNR
EKKO~ZLSCH
EKKO~INCO1
EKKO~WKURS
EKKO~WAERS
EKKO~ZHTH
EKPO~EBELP
EKPO~WERKS
EKPO~LGORT
EKPO~MWSKZ
EKPO~NETPR
EKPO~PEINH
EKPO~BANFN
EKPO~BNFPO
EKKO~KNUMV "Add cjj 20190722
EKPO~ZZGBCD "“长 ” add 20190705
EKPO~ZZGBKD "“宽” add 20190705
EKPO~ZZGBFYKS "“块数” add 20190705
EKPO~ZSGXH "add cjj 20191205
FROM EKKO INNER JOIN EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
ON EKKO~EBELN = EKPO~EBELN
INTO CORRESPONDING FIELDS OF TABLE LT_EKKO
FOR ALL ENTRIES IN LT_LIPS_M
WHERE EKKO~EBELN = LT_LIPS_M-VGBEL
AND EKKO~LIFNR IN S_LIFNR
AND EKKO~EKGRP IN S_EKGRP
AND EKKO~EKORG = '1010'
AND EKKO~ZHTH IN S_ZHTH
AND EKKO~LOEKZ = SPACE
AND EKPO~LOEKZ = SPACE.
SORT LT_EKKO BY EBELN EBELP.

"提单物资拆分表
SELECT * FROM ZMMT0007
INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0007
FOR ALL ENTRIES IN LT_LIPS
WHERE RECORD_TYPE = 'Z1'
AND VBELN = LT_LIPS-VBELN
AND POSNR = LT_LIPS-POSNR.
IF SY-SUBRC = 0 .
LT_ZMMT0007_T = LT_ZMMT0007.
SORT LT_ZMMT0007_T BY ITEM_ID.
DELETE ADJACENT DUPLICATES FROM LT_ZMMT0007_T COMPARING ITEM_ID.
"备案
SELECT * FROM ZMMT0005
INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0005_FJ
FOR ALL ENTRIES IN LT_ZMMT0007_T
WHERE IL_ITEM_ID = LT_ZMMT0007_T-ITEM_ID
" 开始-通过TR - S4DK906152 添加 20190614
AND ( ZACCOUNT_BOOK_NR = LV_NEW_ACCOUNT_NR
OR ZACCOUNT_BOOK_NR = LV_OLD_ACCOUNT_NR ).
" 结束-通过TR - S4DK906152 添加 20190614
ENDIF.

ENDIF.
ENDIF.
* ENDIF.
"edit item data
CLEAR: GT_ITEM_ALL, GT_FJXS_ALL.
******************add cjj 20190611 start

DATA: LT_T001L TYPE STANDARD TABLE OF TYP_T001L,
LS_T001L TYPE TYP_T001L,
LS_T006A TYPE TYP_T006A,
LT_T005T TYPE STANDARD TABLE OF TYP_T005T,
LS_T005T TYPE TYP_T005T,
LT_LFA1 TYPE STANDARD TABLE OF TYP_LFA1,
LS_LFA1 TYPE TYP_LFA1,
LT_MKPF TYPE STANDARD TABLE OF TYP_MKPF,
LT_MKPF_T TYPE STANDARD TABLE OF TYP_MKPF,
LS_MKPF TYPE TYP_MKPF,
LT_USER_ADDR TYPE STANDARD TABLE OF TYP_USER_ADDR,
LS_USER_ADDR TYPE TYP_USER_ADDR,
LT_TOA01 TYPE STANDARD TABLE OF TYP_TOA01,
LS_TOA01 TYPE TYP_TOA01,
LT_VBELN TYPE STANDARD TABLE OF TYP_VBELN,
LT_ZHTH TYPE STANDARD TABLE OF TYP_ZHTH.
DATA: LV_CURRENCY LIKE TCURR-TCURR, "add cjj 20190904
LV_FACTOR TYPE ISOC_FACTOR. "add cjj 20190904
CLEAR GT_T006A.
LT_LIPS_M[] = LT_LIPS[].
SORT LT_LIPS_M BY LGORT.
DELETE ADJACENT DUPLICATES FROM LT_LIPS_M COMPARING LGORT.
IF LT_LIPS_M[] IS NOT INITIAL.
SELECT LGORT LGOBE FROM T001L
INTO TABLE LT_T001L
FOR ALL ENTRIES IN LT_LIPS_M
WHERE WERKS = '1000'
AND LGORT = LT_LIPS_M-LGORT.
ENDIF.
LT_EKKO_T[] = LT_EKKO[].
SORT LT_EKKO_T BY LGORT.
DELETE ADJACENT DUPLICATES FROM LT_EKKO_T COMPARING LGORT.
IF LT_EKKO_T[] IS NOT INITIAL.
SELECT LGORT LGOBE FROM T001L
APPENDING TABLE LT_T001L
FOR ALL ENTRIES IN LT_EKKO_T
WHERE WERKS = '1000'
AND LGORT = LT_EKKO_T-LGORT.
ENDIF.

LT_LIPS_M[] = LT_LIPS[].
SORT LT_LIPS_M BY VRKME.
DELETE ADJACENT DUPLICATES FROM LT_LIPS_M COMPARING VRKME.
IF LT_LIPS_M[] IS NOT INITIAL.
SELECT MSEHI MSEHL FROM T006A
INTO TABLE GT_T006A
FOR ALL ENTRIES IN LT_LIPS_M
WHERE SPRAS = SY-LANGU
AND MSEHI = LT_LIPS_M-VRKME.
ENDIF.

LT_LIPS_M[] = LT_LIPS[].
SORT LT_LIPS_M BY COUNTRY.
DELETE ADJACENT DUPLICATES FROM LT_LIPS_M COMPARING COUNTRY.
IF LT_LIPS_M[] IS NOT INITIAL.
SELECT LAND1 LANDX FROM T005T
INTO TABLE LT_T005T
FOR ALL ENTRIES IN LT_LIPS_M
WHERE SPRAS = SY-LANGU
AND LAND1 = LT_LIPS_M-COUNTRY.
ENDIF.
LT_ZMMT0007_T[] = LT_ZMMT0007[].
SORT LT_ZMMT0007_T BY UNIT.
DELETE ADJACENT DUPLICATES FROM LT_ZMMT0007_T COMPARING UNIT.
IF LT_ZMMT0007_T[] IS NOT INITIAL.
SELECT MSEHI MSEHL FROM T006A
APPENDING TABLE GT_T006A
FOR ALL ENTRIES IN LT_ZMMT0007_T
WHERE SPRAS = SY-LANGU
AND MSEHI = LT_ZMMT0007_T-UNIT.
ENDIF.
IF LT_ZMMT0005[] IS NOT INITIAL.
SELECT MSEHI MSEHL FROM T006A
APPENDING TABLE GT_T006A
FOR ALL ENTRIES IN LT_ZMMT0005
WHERE SPRAS = SY-LANGU
AND ( MSEHI = LT_ZMMT0005-IL_UNIT
OR MSEHI = LT_ZMMT0005-IL_IMPORT_UNIT_1
OR MSEHI = LT_ZMMT0005-IL_IMPORT_UNIT_2 ).
ENDIF.
LT_EKKO_T[] = LT_EKKO[].
SORT LT_EKKO_T BY LIFNR.
DELETE ADJACENT DUPLICATES FROM LT_EKKO_T COMPARING LIFNR.
IF LT_EKKO_T[] IS NOT INITIAL.
SELECT LIFNR NAME1 NAME2 FROM LFA1
INTO CORRESPONDING FIELDS OF TABLE LT_LFA1
FOR ALL ENTRIES IN LT_EKKO_T
WHERE LIFNR = LT_EKKO_T-LIFNR.
SORT LT_LFA1 BY LIFNR.
ENDIF.
LT_LIKP_T[] = LT_LIKP[].
SORT LT_LIKP_T BY VBELN.
DELETE ADJACENT DUPLICATES FROM LT_LIKP_T COMPARING VBELN.
IF LT_LIKP_T[] IS NOT INITIAL.
SELECT MSEG~VBELN_IM MKPF~USNAM MKPF~BUDAT
FROM MKPF INNER JOIN MSEG
ON MKPF~MBLNR = MSEG~MBLNR
AND MKPF~MJAHR = MSEG~MJAHR
INTO CORRESPONDING FIELDS OF TABLE LT_MKPF
FOR ALL ENTRIES IN LT_LIKP_T
WHERE MSEG~VBELN_IM = LT_LIKP_T-VBELN.
SORT LT_MKPF BY VBELN_IM.
MOVE-CORRESPONDING LT_LIKP_T[] TO LT_VBELN[].
SELECT SAP_OBJECT
OBJECT_ID
FROM TOA01
INTO CORRESPONDING FIELDS OF TABLE LT_TOA01
FOR ALL ENTRIES IN LT_VBELN
WHERE OBJECT_ID = LT_VBELN-VBELN.
ENDIF.
LT_EKKO_T[] = LT_EKKO[].
SORT LT_EKKO_T BY ZHTH.
DELETE ADJACENT DUPLICATES FROM LT_EKKO_T COMPARING ZHTH.
IF LT_EKKO_T[] IS NOT INITIAL.
MOVE-CORRESPONDING LT_EKKO_T[] TO LT_ZHTH[].
SELECT SAP_OBJECT
OBJECT_ID
FROM TOA01
APPENDING CORRESPONDING FIELDS OF TABLE LT_TOA01
FOR ALL ENTRIES IN LT_ZHTH
WHERE OBJECT_ID = LT_ZHTH-ZHTH.
ENDIF.
LT_MKPF_T[] = LT_MKPF[].
SORT LT_MKPF_T BY USNAM.
DELETE ADJACENT DUPLICATES FROM LT_MKPF_T COMPARING USNAM.
IF LT_MKPF_T[] IS NOT INITIAL.
SELECT BNAME NAME_TEXTC FROM USER_ADDR
INTO CORRESPONDING FIELDS OF TABLE LT_USER_ADDR
FOR ALL ENTRIES IN LT_MKPF_T[]
WHERE BNAME = LT_MKPF_T-USNAM.
SORT LT_USER_ADDR BY BNAME.
ENDIF.
* 退货信息取得 add 20190528 start
DATA: LT_ZMMT0123A TYPE STANDARD TABLE OF ZMMT0123A,
LT_ZMMT0123A_T TYPE STANDARD TABLE OF ZMMT0123A,
LT_ZMMT0123B TYPE STANDARD TABLE OF ZMMT0123B,
LT_ZMMT0123B_T TYPE STANDARD TABLE OF ZMMT0123B,
LT_ZMMT0123C TYPE STANDARD TABLE OF ZMMT0123C,
LS_ZMMT0123A TYPE ZMMT0123A,
LS_ZMMT0123B TYPE ZMMT0123B,
LS_ZMMT0123C TYPE ZMMT0123C,
LT_HEAD TYPE STANDARD TABLE OF TY_HEAD,
LT_HEAD_ALL TYPE STANDARD TABLE OF TY_HEAD,
LT_HEAD_TMP TYPE STANDARD TABLE OF TY_HEAD,
LS_HEAD TYPE TY_HEAD,
LV_LFIMG1 TYPE ZMMT0123B-LFIMG,
LV_LFIMG2 TYPE ZMMT0123B-LFIMG.
CLEAR : LT_ZMMT0123A,LT_ZMMT0123B,LT_ZMMT0123C,LT_ZMMT0123A_T,LT_HEAD.
SELECT *
FROM ZMMT0123A
INTO TABLE LT_ZMMT0123A_T.
* WHERE "VBELN IN S_VBELN
* AND LFART = 'EL' "IBD
* ZSTATUS IN LT_R_ZT "状态
* AND ZSTATUS <> SPACE "状态
* AND NO_CUST IN LT_R_DJZT "单据状态
* AND ZCONF <> SPACE "确认
* AND ZCONF IN LT_R_CONF "确认
* TDDAT IN S_LDDAT "装船日期
* AND ERDAT IN S_ERDAT
* AND DUE_ARRIVE_DATE IN S_LFDAT. "预计到港
IF SY-SUBRC = 0.
SELECT * FROM ZMMT0011 APPENDING CORRESPONDING FIELDS OF TABLE LT_ZMMT0011
FOR ALL ENTRIES IN LT_ZMMT0123A_T
WHERE ZVBELN = LT_ZMMT0123A_T-VBELN
AND ZISSHEN = 'Z2'.
LOOP AT LT_ZMMT0123A_T INTO LS_ZMMT0123A.
* read table LT_LIKP with key vbeln = LS_ZMMT0123A-vbeln+1(10)
* transporting no fields.
* if sy-subrc = 0.
APPEND LS_ZMMT0123A TO LT_ZMMT0123A.
* endif.
ENDLOOP.

SELECT *
FROM ZMMT0123B
INTO TABLE LT_ZMMT0123B
FOR ALL ENTRIES IN LT_ZMMT0123A
WHERE VBELN = LT_ZMMT0123A-VBELN.
IF SY-SUBRC = 0.
SELECT USR08 USR09 USR00 PSPNR PSPHI
SLWID "Add cjj 20191028
FROM PRPS
APPENDING CORRESPONDING FIELDS OF TABLE LT_PRPS
FOR ALL ENTRIES IN LT_ZMMT0123B
WHERE PSPNR = LT_ZMMT0123B-PS_PSP_PNR.
SORT LT_PRPS BY PSPNR.
LT_ZMMT0123B_T[] = LT_ZMMT0123B[]. "add cjj 20190613 start
SORT LT_ZMMT0123B_T BY PSPHI.
DELETE ADJACENT DUPLICATES FROM LT_ZMMT0123B_T COMPARING PSPHI.
SELECT PSPNR POST1
FROM PROJ
APPENDING CORRESPONDING FIELDS OF TABLE LT_PROJ
FOR ALL ENTRIES IN LT_ZMMT0123B_T
WHERE PSPNR = LT_ZMMT0123B_T-PSPHI."add cjj 20190613 end
SORT LT_PROJ.
DELETE ADJACENT DUPLICATES FROM LT_PROJ.
SELECT IL_ITEM_ID
IL_STATUS
IL_HS_CODE
IL_HS_ATTACH
IL_EMS_NO
" 开始-通过TR - S4DK906152 添加 20190614
ZACCOUNT_BOOK_NR
IL_HS_NR
IL_EMS_NO_1
" 结束-通过TR - S4DK906152 添加 20190614
FROM ZMMT0005
APPENDING CORRESPONDING FIELDS OF TABLE LT_ZMMT0005
FOR ALL ENTRIES IN LT_ZMMT0123B
WHERE IL_ITEM_ID = LT_ZMMT0123B-MATNR
" 开始-通过TR - S4DK906152 添加 20190614
AND ( ZACCOUNT_BOOK_NR = LV_NEW_ACCOUNT_NR
OR ZACCOUNT_BOOK_NR = LV_OLD_ACCOUNT_NR ).
" 结束-通过TR - S4DK906152 添加 20190614

SORT LT_ZMMT0005 BY IL_ITEM_ID.


SELECT EKKO~EBELN
EKKO~EKGRP
EKKO~LIFNR
EKKO~ZLSCH
EKKO~INCO1
EKKO~WKURS
EKKO~WAERS
EKKO~ZHTH
EKPO~EBELP
EKPO~WERKS
EKPO~LGORT
EKPO~MWSKZ
EKPO~NETPR
EKPO~PEINH
EKPO~BANFN
EKPO~BNFPO
EKKO~KNUMV "Add cjj 20190722
EKPO~ZZGBCD "“长 ” add 20190705
EKPO~ZZGBKD "“宽” add 20190705
EKPO~ZZGBFYKS "“块数” add 20190705
EKPO~ZSGXH "add cjj 20191205
FROM EKKO INNER JOIN EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
ON EKKO~EBELN = EKPO~EBELN
APPENDING CORRESPONDING FIELDS OF TABLE LT_EKKO
FOR ALL ENTRIES IN LT_ZMMT0123B
WHERE EKKO~EBELN = LT_ZMMT0123B-VGBEL
AND EKKO~LIFNR IN S_LIFNR
AND EKKO~EKGRP IN S_EKGRP
AND EKKO~EKORG = '1010'
AND EKKO~ZHTH IN S_ZHTH
AND EKKO~LOEKZ = SPACE
AND EKPO~LOEKZ = SPACE.
SORT LT_EKKO BY EBELN EBELP.
LT_EKKO_T[] = LT_EKKO[].
SORT LT_EKKO_T BY LGORT.
DELETE ADJACENT DUPLICATES FROM LT_EKKO_T COMPARING LGORT.
IF LT_EKKO_T[] IS NOT INITIAL.
SELECT LGORT LGOBE FROM T001L
APPENDING TABLE LT_T001L
FOR ALL ENTRIES IN LT_EKKO_T
WHERE WERKS = '1000'
AND LGORT = LT_EKKO_T-LGORT.
SORT LT_T001L.
DELETE ADJACENT DUPLICATES FROM LT_T001L.
ENDIF.
SELECT *
FROM ZMMT0123C
APPENDING TABLE LT_ZMMT0123C
FOR ALL ENTRIES IN LT_ZMMT0123B
WHERE VBELN = LT_ZMMT0123B-VBELN
AND POSNR = LT_ZMMT0123B-POSNR.
IF SY-SUBRC = 0.
"备案
SELECT * FROM ZMMT0005
INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0005_FJ
FOR ALL ENTRIES IN LT_ZMMT0123C
WHERE IL_ITEM_ID = LT_ZMMT0123C-ITEM_ID
" 开始-通过TR - S4DK906152 添加 20190614
AND ( ZACCOUNT_BOOK_NR = LV_NEW_ACCOUNT_NR
OR ZACCOUNT_BOOK_NR = LV_OLD_ACCOUNT_NR ).
" 结束-通过TR - S4DK906152 添加 20190614
ENDIF.
ENDIF.
ENDIF.
* 退货信息取得 add 20190528 end
* Get 含税金额 cjj 20190722 start
CLEAR LT_PRCD.
SELECT KNUMV
KPOSN
KBETR
KPEIN
WAERS
FROM PRCD_ELEMENTS
INTO CORRESPONDING FIELDS OF TABLE LT_PRCD
FOR ALL ENTRIES IN LT_EKKO
WHERE KNUMV = LT_EKKO-KNUMV
AND WAERS = 'CNY'
AND ( KSCHL = 'PBXX' OR KSCHL = 'PB00' ). "采购单价
SORT LT_PRCD BY KNUMV KPOSN
WAERS. "add cjj 20191113
* Get 含税金额 cjj 20190722 end
******************add cjj 20190611 end
* 优化处理 add 20190606 cjj
IF LT_EKKO[] IS NOT INITIAL."add cjj 20190606
SORT LT_LIPS BY VBELN POSNR. "add cjj 20190711
SORT LT_LIKP BY VBELN. "Add cjj 20190711
SORT LT_T001L BY LGORT. "add cjj 20190711
SORT GT_T006A BY MSEHI. "add cjj 20190711
SORT LT_T005T BY LAND1. "add cjj 20190711
CLEAR: LV_JE, LV_LFIMG1,GT_HEAD[]. "add cjj 20190711
LOOP AT LT_LIPS INTO LWA_LIPS.
CLEAR LWA_LIKP. "add cjj 20190711
READ TABLE LT_LIKP
INTO LWA_LIKP "add cjj 20190711
WITH KEY VBELN = LWA_LIPS-VBELN "add cjj 20190606
BINARY SEARCH. "add cjj 20190711
* TRANSPORTING NO FIELDS. "add cjj 20190606
IF SY-SUBRC <> 0. "add cjj 20190606
CONTINUE. "add cjj 20190606
ENDIF. "add cjj 20190606
CLEAR LWA_ITEM.
LWA_ITEM-VBELN = LWA_LIPS-VBELN.
LWA_ITEM-POSNR = LWA_LIPS-POSNR.
LWA_ITEM-LGORT = LWA_LIPS-LGORT.
LWA_ITEM-CHARG = LWA_LIPS-CHARG.
LWA_ITEM-ZAMOUNT = LWA_LIPS-ZAMOUNT.
LWA_ITEM-ZJEBLD = LWA_LIPS-ZJEBLD.
LWA_ITEM-DLCF_FLG = LWA_LIPS-DLCF_FLG. "Add cjj 20190606
* rep by cjj 20190611 start
* SELECT SINGLE LGOBE FROM T001L
* INTO LWA_ITEM-LGORT_TXT
* WHERE WERKS = '1000'
* AND LGORT = LWA_ITEM-LGORT.
CLEAR LS_T001L.
READ TABLE LT_T001L INTO LS_T001L WITH KEY LGORT = LWA_ITEM-LGORT
BINARY SEARCH."add cjj 20190711
IF SY-SUBRC = 0.
LWA_ITEM-LGORT_TXT = LS_T001L-LGOBE.
ENDIF.
* rep by cjj 20190611 end

LWA_ITEM-LFIMG = LWA_LIPS-LFIMG.
LWA_ITEM-VRKME = LWA_LIPS-VRKME.
* rep by cjj 20190611 start
* SELECT SINGLE MSEHL FROM T006A
* INTO LWA_ITEM-MEINS_TXT
* WHERE SPRAS = SY-LANGU
* AND MSEHI = LWA_LIPS-VRKME.
CLEAR LS_T006A.
READ TABLE GT_T006A INTO LS_T006A WITH KEY MSEHI = LWA_ITEM-VRKME
BINARY SEARCH."add cjj 20190711
IF SY-SUBRC = 0.
LWA_ITEM-MEINS_TXT = LS_T006A-MSEHL.
ENDIF.
* rep by cjj 20190611 end

LWA_ITEM-COUNTRY = LWA_LIPS-COUNTRY.
* rep by cjj 20190611 start
* SELECT SINGLE LANDX FROM T005T
* INTO LWA_ITEM-COUNTRY_TXT
* WHERE SPRAS = SY-LANGU
* AND LAND1 = LWA_ITEM-COUNTRY.
CLEAR LS_T005T.
READ TABLE LT_T005T INTO LS_T005T WITH KEY LAND1 = LWA_ITEM-COUNTRY
BINARY SEARCH."add cjj 20190711
IF SY-SUBRC = 0.
LWA_ITEM-COUNTRY_TXT = LS_T005T-LANDX.
ENDIF.
* rep by cjj 20190611 end
LWA_ITEM-PART_CUST = LWA_LIPS-PART_CUST.
IF LWA_ITEM-PART_CUST IS NOT INITIAL.
LWA_ITEM-PART_CUST_TXT = '是'.
ELSE.
LWA_ITEM-PART_CUST_TXT = '否'.
ENDIF.
LWA_ITEM-VGBEL = LWA_LIPS-VGBEL.
LWA_ITEM-VGPOS = LWA_LIPS-VGPOS.
LWA_ITEM-MATNR = LWA_LIPS-MATNR.
LWA_ITEM-SHKZG = LWA_LIPS-SHKZG.

CLEAR LWA_EKKO.
READ TABLE LT_EKKO INTO LWA_EKKO
WITH KEY EBELN = LWA_LIPS-VGBEL
EBELP = LWA_LIPS-VGPOS BINARY SEARCH.
IF SY-SUBRC <> 0.
CONTINUE.
ELSE.
LWA_ITEM-ZZGBCD = LWA_EKKO-ZZGBCD."“长 ” add 20190705
LWA_ITEM-ZZGBKD = LWA_EKKO-ZZGBKD."“宽” add 20190705
LWA_ITEM-ZZGBFYKS = LWA_EKKO-ZZGBFYKS."“块数” add 20190705
LWA_ITEM-ZSGXH = LWA_EKKO-ZSGXH. "Add cjj 20191205
* add cjj 20190711 start
LWA_ITEM-WAERS = LWA_EKKO-WAERS.
SELECT SINGLE KTEXT FROM TCURT
INTO LWA_ITEM-WAERS_TXT
WHERE SPRAS = SY-LANGU
AND WAERS = LWA_ITEM-WAERS.
* add cjj 20190711 end
LWA_ITEM-WERKS1 = LWA_EKKO-WERKS.
LWA_ITEM-LGORT1 = LWA_EKKO-LGORT.
* rep by cjj 20190611 start
* SELECT SINGLE LGOBE FROM T001L
* INTO LWA_ITEM-LGORT1_TXT
* WHERE WERKS = '1000'
* AND LGORT = LWA_ITEM-LGORT1.
CLEAR LS_T001L.
READ TABLE LT_T001L INTO LS_T001L WITH KEY LGORT = LWA_ITEM-LGORT1
BINARY SEARCH."add cjj 20190711
IF SY-SUBRC = 0.
LWA_ITEM-LGORT1_TXT = LS_T001L-LGOBE.
ENDIF.
* rep by cjj 20190611 end

LWA_ITEM-MWSKZ = LWA_EKKO-MWSKZ.

CALL FUNCTION 'ZFM_GET_DUTY_RATE'
EXPORTING
IM_MWSKZ = LWA_ITEM-MWSKZ
IMPORTING
EX_ZDUTY = LWA_ITEM-ZTAX.

LWA_ITEM-BANFN = LWA_EKKO-BANFN.
LWA_ITEM-BNFPO = LWA_EKKO-BNFPO.
* LV_CURRENCY = LWA_ITEM-WAERS. "add cjj 1113 start
* CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
* EXPORTING
* CURRENCY = LV_CURRENCY
* IMPORTING
* FACTOR = LV_FACTOR
* EXCEPTIONS
* TOO_MANY_DECIMALS = 1
* OTHERS = 2. "add cjj 1113 end
IF LWA_ITEM-ZJEBLD IS NOT INITIAL.
LWA_ITEM-ZJE = LWA_ITEM-ZAMOUNT.
LV_CURRENCY = LWA_ITEM-WAERS.
CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
EXPORTING
CURRENCY = LV_CURRENCY
IMPORTING
FACTOR = LV_FACTOR
EXCEPTIONS
TOO_MANY_DECIMALS = 1
OTHERS = 2.
LWA_ITEM-ZJE = LWA_ITEM-ZAMOUNT / LV_FACTOR.
ELSE.
* add cjj 20190722 start
CLEAR :LV_KPOSN,LS_PRCD.
LV_KPOSN = LWA_EKKO-EBELP.
READ TABLE LT_PRCD INTO LS_PRCD WITH KEY KNUMV = LWA_EKKO-KNUMV
KPOSN = LV_KPOSN
* WAERS = LWA_ITEM-WAERS " add cjj 20191113
BINARY SEARCH.
IF SY-SUBRC = 0.
LWA_ITEM-ZJE = ( LS_PRCD-KBETR / LS_PRCD-KPEIN ) * LWA_LIPS-LFIMG .
ELSE.
* add cjj 20190722 end
LWA_ITEM-ZJE = LWA_EKKO-NETPR / LWA_EKKO-PEINH * LWA_LIPS-LFIMG .
ENDIF. "add cjj 20190722
LWA_ITEM-ZPRICE = LWA_EKKO-NETPR / LWA_EKKO-PEINH.
ENDIF.
ENDIF.

CLEAR LWA_MARA.
READ TABLE LT_MARA INTO LWA_MARA
WITH KEY MATNR = LWA_LIPS-MATNR BINARY SEARCH.
IF SY-SUBRC = 0.
LWA_ITEM-ZZNAME1 = LWA_MARA-ZZNAME1.
LWA_ITEM-ZZCODE = LWA_MARA-ZZCODE.
LWA_ITEM-ZZBASM = LWA_MARA-ZZBASM.
LWA_ITEM-ZZSPEC = LWA_MARA-ZZSPEC.
LWA_ITEM-ZMATKL = LWA_MARA-MATKL(2).
SELECT SINGLE WGBEZ FROM T023T
INTO LWA_ITEM-ZMATKL_TXT
WHERE SPRAS = SY-LANGU
AND MATKL = LWA_ITEM-ZMATKL.
ENDIF.

IF GV_ACBK_USE NE ABAP_TRUE. " 通过TR - S4DK906152 添加 20190614

CLEAR LWA_ZMMT0005.
READ TABLE LT_ZMMT0005 INTO LWA_ZMMT0005
WITH KEY IL_ITEM_ID = LWA_LIPS-MATNR
ZACCOUNT_BOOK_NR = GV_OLD_ACCOUNT_NR. " 通过TR - S4DK906152 添加 20190614
IF SY-SUBRC = 0.
LWA_ITEM-IL_STATUS = LWA_ZMMT0005-IL_STATUS.

CLEAR LV_DOMVALUE.
LV_DOMVALUE = LWA_ZMMT0005-IL_STATUS.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_ZT'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_ITEM-IL_STATUS_TXT = LV_DDTEXT.
ENDIF.
ENDIF.

IF GV_OLD_ACCOUNT_NR = 'E22105000006'. " 通过TR - S4DK906152 添加 2019061
LWA_ITEM-IL_HS_CODE = LWA_ZMMT0005-IL_HS_CODE.
LWA_ITEM-IL_HS_ATTACH = LWA_ZMMT0005-IL_HS_ATTACH.
LWA_ITEM-IL_EMS_NO = LWA_ZMMT0005-IL_EMS_NO.

ENDIF. " 通过tr - s4dk906152 添加 20190614

ENDIF.

" 开始-通过TR - S4DK906152 添加 20190614
ENDIF.
CLEAR LWA_ZMMT0005.
READ TABLE LT_ZMMT0005 INTO LWA_ZMMT0005
WITH KEY IL_ITEM_ID = LWA_LIPS-MATNR
ZACCOUNT_BOOK_NR = GV_NEW_ACCOUNT_NR.
IF SY-SUBRC = 0.
LWA_ITEM-IL_STATUS_N = LWA_ZMMT0005-IL_STATUS. "add 20190717 cjj
CLEAR LV_DOMVALUE.
LV_DOMVALUE = LWA_ZMMT0005-IL_STATUS.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_ZT'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_ITEM-IL_STATUS_TXT_N = LV_DDTEXT.
ENDIF.
ENDIF.
LWA_ITEM-IL_HS_NR = LWA_ZMMT0005-IL_HS_NR.
LWA_ITEM-IL_EMS_NO_1 = LWA_ZMMT0005-IL_EMS_NO_1.
ENDIF.

" 结束-通过TR - S4DK906152 添加 20190614

* rep by cjj 20190611 start
* SELECT SINGLE PSPHI INTO LWA_ITEM-PSPHI
* FROM PRPS
* WHERE PSPNR = LWA_LIPS-PS_PSP_PNR.
*
* SELECT SINGLE POST1 FROM PROJ INTO LWA_ITEM-POST1
* WHERE PSPNR = LWA_ITEM-PSPHI.
* rep by cjj 20190611 end
"离岸日期,立项日期,赋税类型
* CALL FUNCTION 'CONVERSION_EXIT_KONPD_OUTPUT'
* EXPORTING
* INPUT = LWA_ITEM-PSPHI
* IMPORTING
* OUTPUT = LV_POSID.
* SELECT SINGLE USR08 USR09 USR00
* FROM PRPS
* INTO (LWA_ITEM-ZLARQ,LWA_ITEM-ZLXRQ,LWA_ITEM-ZTAXTYPE)
* WHERE
** PSPHI = LWA_ITEM-PSPHI
** AND STUFE = '1'
* PSPNR = LWA_LIPS-PS_PSP_PNR.
CLEAR LS_PRPS.
READ TABLE LT_PRPS INTO LS_PRPS WITH KEY PSPNR = LWA_LIPS-PS_PSP_PNR BINARY SEARCH.
IF SY-SUBRC = 0. " 通过TR - S4DK906152 添加 20190614
LWA_ITEM-ZLARQ = LS_PRPS-USR08.
LWA_ITEM-ZLXRQ = LS_PRPS-USR09.
LWA_ITEM-ZTAXTYPE = LS_PRPS-USR00.
* add cjj 20191028 start
* 根据WBS编码(EKKN-PS_PSP_PNR)在表PRPS中查找对应字段码(PRPS-SLWID),
* 1、若SLWID=ZPMCGJ1(这种情况,WBS带赋税类型字段),则取WBS的赋税类型(PRPS-USR00);
* 2、其他情况,则在表PRPS中根据WBS找到对应的项目工号(PRPS-PSPHI),然后根据项目工号,在表ZPST0007中查找对应的赋税类型(ZPST0007- ZZTAX)
PERFORM EDIT_ZTAXTYPE USING LS_PRPS-PSPHI LS_PRPS-SLWID CHANGING LWA_ITEM-ZTAXTYPE.
* add cjj 20191028 end
ENDIF. " 通过TR - S4DK906152 添加 20190614

LWA_ITEM-PSPHI = LS_PRPS-PSPHI. "add cjj 20190611
LWA_ITEM-PS_PSP_PNR = LWA_LIPS-PS_PSP_PNR. "add cjj 20190604
CLEAR LS_PROJ. "add cjj 20190611
READ TABLE LT_PROJ INTO LS_PROJ WITH KEY PSPNR = LWA_ITEM-PSPHI. "add cjj 20190611
LWA_ITEM-POST1 = LS_PROJ-POST1. "add cjj 20190611
* AND SLWID = 'ZPMCGJ1'.
IF LWA_ITEM-ZTAXTYPE = 'Z1'.
LWA_ITEM-ZTAXTYPE_TXT = '免税'.
ELSEIF LWA_ITEM-ZTAXTYPE = 'Z2'.
LWA_ITEM-ZTAXTYPE_TXT = '征税'.
ENDIF.

"分解项数
CLEAR:LV_BA_FLG,LV_IN_FLG, LV_CNT.
CLEAR:LV_BA_FLG_NEW. " 通过TR - S4DK906152 添加 20190614
LOOP AT LT_ZMMT0007 INTO LWA_ZMMT0007 WHERE VBELN = LWA_ITEM-VBELN
AND POSNR = LWA_ITEM-POSNR.
LV_CNT = LV_CNT + 1.
LV_IN_FLG = 'X'.

IF GV_ACBK_USE NE ABAP_TRUE. " 通过TR - S4DK906152 添加 20190614 " 新账册启用之后 旧的备案状态不需要填写了 为空值
SELECT COUNT(*) FROM ZMMT0005 WHERE IL_ITEM_ID = LWA_ZMMT0007-ITEM_ID
AND IL_STATUS = '6'
AND ZACCOUNT_BOOK_NR = GV_OLD_ACCOUNT_NR. " 通过TR - S4DK906152 添加 20190614
IF SY-SUBRC <> 0.
LV_BA_FLG = 'X'.
ENDIF.

" 开始-通过TR - S4DK906152 添加 20190614
ENDIF.
SELECT COUNT(*) FROM ZMMT0005 WHERE IL_ITEM_ID = LWA_ZMMT0007-ITEM_ID
AND IL_STATUS = '6'
AND ZACCOUNT_BOOK_NR = GV_NEW_ACCOUNT_NR.
IF SY-SUBRC <> 0.
LV_BA_FLG_NEW = 'X'.
ENDIF.
" 通过TR - S4DK906152 添加 20190614

ENDLOOP.
LWA_ITEM-PACK_CNT = LV_CNT.

"零件报关备案状态
IF LWA_ITEM-PART_CUST IS NOT INITIAL.

IF GV_ACBK_USE NE ABAP_TRUE. " 通过TR - S4DK906152 添加 20190614 新账册启用之后 旧的备案状态不需要填写了 为空值
IF LV_BA_FLG IS NOT INITIAL.
LWA_ITEM-IL_STATUS_LJBG = '未备案'.
ELSE.
IF LV_IN_FLG IS NOT INITIAL.
LWA_ITEM-IL_STATUS_LJBG = '备案'.
ENDIF.
ENDIF.

" 开始-通过TR - S4DK906152 添加 20190614
ENDIF.
IF LV_BA_FLG_NEW IS NOT INITIAL.
LWA_ITEM-IL_STATUS_LJBG_N = '未备案'.
ELSE.
IF LV_IN_FLG IS NOT INITIAL.
LWA_ITEM-IL_STATUS_LJBG_N = '备案'.
ENDIF.
ENDIF.
" 结束-通过TR - S4DK906152 添加 20190614
ENDIF.
* del cjj 20190711 start
* CLEAR lwa_ekko.
* READ TABLE lt_ekko INTO lwa_ekko
* WITH KEY ebeln = lwa_lips-vgbel
* ebelp = lwa_lips-vgpos BINARY SEARCH.
* IF sy-subrc = 0.
* lwa_item-waers = lwa_ekko-waers.
* SELECT SINGLE ktext FROM tcurt
* INTO lwa_item-waers_txt
* WHERE spras = sy-langu
* AND waers = lwa_item-waers.
* ENDIF.
* del cjj 20190711 end
" 开始-通过TR - S4DK906152 删除 20190614
" 金关二期 增加新老账册 状态 取消对行颜色的变化
* SELECT COUNT(*) FROM zmmt0005
* WHERE il_item_id = lwa_item-matnr
* AND il_status = '6'.
* IF sy-subrc <> 0 .
* IF lwa_item-part_cust IS NOT INITIAL AND lwa_item-il_status_ljbg = '备案'.
* ELSE.
* IF lwa_item-ztaxtype = 'Z1'.
* lwa_item-rowcolor = 'C600'.
* ENDIF.
* ENDIF.
* ELSE.
* IF lwa_item-part_cust IS NOT INITIAL AND lwa_item-il_status_ljbg = '未备案'
* AND lwa_item-ztaxtype = 'Z1'.
* lwa_item-rowcolor = 'C600'.
* ENDIF.
* ENDIF.
" 结束-通过TR - S4DK906152 删除 20190614

LV_ID = 'F01'.
LV_EBELP = LWA_ITEM-VGPOS.
LV_TDNAME = LWA_ITEM-VGBEL && LV_EBELP.
LV_OBJECT = 'EKPO'.
CLEAR: LWA_ITEM-ZCGSM,LT_LINES.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = LV_ID
LANGUAGE = SY-LANGU
NAME = LV_TDNAME
OBJECT = LV_OBJECT
TABLES
LINES = LT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LOOP AT LT_LINES INTO LWA_LINES.
CONCATENATE LWA_ITEM-ZCGSM LWA_LINES-TDLINE INTO LWA_ITEM-ZCGSM.
ENDLOOP.
ENDIF.

LV_ID = '0002'.
LV_TDNAME = LWA_ITEM-VBELN && LWA_ITEM-POSNR.
LV_OBJECT = 'VBBP'.
CLEAR LT_LINES.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = LV_ID
LANGUAGE = SY-LANGU
NAME = LV_TDNAME
OBJECT = LV_OBJECT
TABLES
LINES = LT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LOOP AT LT_LINES INTO LWA_LINES.
CONCATENATE LWA_ITEM-ZMEMO LWA_LINES-TDLINE INTO LWA_ITEM-ZMEMO.
ENDLOOP.
ENDIF.

APPEND LWA_ITEM TO GT_ITEM_ALL.
* add by cjj 20190711 start
APPEND LWA_LIPS TO LT_LIPS_T.
LV_JE = LV_JE + LWA_ITEM-ZJE.
LV_LFIMG1 = LV_LFIMG1 + LWA_ITEM-LFIMG.
CLEAR LS_LIPS.
LS_LIPS = LWA_LIPS.
AT END OF VBELN.
PERFORM EDIT_HEAD USING LWA_LIKP
LS_LIPS
LV_JE
LV_LFIMG1
LWA_ITEM-ZTAX
LWA_EKKO
LT_LIPS_T
LT_MATDOC
LT_T001L
LT_LFA1
LT_USER_ADDR
LT_MKPF
LT_TOA01
LT_ZMMT0123B
LT_RBKP "Add cjj 20191118
GT_RBSTAT. "add cjj 20191203
CLEAR: LT_LIPS_T,LV_JE,LV_LFIMG1.
ENDAT.
* add by cjj 20190711 end
LOOP AT LT_ZMMT0007 INTO LWA_ZMMT0007 WHERE VBELN = LWA_ITEM-VBELN
AND POSNR = LWA_ITEM-POSNR.
CLEAR LWA_FJXS.
MOVE-CORRESPONDING LWA_ZMMT0007 TO LWA_FJXS.
CLEAR LWA_ZMMT0005.

IF GV_ACBK_USE NE ABAP_TRUE. " 通过TR - S4DK906152 添加 20190614
READ TABLE LT_ZMMT0005_FJ INTO LWA_ZMMT0005 WITH KEY IL_ITEM_ID = LWA_ZMMT0007-ITEM_ID
ZACCOUNT_BOOK_NR = GV_OLD_ACCOUNT_NR. " 通过TR - S4DK906152 添加 20190614
IF SY-SUBRC = 0.
MOVE-CORRESPONDING LWA_ZMMT0005 TO LWA_FJXS.
CLEAR LV_DOMVALUE.
LV_DOMVALUE = LWA_FJXS-IL_STATUS.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_ZT'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_FJXS-IL_STATUS_TXT = LV_DDTEXT.
ENDIF.
ENDIF.
PERFORM FRM_GET_UNIT_TXT USING LWA_FJXS-IL_UNIT
CHANGING LWA_FJXS-IL_UNIT_TXT.
" 开始-通过TR - S4DK906152 添加 20190614
IF GV_OLD_ACCOUNT_NR NE 'E22105000006'.
CLEAR:LWA_FJXS-IL_HS_CODE,
LWA_FJXS-IL_HS_ATTACH,
LWA_FJXS-IL_EMS_NO.
ENDIF.
" 结束-通过TR - S4DK906152 添加 20190614
ENDIF.
" 开始-通过TR - S4DK906152 添加 20190614
ENDIF.

READ TABLE LT_ZMMT0005_FJ INTO LWA_ZMMT0005 WITH KEY IL_ITEM_ID = LWA_ZMMT0007-ITEM_ID
ZACCOUNT_BOOK_NR = GV_NEW_ACCOUNT_NR.
IF SY-SUBRC = 0.
LWA_FJXS-IL_HS_NR = LWA_ZMMT0005-IL_HS_NR.
LWA_FJXS-IL_EMS_NO_1 = LWA_ZMMT0005-IL_EMS_NO_1.

CLEAR LV_DOMVALUE.
LV_DOMVALUE = LWA_ZMMT0005-IL_STATUS.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_ZT'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_FJXS-IL_STATUS_TXT_N = LV_DDTEXT.
ENDIF.
ENDIF.
PERFORM FRM_GET_UNIT_TXT USING LWA_FJXS-IL_UNIT
CHANGING LWA_FJXS-IL_UNIT_TXT.
ENDIF.
" 结束-通过TR - S4DK906152 添加 20190614

LWA_FJXS-UNIT = LWA_ZMMT0007-UNIT.
PERFORM FRM_GET_UNIT_TXT USING LWA_FJXS-UNIT
CHANGING LWA_FJXS-UNIT_TXT.
PERFORM FRM_GET_UNIT_TXT USING LWA_FJXS-IL_IMPORT_UNIT_1
CHANGING LWA_FJXS-IL_IMPORT_UNIT_1_TXT.
PERFORM FRM_GET_UNIT_TXT USING LWA_FJXS-IL_IMPORT_UNIT_2
CHANGING LWA_FJXS-IL_IMPORT_UNIT_2_TXT.

APPEND LWA_FJXS TO GT_FJXS_ALL.
ENDLOOP.
ENDLOOP.
ENDIF. " add cjj 20190606
** 退货信息取得 add 20190528 start
* DATA: LT_ZMMT0123A TYPE STANDARD TABLE OF ZMMT0123A,
* LT_ZMMT0123A_T TYPE STANDARD TABLE OF ZMMT0123A,
* LT_ZMMT0123B TYPE STANDARD TABLE OF ZMMT0123B,
* LT_ZMMT0123B_T TYPE STANDARD TABLE OF ZMMT0123B,
* LT_ZMMT0123C TYPE STANDARD TABLE OF ZMMT0123C,
* LS_ZMMT0123A TYPE ZMMT0123A,
* LS_ZMMT0123B TYPE ZMMT0123B,
* LS_ZMMT0123C TYPE ZMMT0123C,
* LT_HEAD TYPE STANDARD TABLE OF TY_HEAD,
* LT_HEAD_ALL TYPE STANDARD TABLE OF TY_HEAD,
* LT_HEAD_TMP TYPE STANDARD TABLE OF TY_HEAD,
* LS_HEAD TYPE TY_HEAD,
* LV_LFIMG1 TYPE ZMMT0123B-LFIMG,
* LV_LFIMG2 TYPE ZMMT0123B-LFIMG.
* CLEAR : LT_ZMMT0123A,LT_ZMMT0123B,LT_ZMMT0123C,LT_ZMMT0123A_T,LT_HEAD.
* SELECT *
* FROM ZMMT0123A
* INTO TABLE LT_ZMMT0123A_T.
** WHERE "VBELN IN S_VBELN
** AND LFART = 'EL' "IBD
** ZSTATUS IN LT_R_ZT "状态
** AND ZSTATUS <> SPACE "状态
** AND NO_CUST IN LT_R_DJZT "单据状态
** AND ZCONF <> SPACE "确认
** AND ZCONF IN LT_R_CONF "确认
** TDDAT IN S_LDDAT "装船日期
** AND ERDAT IN S_ERDAT
** AND DUE_ARRIVE_DATE IN S_LFDAT. "预计到港
* IF SY-SUBRC = 0.
* SELECT * FROM ZMMT0011 APPENDING CORRESPONDING FIELDS OF TABLE LT_ZMMT0011
* FOR ALL ENTRIES IN LT_ZMMT0123A_T
* WHERE ZVBELN = LT_ZMMT0123A_T-VBELN
* AND ZISSHEN = 'Z2'.
* LOOP AT LT_ZMMT0123A_T INTO LS_ZMMT0123A.
** read table LT_LIKP with key vbeln = LS_ZMMT0123A-vbeln+1(10)
** transporting no fields.
** if sy-subrc = 0.
* APPEND LS_ZMMT0123A TO LT_ZMMT0123A.
** endif.
* ENDLOOP.
*
* SELECT *
* FROM ZMMT0123B
* INTO TABLE LT_ZMMT0123B
* FOR ALL ENTRIES IN LT_ZMMT0123A
* WHERE VBELN = LT_ZMMT0123A-VBELN.
* IF SY-SUBRC = 0.
* SELECT USR08 USR09 USR00 PSPNR PSPHI
* FROM PRPS
* APPENDING TABLE LT_PRPS
* FOR ALL ENTRIES IN LT_ZMMT0123B
* WHERE PSPNR = LT_ZMMT0123B-PS_PSP_PNR.
* SORT LT_PRPS BY PSPNR.
* LT_ZMMT0123B_T[] = LT_ZMMT0123B[]. "add cjj 20190613 start
* SORT LT_ZMMT0123B_T BY PSPHI.
* DELETE ADJACENT DUPLICATES FROM LT_ZMMT0123B_T COMPARING PSPHI.
* SELECT PSPNR POST1
* FROM PROJ
* APPENDING CORRESPONDING FIELDS OF TABLE LT_PROJ
* FOR ALL ENTRIES IN LT_ZMMT0123B_T
* WHERE PSPNR = LT_ZMMT0123B_T-PSPHI."add cjj 20190613 end
* SORT LT_PROJ.
* DELETE ADJACENT DUPLICATES FROM LT_PROJ.
* SELECT IL_ITEM_ID
* IL_STATUS
* IL_HS_CODE
* IL_HS_ATTACH
* IL_EMS_NO
* " 开始-通过TR - S4DK906152 添加 20190614
* ZACCOUNT_BOOK_NR
* IL_HS_NR
* IL_EMS_NO_1
* " 结束-通过TR - S4DK906152 添加 20190614
* FROM ZMMT0005
* APPENDING CORRESPONDING FIELDS OF TABLE LT_ZMMT0005
* FOR ALL ENTRIES IN LT_ZMMT0123B
* WHERE IL_ITEM_ID = LT_ZMMT0123B-MATNR
* " 开始-通过TR - S4DK906152 添加 20190614
* AND ( ZACCOUNT_BOOK_NR = LV_NEW_ACCOUNT_NR
* OR ZACCOUNT_BOOK_NR = LV_OLD_ACCOUNT_NR ).
* " 结束-通过TR - S4DK906152 添加 20190614
*
* SORT LT_ZMMT0005 BY IL_ITEM_ID.
*
*
* SELECT EKKO~EBELN
* EKKO~EKGRP
* EKKO~LIFNR
* EKKO~ZLSCH
* EKKO~INCO1
* EKKO~WKURS
* EKKO~WAERS
* EKKO~ZHTH
* EKPO~EBELP
* EKPO~WERKS
* EKPO~LGORT
* EKPO~MWSKZ
* EKPO~NETPR
* EKPO~PEINH
* EKPO~BANFN
* EKPO~BNFPO
* FROM EKKO INNER JOIN EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
* ON EKKO~EBELN = EKPO~EBELN
* APPENDING CORRESPONDING FIELDS OF TABLE LT_EKKO
* FOR ALL ENTRIES IN LT_ZMMT0123B
* WHERE EKKO~EBELN = LT_ZMMT0123B-VGBEL
* AND EKKO~LIFNR IN S_LIFNR
* AND EKKO~EKGRP IN S_EKGRP
* AND EKKO~EKORG = '1010'
* AND EKKO~ZHTH IN S_ZHTH
* AND EKKO~LOEKZ = SPACE
* AND EKPO~LOEKZ = SPACE.
* SORT LT_EKKO BY EBELN EBELP.
* LT_EKKO_T[] = LT_EKKO[].
* SORT LT_EKKO_T BY LGORT.
* DELETE ADJACENT DUPLICATES FROM LT_EKKO_T COMPARING LGORT.
* IF LT_EKKO_T[] IS NOT INITIAL.
* SELECT LGORT LGOBE FROM T001L
* APPENDING TABLE LT_T001L
* FOR ALL ENTRIES IN LT_EKKO_T
* WHERE WERKS = '1000'
* AND LGORT = LT_EKKO_T-LGORT.
* SORT LT_T001L.
* DELETE ADJACENT DUPLICATES FROM LT_T001L.
* ENDIF.
* SELECT *
* FROM ZMMT0123C
* APPENDING TABLE LT_ZMMT0123C
* FOR ALL ENTRIES IN LT_ZMMT0123B
* WHERE VBELN = LT_ZMMT0123B-VBELN
* AND POSNR = LT_ZMMT0123B-POSNR.
* IF SY-SUBRC = 0.
* "备案
* SELECT * FROM ZMMT0005
* INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0005_FJ
* FOR ALL ENTRIES IN LT_ZMMT0123C
* WHERE IL_ITEM_ID = LT_ZMMT0123C-ITEM_ID
* " 开始-通过TR - S4DK906152 添加 20190614
* AND ( ZACCOUNT_BOOK_NR = LV_NEW_ACCOUNT_NR
* OR ZACCOUNT_BOOK_NR = LV_OLD_ACCOUNT_NR ).
* " 结束-通过TR - S4DK906152 添加 20190614
* ENDIF.
* ENDIF.
* ENDIF.
** 退货信息取得 add 20190528 end
**** del 20190711 start
* "edit head data
* CLEAR GT_HEAD.
* LOOP AT LT_LIKP INTO LWA_LIKP.
* CLEAR LWA_LIPS.
* READ TABLE LT_LIPS INTO LWA_LIPS WITH KEY VBELN = LWA_LIKP-VBELN.
* IF SY-SUBRC <> 0.
* CONTINUE.
* ENDIF.
* READ TABLE GT_ITEM_ALL TRANSPORTING NO FIELDS WITH KEY VBELN = LWA_LIKP-VBELN.
* IF SY-SUBRC <> 0.
* CONTINUE.
* ENDIF.
* CLEAR LWA_HEAD.
* LWA_HEAD-LGORT = LWA_LIPS-LGORT.
* LWA_HEAD-ZSTATUS = LWA_LIKP-ZSTATUS.
* CLEAR LV_DOMVALUE.
* LV_DOMVALUE = LWA_LIKP-ZSTATUS.
* IF LV_DOMVALUE IS NOT INITIAL.
* CALL FUNCTION 'DOMAIN_VALUE_GET'
* EXPORTING
* I_DOMNAME = 'ZD_INSTATUS'
* I_DOMVALUE = LV_DOMVALUE
* IMPORTING
* E_DDTEXT = LV_DDTEXT
* EXCEPTIONS
* NOT_EXIST = 1
* OTHERS = 2.
* IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ELSE.
* LWA_HEAD-ZSTATUS_TXT = LV_DDTEXT.
* ENDIF.
* ENDIF.
* LWA_HEAD-ZCONF = LWA_LIKP-CONFIRM.
* CLEAR LV_DOMVALUE.
* LV_DOMVALUE = LWA_LIKP-CONFIRM.
* IF LV_DOMVALUE IS NOT INITIAL.
* CALL FUNCTION 'DOMAIN_VALUE_GET'
* EXPORTING
* I_DOMNAME = 'ZD_CONFIRM'
* I_DOMVALUE = LV_DOMVALUE
* IMPORTING
* E_DDTEXT = LV_DDTEXT
* EXCEPTIONS
* NOT_EXIST = 1
* OTHERS = 2.
* IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ELSE.
* LWA_HEAD-ZCONF_TXT = LV_DDTEXT.
* ENDIF.
* ENDIF.
*
* IF P_DJLX1 IS NOT INITIAL.
* LWA_HEAD-ZLEIBIE = '退货'.
* ELSEIF P_DJLX2 IS NOT INITIAL.
* LWA_HEAD-ZLEIBIE = '送货'.
* ELSEIF P_DJLX0 IS NOT INITIAL.
* CLEAR: LV_SHKZG_1,LV_SHKZG_2.
* LOOP AT LT_LIPS INTO LWA_LIPS WHERE VBELN = LWA_LIKP-VBELN.
* IF LWA_LIPS-SHKZG IS NOT INITIAL.
* LV_SHKZG_1 = 'X'.
* ENDIF.
* IF LWA_LIPS-SHKZG IS INITIAL.
* LV_SHKZG_2 = 'X'.
* ENDIF.
* ENDLOOP.
* IF LV_SHKZG_1 IS NOT INITIAL AND LV_SHKZG_2 IS NOT INITIAL.
* LWA_HEAD-ZLEIBIE = '部分退货'.
* ELSEIF LV_SHKZG_1 IS NOT INITIAL AND LV_SHKZG_2 IS INITIAL.
* LWA_HEAD-ZLEIBIE = '退货'.
* ELSEIF LV_SHKZG_1 IS INITIAL AND LV_SHKZG_2 IS NOT INITIAL.
* LWA_HEAD-ZLEIBIE = '送货'.
* ENDIF.
* ENDIF.
** add cjj 20190528 start
* CLEAR LS_MATDOC.
* READ TABLE LT_MATDOC INTO LS_MATDOC WITH KEY VBELN_IM = LWA_LIKP-VBELN.
* IF SY-SUBRC = 0.
* LWA_HEAD-MBLNR = LS_MATDOC-MBLNR.
* ENDIF.
** add cjj 20190528 end
* LWA_HEAD-NO_CUST = LWA_LIKP-NO_CUST.
* LWA_HEAD-VBELN = LWA_LIKP-VBELN.
* LWA_HEAD-ZDELIVERYPLANNO = LWA_LIKP-ZDELIVERYPLANNO.
* LWA_HEAD-WERKS = LWA_LIKP-WERKS.
* LWA_HEAD-LGORT = LWA_LIPS-LGORT.
* LWA_HEAD-SGTXT = LWA_LIKP-SGTXT.
* LWA_HEAD-ANZPK = LWA_LIKP-ANZPK.
* LWA_HEAD-BTGEW = LWA_LIKP-BTGEW.
* LWA_HEAD-NTGEW = LWA_LIKP-NTGEW.
* LWA_HEAD-GEWEI = LWA_LIKP-GEWEI.
* SELECT SINGLE MSEHL FROM T006A INTO LWA_HEAD-GEWEI_TXT
* WHERE SPRAS = SY-LANGU
* AND MSEHI = LWA_HEAD-GEWEI.
* LWA_HEAD-FREIGHT = LWA_LIKP-FREIGHT.
* LWA_HEAD-BOLNR = LWA_LIKP-BOLNR.
* LWA_HEAD-INV_NO = LWA_LIKP-INV_NO.
* LWA_HEAD-PACK_DATE = LWA_LIKP-PACK_DATE.
* LWA_HEAD-ITM_EXPVZ = LWA_LIKP-ITM_EXPVZ.
* LWA_HEAD-TRADE_TYPE = LWA_LIKP-TRADE_TYPE.
*
* SELECT SINGLE BEZEI INTO LWA_HEAD-ITM_EXPVZ_TXT
* FROM TVTRT
* WHERE SPRAS = SY-LANGU
* AND VKTRA = LWA_HEAD-ITM_EXPVZ.
*
* CLEAR LV_DOMVALUE.
* LV_DOMVALUE = LWA_HEAD-TRADE_TYPE.
* IF LV_DOMVALUE IS NOT INITIAL.
* CALL FUNCTION 'DOMAIN_VALUE_GET'
* EXPORTING
* I_DOMNAME = 'ZD_TRADE_TYPE'
* I_DOMVALUE = LV_DOMVALUE
* IMPORTING
* E_DDTEXT = LV_DDTEXT
* EXCEPTIONS
* NOT_EXIST = 1
* OTHERS = 2.
* IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ELSE.
* LWA_HEAD-TRADE_TYPE_TXT = LV_DDTEXT.
* ENDIF.
* ENDIF.
*
* LWA_HEAD-LDDAT = LWA_LIKP-LDDAT.
* LWA_HEAD-ITM_KZGBE = LWA_LIKP-ITM_KZGBE.
* LWA_HEAD-DUE_ARRIVE_DATE = LWA_LIKP-DUE_ARRIVE_DATE.
* LWA_HEAD-ZCARGOVALUECURRENCY = LWA_LIKP-ZCARGOVALUECURRENCY.
* LWA_HEAD-LFDAT = LWA_LIKP-LFDAT.
* LWA_HEAD-ERDAT = LWA_LIKP-ERDAT.
* LWA_HEAD-AEDAT = LWA_LIKP-AEDAT.
* LWA_HEAD-TDDAT = LWA_LIKP-TDDAT.
* LWA_HEAD-ZWERKS = LWA_LIKP-ZWERKS.
* LWA_HEAD-ZKEGONG = LWA_LIKP-CLIENT_BUY.
* LWA_HEAD-CUST_NO = LWA_LIKP-CUST_NO.
* LWA_HEAD-QANETWR = LWA_LIKP-QANETWR.
** SELECT SINGLE NAME2 FROM T001W INTO LWA_HEAD-WERKS_TXT
** WHERE WERKS = LWA_HEAD-ZWERKS.
* SELECT SINGLE NAME1 FROM ZMMT0124 INTO LWA_HEAD-WERKS_TXT
* WHERE WERKS = LWA_HEAD-ZWERKS.
* LWA_HEAD-WERKS1 = LWA_LIKP-WERKS1.
** rep by cjj 20190611 start
** SELECT SINGLE LGOBE INTO LWA_HEAD-LGORT_TXT FROM T001L
** WHERE WERKS = '1000'
** AND LGORT = LWA_HEAD-LGORT.
* CLEAR LS_T001L.
* READ TABLE LT_T001L INTO LS_T001L WITH KEY LGORT = LWA_HEAD-LGORT.
* IF SY-SUBRC = 0.
* LWA_HEAD-LGORT_TXT = LS_T001L-LGOBE.
* ENDIF.
** rep by cjj 20190611 end
* CLEAR LV_JE.
* LOOP AT GT_ITEM_ALL INTO LWA_ITEM WHERE VBELN = LWA_LIKP-VBELN.
* LV_JE = LV_JE + LWA_ITEM-ZJE.
* ENDLOOP.
* LWA_HEAD-ZFYJE = LV_JE.
* LWA_HEAD-ZTOL = LWA_HEAD-ZFYJE + LWA_HEAD-FREIGHT.
*
* CLEAR LWA_EKKO.
* READ TABLE LT_EKKO INTO LWA_EKKO
* WITH KEY EBELN = LWA_LIPS-VGBEL
* EBELP = LWA_LIPS-VGPOS BINARY SEARCH.
* IF SY-SUBRC = 0.
* LWA_HEAD-ZHTH = LWA_EKKO-ZHTH.
* LWA_HEAD-EKGRP = LWA_EKKO-EKGRP.
* SELECT SINGLE EKNAM FROM T024
* INTO LWA_HEAD-EKGRP_TXT
* WHERE EKGRP = LWA_HEAD-EKGRP.
* LWA_HEAD-LIFNR = LWA_EKKO-LIFNR.
** rep by cjj 20190611 start
** CLEAR LWA_LFA1.
** SELECT SINGLE NAME1 NAME2 FROM LFA1
** INTO CORRESPONDING FIELDS OF LWA_LFA1
** WHERE LIFNR = LWA_HEAD-LIFNR.
** CONCATENATE LWA_LFA1-NAME1 LWA_LFA1-NAME2 INTO LWA_HEAD-LIFNR_TXT
** SEPARATED BY SPACE.
* CLEAR LS_LFA1.
* READ TABLE LT_LFA1 INTO LS_LFA1 WITH KEY LIFNR = LWA_HEAD-LIFNR.
* IF SY-SUBRC = 0.
* CONCATENATE LS_LFA1-NAME1 LS_LFA1-NAME2 INTO LWA_HEAD-LIFNR_TXT
* SEPARATED BY SPACE.
* ENDIF.
** rep by cjj 20190611 end
* LWA_HEAD-ZLSCH = LWA_EKKO-ZLSCH.
* LWA_HEAD-INCO1 = LWA_EKKO-INCO1.
* LWA_HEAD-WKURS = LWA_EKKO-WKURS.
* LWA_HEAD-ZTAX = LWA_ITEM-ZTAX.
* LWA_HEAD-WAERS = LWA_EKKO-WAERS.
* SELECT SINGLE KTEXT FROM TCURT
* INTO LWA_HEAD-WAERS_TXT
* WHERE SPRAS = SY-LANGU
* AND WAERS = LWA_HEAD-WAERS.
* ENDIF.
*
* LV_DOMVALUE = LWA_HEAD-NO_CUST.
* IF LV_DOMVALUE IS NOT INITIAL.
* CALL FUNCTION 'DOMAIN_VALUE_GET'
* EXPORTING
* I_DOMNAME = 'ZD_NO_CUST'
* I_DOMVALUE = LV_DOMVALUE
* IMPORTING
* E_DDTEXT = LV_DDTEXT
* EXCEPTIONS
* NOT_EXIST = 1
* OTHERS = 2.
* IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ELSE.
* LWA_HEAD-NO_CUST_TXT = LV_DDTEXT.
* ENDIF.
* ENDIF.
*
* "入库人,入库日期
** rep by cjj 20190611 start
** SELECT MKPF~USNAM MKPF~BUDAT
** FROM MKPF INNER JOIN MSEG
** ON MKPF~MBLNR = MSEG~MBLNR
** AND MKPF~MJAHR = MSEG~MJAHR
** UP TO 1 ROWS
** INTO ( LWA_HEAD-USNAM,LWA_HEAD-BUDAT )
** WHERE MSEG~VBELN_IM = LWA_HEAD-VBELN.
** ENDSELECT.
*
** SELECT SINGLE NAME_TEXTC FROM USER_ADDR
** INTO LWA_HEAD-USNAM_TXT
** WHERE BNAME = LWA_HEAD-USNAM.
* CLEAR LS_MKPF.
* READ TABLE LT_MKPF INTO LS_MKPF WITH KEY VBELN_IM = LWA_HEAD-VBELN.
* IF SY-SUBRC = 0.
* LWA_HEAD-USNAM = LS_MKPF-USNAM.
* LWA_HEAD-BUDAT = LS_MKPF-BUDAT.
* CLEAR LS_USER_ADDR.
* READ TABLE LT_USER_ADDR INTO LS_USER_ADDR WITH KEY BNAME = LWA_HEAD-USNAM.
* IF SY-SUBRC = 0.
* LWA_HEAD-USNAM_TXT = LS_USER_ADDR-NAME_TEXTC.
* ENDIF.
* ENDIF.
** rep by cjj 20190611 end
* SELECT SINGLE TEXT2 FROM T042ZT INTO LWA_HEAD-ZLSCH_TXT
* WHERE SPRAS = SY-LANGU
* AND LAND1 = 'CN'
* AND ZLSCH = LWA_HEAD-ZLSCH.
*
* LV_ID = '0102'.
* LV_TDNAME = LWA_HEAD-VBELN.
* LV_OBJECT = 'VBBK'.
* CLEAR LT_LINES.
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
* ID = LV_ID
* LANGUAGE = SY-LANGU
* NAME = LV_TDNAME
* OBJECT = LV_OBJECT
* TABLES
* LINES = LT_LINES
* EXCEPTIONS
* ID = 1
* LANGUAGE = 2
* NAME = 3
* NOT_FOUND = 4
* OBJECT = 5
* REFERENCE_CHECK = 6
* WRONG_ACCESS_TO_ARCHIVE = 7
* OTHERS = 8.
* IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ELSE.
* LOOP AT LT_LINES INTO LWA_LINES.
* CONCATENATE LWA_HEAD-MEMO LWA_LINES-TDLINE INTO LWA_HEAD-MEMO.
* ENDLOOP.
* ENDIF.
*
** "发送标记
** CLEAR LWA_ZMMT0011.
** READ TABLE LT_ZMMT0011 INTO LWA_ZMMT0011 WITH KEY VBELN = LWA_HEAD-VBELN.
**
** LWA_HEAD-ZFASONG = 'X'.
**
** ENDLOOP.
** ENDIF.
*
* "合同附件
** rep by cjj 20190611 start
** SELECT COUNT(*) FROM TOA01
** WHERE SAP_OBJECT = 'ZMMR0003' AND OBJECT_ID = LWA_HEAD-ZHTH.
* READ TABLE LT_TOA01 WITH KEY OBJECT_ID = LWA_HEAD-ZHTH
* SAP_OBJECT = 'ZMMR0003'
* TRANSPORTING NO FIELDS.
** rep by cjj 20190611 end
* IF SY-SUBRC = 0.
* LWA_HEAD-ZHTBJ = '附件'.
* ENDIF.
* "提单附件
** rep by cjj 20190611 start
** SELECT COUNT(*) FROM TOA01
** WHERE SAP_OBJECT = 'ZMMR012301' AND OBJECT_ID = LWA_HEAD-VBELN.
* READ TABLE LT_TOA01 WITH KEY OBJECT_ID = LWA_HEAD-VBELN
* SAP_OBJECT = 'ZMMR012301'
* TRANSPORTING NO FIELDS.
** rep by cjj 20190611 end
* IF SY-SUBRC = 0.
* LWA_HEAD-ZTDFJ = '附件'.
* ENDIF.
* "发票附件
** rep by cjj 20190611 start
** SELECT COUNT(*) FROM TOA01
** WHERE SAP_OBJECT = 'ZMMR012302' AND OBJECT_ID = LWA_HEAD-VBELN.
* READ TABLE LT_TOA01 WITH KEY OBJECT_ID = LWA_HEAD-VBELN
* SAP_OBJECT = 'ZMMR012302'
* TRANSPORTING NO FIELDS.
** rep by cjj 20190611 end
* IF SY-SUBRC = 0.
* LWA_HEAD-ZFPFJ = '附件'.
* ENDIF.
* "在途入库单附件
** rep by cjj 20190611 start
** SELECT COUNT(*) FROM TOA01
** WHERE SAP_OBJECT = 'ZMMR012303' AND OBJECT_ID = LWA_HEAD-VBELN.
* READ TABLE LT_TOA01 WITH KEY OBJECT_ID = LWA_HEAD-VBELN
* SAP_OBJECT = 'ZMMR012303'
* TRANSPORTING NO FIELDS.
** rep by cjj 20190611 end
* IF SY-SUBRC = 0.
* LWA_HEAD-ZZTRKDFJ = '附件'.
* ENDIF.
* "正式入库单附件
** rep by cjj 20190611 start
** SELECT COUNT(*) FROM TOA01
** WHERE SAP_OBJECT = 'ZMMR012304' AND OBJECT_ID = LWA_HEAD-VBELN.
* READ TABLE LT_TOA01 WITH KEY OBJECT_ID = LWA_HEAD-VBELN
* SAP_OBJECT = 'ZMMR012304'
* TRANSPORTING NO FIELDS.
** rep by cjj 20190611 end
* IF SY-SUBRC = 0.
* LWA_HEAD-ZZSRKDFJ = '附件'.
* ENDIF.

* "正式入库单附件
** rep by cjj 20190611 start
** SELECT COUNT(*) FROM TOA01
** WHERE SAP_OBJECT = 'ZMMR0011' AND OBJECT_ID = LWA_HEAD-VBELN.
* READ TABLE LT_TOA01 WITH KEY OBJECT_ID = LWA_HEAD-VBELN
* SAP_OBJECT = 'ZMMR0011'
* TRANSPORTING NO FIELDS.
** rep by cjj 20190611 end
* IF SY-SUBRC = 0.
* LWA_HEAD-ZBGDFJ = '附件'.
* ENDIF.
** Edit 发货数量
* CLEAR: LV_LFIMG1,LV_LFIMG2.
* LOOP AT GT_ITEM_ALL INTO LWA_ITEM WHERE VBELN = LWA_LIKP-VBELN.
* LV_LFIMG1 = LV_LFIMG1 + LWA_ITEM-LFIMG.
* CLEAR LWA_ITEM.
* ENDLOOP.
* LOOP AT LT_ZMMT0123B INTO LS_ZMMT0123B WHERE VBELN+1(10) = LWA_LIKP-VBELN.
* LV_LFIMG2 = LV_LFIMG2 + LS_ZMMT0123B-LFIMG.
* CLEAR LS_ZMMT0123B.
* ENDLOOP.
* IF LV_LFIMG2 >= LV_LFIMG1.
* LWA_HEAD-THZT = '完全退货'.
* ELSEIF LV_LFIMG2 < LV_LFIMG1 AND LV_LFIMG2 <> 0.
* LWA_HEAD-THZT = '部分退货'.
* ENDIF.
* APPEND LWA_HEAD TO GT_HEAD.
* CLEAR LWA_HEAD.
* ENDLOOP.
*** del by cjj 20190711 end
* 退货信息取得 add 20190528 start
IF P_DJLX1 IS NOT INITIAL OR P_DJLX0 IS NOT INITIAL.
LOOP AT LT_ZMMT0123A INTO LS_ZMMT0123A WHERE VBELN IN S_VBELN[].
CLEAR LWA_LIPS.
READ TABLE LT_ZMMT0123B INTO LS_ZMMT0123B WITH KEY VBELN = LS_ZMMT0123A-VBELN.
IF SY-SUBRC <> 0.
CONTINUE.
ENDIF.

MOVE-CORRESPONDING LS_ZMMT0123A TO LWA_HEAD.
CLEAR LWA_EKKO.
READ TABLE LT_EKKO INTO LWA_EKKO
WITH KEY EBELN = LS_ZMMT0123B-VGBEL
EBELP = LS_ZMMT0123B-VGPOS BINARY SEARCH.
IF SY-SUBRC = 0.
LWA_HEAD-ZHTH = LWA_EKKO-ZHTH.
LWA_HEAD-EKGRP = LWA_EKKO-EKGRP.
SELECT SINGLE EKNAM FROM T024
INTO LWA_HEAD-EKGRP_TXT
WHERE EKGRP = LWA_HEAD-EKGRP.
LWA_HEAD-LIFNR = LWA_EKKO-LIFNR.
CLEAR LWA_LFA1.
SELECT SINGLE NAME1 NAME2 FROM LFA1
INTO CORRESPONDING FIELDS OF LWA_LFA1
WHERE LIFNR = LWA_HEAD-LIFNR.
CONCATENATE LWA_LFA1-NAME1 LWA_LFA1-NAME2 INTO LWA_HEAD-LIFNR_TXT
SEPARATED BY SPACE.
LWA_HEAD-ZLSCH = LWA_EKKO-ZLSCH.
LWA_HEAD-INCO1 = LWA_EKKO-INCO1.
LWA_HEAD-WKURS = LWA_EKKO-WKURS.
LWA_HEAD-ZTAX = LWA_ITEM-ZTAX.
LWA_HEAD-WAERS = LWA_EKKO-WAERS.
SELECT SINGLE KTEXT FROM TCURT
INTO LWA_HEAD-WAERS_TXT
WHERE SPRAS = SY-LANGU
AND WAERS = LWA_HEAD-WAERS.
ELSE. "add cjj 20190612
CONTINUE. "add cjj 20190612
ENDIF.
LWA_HEAD-ZLEIBIE = '退货'. "类别
LWA_HEAD-ROWCOLOR = 'C310'.
LWA_HEAD-WERKS = LS_ZMMT0123A-ZWERKS. "入库基地
"发送标记
CLEAR LWA_ZMMT0011.
READ TABLE LT_ZMMT0011 INTO LWA_ZMMT0011 WITH KEY ZVBELN = LS_ZMMT0123A-VBELN.
IF SY-SUBRC = 0.
LOOP AT LT_ZMMT0069_H INTO LWA_ZMMT0069_H WHERE IV_VBELN = LS_ZMMT0123A-VBELN
AND ZRESULT = 'S'.
IF LWA_ZMMT0069_H-ERDAT > LWA_ZMMT0011-ERDAT
OR ( LWA_ZMMT0069_H-ERDAT = LWA_ZMMT0011-ERDAT
AND LWA_ZMMT0069_H-ERZET >= LWA_ZMMT0011-UZEIT ).
LWA_HEAD-ZFASONG = 'X'.
ENDIF.
ENDLOOP.
ENDIF.
LWA_HEAD-QANETWR = LS_ZMMT0123A-ZZBJ. "质保金
APPEND LWA_HEAD TO LT_HEAD.
CLEAR:LS_ZMMT0123A,LWA_HEAD.
ENDLOOP.
DATA LS_COLOR TYPE LVC_S_SCOL.
LS_COLOR-FNAME = 'LFIMG'.
LS_COLOR-COLOR-COL = '6'.
LS_COLOR-COLOR-INT = '0'.
LS_COLOR-COLOR-INV = '1'.
LOOP AT LT_ZMMT0123B INTO LS_ZMMT0123B WHERE VBELN IN S_VBELN[].
MOVE-CORRESPONDING LS_ZMMT0123B TO LWA_ITEM.
READ TABLE LT_ZMMT0123A INTO LS_ZMMT0123A WITH KEY VBELN = LS_ZMMT0123B-VBELN.
IF SY-SUBRC = 0.
LWA_ITEM-WAERS = LS_ZMMT0123A-WAERS. "货币
LWA_ITEM-WAERS_TXT = LS_ZMMT0123A-WAERS_TXT. "货币
* LGORT TYPE LIPS-LGORT, "入库仓库
* LGORT_TXT TYPE T001L-LGOBE, "入库仓库text
ELSE. "add cjj 20190612
CONTINUE. "add cjj 20190612
ENDIF.
* rep by cjj 20190613 start
* SELECT SINGLE POST1 FROM PROJ INTO LWA_ITEM-POST1 "项目明称
* WHERE PSPNR = LWA_ITEM-PSPHI.
CLEAR LS_PROJ.
READ TABLE LT_PROJ INTO LS_PROJ WITH KEY PSPNR = LWA_ITEM-PSPHI.
LWA_ITEM-POST1 = LS_PROJ-POST1.
* rep by cjj 20190613 end
"离岸日期,立项日期,赋税类型 赋税类型text
* CALL FUNCTION 'CONVERSION_EXIT_KONPD_OUTPUT'
* EXPORTING
* INPUT = LWA_ITEM-PSPHI
* IMPORTING
* OUTPUT = LV_POSID.
* SELECT SINGLE USR08 USR09 USR00
* FROM PRPS
* INTO (LWA_ITEM-ZLARQ,LWA_ITEM-ZLXRQ,LWA_ITEM-ZTAXTYPE)
* WHERE
** PSPHI = LWA_ITEM-PSPHI
** AND STUFE = '1'
* PSPNR = LWA_ITEM-PS_PSP_PNR.
** AND SLWID = 'ZPMCGJ1'.
CLEAR LS_PRPS.
* READ TABLE lt_prps INTO ls_prps WITH KEY pspnr = lwa_lips-ps_psp_pnr BINARY SEARCH. " 通过TR - S4DK906152 注释 20190614
READ TABLE LT_PRPS INTO LS_PRPS WITH KEY PSPNR = LS_ZMMT0123B-PS_PSP_PNR BINARY SEARCH. " 通过TR - S4DK906152 注释 20190614
IF SY-SUBRC = 0. " 通过TR - S4DK906152 添加 20190614
LWA_ITEM-ZLARQ = LS_PRPS-USR08.
LWA_ITEM-ZLXRQ = LS_PRPS-USR09.
LWA_ITEM-ZTAXTYPE = LS_PRPS-USR00.
* add cjj 20191028 start
* 根据WBS编码(EKKN-PS_PSP_PNR)在表PRPS中查找对应字段码(PRPS-SLWID),
* 1、若SLWID=ZPMCGJ1(这种情况,WBS带赋税类型字段),则取WBS的赋税类型(PRPS-USR00);
* 2、其他情况,则在表PRPS中根据WBS找到对应的项目工号(PRPS-PSPHI),然后根据项目工号,在表ZPST0007中查找对应的赋税类型(ZPST0007- ZZTAX)
PERFORM EDIT_ZTAXTYPE USING LS_PRPS-PSPHI LS_PRPS-SLWID CHANGING LWA_ITEM-ZTAXTYPE.
* add cjj 20191028 end
ENDIF. " 通过TR - S4DK906152 添加 20190614
IF LWA_ITEM-ZTAXTYPE = 'Z1'.
LWA_ITEM-ZTAXTYPE_TXT = '免税'.
ELSEIF LWA_ITEM-ZTAXTYPE = 'Z2'.
LWA_ITEM-ZTAXTYPE_TXT = '征税'.
ENDIF.
* SELECT SINGLE
* LGORT
* INTO LWA_ITEM-LGORT
* FROM EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
* WHERE EBELN = LWA_ITEM-VGBEL
* AND EBELP = LWA_ITEM-VGPOS
* AND LOEKZ = SPACE.
CLEAR LWA_EKKO.
READ TABLE LT_EKKO INTO LWA_EKKO
WITH KEY EBELN = LS_ZMMT0123B-VGBEL
EBELP = LS_ZMMT0123B-VGPOS BINARY SEARCH.
IF SY-SUBRC = 0.
LWA_ITEM-MWSKZ = LWA_EKKO-MWSKZ.
LWA_ITEM-ZZGBCD = LWA_EKKO-ZZGBCD."“长 ” add 20190705
LWA_ITEM-ZZGBKD = LWA_EKKO-ZZGBKD."“宽” add 20190705
LWA_ITEM-ZZGBFYKS = LWA_EKKO-ZZGBFYKS."“块数” add 20190705
LWA_ITEM-ZSGXH = LWA_EKKO-ZSGXH. "Add cjj 20191205
CALL FUNCTION 'ZFM_GET_DUTY_RATE'
EXPORTING
IM_MWSKZ = LWA_ITEM-MWSKZ
IMPORTING
EX_ZDUTY = LWA_ITEM-ZTAX.
LWA_ITEM-LGORT = LWA_EKKO-LGORT.
** add cjj 20190722 start
* clear :lv_kposn,ls_prcd.
* lv_kposn = LWA_EKKO-ebelp.
* read table lt_prcd into ls_prcd with key knumv = LWA_EKKO-knumv
* kposn = lv_kposn
* binary search.
* if sy-subrc = 0.
* LWA_ITEM-ZJE = ( ls_prcd-KBETR / ls_prcd-KPEIN ) * LWA_LIPS-LFIMG.
* endif.
** add cjj 20190722 end

* rep by caijunjie 20190612 start
* SELECT SINGLE LGOBE FROM T001L
* INTO LWA_ITEM-LGORT_TXT
* WHERE WERKS = '1000'
* AND LGORT = LWA_ITEM-LGORT.
CLEAR LS_T001L.
READ TABLE LT_T001L INTO LS_T001L WITH KEY LGORT = LWA_ITEM-LGORT.
IF SY-SUBRC = 0.
LWA_ITEM-LGORT_TXT = LS_T001L-LGOBE.
ENDIF.
* rep by caijunjie 20190612 end
ENDIF.
"分解项数
CLEAR:LV_BA_FLG,LV_IN_FLG, LV_CNT.
CLEAR:LV_BA_FLG_NEW. " 通过TR - S4DK906152 添加 20190614
LOOP AT LT_ZMMT0123C INTO LS_ZMMT0123C WHERE VBELN = LWA_ITEM-VBELN
AND POSNR = LWA_ITEM-POSNR.
LV_CNT = LV_CNT + 1.
LV_IN_FLG = 'X'.

IF GV_ACBK_USE NE ABAP_TRUE. " 通过TR - S4DK906152 添加 20190614 新账册启用之后 旧字段不需要赋值了
SELECT COUNT(*) FROM ZMMT0005 WHERE IL_ITEM_ID = LS_ZMMT0123C-ITEM_ID
AND IL_STATUS = '6'
AND ZACCOUNT_BOOK_NR = GV_OLD_ACCOUNT_NR. " 通过TR - S4DK906152 添加 20190614
IF SY-SUBRC <> 0.
LV_BA_FLG = 'X'.
ENDIF.
" 开始-通过TR - S4DK906152 添加 20190614
ENDIF.

SELECT COUNT(*) FROM ZMMT0005 WHERE IL_ITEM_ID = LS_ZMMT0123C-ITEM_ID
AND IL_STATUS = '6'
AND ZACCOUNT_BOOK_NR = GV_NEW_ACCOUNT_NR.
IF SY-SUBRC <> 0.
LV_BA_FLG_NEW = 'X'.
ENDIF.
" 结束通过TR - S4DK906152 添加 20190614
ENDLOOP.
LWA_ITEM-PACK_CNT = LV_CNT.
"零件报关备案状态
IF LWA_ITEM-PART_CUST IS NOT INITIAL.
LWA_ITEM-PART_CUST_TXT = '是'.
ELSE.
LWA_ITEM-PART_CUST_TXT = '否'.
ENDIF.
IF LWA_ITEM-PART_CUST IS NOT INITIAL.

IF GV_ACBK_USE NE ABAP_TRUE. " 通过TR - S4DK906152 添加 20190614 新账册启用之后 旧字段不需要赋值了
IF LV_BA_FLG IS NOT INITIAL.
LWA_ITEM-IL_STATUS_LJBG = '未备案'.
ELSE.
IF LV_IN_FLG IS NOT INITIAL.
LWA_ITEM-IL_STATUS_LJBG = '备案'.
ENDIF.
ENDIF.
ENDIF. " 通过TR - S4DK906152 添加 20190614

" 开始-通过TR - S4DK906152 添加 20190614
IF LV_BA_FLG_NEW IS NOT INITIAL.
LWA_ITEM-IL_STATUS_LJBG_N = '未备案'.
ELSE.
IF LV_IN_FLG IS NOT INITIAL.
LWA_ITEM-IL_STATUS_LJBG_N = '备案'.
ENDIF.
ENDIF.
" 结束-通过TR - S4DK906152 添加 20190614

ENDIF.

" 开始-通过TR - S4DK906152 删除 20190614
" 金关二期 增加新老账册 状态 取消对行颜色的变化
* SELECT COUNT(*) FROM zmmt0005
* WHERE il_item_id = lwa_item-matnr
* AND il_status = '6'
* AND zaccount_book_nr = gv_new_account_nr.
* IF sy-subrc <> 0 .
* IF lwa_item-part_cust IS NOT INITIAL AND lwa_item-il_status_ljbg = '备案'.
* ELSE.
* IF lwa_item-ztaxtype = 'Z1'.
* lwa_item-rowcolor = 'C600'.
* ENDIF.
* ENDIF.
* ELSE.
* IF lwa_item-part_cust IS NOT INITIAL AND lwa_item-il_status_ljbg = '未备案'
* AND lwa_item-ztaxtype = 'Z1'.
* lwa_item-rowcolor = 'C600'.
* ENDIF.
* ENDIF.
" 结束-通过TR - S4DK906152 删除 20190614
" 开始-通过TR - S4DK906152 添加 20190614
CLEAR:
LWA_ITEM-IL_STATUS,
LWA_ITEM-IL_STATUS_N,
LWA_ITEM-IL_STATUS_TXT_N,
LWA_ITEM-IL_HS_NR,
LWA_ITEM-IL_EMS_NO_1,
LWA_ITEM-IL_STATUS_TXT.
IF GV_ACBK_USE NE ABAP_TRUE.
IF GV_OLD_ACCOUNT_NR NE 'E22105000006'.
CLEAR:LWA_ITEM-IL_HS_CODE,
LWA_ITEM-IL_HS_ATTACH,
LWA_ITEM-IL_EMS_NO.
ENDIF.
ENDIF.
" 结束-通过TR - S4DK906152 添加 20190614

IF GV_ACBK_USE NE ABAP_TRUE. " 通过TR - S4DK906152 添加 20190614
CLEAR LWA_ZMMT0005.
READ TABLE LT_ZMMT0005 INTO LWA_ZMMT0005
WITH KEY IL_ITEM_ID = LS_ZMMT0123B-MATNR
ZACCOUNT_BOOK_NR = GV_OLD_ACCOUNT_NR. " 通过TR - S4DK906152 添加 20190614
IF SY-SUBRC = 0.
LWA_ITEM-IL_STATUS = LWA_ZMMT0005-IL_STATUS.

CLEAR LV_DOMVALUE.
LV_DOMVALUE = LWA_ZMMT0005-IL_STATUS.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_ZT'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_ITEM-IL_STATUS_TXT = LV_DDTEXT.
ENDIF.
ENDIF.

IF GV_OLD_ACCOUNT_NR = 'E22105000006'. " 通过TR - S4DK906152 添加 20190614
LWA_ITEM-IL_HS_CODE = LWA_ZMMT0005-IL_HS_CODE.
LWA_ITEM-IL_HS_ATTACH = LWA_ZMMT0005-IL_HS_ATTACH.
LWA_ITEM-IL_EMS_NO = LWA_ZMMT0005-IL_EMS_NO.
ENDIF. " 通过TR - S4DK906152 添加 20190614

ENDIF.

" 开始-通过TR - S4DK906152 添加 20190614
ENDIF.

CLEAR LWA_ZMMT0005.
READ TABLE LT_ZMMT0005 INTO LWA_ZMMT0005
WITH KEY IL_ITEM_ID = LS_ZMMT0123B-MATNR
ZACCOUNT_BOOK_NR = GV_NEW_ACCOUNT_NR. " 通过TR - S4DK906152 添加 20190614
IF SY-SUBRC = 0.

CLEAR LV_DOMVALUE.
LV_DOMVALUE = LWA_ZMMT0005-IL_STATUS.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_ZT'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_ITEM-IL_STATUS_TXT_N = LV_DDTEXT.
ENDIF.
ENDIF.

LWA_ITEM-IL_HS_NR = LWA_ZMMT0005-IL_HS_NR.
LWA_ITEM-IL_EMS_NO_1 = LWA_ZMMT0005-IL_EMS_NO_1.

ENDIF.
" 结束-通过TR - S4DK906152 添加 20190614

APPEND LS_COLOR TO LWA_ITEM-CELL_COLOR.
APPEND LWA_ITEM TO GT_ITEM_ALL.
CLEAR:LWA_ITEM,LS_ZMMT0123B.
ENDLOOP.
LOOP AT LT_ZMMT0123C INTO LS_ZMMT0123C WHERE VBELN IN S_VBELN[].
MOVE-CORRESPONDING LS_ZMMT0123C TO LWA_FJXS.
CLEAR LWA_ZMMT0005.

IF GV_ACBK_USE NE ABAP_TRUE. " 通过TR - S4DK906152 添加 20190614 新账册启用之后 旧账册数据不需要了 只从新账册取就好了
READ TABLE LT_ZMMT0005_FJ INTO LWA_ZMMT0005 WITH KEY IL_ITEM_ID = LS_ZMMT0123C-ITEM_ID
ZACCOUNT_BOOK_NR = GV_OLD_ACCOUNT_NR. " 通过TR - S4DK906152 添加 20190614
IF SY-SUBRC = 0.
MOVE-CORRESPONDING LWA_ZMMT0005 TO LWA_FJXS.
CLEAR LV_DOMVALUE.
LV_DOMVALUE = LWA_FJXS-IL_STATUS.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_ZT'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_FJXS-IL_STATUS_TXT = LV_DDTEXT.
ENDIF.
ENDIF.

IF GV_OLD_ACCOUNT_NR NE 'E22105000006'. " 通过TR - S4DK906152 添加 20190614
CLEAR:LWA_FJXS-IL_HS_CODE,
LWA_FJXS-IL_EMS_NO,
LWA_FJXS-IL_HS_ATTACH.

ENDIF. " 通过TR - S4DK906152 添加 20190614

ENDIF.

" 开始-通过TR - S4DK906152 添加 20190614
ENDIF.

READ TABLE LT_ZMMT0005_FJ INTO LWA_ZMMT0005 WITH KEY IL_ITEM_ID = LS_ZMMT0123C-ITEM_ID
ZACCOUNT_BOOK_NR = GV_NEW_ACCOUNT_NR. " 通过TR - S4DK906152 添加 20190614
IF SY-SUBRC = 0.

LWA_FJXS-IL_HS_NR = LWA_ZMMT0005-IL_HS_NR.
LWA_FJXS-IL_EMS_NO_1 = LWA_ZMMT0005-IL_EMS_NO_1.

CLEAR LV_DOMVALUE.
LV_DOMVALUE = LWA_ZMMT0005-IL_STATUS.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_ZT'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_FJXS-IL_STATUS_TXT_N = LV_DDTEXT.
ENDIF.
ENDIF.
ENDIF.

* " 结束-通过TR - S4DK906152 添加 20190614

APPEND LWA_FJXS TO GT_FJXS_ALL.
CLEAR:LWA_ITEM,LS_ZMMT0123B,LWA_FJXS.
ENDLOOP.
ENDIF.
* 退货信息取得 add 20190528 end
SORT GT_HEAD BY VBELN.
CLEAR: LT_HEAD_ALL[],LT_HEAD_TMP[].
* 编辑退货单和原单位置 add cjj 20190531 start
IF LT_HEAD[] IS NOT INITIAL AND GT_HEAD[] IS NOT INITIAL..
LOOP AT GT_HEAD INTO LWA_HEAD.
APPEND LWA_HEAD TO LT_HEAD_ALL.
LOOP AT LT_HEAD INTO LS_HEAD WHERE VBELN+1(10) = LWA_HEAD-VBELN.
APPEND LS_HEAD TO LT_HEAD_TMP.
APPEND LS_HEAD TO LT_HEAD_ALL.
ENDLOOP.
CLEAR :LS_HEAD,LWA_HEAD.
ENDLOOP.
LOOP AT LT_HEAD INTO LS_HEAD.
READ TABLE LT_HEAD_TMP WITH KEY VBELN = LS_HEAD-VBELN
TRANSPORTING NO FIELDS.
IF SY-SUBRC <> 0.
APPEND LS_HEAD TO LT_HEAD_ALL.
ENDIF.
CLEAR LS_HEAD.
ENDLOOP.
CLEAR GT_HEAD[].
GT_HEAD[] = LT_HEAD_ALL[].
ELSEIF LT_HEAD[] IS NOT INITIAL AND GT_HEAD[] IS INITIAL.
GT_HEAD[] = LT_HEAD[].
ENDIF.
* 编辑退货单和原单位置 add cjj 20190531 end
DATA LT_HEAD_QX TYPE STANDARD TABLE OF TY_HEAD.
LT_HEAD_QX = GT_HEAD.
SORT LT_HEAD_QX BY EKGRP.
DELETE ADJACENT DUPLICATES FROM LT_HEAD_QX COMPARING EKGRP.
LOOP AT LT_HEAD_QX INTO LWA_HEAD.
AUTHORITY-CHECK OBJECT 'M_BEST_EKG'
ID 'ACTVT' FIELD '03'
ID 'EKGRP' FIELD LWA_HEAD-EKGRP.
IF SY-SUBRC <> 0.
MESSAGE S000(ZMM001) WITH '没有采购组:' LWA_HEAD-EKGRP '的权限' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.
DATA LV_SAVE_OK TYPE SY-UCOMM.
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD1 TYPE TY_HEAD.
******add by dangchao 20190829********************
DATA LV_MIDFLAG(1) TYPE C. "zmm172 memory id flag.
LV_MIDFLAG(1) = 'X'.
EXPORT LV_MIDFLAG TO MEMORY ID '&ZMM123_TO_MM172'.
**************************************************

"add 20190425 增加点按钮是否有采购员01权限检查
IF OK_CODE = 'XIUGAI' OR OK_CODE = 'SHANCHU' OR OK_CODE = 'QUEREN' OR OK_CODE = 'TUIHUI'
OR OK_CODE = 'PIPEI' OR OK_CODE = 'QUXIAO' OR OK_CODE = 'FENJIE' OR OK_CODE = 'ZRESENT'.
CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
READ TABLE LT_ROW INTO LWA_ROW INDEX 1.
READ TABLE GT_HEAD INTO LWA_HEAD1 INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
AUTHORITY-CHECK OBJECT 'M_BEST_EKG'
ID 'ACTVT' FIELD '01'
ID 'EKGRP' FIELD LWA_HEAD1-EKGRP.
IF SY-SUBRC <> 0.
IF OK_CODE = 'QUEREN'.
"确认时,检查是否有领导特权,没有就报错
SELECT COUNT(*) FROM ZMMT0181 WHERE BNAME = SY-UNAME AND TDLDTQ = 'X'.
IF SY-SUBRC <> 0.
MESSAGE E000(ZMM001) WITH '没有采购组:' LWA_HEAD1-EKGRP '的权限'.
ENDIF.
ELSE.
MESSAGE E000(ZMM001) WITH '没有采购组:' LWA_HEAD1-EKGRP '的权限'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

LV_SAVE_OK = OK_CODE.
CLEAR: OK_CODE,FLG_RETURN.
CASE LV_SAVE_OK.
WHEN 'XINJIAN'. "新建
GV_NEW_CHG = 'N'.
CLEAR:GT_TDMX, GWA_JKTD.
CALL SCREEN 9100.
WHEN 'COPY'. "20190508 add 复制
PERFORM FRM_PROCESS_COPY.
WHEN 'XIUGAI'. "修改
GV_NEW_CHG = 'C'.
CLEAR GT_TDMX_DEL.
PERFORM FRM_PROCESS_XIUGAI.
WHEN 'SHANCHU'. "删除
PERFORM FRM_PROCESS_SHANCHU.
WHEN 'QUEREN'. "确认
PERFORM FRM_PROCESS_QUEREN.
WHEN 'TUIHUI'. "退回
PERFORM FRM_PROCESS_TUIHUI.
WHEN 'PIPEI'. "匹配
PERFORM FRM_PROCESS_PIPEI.
WHEN 'QUXIAO'. "取消
PERFORM FRM_PROCESS_QUXIAO.
WHEN 'ZBACK'. "退货 add cjj 20190527
GV_NEW_CHG = 'B'. "add cjj 20190527
CLEAR GT_TDMX_DEL. "add cjj 20190527
PERFORM FRM_PROCESS_ZBACK. "add cjj 20190527
WHEN 'FENJIE'. "分解
CLEAR GT_CFMX.
IF LWA_HEAD1-VBELN(1) = 'R'. "add cjj 20190529
FLG_RETURN = 'X'.
ENDIF.
PERFORM FRM_PROCESS_FENJIE.
WHEN 'ZPRT'. "打印
PERFORM FRM_PRINT_DATA.
WHEN 'ZEXP'. "导出
PERFORM FRM_EXPORT_DATA.
WHEN 'ZRESENT'. "重新发送
PERFORM FRM_RESENT_DATA.
WHEN 'ZHTFJ'. "查看合同附件
PERFORM FRM_SHOW_HTFJ.
WHEN 'ZTDFJ'. "提单附件:上传、删除、查看
PERFORM FRM_ATTCH_TDFJ.
WHEN 'ZFPFJ'. "发票附件:上传、删除、查看
PERFORM FRM_ATTCH_FPFJ.
WHEN 'ZZTRKDFJ'. "在途入库单附件:上传、删除、查看
PERFORM FRM_ATTCH_ZTRKDFJ.
WHEN 'ZZSRKDFJ'. "正式入库单附件:上传、删除、查看
PERFORM FRM_ATTCH_ZSRKDFJ.
WHEN 'ZBGDFJ'. "查看报关单附件
PERFORM FRM_ATTCH_BGDFJ.
WHEN '&PARK'.
PERFORM CREATE_PARK.
WHEN OTHERS.
ENDCASE.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9100 OUTPUT.
DATA LT_UCOMM TYPE STANDARD TABLE OF SY-UCOMM WITH HEADER LINE.
CLEAR LT_UCOMM.
IF GV_NEW_CHG = 'C'
OR GV_NEW_CHG = 'B'. "Add cjj 20190527
LT_UCOMM = 'SELHT'.
APPEND LT_UCOMM.
ELSEIF GV_NEW_CHG = 'N'.
REFRESH LT_UCOMM[].
ENDIF.

SET PF-STATUS 'STA_9100' EXCLUDING LT_UCOMM.
IF GV_NEW_CHG = 'B'.
SET TITLEBAR 'TIL_9100B'.
ELSE.
SET TITLEBAR 'TIL_9100'.
ENDIF.
PERFORM FRM_SHOW_TDMX.

DATA LT_VALUE TYPE VRM_VALUES WITH HEADER LINE.
DATA LV_ID TYPE VRM_ID.
DATA LT_T042ZT TYPE STANDARD TABLE OF T042ZT.
DATA LWA_T042ZT TYPE T042ZT.
REFRESH LT_VALUE[].
CLEAR LT_T042ZT.
SELECT * FROM T042ZT INTO CORRESPONDING FIELDS OF TABLE LT_T042ZT
WHERE SPRAS = SY-LANGU
AND LAND1 = 'CN'.

LOOP AT LT_T042ZT INTO LWA_T042ZT.
CLEAR LT_VALUE.
LT_VALUE-TEXT = LWA_T042ZT-TEXT2.
LT_VALUE-KEY = LWA_T042ZT-ZLSCH.
APPEND LT_VALUE.
ENDLOOP.

LV_ID = 'GWA_JKTD-ZZFFS'.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = LV_ID
VALUES = LT_VALUE[]
EXCEPTIONS
ID_ILLEGAL_NAME = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.

ENDIF.
CHECK GV_NEW_CHG = 'N'.
IF GWA_JKTD-EKGRP IS INITIAL.
SELECT SINGLE PARVA INTO GWA_JKTD-EKGRP
FROM USR05
WHERE BNAME = SY-UNAME
AND PARID = 'EKG'.
ENDIF.
IF GWA_JKTD-GEWEI IS INITIAL.
GWA_JKTD-GEWEI = 'KG'.
ENDIF.
IF GWA_JKTD-WERKS1 IS INITIAL.
GWA_JKTD-WERKS1 = 'Z1'.
ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_SHOW_TDMX
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SHOW_TDMX .
DATA LWA_LAYOUT TYPE LVC_S_LAYO.
DATA IS_VARIANT TYPE DISVARIANT.

"show head data
IF GCL_ALV_GRID3 IS INITIAL.
CREATE OBJECT GCL_CCONTAINER3
EXPORTING
CONTAINER_NAME = 'CON3'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CREATE OBJECT GCL_ALV_GRID3
EXPORTING
I_PARENT = GCL_CCONTAINER3.

PERFORM FRM_GET_FIELDCAT USING 'GT_TDMX'.
PERFORM FRM_GET_EXCLUDE CHANGING GT_EXCLUDE.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.

IS_VARIANT-REPORT = SY-REPID && 'TDMX'.

* LOOP AT GT_FIELDCAT3 ASSIGNING FIELD-SYMBOL(<ls_fc3>).
* IF <ls_fc3>-FIELDNAME = 'ZPRICE' OR <ls_fc3>-FIELDNAME = 'ZFYDJ' OR <ls_fc3>-FIELDNAME = 'ZJE'.
* <ls_fc3>-CFIELDNAME = 'WAERS'.
* ENDIF.
* ENDLOOP.

CALL METHOD GCL_ALV_GRID3->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LWA_LAYOUT
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_VARIANT = IS_VARIANT
I_DEFAULT = 'X'
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT3
IT_OUTTAB = GT_TDMX.

DATA EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_DATA_CHANGED_FINISHED FOR GCL_ALV_GRID3.
SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GCL_ALV_GRID3.

CALL METHOD GCL_ALV_GRID3->REGISTER_EDIT_EVENT
EXPORTING
* I_EVENT_ID = GCL_ALV_GRID3->MC_EVT_ENTER.
I_EVENT_ID = GCL_ALV_GRID3->MC_EVT_MODIFIED.

ELSE.
"add start 20190122 新建金额不联动可输入,修改状态 金额不联动不可输入
"如果此处不重新设置fieldcat,金额不联动会记忆上次的输入状态,就不是新建可输,修改不可输
PERFORM FRM_GET_FIELDCAT USING 'GT_TDMX'.
PERFORM FRM_GET_EXCLUDE CHANGING GT_EXCLUDE.
IS_VARIANT-REPORT = SY-REPID && 'TDMX'.

CALL METHOD GCL_ALV_GRID3->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LWA_LAYOUT
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_VARIANT = IS_VARIANT
I_DEFAULT = 'X'
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT3
IT_OUTTAB = GT_TDMX.
"add end 20190122

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
CALL METHOD GCL_ALV_GRID3->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = LWA_LAYOUT.
CALL METHOD GCL_ALV_GRID3->REFRESH_TABLE_DISPLAY.
* CALL METHOD CL_GUI_CFW=>FLUSH.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9100 INPUT.
TYPES: BEGIN OF TY_ZAMOUNT,
VBELN TYPE LIPS-VBELN,
ZAMOUNT TYPE LIPS-ZAMOUNT,
ZCURRENCY TYPE LIPS-ZCURRENCY, "add cjj 20190813
END OF TY_ZAMOUNT.
DATA LT_ZAMOUNT TYPE STANDARD TABLE OF TY_ZAMOUNT.
DATA LWA_ZAMOUNT TYPE TY_ZAMOUNT.
DATA LWA_TDMX TYPE TY_TDMX.
DATA LV_NETWR TYPE EKPO-NETWR.
DATA LV_NETWR_T TYPE EKPO-NETWR. "add cjj 20190911
DATA LV_SUM_ZAMOUNT TYPE LIPS-ZAMOUNT.
DATA LV_SUM_ZAMOUNT_JE TYPE EKPO-NETWR.
DATA LV_CHAOCHUJE TYPE EKPO-NETWR.
DATA LV_SUM_ZAMOUNT2 TYPE EKPO-NETWR.
DATA LV_MSG TYPE CHAR100.
DATA LV_KNTTP TYPE EKPO-KNTTP.
DATA LV_ZHTH TYPE EKKO-ZHTH.
DATA LV_KNUMV TYPE EKKO-KNUMV.
DATA LV_KBETR TYPE PRCD_ELEMENTS-KWERT.
DATA LV_SUM_ZAMOUNT3 TYPE EKPO-NETWR.
DATA LV_FREIGHT TYPE LIKP-FREIGHT.
DATA LT_TDMX TYPE STANDARD TABLE OF TY_TDMX."add cjj 20190911
DATA: LV_CURRENCY LIKE TCURR-TCURR, "add cjj 20190813
LV_FACTOR TYPE ISOC_FACTOR. "add cjj 20190813
TYPES: BEGIN OF TY_EKPO,"add cjj 20191113 start
EBELP TYPE EKPO-EBELP,
UEBTO TYPE EKPO-UEBTO,
END OF TY_EKPO.
TYPES: BEGIN OF TY_KWERT,
KPOSN TYPE PRCD_ELEMENTS-KPOSN,
KWERT TYPE PRCD_ELEMENTS-KWERT,
END OF TY_KWERT.
DATA: LT_EKPO TYPE STANDARD TABLE OF TY_EKPO,
LS_EKPO TYPE TY_EKPO,
LT_KWERT TYPE STANDARD TABLE OF TY_KWERT,
LS_KWERT TYPE TY_KWERT,
LV_EBELP TYPE EKPO-EBELP. "add cjj 20191113 end
CALL METHOD GCL_ALV_GRID3->CHECK_CHANGED_DATA.
LV_SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE LV_SAVE_OK.
WHEN 'SELHT'.
CLEAR GWA_COND. "add cjj 20190604
IF GWA_JKTD-VBELN IS NOT INITIAL AND GV_NEW_CHG = 'N'.
MESSAGE '已生成内向交货单,不能删除' TYPE 'E'.
ENDIF.

CLEAR: GT_PO_HEAD,GT_PO_ITEM,GT_PO_ITEM_ALL.
GWA_COND-LIFNR = GWA_JKTD-LIFNR.
GWA_COND-NAME1 = GWA_JKTD-NAME1.
IF GWA_COND-LIFNR IS NOT INITIAL .

AUTHORITY-CHECK OBJECT 'M_BEST_EKG'
ID 'ACTVT' FIELD '01'
ID 'EKGRP' FIELD GWA_JKTD-EKGRP.
IF SY-SUBRC <> 0.
MESSAGE E000(ZMM001) WITH '没有采购组:' GWA_JKTD-EKGRP '的权限'.
ENDIF.
CLEAR GV_DLPS.
CALL SCREEN 9200 STARTING AT 1 1 ENDING AT 133 28.
ENDIF.
WHEN 'DELHT'.
CLEAR GT_TDMX_DEL.
PERFORM FRM_DEL_HETONG.
WHEN 'SAVE'.
CLEAR LWA_TDMX.
READ TABLE GT_TDMX INTO LWA_TDMX INDEX 1.
SELECT SINGLE KNTTP FROM EKPO INTO LV_KNTTP ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
WHERE EBELN = LWA_TDMX-EBELN AND EBELP = LWA_TDMX-EBELP.

IF GWA_JKTD-WERKS IS INITIAL AND LV_KNTTP <> 'P'.
SET CURSOR FIELD 'GWA_JKTD-WERKS'.
MESSAGE '入库基地必填' TYPE 'E'.
ENDIF.
IF GWA_JKTD-LGORT IS INITIAL AND LV_KNTTP <> 'P'.
SET CURSOR FIELD 'GWA_JKTD-LGORT'.
MESSAGE '入库仓库必填' TYPE 'E'.
ENDIF.
* IF GWA_JKTD-LFDAT IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-LFDAT'.
* MESSAGE '预计到货必填' TYPE 'E'.
* ENDIF.
IF GWA_JKTD-PACK_DATE IS INITIAL.
SET CURSOR FIELD 'GWA_JKTD-PACK_DATE'.
MESSAGE '提单日期必填' TYPE 'E'.
ENDIF.
IF GWA_JKTD-LDDAT IS INITIAL.
SET CURSOR FIELD 'GWA_JKTD-LDDAT'.
MESSAGE '装船日期必填' TYPE 'E'.
ENDIF.

* IF GWA_JKTD-BOLNR IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-BOLNR'.
* MESSAGE '提单号必填' TYPE 'E'.
* ENDIF.
IF GWA_JKTD-WERKS1 IS INITIAL.
SET CURSOR FIELD 'GWA_JKTD-WERKS1'.
MESSAGE '转运基地必填' TYPE 'E'.
ENDIF.
* IF GWA_JKTD-ITM_EXPVZ IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-ITM_EXPVZ'.
* MESSAGE '发运类型必填' TYPE 'E'.
* ENDIF.
* IF GWA_JKTD-TRADE_TYPE IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-TRADE_TYPE'.
* MESSAGE '贸易类型必填' TYPE 'E'.
* ENDIF.
* IF GWA_JKTD-INV_NO IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-INV_NO'.
* MESSAGE '发票号码必填' TYPE 'E'.
* ENDIF.
* IF GWA_JKTD-ITM_KZGBE IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-ITM_KZGBE'.
* MESSAGE '起运港必填' TYPE 'E'.
* ENDIF.
IF GWA_JKTD-DUE_ARRIVE_DATE IS INITIAL.
SET CURSOR FIELD 'GWA_JKTD-DUE_ARRIVE_DATE'.
MESSAGE '计划到港日期必填' TYPE 'E'.
ENDIF.
* IF GWA_JKTD-LFDAT IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-LFDAT'.
* MESSAGE '预计到货必填' TYPE 'E'.
* ENDIF.
* IF GWA_JKTD-ANZPK IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-ANZPK'.
* MESSAGE '件数必填' TYPE 'E'.
* ENDIF.
* IF GWA_JKTD-BTGEW IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-BTGEW'.
* MESSAGE '毛重必填' TYPE 'E'.
* ENDIF.
* IF GWA_JKTD-NTGEW IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-NTGEW'.
* MESSAGE '净重必填' TYPE 'E'.
* ENDIF.
* IF GWA_JKTD-GEWEI IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-GEWEI'.
* MESSAGE '重量单位必填' TYPE 'E'.
* ENDIF.
* IF GWA_JKTD-ZZFFS IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-ZZFFS'.
* MESSAGE '支付方式必填' TYPE 'E'.
* ENDIF.
* IF GWA_JKTD-ZHWMC IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-ZHWMC'.
* MESSAGE '货物名称必填' TYPE 'E'.
* ENDIF.
* IF GWA_JKTD-MEMO IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-MEMO'.
* MESSAGE '备注必填' TYPE 'E'.
* ENDIF.

IF ( GWA_JKTD-BTGEW IS NOT INITIAL OR GWA_JKTD-NTGEW IS NOT INITIAL )
AND GWA_JKTD-GEWEI IS INITIAL.
SET CURSOR FIELD 'GWA_JKTD-GEWEI'.
MESSAGE '毛重或净重输入的时候,重量单位需要输入' TYPE 'E'.
ENDIF.

IF GWA_JKTD-BTGEW < GWA_JKTD-NTGEW.
MESSAGE '净重不能大于毛重' TYPE 'E'.
ENDIF.

IF GWA_JKTD-GEWEI IS NOT INITIAL.
CALL FUNCTION 'DIMENSIONCHECK_MASS'
EXPORTING
GEWEI = GWA_JKTD-GEWEI
EXCEPTIONS
DIMENSION_NOT_MASS = 1
T006D_ENTRY_MISSING = 2
T006_ENTRY_MISSING = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
SET CURSOR FIELD 'GWA_JKTD-GEWEI'.
MESSAGE E077(VL) WITH GWA_JKTD-GEWEI.

ENDIF.
ENDIF.

SELECT COUNT(*) FROM ZMMT0124 WHERE WERKS = GWA_JKTD-WERKS
AND LGORT = GWA_JKTD-LGORT
AND ZFSLX = LWA_TDMX-ZTAXTYPE
AND ZZT = SPACE.
IF SY-SUBRC <> 0 AND LV_KNTTP <> 'P'.
SET CURSOR FIELD 'GWA_JKTD-WERKS'.
MESSAGE '输入的入库基地和入库仓库在对应表:ZMMT0124里不存在' TYPE 'E'.
ENDIF.

CALL METHOD GCL_ALV_GRID3->CHECK_CHANGED_DATA.

"Z1、Z2、Z4 :免税Z1可选,Z3、Z5:征税Z2可选
CLEAR LWA_TDMX.
READ TABLE GT_TDMX INTO LWA_TDMX INDEX 1.
IF SY-SUBRC = 0.
"LV_ZTAXTYPE:Z1免税,Z2征税
IF LWA_TDMX-ZTAXTYPE = 'Z1' AND ( GWA_JKTD-TRADE_TYPE = 'Z3' OR GWA_JKTD-TRADE_TYPE = 'Z5' ).
* MESSAGE '免税:贸易类型只能选Z1,Z2,Z4' TYPE 'E'. "del cjj 20190423
MESSAGE '免税:贸易类型只能选Z1,Z2,Z4' TYPE 'W'. "add cjj 20190423
ELSEIF LWA_TDMX-ZTAXTYPE = 'Z2' AND ( GWA_JKTD-TRADE_TYPE = 'Z1' OR GWA_JKTD-TRADE_TYPE = 'Z2'
OR GWA_JKTD-TRADE_TYPE = 'Z4' ).
MESSAGE '征税:贸易类型只能选Z3,Z5' TYPE 'E'.
ENDIF.
ENDIF.

"发运数量字段最小0.01
LOOP AT GT_TDMX INTO LWA_TDMX WHERE ZLFIMG < '0.01'.
ENDLOOP.
IF SY-SUBRC = 0.
MESSAGE '发运数量字段最小0.01' TYPE 'E'.
ENDIF.

"****************change start 20190405 ****************************************
* "检查金额是否采购订单行总金额
* LOOP AT GT_TDMX INTO LWA_TDMX.
* CLEAR:LV_SUM_ZAMOUNT, LV_NETWR,LT_ZAMOUNT.
* SELECT SINGLE NETWR INTO LV_NETWR FROM EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
* WHERE EBELN = LWA_TDMX-EBELN AND EBELP = LWA_TDMX-EBELP.
* IF GV_NEW_CHG = 'N'.
* SELECT ZAMOUNT INTO TABLE LT_ZAMOUNT FROM LIPS ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
* WHERE VGBEL = LWA_TDMX-EBELN AND VGPOS = LWA_TDMX-EBELP.
* ELSEIF GV_NEW_CHG = 'C'.
* SELECT ZAMOUNT INTO TABLE LT_ZAMOUNT FROM LIPS ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
* WHERE VGBEL = LWA_TDMX-EBELN AND VGPOS = LWA_TDMX-EBELP
** AND VBELN <> LWA_TDMX-VBELN AND POSNR <> LWA_TDMX-POSNR.
* AND NOT ( VBELN = LWA_TDMX-VBELN AND POSNR = LWA_TDMX-POSNR ).
* ENDIF.
*
* LOOP AT LT_ZAMOUNT INTO LWA_ZAMOUNT.
* LV_SUM_ZAMOUNT = LV_SUM_ZAMOUNT + LWA_ZAMOUNT-ZAMOUNT.
* ENDLOOP.
* CONDENSE LV_SUM_ZAMOUNT.
* LV_SUM_ZAMOUNT = LV_SUM_ZAMOUNT + LWA_TDMX-ZJE.
* IF LV_SUM_ZAMOUNT > LV_NETWR AND LV_NETWR <> 0.
* LV_MSG = LV_SUM_ZAMOUNT && '超出合同金额:' && LV_NETWR && '|'
* && '采购订单:' && LWA_TDMX-EBELN && '-' && LWA_TDMX-EBELP.
* MESSAGE LV_MSG TYPE 'E'.
* ENDIF.
* ENDLOOP.

"不按行项目检查,按采购订单整单金额做检查
CLEAR:LV_SUM_ZAMOUNT, LV_NETWR,LV_ZHTH,LV_KNUMV,LV_SUM_ZAMOUNT2,LV_SUM_ZAMOUNT_JE,LV_SUM_ZAMOUNT3.

"取采购订单抬头对应的合同号
READ TABLE GT_TDMX INTO LWA_TDMX INDEX 1.
* add cjj 20190911 start
LT_TDMX[] = GT_TDMX[].
SORT LT_TDMX BY EBELN.
DELETE ADJACENT DUPLICATES FROM LT_TDMX COMPARING EBELN.
CLEAR LV_SUM_ZAMOUNT2.
LOOP AT LT_TDMX INTO LWA_TDMX.
CLEAR :LV_KNUMV,LV_NETWR, LV_ZHTH.
* add cjj 20190911 end
SELECT SINGLE ZHTH KNUMV FROM EKKO INTO ( LV_ZHTH,LV_KNUMV ) WHERE EBELN = LWA_TDMX-EBELN.
"取采购订单运费
CLEAR LV_KBETR.

SELECT SUM( KWERT ) FROM PRCD_ELEMENTS INTO LV_KBETR
WHERE KNUMV = LV_KNUMV AND KPOSN <> 000000 AND KSCHL = 'FRB1'
AND KINAK <> 'W'. "Add cjj 20190919

** add cjj 20190813 start
SELECT SINGLE WAERK FROM PRCD_ELEMENTS INTO LV_CURRENCY
WHERE KNUMV = LV_KNUMV AND KPOSN <> 000000 AND KSCHL = 'FRB1'
AND KINAK <> 'W'. "Add cjj 20190919
CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
EXPORTING
CURRENCY = LV_CURRENCY
IMPORTING
FACTOR = LV_FACTOR
EXCEPTIONS
TOO_MANY_DECIMALS = 1
OTHERS = 2.
LV_KBETR = LV_KBETR * LV_FACTOR.
** add cjj 20190813 end
"取采购订单含税总金额
* rep by cjj 20191113 start
* SELECT SUM( KWERT ) FROM PRCD_ELEMENTS INTO LV_NETWR
* WHERE KNUMV = LV_KNUMV AND KPOSN <> 000000 AND ( KSCHL = 'PBXX' OR KSCHL = 'PB00' )
* and KINAK <> 'W'. "Add cjj 20190919

CLEAR: LT_EKPO,LT_KWERT.
SELECT EBELP UEBTO FROM EKPO INTO TABLE LT_EKPO WHERE EBELN = LWA_TDMX-EBELN.
SELECT KPOSN KWERT FROM PRCD_ELEMENTS INTO TABLE LT_KWERT
WHERE KNUMV = LV_KNUMV AND KPOSN <> 000000 AND ( KSCHL = 'PBXX' OR KSCHL = 'PB00' )
AND KINAK <> 'W'.
LOOP AT LT_KWERT INTO LS_KWERT.
LV_EBELP = LS_KWERT-KPOSN.
READ TABLE LT_EKPO INTO LS_EKPO WITH KEY EBELP = LV_EBELP.
IF SY-SUBRC = 0.
LV_NETWR = LV_NETWR + LS_KWERT-KWERT * ( 1 + LS_EKPO-UEBTO / 100 ).
ENDIF.
ENDLOOP.
* rep by cjj 20191113 end
* add cjj 20190813 start
SELECT SINGLE WAERK FROM PRCD_ELEMENTS INTO LV_CURRENCY
WHERE KNUMV = LV_KNUMV AND KPOSN <> 000000 AND ( KSCHL = 'PBXX' OR KSCHL = 'PB00' )
AND KINAK <> 'W'. "Add cjj 20190919
CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
EXPORTING
CURRENCY = LV_CURRENCY
IMPORTING
FACTOR = LV_FACTOR
EXCEPTIONS
TOO_MANY_DECIMALS = 1
OTHERS = 2.
LV_NETWR = LV_NETWR * LV_FACTOR.
* LV_KBETR = LV_KBETR * LV_FACTOR.
LV_SUM_ZAMOUNT2 = LV_SUM_ZAMOUNT2 + LV_NETWR + LV_KBETR. "含税金额 + 运费
* add cjj 20190813 end
ENDLOOP. "add cjj 20190911
* LV_SUM_ZAMOUNT2 = LV_NETWR + LV_KBETR. "含税金额 + 运费 del cjj 20190911

IF GWA_JKTD-ZKEGONG IS INITIAL. "客供提单金额仅用于报关,不算合同使用金额
LOOP AT GT_TDMX INTO LWA_TDMX.

* add cjj 20190813 start
LV_CURRENCY = LWA_TDMX-WAERS.
CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
EXPORTING
CURRENCY = LV_CURRENCY
IMPORTING
FACTOR = LV_FACTOR
EXCEPTIONS
TOO_MANY_DECIMALS = 1
OTHERS = 2.
* add cjj 20190813 end

LV_SUM_ZAMOUNT_JE = LV_SUM_ZAMOUNT_JE + LWA_TDMX-ZJE
* LV_FACTOR. "add cjj 20190813
ENDLOOP.

* add cjj 20190813 start
LV_CURRENCY = GWA_JKTD-WAERK.
CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
EXPORTING
CURRENCY = LV_CURRENCY
IMPORTING
FACTOR = LV_FACTOR
EXCEPTIONS
TOO_MANY_DECIMALS = 1
OTHERS = 2.
* add cjj 20190813 end
LV_SUM_ZAMOUNT_JE = LV_SUM_ZAMOUNT_JE + GWA_JKTD-FREIGHT "当前提单的金额
* LV_FACTOR. "add cjj 20190813
ENDIF.

"取已建过交货单的金额+运费:LV_SUM_ZAMOUNT3
CLEAR LT_ZAMOUNT.
SELECT LIPS~VBELN LIPS~ZAMOUNT
LIPS~ZCURRENCY"add cjj 20190813
INTO CORRESPONDING FIELDS OF TABLE LT_ZAMOUNT FROM LIPS ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
INNER JOIN LIKP ON LIPS~VBELN = LIKP~VBELN
WHERE VGBEL = LWA_TDMX-EBELN
AND LIKP~CLIENT_BUY = SPACE. "客供提单金额仅用于报关,不算合同使用金额
IF SY-SUBRC = 0.
"取行项目金额
LOOP AT LT_ZAMOUNT INTO LWA_ZAMOUNT.
READ TABLE GT_TDMX TRANSPORTING NO FIELDS WITH KEY VBELN = LWA_ZAMOUNT-VBELN.
IF SY-SUBRC <> 0.
** add cjj 20190813 start
* lv_currency = lwa_zamount-zcurrency.
* CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
* EXPORTING
* currency = lv_currency
* IMPORTING
* factor = lv_factor
* EXCEPTIONS
* too_many_decimals = 1
* OTHERS = 2.
*
** add cjj 20190813 end
LV_SUM_ZAMOUNT3 = LV_SUM_ZAMOUNT3 + LWA_ZAMOUNT-ZAMOUNT.
* * lv_factor. " add cjj 20190813
ENDIF.
ENDLOOP.
"取抬头运费
SORT LT_ZAMOUNT BY VBELN.
DELETE ADJACENT DUPLICATES FROM LT_ZAMOUNT COMPARING VBELN.
LOOP AT LT_ZAMOUNT INTO LWA_ZAMOUNT.
READ TABLE GT_TDMX TRANSPORTING NO FIELDS WITH KEY VBELN = LWA_ZAMOUNT-VBELN.
IF SY-SUBRC <> 0.
CLEAR LV_FREIGHT.
SELECT SINGLE FREIGHT ZCARGOVALUECURRENCY FROM LIKP INTO (LV_FREIGHT, LV_CURRENCY)
WHERE VBELN = LWA_ZAMOUNT-VBELN.
* add cjj 20190813 start
CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
EXPORTING
CURRENCY = LV_CURRENCY
IMPORTING
FACTOR = LV_FACTOR
EXCEPTIONS
TOO_MANY_DECIMALS = 1
OTHERS = 2.
* add cjj 20190813 end
LV_SUM_ZAMOUNT3 = LV_SUM_ZAMOUNT3 + LV_FREIGHT * LV_FACTOR.
ENDIF.
ENDLOOP.
ENDIF.
LV_SUM_ZAMOUNT2 = ABS( LV_SUM_ZAMOUNT2 ). "add cjj 20190604
* 退货不需要金额check 20190531
IF GWA_JKTD-VBELN(1) <> 'R'." add 20190531
LV_SUM_ZAMOUNT2 = LV_SUM_ZAMOUNT2 - LV_SUM_ZAMOUNT3. "含税金额 + 运费 - 已建过交货单的(金额+运费)

IF LV_SUM_ZAMOUNT_JE > LV_SUM_ZAMOUNT2 AND LV_NETWR <> 0 AND GWA_JKTD-ZKEGONG IS INITIAL. "客供提单金额仅用于报关,不算合同使用金额
CLEAR LV_CHAOCHUJE.
LV_CHAOCHUJE = LV_SUM_ZAMOUNT_JE - LV_SUM_ZAMOUNT2.
"如果ZMMT156表里合同+采购订单有维护,金额超出也允许保存
SELECT COUNT(*) FROM ZMMT156 WHERE ZHTH = LV_ZHTH AND EBELN = LWA_TDMX-EBELN.
IF SY-SUBRC <> 0.
* LV_MSG = LV_SUM_ZAMOUNT_JE && '超出合同金额(含运费):' && LV_CHAOCHUJE && '|' del cjj 20191113
LV_MSG = LV_SUM_ZAMOUNT_JE && '超出合同剩余含税金额容差上限(含运费):' && LV_CHAOCHUJE && '|' "add cjj 20191113
&& '采购订单:' && LWA_TDMX-EBELN.
MESSAGE LV_MSG TYPE 'E'.
ELSE.
* LV_MSG = LV_SUM_ZAMOUNT_JE && '超出合同金额(含运费):' && LV_CHAOCHUJE && '|' del cjj 20191113
LV_MSG = LV_SUM_ZAMOUNT_JE && '超出合同剩余含税金额容差上限(含运费):' && LV_CHAOCHUJE && '|' "add cjj 20191113
&& '采购订单:' && LWA_TDMX-EBELN.
MESSAGE LV_MSG TYPE 'W'.
ENDIF.
ENDIF.
ENDIF." add 20190531
"****************change end 20190405 ****************************************

IF GV_NEW_CHG = 'N'.
CLEAR GV_COUNT.
PERFORM FRM_CREATE_IBD.
ELSEIF GV_NEW_CHG = 'C'.
IF FLG_RETURN = SPACE.
PERFORM FRM_CHANGE_IBD.
ELSE.
PERFORM FRM_RETURN_CHG."add cjj 20190527
ENDIF.
ELSEIF GV_NEW_CHG = 'B'."add cjj 20190527
PERFORM FRM_RETURN_IBD."add cjj 20190527
ENDIF.
CLEAR GWA_COND. "add cjj 20190604
WHEN OTHERS.
ENDCASE.
"提交
CALL METHOD CL_GUI_CFW=>FLUSH.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9200 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9200 OUTPUT.
SET PF-STATUS 'STA_9200'.
SET TITLEBAR 'TIL_9200'.
PERFORM FRM_SHOW_PO_INFO.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_SHOW_PO_INFO
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SHOW_PO_INFO .
DATA LWA_LAYOUT TYPE LVC_S_LAYO.
DATA IS_VARIANT1 TYPE DISVARIANT.
DATA IS_VARIANT2 TYPE DISVARIANT.

"show head data
IF GCL_ALV_GRID4 IS INITIAL.
CREATE OBJECT GCL_CCONTAINER4
EXPORTING
CONTAINER_NAME = 'CON4'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CREATE OBJECT GCL_ALV_GRID4
EXPORTING
I_PARENT = GCL_CCONTAINER4.

PERFORM FRM_GET_FIELDCAT USING 'GT_PO_HEAD'.
PERFORM FRM_GET_EXCLUDE CHANGING GT_EXCLUDE.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
IS_VARIANT1-REPORT = SY-REPID && 'PO_HEAD'.

CALL METHOD GCL_ALV_GRID4->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LWA_LAYOUT
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_VARIANT = IS_VARIANT1
I_DEFAULT = 'X'
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT4
IT_OUTTAB = GT_PO_HEAD.

DATA EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->ON_HOTSPOT_CLICK_PO FOR GCL_ALV_GRID4.
SET HANDLER EVENT_RECEIVER->HANDLE_TOOLBAR FOR GCL_ALV_GRID4. "add cjj 20190910
SET HANDLER EVENT_RECEIVER->ON_USER_COMMAND FOR GCL_ALV_GRID4. "add cjj 20190910
ELSE.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
CALL METHOD GCL_ALV_GRID4->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = LWA_LAYOUT.
CALL METHOD GCL_ALV_GRID4->REFRESH_TABLE_DISPLAY.
ENDIF.

"show item data
IF GCL_ALV_GRID5 IS INITIAL.
CREATE OBJECT GCL_CCONTAINER5
EXPORTING
CONTAINER_NAME = 'CON5'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CREATE OBJECT GCL_ALV_GRID5
EXPORTING
I_PARENT = GCL_CCONTAINER5.

PERFORM FRM_GET_FIELDCAT USING 'GT_PO_ITEM'.
PERFORM FRM_GET_EXCLUDE CHANGING GT_EXCLUDE.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
IS_VARIANT2-REPORT = SY-REPID && 'PO_ITEM'.

CALL METHOD GCL_ALV_GRID5->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LWA_LAYOUT
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_VARIANT = IS_VARIANT2
I_DEFAULT = 'X'
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT5
IT_OUTTAB = GT_PO_ITEM.

ELSE.
CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
CALL METHOD GCL_ALV_GRID5->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = LWA_LAYOUT.
CALL METHOD GCL_ALV_GRID5->REFRESH_TABLE_DISPLAY.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_HANDLE_DOUBLE_CLICK
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> E_ROW
*& --> E_COLUMN
*& --> ES_ROW_NO
*&---------------------------------------------------------------------*
FORM FRM_HANDLE_DOUBLE_CLICK USING P_E_ROW ##NEEDED
P_E_COLUMN
P_ES_ROW_NO TYPE LVC_S_ROID.
DATA LWA_TDMX TYPE TY_TDMX.

READ TABLE GT_TDMX INTO LWA_TDMX INDEX P_ES_ROW_NO-ROW_ID.
CHECK SY-SUBRC = 0.
IF P_E_COLUMN = 'VBELN' AND LWA_TDMX-VBELN IS NOT INITIAL.
SET PARAMETER ID 'VLM' FIELD LWA_TDMX-VBELN.
CALL TRANSACTION 'VL33N' AND SKIP FIRST SCREEN.
ELSE.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_HANDLE_DOUBLE_CLICK2
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> E_ROW
*& --> E_COLUMN
*& --> ES_ROW_NO
*&---------------------------------------------------------------------*
FORM FRM_HANDLE_DOUBLE_CLICK2 USING P_E_ROW ##NEEDED
P_E_COLUMN
P_ES_ROW_NO TYPE LVC_S_ROID.
DATA LWA_ITEM TYPE TY_ITEM.
DATA LV_PSPID TYPE PROJ-PSPID.

READ TABLE GT_ITEM INTO LWA_ITEM INDEX P_ES_ROW_NO-ROW_ID.
CHECK SY-SUBRC = 0.
IF P_E_COLUMN = 'VBELN' AND LWA_ITEM-VBELN IS NOT INITIAL.
SET PARAMETER ID 'VLM' FIELD LWA_ITEM-VBELN.
CALL TRANSACTION 'VL33N' AND SKIP FIRST SCREEN .

ELSEIF P_E_COLUMN = 'PSPHI' AND LWA_ITEM-PSPHI IS NOT INITIAL.
SELECT SINGLE PSPID FROM PROJ
INTO LV_PSPID
WHERE PSPNR = LWA_ITEM-PSPHI.
SET PARAMETER ID 'PSP' FIELD LV_PSPID.
CALL TRANSACTION 'CJ03' AND SKIP FIRST SCREEN.
ELSEIF P_E_COLUMN = 'MATNR' AND LWA_ITEM-MATNR IS NOT INITIAL.
SET PARAMETER ID: 'MAT' FIELD LWA_ITEM-MATNR,
'MXX' FIELD 'K'.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ELSEIF P_E_COLUMN = 'VGBEL' AND LWA_ITEM-VGBEL IS NOT INITIAL.
SET PARAMETER ID 'BES' FIELD LWA_ITEM-VGBEL.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ELSEIF P_E_COLUMN = 'BANFN' AND LWA_ITEM-BANFN IS NOT INITIAL.
SET PARAMETER ID 'BAN' FIELD LWA_ITEM-BANFN.
CALL TRANSACTION 'ME53N' AND SKIP FIRST SCREEN.

ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_HANDLE_DOUBLE_CLICK3
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> E_ROW
*& --> E_COLUMN
*& --> ES_ROW_NO
*&---------------------------------------------------------------------*
FORM FRM_HANDLE_DOUBLE_CLICK3 USING P_E_ROW ##NEEDED
P_E_COLUMN
P_ES_ROW_NO TYPE LVC_S_ROID.
DATA LWA_HEAD TYPE TY_HEAD.

READ TABLE GT_HEAD INTO LWA_HEAD INDEX P_ES_ROW_NO-ROW_ID.
CHECK SY-SUBRC = 0.
IF P_E_COLUMN = 'LIFNR' AND LWA_HEAD-LIFNR IS NOT INITIAL.
SET PARAMETER ID 'BPA' FIELD LWA_HEAD-LIFNR.
CALL TRANSACTION 'BP' AND SKIP FIRST SCREEN.
ELSEIF P_E_COLUMN = 'VBELN' AND LWA_HEAD-VBELN IS NOT INITIAL.
SET PARAMETER ID 'VLM' FIELD LWA_HEAD-VBELN.
CALL TRANSACTION 'VL33N' AND SKIP FIRST SCREEN.
ELSEIF P_E_COLUMN = 'BELNR' AND LWA_HEAD-BELNR IS NOT INITIAL.
SET PARAMETER ID 'RBN' FIELD LWA_HEAD-BELNR.
* SET PARAMETER ID 'GJR' FIELD '2019'.
CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_HANDLE_DOUBLE_CLICK4
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> E_ROW
*& --> E_COLUMN
*& --> ES_ROW_NO
*&---------------------------------------------------------------------*
FORM FRM_HANDLE_DOUBLE_CLICK4 USING P_E_ROW
P_E_COLUMN
P_ES_ROW_NO TYPE LVC_S_ROID.
CLEAR GT_SEAR_MATNR.
CLEAR GWA_WL_COND.
GV_ROW = P_E_ROW.
CHECK P_E_COLUMN = 'MATNR_CF' AND GWA_TDMX_FJ-ZLJBG IS NOT INITIAL.
CALL SCREEN 9500 STARTING AT 1 1 ENDING AT 100 25.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISP_ITEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW_ID text
* -->P_E_COLUMN_ID text
*----------------------------------------------------------------------*
FORM FRM_DISP_ITEM USING ROW
COLUMN.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LT_ITEM_TMP TYPE STANDARD TABLE OF TY_ITEM.
DATA LWA_LAYOUT TYPE LVC_S_LAYO.

READ TABLE GT_HEAD INTO LWA_HEAD INDEX ROW.
CHECK SY-SUBRC = 0.
GV_ROW_HEAD = ROW.
GV_COLUM_HEAD = COLUMN.
CLEAR GT_ITEM.
LT_ITEM_TMP = GT_ITEM_ALL.
DELETE LT_ITEM_TMP WHERE VBELN <> LWA_HEAD-VBELN.
GT_ITEM = LT_ITEM_TMP.
SORT GT_ITEM BY POSNR.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
LWA_LAYOUT-INFO_FNAME = 'ROWCOLOR'.
LWA_LAYOUT-CTAB_FNAME = 'CELL_COLOR'. "acc cjj 20190529
CALL METHOD GCL_ALV_GRID2->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = LWA_LAYOUT.

* SORT gt_item BY zaccount_book_nr posnr. " 通过TR - S4DK906152 添加 20190614

* CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
CALL METHOD GCL_ALV_GRID2->REFRESH_TABLE_DISPLAY.
* BREAK ibm-gk.
* PERFORM FRM_SET_CURSOR.

ENDFORM. " FRM_DISP_ITEM
*&---------------------------------------------------------------------*
*& Form FRM_DISP_ITEM_PO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW_ID text
* -->P_E_COLUMN_ID text
*----------------------------------------------------------------------*
FORM FRM_DISP_ITEM_PO USING ROW
COLUMN.
DATA LWA_PO_HEAD TYPE TY_PO_HEAD.
DATA LT_ITEM_TMP TYPE STANDARD TABLE OF TY_PO_ITEM.
DATA LWA_LAYOUT TYPE LVC_S_LAYO.

READ TABLE GT_PO_HEAD INTO LWA_PO_HEAD INDEX ROW.
CHECK SY-SUBRC = 0.
CLEAR GV_ROW4.
GV_ROW4 = ROW.
CLEAR GT_PO_ITEM.
LT_ITEM_TMP = GT_PO_ITEM_ALL.
DELETE LT_ITEM_TMP WHERE EBELN <> LWA_PO_HEAD-EBELN.
GT_PO_ITEM = LT_ITEM_TMP.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
CALL METHOD GCL_ALV_GRID5->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = LWA_LAYOUT.

CALL METHOD GCL_ALV_GRID4->REFRESH_TABLE_DISPLAY.
CALL METHOD GCL_ALV_GRID5->REFRESH_TABLE_DISPLAY.
PERFORM FRM_SET_CURSOR4.

ENDFORM. " FRM_DISP_ITEM_PO
*&---------------------------------------------------------------------*
*& Form FRM_DISP_ITEM_LIPS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW_ID text
* -->P_E_COLUMN_ID text
*----------------------------------------------------------------------*
FORM FRM_DISP_ITEM_LIPS USING ROW COLUMN.
DATA LWA_ITEM TYPE TY_ITEM.

CLEAR GT_FJXS.
CLEAR GV_ACCOUNT_NR.
READ TABLE GT_ITEM INTO LWA_ITEM INDEX ROW.
GT_FJXS = GT_FJXS_ALL.

" 开始-通过TR - S4DK906152 添加 20190614
IF SY-SUBRC = 0.
* gv_account_nr = lwa_item-zaccount_book_nr.
ENDIF.

* IF lwa_item-zaccount_book_nr IS NOT INITIAL.
" 结束-通过TR - S4DK906152 添加 20190614
DELETE GT_FJXS WHERE NOT ( VBELN = LWA_ITEM-VBELN AND POSNR = LWA_ITEM-POSNR ).
" 开始-通过TR - S4DK906152 添加 20190614
* AND zaccount_book_nr = gv_account_nr ).
* ELSE.
* SORT gt_fjxs BY vbeln posnr sort_order pack_bill item_id.
* DELETE ADJACENT DUPLICATES FROM gt_fjxs COMPARING vbeln posnr sort_order pack_bill item_id.
* DELETE gt_fjxs WHERE NOT ( vbeln = lwa_item-vbeln AND posnr = lwa_item-posnr ).
* ENDIF.
" 结束-通过TR - S4DK906152 添加 20190614
SORT GT_FJXS BY SORT_ORDER.
CALL SCREEN 9700 STARTING AT 1 1 ENDING AT 140 20.

ENDFORM. " FRM_DISP_ITEM_PO
*&---------------------------------------------------------------------*
*& Form FRM_SET_CURSOR
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SET_CURSOR .
DATA: LT_FRM_POS_ROW TYPE LVC_T_ROID,
LWA_FRM_WA_POS_ROW LIKE LINE OF LT_FRM_POS_ROW.

* IF GV_ROW IS INITIAL.
* GV_ROW = 1.
* ENDIF.

LWA_FRM_WA_POS_ROW-ROW_ID = GV_ROW_HEAD.
APPEND LWA_FRM_WA_POS_ROW TO LT_FRM_POS_ROW.

CALL METHOD GCL_ALV_GRID1->SET_SELECTED_ROWS
EXPORTING
IT_ROW_NO = LT_FRM_POS_ROW.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_CURSOR4
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SET_CURSOR4.
DATA: LT_FRM_POS_ROW TYPE LVC_T_ROID,
LWA_FRM_WA_POS_ROW LIKE LINE OF LT_FRM_POS_ROW.

IF GV_ROW4 IS INITIAL.
GV_ROW4 = 1.
ENDIF.

LWA_FRM_WA_POS_ROW-ROW_ID = GV_ROW4.
APPEND LWA_FRM_WA_POS_ROW TO LT_FRM_POS_ROW.

CALL METHOD GCL_ALV_GRID4->SET_SELECTED_ROWS
EXPORTING
IT_ROW_NO = LT_FRM_POS_ROW.

ENDFORM.
*&---------------------------------------------------------------------*
*& Module MDU_SET_VALUE INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MDU_SET_VALUE INPUT.

PERFORM FRM_VAUE_LIST USING 'ZD_WERKS1' 'GWA_JKTD-WERKS1'.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_VAUE_LIST
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_
*& --> P_
*&---------------------------------------------------------------------*
FORM FRM_VAUE_LIST USING LV_DDOBJNAME TYPE DDOBJNAME
LV_ID TYPE VRM_ID.
DATA LT_VALUE TYPE VRM_VALUES WITH HEADER LINE.
DATA LT_DOMTAB_T TYPE DOMTAB_T WITH HEADER LINE.
DATA LT_TVTRT TYPE STANDARD TABLE OF TVTRT WITH HEADER LINE.

REFRESH: LT_DOMTAB_T[],LT_VALUE[].

IF LV_DDOBJNAME = 'TVTR'.
SELECT VKTRA BEZEI
FROM TVTRT
INTO CORRESPONDING FIELDS OF TABLE LT_TVTRT
WHERE SPRAS = SY-LANGU.
LOOP AT LT_TVTRT.
LT_VALUE-KEY = LT_TVTRT-VKTRA.
LT_VALUE-TEXT = LT_TVTRT-BEZEI.
APPEND LT_VALUE.
ENDLOOP.
ELSE.
CALL FUNCTION 'FKK_DOMAINVALUE_GET'
EXPORTING
I_DOMNAME = LV_DDOBJNAME
CHANGING
C_DOMTABLE = LT_DOMTAB_T[].

LOOP AT LT_DOMTAB_T.
LT_VALUE-KEY = LT_DOMTAB_T-DOMVALUE_L.
LT_VALUE-TEXT = LT_DOMTAB_T-DDTEXT.
APPEND LT_VALUE.
ENDLOOP.
ENDIF.

CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = LV_ID
VALUES = LT_VALUE[]
EXCEPTIONS
ID_ILLEGAL_NAME = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module MDU_SET_VALUE1 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MDU_SET_VALUE1 INPUT.
PERFORM FRM_VAUE_LIST USING 'ZD_TRADE_TYPE' 'GWA_JKTD-TRADE_TYPE'.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Module MDU_SET_WERKS INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MDU_SET_WERKS INPUT.
TYPES: BEGIN OF TY_T001W,
WERKS TYPE T001W-WERKS,
NAME2 TYPE T001W-NAME2,
END OF TY_T001W.
DATA LT_T001W TYPE TABLE OF TY_T001W.
DATA LWA_T001W TYPE TY_T001W.

SELECT WERKS
NAME1 AS NAME2
INTO CORRESPONDING FIELDS OF TABLE LT_T001W
FROM ZMMT0124.
* LOOP AT LT_T001W INTO LWA_T001W.
* IF LWA_T001W-WERKS+3(1) = '9' OR LWA_T001W-WERKS = '0001' OR LWA_T001W-WERKS = '0003'.
* DELETE LT_T001W INDEX SY-TABIX.
* ENDIF.
* ENDLOOP.
IF LT_T001W IS NOT INITIAL.
DELETE ADJACENT DUPLICATES FROM LT_T001W COMPARING ALL FIELDS.
* F4搜索帮助
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'WERKS'
VALUE_ORG = 'S'
DYNPROFIELD = 'GWA_JKTD-WERKS'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
TABLES
VALUE_TAB = LT_T001W
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Module MDU_SET_VALUE2 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE MDU_SET_VALUE2 OUTPUT.
PERFORM FRM_VAUE_LIST USING 'TVTR' 'GWA_JKTD-ITM_EXPVZ'.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Module MDU_CHECK_VALUE INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MDU_CHECK_VALUE INPUT.

IF GWA_JKTD-LIFNR IS NOT INITIAL.
SELECT SINGLE NAME1 FROM LFA1
INTO GWA_JKTD-NAME1
WHERE LIFNR = GWA_JKTD-LIFNR.
IF SY-SUBRC <> 0.
MESSAGE '输入的供应商不存在' TYPE 'E'.
ENDIF.
ENDIF.

IF GWA_JKTD-WERKS IS NOT INITIAL.
SELECT SINGLE NAME1 FROM ZMMT0124
INTO GWA_JKTD-WERKS_TXT
WHERE WERKS = GWA_JKTD-WERKS.
IF SY-SUBRC <> 0.
MESSAGE '输入的入库基地不存在' TYPE 'E'.
ENDIF.
ELSE.
CLEAR GWA_JKTD-WERKS_TXT.
ENDIF.

IF GWA_JKTD-LGORT IS NOT INITIAL.
SELECT SINGLE LGOBE FROM T001L
INTO GWA_JKTD-LGORT_TXT
WHERE WERKS = '1000' AND LGORT = GWA_JKTD-LGORT.
IF SY-SUBRC <> 0.
MESSAGE '输入的入库仓库不存在' TYPE 'E'.
ENDIF.
ELSE.
CLEAR GWA_JKTD-LGORT_TXT.
ENDIF.

IF GWA_JKTD-EKGRP IS NOT INITIAL.
SELECT SINGLE EKNAM
FROM T024 INTO GWA_JKTD-EKGRP_TXT
WHERE EKGRP = GWA_JKTD-EKGRP.
IF SY-SUBRC <> 0.
MESSAGE '输入的采购员不存在' TYPE 'E'.
ENDIF.
ELSE.
CLEAR GWA_JKTD-EKGRP_TXT.
ENDIF.

IF GWA_JKTD-GEWEI IS NOT INITIAL.
SELECT SINGLE MSEHL FROM T006A
INTO GWA_JKTD-GEWEI_TXT
WHERE SPRAS = SY-LANGU
AND MSEHI = GWA_JKTD-GEWEI.
IF SY-SUBRC <> 0.
MESSAGE '输入的重量单位不存在' TYPE 'E'.
ENDIF.
ELSE.
CLEAR GWA_JKTD-GEWEI_TXT.
ENDIF.

* IF GWA_JKTD-WAERK IS NOT INITIAL.
* SELECT SINGLE KTEXT FROM TCURT
* INTO GWA_JKTD-WAERK_TXT
* WHERE SPRAS = SY-LANGU
* AND WAERS = GWA_JKTD-WAERK.
* IF SY-SUBRC <> 0.
* MESSAGE '输入的货币不存在' TYPE 'E'.
* ENDIF.
* ELSE.
* CLEAR GWA_JKTD-WAERK_TXT.
* ENDIF.

IF GWA_COND-WERKS IS NOT INITIAL.
SELECT SINGLE NAME2 FROM T001W
INTO GWA_COND-WERKS_TXT
WHERE WERKS = GWA_COND-WERKS.
IF SY-SUBRC <> 0.
MESSAGE '输入的工厂不存在' TYPE 'E'.
ENDIF.
ELSE.
CLEAR GWA_COND-WERKS_TXT.
ENDIF.

IF GWA_COND-LGORT IS NOT INITIAL AND GWA_COND-WERKS IS NOT INITIAL.
SELECT SINGLE LGOBE FROM T001L
INTO GWA_COND-LGORT_TXT
WHERE WERKS = GWA_COND-WERKS AND LGORT = GWA_COND-LGORT.
IF SY-SUBRC <> 0.
MESSAGE '输入的仓库不存在' TYPE 'E'.
ENDIF.
ELSE.
CLEAR GWA_COND-LGORT_TXT.
ENDIF.

IF GWA_COND-PSPHI IS NOT INITIAL.
SELECT SINGLE POST1 INTO GWA_COND-POST1
FROM PROJ
WHERE PSPID = GWA_COND-PSPHI.
ELSE.
CLEAR GWA_COND-POST1.
ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Module MDU_SET_LGORT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MDU_SET_LGORT INPUT.
TYPES: BEGIN OF TY_T001L,
WERKS TYPE T001L-WERKS,
LGORT TYPE T001L-LGORT,
LGOBE TYPE T001L-LGOBE,
END OF TY_T001L.
DATA LT_T001L TYPE TABLE OF TY_T001L.
DATA LT_ZMMT0124 TYPE STANDARD TABLE OF ZMMT0124.
DATA LWA_ZMMT0124 TYPE ZMMT0124.

* IF GV_NEW_CHG IS INITIAL.
* SELECT WERKS
* LGORT
* LGOBE
* INTO CORRESPONDING FIELDS OF TABLE LT_T001L
* FROM T001L
* WHERE LGORT LIKE '8%'.
* ELSE.
* SELECT WERKS
* LGORT
* LGOBE
* INTO CORRESPONDING FIELDS OF TABLE LT_T001L
* FROM T001L
* WHERE WERKS = GWA_JKTD-WERKS_EKPO
* AND LGORT LIKE '8%'.
* ENDIF.
CLEAR LWA_TDMX.
READ TABLE GT_TDMX INTO LWA_TDMX INDEX 1.
SELECT * FROM ZMMT0124 INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0124
WHERE WERKS = GWA_JKTD-WERKS AND ZFSLX = LWA_TDMX-ZTAXTYPE
AND ZZT = SPACE.
IF LT_ZMMT0124 IS NOT INITIAL.
SELECT WERKS
LGORT
LGOBE
INTO CORRESPONDING FIELDS OF TABLE LT_T001L
FROM T001L
FOR ALL ENTRIES IN LT_ZMMT0124
WHERE WERKS = '1000'
AND LGORT = LT_ZMMT0124-LGORT.
ENDIF.

* IF GWA_JKTD-WERKS = '1000'.
* SELECT WERKS
* LGORT
* LGOBE
* INTO CORRESPONDING FIELDS OF TABLE LT_T001L
* FROM T001L
* WHERE WERKS = '1000'
* AND LGORT IN ('8111','8113').
* ELSEIF GWA_JKTD-WERKS = '3010'.
* SELECT WERKS
* LGORT
* LGOBE
* INTO CORRESPONDING FIELDS OF TABLE LT_T001L
* FROM T001L
* WHERE WERKS = '1000'
* AND LGORT IN ('8012','8015').
* ELSEIF GWA_JKTD-WERKS = '3020'.
* SELECT WERKS
* LGORT
* LGOBE
* INTO CORRESPONDING FIELDS OF TABLE LT_T001L
* FROM T001L
* WHERE WERKS = '1000'
* AND LGORT IN ('8011','8014').
* ELSEIF GWA_JKTD-WERKS = '3030'.
* SELECT WERKS
* LGORT
* LGOBE
* INTO CORRESPONDING FIELDS OF TABLE LT_T001L
* FROM T001L
* WHERE WERKS = '1000'
* AND LGORT IN ('8013','8016').
* ENDIF.

IF LT_T001L IS NOT INITIAL.
* F4搜索帮助
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'LGORT'
VALUE_ORG = 'S'
DYNPROFIELD = 'GWA_JKTD-LGORT'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
TABLES
VALUE_TAB = LT_T001L
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9200 INPUT.
LV_SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE LV_SAVE_OK.
WHEN 'SEARCH'.
CLEAR:GT_PO_HEAD,GT_PO_ITEM_ALL,GT_PO_ITEM.
PERFORM FRM_PROCESS_SEARCH.
WHEN 'ADD'.
* CLEAR GT_TDMX. "del 20190419 新建的时候可以重新选择合同增加行项目
PERFORM FRM_PROCESS_ADD.
* WHEN 'CP'. "电缆拆盘 "del 20190425 之前要在提单做电缆拆盘,报关那边不同意在提单拆,就注掉
* PERFORM FRM_DL_CP. "del 20190425 之前要在提单做电缆拆盘,报关那边不同意在提单拆,就注掉
WHEN 'CLOSE'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_SEARCH
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_SEARCH .
DATA LV_COND TYPE CHAR300.
DATA LV_STR TYPE CHAR100.
DATA LT_EKKO TYPE STANDARD TABLE OF EKKO.
DATA LT_EKPO TYPE STANDARD TABLE OF EKPO.
DATA LT_EKPO_TMP TYPE STANDARD TABLE OF EKPO.
DATA LT_ZMMT0005 TYPE STANDARD TABLE OF ZMMT0005.
DATA LT_MARA TYPE STANDARD TABLE OF MARA.
DATA LWA_PO_HEAD TYPE TY_PO_HEAD.
DATA LWA_PO_ITEM TYPE TY_PO_ITEM.
DATA LWA_EKKO TYPE EKKO.
DATA LWA_EKPO TYPE EKPO.
DATA LWA_MARA TYPE MARA.
DATA LWA_ZMMT0005 TYPE ZMMT0005.
DATA LV_KBETR TYPE T007V-KBETR.
DATA LV_LFIMG_SUM TYPE LIPS-LFIMG.
DATA LV_PSPHI TYPE PROJ-PSPNR.
DATA LV_DDTEXT TYPE DD07V-DDTEXT.
DATA LV_DOMVALUE TYPE DD07V-DOMVALUE_L.
DATA LV_WBS TYPE EKKN-PS_PSP_PNR.
DATA LWA_TDMX TYPE TY_TDMX.
DATA LV_BAPICURR TYPE BAPICURR-BAPICURR.
DATA: LV_SLWID TYPE PRPS-SLWID. "Add cjj 20191028
" 开始-通过TR - S4DK906152 添加 20190614
DATA: LV_NEW_ACCOUNT_NR TYPE ZE_ACT_BOOK_NR.
DATA: LV_OLD_ACCOUNT_NR TYPE ZE_ACT_BOOK_NR.

IF GV_ACBK_USE = ABAP_TRUE.
LV_NEW_ACCOUNT_NR = GV_NEW_ACCOUNT_NR.
LV_OLD_ACCOUNT_NR = GV_NEW_ACCOUNT_NR.
ELSE.
LV_NEW_ACCOUNT_NR = GV_NEW_ACCOUNT_NR.
LV_OLD_ACCOUNT_NR = GV_OLD_ACCOUNT_NR.
ENDIF.

" 结束-通过TR - S4DK906152 添加 20190614

LV_STR = '''' && GWA_COND-LIFNR && ''''.
CONCATENATE 'LIFNR' '=' LV_STR INTO LV_COND SEPARATED BY SPACE.
IF GWA_COND-EBELN IS NOT INITIAL.
LV_STR = '''%' && GWA_COND-EBELN && '%'''.
CONCATENATE LV_COND 'AND EBELN LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
IF GWA_COND-ZHTH IS NOT INITIAL.
LV_STR = '''%' && GWA_COND-ZHTH && '%'''.
CONCATENATE LV_COND 'AND ZHTH LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
IF GWA_JKTD-EKGRP IS NOT INITIAL.
LV_STR = '''' && GWA_JKTD-EKGRP && ''''.
CONCATENATE LV_COND 'AND EKGRP =' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
SELECT EBELN
ZHTH
EKGRP
ZLSCH
WAERS
AEDAT
INCO1
ZSFKG
FROM EKKO
INTO CORRESPONDING FIELDS OF TABLE LT_EKKO
WHERE EKORG = '1010' AND FRGKE = 'R' AND LOEKZ = SPACE AND (LV_COND).
IF SY-SUBRC = 0.
CLEAR: LV_COND,LV_STR.
IF GWA_COND-MATNR IS NOT INITIAL.
LV_STR = '''%' && GWA_COND-MATNR && '%'''.
CONCATENATE 'MATNR LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.

IF GWA_COND-WERKS IS NOT INITIAL.
LV_STR = '''' && GWA_COND-WERKS && ''''.
IF LV_COND IS INITIAL.
CONCATENATE 'WERKS =' LV_STR INTO LV_COND SEPARATED BY SPACE.
ELSE.
CONCATENATE LV_COND 'AND WERKS =' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
ENDIF.

IF GWA_COND-LGORT IS NOT INITIAL.
LV_STR = '''' && GWA_COND-LGORT && ''''.
IF LV_COND IS INITIAL.
CONCATENATE 'LGORT =' LV_STR INTO LV_COND SEPARATED BY SPACE.
ELSE.
CONCATENATE LV_COND 'AND LGORT =' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
ENDIF.
* add cjj 20190604 start
IF GWA_COND-ZTHSEL IS INITIAL.
IF LV_COND IS INITIAL.
CONCATENATE 'RETPO <> ''X'' ' LV_STR INTO LV_COND SEPARATED BY SPACE.
ELSE.
CONCATENATE LV_COND 'AND RETPO <> ''X'' ' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
ELSE.
IF LV_COND IS INITIAL.
CONCATENATE 'RETPO = ''X'' ' LV_STR INTO LV_COND SEPARATED BY SPACE.
ELSE.
CONCATENATE LV_COND 'AND RETPO = ''X'' ' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
ENDIF.
* add cjj 20190604 end
SELECT EBELN
EBELP
MATNR
MENGE
MEINS
LGORT
BANFN
BNFPO
NETWR
MWSKZ
ELIKZ
ZZGBCD "“长 ” add 20190705
ZZGBKD "“宽” add 20190705
ZZGBFYKS "“块数” add 20190705
ZSGXH "add cjj 20191205
FROM EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
INTO CORRESPONDING FIELDS OF TABLE LT_EKPO
FOR ALL ENTRIES IN LT_EKKO
WHERE EBELN = LT_EKKO-EBELN
AND LOEKZ = SPACE
AND (LV_COND).

LT_EKPO_TMP = LT_EKPO.
SORT LT_EKPO_TMP BY MATNR.
DELETE ADJACENT DUPLICATES FROM LT_EKPO_TMP COMPARING MATNR.
IF LT_EKPO_TMP IS NOT INITIAL.
CLEAR:LV_COND,LV_STR.
IF GWA_COND-ZZNAME1 IS NOT INITIAL.
LV_STR = '''%' && GWA_COND-ZZNAME1 && '%'''.
CONCATENATE 'AND ZZNAME1 LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
IF GWA_COND-ZZCODE IS NOT INITIAL.
LV_STR = '''%' && GWA_COND-ZZCODE && '%'''.
CONCATENATE LV_COND 'AND ZZCODE LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
IF GWA_COND-ZZBASM IS NOT INITIAL.
LV_STR = '''%' && GWA_COND-ZZBASM && '%'''.
CONCATENATE LV_COND 'AND ZZBASM LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
IF GWA_COND-ZZSPEC IS NOT INITIAL.
LV_STR = '''%' && GWA_COND-ZZSPEC && '%'''.
CONCATENATE LV_COND 'AND ZZSPEC LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.

SELECT MATNR
ZZNAME1 "品名
ZZCODE "标准
ZZBASM "材质
ZZSPEC "规格
FROM MARA
INTO CORRESPONDING FIELDS OF TABLE LT_MARA
FOR ALL ENTRIES IN LT_EKPO_TMP
WHERE MATNR = LT_EKPO_TMP-MATNR
AND (LV_COND).
SORT LT_MARA BY MATNR.

SELECT IL_ITEM_ID
IL_STATUS
IL_HS_CODE
IL_HS_ATTACH
IL_EMS_NO
" 开始-通过TR - S4DK906152 添加 20190614
ZACCOUNT_BOOK_NR
IL_HS_NR
IL_EMS_NO_1
" 结束-通过TR - S4DK906152 添加 20190614
FROM ZMMT0005
INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0005
FOR ALL ENTRIES IN LT_EKPO_TMP
WHERE IL_ITEM_ID = LT_EKPO_TMP-MATNR
" 开始-通过TR - S4DK906152 添加 20190614
AND ( ZACCOUNT_BOOK_NR = LV_NEW_ACCOUNT_NR
OR ZACCOUNT_BOOK_NR = LV_OLD_ACCOUNT_NR ).
" 结束-通过TR - S4DK906152 添加 20190614
SORT LT_ZMMT0005 BY IL_ITEM_ID.
ENDIF.

ENDIF.

LOOP AT LT_EKPO INTO LWA_EKPO.
CLEAR LWA_PO_ITEM.
CLEAR LWA_MARA.
READ TABLE LT_MARA INTO LWA_MARA WITH KEY MATNR = LWA_EKPO-MATNR BINARY SEARCH.
IF SY-SUBRC <> 0.
* CONTINUE. "change 20190304 需要取出无物料采购订单
ENDIF.

IF GV_ACBK_USE NE ABAP_TRUE. " 通过TR - S4DK906152 添加 20190614
CLEAR LWA_ZMMT0005.
READ TABLE LT_ZMMT0005 INTO LWA_ZMMT0005 WITH KEY IL_ITEM_ID = LWA_EKPO-MATNR
ZACCOUNT_BOOK_NR = GV_OLD_ACCOUNT_NR. " 通过TR - S4DK906152 添加 20190614
IF SY-SUBRC <> 0.
* CONTINUE.
ENDIF.

CLEAR LV_DOMVALUE.
LV_DOMVALUE = LWA_ZMMT0005-IL_STATUS.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_ZT'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_PO_ITEM-IL_STATUS_TXT = LV_DDTEXT.
ENDIF.
ENDIF.
IF GV_OLD_ACCOUNT_NR = 'E22105000006'. " 通过TR - S4DK906152 添加 2019061
LWA_PO_ITEM-IL_HS_CODE = LWA_ZMMT0005-IL_HS_CODE.
LWA_PO_ITEM-IL_HS_ATTACH = LWA_ZMMT0005-IL_HS_ATTACH.
LWA_PO_ITEM-IL_EMS_NO = LWA_ZMMT0005-IL_EMS_NO.
ENDIF. " 通过tr - s4dk906152 添加 20190614


" 开始-通过TR - S4DK906152 添加 20190614
ENDIF.
CLEAR LWA_ZMMT0005.
READ TABLE LT_ZMMT0005 INTO LWA_ZMMT0005
WITH KEY IL_ITEM_ID = LWA_EKPO-MATNR
ZACCOUNT_BOOK_NR = GV_NEW_ACCOUNT_NR.
IF SY-SUBRC = 0.

CLEAR LV_DOMVALUE.
LV_DOMVALUE = LWA_ZMMT0005-IL_STATUS.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_ZT'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_PO_ITEM-IL_STATUS_TXT_N = LV_DDTEXT.
ENDIF.
ENDIF.
LWA_PO_ITEM-IL_HS_NR = LWA_ZMMT0005-IL_HS_NR.
LWA_PO_ITEM-IL_EMS_NO_1 = LWA_ZMMT0005-IL_EMS_NO_1.
ENDIF.

" 结束-通过TR - S4DK906152 添加 20190614


LWA_PO_ITEM-EBELN = LWA_EKPO-EBELN.
LWA_PO_ITEM-EBELP = LWA_EKPO-EBELP.
LWA_PO_ITEM-MATNR = LWA_EKPO-MATNR.
LWA_PO_ITEM-MEINS = LWA_EKPO-MEINS.
LWA_PO_ITEM-MENGE = LWA_EKPO-MENGE.
LWA_PO_ITEM-BANFN = LWA_EKPO-BANFN.
LWA_PO_ITEM-BNFPO = LWA_EKPO-BNFPO.
LWA_PO_ITEM-LGORT = LWA_EKPO-LGORT.
LWA_PO_ITEM-ELIKZ = LWA_EKPO-ELIKZ.
LWA_PO_ITEM-ZZGBCD = LWA_EKPO-ZZGBCD ."“长 ” add 20190705
LWA_PO_ITEM-ZZGBKD = LWA_EKPO-ZZGBKD."“宽” add 20190705
LWA_PO_ITEM-ZZGBFYKS = LWA_EKPO-ZZGBFYKS."“块数” add 20190705
LWA_PO_ITEM-ZSGXH = LWA_EKPO-ZSGXH. "Add cjj 20191205
LWA_PO_ITEM-ZZNAME1 = LWA_MARA-ZZNAME1.
LWA_PO_ITEM-ZZCODE = LWA_MARA-ZZCODE.
LWA_PO_ITEM-ZZBASM = LWA_MARA-ZZBASM.
LWA_PO_ITEM-ZZSPEC = LWA_MARA-ZZSPEC.
LWA_PO_ITEM-IL_STATUS = LWA_ZMMT0005-IL_STATUS.


* "金额转换
* READ TABLE LT_EKKO INTO LWA_EKKO WITH KEY EBELN = LWA_EKPO-EBELN.
* IF SY-SUBRC = 0.
** CLEAR LV_BAPICURR.
** CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
** EXPORTING
** CURRENCY = LWA_EKKO-WAERS
** AMOUNT_INTERNAL = LWA_EKPO-NETWR
** IMPORTING
** AMOUNT_EXTERNAL = LV_BAPICURR.
** LWA_EKPO-NETWR = LV_BAPICURR .
* IF LWA_EKKO-WAERS = 'JPY'.
* LWA_EKPO-NETWR = LWA_EKPO-NETWR * 100.
* ENDIF.
* ENDIF.

"税率
CLEAR LV_KBETR.
CALL FUNCTION 'ZFM_GET_DUTY_RATE'
EXPORTING
IM_MWSKZ = LWA_EKPO-MWSKZ
IMPORTING
EX_ZDUTY = LV_KBETR.
LWA_PO_ITEM-ZTAX = LV_KBETR.
"含税价
LWA_PO_ITEM-ZPRICE = LWA_EKPO-NETWR * ( 1 + LV_KBETR / 100 ) / LWA_EKPO-MENGE.
"发运单价
LWA_PO_ITEM-ZFYDJ = LWA_EKPO-NETWR / LWA_EKPO-MENGE.
"待发数: EKPO-MENGE 减去已建立的交货单
CLEAR LV_LFIMG_SUM.
SELECT SUM( LFIMG ) FROM LIPS ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
INTO LV_LFIMG_SUM
WHERE VGBEL = LWA_EKPO-EBELN
AND VGPOS = LWA_EKPO-EBELP
AND SHKZG <> 'X'.
LWA_PO_ITEM-ZLFIMG = LWA_EKPO-MENGE - LV_LFIMG_SUM.
LWA_PO_ITEM-KBETR = LV_KBETR. "add 20190705
"金额
LWA_PO_ITEM-ZJE = LWA_EKPO-NETWR / LWA_EKPO-MENGE * LWA_PO_ITEM-ZLFIMG.
* rep cjj 20190917 start
"Z1免税,Z2征税
SELECT SINGLE EKKN~PS_PSP_PNR PRPS~PSPHI USR00 SLWID "add cjj 20191028
INTO ( LV_WBS,LV_PSPHI,LWA_PO_ITEM-ZTAXTYPE ,
LV_SLWID ) "add cjj 20191028
FROM EKKN INNER JOIN PRPS ON PRPS~PSPNR = EKKN~PS_PSP_PNR
INNER JOIN EKPO ON EKKN~EBELN = EKPO~EBELN
AND EKKN~EBELP = EKPO~EBELP
WHERE EKKN~EBELN = LWA_EKPO-EBELN
AND EKPO~LOEKZ = SPACE.
* add cjj 20191028 start
* 根据WBS编码(EKKN-PS_PSP_PNR)在表PRPS中查找对应字段码(PRPS-SLWID),
* 1、若SLWID=ZPMCGJ1(这种情况,WBS带赋税类型字段),则取WBS的赋税类型(PRPS-USR00);
* 2、其他情况,则在表PRPS中根据WBS找到对应的项目工号(PRPS-PSPHI),然后根据项目工号,在表ZPST0007中查找对应的赋税类型(ZPST0007- ZZTAX)
PERFORM EDIT_ZTAXTYPE USING LV_PSPHI LV_SLWID CHANGING LWA_PO_ITEM-ZTAXTYPE.
* add cjj 20191028 end
* SELECT SINGLE PS_PSP_PNR FROM EKKN INTO LV_WBS
* WHERE EBELN = LWA_EKPO-EBELN.
* CLEAR LV_PSPHI.
* SELECT SINGLE PSPHI INTO LV_PSPHI
* FROM PRPS
* WHERE PSPNR = LV_WBS.
* SELECT SINGLE USR00
* FROM PRPS
* INTO LWA_PO_ITEM-ZTAXTYPE
* WHERE
** PSPHI = LV_PSPHI
** AND STUFE = '1'
* PSPNR = LV_WBS.
** AND SLWID = 'ZPMCGJ1'.
* rep cjj 20190917 end
IF LWA_PO_ITEM-ZTAXTYPE = 'Z1'.
LWA_PO_ITEM-ZTAXTYPE_TXT = '免税'.
ELSEIF LWA_PO_ITEM-ZTAXTYPE = 'Z2'.
LWA_PO_ITEM-ZTAXTYPE_TXT = '征税'.
ENDIF.
CLEAR LWA_EKKO.
READ TABLE LT_EKKO INTO LWA_EKKO WITH KEY EBELN = LWA_PO_ITEM-EBELN.
IF SY-SUBRC = 0.
LWA_PO_ITEM-WAERS = LWA_EKKO-WAERS.
LWA_PO_ITEM-ZHTH = LWA_EKKO-ZHTH."add cjj 20190910
ENDIF.

APPEND LWA_PO_ITEM TO GT_PO_ITEM_ALL.
ENDLOOP.

LOOP AT LT_EKKO INTO LWA_EKKO.
READ TABLE GT_PO_ITEM_ALL TRANSPORTING NO FIELDS WITH KEY EBELN = LWA_EKKO-EBELN.
IF SY-SUBRC <> 0.
CONTINUE.
ENDIF.

CLEAR LWA_PO_HEAD.
LWA_PO_HEAD-EBELN = LWA_EKKO-EBELN.
LWA_PO_HEAD-ZHTH = LWA_EKKO-ZHTH.
LWA_PO_HEAD-EKGRP = LWA_EKKO-EKGRP.
SELECT SINGLE EKNAM FROM T024
INTO LWA_PO_HEAD-EKNAM
WHERE EKGRP = LWA_PO_HEAD-EKGRP.

LWA_PO_HEAD-ZLSCH = LWA_EKKO-ZLSCH.
LWA_PO_HEAD-INCO1 = LWA_EKKO-INCO1.
SELECT SINGLE TEXT2 FROM T042ZT INTO LWA_PO_HEAD-ZLSCH_TXT
WHERE SPRAS = SY-LANGU AND LAND1 = 'CN' AND ZLSCH = LWA_PO_HEAD-ZLSCH.
LWA_PO_HEAD-WAERS = LWA_EKKO-WAERS.
LWA_PO_HEAD-AEDAT = LWA_EKKO-AEDAT.
"总金额
LOOP AT GT_PO_ITEM_ALL INTO LWA_PO_ITEM WHERE EBELN = LWA_EKKO-EBELN.
LWA_PO_HEAD-ZTOL = LWA_PO_HEAD-ZTOL + LWA_PO_ITEM-ZJE.
ENDLOOP.

"项目name
CLEAR:LV_WBS.
* rep by cjj 20190917 start
SELECT SINGLE EKKN~PS_PSP_PNR PRPS~PSPHI
INTO ( LV_WBS,LWA_PO_HEAD-PSPHI )
FROM EKKN INNER JOIN PRPS ON PRPS~PSPNR = EKKN~PS_PSP_PNR
INNER JOIN EKPO ON EKKN~EBELN = EKPO~EBELN
AND EKKN~EBELP = EKPO~EBELP
WHERE EKKN~EBELN = LWA_EKPO-EBELN
AND EKPO~LOEKZ = SPACE.
* SELECT SINGLE PS_PSP_PNR FROM EKKN
* INTO LV_WBS
* WHERE EBELN = LWA_EKKO-EBELN.
* SELECT SINGLE PSPHI FROM PRPS
* INTO LWA_PO_HEAD-PSPHI
* WHERE PSPNR = LV_WBS.
* rep by cjj 20190917 end
SELECT SINGLE POST1 FROM PROJ
INTO LWA_PO_HEAD-POST1
WHERE PSPNR = LWA_PO_HEAD-PSPHI.
LWA_PO_HEAD-ZSFKG = LWA_EKKO-ZSFKG.
APPEND LWA_PO_HEAD TO GT_PO_HEAD.
ENDLOOP.

IF GWA_COND-PSPHI IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_KONPD_INPUT'
EXPORTING
INPUT = GWA_COND-PSPHI
IMPORTING
OUTPUT = LV_PSPHI
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

DELETE GT_PO_HEAD WHERE PSPHI <> LV_PSPHI.
ENDIF.

IF GWA_COND-ZXSHTMX IS INITIAL.
DELETE GT_PO_ITEM_ALL WHERE ZLFIMG <= 0 OR ELIKZ = 'X'.
"删除没有行项目的抬头数据
DATA LV_TABIX TYPE I.
LOOP AT GT_PO_HEAD INTO LWA_PO_HEAD.
LV_TABIX = SY-TABIX.
READ TABLE GT_PO_ITEM_ALL TRANSPORTING NO FIELDS WITH KEY EBELN = LWA_PO_HEAD-EBELN.
IF SY-SUBRC <> 0 .
DELETE GT_PO_HEAD INDEX LV_TABIX.
ENDIF.

ENDLOOP.
ENDIF.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_ADD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_ADD .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LWA_PO_ITEM TYPE TY_PO_ITEM.
DATA LWA_PO_HEAD TYPE TY_PO_HEAD.
DATA LT_PO_ITEM_SEL TYPE STANDARD TABLE OF TY_PO_ITEM.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LV_FLG.
DATA LWA_TDMX TYPE TY_TDMX.
DATA LT_TDMX TYPE STANDARD TABLE OF TY_TDMX.
DATA LV_FLG_RUN.

CALL METHOD GCL_ALV_GRID5->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
READ TABLE GT_PO_ITEM INTO LWA_PO_ITEM INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND LWA_PO_ITEM TO LT_PO_ITEM_SEL.
ENDIF.
ENDLOOP.
IF LT_PO_ITEM_SEL IS INITIAL.
MESSAGE '请先选择数据' TYPE 'I'.
LV_FLG = 'X'.
ENDIF.

CHECK LV_FLG IS INITIAL.
"del 20190419 数量已用完的订单允许再创建提单
* LOOP AT LT_PO_ITEM_SEL TRANSPORTING NO FIELDS WHERE ZLFIMG <= 0 OR ELIKZ = 'X'.
* EXIT.
* ENDLOOP.
* IF SY-SUBRC = 0.
* MESSAGE '选中的行项目包含待发数小于等于0或者交货已完成' TYPE 'I'.
* LV_FLG = 'X'.
* ENDIF.
"del 20190419 数量已用完的订单允许再创建提单

CHECK LV_FLG IS INITIAL.
* DATA LV_POSNR TYPE LIPS-POSNR.
* CLEAR LV_POSNR.
CLEAR LV_FLG_RUN.
LOOP AT LT_PO_ITEM_SEL INTO LWA_PO_ITEM.
CLEAR LWA_TDMX.
"add start 20190419
READ TABLE GT_TDMX TRANSPORTING NO FIELDS WITH KEY EBELN = LWA_PO_ITEM-EBELN.
IF SY-SUBRC = 0.
"选取的采购订单一样,检查行项目是否一致
READ TABLE GT_TDMX TRANSPORTING NO FIELDS WITH KEY EBELN = LWA_PO_ITEM-EBELN
EBELP = LWA_PO_ITEM-EBELP.
IF SY-SUBRC = 0.
"如果之前已选过,报错
LV_FLG_RUN = 'X'.
MESSAGE '选择的采购订单行已选过。' TYPE 'I'.
ENDIF.
ELSE.
IF GT_TDMX IS NOT INITIAL. "如果之前已选过,采购订单不一样,报错
* 20190910 支持同个合同多个采购订单选中的行项目;
READ TABLE GT_TDMX TRANSPORTING NO FIELDS WITH KEY ZHTH = LWA_PO_ITEM-ZHTH. "add cjj 20190910
IF SY-SUBRC <> 0. "add cjj 20190910
LV_FLG_RUN = 'X'.
MESSAGE '选择的采购订单不一致。' TYPE 'I'.
ENDIF. "add cjj 20190910
ENDIF.
ENDIF.
CHECK LV_FLG_RUN IS INITIAL.
"add end 20190419
* LV_POSNR = LV_POSNR + 10.
MOVE-CORRESPONDING LWA_PO_ITEM TO LWA_TDMX.
* LWA_TDMX-POSNR = LV_POSNR.
SELECT SINGLE MSEHL FROM T006A
INTO LWA_TDMX-MEINS_TXT
WHERE SPRAS = SY-LANGU
AND MSEHI = LWA_PO_ITEM-MEINS.
GWA_JKTD-ZTAX = LWA_PO_ITEM-ZTAX.
APPEND LWA_TDMX TO GT_TDMX.
ENDLOOP.

CHECK LV_FLG_RUN IS INITIAL.

READ TABLE GT_PO_HEAD INTO LWA_PO_HEAD WITH KEY EBELN = LWA_PO_ITEM-EBELN.
IF SY-SUBRC = 0.
GWA_JKTD-WAERK = LWA_PO_HEAD-WAERS.
GWA_JKTD-ZZFFS = LWA_PO_HEAD-ZLSCH.
GWA_JKTD-ZJGFS = LWA_PO_HEAD-INCO1.
GWA_JKTD-LGORT = LWA_PO_ITEM-LGORT.
SELECT SINGLE WERKS INTO GWA_JKTD-WERKS FROM ZMMT0124
WHERE LGORT = LWA_PO_ITEM-LGORT
AND ZFSLX = LWA_PO_ITEM-ZTAXTYPE
AND ZZT = SPACE.

GWA_JKTD-ZKEGONG = LWA_PO_HEAD-ZSFKG.
SELECT SINGLE KTEXT FROM TCURT
INTO GWA_JKTD-WAERK_TXT
WHERE SPRAS = SY-LANGU
AND WAERS = GWA_JKTD-WAERK.
SELECT SINGLE ZSFBG INTO GWA_JKTD-ZBAOGUAN FROM EKKO
WHERE EBELN = LWA_PO_ITEM-EBELN.
ENDIF.
LT_TDMX = GT_TDMX.
SORT LT_TDMX BY ZJE DESCENDING.
CLEAR LWA_TDMX.
READ TABLE LT_TDMX INTO LWA_TDMX INDEX 1.
IF SY-SUBRC = 0.
GWA_JKTD-ZHWMC = LWA_TDMX-ZZNAME1.
ENDIF.

SELECT SINGLE EINDT INTO GWA_JKTD-LFDAT FROM EKET INNER JOIN EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
ON EKET~EBELN = EKPO~EBELN AND EKET~EBELP = EKPO~EBELP
WHERE EKET~EBELN = LWA_TDMX-EBELN AND EKPO~LOEKZ = SPACE.

LEAVE TO SCREEN 0.
CALL METHOD GCL_ALV_GRID3->REFRESH_TABLE_DISPLAY.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DATA_CHANGED_FINISHED
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> ET_GOOD_CELLS
*& --> E_MODIFIED
*&---------------------------------------------------------------------*
FORM FRM_DATA_CHANGED_FINISHED TABLES ET_GOOD_CELLS TYPE LVC_T_MODI
USING E_MODIFIED.
DATA LWA_CELLS TYPE LVC_S_MODI.
DATA LWA_CELLS_T TYPE LVC_S_MODI.
DATA LWA_TDMX TYPE TY_TDMX.
DATA LV_ZLFIMG_FLG.
DATA LV_ZJE_FLG.

IF ET_GOOD_CELLS[] IS NOT INITIAL.
LOOP AT ET_GOOD_CELLS INTO LWA_CELLS_T.
LWA_CELLS = LWA_CELLS_T.

IF LWA_CELLS-FIELDNAME = 'ZLFIMG'.
LV_ZLFIMG_FLG = 'X'.
ENDIF.
IF LWA_CELLS-FIELDNAME = 'ZJE'.
LV_ZJE_FLG = 'X'.
ENDIF.
IF LWA_CELLS-FIELDNAME = 'ZJEBLD'.
LV_ZLFIMG_FLG = 'X'.
ENDIF.
AT END OF ROW_ID.
CLEAR LWA_TDMX.
READ TABLE GT_TDMX INTO LWA_TDMX INDEX LWA_CELLS-ROW_ID.
IF SY-SUBRC = 0.
IF LWA_TDMX-ZLFIMG = 0.
MESSAGE '交货数量必须大于0' TYPE 'I'.
ELSE.
"发运数量和金额都修改,反算发运数量: 金额不联动为空的时候 才联动
IF LWA_TDMX-ZJEBLD IS INITIAL.
IF LV_ZLFIMG_FLG IS NOT INITIAL AND LV_ZJE_FLG IS NOT INITIAL.
IF LWA_TDMX-ZFYDJ <> 0.
LWA_TDMX-ZLFIMG = LWA_TDMX-ZJE / LWA_TDMX-ZFYDJ.
ENDIF.
"只修改发运数量,反算金额
ELSEIF LV_ZLFIMG_FLG IS NOT INITIAL AND LV_ZJE_FLG IS INITIAL.
* lwa_tdmx-zje = lwa_tdmx-zfydj * lwa_tdmx-zlfimg. "del 20190705
LWA_TDMX-ZJE = LWA_TDMX-ZPRICE * LWA_TDMX-ZLFIMG / ( 1 + LWA_TDMX-KBETR / 100 ). "Add 20190705
"只修改金额,反算发运数量
ELSEIF LV_ZLFIMG_FLG IS INITIAL AND LV_ZJE_FLG IS NOT INITIAL.
IF LWA_TDMX-ZFYDJ <> 0.
LWA_TDMX-ZLFIMG = LWA_TDMX-ZJE / LWA_TDMX-ZFYDJ.
ENDIF.
ENDIF.
ENDIF.

IF LWA_TDMX-COUNTRY IS NOT INITIAL.
SELECT SINGLE LANDX FROM T005T
INTO LWA_TDMX-COUNTRY_TXT
WHERE SPRAS = SY-LANGU
AND LAND1 = LWA_TDMX-COUNTRY.
IF SY-SUBRC <> 0.
CLEAR:LWA_TDMX-COUNTRY,LWA_TDMX-COUNTRY_TXT.
ENDIF.
ELSE.
CLEAR LWA_TDMX-COUNTRY_TXT.
ENDIF.

MODIFY GT_TDMX FROM LWA_TDMX INDEX LWA_CELLS-ROW_ID TRANSPORTING ZLFIMG ZJE COUNTRY COUNTRY_TXT.
ENDIF.
ENDIF.
CLEAR: LV_ZLFIMG_FLG,LV_ZJE_FLG.
ENDAT.
ENDLOOP.

CALL METHOD GCL_ALV_GRID3->REFRESH_TABLE_DISPLAY.
* CALL METHOD CL_GUI_CFW=>FLUSH.

DATA : LWA_IS_ROW_ID TYPE LVC_S_ROW,
LWA_IS_COLUMN_ID TYPE LVC_S_COL,
LWA_IS_ROW_NO TYPE LVC_S_ROID.

LWA_IS_ROW_ID = LWA_CELLS-ROW_ID.
LWA_IS_COLUMN_ID = LWA_CELLS-FIELDNAME.
LWA_IS_ROW_NO-ROW_ID = LWA_CELLS-ROW_ID.

CALL METHOD GCL_ALV_GRID3->SET_CURRENT_CELL_VIA_ID
EXPORTING
IS_ROW_ID = LWA_IS_ROW_ID " Row No
IS_COLUMN_ID = LWA_IS_COLUMN_ID " Column No
IS_ROW_NO = LWA_IS_ROW_NO. " Row No.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DATA_CHANGED_FINISHED1
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> ET_GOOD_CELLS
*& --> E_MODIFIED
*&---------------------------------------------------------------------*
FORM FRM_DATA_CHANGED_FINISHED1 TABLES ET_GOOD_CELLS TYPE LVC_T_MODI
USING E_MODIFIED.
DATA LWA_CELLS TYPE LVC_S_MODI.
DATA LWA_CELLS_T TYPE LVC_S_MODI.
DATA LWA_CFMX TYPE TY_CFMX.

IF ET_GOOD_CELLS[] IS NOT INITIAL.
LOOP AT ET_GOOD_CELLS INTO LWA_CELLS_T.
LWA_CELLS = LWA_CELLS_T.

AT END OF ROW_ID.
CLEAR LWA_CFMX.
READ TABLE GT_CFMX INTO LWA_CFMX INDEX LWA_CELLS-ROW_ID.

IF GWA_TDMX_FJ-ZLJBG IS NOT INITIAL.
SELECT SINGLE MEINS FROM MARA INTO LWA_CFMX-MEINS
WHERE MATNR = LWA_CFMX-MATNR_CF.
ENDIF.

PERFORM FRM_GET_UNIT_TXT USING LWA_CFMX-MEINS
CHANGING LWA_CFMX-MEINS_TXT.
SELECT SINGLE LANDX FROM T005T
INTO LWA_CFMX-ZCOUNTRY_TXT
WHERE SPRAS = SY-LANGU
AND LAND1 = LWA_CFMX-ZCOUNTRY.
IF GWA_TDMX_FJ-ZLJBG IS NOT INITIAL.
SELECT SINGLE MAKTX FROM MAKT
INTO LWA_CFMX-MAKTX
WHERE MATNR = LWA_CFMX-MATNR_CF
AND SPRAS = SY-LANGU.
ENDIF.
MODIFY GT_CFMX FROM LWA_CFMX INDEX LWA_CELLS-ROW_ID
TRANSPORTING MEINS MEINS_TXT ZCOUNTRY_TXT MAKTX.
ENDAT.
ENDLOOP.

CALL METHOD GCL_ALV_GRID7->REFRESH_TABLE_DISPLAY.

DATA : LWA_IS_ROW_ID TYPE LVC_S_ROW,
LWA_IS_COLUMN_ID TYPE LVC_S_COL,
LWA_IS_ROW_NO TYPE LVC_S_ROID.

LWA_IS_ROW_ID = LWA_CELLS-ROW_ID.
LWA_IS_COLUMN_ID = LWA_CELLS-FIELDNAME.
LWA_IS_ROW_NO-ROW_ID = LWA_CELLS-ROW_ID.

CALL METHOD GCL_ALV_GRID7->SET_CURRENT_CELL_VIA_ID
EXPORTING
IS_ROW_ID = LWA_IS_ROW_ID " Row No
IS_COLUMN_ID = LWA_IS_COLUMN_ID " Column No
IS_ROW_NO = LWA_IS_ROW_NO. " Row No.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CREATE_IBD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_CREATE_IBD .
TYPES: BEGIN OF TY_TDMX_T,
EBELN TYPE EKPO-EBELN, "Add cjj 20190911
EBELP TYPE EKPO-EBELP,
ZLJBG TYPE CHAR01,
COUNTRY TYPE LIPS-COUNTRY,
CHARG TYPE LIPS-CHARG,
ZCURRENCY TYPE LIPS-ZCURRENCY,
ZAMOUNT TYPE LIPS-ZAMOUNT,
ZJEBLD TYPE LIPS-ZJEBLD,
DLCF_FLG TYPE LIPS-DLCF_FLG, "add cjj 20190606
ZSGXH TYPE LIPS-ZSGXH, "add cjj 20191209
END OF TY_TDMX_T.
DATA LWA_TDMX TYPE TY_TDMX.
DATA LWA_TDMX_T TYPE TY_TDMX_T.
DATA LT_REQUEST TYPE STANDARD TABLE OF BAPIDELICIOUSREQUEST.
DATA LT_REQUEST_T TYPE STANDARD TABLE OF BAPIDELICIOUSREQUEST. "Add cjj 20190910
DATA LT_CREATEDITEMS TYPE STANDARD TABLE OF BAPIDELICIOUSCREATEDITEMS.
DATA LT_RETURN TYPE STANDARD TABLE OF BAPIRET2.
DATA LWA_REQUEST TYPE BAPIDELICIOUSREQUEST.
DATA LWA_CREATEDITEMS TYPE BAPIDELICIOUSCREATEDITEMS.
DATA LWA_RETURN TYPE BAPIRET2.
DATA LT_TDMX TYPE STANDARD TABLE OF TY_TDMX_T.
DATA LV_TEXT_QUESTION TYPE CHAR100.
DATA LV_ANSWER TYPE CHAR01.
DATA LV_TITLE TYPE CHAR50.
DATA LV_VBELN TYPE LIKP-VBELN.
DATA LWA_HEADER TYPE THEAD.
DATA LT_LINES TYPE STANDARD TABLE OF TLINE .
DATA LWA_LINES TYPE TLINE.
DATA LV_POSNR TYPE LIPS-POSNR.
DATA LV_TABIX TYPE I.
DATA LV_CHARG TYPE CHAR10.
DATA LV_CHAR4 TYPE NUMC04.
DATA LV_CHAR5 TYPE CHAR5.
DATA LV_FLG.
DATA : LWA_IS_ROW_ID TYPE LVC_S_ROW,
LWA_IS_COLUMN_ID TYPE LVC_S_COL,
LWA_IS_ROW_NO TYPE LVC_S_ROID.
DATA LV_ZSFBG TYPE EKKO-ZSFBG.
DATA LV_FST_DATE TYPE SY-DATUM.
DATA LV_LST_DATE TYPE SY-DATUM.
DATA LWA_LAYOUT TYPE LVC_S_LAYO.
DATA: LS_ZMMT0123A TYPE ZMMT0123A. "提单退货表头
DATA: LS_ZMMT0123B TYPE ZMMT0123B. "提单退货行项目
DATA: LT_ZMMT0123A TYPE STANDARD TABLE OF ZMMT0123A. "提单退货表头
DATA: LT_ZMMT0123B TYPE STANDARD TABLE OF ZMMT0123B. "提单退货行项目
DATA LS_TDMX TYPE TY_TDMX.
DATA LV_FLG_C TYPE C. "Add cjj 20190903

LV_FST_DATE = SY-DATUM(6) && '01'.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = SY-DATUM
IMPORTING
E_DATE = LV_LST_DATE.

IF GT_TDMX IS INITIAL.
MESSAGE '合同明细为空,不能保存' TYPE 'E'.
ENDIF.

READ TABLE GT_TDMX TRANSPORTING NO FIELDS WITH KEY VBELN = SPACE.
IF SY-SUBRC <> 0.
MESSAGE '已生成内向交货单' TYPE 'E'.
ENDIF.

* IF GWA_JKTD-LFDAT IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-LFDAT'.
* MESSAGE '请输入预计到货日期' TYPE 'E'.
* ENDIF.

READ TABLE GT_TDMX TRANSPORTING NO FIELDS WITH KEY ZLFIMG = 0.
IF SY-SUBRC = 0.
LWA_IS_ROW_ID = SY-TABIX.
LWA_IS_COLUMN_ID = 'ZLFIMG'.
LWA_IS_ROW_NO-ROW_ID = SY-TABIX.
CALL METHOD GCL_ALV_GRID3->SET_CURRENT_CELL_VIA_ID
EXPORTING
IS_ROW_ID = LWA_IS_ROW_ID " Row No
IS_COLUMN_ID = LWA_IS_COLUMN_ID " Column No
IS_ROW_NO = LWA_IS_ROW_NO. " Row No.

MESSAGE '交货数量必须大于0' TYPE 'E'.
ENDIF.

READ TABLE GT_TDMX TRANSPORTING NO FIELDS WITH KEY COUNTRY = SPACE.
IF SY-SUBRC = 0.
MESSAGE '原产国必填' TYPE 'E'.
ENDIF.

LOOP AT GT_TDMX INTO LWA_TDMX.
SELECT COUNT(*) FROM ZMMT0070 WHERE LAND1 = LWA_TDMX-COUNTRY.
IF SY-SUBRC <> 0.
MESSAGE '原产国报关对应维护表ZMMT0070未维护' TYPE 'E'.
ENDIF.
ENDLOOP.

CLEAR LV_FLG.
LOOP AT GT_TDMX INTO LWA_TDMX.
SELECT COUNT(*) FROM ZMMT0005
WHERE IL_ITEM_ID = LWA_TDMX-MATNR
AND IL_STATUS = '6'.
IF SY-SUBRC <> 0.
LV_FLG = 'X'.
EXIT.
ENDIF.
ENDLOOP.
IF LV_FLG IS NOT INITIAL.
CLEAR LV_ANSWER.
LV_TEXT_QUESTION = '存在物料未备案,是否要创建提单?'.
LV_TITLE = '提单管理'.
PERFORM FRM_POP_UP USING LV_TITLE LV_TEXT_QUESTION
CHANGING LV_ANSWER.
CHECK LV_ANSWER = '1'.
ENDIF.
IF GWA_COND-ZTHSEL = SPACE. "Add cjj 20190604

CLEAR LV_ANSWER.
LV_TEXT_QUESTION = '生成内向交货单,是否确定?'.
LV_TITLE = '生成内向交货单'.
PERFORM FRM_POP_UP USING LV_TITLE LV_TEXT_QUESTION
CHANGING LV_ANSWER.
CHECK LV_ANSWER = '1'.
CLEAR:LT_REQUEST,LT_TDMX,LV_POSNR.
LOOP AT GT_TDMX INTO LWA_TDMX.
LV_TABIX = SY-TABIX.
LV_POSNR = LV_POSNR + 10.
LWA_TDMX-POSNR = LV_POSNR.
CLEAR LWA_REQUEST.
LWA_REQUEST-DOCUMENT_NUMB = LWA_TDMX-EBELN.
LWA_REQUEST-DOCUMENT_ITEM = LWA_TDMX-EBELP.
LWA_REQUEST-ORDCOMBIND = 'X'. "Add cjj 20190910
LWA_REQUEST-ID = LV_POSNR."lwa_tdmx-ebelp. rep by cjj 20190911
* LWA_REQUEST-PLANT = GWA_JKTD-WERKS. "工厂会从采购订单带过去
LWA_REQUEST-STGE_LOC = GWA_JKTD-LGORT.
LWA_REQUEST-QUANTITY_SALES_UOM = LWA_TDMX-ZLFIMG.
LWA_REQUEST-SALES_UNIT = LWA_TDMX-MEINS.
LWA_REQUEST-BASE_UOM = LWA_TDMX-MEINS.
LWA_REQUEST-MATERIAL = LWA_TDMX-MATNR.
LWA_REQUEST-DOCUMENT_TYPE = 'B'.
LWA_REQUEST-DOCUMENT_TYPE_PREDECESSOR = 'B'.
LWA_REQUEST-DOCUMENT_TYPE_DELIVERY = 'EL'.
IF GWA_JKTD-LFDAT IS NOT INITIAL.
LWA_REQUEST-DELIVERY_DATE = GWA_JKTD-LFDAT. "预计到港日期
ELSE.
SELECT SINGLE EINDT INTO LWA_REQUEST-DELIVERY_DATE FROM EKET INNER JOIN EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
ON EKET~EBELN = EKPO~EBELN AND EKET~EBELP = EKPO~EBELP
WHERE EKET~EBELN = LWA_TDMX-EBELN "AND EKET~EBELP = LWA_TDMX-EBELP
AND EKPO~LOEKZ = SPACE.
ENDIF.

"add 20190427 如果品名中包含“电缆”、“光缆”、“通讯线”则不自动生成批次
IF ( LWA_TDMX-ZZNAME1 CS '电缆' OR LWA_TDMX-ZZNAME1 CS '光缆' OR LWA_TDMX-ZZNAME1 CS '通讯线' )
AND LWA_TDMX-DLCF_FLG = SPACE. "add cjj 20190515

ELSE.
CLEAR LV_CHARG.
SELECT MAX( CHARG ) FROM MCH1 INTO LV_CHARG
WHERE ERSDA >= LV_FST_DATE AND ERSDA <= LV_LST_DATE
AND LVORM = SPACE.
IF LV_CHARG IS INITIAL.
CLEAR LV_CHAR5.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = '01'
OBJECT = 'ZCHARG5'
* QUANTITY = '1'
* SUBOBJECT = ' '
* TOYEAR = '0000'
* IGNORE_BUFFER = ' '
IMPORTING
NUMBER = LV_CHAR5
* QUANTITY =
* RETURNCODE =
EXCEPTIONS
INTERVAL_NOT_FOUND = 1
NUMBER_RANGE_NOT_INTERN = 2
OBJECT_NOT_FOUND = 3
QUANTITY_IS_0 = 4
QUANTITY_IS_NOT_1 = 5
INTERVAL_OVERFLOW = 6
BUFFER_OVERFLOW = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ELSE.
LWA_REQUEST-BATCH = SY-DATUM+2(4) && 'X' && LV_CHAR5.
ENDIF.
ELSE.
CALL FUNCTION 'ZFM_GET_BATCH_NUMBER'
IMPORTING
E_BATCH = LWA_REQUEST-BATCH.
ENDIF.
ENDIF.

APPEND LWA_REQUEST TO LT_REQUEST.

CLEAR LWA_TDMX_T.
LWA_TDMX_T-EBELN = LWA_TDMX-EBELN. "Add cjj 20190911
LWA_TDMX_T-EBELP = LWA_TDMX-EBELP.
LWA_TDMX_T-ZLJBG = LWA_TDMX-ZLJBG.
LWA_TDMX_T-COUNTRY = LWA_TDMX-COUNTRY.
LWA_TDMX_T-CHARG = LWA_REQUEST-BATCH.
LWA_TDMX_T-DLCF_FLG = LWA_TDMX-DLCF_FLG. "add cjj 20190606
LWA_TDMX_T-ZSGXH = LWA_TDMX-ZSGXH. "add cjj 20191209
"ZJEBLD:为X,就不联动,需保存金额
IF LWA_TDMX-ZJEBLD IS NOT INITIAL.
LWA_TDMX_T-ZJEBLD = LWA_TDMX-ZJEBLD.
* lwa_tdmx_t-zamount = lwa_tdmx-zje. del cjj 20190903
WRITE LWA_TDMX-ZJE TO LWA_TDMX_T-ZAMOUNT CURRENCY GWA_JKTD-WAERK NO-GROUPING. "Add cjj 20190903
CONDENSE LWA_TDMX_T-ZAMOUNT.
LWA_TDMX_T-ZCURRENCY = GWA_JKTD-WAERK.
ELSE.
LWA_TDMX_T-ZJEBLD = LWA_TDMX-ZJEBLD.
* lwa_tdmx_t-zamount = lwa_tdmx-zje. del cjj 20190903
WRITE LWA_TDMX-ZJE TO LWA_TDMX_T-ZAMOUNT CURRENCY GWA_JKTD-WAERK NO-GROUPING. "Add cjj 20190903
CONDENSE LWA_TDMX_T-ZAMOUNT.
LWA_TDMX_T-ZCURRENCY = GWA_JKTD-WAERK.
ENDIF.
APPEND LWA_TDMX_T TO LT_TDMX.
MODIFY GT_TDMX FROM LWA_TDMX INDEX LV_TABIX TRANSPORTING POSNR.
ENDLOOP.

* CLEAR:GWA_JKTD-NO_CUST, LV_ZSFBG.
* SELECT SINGLE ZSFBG INTO LV_ZSFBG FROM EKKO INNER JOIN LIPS
* ON EKKO~EBELN = LIPS~VGBEL WHERE LIPS~VGBEL = LWA_TDMX-EBELN.
* SELECT SINGLE ZSFBG INTO LV_ZSFBG FROM EKKO
* WHERE EBELN = LWA_TDMX-EBELN.
* IF SY-SUBRC = 0 AND LV_ZSFBG IS INITIAL.
* GWA_JKTD-NO_CUST = 'Z1'.
* ENDIF.
* To ZMME0005 & FV50KFLK_LIKP_SUMMEN_ERMITTELN

LV_FLG_C = 'X'.
EXPORT LV_FLG_C TO MEMORY ID '&ZMMR0123_FLG'.
EXPORT LT_TDMX TO MEMORY ID '&ZMMR0123_IBD_ITEM'.
EXPORT GWA_JKTD TO MEMORY ID '&ZMMR0123_IBD_HEAD'.
"import in ZCL_IM_MME0005
CLEAR:LT_RETURN, LT_CREATEDITEMS.
CALL FUNCTION 'BAPI_DELIVERYPROCESSING_EXEC'
TABLES
REQUEST = LT_REQUEST
CREATEDITEMS = LT_CREATEDITEMS
RETURN = LT_RETURN.
FREE MEMORY ID '&ZMMR0123_IBD_ITEM'.
FREE MEMORY ID '&ZMMR0123_FLG'.
DATA LV_CNT_REQ TYPE I.
DATA LV_CNT_CRE TYPE I.
DATA LV_CNT_QF TYPE I.
DATA LV_CNT_PO TYPE I. "add cjj 20190910
DATA LT_CREATEDITEMS_T TYPE STANDARD TABLE OF BAPIDELICIOUSCREATEDITEMS.
DESCRIBE TABLE LT_REQUEST LINES LV_CNT_REQ.
DESCRIBE TABLE LT_CREATEDITEMS LINES LV_CNT_CRE.
LT_CREATEDITEMS_T = LT_CREATEDITEMS.
SORT LT_CREATEDITEMS_T BY DOCUMENT_NUMB.
DELETE ADJACENT DUPLICATES FROM LT_CREATEDITEMS_T COMPARING DOCUMENT_NUMB.
DESCRIBE TABLE LT_CREATEDITEMS_T LINES LV_CNT_QF.
* add cjj 20190910 start
CLEAR: LT_REQUEST_T[],LV_CNT_PO.
LT_REQUEST_T[] = LT_REQUEST[].
SORT LT_REQUEST_T BY DOCUMENT_NUMB.
DELETE ADJACENT DUPLICATES FROM LT_REQUEST_T COMPARING DOCUMENT_NUMB.
DESCRIBE TABLE LT_REQUEST_T LINES LV_CNT_PO.
* add cjj 20190910 end
IF LT_CREATEDITEMS IS NOT INITIAL AND LV_CNT_REQ = LV_CNT_CRE AND LV_CNT_QF = 1.
CLEAR: LWA_TDMX-ZMSG,LWA_TDMX-VBELN.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
READ TABLE LT_CREATEDITEMS INTO LWA_CREATEDITEMS INDEX 1.
IF SY-SUBRC = 0.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = LWA_CREATEDITEMS-DOCUMENT_NUMB
IMPORTING
OUTPUT = LV_VBELN.

LWA_TDMX-ZMSG = '内向交货单创建成功:' && LV_VBELN.
GWA_JKTD-VBELN = LWA_CREATEDITEMS-DOCUMENT_NUMB.
LWA_TDMX-VBELN = LWA_CREATEDITEMS-DOCUMENT_NUMB.

MODIFY GT_TDMX FROM LWA_TDMX TRANSPORTING ZMSG VBELN WHERE EBELN <> SPACE.
CALL METHOD GCL_ALV_GRID3->REFRESH_TABLE_DISPLAY.
MESSAGE LWA_TDMX-ZMSG TYPE 'S'.

"save head long text
CLEAR LWA_HEADER.
LWA_HEADER-TDOBJECT = 'VBBK' .
LWA_HEADER-TDID = '0102'.
LWA_HEADER-TDSPRAS = SY-LANGU.
LWA_HEADER-TDNAME = LWA_CREATEDITEMS-DOCUMENT_NUMB.

CLEAR:LT_LINES,LWA_LINES.
LWA_LINES-TDFORMAT = '*' .
LWA_LINES-TDLINE = GWA_JKTD-MEMO.
APPEND LWA_LINES TO LT_LINES.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = LWA_HEADER
SAVEMODE_DIRECT = 'X'
TABLES
LINES = LT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
"save item long text
LOOP AT GT_TDMX INTO LWA_TDMX.
CLEAR LWA_HEADER.
LWA_HEADER-TDOBJECT = 'VBBP' .
LWA_HEADER-TDID = '0002'.
LWA_HEADER-TDSPRAS = SY-LANGU.
LWA_HEADER-TDNAME = LWA_CREATEDITEMS-DOCUMENT_NUMB && LWA_TDMX-POSNR.

CLEAR:LT_LINES,LWA_LINES.
LWA_LINES-TDFORMAT = '*' .
LWA_LINES-TDLINE = LWA_TDMX-MEMO.
APPEND LWA_LINES TO LT_LINES.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = LWA_HEADER
SAVEMODE_DIRECT = 'X'
TABLES
LINES = LT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
ENDIF.
"更新采购订单对应的表字段EKKO-ZLSCH
UPDATE EKKO SET ZLSCH = GWA_JKTD-ZZFFS
WHERE EBELN = LWA_TDMX-EBELN.
COMMIT WORK AND WAIT.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
CLEAR LWA_TDMX-ZMSG.
LOOP AT LT_RETURN INTO LWA_RETURN .
CONCATENATE LWA_TDMX-ZMSG LWA_RETURN-MESSAGE INTO LWA_TDMX-ZMSG
SEPARATED BY '|'.
ENDLOOP.
MODIFY GT_TDMX FROM LWA_TDMX TRANSPORTING ZMSG WHERE EBELN <> SPACE.

* DATA LWA_LAYOUT TYPE LVC_S_LAYO.
CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
CALL METHOD GCL_ALV_GRID3->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = LWA_LAYOUT.

CALL METHOD GCL_ALV_GRID3->REFRESH_TABLE_DISPLAY.

LWA_IS_ROW_ID = 1.
LWA_IS_COLUMN_ID = 'ZMSG'.
LWA_IS_ROW_NO-ROW_ID = 1.

CALL METHOD GCL_ALV_GRID3->SET_CURRENT_CELL_VIA_ID
EXPORTING
IS_ROW_ID = LWA_IS_ROW_ID " Row No
IS_COLUMN_ID = LWA_IS_COLUMN_ID " Column No
IS_ROW_NO = LWA_IS_ROW_NO. " Row No.

MESSAGE '内向交货单创建失败,请查看报错消息' TYPE 'E'.
ENDIF.
ELSE. "Add cjj 20190604
*确定最新退货单号
PERFORM GET_THVBELN CHANGING GWA_JKTD-VBELN.
IF GT_TDMX IS INITIAL.
MESSAGE '合同明细为空,不能保存' TYPE 'E'.
ENDIF.
* READ TABLE GT_HEAD INTO LS_HEAD WITH KEY VBELN = GWA_JKTD-VBELN+1(10).
* MOVE-CORRESPONDING LS_HEAD TO LS_ZMMT0123A.
MOVE-CORRESPONDING GWA_JKTD TO LS_ZMMT0123A.
*当这个报关 标示打上时,保存或 更新 ZMM0123A 时 是否报关 置为Z3 未报;
*当这个报关 标示未打上时,保存或 更新 ZMM0123A 时 是否报关 置为Z1
IF GWA_JKTD-ZBAOGUAN IS NOT INITIAL.
LS_ZMMT0123A-NO_CUST = 'Z3'.
LS_ZMMT0123A-NO_CUST_TXT = '未报'.
ELSE.
LS_ZMMT0123A-NO_CUST = 'Z1'.
LS_ZMMT0123A-NO_CUST_TXT = '不报'.
ENDIF.
LS_ZMMT0123A-ZCONF = 'Z1'.
LS_ZMMT0123A-ZWERKS1 = '1000'. "默认1000
LS_ZMMT0123A-ZWERKS = GWA_JKTD-WERKS."入库基地
LS_ZMMT0123A-ZSTATUS = 'Z1'.
LS_ZMMT0123A-ZSTATUS_TXT = '新建'.
LS_ZMMT0123A-ZCONF_TXT = '未确认'.
LS_ZMMT0123A-TDDAT = GWA_JKTD-LDDAT."装船日期
CLEAR: LS_ZMMT0123A-CUST_NO."报关单号
APPEND LS_ZMMT0123A TO LT_ZMMT0123A.
CLEAR LV_POSNR.
LOOP AT GT_TDMX INTO LS_TDMX.
"add cjj 20190529 退货需要负
"发运数量为负
* if LS_TDMX-ZLFIMG > '0'.
* MESSAGE '退货的发运数量为正,不能保存' TYPE 'E'.
* endif.

MOVE-CORRESPONDING LS_TDMX TO LS_ZMMT0123B.
SELECT SINGLE PSPHI EKKN~PS_PSP_PNR
INTO ( LS_ZMMT0123B-PSPHI,LS_ZMMT0123B-PS_PSP_PNR )
FROM PRPS INNER JOIN EKKN ON PRPS~PSPNR = EKKN~PS_PSP_PNR
WHERE EBELN = LS_TDMX-EBELN
AND EBELP = LS_TDMX-EBELP.

LV_POSNR = LV_POSNR + 10.
LS_ZMMT0123B-POSNR = LV_POSNR.
LS_ZMMT0123B-VBELN = GWA_JKTD-VBELN.
LS_ZMMT0123B-PART_CUST = LS_TDMX-ZLJBG.
LS_ZMMT0123B-LFIMG = LS_TDMX-ZLFIMG.
LS_ZMMT0123B-VGBEL = LS_TDMX-EBELN.
LS_ZMMT0123B-VGPOS = LS_TDMX-EBELP.

APPEND LS_ZMMT0123B TO LT_ZMMT0123B.
CLEAR : LS_ZMMT0123B.

ENDLOOP.

IF LT_ZMMT0123A IS NOT INITIAL.
MODIFY ZMMT0123A FROM TABLE LT_ZMMT0123A.
IF SY-SUBRC = 0.
* COMMIT WORK AND WAIT.
* MESSAGE '保存成功' TYPE 'I'.
* LWA_CFMX-ZMSG = '保存成功'.
* MODIFY GT_CFMX FROM LWA_CFMX TRANSPORTING ZMSG WHERE ZMSG = SPACE.
ELSE.
ROLLBACK WORK.
MESSAGE '保存失败' TYPE 'I'.
RETURN.
ENDIF.
ENDIF.
IF LT_ZMMT0123B IS NOT INITIAL.
MODIFY ZMMT0123B FROM TABLE LT_ZMMT0123B.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
LWA_TDMX-ZMSG = '内向交货单创建成功:' && GWA_JKTD-VBELN.
MESSAGE LWA_TDMX-ZMSG TYPE 'I'.
LWA_TDMX-VBELN = GWA_JKTD-VBELN.
MODIFY GT_TDMX FROM LWA_TDMX TRANSPORTING ZMSG VBELN WHERE EBELN <> SPACE.
CALL METHOD GCL_ALV_GRID3->REFRESH_TABLE_DISPLAY.
MESSAGE LWA_TDMX-ZMSG TYPE 'S'.
ELSE.
ROLLBACK WORK.
CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
CALL METHOD GCL_ALV_GRID3->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = LWA_LAYOUT.

CALL METHOD GCL_ALV_GRID3->REFRESH_TABLE_DISPLAY.
LWA_IS_ROW_ID = 1.
LWA_IS_COLUMN_ID = 'ZMSG'.
LWA_IS_ROW_NO-ROW_ID = 1.
CALL METHOD GCL_ALV_GRID3->SET_CURRENT_CELL_VIA_ID
EXPORTING
IS_ROW_ID = LWA_IS_ROW_ID " Row No
IS_COLUMN_ID = LWA_IS_COLUMN_ID " Column No
IS_ROW_NO = LWA_IS_ROW_NO. " Row No.

LWA_TDMX-ZMSG = '内向交货单退货创建失败,请查看报错消息'.
MODIFY GT_TDMX FROM LWA_TDMX TRANSPORTING ZMSG WHERE EBELN <> SPACE.
MESSAGE LWA_TDMX-ZMSG TYPE 'E'.
RETURN.
ENDIF.
ENDIF.
ENDIF. "Add cjj 20190604
ENDFORM.
*&---------------------------------------------------------------------*
*& Module MDU_CANCEL_9100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MDU_CANCEL_9100 INPUT.
DATA LWA_HEAD TYPE TY_HEAD.

PERFORM FRM_UNLOCK_DATA USING GWA_JKTD-VBELN.

IF GWA_JKTD-VBELN IS NOT INITIAL. "已生成新的IBD,需重新获取9000alv数据
CLEAR GT_ITEM.
PERFORM FRM_GET_DATA.
CLEAR LWA_HEAD.
READ TABLE GT_HEAD TRANSPORTING NO FIELDS WITH KEY VBELN = GWA_JKTD-VBELN.
GV_ROW_HEAD = SY-TABIX.
READ TABLE GT_HEAD INTO LWA_HEAD INDEX GV_ROW_HEAD.
GT_ITEM = GT_ITEM_ALL.
DELETE GT_ITEM WHERE VBELN <> LWA_HEAD-VBELN.
ENDIF.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
PERFORM FRM_SET_CURSOR.
LEAVE TO SCREEN 0.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module MDU_CHECK_ZL_DW INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MDU_CHECK_ZL_DW INPUT.

IF ( GWA_JKTD-BTGEW IS NOT INITIAL OR GWA_JKTD-NTGEW IS NOT INITIAL )
AND GWA_JKTD-GEWEI IS INITIAL.
SET CURSOR FIELD 'GWA_JKTD-GEWEI'.
MESSAGE '毛重或净重输入的时候,重量单位需要输入' TYPE 'E'.
ENDIF.

IF GWA_JKTD-BTGEW < GWA_JKTD-NTGEW.
MESSAGE '净重不能大于毛重' TYPE 'E'.
ENDIF.

IF GWA_JKTD-GEWEI IS NOT INITIAL.
CALL FUNCTION 'DIMENSIONCHECK_MASS'
EXPORTING
GEWEI = GWA_JKTD-GEWEI
EXCEPTIONS
DIMENSION_NOT_MASS = 1
T006D_ENTRY_MISSING = 2
T006_ENTRY_MISSING = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
SET CURSOR FIELD 'GWA_JKTD-GEWEI'.
MESSAGE E077(VL) WITH GWA_JKTD-GEWEI.

ENDIF.
ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_POP_UP
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LV_TITLE
*& --> LV_TEXT_QUESTION
*& <-- LV_ANSWER
*&---------------------------------------------------------------------*
FORM FRM_POP_UP USING U_LV_TITLE
U_LV_TEXT_QUESTION
CHANGING C_LV_ANSWER.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = U_LV_TITLE
TEXT_QUESTION = U_LV_TEXT_QUESTION
TEXT_BUTTON_1 = '是'
TEXT_BUTTON_2 = '否'
DISPLAY_CANCEL_BUTTON = ''
IMPORTING
ANSWER = C_LV_ANSWER
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Module MDU_COND_SET_WERKS INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MDU_COND_SET_WERKS INPUT.

CLEAR: LT_T001W.
SELECT WERKS
NAME2
INTO CORRESPONDING FIELDS OF TABLE LT_T001W
FROM T001W.
LOOP AT LT_T001W INTO LWA_T001W.
IF LWA_T001W-WERKS+3(1) = '9'.
DELETE LT_T001W INDEX SY-TABIX.
ENDIF.
ENDLOOP.
IF LT_T001W IS NOT INITIAL.
* F4搜索帮助
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'WERKS'
VALUE_ORG = 'S'
DYNPROFIELD = 'GWA_COND-WERKS'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
TABLES
VALUE_TAB = LT_T001W
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Module MDU_COND_SET_LGORT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MDU_COND_SET_LGORT INPUT.
CLEAR: LT_T001L.
IF GWA_COND-WERKS IS NOT INITIAL.
SELECT WERKS
LGORT
LGOBE
INTO CORRESPONDING FIELDS OF TABLE LT_T001L
FROM T001L
WHERE WERKS = GWA_COND-WERKS.
ELSE.
SELECT WERKS
LGORT
LGOBE
INTO CORRESPONDING FIELDS OF TABLE LT_T001L
FROM T001L.
ENDIF.

IF LT_T001L IS NOT INITIAL.
* F4搜索帮助
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'LGORT'
VALUE_ORG = 'S'
DYNPROFIELD = 'GWA_COND-LGORT'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
TABLES
VALUE_TAB = LT_T001L
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_DEL_HETONG
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DEL_HETONG .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_TDMX TYPE TY_TDMX.
DATA LV_TABIX TYPE I.

CALL METHOD GCL_ALV_GRID3->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.

IF LT_ROW IS INITIAL.
MESSAGE '请先选择数据' TYPE 'E'.
ENDIF.

IF GWA_JKTD-VBELN IS NOT INITIAL AND GV_NEW_CHG = 'N'.
MESSAGE '已生成内向交货单,不能删除' TYPE 'E'.
ENDIF.

LOOP AT LT_ROW INTO LWA_ROW.
READ TABLE GT_TDMX INTO LWA_TDMX INDEX LWA_ROW-ROW_ID.
APPEND LWA_TDMX TO GT_TDMX_DEL.
ENDLOOP.

LOOP AT GT_TDMX INTO LWA_TDMX.
LV_TABIX = SY-TABIX.
READ TABLE GT_TDMX_DEL TRANSPORTING NO FIELDS WITH KEY EBELN = LWA_TDMX-EBELN
EBELP = LWA_TDMX-EBELP.
IF SY-SUBRC = 0.
DELETE GT_TDMX INDEX LV_TABIX.
ENDIF.

ENDLOOP.

CALL METHOD GCL_ALV_GRID3->REFRESH_TABLE_DISPLAY.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_XIUGAI
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_XIUGAI .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LWA_ITEM TYPE TY_ITEM.
DATA LWA_TDMX TYPE TY_TDMX.
DATA LV_CNT TYPE I.
DATA LWA_EKPO TYPE EKPO.
DATA LT_LINES TYPE STANDARD TABLE OF TLINE.
DATA LWA_LINES TYPE TLINE.
DATA LV_ID TYPE THEAD-TDID.
DATA LV_TDNAME TYPE THEAD-TDNAME.
DATA LV_OBJECT TYPE THEAD-TDOBJECT.
DATA LV_LOCK_FLG.

CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.

IF LT_ROW IS INITIAL.
MESSAGE '请先选择数据' TYPE 'E'.
ELSE.
DESCRIBE TABLE LT_ROW LINES LV_CNT.
IF LV_CNT > 1.
MESSAGE '请选择一条数据进行修改' TYPE 'E'.
ENDIF.
ENDIF.

LOOP AT LT_ROW INTO LWA_ROW.
CLEAR LWA_HEAD.
READ TABLE GT_HEAD INTO LWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
IF NOT ( LWA_HEAD-ZSTATUS = 'Z1' AND ( LWA_HEAD-ZCONF = 'Z1' OR LWA_HEAD-ZCONF = 'Z3' ) ).
MESSAGE '只允许对状态为 新建 且确认状态为 非确认 的数据进行修改' TYPE 'E'.
ENDIF.
ENDIF.
ENDLOOP.

"LIKP-WBSTK= C 货物移动已完成不允许修改
SELECT COUNT(*) FROM LIKP WHERE VBELN = LWA_HEAD-VBELN AND WBSTK = 'C'.
IF SY-SUBRC = 0.
MESSAGE '货物移动已完成不允许修改' TYPE 'E'.
ENDIF.

PERFORM FRM_LOCK_DATA USING LWA_HEAD-VBELN
CHANGING LV_LOCK_FLG.
CHECK LV_LOCK_FLG IS INITIAL.
CLEAR:GT_TDMX, GWA_JKTD.
MOVE-CORRESPONDING LWA_HEAD TO GWA_JKTD.
IF LWA_HEAD-VBELN(1) = 'R'. "add cjj 20190529
FLG_RETURN = 'X'.
ENDIF.
GWA_JKTD-WAERK = LWA_HEAD-ZCARGOVALUECURRENCY.
GWA_JKTD-WERKS = LWA_HEAD-ZWERKS.
GWA_JKTD-LDDAT = LWA_HEAD-TDDAT.
GWA_JKTD-WERKS1 = LWA_HEAD-WERKS1.
GWA_JKTD-WAERK = LWA_HEAD-WAERS.
GWA_JKTD-ZZFFS = LWA_HEAD-ZLSCH.
GWA_JKTD-ZJGFS = LWA_HEAD-INCO1.
GWA_JKTD-ZHWMC = LWA_HEAD-SGTXT.
GWA_JKTD-ZZBJ = LWA_HEAD-QANETWR.
GWA_JKTD-FREIGHT = LWA_HEAD-FREIGHT.
GWA_JKTD-ZZBJ = LWA_HEAD-QANETWR.
SELECT SINGLE KTEXT FROM TCURT
INTO GWA_JKTD-WAERK_TXT
WHERE SPRAS = SY-LANGU
AND WAERS = GWA_JKTD-WAERK.

READ TABLE GT_ITEM INTO LWA_ITEM WITH KEY VBELN = LWA_HEAD-VBELN.
IF SY-SUBRC = 0.
GWA_JKTD-WERKS_EKPO = LWA_ITEM-WERKS1.
GWA_JKTD-ZTAX = LWA_ITEM-ZTAX.
ENDIF.

IF LWA_HEAD-NO_CUST = 'Z1'.
GWA_JKTD-ZBAOGUAN = SPACE.
ELSEIF LWA_HEAD-NO_CUST = 'Z3'.
GWA_JKTD-ZBAOGUAN = 'X'.
ENDIF.

* LV_ID = '0102'.
* LV_TDNAME = GWA_JKTD-VBELN.
* LV_OBJECT = 'VBBK'.
* CLEAR LT_LINES.
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
* ID = LV_ID
* LANGUAGE = SY-LANGU
* NAME = LV_TDNAME
* OBJECT = LV_OBJECT
* TABLES
* LINES = LT_LINES
* EXCEPTIONS
* ID = 1
* LANGUAGE = 2
* NAME = 3
* NOT_FOUND = 4
* OBJECT = 5
* REFERENCE_CHECK = 6
* WRONG_ACCESS_TO_ARCHIVE = 7
* OTHERS = 8.
* IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ELSE.
* LOOP AT LT_LINES INTO LWA_LINES.
* CONCATENATE GWA_JKTD-MEMO LWA_LINES-TDLINE INTO GWA_JKTD-MEMO.
* ENDLOOP.
* ENDIF.

LOOP AT GT_ITEM_ALL INTO LWA_ITEM WHERE VBELN = LWA_HEAD-VBELN.
MOVE-CORRESPONDING LWA_ITEM TO LWA_TDMX.
LWA_TDMX-ZLFIMG = LWA_ITEM-LFIMG.
LWA_TDMX-ZLJBG = LWA_ITEM-PART_CUST.
LWA_TDMX-MEINS = LWA_ITEM-VRKME.
LWA_TDMX-ZFYDJ = LWA_ITEM-ZJE / LWA_ITEM-LFIMG.
CLEAR LWA_EKPO.
SELECT SINGLE NETWR MENGE FROM EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
INTO CORRESPONDING FIELDS OF LWA_EKPO
WHERE EBELN = LWA_ITEM-VGBEL
AND EBELP = LWA_ITEM-VGPOS.
LWA_TDMX-ZPRICE = LWA_EKPO-NETWR * ( 1 + LWA_ITEM-ZTAX / 100 ) / LWA_EKPO-MENGE.

LV_ID = '0002'.
LV_TDNAME = LWA_ITEM-VBELN && LWA_ITEM-POSNR.
LV_OBJECT = 'VBBP'.
CLEAR: LWA_TDMX-MEMO,LT_LINES.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = LV_ID
LANGUAGE = SY-LANGU
NAME = LV_TDNAME
OBJECT = LV_OBJECT
TABLES
LINES = LT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LOOP AT LT_LINES INTO LWA_LINES.
CONCATENATE LWA_TDMX-MEMO LWA_LINES-TDLINE INTO LWA_TDMX-MEMO.
ENDLOOP.
ENDIF.

SELECT SINGLE LANDX FROM T005T
INTO LWA_TDMX-COUNTRY_TXT
WHERE SPRAS = SY-LANGU
AND LAND1 = LWA_TDMX-COUNTRY.

SELECT SINGLE LGOBE FROM T001L
INTO LWA_TDMX-LGORT1_TXT
WHERE WERKS = '1000'
AND LGORT = LWA_TDMX-LGORT1.

LWA_TDMX-EBELN = LWA_ITEM-VGBEL.
LWA_TDMX-EBELP = LWA_ITEM-VGPOS.
LWA_TDMX-PACK_CNT = LWA_ITEM-PACK_CNT.
APPEND LWA_TDMX TO GT_TDMX.
ENDLOOP.
GT_TDMX_COPY = GT_TDMX.
CALL SCREEN 9100.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CHANGE_IBD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_CHANGE_IBD .
DATA : BEGIN OF LT_MSG_TAB OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA : END OF LT_MSG_TAB.
DATA LWA_OPT TYPE CTU_PARAMS.
DATA LWA_TDMX TYPE TY_TDMX.
DATA LWA_TDMX_COPY TYPE TY_TDMX.
DATA LWA_TDMX_DEL TYPE TY_TDMX.
DATA LV_STR_LGORT TYPE CHAR50.
DATA LV_STR_POSNR TYPE CHAR50.
DATA LV_STR_LFIMG TYPE CHAR50.
DATA LV_STR_CHARG TYPE CHAR50. "add cjj 20190606
DATA LV_STR_ZSGXH TYPE CHAR50. "add cjj 20191209
DATA LV_N2 TYPE NUMC2 VALUE '01'.
DATA LV_MSG TYPE STRING.
DATA LWA_HEADER TYPE THEAD.
DATA LT_LINES TYPE STANDARD TABLE OF TLINE .
DATA LWA_LINES TYPE TLINE.
DATA LV_STR_SL TYPE CHAR20.
DATA LV_STR_JE TYPE CHAR20.
DATA LV_STR_ZBJ TYPE CHAR20.
DATA LV_PACK_DATE TYPE CHAR10.
DATA LV_LDDAT TYPE CHAR10.
DATA LV_LFDAT TYPE CHAR10.
DATA LV_DUE_ARRIVE_DATE TYPE CHAR10.
DATA LV_BTGEW TYPE CHAR20.
DATA LV_NTGEW TYPE CHAR20.
DATA LV_TEXT_QUESTION TYPE CHAR100.
DATA LV_ANSWER TYPE CHAR01.
DATA LV_TITLE TYPE CHAR50.
DATA : LWA_IS_ROW_ID TYPE LVC_S_ROW,
LWA_IS_COLUMN_ID TYPE LVC_S_COL,
LWA_IS_ROW_NO TYPE LVC_S_ROID.
DATA LV_WBSTA TYPE LIPS-WBSTA.
DATA LV_AMOUNT TYPE LIPS-ZAMOUNT.
DATA LV_WAERK TYPE LIKP-WAERK.
DATA LV_NO_CUST TYPE CHAR02.


* IF GWA_JKTD-LFDAT IS INITIAL.
* SET CURSOR FIELD 'GWA_JKTD-LFDAT'.
* MESSAGE '请输入预计到货日期' TYPE 'E'.
* ENDIF.

IF GT_TDMX IS INITIAL.
MESSAGE '合同明细为空,不能保存' TYPE 'E'.
ENDIF.

READ TABLE GT_TDMX TRANSPORTING NO FIELDS WITH KEY ZLFIMG = 0.
IF SY-SUBRC = 0.
LWA_IS_ROW_ID = SY-TABIX.
LWA_IS_COLUMN_ID = 'ZLFIMG'.
LWA_IS_ROW_NO-ROW_ID = SY-TABIX.
CALL METHOD GCL_ALV_GRID3->SET_CURRENT_CELL_VIA_ID
EXPORTING
IS_ROW_ID = LWA_IS_ROW_ID " Row No
IS_COLUMN_ID = LWA_IS_COLUMN_ID " Column No
IS_ROW_NO = LWA_IS_ROW_NO. " Row No.

MESSAGE '交货数量必须大于0' TYPE 'E'.
ENDIF.

READ TABLE GT_TDMX TRANSPORTING NO FIELDS WITH KEY COUNTRY = SPACE.
IF SY-SUBRC = 0.
MESSAGE '原产国必填' TYPE 'E'.
ENDIF.

LOOP AT GT_TDMX INTO LWA_TDMX.
SELECT COUNT(*) FROM ZMMT0070 WHERE LAND1 = LWA_TDMX-COUNTRY.
IF SY-SUBRC <> 0.
MESSAGE '原产国报关对应维护表ZMMT0070未维护' TYPE 'E'.
ENDIF.
ENDLOOP.

"有过拆分的项目金额不能修改
LOOP AT GT_TDMX INTO LWA_TDMX.
CLEAR LWA_TDMX_COPY.
READ TABLE GT_TDMX_COPY INTO LWA_TDMX_COPY WITH KEY VBELN = LWA_TDMX-VBELN
POSNR = LWA_TDMX-POSNR.
IF SY-SUBRC = 0 AND LWA_TDMX-PACK_CNT <> 0.
IF LWA_TDMX-ZJE <> LWA_TDMX_COPY-ZJE.
MESSAGE '有过拆分的项目金额不能修改' TYPE 'E'.
ENDIF.
IF LWA_TDMX-ZLJBG <> LWA_TDMX_COPY-ZLJBG.
MESSAGE '有过拆分的零件报关不能修改' TYPE 'E'.
ENDIF.
"*****add start 20190419
IF LWA_TDMX-ZJEBLD <> LWA_TDMX_COPY-ZJEBLD.
MESSAGE '有过拆分的金额不联动不能修改' TYPE 'E'.
ENDIF.
"*****add end 20190419
ENDIF.
ENDLOOP.

CLEAR LV_ANSWER.
LV_TEXT_QUESTION = '修改内向交货单,是否确定?'.
LV_TITLE = '修改内向交货单'.
PERFORM FRM_POP_UP USING LV_TITLE LV_TEXT_QUESTION
CHANGING LV_ANSWER.
CHECK LV_ANSWER = '1'.

LWA_OPT-DISMODE = 'N'.
LWA_OPT-UPDMODE = 'S'.
* LWA_OPT-NOBINPT = 'X'.
LWA_OPT-DEFSIZE = 'X'.
REFRESH: GT_BDCDATA,LT_MSG_TAB.

PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '4104' 'X',
'BDC_OKCODE' '=ENT2' '',
'LIKP-VBELN' GWA_JKTD-VBELN ''.

"先删除行
LOOP AT GT_TDMX_DEL INTO LWA_TDMX_DEL.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '1000' 'X',
'BDC_OKCODE' '=POPO_T' ''.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '0111' 'X',
'BDC_OKCODE' '=WEIT' '',
'RV50A-POSNR' LWA_TDMX_DEL-POSNR ''.
LV_STR_POSNR = 'RV50A-LIPS_SELKZ(' && LV_N2 && ')'.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '1000' 'X',
'BDC_OKCODE' '=POLO_T' '',
LV_STR_POSNR 'X' ''.
ENDLOOP.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '1000' 'X', "add cjj 20191210
'BDC_OKCODE' '=T1' ''." add cjj 20191210
LOOP AT GT_TDMX INTO LWA_TDMX.
* 电缆拆分时候取批次号. add cjj 20190606 start
IF LWA_TDMX-DLCF_FLG IS NOT INITIAL AND LWA_TDMX-CHARG IS INITIAL.
PERFORM GET_CHARG CHANGING LWA_TDMX-CHARG.
ENDIF."add cjj 20190606 end
* LV_N2 = LV_N2 + 1.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '1000' 'X',
'BDC_OKCODE' '=POPO_T' ''.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '0111' 'X',
'BDC_OKCODE' '=WEIT' '',
'RV50A-POSNR' LWA_TDMX-POSNR ''.

LV_STR_LGORT = 'LIPS-LGORT(' && LV_N2 && ')'.
LV_STR_LFIMG = 'LIPSD-G_LFIMG(' && LV_N2 && ')'.
LV_STR_CHARG = 'LIPS-CHARG(' && LV_N2 && ')'. "add cjj 20190606
LV_STR_ZSGXH = 'LIPS-ZSGXH(' && LV_N2 && ')'. "add cjj 20191209
CLEAR LV_STR_SL.
LV_STR_SL = LWA_TDMX-ZLFIMG.
CONDENSE LV_STR_SL.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '1000' 'X',
'BDC_OKCODE' '=IDET_T' ''.
CLEAR LV_WBSTA.
SELECT SINGLE WBSTA FROM LIPS INTO LV_WBSTA ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
WHERE VBELN = LWA_TDMX-VBELN
AND POSNR = LWA_TDMX-POSNR.
IF NOT ( LV_WBSTA = 'B' OR LV_WBSTA = 'C' ). "已收货的交货单,批次库存地点不能修改
PERFORM FRM_FILL_BDCDATA USING: LV_STR_LGORT GWA_JKTD-LGORT ''.
* 当选中“电缆拆分”保存, 执行VL32N BAPI 时,“批次”栏位 分配批次,逻辑与创建时批次分本相同。
* 当未选中“电缆拆分”保存, 执行VL32N BAPI 时,需清除“批次”数据。
IF LWA_TDMX-DLCF_FLG IS NOT INITIAL. "add cjj 20190606
PERFORM FRM_FILL_BDCDATA USING: LV_STR_CHARG LWA_TDMX-CHARG ''. "add cjj 20190606
ELSE. "add cjj 20190606
IF ( LWA_TDMX-ZZNAME1 CS '电缆' OR LWA_TDMX-ZZNAME1 CS '光缆' OR LWA_TDMX-ZZNAME1 CS '通讯线' ). "add cjj 20190903
PERFORM FRM_FILL_BDCDATA USING: LV_STR_CHARG '' ''. "add cjj 20190606
ELSE."add cjj 20190903
PERFORM FRM_FILL_BDCDATA USING: LV_STR_CHARG LWA_TDMX-CHARG ''. "add cjj 20190903
ENDIF."add cjj 20190903
ENDIF. "add cjj 20190606
ENDIF.
PERFORM FRM_FILL_BDCDATA USING: LV_STR_LFIMG LV_STR_SL ''.
PERFORM FRM_FILL_BDCDATA USING: LV_STR_ZSGXH LWA_TDMX-ZSGXH ''. "Add cjj 20191209
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '3000' 'X',
'BDC_OKCODE' '=T8' ''.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '3000' 'X',
'BDC_OKCODE' '=T4' ''.

CLEAR LV_AMOUNT.
* LV_AMOUNT = LWA_TDMX-ZJE.
WRITE LWA_TDMX-ZJE TO LV_AMOUNT CURRENCY GWA_JKTD-WAERK NO-GROUPING.
* WRITE lwa_tdmx-zje TO lv_amount NO-GROUPING CURRENCY gwa_jktd-waerk NO-GROUPING. add cjj 20190903
CONDENSE LV_AMOUNT.
LV_WAERK = GWA_JKTD-WAERK.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '3000' 'X',
'BDC_OKCODE' '=OVER_T' '',
'LIPS-PART_CUST' LWA_TDMX-ZLJBG '',
'LIPS-COUNTRY' LWA_TDMX-COUNTRY '',
'LIPS-ZCURRENCY' LV_WAERK '',
'LIPS-ZAMOUNT' LV_AMOUNT '',
'LIPS-ZJEBLD' LWA_TDMX-ZJEBLD '', "change 20190419 修改的时候金额不联动能修改
'LIPS-DLCF_FLG' LWA_TDMX-DLCF_FLG ''. "change 20190419 修改的时候金额不联动能修改

ENDLOOP.

"change head field
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '1000' 'X',
'BDC_OKCODE' '=HDET_T' ''.
CLEAR LV_STR_JE.
* LV_STR_JE = GWA_JKTD-FREIGHT.
WRITE GWA_JKTD-FREIGHT TO LV_STR_JE CURRENCY GWA_JKTD-WAERK NO-GROUPING.
* WRITE gwa_jktd-freight TO lv_str_je. "add 20190902
CONDENSE LV_STR_JE.

CLEAR LV_STR_ZBJ.
* LV_STR_ZBJ = GWA_JKTD-ZZBJ.
WRITE GWA_JKTD-ZZBJ TO LV_STR_ZBJ CURRENCY GWA_JKTD-WAERK NO-GROUPING.
CONDENSE LV_STR_ZBJ.

CALL FUNCTION 'CONVERSION_EXIT_GDATE_OUTPUT'
EXPORTING
INPUT = GWA_JKTD-PACK_DATE
IMPORTING
OUTPUT = LV_PACK_DATE.

CALL FUNCTION 'CONVERSION_EXIT_GDATE_OUTPUT'
EXPORTING
INPUT = GWA_JKTD-LDDAT
IMPORTING
OUTPUT = LV_LDDAT.
CALL FUNCTION 'CONVERSION_EXIT_GDATE_OUTPUT'
EXPORTING
INPUT = GWA_JKTD-DUE_ARRIVE_DATE
IMPORTING
OUTPUT = LV_DUE_ARRIVE_DATE.
IF GWA_JKTD-ZBAOGUAN IS NOT INITIAL.
LV_NO_CUST = 'Z3'.
ELSE.
LV_NO_CUST = 'Z1'.
ENDIF.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '2000' 'X',
'BDC_OKCODE' '=T2' '',
'LIKP-ZWERKS' GWA_JKTD-WERKS '',
'LIKP-WERKS1' GWA_JKTD-WERKS1 '',"转运基地
'LIKP-SGTXT' GWA_JKTD-ZHWMC '', "货物名称
'LIKP-TRADE_TYPE' GWA_JKTD-TRADE_TYPE '', "贸易类型
'LIKP-INV_NO' GWA_JKTD-INV_NO '', "发票号码
'LIKP-INV_NO' GWA_JKTD-INV_NO '', "发票号码
'LIKP-PACK_DATE' LV_PACK_DATE '', "提单日期
'LIKP-FREIGHT' LV_STR_JE '', "运费
'LIKP-ZCARGOVALUECURRENCY' GWA_JKTD-WAERK '', "货币
'LIKP-QANETWR' LV_STR_ZBJ '', "质保金
'G_CLIENT_BUY' GWA_JKTD-ZKEGONG '', "客供
'LIKP-NO_CUST' LV_NO_CUST '', "是否报关
'LIKP-DUE_ARRIVE_DATE' LV_DUE_ARRIVE_DATE ''. "预计到港日期
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '2000' 'X',
'BDC_OKCODE' '=T3' '',
'LIKP-ITM_EXPVZ' GWA_JKTD-ITM_EXPVZ '', "发运类型
'LIKP-ITM_KZGBE' GWA_JKTD-ITM_KZGBE ''. "起运港
CLEAR:LV_BTGEW,LV_NTGEW.
LV_BTGEW = GWA_JKTD-BTGEW.
LV_NTGEW = GWA_JKTD-NTGEW.
CONDENSE: LV_BTGEW,LV_NTGEW.
CALL FUNCTION 'CONVERSION_EXIT_GDATE_OUTPUT'
EXPORTING
INPUT = GWA_JKTD-LFDAT
IMPORTING
OUTPUT = LV_LFDAT.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '2000' 'X',
'BDC_OKCODE' '=T4' '',
'LIKP-TDDAT' LV_LDDAT '', "装船日期
'RV50A-LFDAT_LA' LV_LFDAT '', "预计到货
'LIKP-BOLNR' GWA_JKTD-BOLNR '', "提单号
'LIKP-BTGEW' LV_BTGEW '', "毛重
'LIKP-NTGEW' LV_NTGEW '', "净重
'LIKP-GEWEI' GWA_JKTD-GEWEI ''. "重量单位
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '2000' 'X',
'BDC_OKCODE' '=SICH_T' '',
'LIKP-ANZPK' GWA_JKTD-ANZPK ''. "件数

CALL TRANSACTION 'VL32N' USING GT_BDCDATA[]
OPTIONS FROM LWA_OPT
MESSAGES INTO LT_MSG_TAB.
IF SY-MSGID = 'VL' AND SY-MSGNO = '311'.
COMMIT WORK AND WAIT.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2
SY-MSGV3 SY-MSGV4
INTO LWA_TDMX-ZMSG.
MODIFY GT_TDMX FROM LWA_TDMX TRANSPORTING ZMSG WHERE VBELN <> SPACE.
CALL METHOD GCL_ALV_GRID3->REFRESH_TABLE_DISPLAY.
MESSAGE LWA_TDMX-ZMSG TYPE 'S'.

"save head long text
CLEAR LWA_HEADER.
LWA_HEADER-TDOBJECT = 'VBBK' .
LWA_HEADER-TDID = '0102'.
LWA_HEADER-TDSPRAS = SY-LANGU.
LWA_HEADER-TDNAME = GWA_JKTD-VBELN.

CLEAR:LT_LINES,LWA_LINES.
LWA_LINES-TDFORMAT = '*' .
LWA_LINES-TDLINE = GWA_JKTD-MEMO.
APPEND LWA_LINES TO LT_LINES.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = LWA_HEADER
SAVEMODE_DIRECT = 'X'
TABLES
LINES = LT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
"save item long text
LOOP AT GT_TDMX INTO LWA_TDMX.
CLEAR LWA_HEADER.
LWA_HEADER-TDOBJECT = 'VBBP' .
LWA_HEADER-TDID = '0002'.
LWA_HEADER-TDSPRAS = SY-LANGU.
LWA_HEADER-TDNAME = GWA_JKTD-VBELN && LWA_TDMX-POSNR.

CLEAR:LT_LINES,LWA_LINES.
LWA_LINES-TDFORMAT = '*' .
LWA_LINES-TDLINE = LWA_TDMX-MEMO.
APPEND LWA_LINES TO LT_LINES.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = LWA_HEADER
SAVEMODE_DIRECT = 'X'
TABLES
LINES = LT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
"更新采购订单对应的表字段EKKO-ZLSCH
UPDATE EKKO SET ZLSCH = GWA_JKTD-ZZFFS
WHERE EBELN = LWA_TDMX-EBELN.
COMMIT WORK AND WAIT.
ELSE.
ROLLBACK WORK.
CLEAR LWA_TDMX-ZMSG.
LOOP AT LT_MSG_TAB.
MESSAGE ID LT_MSG_TAB-MSGID TYPE LT_MSG_TAB-MSGTYP NUMBER LT_MSG_TAB-MSGNR
INTO LV_MSG
WITH LT_MSG_TAB-MSGV1 LT_MSG_TAB-MSGV2
LT_MSG_TAB-MSGV3 LT_MSG_TAB-MSGV4.
CONCATENATE LWA_TDMX-ZMSG LV_MSG INTO LWA_TDMX-ZMSG
SEPARATED BY '|'.
ENDLOOP.
MODIFY GT_TDMX FROM LWA_TDMX TRANSPORTING ZMSG WHERE VBELN <> SPACE.

DATA LWA_LAYOUT TYPE LVC_S_LAYO.
CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
CALL METHOD GCL_ALV_GRID3->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = LWA_LAYOUT.

CALL METHOD GCL_ALV_GRID3->REFRESH_TABLE_DISPLAY.

LWA_IS_ROW_ID = 1.
LWA_IS_COLUMN_ID = 'ZMSG'.
LWA_IS_ROW_NO-ROW_ID = 1.

CALL METHOD GCL_ALV_GRID3->SET_CURRENT_CELL_VIA_ID
EXPORTING
IS_ROW_ID = LWA_IS_ROW_ID " Row No
IS_COLUMN_ID = LWA_IS_COLUMN_ID " Column No
IS_ROW_NO = LWA_IS_ROW_NO. " Row No.

MESSAGE '内向交货单修改失败,请查看报错消息' TYPE 'E'.

ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_FILL_BDCDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_FILL_BDCDATA USING U_PAR1 U_PAR2 U_PAR3.
CLEAR GT_BDCDATA.
IF U_PAR3 IS INITIAL.
GT_BDCDATA-FNAM = U_PAR1.
GT_BDCDATA-FVAL = U_PAR2.
ELSE.
GT_BDCDATA-PROGRAM = U_PAR1.
GT_BDCDATA-DYNPRO = U_PAR2.
GT_BDCDATA-DYNBEGIN = U_PAR3.
ENDIF.
APPEND GT_BDCDATA .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_SHANCHU
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_SHANCHU .
DATA : BEGIN OF LT_MSG_TAB OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA : END OF LT_MSG_TAB.
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LT_HEAD_SEL TYPE STANDARD TABLE OF TY_HEAD.
DATA LV_CNT TYPE I.
DATA LV_TEXT_QUESTION TYPE CHAR100.
DATA LV_ANSWER TYPE CHAR01.
DATA LV_TITLE TYPE CHAR50.
DATA LWA_OPT TYPE CTU_PARAMS.
DATA LV_MSG TYPE CHAR200.
DATA LV_MSG_OUT TYPE CHAR200.
DATA LV_VBELN TYPE LIKP-VBELN.
DATA LV_LOCK_FLG.

CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
READ TABLE GT_HEAD INTO LWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND LWA_HEAD TO LT_HEAD_SEL.
ENDIF.
ENDLOOP.
DESCRIBE TABLE LT_HEAD_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
MESSAGE '请选择一条数据进行修改' TYPE 'E'.
ENDIF.

IF LWA_HEAD-ZSTATUS = 'Z1' AND ( LWA_HEAD-ZCONF = 'Z1' OR LWA_HEAD-ZCONF = 'Z3' )
AND LWA_HEAD-ZDELIVERYPLANNO IS INITIAL.
CLEAR LV_ANSWER.
LV_TEXT_QUESTION = '你将删除选中的1张进口提单,是否确定?'.
LV_TITLE = '进口提单管理'.
PERFORM FRM_POP_UP USING LV_TITLE LV_TEXT_QUESTION
CHANGING LV_ANSWER.
IF LV_ANSWER = '1'.

PERFORM FRM_LOCK_DATA USING LWA_HEAD-VBELN
CHANGING LV_LOCK_FLG.
CHECK LV_LOCK_FLG IS INITIAL.
IF LWA_HEAD-VBELN(1) = 'R'."add cjj 20190529
PERFORM DELETE_PROCESS USING LWA_HEAD-VBELN.
PERFORM FRM_UNLOCK_DATA USING LWA_HEAD-VBELN.
ELSE.
LWA_OPT-DISMODE = 'N'.
LWA_OPT-UPDMODE = 'S'.
LWA_OPT-DEFSIZE = 'X'.
REFRESH: GT_BDCDATA,LT_MSG_TAB.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '4104' 'X',
'BDC_OKCODE' '=ENT2' '',
'LIKP-VBELN' LWA_HEAD-VBELN ''.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '1000' 'X',
'BDC_OKCODE' '/ELOES_T' ''.
CALL TRANSACTION 'VL32N' USING GT_BDCDATA[]
OPTIONS FROM LWA_OPT
MESSAGES INTO LT_MSG_TAB.
CLEAR : LV_MSG_OUT,LV_MSG.
LOOP AT LT_MSG_TAB WHERE MSGTYP = 'E' OR MSGTYP = 'A'.
MESSAGE ID LT_MSG_TAB-MSGID TYPE LT_MSG_TAB-MSGTYP NUMBER LT_MSG_TAB-MSGNR
INTO LV_MSG
WITH LT_MSG_TAB-MSGV1 LT_MSG_TAB-MSGV2
LT_MSG_TAB-MSGV3 LT_MSG_TAB-MSGV4.
CONCATENATE LV_MSG_OUT LV_MSG INTO LV_MSG_OUT
SEPARATED BY '|'.
ENDLOOP.
IF SY-SUBRC = 0.
ROLLBACK WORK.
PERFORM FRM_UNLOCK_DATA USING LWA_HEAD-VBELN.
MESSAGE LV_MSG_OUT TYPE 'E'.
ELSE.
COMMIT WORK AND WAIT .
PERFORM FRM_UNLOCK_DATA USING LWA_HEAD-VBELN.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = LWA_HEAD-VBELN
IMPORTING
OUTPUT = LV_VBELN.
LV_MSG_OUT = '进口提单:' && LV_VBELN && '已删除'.
DELETE GT_HEAD WHERE VBELN = LWA_HEAD-VBELN.
DELETE GT_ITEM WHERE VBELN = LWA_HEAD-VBELN.
DELETE GT_ITEM_ALL WHERE VBELN = LWA_HEAD-VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
MESSAGE LV_MSG_OUT TYPE 'S'.
ENDIF.
ENDIF.
ENDIF.
ELSE.
MESSAGE '只允许对状态为 新建 且确认状态为 非确认/退回 及未匹配合同批次的数据进行删除' TYPE 'E'.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_TUIHUI
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_TUIHUI .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LT_HEAD_SEL TYPE STANDARD TABLE OF TY_HEAD.
DATA LV_CNT TYPE I.
DATA LV_TEXT_QUESTION TYPE CHAR100.
DATA LV_ANSWER TYPE CHAR01.
DATA LV_TITLE TYPE CHAR50.
DATA LV_MSG TYPE CHAR200.
DATA LV_VBELN TYPE CHAR15. "LIKP-VBELN. rep cjj
DATA LV_FLG.
DATA LV_LOCK_FLG.

CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
READ TABLE GT_HEAD INTO LWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND LWA_HEAD TO LT_HEAD_SEL.
ENDIF.
ENDLOOP.
DESCRIBE TABLE LT_HEAD_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
MESSAGE '请选择一条数据进行退回' TYPE 'E'.
ENDIF.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = LWA_HEAD-VBELN
IMPORTING
OUTPUT = LV_VBELN.

CLEAR LV_FLG.
IF NOT ( LWA_HEAD-ZCONF = 'Z2' AND LWA_HEAD-ZSTATUS = 'Z1' ).
CLEAR LV_MSG.
LV_MSG = '编号为' && LV_VBELN && '的发运清单不是新建状态!'.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
TITEL = '进口提单管理'
TEXTLINE1 = LV_MSG.
LV_FLG = 'X'.
ENDIF.
CHECK LV_FLG IS INITIAL.
IF LWA_HEAD-ZCONF = 'Z2' AND LWA_HEAD-ZSTATUS = 'Z1'.
CLEAR LV_ANSWER.
LV_TEXT_QUESTION = '你将选中的1张进口提单退回修改,是否确定?'.
LV_TITLE = '进口提单管理'.
PERFORM FRM_POP_UP USING LV_TITLE LV_TEXT_QUESTION
CHANGING LV_ANSWER.
IF LV_ANSWER = '1'.
PERFORM FRM_LOCK_DATA USING LWA_HEAD-VBELN CHANGING LV_LOCK_FLG.
CHECK LV_LOCK_FLG IS INITIAL.
IF LWA_HEAD-VBELN(1) = 'R'.
PERFORM FRM_RETURN_TUIHUI USING LWA_HEAD-VBELN.
ELSE.
PERFORM FRM_QUEREN_TUIHUI USING 'Z3' LWA_HEAD-VBELN.
ENDIF.

ENDIF.

ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_QUEREN
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_QUEREN .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LT_HEAD_SEL TYPE STANDARD TABLE OF TY_HEAD.
DATA LV_CNT TYPE I.
DATA LV_TEXT_QUESTION TYPE CHAR100.
DATA LV_ANSWER TYPE CHAR01.
DATA LV_TITLE TYPE CHAR50.
DATA LV_VBELN TYPE CHAR15."LIKP-VBELN. rep cjj 20190529
DATA LT_STR TYPE STANDARD TABLE OF STRING.
DATA LWA_STR TYPE STRING.
DATA LWA_ITEM TYPE TY_ITEM.
DATA LV_MSG TYPE CHAR200.
DATA LV_FLG.
DATA LV_LOCK_FLG.
DATA LWA_FJXS TYPE TY_FJXS.
DATA LV_ERR.
DATA: LV_SUM_ZAMOUNT TYPE LIPS-ZAMOUNT,
LV_CURRENCY LIKE TCURR-TCURR, "add cjj 20190813
LV_FACTOR TYPE ISOC_FACTOR. "add cjj 20190813
CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
READ TABLE GT_HEAD INTO LWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND LWA_HEAD TO LT_HEAD_SEL.
ENDIF.
ENDLOOP.
DESCRIBE TABLE LT_HEAD_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
MESSAGE '请选择一条数据进行确认' TYPE 'E'.
ENDIF.

IF LWA_HEAD-ZCONF = 'Z2'.
MESSAGE '选择的数据是已确认状态' TYPE 'E'.
ENDIF.
* add cjj 20190717 start
DATA: LV_NEW_USE TYPE C.
SELECT SINGLE COUNT(*) FROM ZMMT0005_1
WHERE ZUSE_NEW_ACBK = ABAP_TRUE
AND ZACTIVE = ABAP_TRUE.
IF SY-SUBRC = 0.
LV_NEW_USE = ABAP_TRUE.
ENDIF.
* add cjj 20190717 end
"免税提单:只有已备案才能确认(包括散件报关明细)
IF LWA_HEAD-NO_CUST <> 'Z1'. "是否报关:不报,不做检查
CLEAR LV_ERR.
* add cjj 20190717 start
IF LV_NEW_USE = ABAP_TRUE.
LOOP AT GT_ITEM INTO LWA_ITEM WHERE ( ( IL_STATUS_N <> '6' AND PART_CUST = '' )
OR ( PART_CUST = 'X' AND IL_STATUS_LJBG_N = '未备案' ) )
AND ZTAXTYPE = 'Z1' AND MATNR IS NOT INITIAL.
EXIT.
ENDLOOP.
ELSE.
LOOP AT GT_ITEM INTO LWA_ITEM WHERE ( ( ( IL_STATUS <> '6' AND PART_CUST = '' )
AND ( IL_STATUS_N <> '6' AND PART_CUST = '' ) )
OR ( ( PART_CUST = 'X' AND IL_STATUS_LJBG = '未备案' )
AND ( PART_CUST = 'X' AND IL_STATUS_LJBG_N = '未备案') ) )
AND ZTAXTYPE = 'Z1' AND MATNR IS NOT INITIAL.
EXIT.
ENDLOOP.
ENDIF.
* add cjj 20190717 start
* LOOP AT GT_ITEM INTO LWA_ITEM WHERE ( ( IL_STATUS <> '6' AND PART_CUST = '' ) del cjj 20190717
* OR ( PART_CUST = 'X' AND IL_STATUS_LJBG = '未备案' ) ) del cjj 20190717
* AND ZTAXTYPE = 'Z1' AND MATNR IS NOT INITIAL. del cjj 20190717
* EXIT. del cjj 20190717
* ENDLOOP. del cjj 20190717
IF SY-SUBRC = 0.
SELECT COUNT(*) FROM ZMMT0181 WHERE BNAME = SY-UNAME AND TDLDTQ = 'X'.
IF SY-SUBRC <> 0.
MESSAGE '免税提单:只有已备案才能确认' TYPE 'I' DISPLAY LIKE 'E'.
LV_ERR = 'X'.
ENDIF.
ELSE.
* CLEAR LV_FLG.
* LOOP AT GT_ITEM INTO LWA_ITEM WHERE PART_CUST = 'X' AND ZTAXTYPE = 'Z1'.
* IF LV_FLG IS NOT INITIAL.
* EXIT.
* ENDIF.
* LOOP AT GT_FJXS_ALL INTO LWA_FJXS WHERE VBELN = LWA_ITEM-VBELN
* AND POSNR = LWA_ITEM-POSNR
* AND IL_STATUS <> '6'.
* LV_FLG = 'X'.
* EXIT.
* ENDLOOP.
* ENDLOOP.
* IF LV_FLG IS NOT INITIAL.
* MESSAGE '免税提单:只有已备案才能确认' TYPE 'I' DISPLAY LIKE 'E'.
* LV_ERR = 'X'.
* ENDIF.
ENDIF.
ENDIF.

">>>>>>>>>>add start 20190405 提单确认时,对于超合同的需要具有“提单特权”的领导进行审批
DATA LV_KNUMV TYPE EKKO-KNUMV.
DATA LV_KBETR TYPE PRCD_ELEMENTS-KWERT.
DATA LT_PRCD_ELEMENTS TYPE STANDARD TABLE OF PRCD_ELEMENTS.
DATA LWA_PRCD_ELEMENTS TYPE PRCD_ELEMENTS.
DATA LV_NETWR TYPE EKPO-NETWR.
DATA LV_SUM_ZAMOUNT2 TYPE EKPO-NETWR.
DATA LV_SUM_ZAMOUNT3 TYPE EKPO-NETWR.
DATA LT_TDMX TYPE STANDARD TABLE OF TY_TDMX."add cjj 20190911
TYPES: BEGIN OF TY_ZAMOUNT,
VBELN TYPE LIPS-VBELN,
ZAMOUNT TYPE LIPS-ZAMOUNT,
END OF TY_ZAMOUNT.
DATA: LV_EBELP TYPE EKPO-EBELP.
TYPES: BEGIN OF TY_EKPO,"add cjj 20191113 start
EBELP TYPE EKPO-EBELP,
UEBTO TYPE EKPO-UEBTO,
END OF TY_EKPO.
TYPES: BEGIN OF TY_PRCD_ELEMENTS,
KPOSN TYPE PRCD_ELEMENTS-KPOSN,
KWERT TYPE PRCD_ELEMENTS-KWERT,
END OF TY_PRCD_ELEMENTS.
DATA: LT_EKPO TYPE STANDARD TABLE OF TY_EKPO,
LS_EKPO TYPE TY_EKPO,
LT_KWERT TYPE STANDARD TABLE OF TY_PRCD_ELEMENTS,
LS_KWERT TYPE TY_PRCD_ELEMENTS. "add cjj 20191113 end
DATA LT_ZAMOUNT TYPE STANDARD TABLE OF TY_ZAMOUNT.
DATA LWA_ZAMOUNT TYPE TY_ZAMOUNT.
DATA LV_FREIGHT TYPE LIKP-FREIGHT.

"如果金额超过了,合同+采购订单在表ZMMT156里存在,状态ZZT为空则允许确认,状态为X则需要有提单特权才能确认
"取采购订单含税总额 + 运费
CLEAR:LV_KNUMV,LV_KBETR, LWA_ITEM,LV_SUM_ZAMOUNT3,LV_NETWR,LV_SUM_ZAMOUNT2,LT_ZAMOUNT,LV_SUM_ZAMOUNT.
READ TABLE GT_ITEM INTO LWA_ITEM INDEX 1.
* add cjj 20190911 start
LT_TDMX[] = GT_TDMX[].
SORT LT_TDMX BY EBELN.
DELETE ADJACENT DUPLICATES FROM LT_TDMX COMPARING EBELN.
CLEAR LV_SUM_ZAMOUNT2.
LOOP AT LT_TDMX INTO LWA_TDMX.
CLEAR: LV_KNUMV,LV_NETWR,LV_KBETR.
* add cjj 20190911 end
SELECT SINGLE KNUMV FROM EKKO INTO LV_KNUMV WHERE EBELN = LWA_ITEM-VGBEL.
"取采购订单运费
SELECT SUM( KWERT ) FROM PRCD_ELEMENTS INTO LV_KBETR
WHERE KNUMV = LV_KNUMV AND KPOSN <> 000000 AND KSCHL = 'FRB1'
AND KINAK <> 'W'. "Add cjj 20190919
"取菜单订单含税总金额
* rep by cjj 20191113 start
* SELECT SUM( KWERT ) FROM PRCD_ELEMENTS INTO LV_NETWR
* WHERE KNUMV = LV_KNUMV AND KPOSN <> 000000 AND ( KSCHL = 'PBXX' OR KSCHL = 'PB00' )
* and KINAK <> 'W'. "Add cjj 20190919
CLEAR: LT_EKPO,LT_KWERT.
SELECT EBELP UEBTO FROM EKPO INTO TABLE LT_EKPO WHERE EBELN = LWA_ITEM-VGBEL.
SELECT KPOSN KWERT FROM PRCD_ELEMENTS INTO TABLE LT_KWERT
WHERE KNUMV = LV_KNUMV AND KPOSN <> 000000 AND ( KSCHL = 'PBXX' OR KSCHL = 'PB00' )
AND KINAK <> 'W'.
LOOP AT LT_KWERT INTO LS_KWERT.
LV_EBELP = LS_KWERT-KPOSN.
READ TABLE LT_EKPO INTO LS_EKPO WITH KEY EBELP = LV_EBELP.
IF SY-SUBRC = 0.
LV_NETWR = LV_NETWR + LS_KWERT-KWERT * ( 1 + LS_EKPO-UEBTO / 100 ).
ENDIF.
ENDLOOP.
* rep by cjj 20191113 end
* add cjj 20190903 start
* add cjj 20190813 start
CLEAR LV_FACTOR.
LV_CURRENCY = LWA_HEAD-WAERS.
CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
EXPORTING
CURRENCY = LV_CURRENCY
IMPORTING
FACTOR = LV_FACTOR
EXCEPTIONS
TOO_MANY_DECIMALS = 1
OTHERS = 2.
*add cjj 20190813 end
LV_NETWR = LV_NETWR * LV_FACTOR. "add cjj 20190903
LV_KBETR = LV_KBETR * LV_FACTOR. "add cjj 20190903
LV_SUM_ZAMOUNT2 = LV_SUM_ZAMOUNT2 + LV_NETWR + LV_KBETR."add cjj 20190911
ENDLOOP. "add cjj 20190911
LWA_HEAD-ZTOL = LWA_HEAD-ZTOL * LV_FACTOR. "add cjj 20190903
* add cjj 20190903 end
"取已建过交货单的金额
SELECT LIPS~VBELN ZAMOUNT INTO CORRESPONDING FIELDS OF TABLE LT_ZAMOUNT FROM LIPS ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
INNER JOIN LIKP ON LIPS~VBELN = LIKP~VBELN
WHERE VGBEL = LWA_ITEM-VGBEL
AND LIKP~CLIENT_BUY = SPACE. "客供提单金额仅用于报关,不算合同使用金额
IF SY-SUBRC = 0.
LOOP AT LT_ZAMOUNT INTO LWA_ZAMOUNT.
IF LWA_ZAMOUNT-VBELN <> LWA_ITEM-VBELN.
LV_SUM_ZAMOUNT = LV_SUM_ZAMOUNT + LWA_ZAMOUNT-ZAMOUNT.
ENDIF.
ENDLOOP.
ENDIF.

LV_SUM_ZAMOUNT3 = LV_SUM_ZAMOUNT.

"取已建过交货单的运费
SORT LT_ZAMOUNT BY VBELN.
DELETE ADJACENT DUPLICATES FROM LT_ZAMOUNT COMPARING VBELN.
LOOP AT LT_ZAMOUNT INTO LWA_ZAMOUNT.
IF LWA_ZAMOUNT-VBELN <> LWA_ITEM-VBELN.
CLEAR: LV_FREIGHT,
LV_CURRENCY.
SELECT SINGLE FREIGHT
ZCARGOVALUECURRENCY "add cjj 20190903
FROM LIKP INTO (LV_FREIGHT, LV_CURRENCY)
WHERE VBELN = LWA_ZAMOUNT-VBELN.
* add cjj 20190813 start
CLEAR LV_FACTOR.
CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
EXPORTING
CURRENCY = LV_CURRENCY
IMPORTING
FACTOR = LV_FACTOR
EXCEPTIONS
TOO_MANY_DECIMALS = 1
OTHERS = 2.
* add cjj 20190813 end
LV_SUM_ZAMOUNT3 = LV_SUM_ZAMOUNT3 + LV_FREIGHT
* LV_FACTOR."add cjj 20190903
ENDIF.
ENDLOOP.
LV_SUM_ZAMOUNT2 = LV_SUM_ZAMOUNT2 - LV_SUM_ZAMOUNT3. "含税金额 + 运费 - 已用过的金额(含运费) add cjj 20190911
* LV_SUM_ZAMOUNT2 = LV_NETWR + LV_KBETR - LV_SUM_ZAMOUNT3. "含税金额 + 运费 - 已用过的金额(含运费) del cjj 20190911
* 退货不用check add cjj 20190531
IF LWA_HEAD-VBELN(1) <> 'R'. "add 20190531
"提单总金额 LWA_HEAD-ZTOL
IF LWA_HEAD-ZTOL > LV_SUM_ZAMOUNT2 AND LV_NETWR <> 0 AND LWA_HEAD-ZKEGONG IS INITIAL. "客供提单金额仅用于报关,不算合同使用金额
"如果ZMMT156表里合同+采购订单有维护
SELECT COUNT(*) FROM ZMMT156 WHERE ZHTH = LWA_HEAD-ZHTH AND EBELN = LWA_ITEM-VGBEL AND ZZT = SPACE.
IF SY-SUBRC <> 0.
SELECT COUNT(*) FROM ZMMT156 WHERE ZHTH = LWA_HEAD-ZHTH AND EBELN = LWA_ITEM-VGBEL AND ZZT = 'X'.
IF SY-SUBRC = 0.
"如果有提单特权,则允许确认
SELECT COUNT(*) FROM ZMMT0181 WHERE BNAME = SY-UNAME AND TDLDTQ = 'X'.
IF SY-SUBRC <> 0.
LV_ERR = 'X'.
* LV_MSG = LWA_HEAD-ZTOL && '超出合同剩余金额(含运费):' && LV_SUM_ZAMOUNT2 && '|' "del cjj 20191113
LV_MSG = LWA_HEAD-ZTOL && '超出合同剩余含税金额容差上限(含运费):' && LV_SUM_ZAMOUNT2 && '|' "add cjj 20191113
&& '采购订单:' && LWA_ITEM-VGBEL.
MESSAGE LV_MSG TYPE 'E'.
ELSE.
* LV_MSG = LWA_HEAD-ZTOL && '超出合同剩余金额(含运费):' && LV_SUM_ZAMOUNT2 && '|' "del cjj 20191113
LV_MSG = LWA_HEAD-ZTOL && '超出合同剩余含税金额容差上限(含运费):' && LV_SUM_ZAMOUNT2 && '|' "add cjj 20191113
&& '采购订单:' && LWA_ITEM-VGBEL.
MESSAGE LV_MSG TYPE 'W'.
ENDIF.
ELSE.
LV_ERR = 'X'.
* LV_MSG = LWA_HEAD-ZTOL && '超出合同剩余金额(含运费):' && LV_SUM_ZAMOUNT2 && '|' "del cjj 20191113
LV_MSG = LWA_HEAD-ZTOL && '超出合同剩余含税金额容差上限(含运费):' && LV_SUM_ZAMOUNT2 && '|' "add cjj 20191113
&& '采购订单:' && LWA_ITEM-VGBEL.
MESSAGE LV_MSG TYPE 'E'.
ENDIF.
ELSE.
* LV_MSG = LWA_HEAD-ZTOL && '超出合同剩余金额(含运费):' && LV_SUM_ZAMOUNT2 && '|' "del cjj 20191113
LV_MSG = LWA_HEAD-ZTOL && '超出合同剩余含税金额容差上限(含运费):' && LV_SUM_ZAMOUNT2 && '|' "add cjj 20191113
&& '采购订单:' && LWA_ITEM-VGBEL.
MESSAGE LV_MSG TYPE 'W'.
ENDIF.
ENDIF.
ENDIF."add 20190531
"<<<<<<<<<<add end 20190405 提单确认时,对于超合同的需要具有“提单特权”的领导进行审批

CHECK LV_ERR IS INITIAL.

READ TABLE GT_HEAD TRANSPORTING NO FIELDS WITH KEY VBELN = LWA_HEAD-VBELN.
GV_ROW = SY-TABIX.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = LWA_HEAD-VBELN
IMPORTING
OUTPUT = LV_VBELN.

* LWA_STR = '你将确认选中的进口提单[' && LV_VBELN && '],合同号为:'.
* APPEND LWA_STR TO LT_STR.
* LWA_STR = LWA_HEAD-ZHTH.
* APPEND LWA_STR TO LT_STR.
* LWA_STR = '1,合同总运费为:' && '合同总金额为:'.
* APPEND LWA_STR TO LT_STR.
* LWA_STR = '2,提单累计运费为:' && '提单累计总额为:'.
* APPEND LWA_STR TO LT_STR.
* LWA_STR = '3,本提单运费为:' && '提单总额为:'.
* APPEND LWA_STR TO LT_STR.
* LWA_STR = '是否确认?'.
* APPEND LWA_STR TO LT_STR.
*
* CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_TABLE'
* EXPORTING
* TITLEBAR = '进口提单管理'
* COLUMNNAME = ''
* IMPORTING
* ANSWER = LV_ANSWER
* CHANGING
* CT_DISPLAYTABLE = LT_STR.

CLEAR LV_ANSWER.
LV_TEXT_QUESTION = '你将确认选中的进口提单[' && LV_VBELN &&
'] ,合 同 号 为:' && LWA_HEAD-ZHTH.
LV_TITLE = '进口提单管理'.
PERFORM FRM_POP_UP USING LV_TITLE LV_TEXT_QUESTION
CHANGING LV_ANSWER.
IF LV_ANSWER = '1'.
CLEAR LV_FLG.
LOOP AT GT_ITEM INTO LWA_ITEM WHERE PART_CUST = 'X'.
IF LWA_HEAD-VBELN(1) = 'R'. "add 20190531
SELECT COUNT(*) FROM ZMMT0123C "add 20190531
WHERE VBELN = LWA_ITEM-VBELN "add 20190531
AND POSNR = LWA_ITEM-POSNR. "add 20190531
ELSE. "add 20190531
SELECT COUNT(*) FROM ZMMT0007
WHERE VBELN = LWA_ITEM-VBELN
AND POSNR = LWA_ITEM-POSNR.
ENDIF.
IF SY-SUBRC <> 0.

CLEAR LV_MSG.
LV_MSG = '发运清单[' && LV_VBELN && ']下存在是零件报关但未拆分的送货明细['
&& LWA_ITEM-POSNR &&'],请检查!'.

CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
TITEL = '进口提单管理'
TEXTLINE1 = LV_MSG.

LV_FLG = 'X'.
EXIT.
ENDIF.
ENDLOOP.
CHECK LV_FLG IS INITIAL.
PERFORM FRM_LOCK_DATA USING LWA_HEAD-VBELN CHANGING LV_LOCK_FLG.
CHECK LV_LOCK_FLG IS INITIAL.
IF LWA_HEAD-VBELN(1) = 'R'.
PERFORM FRM_RETURN_QUEREN USING LWA_HEAD-VBELN."add cjj 20190527
ELSE.
PERFORM FRM_QUEREN_TUIHUI USING 'Z2' LWA_HEAD-VBELN.
ENDIF.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_PIPEI
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_PIPEI .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LT_HEAD_SEL TYPE STANDARD TABLE OF TY_HEAD.
DATA LV_CNT TYPE I.
DATA LWA_HTPC TYPE TY_ZMMT0030.
DATA LV_TABIX TYPE I.

CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
READ TABLE GT_HEAD INTO GWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND GWA_HEAD TO LT_HEAD_SEL.
ENDIF.
ENDLOOP.
DESCRIBE TABLE LT_HEAD_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
MESSAGE '请选择一条数据进行匹配' TYPE 'E'.
ENDIF.
* IF GWA_HEAD-vbeln(1) = 'R'. "add cjj 20190529
* MESSAGE '不能对退货的数据进行匹配' TYPE 'E'.
* endif.
IF LWA_HEAD-ZDELIVERYPLANNO IS NOT INITIAL.
MESSAGE '只能对合同批次为空的数据进行匹配' TYPE 'E'.
ENDIF.

SELECT * FROM ZMMT0030
INTO CORRESPONDING FIELDS OF TABLE GT_HTPC
WHERE ZCONTRACTNO = GWA_HEAD-ZHTH
AND DEL_FLAG = SPACE.
IF SY-SUBRC = 0.
"判断该批次是否已匹配,并增加状态显示
LOOP AT GT_HTPC INTO LWA_HTPC.
LV_TABIX = SY-TABIX.
SELECT COUNT(*) FROM LIKP WHERE ZDELIVERYPLANNO = LWA_HTPC-ZDELIVERYPLANNO.
IF SY-SUBRC = 0.
LWA_HTPC-ZSTA = '已匹配'.
MODIFY GT_HTPC FROM LWA_HTPC INDEX LV_TABIX TRANSPORTING ZSTA.
ENDIF.
ENDLOOP.
ENDIF.
CALL SCREEN 9300 STARTING AT 1 1 ENDING AT 120 23.

ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9300 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9300 OUTPUT.
SET PF-STATUS 'STA_9300'.
SET TITLEBAR 'TIL_9300'.
PERFORM FRM_SHOW_HTPI.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_SHOW_HTPI
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SHOW_HTPI .
DATA LWA_LAYOUT TYPE LVC_S_LAYO.
DATA IS_VARIANT TYPE DISVARIANT.

"show head data
IF GCL_ALV_GRID6 IS INITIAL.
CREATE OBJECT GCL_CCONTAINER6
EXPORTING
CONTAINER_NAME = 'CON6'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CREATE OBJECT GCL_ALV_GRID6
EXPORTING
I_PARENT = GCL_CCONTAINER6.

PERFORM FRM_GET_FIELDCAT USING 'GT_HTPC'.
PERFORM FRM_GET_EXCLUDE CHANGING GT_EXCLUDE.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.

IS_VARIANT-REPORT = SY-REPID.

CALL METHOD GCL_ALV_GRID6->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LWA_LAYOUT
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_VARIANT = IS_VARIANT
I_DEFAULT = 'X'
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT6
IT_OUTTAB = GT_HTPC.

ELSE.
CALL METHOD GCL_ALV_GRID6->REFRESH_TABLE_DISPLAY.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9300 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9300 INPUT.

LV_SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE LV_SAVE_OK.
WHEN 'CONF'.
PERFORM FRM_PROCESS_CONF.

WHEN 'CAL'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_CONF
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_CONF .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HTPC TYPE TY_ZMMT0030.
DATA LT_HTPC_SEL TYPE STANDARD TABLE OF TY_ZMMT0030.
DATA LV_CNT TYPE I.
DATA LV_MSG TYPE CHAR200.
DATA LV_FLG.

CALL METHOD GCL_ALV_GRID6->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
READ TABLE GT_HTPC INTO LWA_HTPC INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND LWA_HTPC TO LT_HTPC_SEL.
ENDIF.
ENDLOOP.
CLEAR LV_FLG.
DESCRIBE TABLE LT_HTPC_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
MESSAGE '请选择一条数据进行匹配' TYPE 'I'.
LV_FLG = 'X'.
ENDIF.
CHECK LV_FLG IS INITIAL.
CLEAR LV_FLG.
SELECT COUNT(*) FROM LIKP
WHERE ZDELIVERYPLANNO = LWA_HTPC-ZDELIVERYPLANNO.
IF SY-SUBRC = 0.
CLEAR LV_MSG.
LV_MSG = '进口提单已匹配过合同批次,不能再进行匹配!'.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
TITEL = '进口提单管理'
TEXTLINE1 = LV_MSG.
LV_FLG = 'X'.
ENDIF.
CHECK LV_FLG IS INITIAL.
PERFORM FRM_HTPC_PIPEI USING LWA_HTPC-ZDELIVERYPLANNO.
LEAVE TO SCREEN 0.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_QUEREN_TUIHUI
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_
*&---------------------------------------------------------------------*
FORM FRM_QUEREN_TUIHUI USING U_ZCONF TYPE CHAR02
U_VBELN TYPE CHAR15."LIKP-VBELN.
DATA : BEGIN OF LT_MSG_TAB OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA : END OF LT_MSG_TAB.
DATA LWA_OPT TYPE CTU_PARAMS.
DATA LV_MSG TYPE CHAR200.
DATA LV_MSG_OUT TYPE CHAR200.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LV_ZISSHEN TYPE CHAR02.
DATA: LV_VBELN TYPE LIKP-VBELN.
DATA LWA_ZMMT0011 TYPE ZMMT0011.
DATA L_FASONG_MESSAGE TYPE CHAR_1536.
DATA L_FASONG_ERROR_FLAG TYPE CHAR01.
* DATA lv_midflag(1) TYPE c. "zmm172 memory id flag.
* lv_midflag(1) = 'X'.

LWA_OPT-DISMODE = 'N'.
LWA_OPT-UPDMODE = 'S'.
LWA_OPT-DEFSIZE = 'X'.
REFRESH: GT_BDCDATA,LT_MSG_TAB.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '4104' 'X',
'BDC_OKCODE' '=ENT2' '',
'LIKP-VBELN' U_VBELN ''.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '1000' 'X',
'BDC_OKCODE' '=HDET_T' ''.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '2000' 'X',
'BDC_OKCODE' '=T7' ''.
PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '2000' 'X',
'BDC_OKCODE' '=SICH_T' '',
'LIKP-CONFIRM' U_ZCONF ''.

*******add by dangchao 20190829********************
* EXPORT lv_midflag TO MEMORY ID '&ZMM123_TO_MM172'.
***************************************************
CALL TRANSACTION 'VL32N' USING GT_BDCDATA[]
OPTIONS FROM LWA_OPT
MESSAGES INTO LT_MSG_TAB.
IF SY-MSGID = 'VL' AND SY-MSGNO = '311'.
CLEAR LWA_ZMMT0011.
IF U_ZCONF = 'Z2'.
LWA_ZMMT0011-ZISSHEN = 'Z2'.
ELSEIF U_ZCONF = 'Z3'.
LWA_ZMMT0011-ZISSHEN = 'Z1'.
ENDIF.
LWA_ZMMT0011-VBELN = U_VBELN.
LWA_ZMMT0011-ERDAT = SY-DATUM.
LWA_ZMMT0011-UZEIT = SY-UZEIT.
LWA_ZMMT0011-UNAME = SY-UNAME.
MODIFY ZMMT0011 FROM LWA_ZMMT0011.

COMMIT WORK AND WAIT.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
PERFORM FRM_UNLOCK_DATA USING U_VBELN.
LWA_HEAD-ZCONF = U_ZCONF.
IF U_ZCONF = 'Z2'.
LWA_HEAD-ZCONF_TXT = '确认'.
"接口发送数据
LV_VBELN = U_VBELN."add cjj 20190529
CALL FUNCTION 'ZFM_MM_DELIVER_BILLS'
EXPORTING
IV_ACTION = '1'
IV_VBELN = LV_VBELN "U_VBELN del cjj 20190529
IV_COMMIT = 'X'
IV_053_MODE = '1'
IMPORTING
EV_MESSAGE = L_FASONG_MESSAGE
EV_ERROR_FLAG = L_FASONG_ERROR_FLAG.
IF L_FASONG_ERROR_FLAG = 'S'.
LWA_HEAD-ZFASONG = 'X'.
ELSE.
MESSAGE I000(ZMM001) WITH '发送失败:' L_FASONG_MESSAGE.
ENDIF.

ELSEIF U_ZCONF = 'Z3'.
LWA_HEAD-ZCONF_TXT = '退回'.
LV_VBELN = U_VBELN."add cjj 20190529
"接口发送数据
CALL FUNCTION 'ZFM_MM_DELIVER_BILLS'
EXPORTING
IV_ACTION = '1'
IV_VBELN = LV_VBELN "U_VBELN
IV_COMMIT = 'X'
IV_053_MODE = '2'
IMPORTING
EV_MESSAGE = L_FASONG_MESSAGE
EV_ERROR_FLAG = L_FASONG_ERROR_FLAG.
IF L_FASONG_ERROR_FLAG = 'S'.
LWA_HEAD-ZFASONG = 'X'.
ELSE.
MESSAGE I000(ZMM001) WITH '发送失败:' L_FASONG_MESSAGE.
ENDIF.
ENDIF.
MODIFY GT_HEAD FROM LWA_HEAD TRANSPORTING ZCONF ZCONF_TXT ZFASONG WHERE VBELN = U_VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
ELSE.
ROLLBACK WORK.
PERFORM FRM_UNLOCK_DATA USING U_VBELN.
CLEAR LV_MSG_OUT.
LOOP AT LT_MSG_TAB.
MESSAGE ID LT_MSG_TAB-MSGID TYPE LT_MSG_TAB-MSGTYP NUMBER LT_MSG_TAB-MSGNR
INTO LV_MSG
WITH LT_MSG_TAB-MSGV1 LT_MSG_TAB-MSGV2
LT_MSG_TAB-MSGV3 LT_MSG_TAB-MSGV4.
CONCATENATE LV_MSG_OUT LV_MSG INTO LV_MSG_OUT
SEPARATED BY '|'.
ENDLOOP.
MESSAGE LV_MSG_OUT TYPE 'E'.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_QUXIAO
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_QUXIAO .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LT_HEAD_SEL TYPE STANDARD TABLE OF TY_HEAD.
DATA LV_CNT TYPE I.
DATA LV_TEXT_QUESTION TYPE CHAR100.
DATA LV_ANSWER TYPE CHAR01.
DATA LV_TITLE TYPE CHAR50.

CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
READ TABLE GT_HEAD INTO GWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND GWA_HEAD TO LT_HEAD_SEL.
ENDIF.
ENDLOOP.
DESCRIBE TABLE LT_HEAD_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
MESSAGE '请选择一条数据进行取消匹配' TYPE 'E'.
ENDIF.

"change 20190304: 业务提出提单匹配可能会出现在各个环节,因此现在需要如下调整:提单匹配与取消匹配时,取消限制条件。
* IF NOT ( GWA_HEAD-ZSTATUS = 'Z1' AND GWA_HEAD-ZDELIVERYPLANNO IS NOT INITIAL ).
IF GWA_HEAD-ZDELIVERYPLANNO IS INITIAL.
* MESSAGE '只能对状态为 新建 且合同批次不为空的数据进行取消匹配' TYPE 'E'.
MESSAGE '只能对合同批次不为空的数据进行取消匹配' TYPE 'E'.
ENDIF.
CLEAR LV_ANSWER.
LV_TEXT_QUESTION = '取消匹配合同批次,是否确定?'.
LV_TITLE = '进口提单管理'.
PERFORM FRM_POP_UP USING LV_TITLE LV_TEXT_QUESTION
CHANGING LV_ANSWER.
CHECK LV_ANSWER = '1'.
* if GWA_HEAD-vbeln(1) = 'R'.
** PERFORM FRM_return_PIPEI using LWA_HEAD-VBELN."add cjj 20190527
* else.
PERFORM FRM_HTPC_PIPEI USING ''.
* endif.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_HTPC_PIPEI
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_
*&---------------------------------------------------------------------*
FORM FRM_HTPC_PIPEI USING U_ZDELIVERYPLANNO TYPE LIKP-ZDELIVERYPLANNO.
* DATA : BEGIN OF LT_MSG_TAB OCCURS 0.
* INCLUDE STRUCTURE BDCMSGCOLL.
* DATA : END OF LT_MSG_TAB.
* DATA LWA_OPT TYPE CTU_PARAMS.
* DATA LV_MSG TYPE CHAR200.
* DATA LV_MSG_OUT TYPE CHAR200.
*
* LWA_OPT-DISMODE = 'N'.
* LWA_OPT-UPDMODE = 'S'.
* LWA_OPT-DEFSIZE = 'X'.
* REFRESH: GT_BDCDATA,LT_MSG_TAB.
* PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '4104' 'X',
* 'BDC_OKCODE' '=ENT2' '',
* 'LIKP-VBELN' GWA_HEAD-VBELN ''.
* PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '1000' 'X',
* 'BDC_OKCODE' '=HDET_T' ''.
* PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '2000' 'X',
* 'BDC_OKCODE' '=T7' ''.
* PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A' '2000' 'X',
* 'BDC_OKCODE' '=SICH_T' '',
* 'LIKP-ZDELIVERYPLANNO' U_ZDELIVERYPLANNO ''.
* CALL TRANSACTION 'VL32N' USING GT_BDCDATA[]
* OPTIONS FROM LWA_OPT
* MESSAGES INTO LT_MSG_TAB.
* IF SY-MSGID = 'VL' AND SY-MSGNO = '311'.
* COMMIT WORK AND WAIT.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* GWA_HEAD-ZDELIVERYPLANNO = U_ZDELIVERYPLANNO.
* MODIFY GT_HEAD FROM GWA_HEAD TRANSPORTING ZDELIVERYPLANNO WHERE VBELN = GWA_HEAD-VBELN.
* CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
* ELSE.
* ROLLBACK WORK.
* CLEAR LV_MSG_OUT.
* LOOP AT LT_MSG_TAB.
* MESSAGE ID LT_MSG_TAB-MSGID TYPE LT_MSG_TAB-MSGTYP NUMBER LT_MSG_TAB-MSGNR
* INTO LV_MSG
* WITH LT_MSG_TAB-MSGV1 LT_MSG_TAB-MSGV2
* LT_MSG_TAB-MSGV3 LT_MSG_TAB-MSGV4.
* CONCATENATE LV_MSG_OUT LV_MSG INTO LV_MSG_OUT
* SEPARATED BY '|'.
* ENDLOOP.
* MESSAGE LV_MSG_OUT TYPE 'E'.
* ENDIF.

"change 20190129 交货单做完发货 发运批次不能修改,业务上这时候需要修改,故用下面方法修改
UPDATE LIKP SET ZDELIVERYPLANNO = U_ZDELIVERYPLANNO
WHERE VBELN = GWA_HEAD-VBELN.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
MESSAGE '合同批次更新成功' TYPE 'S'.
GWA_HEAD-ZDELIVERYPLANNO = U_ZDELIVERYPLANNO.
MODIFY GT_HEAD FROM GWA_HEAD TRANSPORTING ZDELIVERYPLANNO WHERE VBELN = GWA_HEAD-VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
ELSE.
ROLLBACK WORK.
MESSAGE '合同批次更新失败' TYPE 'E'.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_FENJIE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_FENJIE .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_ITEM TYPE TY_ITEM.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LT_ITEM_SEL TYPE STANDARD TABLE OF TY_ITEM.
DATA LV_CNT TYPE I.
DATA LWA_CFMX TYPE TY_CFMX.
DATA LWA_FJXS TYPE TY_FJXS.
DATA LV_LOCK_FLG.

CALL METHOD GCL_ALV_GRID2->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
READ TABLE GT_ITEM INTO LWA_ITEM INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND LWA_ITEM TO LT_ITEM_SEL.
ENDIF.
ENDLOOP.
DESCRIBE TABLE LT_ITEM_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
MESSAGE '请选择一条数据进行分解' TYPE 'E'.
ENDIF.

READ TABLE LT_ITEM_SEL INTO LWA_ITEM INDEX 1.
IF SY-SUBRC = 0.
IF LWA_ITEM-CHARG IS INITIAL
AND LWA_ITEM-VBELN(1) <> 'R'. "add cjj 20190604
MESSAGE '包含电缆/光缆/通讯线的行项目不允许分解' TYPE 'E'.
ENDIF.
ENDIF.

CLEAR:LWA_ROW,LT_ROW.
CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
READ TABLE LT_ROW INTO LWA_ROW INDEX 1.
CLEAR LWA_HEAD.
READ TABLE GT_HEAD INTO LWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC <> 0.
MESSAGE '请选择抬头数据' TYPE 'E'.
ELSE.
IF LWA_HEAD-ZCONF = 'Z2'.
MESSAGE '已确认的数据不允许修改' TYPE 'E'.
ENDIF.
ENDIF.

PERFORM FRM_LOCK_DATA USING LWA_HEAD-VBELN
CHANGING LV_LOCK_FLG.
CHECK LV_LOCK_FLG IS INITIAL.
CLEAR GT_CFMX.
IF LWA_ITEM-PACK_CNT = 0.
ELSE.
LOOP AT GT_FJXS_ALL INTO LWA_FJXS WHERE VBELN = LWA_ITEM-VBELN
AND POSNR = LWA_ITEM-POSNR.
CLEAR LWA_CFMX.
LWA_CFMX-ZIDX = LWA_FJXS-SORT_ORDER. "排列序号
LWA_CFMX-ZPAKNO = LWA_FJXS-PACK_BILL. "装箱单号
LWA_CFMX-MATNR_CF = LWA_FJXS-ITEM_ID. "拆分品名编码
LWA_CFMX-MAKTX = LWA_FJXS-ITEM_NAME. "拆分品名描述
LWA_CFMX-MEINS = LWA_FJXS-UNIT. "拆分计量单位
LWA_CFMX-MEINS_TXT = LWA_FJXS-UNIT_TXT. "拆分计量单位
LWA_CFMX-ZPAKSL = LWA_FJXS-PACK_QTY.
LWA_CFMX-ZCOUNTRY = LWA_FJXS-COUNTRY.
SELECT SINGLE LANDX FROM T005T
INTO LWA_CFMX-ZCOUNTRY_TXT
WHERE SPRAS = SY-LANGU
AND LAND1 = LWA_CFMX-ZCOUNTRY.
LWA_CFMX-ZZJ = LWA_FJXS-MAIN_PART.
LWA_CFMX-ZMEMO = LWA_FJXS-MEMO.
APPEND LWA_CFMX TO GT_CFMX.
ENDLOOP.

ENDIF.
CLEAR GWA_TDMX_FJ.
MOVE-CORRESPONDING LWA_ITEM TO GWA_TDMX_FJ.
IF LWA_ITEM-BANFN IS NOT INITIAL AND LWA_ITEM-BNFPO IS NOT INITIAL.
GWA_TDMX_FJ-ZJHBH = LWA_ITEM-BANFN && '-' && LWA_ITEM-BNFPO.
ENDIF.
GWA_TDMX_FJ-ZPM = LWA_ITEM-ZZNAME1.
GWA_TDMX_FJ-ZGG = LWA_ITEM-ZZSPEC.
GWA_TDMX_FJ-ZLFIMG = LWA_ITEM-LFIMG.
GWA_TDMX_FJ-ZUTXT = LWA_ITEM-MEINS_TXT.
GWA_TDMX_FJ-MEINS = LWA_ITEM-VRKME.
GWA_TDMX_FJ-ZLJBG = LWA_ITEM-PART_CUST.
GWA_TDMX_FJ-MEMO = LWA_ITEM-ZMEMO.
GWA_TDMX_FJ-TAX_TYPE = LWA_ITEM-ZTAXTYPE.
SELECT SINGLE WERKS FROM EKPO INTO GWA_TDMX_FJ-WERKS ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
WHERE EBELN = LWA_ITEM-VGBEL
AND EBELP = LWA_ITEM-VGPOS.
SELECT SINGLE LFDAT FROM EBAN
INTO GWA_TDMX_FJ-LFDAT
WHERE BANFN = LWA_ITEM-BANFN
AND BNFPO = LWA_ITEM-BNFPO.
SORT GT_CFMX BY ZIDX.
CALL SCREEN 9400 STARTING AT 1 1 ENDING AT 130 25.

ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9400 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9400 OUTPUT.
SET PF-STATUS 'STA_9400'.
SET TITLEBAR 'TIL_9400'.
PERFORM FRM_SHOW_CFMX.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9400 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9400 INPUT.

LV_SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE LV_SAVE_OK.
WHEN 'ADD'.
PERFORM FRM_ADD_LINE.
WHEN 'COPY'.
PERFORM FRM_COPY_LINE.
WHEN 'INSERT'.
PERFORM FRM_INSERT_LINE.
WHEN 'DEL'.
PERFORM FRM_DEL_LINE.
WHEN 'IMPT'.
PERFORM FRM_IMPORT_DATA.
WHEN 'DOWN'.
PERFORM FRM_DOWN_MOBAN.
WHEN 'SAV'.
PERFORM FRM_SAVE_DATA.
WHEN 'CLOSE'.
PERFORM FRM_GET_DATA.
CLEAR GT_ITEM.
CLEAR LWA_HEAD.
READ TABLE GT_HEAD INTO LWA_HEAD INDEX GV_ROW_HEAD.
GT_ITEM = GT_ITEM_ALL.
DELETE GT_ITEM WHERE VBELN <> LWA_HEAD-VBELN.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_ADD_LINE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_ADD_LINE .
DATA LWA_CFMX TYPE TY_CFMX.
DATA LV_TABIX TYPE I.
*BREAK-POINT.
IF GT_CFMX IS INITIAL .
LWA_CFMX-ZIDX = 1.
IF GWA_TDMX_FJ-ZLJBG IS INITIAL
AND GWA_TDMX_FJ-ZPM IS NOT INITIAL AND GWA_TDMX_FJ-ZGG IS NOT INITIAL.
LWA_CFMX-MAKTX = GWA_TDMX_FJ-ZPM && '/' && GWA_TDMX_FJ-ZGG.
LWA_CFMX-MEINS = GWA_TDMX_FJ-MEINS.
LWA_CFMX-MEINS_TXT = GWA_TDMX_FJ-ZUTXT.
ENDIF.
LWA_CFMX-ZCOUNTRY = GWA_TDMX_FJ-COUNTRY.
SELECT SINGLE LANDX FROM T005T
INTO LWA_CFMX-ZCOUNTRY_TXT
WHERE SPRAS = SY-LANGU
AND LAND1 = LWA_CFMX-ZCOUNTRY.
APPEND LWA_CFMX TO GT_CFMX.
ELSE.
LOOP AT GT_CFMX INTO LWA_CFMX.
LV_TABIX = LV_TABIX + 1.
LWA_CFMX-ZIDX = LV_TABIX.
MODIFY GT_CFMX FROM LWA_CFMX INDEX SY-TABIX TRANSPORTING ZIDX.
ENDLOOP.
"点新增,在末尾增加一行
LV_TABIX = LV_TABIX + 1.
CLEAR LWA_CFMX.
IF GWA_TDMX_FJ-ZLJBG IS INITIAL
AND GWA_TDMX_FJ-ZPM IS NOT INITIAL AND GWA_TDMX_FJ-ZGG IS NOT INITIAL.
LWA_CFMX-MAKTX = GWA_TDMX_FJ-ZPM && '/' && GWA_TDMX_FJ-ZGG.
LWA_CFMX-MEINS = GWA_TDMX_FJ-MEINS.
LWA_CFMX-MEINS_TXT = GWA_TDMX_FJ-ZUTXT.
ENDIF.
LWA_CFMX-ZCOUNTRY = GWA_TDMX_FJ-COUNTRY.
SELECT SINGLE LANDX FROM T005T
INTO LWA_CFMX-ZCOUNTRY_TXT
WHERE SPRAS = SY-LANGU
AND LAND1 = LWA_CFMX-ZCOUNTRY.
LWA_CFMX-ZIDX = LV_TABIX.
APPEND LWA_CFMX TO GT_CFMX.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SHOW_CFMX
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SHOW_CFMX .
DATA LWA_LAYOUT TYPE LVC_S_LAYO.
DATA IS_VARIANT TYPE DISVARIANT.

"show head data
IF GCL_ALV_GRID7 IS INITIAL.
CREATE OBJECT GCL_CCONTAINER7
EXPORTING
CONTAINER_NAME = 'CON7'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CREATE OBJECT GCL_ALV_GRID7
EXPORTING
I_PARENT = GCL_CCONTAINER7.

IF GWA_TDMX_FJ-ZLJBG IS INITIAL.
REFRESH: GT_FIELDCAT7.
GV_TYPE = '7'.
MCR_ADD_FDCAT 'ZIDX' 'GT_CFMX' '排列序号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZMSG' 'GT_CFMX' '报错消息' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPAKNO' 'GT_CFMX' '装箱单号' '' 'PACK_BILL' 'X' '' '' 'ZMMT0007'.
MCR_ADD_FDCAT 'MATNR_CF' 'GT_CFMX' '拆分品名编码' '' 'MATNR' '' '' 'MATN1' 'MARA'.
MCR_ADD_FDCAT 'MAKTX' 'GT_CFMX' '拆分品名描述' '' 'MAKTX' 'X' '' '' 'MAKT'.
MCR_ADD_FDCAT 'MEINS' 'GT_CFMX' '拆分计量单位' '' 'ZMEINS' 'X' '' '' 'ZMMS0123'.
MCR_ADD_FDCAT 'MEINS_TXT' 'GT_CFMX' '拆分计量单位' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPAKSL' 'GT_CFMX' '装箱数量' '' 'ZPCKQTY' 'X' '' '' 'ZMMS0123'.
MCR_ADD_FDCAT 'ZCOUNTRY' 'GT_CFMX' '原产国' '' 'LAND1' 'X' '' '' 'T005'.
MCR_ADD_FDCAT 'ZCOUNTRY_TXT' 'GT_CFMX' '原产国' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZJ' 'GT_CFMX' '是否主件' 'X' '' 'X' '' '' ''.
MCR_ADD_FDCAT 'ZMEMO' 'GT_CFMX' '备注' '' 'MEMO' 'X' '' '' 'ZMMT0007'.
ELSE.
PERFORM FRM_GET_FIELDCAT USING 'GT_CFMX'.
ENDIF.
PERFORM FRM_GET_EXCLUDE CHANGING GT_EXCLUDE.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.

IS_VARIANT-REPORT = SY-REPID.

CALL METHOD GCL_ALV_GRID7->REGISTER_EDIT_EVENT
EXPORTING
* I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER
EXCEPTIONS
ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
*
ENDIF.

CALL METHOD GCL_ALV_GRID7->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LWA_LAYOUT
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_VARIANT = IS_VARIANT
I_DEFAULT = 'X'
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT7
IT_OUTTAB = GT_CFMX.

DATA EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK4 FOR GCL_ALV_GRID7.
SET HANDLER EVENT_RECEIVER->HANDLE_DATA_CHANGED_FINISHED1 FOR GCL_ALV_GRID7.
* CALL METHOD CL_GUI_CFW=>FLUSH.
ELSE.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.

IF GWA_TDMX_FJ-ZLJBG IS INITIAL.
REFRESH: GT_FIELDCAT7.
GV_TYPE = '7'.
MCR_ADD_FDCAT 'ZIDX' 'GT_CFMX' '排列序号' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZSTATUS' 'GT_CFMX' '状态' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZMSG' 'GT_CFMX' '报错消息' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPAKNO' 'GT_CFMX' '装箱单号' '' 'PACK_BILL' 'X' '' '' 'ZMMT0007'.
MCR_ADD_FDCAT 'MATNR_CF' 'GT_CFMX' '拆分品名编码' '' 'MATNR' '' '' 'MATN1' 'MARA'.
MCR_ADD_FDCAT 'MAKTX' 'GT_CFMX' '拆分品名描述' '' 'MAKTX' 'X' '' '' 'MAKT'.
MCR_ADD_FDCAT 'MEINS' 'GT_CFMX' '拆分计量单位' '' 'ZMEINS' 'X' '' '' 'ZMMS0123'.
MCR_ADD_FDCAT 'MEINS_TXT' 'GT_CFMX' '拆分计量单位' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZPAKSL' 'GT_CFMX' '装箱数量' '' 'ZPCKQTY' 'X' '' '' 'ZMMS0123'.
MCR_ADD_FDCAT 'ZCOUNTRY' 'GT_CFMX' '原产国' '' 'LAND1' 'X' '' '' 'T005'.
MCR_ADD_FDCAT 'ZCOUNTRY_TXT' 'GT_CFMX' '原产国' '' '' '' '' '' ''.
MCR_ADD_FDCAT 'ZZJ' 'GT_CFMX' '是否主件' 'X' '' 'X' '' '' ''.
MCR_ADD_FDCAT 'ZMEMO' 'GT_CFMX' '备注' '' 'MEMO' 'X' '' '' 'ZMMT0007'.
ELSE.
PERFORM FRM_GET_FIELDCAT USING 'GT_CFMX'.
ENDIF.

CALL METHOD GCL_ALV_GRID7->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LWA_LAYOUT
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_VARIANT = IS_VARIANT
I_DEFAULT = 'X'
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT7
IT_OUTTAB = GT_CFMX.

CALL METHOD GCL_ALV_GRID7->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = LWA_LAYOUT.

CALL METHOD GCL_ALV_GRID7->REFRESH_TABLE_DISPLAY.
* CALL METHOD CL_GUI_CFW=>FLUSH.
PERFORM FRM_SET_CURSOR7.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9500 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9500 OUTPUT.
SET PF-STATUS 'STA_9400'.
SET TITLEBAR 'TIL_9500'.
PERFORM FRM_SHOW_SEAR_MATNR.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9500 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9500 INPUT.

LV_SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE LV_SAVE_OK.
WHEN 'FIND'.
CREATE OBJECT G_APPLICATION.
CALL SCREEN 9600 STARTING AT 5 1 ENDING AT 70 25.
WHEN 'CZ'.
PERFORM FRM_SEARCH_MATNR.
WHEN 'QD'.
PERFORM FRM_QD_SEL.
WHEN 'QX'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9600 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9600 OUTPUT.
SET PF-STATUS 'STA_9400'.
SET TITLEBAR 'TIL_9600'.

IF GCL_TREE IS INITIAL.
PERFORM FRM_CREATE_AND_INIT_TREE.
ENDIF.

* CHECK 1 = 2.
* IF G_CONTAINER300 IS INITIAL.
* CREATE OBJECT G_CONTAINER300
* EXPORTING
* CONTAINER_NAME = 'TREE_CONTAINER'
* EXCEPTIONS
* CNTL_ERROR = 1
* CNTL_SYSTEM_ERROR = 2
* CREATE_ERROR = 3
* LIFETIME_ERROR = 4
* LIFETIME_DYNPRO_DYNPRO_LINK = 5.
* IF SY-SUBRC <> 0.
**
* ENDIF.
* CREATE OBJECT G_TREE_300
* EXPORTING
* PARENT = G_CONTAINER300
* NODE_SELECTION_MODE = CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_SINGLE
* ITEM_SELECTION = 'X'
* NO_HTML_HEADER = 'X'
* NO_TOOLBAR = 'X'
* EXCEPTIONS
* CNTL_ERROR = 1
* CNTL_SYSTEM_ERROR = 2
* CREATE_ERROR = 3
* LIFETIME_ERROR = 4
* ILLEGAL_NODE_SELECTION_MODE = 5
* FAILED = 6
* ILLEGAL_COLUMN_NAME = 7.
* IF SY-SUBRC <> 0.
**
* ENDIF.
* PERFORM FRM_MATNRTREE_REGISTER_EVENTS.
* PERFORM FRM_SET_SORT_TREE.
*
** create hierarchy
* CALL METHOD G_TREE_300->SET_TABLE_FOR_FIRST_DISPLAY
* EXPORTING
* IS_HIERARCHY_HEADER = GS_HIERARCHY_HEADER
* CHANGING
* IT_OUTTAB = GT_TREE_MATNR
* IT_FIELDCATALOG = GT_FIELDCAT300.
* PERFORM CREATE_HIERARCHY.
* CALL METHOD G_TREE_300->FRONTEND_UPDATE.
* ELSE.
* ENDIF.

ENDMODULE.
*----------------------------------------------------------------------*
* INCLUDE BCALV_SIMPLE_EVENT_RECEIVER *
*----------------------------------------------------------------------*
CLASS LCL_TREE_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS: DOUBLE_CLICK_MATNRTREE FOR EVENT ITEM_DOUBLE_CLICK OF CL_GUI_ALV_TREE
IMPORTING FIELDNAME NODE_KEY.
ENDCLASS.

CLASS LCL_TREE_EVENT_RECEIVER IMPLEMENTATION.
METHOD DOUBLE_CLICK_MATNRTREE .
PERFORM FRM_DOUBLE_CLICK_TREE USING NODE_KEY.
ENDMETHOD.
ENDCLASS.
DATA G_TREE_EVENT_RECEIVER TYPE REF TO LCL_TREE_EVENT_RECEIVER.
*&---------------------------------------------------------------------*
*& Form register_events
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_MATNRTREE_REGISTER_EVENTS.
* define the events which will be passed to the backend
DATA: LT_EVENTS TYPE CNTL_SIMPLE_EVENTS,
L_EVENT TYPE CNTL_SIMPLE_EVENT.

CALL METHOD G_TREE_300->GET_REGISTERED_EVENTS
IMPORTING
EVENTS = LT_EVENTS.

L_EVENT-EVENTID = CL_GUI_COLUMN_TREE=>EVENTID_ITEM_DOUBLE_CLICK.
APPEND L_EVENT TO LT_EVENTS.

CALL METHOD G_TREE_300->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = LT_EVENTS
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
ILLEGAL_EVENT_COMBINATION = 3.
IF SY-SUBRC <> 0.
*
ENDIF.

CREATE OBJECT G_TREE_EVENT_RECEIVER.
SET HANDLER G_TREE_EVENT_RECEIVER->DOUBLE_CLICK_MATNRTREE
FOR G_TREE_300.
ENDFORM. " frm_matnrtree_register_events
*&---------------------------------------------------------------------*
*& Form register_events
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_SET_SORT_TREE.
DATA:
LS_SORT TYPE LVC_S_SORT.

GS_HIERARCHY_HEADER-HEADING = '一级/二级/三级/物资'.
GS_HIERARCHY_HEADER-TOOLTIP = ' tooltip'.
GS_HIERARCHY_HEADER-WIDTH = 45.
GS_HIERARCHY_HEADER-WIDTH_PIX = ''.

PERFORM FRM_APPEND_FIELD
USING 'MATKL1' ' ' ' ' '一级' 'X' CHANGING GT_FIELDCAT300.
PERFORM FRM_APPEND_FIELD
USING 'MATKL2' ' ' ' ' '二级' 'X' CHANGING GT_FIELDCAT300.
PERFORM FRM_APPEND_FIELD
USING 'MATKL3' ' ' ' ' '三级' 'X' CHANGING GT_FIELDCAT300.
PERFORM FRM_APPEND_FIELD
USING 'MATNR' 'MATDOC' 'MATNR' '物资编码' 'X' CHANGING GT_FIELDCAT300.
PERFORM FRM_APPEND_FIELD
USING 'MAKTX' 'MAKT' 'MAKTX' '物料描述' ' ' CHANGING GT_FIELDCAT300.
PERFORM FRM_APPEND_FIELD
USING 'MATKL' 'MARA' 'MATKL' '类别' ' ' CHANGING GT_FIELDCAT300.

LS_SORT-SPOS = 1.
LS_SORT-FIELDNAME = 'MATKL1'.
LS_SORT-UP = 'X'.

APPEND LS_SORT TO GT_SORT300.

LS_SORT-SPOS = 2.
LS_SORT-FIELDNAME = 'MATKL2'.
LS_SORT-UP = 'X'.

APPEND LS_SORT TO GT_SORT300.

LS_SORT-SPOS = 3.
LS_SORT-FIELDNAME = 'MATKL3'.
LS_SORT-UP = 'X'.
APPEND LS_SORT TO GT_SORT300.

LS_SORT-SPOS = 4.
LS_SORT-FIELDNAME = 'MATNR'.
LS_SORT-UP = 'X'.
APPEND LS_SORT TO GT_SORT300.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_append_field
*&---------------------------------------------------------------------*
*& append 内表 fieldcatalog
*&---------------------------------------------------------------------*
FORM FRM_APPEND_FIELD USING U_FIELDNAME
U_REF_TABLE
U_REF_FIELD
U_TEXT
U_HIDE
CHANGING PT_FCAT TYPE LVC_T_FCAT.

DATA: LW_FCAT TYPE LVC_S_FCAT.

LW_FCAT-FIELDNAME = U_FIELDNAME.

IF U_REF_TABLE IS NOT INITIAL.
LW_FCAT-REF_TABLE = U_REF_TABLE.
ENDIF.

IF U_REF_FIELD IS NOT INITIAL.
LW_FCAT-REF_FIELD = U_REF_FIELD.
ENDIF.
IF U_TEXT IS NOT INITIAL.
LW_FCAT-SCRTEXT_S = U_TEXT.
LW_FCAT-SCRTEXT_M = U_TEXT.
LW_FCAT-SCRTEXT_L = U_TEXT.
LW_FCAT-COLTEXT = U_TEXT.
ENDIF.
IF U_HIDE = 'X'.
LW_FCAT-NO_OUT = 'X'.
ENDIF.


IF LW_FCAT-FIELDNAME = 'ZLIGHT'.
LW_FCAT-ICON = 'X'.
ENDIF.

IF LW_FCAT-FIELDNAME = 'ZKUWEI'.
LW_FCAT-OUTPUTLEN = 20.
LW_FCAT-INTLEN = 20.
ENDIF.

APPEND LW_FCAT TO PT_FCAT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form create_hierarchy
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CREATE_HIERARCHY.

DATA:
LT_TREE_MATNR TYPE STANDARD TABLE OF TY_TREE_MATNR,

L_NODE_KEY_LEVEL1 TYPE LVC_NKEY,
L_NODE_KEY_LEVEL2 TYPE LVC_NKEY,
L_NODE_KEY_LEVEL3 TYPE LVC_NKEY,
L_NODE_TEXT TYPE LVC_VALUE,
LT_T023T TYPE STANDARD TABLE OF T023T,
LS_T023T TYPE T023T,
LS_TREE_MATNR TYPE TY_TREE_MATNR,
LS_TREE_MATNR_TMP TYPE TY_TREE_MATNR,
LS_TREE_MATNR_TMP1 TYPE TY_TREE_MATNR,
LS_TREE_MATNR_TMP2 TYPE TY_TREE_MATNR,
LS_TREE_MATNR_TMP3 TYPE TY_TREE_MATNR,
L_LAST_KEY TYPE LVC_NKEY,
L_TOP_KEY TYPE LVC_NKEY.
SELECT
MARA~MATNR
MARA~MATKL
MAKT~MAKTX
FROM MARA INNER JOIN MAKT ON MAKT~MATNR = MARA~MATNR
INTO CORRESPONDING FIELDS OF TABLE LT_TREE_MATNR.

LOOP AT LT_TREE_MATNR INTO LS_TREE_MATNR.
LS_TREE_MATNR-MATKL1 = LS_TREE_MATNR-MATKL+0(2).
LS_TREE_MATNR-MATKL2 = LS_TREE_MATNR-MATKL+0(4).
LS_TREE_MATNR-MATKL3 = LS_TREE_MATNR-MATKL+0(6).
MODIFY LT_TREE_MATNR FROM LS_TREE_MATNR.
ENDLOOP.

DELETE LT_TREE_MATNR WHERE MATKL1 = SPACE.
SORT LT_TREE_MATNR BY MATKL1 MATKL2 MATKL3 MATNR.

CALL METHOD G_TREE_300->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = ''
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
* I_NODE_TEXT = TEXT-TT1
IMPORTING
E_NEW_NODE_KEY = L_TOP_KEY.
SELECT *
FROM T023T
INTO TABLE LT_T023T
WHERE SPRAS = SY-LANGU.

LOOP AT LT_TREE_MATNR INTO LS_TREE_MATNR.
LS_TREE_MATNR_TMP = LS_TREE_MATNR.
AT NEW MATKL1.
CLEAR: LS_T023T,
LS_TREE_MATNR_TMP1.
LS_TREE_MATNR_TMP1-MATKL1 = LS_TREE_MATNR_TMP-MATKL1.
READ TABLE LT_T023T INTO LS_T023T
WITH KEY MATKL = LS_TREE_MATNR_TMP-MATKL1.
CONCATENATE LS_TREE_MATNR_TMP-MATKL1 LS_T023T-WGBEZ
INTO L_NODE_TEXT.
CALL METHOD G_TREE_300->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = L_TOP_KEY
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
I_NODE_TEXT = L_NODE_TEXT
IS_OUTTAB_LINE = LS_TREE_MATNR_TMP1
IMPORTING
E_NEW_NODE_KEY = L_NODE_KEY_LEVEL1.
ENDAT.

AT NEW MATKL2.
CLEAR :LS_T023T,
LS_TREE_MATNR_TMP2.
LS_TREE_MATNR_TMP2-MATKL2 = LS_TREE_MATNR_TMP-MATKL2.

READ TABLE LT_T023T INTO LS_T023T
WITH KEY MATKL = LS_TREE_MATNR_TMP-MATKL2.
CONCATENATE LS_TREE_MATNR_TMP-MATKL2 LS_T023T-WGBEZ
INTO L_NODE_TEXT.
CALL METHOD G_TREE_300->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = L_NODE_KEY_LEVEL1
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
I_NODE_TEXT = L_NODE_TEXT
IS_OUTTAB_LINE = LS_TREE_MATNR_TMP2
IMPORTING
E_NEW_NODE_KEY = L_NODE_KEY_LEVEL2.
ENDAT.

AT NEW MATKL3.
CLEAR: LS_T023T,
LS_TREE_MATNR_TMP3.
LS_TREE_MATNR_TMP3-MATKL3 = LS_TREE_MATNR_TMP-MATKL3.

READ TABLE LT_T023T INTO LS_T023T
WITH KEY MATKL = LS_TREE_MATNR_TMP-MATKL3.
CONCATENATE LS_TREE_MATNR_TMP-MATKL3 LS_T023T-WGBEZ
INTO L_NODE_TEXT.
CALL METHOD G_TREE_300->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = L_NODE_KEY_LEVEL2
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
I_NODE_TEXT = L_NODE_TEXT
IS_OUTTAB_LINE = LS_TREE_MATNR_TMP3
IMPORTING
E_NEW_NODE_KEY = L_NODE_KEY_LEVEL3.
ENDAT.


L_NODE_TEXT = LS_TREE_MATNR_TMP-MATNR.

CALL METHOD G_TREE_300->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = L_NODE_KEY_LEVEL3
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
IS_OUTTAB_LINE = LS_TREE_MATNR_TMP
I_NODE_TEXT = L_NODE_TEXT
IMPORTING
E_NEW_NODE_KEY = L_LAST_KEY.

ENDLOOP.
CALL METHOD G_TREE_300->EXPAND_NODE
EXPORTING
I_NODE_KEY = L_TOP_KEY.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DOUBLE_CLICK_TREE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FRM_DOUBLE_CLICK_TREE USING U_INDEX.
DATA LS_TREE_MATNR TYPE TY_TREE_MATNR.
READ TABLE GT_TREE_MATNR INTO LS_TREE_MATNR INDEX U_INDEX .
GWA_WL_COND-MATNR = LS_TREE_MATNR-MATNR.
LEAVE TO SCREEN 0.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CREATE_AND_INIT_TREE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_CREATE_AND_INIT_TREE .
TYPES: BEGIN OF TY_MATNR,
MATNR TYPE MAKT-MATNR,
MATKL TYPE MARA-MATKL,
MAKTX TYPE MAKT-MAKTX,
END OF TY_MATNR.
DATA LT_MARA TYPE STANDARD TABLE OF TY_MATNR.
* DATA LT_MARA TYPE SORTED TABLE OF TY_MATNR WITH UNIQUE KEY matnr MATKL.
DATA LWA_MARA TYPE TY_MATNR.
DATA: EVENTS TYPE CNTL_SIMPLE_EVENTS,
EVENT1 TYPE CNTL_SIMPLE_EVENT.
DATA LT_T023T TYPE STANDARD TABLE OF T023T.
DATA LT_T023T_2W TYPE STANDARD TABLE OF T023T.
DATA LT_T023T_4W TYPE STANDARD TABLE OF T023T.
DATA LT_T023T_6W TYPE STANDARD TABLE OF T023T.
DATA LWA_T023T TYPE T023T.
DATA LWA_T023T_4W TYPE T023T.
DATA LWA_T023T_6W TYPE T023T.
DATA LV_LEN TYPE I.
DATA LV_TABIX TYPE I.

CLEAR: NODE_TABLE.
"get data
SELECT MATKL WGBEZ
FROM T023T
INTO CORRESPONDING FIELDS OF TABLE LT_T023T
WHERE SPRAS = SY-LANGU.

LT_T023T_2W = LT_T023T.
LT_T023T_4W = LT_T023T.
LT_T023T_6W = LT_T023T.

LOOP AT LT_T023T_2W INTO LWA_T023T.
LV_TABIX = SY-TABIX.
LV_LEN = STRLEN( LWA_T023T-MATKL ).
IF LV_LEN <> 2.
DELETE LT_T023T_2W INDEX LV_TABIX.
ENDIF.
ENDLOOP.

LOOP AT LT_T023T_4W INTO LWA_T023T.
LV_TABIX = SY-TABIX.
LV_LEN = STRLEN( LWA_T023T-MATKL ).
IF LV_LEN <> 4.
DELETE LT_T023T_4W INDEX LV_TABIX.
ELSE.
LOOP AT LT_T023T_2W TRANSPORTING NO FIELDS WHERE MATKL = LWA_T023T-MATKL(2).
ENDLOOP.
IF SY-SUBRC <> 0.
DELETE LT_T023T_4W INDEX LV_TABIX.
ENDIF.
ENDIF.
ENDLOOP.

LOOP AT LT_T023T_6W INTO LWA_T023T.
LV_TABIX = SY-TABIX.
LV_LEN = STRLEN( LWA_T023T-MATKL ).
IF LV_LEN < 6.
DELETE LT_T023T_6W INDEX SY-TABIX.
ELSE.
LOOP AT LT_T023T_4W TRANSPORTING NO FIELDS WHERE MATKL = LWA_T023T-MATKL(4).
ENDLOOP.
IF SY-SUBRC <> 0.
DELETE LT_T023T_6W INDEX LV_TABIX.
ENDIF.
ENDIF.
ENDLOOP.

IF LT_T023T_6W IS NOT INITIAL.
SELECT MARA~MATNR
MARA~MATKL
MAKT~MAKTX
FROM MARA INNER JOIN MAKT
ON MARA~MATNR = MAKT~MATNR
INTO CORRESPONDING FIELDS OF TABLE LT_MARA
FOR ALL ENTRIES IN LT_T023T_6W
WHERE MARA~MATKL = LT_T023T_6W-MATKL
AND ZZEXPINP = 'X'
AND SPRAS = SY-LANGU.
ENDIF.

* create a container for the tree control
CREATE OBJECT GCL_CUSTOM_CONTAINER
EXPORTING
CONTAINER_NAME = 'TREE_CONTAINER'.
CREATE OBJECT GCL_TREE
EXPORTING
PARENT = GCL_CUSTOM_CONTAINER
NODE_SELECTION_MODE = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_SINGLE.

CLEAR NODE1.
* 节点关键字
NODE1-NODE_KEY = 'ROOT'.
* 第一层
* 是文件夹
NODE1-HIDDEN = ''.
NODE1-DISABLED = ''.
NODE1-ISFOLDER = 'X'.
NODE1-TEXT = '全部材料分类'.
APPEND NODE1 TO NODE_TABLE.

* 二层节点
LOOP AT LT_T023T_2W INTO LWA_T023T.
CLEAR NODE1.
NODE1-NODE_KEY = LWA_T023T-MATKL. "nodisp
* 上层关系
NODE1-RELATKEY = 'ROOT'.
NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
NODE1-HIDDEN = ''.
NODE1-DISABLED = ''.
NODE1-ISFOLDER = 'X'.
CONCATENATE LWA_T023T-MATKL LWA_T023T-WGBEZ INTO NODE1-TEXT SEPARATED BY SPACE.
APPEND NODE1 TO NODE_TABLE.
ENDLOOP.

LOOP AT LT_T023T_2W INTO LWA_T023T.
LOOP AT LT_T023T_4W INTO LWA_T023T_4W WHERE MATKL(2) = LWA_T023T-MATKL.
CLEAR NODE1.
NODE1-NODE_KEY = LWA_T023T_4W-MATKL.
NODE1-RELATKEY = LWA_T023T-MATKL.
NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
NODE1-HIDDEN = ''.
NODE1-DISABLED = ''.
NODE1-ISFOLDER = 'X'.
CONCATENATE LWA_T023T_4W-MATKL LWA_T023T_4W-WGBEZ INTO NODE1-TEXT SEPARATED BY SPACE.
APPEND NODE1 TO NODE_TABLE.
ENDLOOP.
ENDLOOP.

LOOP AT LT_T023T_4W INTO LWA_T023T_4W.
LOOP AT LT_T023T_6W INTO LWA_T023T_6W WHERE MATKL(4) = LWA_T023T_4W-MATKL.
CLEAR NODE1.
NODE1-NODE_KEY = LWA_T023T_6W-MATKL.
NODE1-RELATKEY = LWA_T023T_4W-MATKL.
NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
NODE1-HIDDEN = ''.
NODE1-DISABLED = ''.
NODE1-ISFOLDER = 'X'.
CONCATENATE LWA_T023T_6W-MATKL LWA_T023T_6W-WGBEZ INTO NODE1-TEXT SEPARATED BY SPACE.
APPEND NODE1 TO NODE_TABLE.
ENDLOOP.
ENDLOOP.

DATA LV_BEGIN TYPE I.
DATA LV_MATNR TYPE MARA-MATNR.
DATA LV_CNT TYPE I VALUE 9000.

SORT LT_MARA BY MATKL.
SORT LT_T023T_6W BY MATKL.

LV_BEGIN = 1.
LOOP AT LT_T023T_6W INTO LWA_T023T_6W.
LOOP AT LT_MARA INTO LWA_MARA FROM LV_BEGIN.

IF LWA_T023T_6W-MATKL = LWA_MARA-MATKL.
LV_BEGIN = LV_BEGIN + 1.
LV_CNT = LV_CNT + 1.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
INPUT = LWA_MARA-MATNR
IMPORTING
OUTPUT = LV_MATNR.
CLEAR NODE1.
NODE1-NODE_KEY = LV_CNT.
NODE1-RELATKEY = LWA_T023T_6W-MATKL.
NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
NODE1-HIDDEN = ''.
NODE1-DISABLED = ''.
NODE1-ISFOLDER = ''.
CONCATENATE LV_MATNR LWA_MARA-MAKTX INTO NODE1-TEXT SEPARATED BY SPACE.
APPEND NODE1 TO NODE_TABLE.
CONTINUE.
ELSE.
EXIT.
ENDIF.

ENDLOOP.
ENDLOOP.

* 按照节点内容添加节点
CALL METHOD GCL_TREE->ADD_NODES
EXPORTING
TABLE_STRUCTURE_NAME = 'MTREESNODE'
NODE_TABLE = NODE_TABLE.
IF SY-SUBRC <> 0.
ENDIF.
*定义双击事件
EVENT1-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK.
EVENT1-APPL_EVENT = 'X'.
APPEND EVENT1 TO EVENTS.
* 添加事件内表
CALL METHOD GCL_TREE->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = EVENTS.
IF SY-SUBRC <> 0.
ENDIF.
SET HANDLER G_APPLICATION->HANDLE_NODE_DOUBLE_CLICK FOR GCL_TREE.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SEARCH_MATNR
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SEARCH_MATNR .
DATA LV_COND TYPE CHAR300.
DATA LV_STR TYPE CHAR100.
DATA LT_R_MATKL TYPE RANGE OF MARA-MATKL.
DATA LWA_R_MATKL LIKE LINE OF LT_R_MATKL.
DATA LT_R_MATNR TYPE RANGE OF MARA-MATNR.
DATA LWA_R_MATNR LIKE LINE OF LT_R_MATNR.
DATA LWA_SEAR_MATNR TYPE TY_SEAR_MATNR.
DATA LT_ZMMT0005 TYPE STANDARD TABLE OF ZMMT0005.
DATA LWA_ZMMT0005 TYPE ZMMT0005.
DATA LV_TABIX TYPE I.
DATA LV_DDTEXT TYPE DD07V-DDTEXT.
DATA LV_DOMVALUE TYPE DD07V-DOMVALUE_L.

IF GWA_WL_COND-MATNR IS NOT INITIAL.
SELECT COUNT(*) FROM T023
WHERE MATKL = GWA_WL_COND-MATNR.
IF SY-SUBRC = 0.
CLEAR LWA_R_MATKL.
LWA_R_MATKL-SIGN = 'I'.
LWA_R_MATKL-OPTION = 'EQ'.
LWA_R_MATKL-LOW = GWA_WL_COND-MATNR.
APPEND LWA_R_MATKL TO LT_R_MATKL.
* LV_COND = 'MATKL IN LT_R_MATKL'.
LV_STR = '''' && GWA_WL_COND-MATNR && '%'''.
CONCATENATE 'MATKL LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ELSE.
CLEAR LWA_R_MATNR.
LWA_R_MATNR-SIGN = 'I'.
LWA_R_MATNR-OPTION = 'EQ'.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = GWA_WL_COND-MATNR
IMPORTING
OUTPUT = LWA_R_MATNR-LOW
EXCEPTIONS
LENGTH_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
*
ENDIF.
APPEND LWA_R_MATNR TO LT_R_MATNR.
LV_COND = 'MATNR IN LT_R_MATNR'.
ENDIF.
ENDIF.

IF GWA_WL_COND-ZZNAME1 IS NOT INITIAL.
IF LV_COND IS NOT INITIAL.
LV_STR = '''%' && GWA_WL_COND-ZZNAME1 && '%'''.
CONCATENATE LV_COND 'AND ZZNAME1 LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ELSE.
LV_STR = '''%' && GWA_WL_COND-ZZNAME1 && '%'''.
CONCATENATE 'ZZNAME1 LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
ENDIF.

IF GWA_WL_COND-ZZCODE IS NOT INITIAL.
IF LV_COND IS NOT INITIAL.
LV_STR = '''%' && GWA_WL_COND-ZZCODE && '%'''.
CONCATENATE LV_COND 'AND ZZCODE LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ELSE.
LV_STR = '''%' && GWA_WL_COND-ZZCODE && '%'''.
CONCATENATE 'ZZCODE LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
ENDIF.

IF GWA_WL_COND-ZZBASM IS NOT INITIAL.
IF LV_COND IS NOT INITIAL.
LV_STR = '''%' && GWA_WL_COND-ZZBASM && '%'''.
CONCATENATE LV_COND 'AND ZZBASM LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ELSE.
LV_STR = '''%' && GWA_WL_COND-ZZBASM && '%'''.
CONCATENATE 'ZZBASM LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
ENDIF.

IF GWA_WL_COND-ZZSPEC IS NOT INITIAL.
IF LV_COND IS NOT INITIAL.
LV_STR = '''%' && GWA_WL_COND-ZZSPEC && '%'''.
CONCATENATE LV_COND 'AND ZZSPEC LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ELSE.
LV_STR = '''%' && GWA_WL_COND-ZZSPEC && '%'''.
CONCATENATE 'ZZSPEC LIKE' LV_STR INTO LV_COND SEPARATED BY SPACE.
ENDIF.
ENDIF.

CLEAR GT_SEAR_MATNR.
SELECT MATNR
ZZNAME1
ZZCODE
ZZBASM
ZZSPEC
MEINS
FROM MARA
INTO CORRESPONDING FIELDS OF TABLE GT_SEAR_MATNR
WHERE (LV_COND)
AND ZZEXPINP = 'X'.
IF SY-SUBRC = 0.
SORT GT_SEAR_MATNR BY MATNR.
SELECT IL_ITEM_ID
IL_ITEM_NAME
IL_STATUS
IL_HS_CODE
IL_HS_ATTACH
IL_EMS_NO
IL_IMPORT_UNIT_1
IL_IMPORT_UNIT_2
IL_RECORD_FLAG
IL_IMPORT_CATG
FROM ZMMT0005
INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0005
FOR ALL ENTRIES IN GT_SEAR_MATNR
WHERE IL_ITEM_ID = GT_SEAR_MATNR-MATNR.
SORT LT_ZMMT0005 BY IL_ITEM_ID.

LOOP AT GT_SEAR_MATNR INTO LWA_SEAR_MATNR.
LV_TABIX = SY-TABIX.
CLEAR LWA_ZMMT0005.
READ TABLE LT_ZMMT0005 INTO LWA_ZMMT0005 WITH KEY
IL_ITEM_ID = LWA_SEAR_MATNR-MATNR BINARY SEARCH.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING LWA_ZMMT0005 TO LWA_SEAR_MATNR.
PERFORM FRM_GET_UNIT_TXT USING LWA_SEAR_MATNR-IL_IMPORT_UNIT_1
CHANGING LWA_SEAR_MATNR-IL_IMPORT_UNIT_1_TXT.
PERFORM FRM_GET_UNIT_TXT USING LWA_SEAR_MATNR-IL_IMPORT_UNIT_2
CHANGING LWA_SEAR_MATNR-IL_IMPORT_UNIT_2_TXT.

CLEAR LV_DOMVALUE.
LV_DOMVALUE = LWA_SEAR_MATNR-IL_STATUS.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_ZT'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_SEAR_MATNR-IL_STATUS_TXT = LV_DDTEXT.
ENDIF.
ENDIF.

PERFORM FRM_GET_UNIT_TXT USING LWA_SEAR_MATNR-MEINS
CHANGING LWA_SEAR_MATNR-MEINS_TXT.
MODIFY GT_SEAR_MATNR FROM LWA_SEAR_MATNR INDEX LV_TABIX.
ENDLOOP.

ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_UNIT_TXT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LWA_SEAR_MATNR_IL_IMPORT_UNIT_
*& <-- LWA_SEAR_MATNR_IL_IMPORT_UNIT_
*&---------------------------------------------------------------------*
FORM FRM_GET_UNIT_TXT USING U_MEINS TYPE MARA-MEINS
CHANGING C_MEINS_TXT TYPE T006A-MSEHL.
DATA LV_MEINS TYPE MARA-MEINS.

SELECT SINGLE MSEHL
FROM T006A
INTO C_MEINS_TXT
WHERE SPRAS = SY-LANGU
AND MSEHI = U_MEINS.
IF SY-SUBRC <> 0.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = U_MEINS
* LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LV_MEINS
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ELSE.
SELECT SINGLE MSEHL
FROM T006A
INTO C_MEINS_TXT
WHERE SPRAS = SY-LANGU
AND MSEHI = LV_MEINS.
ENDIF.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SHOW_SEAR_MATNR
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SHOW_SEAR_MATNR .
DATA LWA_LAYOUT TYPE LVC_S_LAYO.
DATA IS_VARIANT TYPE DISVARIANT.

"show head data
IF GCL_ALV_GRID8 IS INITIAL.
CREATE OBJECT GCL_CCONTAINER8
EXPORTING
CONTAINER_NAME = 'CON8'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CREATE OBJECT GCL_ALV_GRID8
EXPORTING
I_PARENT = GCL_CCONTAINER8.

PERFORM FRM_GET_FIELDCAT USING 'GT_SEAR_MATNR'.
PERFORM FRM_GET_EXCLUDE CHANGING GT_EXCLUDE.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.

IS_VARIANT-REPORT = SY-REPID.

CALL METHOD GCL_ALV_GRID8->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LWA_LAYOUT
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_VARIANT = IS_VARIANT
I_DEFAULT = 'X'
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT8
IT_OUTTAB = GT_SEAR_MATNR.

ELSE.
CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
CALL METHOD GCL_ALV_GRID8->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = LWA_LAYOUT.

CALL METHOD GCL_ALV_GRID8->REFRESH_TABLE_DISPLAY.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_QD_SEL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_QD_SEL .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_SEAR_MATNR TYPE TY_SEAR_MATNR.
DATA LT_SEAR_MATNR_SEL TYPE STANDARD TABLE OF TY_SEAR_MATNR.
DATA LV_CNT TYPE I.
DATA LWA_CFMX TYPE TY_CFMX.
DATA LV_FLG.

CALL METHOD GCL_ALV_GRID8->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.

CLEAR LWA_SEAR_MATNR.
LOOP AT LT_ROW INTO LWA_ROW.
READ TABLE GT_SEAR_MATNR INTO LWA_SEAR_MATNR INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND LWA_SEAR_MATNR TO LT_SEAR_MATNR_SEL.
ENDIF.
ENDLOOP.
DESCRIBE TABLE LT_SEAR_MATNR_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
LV_FLG = 'X'.
MESSAGE '请选择一条数据' TYPE 'I'.
ENDIF.

CHECK LV_FLG IS INITIAL.
LWA_CFMX-MATNR_CF = LWA_SEAR_MATNR-MATNR.
SELECT SINGLE MAKTX FROM MAKT
INTO LWA_CFMX-MAKTX
WHERE MATNR = LWA_SEAR_MATNR-MATNR
AND SPRAS = SY-LANGU.
LWA_CFMX-MEINS = LWA_SEAR_MATNR-MEINS.
LWA_CFMX-MEINS_TXT = LWA_SEAR_MATNR-MEINS_TXT.
MODIFY GT_CFMX FROM LWA_CFMX INDEX GV_ROW
TRANSPORTING MATNR_CF MAKTX MEINS MEINS_TXT.
CALL METHOD GCL_ALV_GRID7->REFRESH_TABLE_DISPLAY.
LEAVE TO SCREEN 0.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_COPY_LINE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_COPY_LINE .
DATA LWA_CFMX TYPE TY_CFMX.
DATA LV_TABIX TYPE I.
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.

CALL METHOD GCL_ALV_GRID7->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.

READ TABLE LT_ROW INTO LWA_ROW INDEX 1.
CHECK SY-SUBRC = 0.
GV_ROW = LWA_ROW-ROW_ID.
READ TABLE GT_CFMX INTO LWA_CFMX INDEX LWA_ROW-ROW_ID.
LV_TABIX = LWA_ROW-ROW_ID + 1.
INSERT LWA_CFMX INTO GT_CFMX INDEX LV_TABIX.

CLEAR LV_TABIX.
LOOP AT GT_CFMX INTO LWA_CFMX.
LV_TABIX = LV_TABIX + 1.
LWA_CFMX-ZIDX = LV_TABIX.
MODIFY GT_CFMX FROM LWA_CFMX INDEX SY-TABIX TRANSPORTING ZIDX.
ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_INSERT_LINE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_INSERT_LINE .
DATA LWA_CFMX TYPE TY_CFMX.
DATA LV_TABIX TYPE I.
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.

CALL METHOD GCL_ALV_GRID7->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.

READ TABLE LT_ROW INTO LWA_ROW INDEX 1.
CHECK SY-SUBRC = 0.
GV_ROW = LWA_ROW-ROW_ID.
CLEAR LWA_CFMX.
LV_TABIX = LWA_ROW-ROW_ID + 1.
IF GWA_TDMX_FJ-ZLJBG IS INITIAL
AND GWA_TDMX_FJ-ZPM IS NOT INITIAL AND GWA_TDMX_FJ-ZGG IS NOT INITIAL.
LWA_CFMX-MAKTX = GWA_TDMX_FJ-ZPM && '/' && GWA_TDMX_FJ-ZGG.
LWA_CFMX-MEINS = GWA_TDMX_FJ-MEINS.
LWA_CFMX-MEINS_TXT = GWA_TDMX_FJ-ZUTXT.
ENDIF.

LWA_CFMX-ZCOUNTRY = GWA_TDMX_FJ-COUNTRY.
SELECT SINGLE LANDX FROM T005T
INTO LWA_CFMX-ZCOUNTRY_TXT
WHERE SPRAS = SY-LANGU
AND LAND1 = LWA_CFMX-ZCOUNTRY.

INSERT LWA_CFMX INTO GT_CFMX INDEX LV_TABIX.

"有中间插行的情况,序号需要重新编号
CLEAR LV_TABIX.
LOOP AT GT_CFMX INTO LWA_CFMX.
LV_TABIX = LV_TABIX + 1.
LWA_CFMX-ZIDX = LV_TABIX.
MODIFY GT_CFMX FROM LWA_CFMX INDEX SY-TABIX TRANSPORTING ZIDX.
ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DEL_LINE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DEL_LINE .
DATA LWA_CFMX TYPE TY_CFMX.
DATA LV_TABIX TYPE I.
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LT_CFMX TYPE STANDARD TABLE OF TY_CFMX.

CALL METHOD GCL_ALV_GRID7->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.

LOOP AT LT_ROW INTO LWA_ROW.
* GV_ROW = LWA_ROW-ROW_ID.
READ TABLE GT_CFMX INTO LWA_CFMX INDEX LWA_ROW-ROW_ID.
APPEND LWA_CFMX TO LT_CFMX.
ENDLOOP.
LOOP AT LT_CFMX INTO LWA_CFMX.
READ TABLE GT_CFMX TRANSPORTING NO FIELDS WITH KEY ZIDX = LWA_CFMX-ZIDX.
IF SY-SUBRC = 0.
DELETE GT_CFMX WHERE ZIDX = LWA_CFMX-ZIDX.
ENDIF.
ENDLOOP.

CLEAR LV_TABIX.
LOOP AT GT_CFMX INTO LWA_CFMX.
LV_TABIX = LV_TABIX + 1.
LWA_CFMX-ZIDX = LV_TABIX.
MODIFY GT_CFMX FROM LWA_CFMX INDEX SY-TABIX TRANSPORTING ZIDX.
ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_CURSOR7
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SET_CURSOR7 .
DATA: LT_FRM_POS_ROW TYPE LVC_T_ROID,
LWA_FRM_WA_POS_ROW LIKE LINE OF LT_FRM_POS_ROW.

LWA_FRM_WA_POS_ROW-ROW_ID = GV_ROW.
APPEND LWA_FRM_WA_POS_ROW TO LT_FRM_POS_ROW.

CALL METHOD GCL_ALV_GRID7->SET_SELECTED_ROWS
EXPORTING
IT_ROW_NO = LT_FRM_POS_ROW.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SAVE_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SAVE_DATA .
DATA LWA_CFMX TYPE TY_CFMX.
DATA LT_ZMMT0007 TYPE STANDARD TABLE OF ZMMT0007.
DATA LWA_ZMMT0007 TYPE ZMMT0007.
DATA LT_ZMMT0123 TYPE STANDARD TABLE OF ZMMT0123.
DATA LWA_ZMMT0123 TYPE ZMMT0123.
DATA LT_ZMMT0123C TYPE STANDARD TABLE OF ZMMT0123C.
DATA LWA_ZMMT0123C TYPE ZMMT0123C.
DATA LV_MSG TYPE CHAR100.
DATA LV_FLG.
DATA LV_MAIN_CNT TYPE I.
DATA LV_NO_MAIN_CNT TYPE I.
DATA LV_ITEM_SUM TYPE ZMMT0007-PACK_AMT.
DATA LV_MATNR_18 TYPE CHAR18.
DATA LV_TABIX TYPE I.

"check data
CALL METHOD GCL_ALV_GRID7->CHECK_CHANGED_DATA.
LOOP AT GT_CFMX INTO LWA_CFMX.
LV_TABIX = SY-TABIX.
CLEAR LWA_CFMX-ZMSG.
IF GWA_TDMX_FJ-ZLJBG IS INITIAL.
IF LWA_CFMX-MAKTX IS INITIAL.
LV_FLG = 'X'.
LV_MSG = '拆分品名描述必填'.
CONCATENATE LWA_CFMX-ZMSG LV_MSG INTO LWA_CFMX-ZMSG SEPARATED BY '|'.
ENDIF.
ELSE.
IF LWA_CFMX-MATNR_CF IS INITIAL.
LV_FLG = 'X'.
LV_MSG = '拆分品名编码必填'.
CONCATENATE LWA_CFMX-ZMSG LV_MSG INTO LWA_CFMX-ZMSG SEPARATED BY '|'.
ELSE.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = LWA_CFMX-MATNR_CF
IMPORTING
OUTPUT = LWA_CFMX-MATNR_CF
EXCEPTIONS
LENGTH_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
*
ENDIF.
SELECT COUNT(*) FROM MARA WHERE MATNR = LWA_CFMX-MATNR_CF.
IF SY-SUBRC <> 0.
LV_FLG = 'X'.
LV_MSG = '拆分品名编码不存在'.
CONCATENATE LWA_CFMX-ZMSG LV_MSG INTO LWA_CFMX-ZMSG SEPARATED BY '|'.
ELSE.
SELECT COUNT(*) FROM MARA WHERE MATNR = LWA_CFMX-MATNR_CF
AND ZZEXPINP = 'X'.
IF SY-SUBRC <> 0.
LV_FLG = 'X'.
LV_MSG = '拆分品名编码不是进口物料'.
CONCATENATE LWA_CFMX-ZMSG LV_MSG INTO LWA_CFMX-ZMSG SEPARATED BY '|'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

IF LWA_CFMX-ZCOUNTRY IS INITIAL.
LV_FLG = 'X'.
LV_MSG = '原产国必填'.
CONCATENATE LWA_CFMX-ZMSG LV_MSG INTO LWA_CFMX-ZMSG SEPARATED BY '|'.
ELSE.
* SELECT COUNT(*) FROM T005 WHERE LAND1 = LWA_CFMX-ZCOUNTRY.
SELECT COUNT(*) FROM ZMMT0070 WHERE LAND1 = LWA_CFMX-ZCOUNTRY.
IF SY-SUBRC <> 0.
CLEAR LWA_CFMX-ZCOUNTRY_TXT.
LV_FLG = 'X'.
LV_MSG = '原产国报关对应维护表ZMMT0070未维护'.
CONCATENATE LWA_CFMX-ZMSG LV_MSG INTO LWA_CFMX-ZMSG SEPARATED BY '|'.
ENDIF.
ENDIF.

IF LWA_CFMX-MEINS IS INITIAL.
LV_FLG = 'X'.
LV_MSG = '单位必填'.
CONCATENATE LWA_CFMX-ZMSG LV_MSG INTO LWA_CFMX-ZMSG SEPARATED BY '|'.
ELSE.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = LWA_CFMX-MEINS
* LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LWA_CFMX-MEINS
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
IF GWA_TDMX_FJ-ZLJBG IS NOT INITIAL.
SELECT COUNT(*) FROM MARA
WHERE MATNR = LWA_CFMX-MATNR_CF
AND MEINS = LWA_CFMX-MEINS.
IF SY-SUBRC <> 0.
LV_FLG = 'X'.
LV_MSG = '输入的单位和物料主数据单位不一致'.
CONCATENATE LWA_CFMX-ZMSG LV_MSG INTO LWA_CFMX-ZMSG SEPARATED BY '|'.
ENDIF.
ENDIF.
ENDIF.

IF LWA_CFMX-ZPAKSL IS INITIAL.
LV_FLG = 'X'.
LV_MSG = '装箱数量必填'.
CONCATENATE LWA_CFMX-ZMSG LV_MSG INTO LWA_CFMX-ZMSG SEPARATED BY '|'.
ENDIF.

IF LV_FLG IS INITIAL.
CLEAR LWA_CFMX-ZMSG.
LWA_CFMX-ZSTATUS = ICON_LED_GREEN.
ELSE.
LWA_CFMX-ZSTATUS = ICON_LED_RED.
ENDIF.
MODIFY GT_CFMX FROM LWA_CFMX INDEX LV_TABIX TRANSPORTING ZMSG ZSTATUS.
ENDLOOP.

LOOP AT GT_CFMX TRANSPORTING NO FIELDS WHERE ZMSG <> SPACE.
ENDLOOP.
IF SY-SUBRC <> 0.
CLEAR LV_FLG.
ENDIF.

CHECK LV_FLG IS INITIAL.
CLEAR GV_ROW.
IF FLG_RETURN = SPACE. "正常处理
SELECT * FROM ZMMT0007
INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0007
WHERE VBELN = GWA_TDMX_FJ-VBELN
AND POSNR = GWA_TDMX_FJ-POSNR.
IF SY-SUBRC = 0.
LOOP AT LT_ZMMT0007 INTO LWA_ZMMT0007.
CLEAR LWA_ZMMT0123.
MOVE-CORRESPONDING LWA_ZMMT0007 TO LWA_ZMMT0123.
CALL FUNCTION 'RS_DME_MG_GENERATE_GUID2'
IMPORTING
E_GUID = LWA_ZMMT0123-GUID.
LWA_ZMMT0123-WHO_DEL = SY-UNAME.
LWA_ZMMT0123-DEL_DATUM = SY-DATUM.
LWA_ZMMT0123-DEL_TIME = SY-UZEIT.
APPEND LWA_ZMMT0123 TO LT_ZMMT0123.
ENDLOOP.

MODIFY ZMMT0123 FROM TABLE LT_ZMMT0123.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT .
"更新前先删除表里原有数据
DELETE FROM ZMMT0007 WHERE VBELN = GWA_TDMX_FJ-VBELN
AND POSNR = GWA_TDMX_FJ-POSNR
AND RECORD_TYPE = 'Z1'.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT .
ENDIF.
"更新前先删除表里原有数据 add cjj 20190601
DELETE FROM ZMMT0123C WHERE VBELN = GWA_TDMX_FJ-VBELN
AND POSNR = GWA_TDMX_FJ-POSNR.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT .
ENDIF.
ENDIF.
ENDIF.
ELSE. "退货处理
SELECT * FROM ZMMT0123C
INTO CORRESPONDING FIELDS OF TABLE LT_ZMMT0123C
WHERE VBELN = GWA_TDMX_FJ-VBELN
AND POSNR = GWA_TDMX_FJ-POSNR.
IF SY-SUBRC = 0.
LOOP AT LT_ZMMT0123C INTO LWA_ZMMT0123C.
CLEAR LWA_ZMMT0123C.
MOVE-CORRESPONDING LWA_ZMMT0123C TO LWA_ZMMT0123.
CALL FUNCTION 'RS_DME_MG_GENERATE_GUID2'
IMPORTING
E_GUID = LWA_ZMMT0123-GUID.
LWA_ZMMT0123-WHO_DEL = SY-UNAME.
LWA_ZMMT0123-DEL_DATUM = SY-DATUM.
LWA_ZMMT0123-DEL_TIME = SY-UZEIT.
APPEND LWA_ZMMT0123 TO LT_ZMMT0123.
ENDLOOP.

MODIFY ZMMT0123 FROM TABLE LT_ZMMT0123.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT .
"更新前先删除表里原有数据 add cjj 20190601
DELETE FROM ZMMT0123C WHERE VBELN = GWA_TDMX_FJ-VBELN
AND POSNR = GWA_TDMX_FJ-POSNR.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT .
ENDIF.
ENDIF.
ENDIF.
ENDIF.

DATA LV_ZRECORD_NO TYPE ZMMT0007-RECORD_NO.
CLEAR LT_ZMMT0007.
CLEAR: LV_MAIN_CNT,LV_NO_MAIN_CNT.
LOOP AT GT_CFMX INTO LWA_CFMX.
IF LWA_CFMX-ZZJ IS NOT INITIAL.
LV_MAIN_CNT = LV_MAIN_CNT + 1.
ELSE.
LV_NO_MAIN_CNT = LV_NO_MAIN_CNT + 1.
ENDIF.
ENDLOOP.
LOOP AT GT_CFMX INTO LWA_CFMX.
CLEAR LWA_ZMMT0007.
CLEAR LV_ZRECORD_NO.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = '01'
OBJECT = 'ZRECORD_NO'
IMPORTING
NUMBER = LV_ZRECORD_NO
EXCEPTIONS
INTERVAL_NOT_FOUND = 1
NUMBER_RANGE_NOT_INTERN = 2
OBJECT_NOT_FOUND = 3
QUANTITY_IS_0 = 4
QUANTITY_IS_NOT_1 = 5
INTERVAL_OVERFLOW = 6
BUFFER_OVERFLOW = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
ELSE.
LWA_ZMMT0007-RECORD_NO = LV_ZRECORD_NO.
ENDIF.
LWA_ZMMT0007-SORT_ORDER = LWA_CFMX-ZIDX.
LWA_ZMMT0007-RECORD_TYPE = 'Z1'.
LWA_ZMMT0007-VBELN = GWA_TDMX_FJ-VBELN.
LWA_ZMMT0007-POSNR = GWA_TDMX_FJ-POSNR.
LWA_ZMMT0007-MATNR = GWA_TDMX_FJ-MATNR.
LWA_ZMMT0007-SORT_ORDER = LWA_CFMX-ZIDX.
LWA_ZMMT0007-PACK_BILL = LWA_CFMX-ZPAKNO.
LWA_ZMMT0007-ITEM_ID = LWA_CFMX-MATNR_CF.
LWA_ZMMT0007-ITEM_NAME = LWA_CFMX-MAKTX.
LWA_ZMMT0007-UNIT = LWA_CFMX-MEINS.
LWA_ZMMT0007-PACK_QTY = LWA_CFMX-ZPAKSL.
LWA_ZMMT0007-COUNTRY = LWA_CFMX-ZCOUNTRY.
LWA_ZMMT0007-MAIN_PART = LWA_CFMX-ZZJ.
LWA_ZMMT0007-MEMO = LWA_CFMX-ZMEMO.
LWA_ZMMT0007-PART_CUST = GWA_TDMX_FJ-ZLJBG.
LWA_ZMMT0007-TAX_TYPE = GWA_TDMX_FJ-TAX_TYPE.
LWA_ZMMT0007-CHARG = GWA_TDMX_FJ-CHARG.
LWA_ZMMT0007-CREATOR = SY-UNAME.
LWA_ZMMT0007-CREATE_DATE = SY-DATUM.
LWA_ZMMT0007-CREATE_TIME = SY-UZEIT.
LWA_ZMMT0007-MENGE = GWA_TDMX_FJ-ZLFIMG.
LWA_ZMMT0007-WERKS = GWA_TDMX_FJ-WERKS.
LWA_ZMMT0007-MAT_PSPNR = GWA_TDMX_FJ-PS_PSP_PNR. "add cjj 20190729
"将金额分滩到拆分表: 主件分摊80%金额,非主件分摊20%金额(如果全是主件或非主件就直接 金额/主件或非主件纪录数)
IF LWA_CFMX-ZZJ IS NOT INITIAL AND LV_MAIN_CNT IS NOT INITIAL AND LV_NO_MAIN_CNT IS NOT INITIAL.
LWA_ZMMT0007-PACK_AMT = ( GWA_TDMX_FJ-ZJE * 80 ) / ( LV_MAIN_CNT * 100 ).
"全是主件
ELSEIF LWA_CFMX-ZZJ IS NOT INITIAL AND LV_MAIN_CNT IS NOT INITIAL AND LV_NO_MAIN_CNT IS INITIAL.
LWA_ZMMT0007-PACK_AMT = GWA_TDMX_FJ-ZJE / LV_MAIN_CNT.
"主件没有
ELSEIF LWA_CFMX-ZZJ IS INITIAL AND LV_NO_MAIN_CNT IS NOT INITIAL AND LV_MAIN_CNT IS INITIAL.
LWA_ZMMT0007-PACK_AMT = GWA_TDMX_FJ-ZJE / LV_NO_MAIN_CNT.
ELSEIF LWA_CFMX-ZZJ IS INITIAL AND LV_NO_MAIN_CNT IS NOT INITIAL AND LV_MAIN_CNT IS NOT INITIAL.
LWA_ZMMT0007-PACK_AMT = ( GWA_TDMX_FJ-ZJE * 20 ) / ( LV_NO_MAIN_CNT * 100 ).
ENDIF.
LWA_ZMMT0007-WAERS = GWA_TDMX_FJ-WAERS.
IF LWA_ZMMT0007-PACK_QTY IS NOT INITIAL.
LWA_ZMMT0007-PACK_PRICE = LWA_ZMMT0007-PACK_AMT / LWA_ZMMT0007-PACK_QTY.
ENDIF.
LV_ITEM_SUM = LV_ITEM_SUM + LWA_ZMMT0007-PACK_AMT.

APPEND LWA_ZMMT0007 TO LT_ZMMT0007.
ENDLOOP.

"尾差抹平
IF LV_ITEM_SUM <> GWA_TDMX_FJ-ZJE.
LOOP AT LT_ZMMT0007 INTO LWA_ZMMT0007.
LWA_ZMMT0007-PACK_AMT = LWA_ZMMT0007-PACK_AMT + ( GWA_TDMX_FJ-ZJE - LV_ITEM_SUM ).
MODIFY LT_ZMMT0007 FROM LWA_ZMMT0007 INDEX SY-TABIX.
EXIT.
ENDLOOP.

ENDIF.
* 退货处理 20190529 start
DATA: "LT_ZMMT0123C TYPE STANDARD TABLE OF ZMMT0123C,
LS_ZMMT0123C TYPE ZMMT0123C.
CLEAR LT_ZMMT0123C .
IF FLG_RETURN <> SPACE.
LOOP AT LT_ZMMT0007 INTO LWA_ZMMT0007.
MOVE-CORRESPONDING LWA_ZMMT0007 TO LS_ZMMT0123C.
LS_ZMMT0123C-VBELN = GWA_TDMX_FJ-VBELN.
APPEND LS_ZMMT0123C TO LT_ZMMT0123C.
CLEAR :LS_ZMMT0123C,LWA_ZMMT0007.
ENDLOOP.
IF LT_ZMMT0123C IS NOT INITIAL.
MODIFY ZMMT0123C FROM TABLE LT_ZMMT0123C.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
MESSAGE '保存成功' TYPE 'I'.
LWA_CFMX-ZMSG = '保存成功'.
MODIFY GT_CFMX FROM LWA_CFMX TRANSPORTING ZMSG WHERE ZMSG = SPACE.
ELSE.
ROLLBACK WORK.
MESSAGE '保存失败' TYPE 'I'.
ENDIF.
ENDIF.
ELSE.
* 退货处理 20190529 end
IF LT_ZMMT0007 IS NOT INITIAL.
MODIFY ZMMT0007 FROM TABLE LT_ZMMT0007.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
MESSAGE '保存成功' TYPE 'I'.
LWA_CFMX-ZMSG = '保存成功'.
MODIFY GT_CFMX FROM LWA_CFMX TRANSPORTING ZMSG WHERE ZMSG = SPACE.
ELSE.
ROLLBACK WORK.
MESSAGE '保存失败' TYPE 'I'.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9700 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9700 OUTPUT.
SET PF-STATUS 'STA_9700'.
SET TITLEBAR 'TIL_9700'.
PERFORM FRM_SHOW_FJXS.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_SHOW_FJXS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SHOW_FJXS .
DATA LWA_LAYOUT TYPE LVC_S_LAYO.
DATA IS_VARIANT TYPE DISVARIANT.

" 开始- 通过TR - S4DK906152 添加 20190614
" 清空刷新ALV
IF GCL_ALV_GRID9 IS NOT INITIAL.

* Free objects
IF GCL_ALV_GRID9 IS NOT INITIAL.
GCL_ALV_GRID9->FREE( ).
CLEAR:GCL_ALV_GRID9.
ENDIF.

IF GCL_CCONTAINER9 IS NOT INITIAL.
GCL_CCONTAINER9->FREE( ).
CLEAR:GCL_CCONTAINER9.
ENDIF.

ENDIF.
" 结束 - 通过TR - S4DK906152 添加 20190614

"show head data
IF GCL_ALV_GRID9 IS INITIAL.
CREATE OBJECT GCL_CCONTAINER9
EXPORTING
CONTAINER_NAME = 'CON9'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CREATE OBJECT GCL_ALV_GRID9
EXPORTING
I_PARENT = GCL_CCONTAINER9.

PERFORM FRM_GET_FIELDCAT USING 'GT_FJXS'.
PERFORM FRM_GET_EXCLUDE CHANGING GT_EXCLUDE.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.

IS_VARIANT-REPORT = SY-REPID.

CALL METHOD GCL_ALV_GRID9->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = LWA_LAYOUT
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_VARIANT = IS_VARIANT
I_DEFAULT = 'X'
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = GT_FIELDCAT9
IT_OUTTAB = GT_FJXS.

ELSE.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
CALL METHOD GCL_ALV_GRID9->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = LWA_LAYOUT.
CALL METHOD GCL_ALV_GRID9->REFRESH_TABLE_DISPLAY.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Module MDU_CANCEL_9400 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MDU_CANCEL_9400 INPUT.

PERFORM FRM_GET_DATA.
CLEAR GT_ITEM.
CLEAR LWA_HEAD.
READ TABLE GT_HEAD INTO LWA_HEAD INDEX GV_ROW_HEAD.
PERFORM FRM_UNLOCK_DATA USING LWA_HEAD-VBELN.
GT_ITEM = GT_ITEM_ALL.
DELETE GT_ITEM WHERE VBELN <> LWA_HEAD-VBELN.
LEAVE TO SCREEN 0.

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_IMPORT_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_IMPORT_DATA .
TYPES: BEGIN OF TY_DATA,
ZIDX TYPE I, "排列序号
ZPAKNO TYPE CHAR20, "装箱单号
MATNR_CF TYPE MARA-MATNR, "拆分品名编码
MAKTX TYPE MAKT-MAKTX, "拆分品名描述
ZCOUNTRY_TXT TYPE CHAR20 , "原产国text
ZCOUNTRY TYPE LIPS-COUNTRY, "原产国
MEINS_TXT TYPE CHAR30, "拆分计量单位text
MEINS TYPE MARA-MEINS, "拆分计量单位
ZPAKSL TYPE LIPS-LFIMG, "装箱数量
ZZJ TYPE CHAR01, "是否主件
ZMEMO TYPE CHAR100, "备注
END OF TY_DATA.
DATA:L_RC TYPE I,
LT_FILE_NAME TYPE FILETABLE,
LWA_FILE_TABLE TYPE FILE_TABLE.
DATA LV_FILENAME TYPE RLGRAP-FILENAME.
DATA LT_EXCEL TYPE TABLE OF ALSMEX_TABLINE.
DATA LWA_EXCEL TYPE ALSMEX_TABLINE.
DATA LWA_DATA TYPE TY_DATA.
DATA LWA_CFMX TYPE TY_CFMX.
DATA LT_DATA TYPE STANDARD TABLE OF TY_DATA.
DATA LV_MATNR_18 TYPE CHAR18.
DATA LT_CFMX TYPE STANDARD TABLE OF TY_CFMX.
FIELD-SYMBOLS :<FS_FIELD> TYPE ANY.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
CHANGING
FILE_TABLE = LT_FILE_NAME
RC = L_RC
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
READ TABLE LT_FILE_NAME INDEX 1 INTO LWA_FILE_TABLE.
LV_FILENAME = LWA_FILE_TABLE-FILENAME.
ENDIF.

CHECK LV_FILENAME IS NOT INITIAL.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = LV_FILENAME
I_BEGIN_COL = 1
I_BEGIN_ROW = 2
I_END_COL = 11
I_END_ROW = 5000
TABLES
INTERN = LT_EXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0 AND SY-MSGTY IS NOT INITIAL.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF LT_EXCEL IS INITIAL.
MESSAGE '没有数据' TYPE 'I'.
ENDIF.
CHECK LT_EXCEL IS NOT INITIAL.

* 编辑excel数据到内表
LOOP AT LT_EXCEL INTO LWA_EXCEL.
ON CHANGE OF LWA_EXCEL-ROW.
IF SY-TABIX NE 1.
APPEND LWA_DATA TO LT_DATA.
CLEAR LWA_DATA.
ENDIF.
ENDON.
* 动态方法将值传到相应的内表
ASSIGN COMPONENT LWA_EXCEL-COL OF STRUCTURE LWA_DATA TO <FS_FIELD>.
TRY.
<FS_FIELD> = LWA_EXCEL-VALUE.
CATCH CX_SY_CONVERSION_NO_NUMBER.
CLEAR <FS_FIELD>.
ENDTRY.
ENDLOOP.
APPEND LWA_DATA TO LT_DATA.

DATA LV_CNT TYPE I.
IF GWA_TDMX_FJ-ZLJBG IS INITIAL.
DELETE LT_DATA WHERE MAKTX IS INITIAL.
ELSE.
DELETE LT_DATA WHERE MATNR_CF IS INITIAL.
ENDIF.

IF GT_CFMX IS NOT INITIAL.
LT_CFMX = GT_CFMX.
SORT LT_CFMX BY ZIDX DESCENDING.
READ TABLE LT_CFMX INTO LWA_CFMX INDEX 1.
LV_CNT = LWA_CFMX-ZIDX.
ENDIF.

LOOP AT LT_DATA INTO LWA_DATA.
LV_CNT = LV_CNT + 1.
CLEAR LWA_CFMX.
TRY .
LWA_CFMX-ZPAKSL = LWA_DATA-ZPAKSL.
CATCH CX_SY_CONVERSION_NO_NUMBER.
CLEAR LWA_CFMX-ZPAKSL.
ENDTRY.
LWA_CFMX-ZPAKNO = LWA_DATA-ZPAKNO.
IF GWA_TDMX_FJ-ZLJBG IS INITIAL.
CLEAR LWA_CFMX-MATNR_CF.
LWA_CFMX-MAKTX = LWA_DATA-MAKTX.
ELSE.
LWA_CFMX-MATNR_CF = LWA_DATA-MATNR_CF.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = LWA_DATA-MATNR_CF
IMPORTING
OUTPUT = LV_MATNR_18
EXCEPTIONS
LENGTH_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
*
ENDIF.

SELECT SINGLE MAKTX FROM MAKT
INTO LWA_CFMX-MAKTX
WHERE MATNR = LV_MATNR_18
AND SPRAS = SY-LANGU.
LWA_DATA-MATNR_CF = LV_MATNR_18.
ENDIF.

IF LWA_DATA-MEINS IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = LWA_DATA-MEINS
* LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LWA_CFMX-MEINS
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ELSE.

SELECT SINGLE MEINS FROM MARA INTO LWA_CFMX-MEINS
WHERE MATNR = LV_MATNR_18.
ENDIF.

LWA_CFMX-ZCOUNTRY = LWA_DATA-ZCOUNTRY.
LWA_CFMX-ZZJ = LWA_DATA-ZZJ.
LWA_CFMX-ZMEMO = LWA_DATA-ZMEMO.

LWA_CFMX-ZIDX = LV_CNT.
PERFORM FRM_GET_UNIT_TXT USING LWA_CFMX-MEINS
CHANGING LWA_CFMX-MEINS_TXT.
IF LWA_CFMX-MEINS_TXT IS INITIAL.
CLEAR LWA_CFMX-MEINS.
ENDIF.
SELECT SINGLE LANDX FROM T005T
INTO LWA_CFMX-ZCOUNTRY_TXT
WHERE SPRAS = SY-LANGU
AND LAND1 = LWA_CFMX-ZCOUNTRY.
IF SY-SUBRC <> 0.
CLEAR LWA_CFMX-ZCOUNTRY.
ENDIF.
APPEND LWA_CFMX TO GT_CFMX.
ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DOWN_MOBAN
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DOWN_MOBAN .
DATA:
LO_EXCEL TYPE OLE2_OBJECT,
LO_APPLICA TYPE OLE2_OBJECT,
LO_SHEET TYPE OLE2_OBJECT,
LO_WORKBOOK TYPE OLE2_OBJECT,
LV_OBJDATA LIKE WWWDATATAB,
LV_OBJ_NAME LIKE WWWDATATAB-OBJID,
LV_SUBRC LIKE SY-SUBRC.
CONSTANTS CNS_PATH TYPE CHAR128 VALUE 'C:TMP提单拆分数据导入模板.xlsx'.

MOVE 'ZMMR0123' TO LV_OBJ_NAME.

CREATE OBJECT LO_EXCEL 'EXCEL.APPLICATION'.
GET PROPERTY OF LO_EXCEL 'Workbooks' = LO_WORKBOOK .
CALL METHOD OF
LO_WORKBOOK
'Close'.

SELECT SINGLE RELID OBJID
FROM WWWDATA
INTO CORRESPONDING FIELDS OF LV_OBJDATA
WHERE SRTF2 = 0 AND RELID = 'MI'
AND OBJID = LV_OBJ_NAME.

CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
KEY = LV_OBJDATA
DESTINATION = CNS_PATH
IMPORTING
RC = LV_SUBRC.
IF LV_SUBRC = 0.

ENDIF.

CALL METHOD OF
LO_WORKBOOK
'open'
EXPORTING
#1 = CNS_PATH.

CALL METHOD OF
LO_EXCEL
'worksheets' = LO_SHEET
EXPORTING
#1 = 1.
CALL METHOD OF
LO_SHEET
'activate'.

SET PROPERTY OF LO_EXCEL 'visible' = 1.

FREE OBJECT LO_SHEET.
FREE OBJECT LO_APPLICA.
FREE OBJECT LO_WORKBOOK.
FREE OBJECT LO_EXCEL.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_LOCK_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LWA_HEAD_VBELN
*& <-- LV_LOCK_FLG
*&---------------------------------------------------------------------*
FORM FRM_LOCK_DATA USING LWA_HEAD_VBELN TYPE CHAR15" LIKP-VBELN
CHANGING LV_LOCK_FLG.

CALL FUNCTION 'ENQUEUE_EZMMS0124'
EXPORTING
* MODE_ZMMS0124 = 'E'
VBELN = LWA_HEAD_VBELN
* X_VBELN = ' '
* _SCOPE = '2'
* _WAIT = ' '
* _COLLECT = ' '
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
LV_LOCK_FLG = 'X'.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
CLEAR LV_LOCK_FLG.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_UNLOCK_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> GWA_JKTD_VBELN
*&---------------------------------------------------------------------*
FORM FRM_UNLOCK_DATA USING P_GWA_JKTD_VBELN.
CALL FUNCTION 'DEQUEUE_EZMMS0124'
EXPORTING
* MODE_ZMMS0124 = 'E'
VBELN = P_GWA_JKTD_VBELN
* X_VBELN = ' '
* _SCOPE = '3'
* _SYNCHRON = ' '
* _COLLECT = ' '
.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PRINT_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text

*&---------------------------------------------------------------------*
FORM FRM_PRINT_DATA .
DATA LWA_ZMMS0133 TYPE ZMMS0133.
DATA LT_ZMMS0134 TYPE STANDARD TABLE OF ZMMS0134.
DATA LWA_ZMMS0134 TYPE ZMMS0134.
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LT_HEAD_SEL TYPE STANDARD TABLE OF TY_HEAD.
DATA LV_CNT TYPE I.
DATA LWA_ITEM TYPE TY_ITEM.
DATA LV_TABIX TYPE I.
DATA LV_SUM TYPE LIPS-LFIMG.
DATA: LV_ERNAM TYPE EKKO-ERNAM. "add cjj 20190911
DATA LV_FM_NAME TYPE RS38L_FNAM.
DATA: LW_CONTROL_PARAMETERS TYPE SSFCTRLOP,
JOB_OUTPUT_INFO TYPE SSFCRESCL,
LW_OUTPUT_OPTIONS TYPE SSFCOMPOP.
DATA LV_COUNT TYPE I.
DATA LV_MOD TYPE I.
DATA LV_BBJE TYPE EKPO-NETWR.

CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
READ TABLE GT_HEAD INTO GWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND GWA_HEAD TO LT_HEAD_SEL.
ENDIF.
ENDLOOP.
DESCRIBE TABLE LT_HEAD_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
MESSAGE '请选择一条数据进行打印' TYPE 'E'.
ENDIF.
CLEAR GWA_HEAD.
READ TABLE LT_HEAD_SEL INTO GWA_HEAD INDEX 1.
MOVE-CORRESPONDING GWA_HEAD TO LWA_ZMMS0133.
IF GWA_HEAD-LFDAT IS NOT INITIAL.
LWA_ZMMS0133-LFDAT = GWA_HEAD-LFDAT(4) && '-' && GWA_HEAD-LFDAT+4(2)
&& '-' && GWA_HEAD-LFDAT+6(2).
ENDIF.
"标题
SELECT COUNT(*) FROM LIKP WHERE VBELN = GWA_HEAD-VBELN AND WBSTK = 'A'.
IF SY-SUBRC = 0.
LWA_ZMMS0133-TITLE = '进口件在途入库单'.
ELSE.
LWA_ZMMS0133-TITLE = '进口件入库单'.
ENDIF.
"运费
LWA_ZMMS0133-ZYUFEI = GWA_HEAD-FREIGHT.
CONDENSE LWA_ZMMS0133-ZYUFEI.

CLEAR: LV_SUM,LV_TABIX.
LOOP AT GT_ITEM_ALL INTO LWA_ITEM WHERE VBELN = GWA_HEAD-VBELN.
LV_TABIX = LV_TABIX + 1.
CLEAR LWA_ZMMS0134.
MOVE-CORRESPONDING LWA_ITEM TO LWA_ZMMS0134.
LWA_ZMMS0134-ZIDX = LV_TABIX.
CONDENSE: LWA_ZMMS0134-ZIDX,LWA_ZMMS0134-LFIMG.
LV_SUM = LV_SUM + LWA_ITEM-LFIMG.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
INPUT = LWA_ITEM-MATNR
IMPORTING
OUTPUT = LWA_ZMMS0134-MATNR.

CALL FUNCTION 'CONVERSION_EXIT_KONPD_OUTPUT'
EXPORTING
INPUT = LWA_ITEM-PSPHI
IMPORTING
OUTPUT = LWA_ZMMS0134-PSPHI.

"货币
LWA_ZMMS0134-ZHB = LWA_ITEM-WAERS.
"外币金额
WRITE LWA_ITEM-ZJE TO LWA_ZMMS0134-ZWBJE CURRENCY LWA_ITEM-WAERS.
CONDENSE LWA_ZMMS0134-ZWBJE.
"本币额
IF GWA_HEAD-WKURS <> 0.
CLEAR LV_BBJE.
* LV_BBJE = LWA_ITEM-ZJE / GWA_HEAD-WKURS.
LV_BBJE = LWA_ITEM-ZJE * GWA_HEAD-WKURS.
* add cjj 20190911 start
SELECT SINGLE ERNAM
INTO LV_ERNAM
FROM EKKO
WHERE EBELN = LWA_ITEM-VGBEL.
IF LV_ERNAM = '66660027'.
WRITE LV_BBJE TO LWA_ZMMS0134-ZBBJE CURRENCY LWA_ITEM-WAERS.
ELSE.
* add cjj 20190911 end
* WRITE LV_BBJE TO LWA_ZMMS0134-ZBBJE CURRENCY LWA_ITEM-WAERS.
WRITE LV_BBJE TO LWA_ZMMS0134-ZBBJE." CURRENCY LWA_ITEM-WAERS.
ENDIF. "add cjj 20190911
CONDENSE LWA_ZMMS0134-ZBBJE.
ENDIF.

APPEND LWA_ZMMS0134 TO LT_ZMMS0134.
ENDLOOP.
DESCRIBE TABLE LT_ZMMS0134 LINES LV_COUNT.
IF LV_COUNT <= 14.
DO 14 - LV_COUNT TIMES.
APPEND INITIAL LINE TO LT_ZMMS0134.
ENDDO.
ELSE.
LV_MOD = LV_COUNT MOD 14.
DO 14 - LV_MOD TIMES.
APPEND INITIAL LINE TO LT_ZMMS0134.
ENDDO.
ENDIF.

CLEAR LWA_ZMMS0134.
WRITE GWA_HEAD-ZFYJE TO LWA_ZMMS0134-ZWBJE CURRENCY GWA_HEAD-WAERS.
CONDENSE LWA_ZMMS0134-ZWBJE.
LWA_ZMMS0134-ZMATKL = '货值:'.
LWA_ZMMS0134-LFIMG = LV_SUM.
CONDENSE LWA_ZMMS0134-LFIMG.
LWA_ZMMS0134-ZZSPEC = ' 合计:'.
APPEND LWA_ZMMS0134 TO LT_ZMMS0134.

CLEAR LWA_ZMMS0134.
LWA_ZMMS0134-ZMATKL = '运费:'.
WRITE GWA_HEAD-FREIGHT TO LWA_ZMMS0134-ZWBJE CURRENCY GWA_HEAD-WAERS.
CONDENSE LWA_ZMMS0134-ZWBJE.
APPEND LWA_ZMMS0134 TO LT_ZMMS0134.

CLEAR LWA_ZMMS0134.
LWA_ZMMS0134-ZMATKL = '金额:'.
CLEAR LV_BBJE.
LV_BBJE = GWA_HEAD-ZFYJE + GWA_HEAD-FREIGHT.
WRITE LV_BBJE TO LWA_ZMMS0134-ZWBJE CURRENCY GWA_HEAD-WAERS.

CONDENSE LWA_ZMMS0134-ZWBJE.
APPEND LWA_ZMMS0134 TO LT_ZMMS0134.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZMMF0123'
IMPORTING
FM_NAME = LV_FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL FUNCTION LV_FM_NAME
EXPORTING
LWA_HEAD = LWA_ZMMS0133
CONTROL_PARAMETERS = LW_CONTROL_PARAMETERS
OUTPUT_OPTIONS = LW_OUTPUT_OPTIONS
IMPORTING
JOB_OUTPUT_INFO = JOB_OUTPUT_INFO
TABLES
LT_ITEM = LT_ZMMS0134
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_EXPORT_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_EXPORT_DATA .
TYPES: BEGIN OF TY_DOWN,
VBELN TYPE CHAR15, "LIKP-VBELN, "系统编号 rep cjj 20190605
POSNR TYPE LIPS-POSNR, "提单行项目
ZSTATUS_TXT TYPE CHAR10, "状态text
ZCONF_TXT TYPE CHAR10, "确认text
ZLEIBIE TYPE CHAR10, "类别
NO_CUST_TXT TYPE CHAR10, "是否报关
ZKEGONG TYPE CHAR01, "客供
ZHTH TYPE EKKO-ZHTH, "合同编号
ZDELIVERYPLANNO TYPE LIKP-ZDELIVERYPLANNO, "合同批次
EKGRP TYPE EKKO-EKGRP, "采购员
EKGRP_TXT TYPE T024-EKNAM, "采购员text
LIFNR TYPE EKKO-LIFNR, "供应商
LIFNR_TXT TYPE CHAR100, "供应商text
WERKS TYPE LIKP-WERKS, "入库基地
WERKS_TXT TYPE T001W-NAME1, "入库基地text
ZLSCH TYPE EKKO-ZLSCH, "支付方式
ZLSCH_TXT TYPE CHAR30, "支付方式
SGTXT TYPE LIKP-SGTXT, "货物名称
ANZPK TYPE LIKP-ANZPK, "件数
BTGEW TYPE LIKP-BTGEW, "毛重
NTGEW TYPE LIKP-NTGEW, "净重
GEWEI TYPE LIKP-GEWEI, "重量单位
GEWEI_TXT TYPE CHAR30, "重量单位text
WKURS TYPE WKURS, "人民币汇率
ZFYJE TYPE EKPO-NETWR, "发运金额
FREIGHT TYPE EKPO-NETWR, "运费
ZTAX TYPE T007V-KBETR, "税率
ZTOL TYPE EKPO-NETWR, "总额: 发运金额 + 运费
BOLNR TYPE LIKP-BOLNR, "提单号(外部)
INV_NO TYPE LIKP-INV_NO, "发票号码
PACK_DATE TYPE LIKP-PACK_DATE, "提单日期
CUST_NO TYPE LIKP-CUST_NO, "报关单号
ITM_EXPVZ TYPE LIKP-ITM_EXPVZ, "发运类型
ITM_EXPVZ_TXT TYPE CHAR20, "发运类型text
TRADE_TYPE TYPE LIKP-TRADE_TYPE, "贸易类型
TRADE_TYPE_TXT TYPE CHAR20, "贸易类型text
LDDAT TYPE LIKP-LDDAT, "装船日期
ITM_KZGBE TYPE LIKP-ITM_KZGBE, "起运港
DUE_ARRIVE_DATE TYPE LIKP-DUE_ARRIVE_DATE, "预计到港日期
LFDAT TYPE LIKP-LFDAT, "预计到货日期
ZQSRQ TYPE DATUM, "签收日期
ZDHQS TYPE CHAR10, "到货签收
USNAM TYPE MKPF-USNAM, "入库人
USNAM_TXT TYPE CHAR80, "入库人text
BUDAT TYPE MKPF-BUDAT, "入库日期
MBLNR TYPE MSEG-MBLNR, "收货凭证 add 20190611
MEMO TYPE CHAR100, "备注
ERDAT TYPE LIKP-ERDAT, "创建日期
AEDAT TYPE LIKP-AEDAT, "修改日期
ZZNAME1 TYPE MARA-ZZNAME1, "品名
ZZCODE TYPE MARA-ZZCODE, "标准
ZZBASM TYPE MARA-ZZBASM, "材质
ZZSPEC TYPE MARA-ZZSPEC, "规格
IL_STATUS_TXT TYPE CHAR10, "备案状态
IL_STATUS_LJBG TYPE CHAR10, "零件报关备案状态
IL_HS_CODE TYPE ZMMT0005-IL_HS_CODE, "海关编码
IL_HS_ATTACH TYPE ZMMT0005-IL_HS_ATTACH, "附加码
IL_EMS_NO TYPE ZMMT0005-IL_EMS_NO, "报关项号
"开始-通过TR - S4DK906152 添加 20190614
IL_STATUS_TXT_N TYPE CHAR10, "新账册备案状态
IL_STATUS_LJBG_N TYPE CHAR10, "新账册零件报关备案状态
IL_HS_NR TYPE ZE_HS_NR, "HS编码
IL_EMS_NO_1 TYPE ZE_EMS_NO_1, "海关商品料号
"结束-通过TR - S4DK906152 添加 20190614
LGORT TYPE LIPS-LGORT, "入库仓库
LGORT_TXT TYPE CHAR30, "入库仓库
LGORT1 TYPE EKPO-LGORT, "计划仓库
LGORT1_TXT TYPE CHAR30, "计划仓库
WERKS1 TYPE EKPO-WERKS, "计划工厂
PSPHI TYPE PRPS-PSPHI, "产品工号
ZGHZT TYPE CHAR10, "产品工号状态
POST1 TYPE PROJ-POST1, "项目明称
ZLARQ TYPE DATUM, "离岸日期
ZLXRQ TYPE DATUM, "立项日期
ZTAXTYPE TYPE CHAR10, "赋税类型
ZTAXTYPE_TXT TYPE CHAR10, "赋税类型text
ZCGSM TYPE CHAR100, "采购说明
LFIMG TYPE LIPS-LFIMG, "发运数量
MWSKZ TYPE EKPO-MWSKZ, "税码
ZJE TYPE EKPO-NETWR, "金额
ZPRICE TYPE EKPO-NETWR, "价格
WAERS TYPE EKKO-WAERS, "货币
WAERS_TXT TYPE CHAR30, "货币
PART_CUST TYPE CHAR01, "零件报关
PART_CUST_TXT TYPE CHAR02, "零件报关text
PACK_CNT TYPE I, "分解项数
MEINS_TXT TYPE T006A-MSEHT, "单位描述
COUNTRY TYPE LIPS-COUNTRY, "原产国
COUNTRY_TXT TYPE CHAR30 , "原产国text
VGBEL TYPE LIPS-VGBEL, "采购单号
VGPOS TYPE LIPS-VGPOS, "采购单行号
ZMATKL TYPE CHAR02, "类别
ZMATKL_TXT TYPE CHAR30, "类别text
ZJDFL TYPE CHAR10, "节点分类
ZSGDH TYPE CHAR10, "申购单号
ZMEMO TYPE CHAR100, "IBD项目文本
MATNR TYPE LIPS-MATNR, "物资编码
BANFN TYPE EKPO-BANFN, "计划编号
BNFPO TYPE EKPO-BNFPO, "计划行号
SHKZG TYPE LIPS-SHKZG, "退货项目
CHARG TYPE LIPS-CHARG, "批次
END OF TY_DOWN.

DATA LT_DOWN TYPE STANDARD TABLE OF TY_DOWN.
DATA LWA_DOWN TYPE TY_DOWN.
DATA LV_FILENAME TYPE STRING.
DATA LWA_ITEM TYPE TY_ITEM.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LV_FOLDER TYPE STRING.
DATA LV_TITLE TYPE STRING VALUE '请选择保存的路径名'.
DATA LV_FILTER TYPE STRING.
DATA: LV_FULLPATH TYPE STRING,
LV_PATH TYPE STRING,
LV_FILE TYPE STRING.

CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL
INTO LV_FILTER.
LV_FILENAME = '提单导出' && '_' && SY-DATUM && '_' && SY-UZEIT && '.xls'.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
DEFAULT_FILE_NAME = LV_FILENAME
WINDOW_TITLE = LV_TITLE
FILE_FILTER = LV_FILTER
CHANGING
FILENAME = LV_FILE
PATH = LV_PATH
FULLPATH = LV_FULLPATH.
IF LV_FULLPATH IS NOT INITIAL.
ELSE.
MESSAGE E005(ZPP001) WITH '操作取消'.
ENDIF.

LOOP AT GT_ITEM_ALL INTO LWA_ITEM.
MOVE-CORRESPONDING LWA_ITEM TO LWA_DOWN.
CLEAR LWA_HEAD.
READ TABLE GT_HEAD INTO LWA_HEAD WITH KEY VBELN = LWA_ITEM-VBELN.
MOVE-CORRESPONDING LWA_HEAD TO LWA_DOWN.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
INPUT = LWA_DOWN-MATNR
IMPORTING
OUTPUT = LWA_DOWN-MATNR.

CONCATENATE '''' LWA_DOWN-MATNR INTO LWA_DOWN-MATNR.
IF LWA_DOWN-BOLNR IS NOT INITIAL.
CONCATENATE '''' LWA_DOWN-BOLNR INTO LWA_DOWN-BOLNR.
ENDIF.
IF LWA_DOWN-INV_NO IS NOT INITIAL.
CONCATENATE '''' LWA_DOWN-INV_NO INTO LWA_DOWN-INV_NO.
ENDIF.
IF LWA_DOWN-CUST_NO IS NOT INITIAL. "add cjj 20190605
CONCATENATE '''' LWA_DOWN-CUST_NO INTO LWA_DOWN-CUST_NO. "add cjj 20190605
ENDIF. "add cjj 20190605
APPEND LWA_DOWN TO LT_DOWN.
ENDLOOP.
SORT LT_DOWN BY VBELN POSNR.

REFRESH GT_FIELDNAME[].
PERFORM FRM_SET_FIELDNAME USING '系统编号'.
PERFORM FRM_SET_FIELDNAME USING '提单行项目'.
PERFORM FRM_SET_FIELDNAME USING '状态'.
PERFORM FRM_SET_FIELDNAME USING '确认'.
PERFORM FRM_SET_FIELDNAME USING '类别'.
PERFORM FRM_SET_FIELDNAME USING '是否报关'.
PERFORM FRM_SET_FIELDNAME USING '客供'.
PERFORM FRM_SET_FIELDNAME USING '合同编号'.
PERFORM FRM_SET_FIELDNAME USING '合同批次'.
PERFORM FRM_SET_FIELDNAME USING '采购员'.
PERFORM FRM_SET_FIELDNAME USING '采购员描述'.
PERFORM FRM_SET_FIELDNAME USING '供应商'.
PERFORM FRM_SET_FIELDNAME USING '供应商描述'.
PERFORM FRM_SET_FIELDNAME USING '入库基地'.
PERFORM FRM_SET_FIELDNAME USING '入库基地描述'.
PERFORM FRM_SET_FIELDNAME USING '支付方式'.
PERFORM FRM_SET_FIELDNAME USING '支付方式描述'.
PERFORM FRM_SET_FIELDNAME USING '货物名称'.
PERFORM FRM_SET_FIELDNAME USING '件数'.
PERFORM FRM_SET_FIELDNAME USING '毛重'.
PERFORM FRM_SET_FIELDNAME USING '净重'.
PERFORM FRM_SET_FIELDNAME USING '重量单位'.
PERFORM FRM_SET_FIELDNAME USING '重量单位描述'.
PERFORM FRM_SET_FIELDNAME USING '人民币汇率'.
PERFORM FRM_SET_FIELDNAME USING '发运金额'.
PERFORM FRM_SET_FIELDNAME USING '运费'.
PERFORM FRM_SET_FIELDNAME USING '税率%'.
PERFORM FRM_SET_FIELDNAME USING '总额'.
PERFORM FRM_SET_FIELDNAME USING '提单号(外部)'.
PERFORM FRM_SET_FIELDNAME USING '发票号码'.
PERFORM FRM_SET_FIELDNAME USING '提单日期'.
PERFORM FRM_SET_FIELDNAME USING '报关单号'.
PERFORM FRM_SET_FIELDNAME USING '发运类型'.
PERFORM FRM_SET_FIELDNAME USING '发运类型描述'.
PERFORM FRM_SET_FIELDNAME USING '贸易类型'.
PERFORM FRM_SET_FIELDNAME USING '贸易类型描述'.
PERFORM FRM_SET_FIELDNAME USING '装船日期'.
PERFORM FRM_SET_FIELDNAME USING '起运港'.
PERFORM FRM_SET_FIELDNAME USING '预计到港日期'.
PERFORM FRM_SET_FIELDNAME USING '预计到货日期'.
PERFORM FRM_SET_FIELDNAME USING '签收日期'.
PERFORM FRM_SET_FIELDNAME USING '到货签收'.
PERFORM FRM_SET_FIELDNAME USING '入库人'.
PERFORM FRM_SET_FIELDNAME USING '入库人名'.
PERFORM FRM_SET_FIELDNAME USING '入库日期'.
PERFORM FRM_SET_FIELDNAME USING '收货凭证号'."add 20190611 cjj
PERFORM FRM_SET_FIELDNAME USING '备注'.
PERFORM FRM_SET_FIELDNAME USING '创建日期'.
PERFORM FRM_SET_FIELDNAME USING '修改日期'.
PERFORM FRM_SET_FIELDNAME USING '品名'.
PERFORM FRM_SET_FIELDNAME USING '标准'.
PERFORM FRM_SET_FIELDNAME USING '材质'.
PERFORM FRM_SET_FIELDNAME USING '规格'.
PERFORM FRM_SET_FIELDNAME USING '备案状态'.
PERFORM FRM_SET_FIELDNAME USING '零件报关备案状态'.
PERFORM FRM_SET_FIELDNAME USING '海关编码'.
PERFORM FRM_SET_FIELDNAME USING '附加码'.
PERFORM FRM_SET_FIELDNAME USING '报关项号'.
"开始-通过TR - S4DK906152 添加 20190614
PERFORM FRM_SET_FIELDNAME USING '新账册备案状态'.
PERFORM FRM_SET_FIELDNAME USING '新账册零件报关备案状态'.
PERFORM FRM_SET_FIELDNAME USING 'HS编码'.
PERFORM FRM_SET_FIELDNAME USING '海关商品料号'.
"结束-通过TR - S4DK906152 添加 20190614
PERFORM FRM_SET_FIELDNAME USING '入库仓库'.
PERFORM FRM_SET_FIELDNAME USING '入库仓库'.
PERFORM FRM_SET_FIELDNAME USING '计划仓库'.
PERFORM FRM_SET_FIELDNAME USING '计划仓库'.
PERFORM FRM_SET_FIELDNAME USING '计划工厂'.
PERFORM FRM_SET_FIELDNAME USING '产品工号'.
PERFORM FRM_SET_FIELDNAME USING '产品工号状态'.
PERFORM FRM_SET_FIELDNAME USING '项目明称'.
PERFORM FRM_SET_FIELDNAME USING '离岸日期'.
PERFORM FRM_SET_FIELDNAME USING '立项日期'.
PERFORM FRM_SET_FIELDNAME USING '赋税类型'.
PERFORM FRM_SET_FIELDNAME USING '赋税类型'.
PERFORM FRM_SET_FIELDNAME USING '采购说明'.
PERFORM FRM_SET_FIELDNAME USING '发运数量'.
PERFORM FRM_SET_FIELDNAME USING '税码'.
PERFORM FRM_SET_FIELDNAME USING '金额'.
PERFORM FRM_SET_FIELDNAME USING '价格'.
PERFORM FRM_SET_FIELDNAME USING '货币'.
PERFORM FRM_SET_FIELDNAME USING '货币'.
PERFORM FRM_SET_FIELDNAME USING '零件报关'.
PERFORM FRM_SET_FIELDNAME USING '零件报关'.
PERFORM FRM_SET_FIELDNAME USING '分解项数'.
PERFORM FRM_SET_FIELDNAME USING '单位描述'.
PERFORM FRM_SET_FIELDNAME USING '原产国'.
PERFORM FRM_SET_FIELDNAME USING '原产国'.
PERFORM FRM_SET_FIELDNAME USING '采购单号'.
PERFORM FRM_SET_FIELDNAME USING '采购单行号'.
PERFORM FRM_SET_FIELDNAME USING '类别'.
PERFORM FRM_SET_FIELDNAME USING '类别'.
PERFORM FRM_SET_FIELDNAME USING '节点分类'.
PERFORM FRM_SET_FIELDNAME USING '申购单号'.
PERFORM FRM_SET_FIELDNAME USING '项目文本'.
PERFORM FRM_SET_FIELDNAME USING '物资编码'.
PERFORM FRM_SET_FIELDNAME USING '计划编号'.
PERFORM FRM_SET_FIELDNAME USING '计划行号'.
PERFORM FRM_SET_FIELDNAME USING '退货项目'.
PERFORM FRM_SET_FIELDNAME USING '批次'.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = LV_FULLPATH
FILETYPE = 'DAT'
CODEPAGE = '8404'
TABLES
DATA_TAB = LT_DOWN
FIELDNAMES = GT_FIELDNAME[]
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ELSE.
MESSAGE '导出成功' TYPE 'S'.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_FIELDNAME
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_
*&---------------------------------------------------------------------*
FORM FRM_SET_FIELDNAME USING U_FIELDNAME TYPE CHAR20.

GT_FIELDNAME-NAME = U_FIELDNAME.
APPEND GT_FIELDNAME.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_RESENT_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_RESENT_DATA .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LT_HEAD_SEL TYPE STANDARD TABLE OF TY_HEAD.
DATA LV_CNT TYPE I.
DATA LV_TABIX TYPE I.
DATA: LV_VBELN TYPE LIKP-VBELN."add cjj 20190529
DATA: L_FASONG_MESSAGE TYPE CHAR_1536,
L_FASONG_ERROR_FLAG TYPE CHAR01.

CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
CLEAR GWA_HEAD.
READ TABLE GT_HEAD INTO GWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND GWA_HEAD TO LT_HEAD_SEL.
ENDIF.
ENDLOOP.
DESCRIBE TABLE LT_HEAD_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
MESSAGE '请选择要重新发送的数据' TYPE 'E'.
ENDIF.
CLEAR GWA_HEAD.
READ TABLE LT_HEAD_SEL INTO GWA_HEAD INDEX 1.
IF NOT ( GWA_HEAD-ZCONF = 'Z2' AND GWA_HEAD-ZFASONG IS INITIAL ).
MESSAGE '只有 已确认 并 发送标记为空 的提单才能重新发送' TYPE 'E'.
ENDIF.
LV_VBELN = GWA_HEAD-VBELN.
"接口发送数据
CALL FUNCTION 'ZFM_MM_DELIVER_BILLS'
EXPORTING
IV_ACTION = '1'
IV_VBELN = LV_VBELN "GWA_HEAD-VBELN
IV_COMMIT = 'X'
IMPORTING
EV_MESSAGE = L_FASONG_MESSAGE
EV_ERROR_FLAG = L_FASONG_ERROR_FLAG.
IF L_FASONG_ERROR_FLAG = 'S'.
GWA_HEAD-ZFASONG = 'X'.
MODIFY GT_HEAD FROM GWA_HEAD TRANSPORTING ZFASONG WHERE VBELN = GWA_HEAD-VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
MESSAGE I000(ZMM001) WITH '发送成功'.

ELSE.
MESSAGE I000(ZMM001) WITH '发送失败:' L_FASONG_MESSAGE.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SHOW_HTFJ
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SHOW_HTFJ .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LT_HEAD_SEL TYPE STANDARD TABLE OF TY_HEAD.
DATA LV_CNT TYPE I.
DATA: L_GOS_MANAGER TYPE REF TO CL_GOS_MANAGER,
L_GOS_LOTOBJ TYPE BORIDENT,
L_GOS_SVC TYPE SGS_SRVNAM.

CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
CLEAR GWA_HEAD.
READ TABLE GT_HEAD INTO GWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND GWA_HEAD TO LT_HEAD_SEL.
ENDIF.
ENDLOOP.
DESCRIBE TABLE LT_HEAD_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
MESSAGE '请选择一条数据' TYPE 'E'.
ENDIF.

L_GOS_SVC = 'VIEW_ATTA'.
L_GOS_LOTOBJ-OBJTYPE = 'ZMMR0003'.
L_GOS_LOTOBJ-OBJKEY = GWA_HEAD-ZHTH.

CREATE OBJECT L_GOS_MANAGER
EXPORTING
IP_MODE = 'D'
* IS_BC_OBJECT = LS_APPL_OBJECT
IS_OBJECT = L_GOS_LOTOBJ
IP_NO_COMMIT = ' '
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE S000(ZMM001) WITH 'GOS对象生成/调用失败'.
RETURN.
ENDIF.

CALL METHOD L_GOS_MANAGER->START_SERVICE_DIRECT
EXPORTING
IP_SERVICE = L_GOS_SVC
IS_OBJECT = L_GOS_LOTOBJ
IP_NO_CHECK = 'X'
* IP_CHECK_AVAILABLE = 'X'
EXCEPTIONS
NO_OBJECT = 1
OBJECT_INVALID = 2
EXECUTION_FAILED = 3.
IF SY-SUBRC <> 0.
MESSAGE S000(ZMM001) WITH 'GOS对象生成/调用失败'.
RETURN.
ENDIF.

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

PERFORM FRM_UPLOAD_FILE USING 'ZMMR012301'.

SELECT COUNT(*) FROM TOA01
WHERE SAP_OBJECT = 'ZMMR012301' AND OBJECT_ID = GWA_HEAD-VBELN.
IF SY-SUBRC = 0.
GWA_HEAD-ZTDFJ = '附件'.
MODIFY GT_HEAD FROM GWA_HEAD TRANSPORTING ZTDFJ WHERE VBELN = GWA_HEAD-VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
ELSE.
GWA_HEAD-ZTDFJ = ''.
MODIFY GT_HEAD FROM GWA_HEAD TRANSPORTING ZTDFJ WHERE VBELN = GWA_HEAD-VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_ATTCH_FPFJ
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_ATTCH_FPFJ .
PERFORM FRM_UPLOAD_FILE USING 'ZMMR012302'.

SELECT COUNT(*) FROM TOA01
WHERE SAP_OBJECT = 'ZMMR012302' AND OBJECT_ID = GWA_HEAD-VBELN.
IF SY-SUBRC = 0.
GWA_HEAD-ZFPFJ = '附件'.
MODIFY GT_HEAD FROM GWA_HEAD TRANSPORTING ZFPFJ WHERE VBELN = GWA_HEAD-VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
ELSE.
GWA_HEAD-ZFPFJ = ''.
MODIFY GT_HEAD FROM GWA_HEAD TRANSPORTING ZFPFJ WHERE VBELN = GWA_HEAD-VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_ATTCH_ZTRKDFJ
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_ATTCH_ZTRKDFJ .
PERFORM FRM_UPLOAD_FILE USING 'ZMMR012303'.

SELECT COUNT(*) FROM TOA01
WHERE SAP_OBJECT = 'ZMMR012303' AND OBJECT_ID = GWA_HEAD-VBELN.
IF SY-SUBRC = 0.
GWA_HEAD-ZZTRKDFJ = '附件'.
MODIFY GT_HEAD FROM GWA_HEAD TRANSPORTING ZZTRKDFJ WHERE VBELN = GWA_HEAD-VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
ELSE.
GWA_HEAD-ZZTRKDFJ = ''.
MODIFY GT_HEAD FROM GWA_HEAD TRANSPORTING ZZTRKDFJ WHERE VBELN = GWA_HEAD-VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_ATTCH_ZSRKDFJ
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_ATTCH_ZSRKDFJ .
PERFORM FRM_UPLOAD_FILE USING 'ZMMR012304'.

SELECT COUNT(*) FROM TOA01
WHERE SAP_OBJECT = 'ZMMR012304' AND OBJECT_ID = GWA_HEAD-VBELN.
IF SY-SUBRC = 0.
GWA_HEAD-ZZSRKDFJ = '附件'.
MODIFY GT_HEAD FROM GWA_HEAD TRANSPORTING ZZSRKDFJ WHERE VBELN = GWA_HEAD-VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
ELSE.
GWA_HEAD-ZZSRKDFJ = ''.
MODIFY GT_HEAD FROM GWA_HEAD TRANSPORTING ZZSRKDFJ WHERE VBELN = GWA_HEAD-VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD_FILE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_
*&---------------------------------------------------------------------*
FORM FRM_UPLOAD_FILE USING U_GOS_ID TYPE CHAR10.
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LT_HEAD_SEL TYPE STANDARD TABLE OF TY_HEAD.
DATA LV_CNT TYPE I.
DATA: L_GOS_MANAGER TYPE REF TO CL_GOS_MANAGER,
L_GOS_LOTOBJ TYPE BORIDENT,
L_GOS_SVC TYPE SGS_SRVNAM.

CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
CLEAR GWA_HEAD.
READ TABLE GT_HEAD INTO GWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND GWA_HEAD TO LT_HEAD_SEL.
ENDIF.
ENDLOOP.
DESCRIBE TABLE LT_HEAD_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
MESSAGE '请选择一条数据' TYPE 'E'.
ENDIF.

L_GOS_SVC = 'VIEW_ATTA'.
L_GOS_LOTOBJ-OBJTYPE = U_GOS_ID.
L_GOS_LOTOBJ-OBJKEY = GWA_HEAD-VBELN.

CREATE OBJECT L_GOS_MANAGER
EXPORTING
IP_MODE = 'E'
* IS_BC_OBJECT = LS_APPL_OBJECT
IS_OBJECT = L_GOS_LOTOBJ
IP_NO_COMMIT = ' '
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE S000(ZMM001) WITH 'GOS对象生成/调用失败'.
RETURN.
ENDIF.

CALL METHOD L_GOS_MANAGER->START_SERVICE_DIRECT
EXPORTING
IP_SERVICE = L_GOS_SVC
IS_OBJECT = L_GOS_LOTOBJ
IP_NO_CHECK = 'X'
* IP_CHECK_AVAILABLE = 'X'
EXCEPTIONS
NO_OBJECT = 1
OBJECT_INVALID = 2
EXECUTION_FAILED = 3.
IF SY-SUBRC <> 0.
MESSAGE S000(ZMM001) WITH 'GOS对象生成/调用失败'.
RETURN.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_ATTCH_BGDFJ
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_ATTCH_BGDFJ .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LT_HEAD_SEL TYPE STANDARD TABLE OF TY_HEAD.
DATA LV_CNT TYPE I.
DATA: L_GOS_MANAGER TYPE REF TO CL_GOS_MANAGER,
L_GOS_LOTOBJ TYPE BORIDENT,
L_GOS_SVC TYPE SGS_SRVNAM.

CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
CLEAR GWA_HEAD.
READ TABLE GT_HEAD INTO GWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND GWA_HEAD TO LT_HEAD_SEL.
ENDIF.
ENDLOOP.
DESCRIBE TABLE LT_HEAD_SEL LINES LV_CNT.
IF LV_CNT = 0 OR LV_CNT > 1.
MESSAGE '请选择一条数据' TYPE 'E'.
ENDIF.

L_GOS_SVC = 'VIEW_ATTA'.
L_GOS_LOTOBJ-OBJTYPE = 'ZMMR0011'.
L_GOS_LOTOBJ-OBJKEY = GWA_HEAD-VBELN.

CREATE OBJECT L_GOS_MANAGER
EXPORTING
IP_MODE = 'D'
* IS_BC_OBJECT = LS_APPL_OBJECT
IS_OBJECT = L_GOS_LOTOBJ
IP_NO_COMMIT = ' '
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE S000(ZMM001) WITH 'GOS对象生成/调用失败'.
RETURN.
ENDIF.

CALL METHOD L_GOS_MANAGER->START_SERVICE_DIRECT
EXPORTING
IP_SERVICE = L_GOS_SVC
IS_OBJECT = L_GOS_LOTOBJ
IP_NO_CHECK = 'X'
* IP_CHECK_AVAILABLE = 'X'
EXCEPTIONS
NO_OBJECT = 1
OBJECT_INVALID = 2
EXECUTION_FAILED = 3.
IF SY-SUBRC <> 0.
MESSAGE S000(ZMM001) WITH 'GOS对象生成/调用失败'.
RETURN.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DL_CP
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DL_CP .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LWA_PO_ITEM TYPE TY_PO_ITEM.
DATA LWA_PO_HEAD TYPE TY_PO_HEAD.
DATA LT_PO_ITEM_SEL TYPE STANDARD TABLE OF TY_PO_ITEM.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LV_FLG.
DATA LWA_TDMX TYPE TY_TDMX.
DATA LT_TDMX TYPE STANDARD TABLE OF TY_TDMX.
DATA LV_CNT TYPE I.
DATA LV_FLG_RUN.
DATA LV_ZLFIMG TYPE LIPS-LFIMG.

CALL METHOD GCL_ALV_GRID5->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.
LOOP AT LT_ROW INTO LWA_ROW.
READ TABLE GT_PO_ITEM INTO LWA_PO_ITEM INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
APPEND LWA_PO_ITEM TO LT_PO_ITEM_SEL.
ENDIF.
ENDLOOP.
IF LT_PO_ITEM_SEL IS INITIAL.
MESSAGE '请先选择数据' TYPE 'I'.
LV_FLG = 'X'.
RETURN.
ENDIF.
DESCRIBE TABLE LT_PO_ITEM_SEL LINES LV_CNT.
IF LV_CNT <> 1.
MESSAGE '只能选择一行进行拆盘' TYPE 'I'.
LV_FLG = 'X'.
RETURN.
ENDIF.
IF GV_DLPS IS INITIAL .
MESSAGE '请输入电缆盘数' TYPE 'I'.
LV_FLG = 'X'.
RETURN.
ENDIF.

CHECK LV_FLG IS INITIAL.
CLEAR LWA_PO_ITEM.
READ TABLE LT_PO_ITEM_SEL INTO LWA_PO_ITEM INDEX 1.
CLEAR LV_ZLFIMG.
LV_ZLFIMG = LWA_PO_ITEM-ZLFIMG MOD GV_DLPS.
IF LV_ZLFIMG IS NOT INITIAL.
LV_FLG_RUN = 'X'.
MESSAGE '按输入的电缆盘数拆盘除不尽' TYPE 'I'.
ENDIF.

CHECK LV_FLG_RUN IS INITIAL.
CLEAR LWA_TDMX.
READ TABLE GT_TDMX TRANSPORTING NO FIELDS WITH KEY EBELN = LWA_PO_ITEM-EBELN.
IF SY-SUBRC = 0.
ELSE.
IF GT_TDMX IS NOT INITIAL. "如果之前已选过,采购订单不一样,报错
LV_FLG_RUN = 'X'.
MESSAGE '选择的采购订单不一致。' TYPE 'I'.
ENDIF.
ENDIF.
CHECK LV_FLG_RUN IS INITIAL.
DO GV_DLPS TIMES.
MOVE-CORRESPONDING LWA_PO_ITEM TO LWA_TDMX.
LWA_TDMX-ZLFIMG = LWA_TDMX-ZLFIMG / GV_DLPS.
LWA_TDMX-ZJE = LWA_TDMX-ZJE / GV_DLPS.
SELECT SINGLE MSEHL FROM T006A
INTO LWA_TDMX-MEINS_TXT
WHERE SPRAS = SY-LANGU
AND MSEHI = LWA_PO_ITEM-MEINS.
GWA_JKTD-ZTAX = LWA_PO_ITEM-ZTAX.
APPEND LWA_TDMX TO GT_TDMX.
ENDDO.


CHECK LV_FLG_RUN IS INITIAL.
READ TABLE GT_PO_HEAD INTO LWA_PO_HEAD WITH KEY EBELN = LWA_PO_ITEM-EBELN.
IF SY-SUBRC = 0.
GWA_JKTD-WAERK = LWA_PO_HEAD-WAERS.
GWA_JKTD-ZZFFS = LWA_PO_HEAD-ZLSCH.
GWA_JKTD-ZJGFS = LWA_PO_HEAD-INCO1.
GWA_JKTD-LGORT = LWA_PO_ITEM-LGORT.
SELECT SINGLE WERKS INTO GWA_JKTD-WERKS FROM ZMMT0124
WHERE LGORT = LWA_PO_ITEM-LGORT
AND ZFSLX = LWA_PO_ITEM-ZTAXTYPE
AND ZZT = SPACE.

GWA_JKTD-ZKEGONG = LWA_PO_HEAD-ZSFKG.
SELECT SINGLE KTEXT FROM TCURT
INTO GWA_JKTD-WAERK_TXT
WHERE SPRAS = SY-LANGU
AND WAERS = GWA_JKTD-WAERK.
SELECT SINGLE ZSFBG INTO GWA_JKTD-ZBAOGUAN FROM EKKO
WHERE EBELN = LWA_PO_ITEM-EBELN.
ENDIF.
LT_TDMX = GT_TDMX.
SORT LT_TDMX BY ZJE DESCENDING.
CLEAR LWA_TDMX.
READ TABLE LT_TDMX INTO LWA_TDMX INDEX 1.
IF SY-SUBRC = 0.
GWA_JKTD-ZHWMC = LWA_TDMX-ZZNAME1.
ENDIF.

SELECT SINGLE EINDT INTO GWA_JKTD-LFDAT FROM EKET INNER JOIN EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
ON EKET~EBELN = EKPO~EBELN AND EKET~EBELP = EKPO~EBELP
WHERE EKET~EBELN = LWA_TDMX-EBELN AND EKPO~LOEKZ = SPACE.

LEAVE TO SCREEN 0.
CALL METHOD GCL_ALV_GRID3->REFRESH_TABLE_DISPLAY.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_COPY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_COPY .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LWA_ITEM TYPE TY_ITEM.
DATA LWA_TDMX TYPE TY_TDMX.
DATA LV_CNT TYPE I.
DATA LWA_EKPO TYPE EKPO.
DATA LT_LINES TYPE STANDARD TABLE OF TLINE.
DATA LWA_LINES TYPE TLINE.
DATA LV_ID TYPE THEAD-TDID.
DATA LV_TDNAME TYPE THEAD-TDNAME.
DATA LV_OBJECT TYPE THEAD-TDOBJECT.
DATA LV_LOCK_FLG.

CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.

IF LT_ROW IS INITIAL.
MESSAGE '请先选择数据' TYPE 'E'.
ELSE.
DESCRIBE TABLE LT_ROW LINES LV_CNT.
IF LV_CNT > 1.
MESSAGE '请选择一条数据进行修改' TYPE 'E'.
ENDIF.
ENDIF.

READ TABLE LT_ROW INTO LWA_ROW INDEX 1.
CLEAR LWA_HEAD.
READ TABLE GT_HEAD INTO LWA_HEAD INDEX LWA_ROW-ROW_ID.
CHECK SY-SUBRC = 0.
GV_NEW_CHG = 'N'.
CLEAR:GT_TDMX, GWA_JKTD.
GWA_JKTD-LIFNR = LWA_HEAD-LIFNR.
GWA_JKTD-NAME1 = LWA_HEAD-LIFNR_TXT.
GWA_JKTD-EKGRP = LWA_HEAD-EKGRP.
GWA_JKTD-EKGRP_TXT = LWA_HEAD-EKGRP_TXT.
GWA_JKTD-ZHWMC = LWA_HEAD-SGTXT. "货物名称
GWA_JKTD-ANZPK = LWA_HEAD-ANZPK. "件数
GWA_JKTD-BTGEW = LWA_HEAD-BTGEW. "毛重
GWA_JKTD-NTGEW = LWA_HEAD-NTGEW. "净重
GWA_JKTD-GEWEI = LWA_HEAD-GEWEI. "重量单位
GWA_JKTD-GEWEI_TXT = LWA_HEAD-GEWEI_TXT. "重量单位text
GWA_JKTD-BOLNR = LWA_HEAD-BOLNR. "提单号
GWA_JKTD-INV_NO = LWA_HEAD-INV_NO. "发票号码
GWA_JKTD-PACK_DATE = LWA_HEAD-PACK_DATE. "提单日期
GWA_JKTD-PACK_DATE = LWA_HEAD-PACK_DATE. "提单日期
GWA_JKTD-WERKS1 = LWA_HEAD-WERKS1. "转运基地
GWA_JKTD-ITM_EXPVZ = LWA_HEAD-ITM_EXPVZ. "发运类型
GWA_JKTD-TRADE_TYPE = LWA_HEAD-TRADE_TYPE. "贸易类型
GWA_JKTD-ITM_KZGBE = LWA_HEAD-ITM_KZGBE. "起运港
GWA_JKTD-MEMO = LWA_HEAD-MEMO. "备注
GWA_JKTD-LDDAT = LWA_HEAD-TDDAT. "装船日期
GWA_JKTD-DUE_ARRIVE_DATE = LWA_HEAD-DUE_ARRIVE_DATE. "预计到港日期

CALL SCREEN 9100.


ENDFORM.

*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_ZBACK
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_ZBACK .
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LWA_ITEM TYPE TY_ITEM.
DATA LWA_TDMX TYPE TY_TDMX.
DATA: LV_VBELN TYPE LIKP-VBELN. "add cjj 20190528
DATA LV_CNT TYPE I.
DATA LWA_EKPO TYPE EKPO.
DATA LT_LINES TYPE STANDARD TABLE OF TLINE.
DATA LWA_LINES TYPE TLINE.
DATA LV_ID TYPE THEAD-TDID.
DATA LV_TDNAME TYPE THEAD-TDNAME.
DATA LV_OBJECT TYPE THEAD-TDOBJECT.
DATA LV_LOCK_FLG.

CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.

IF LT_ROW IS INITIAL.
MESSAGE '请先选择数据' TYPE 'E'.
ELSE.
DESCRIBE TABLE LT_ROW LINES LV_CNT.
IF LV_CNT > 1.
MESSAGE '请选择一条数据进行修改' TYPE 'E'.
ENDIF.
ENDIF.

LOOP AT LT_ROW INTO LWA_ROW.
CLEAR LWA_HEAD.
READ TABLE GT_HEAD INTO LWA_HEAD INDEX LWA_ROW-ROW_ID.
IF SY-SUBRC = 0.
* IF NOT ( LWA_HEAD-ZSTATUS = 'Z1' AND ( LWA_HEAD-ZCONF = 'Z1' OR LWA_HEAD-ZCONF = 'Z3' ) ).
IF LWA_HEAD-ZCONF = 'Z1'.
MESSAGE '只允许对确认状态为 已确认 的数据进行修改' TYPE 'E'.
ENDIF.
ENDIF.
ENDLOOP.

"LIKP-WBSTK= C 货物移动已完成不允许修改
* SELECT COUNT(*) FROM LIKP WHERE VBELN = LWA_HEAD-VBELN AND WBSTK = 'C'.
* IF SY-SUBRC = 0.
* MESSAGE '货物移动已完成不允许修改' TYPE 'E'.
* ENDIF.

PERFORM FRM_LOCK_DATA USING LWA_HEAD-VBELN
CHANGING LV_LOCK_FLG.
CHECK LV_LOCK_FLG IS INITIAL.
CLEAR:GT_TDMX, GWA_JKTD.
MOVE-CORRESPONDING LWA_HEAD TO GWA_JKTD.
* 确定最新退货单号
PERFORM GET_VBELN_PROCESS USING LWA_HEAD-VBELN
CHANGING GWA_JKTD-VBELN.
LV_VBELN = LWA_HEAD-VBELN."add cjj 20190528
GWA_JKTD-WAERK = LWA_HEAD-ZCARGOVALUECURRENCY.
GWA_JKTD-WERKS = LWA_HEAD-ZWERKS.
GWA_JKTD-LDDAT = LWA_HEAD-TDDAT.
GWA_JKTD-WERKS1 = LWA_HEAD-WERKS1.
GWA_JKTD-WAERK = LWA_HEAD-WAERS.
GWA_JKTD-ZZFFS = LWA_HEAD-ZLSCH.
GWA_JKTD-ZJGFS = LWA_HEAD-INCO1.
GWA_JKTD-ZHWMC = LWA_HEAD-SGTXT.
GWA_JKTD-ZZBJ = LWA_HEAD-QANETWR.
SELECT SINGLE KTEXT FROM TCURT
INTO GWA_JKTD-WAERK_TXT
WHERE SPRAS = SY-LANGU
AND WAERS = GWA_JKTD-WAERK.

READ TABLE GT_ITEM INTO LWA_ITEM WITH KEY VBELN = LWA_HEAD-VBELN.
IF SY-SUBRC = 0.
GWA_JKTD-WERKS_EKPO = LWA_ITEM-WERKS1.
GWA_JKTD-ZTAX = LWA_ITEM-ZTAX.
ENDIF.

IF LWA_HEAD-NO_CUST = 'Z1'.
GWA_JKTD-ZBAOGUAN = SPACE.
ELSEIF LWA_HEAD-NO_CUST = 'Z3'.
GWA_JKTD-ZBAOGUAN = 'X'.
ENDIF.

* LV_ID = '0102'.
* LV_TDNAME = GWA_JKTD-VBELN.
* LV_OBJECT = 'VBBK'.
* CLEAR LT_LINES.
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
* ID = LV_ID
* LANGUAGE = SY-LANGU
* NAME = LV_TDNAME
* OBJECT = LV_OBJECT
* TABLES
* LINES = LT_LINES
* EXCEPTIONS
* ID = 1
* LANGUAGE = 2
* NAME = 3
* NOT_FOUND = 4
* OBJECT = 5
* REFERENCE_CHECK = 6
* WRONG_ACCESS_TO_ARCHIVE = 7
* OTHERS = 8.
* IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ELSE.
* LOOP AT LT_LINES INTO LWA_LINES.
* CONCATENATE GWA_JKTD-MEMO LWA_LINES-TDLINE INTO GWA_JKTD-MEMO.
* ENDLOOP.
* ENDIF.

LOOP AT GT_ITEM_ALL INTO LWA_ITEM WHERE VBELN = LV_VBELN."LWA_HEAD-VBELN. chg cjj 20190528
MOVE-CORRESPONDING LWA_ITEM TO LWA_TDMX.
LWA_TDMX-VBELN = GWA_JKTD-VBELN.
LWA_TDMX-ZLFIMG = LWA_ITEM-LFIMG.
LWA_TDMX-ZLJBG = LWA_ITEM-PART_CUST.
LWA_TDMX-MEINS = LWA_ITEM-VRKME.
LWA_TDMX-ZFYDJ = LWA_ITEM-ZJE / LWA_ITEM-LFIMG.
CLEAR LWA_EKPO.
SELECT SINGLE NETWR MENGE FROM EKPO ##DB_FEATURE_MODE[TABLE_LEN_MAX1]
INTO CORRESPONDING FIELDS OF LWA_EKPO
WHERE EBELN = LWA_ITEM-VGBEL
AND EBELP = LWA_ITEM-VGPOS.
LWA_TDMX-ZPRICE = LWA_EKPO-NETWR * ( 1 + LWA_ITEM-ZTAX / 100 ) / LWA_EKPO-MENGE.

LV_ID = '0002'.
LV_TDNAME = LWA_ITEM-VBELN && LWA_ITEM-POSNR.
LV_OBJECT = 'VBBP'.
CLEAR: LWA_TDMX-MEMO,LT_LINES.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = LV_ID
LANGUAGE = SY-LANGU
NAME = LV_TDNAME
OBJECT = LV_OBJECT
TABLES
LINES = LT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LOOP AT LT_LINES INTO LWA_LINES.
CONCATENATE LWA_TDMX-MEMO LWA_LINES-TDLINE INTO LWA_TDMX-MEMO.
ENDLOOP.
ENDIF.

SELECT SINGLE LANDX FROM T005T
INTO LWA_TDMX-COUNTRY_TXT
WHERE SPRAS = SY-LANGU
AND LAND1 = LWA_TDMX-COUNTRY.

SELECT SINGLE LGOBE FROM T001L
INTO LWA_TDMX-LGORT1_TXT
WHERE WERKS = '1000'
AND LGORT = LWA_TDMX-LGORT1.

LWA_TDMX-EBELN = LWA_ITEM-VGBEL.
LWA_TDMX-EBELP = LWA_ITEM-VGPOS.
LWA_TDMX-PACK_CNT = LWA_ITEM-PACK_CNT.
APPEND LWA_TDMX TO GT_TDMX.
ENDLOOP.
GT_TDMX_COPY = GT_TDMX.
CALL SCREEN 9100.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form FRM_RETURN_IBD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_RETURN_IBD .
DATA: LS_ZMMT0123A TYPE ZMMT0123A. "提单退货表头
DATA: LS_ZMMT0123B TYPE ZMMT0123B. "提单退货行项目
DATA: LS_ZMMT0123C TYPE ZMMT0123C. "拆分
DATA: LT_ZMMT0123A TYPE STANDARD TABLE OF ZMMT0123A. "提单退货表头
DATA: LT_ZMMT0123B TYPE STANDARD TABLE OF ZMMT0123B. "提单退货行项目
DATA: LT_ZMMT0123C TYPE STANDARD TABLE OF ZMMT0123C. "拆分
DATA LS_HEAD TYPE TY_HEAD.
DATA: LS_FJXS TYPE TY_FJXS.
DATA LS_TDMX TYPE TY_TDMX.
DATA LV_MAIN_CNT TYPE I.
DATA LV_NO_MAIN_CNT TYPE I.
DATA LV_ITEM_SUM TYPE ZMMT0007-PACK_AMT.
IF GT_TDMX IS INITIAL.
MESSAGE '合同明细为空,不能保存' TYPE 'E'.
ENDIF.
READ TABLE GT_HEAD INTO LS_HEAD WITH KEY VBELN = GWA_JKTD-VBELN+1(10).
MOVE-CORRESPONDING LS_HEAD TO LS_ZMMT0123A.
MOVE-CORRESPONDING GWA_JKTD TO LS_ZMMT0123A.
LS_ZMMT0123A-ZCONF = 'Z1'.
LS_ZMMT0123A-ZWERKS1 = '1000'. "默认1000
LS_ZMMT0123A-ZWERKS = GWA_JKTD-WERKS."入库基地
LS_ZMMT0123A-ZSTATUS = 'Z1'.
LS_ZMMT0123A-ZSTATUS_TXT = '新建'.
LS_ZMMT0123A-ZCONF_TXT = '未确认'.
*当这个报关 标示打上时,保存或 更新 ZMM0123A 时 是否报关 置为Z3 未报;
*当这个报关 标示未打上时,保存或 更新 ZMM0123A 时 是否报关 置为Z1
IF GWA_JKTD-ZBAOGUAN IS NOT INITIAL.
LS_ZMMT0123A-NO_CUST = 'Z3'.
LS_ZMMT0123A-NO_CUST_TXT = '未报'.
ELSE.
LS_ZMMT0123A-NO_CUST = 'Z1'.
LS_ZMMT0123A-NO_CUST_TXT = '不报'.
ENDIF.
CLEAR: LS_ZMMT0123A-CUST_NO."报关单号
LS_ZMMT0123A-TDDAT = GWA_JKTD-LDDAT."装船日期
APPEND LS_ZMMT0123A TO LT_ZMMT0123A.
LOOP AT GT_TDMX INTO LS_TDMX.
"add cjj 20190529 退货需要负
"发运数量为负
* if LS_TDMX-ZLFIMG > '0'.
* MESSAGE '退货的发运数量为正,不能保存' TYPE 'E'.
* endif.

MOVE-CORRESPONDING LS_TDMX TO LS_ZMMT0123B.
LS_ZMMT0123B-PART_CUST = LS_TDMX-ZLJBG.
LS_ZMMT0123B-LFIMG = LS_TDMX-ZLFIMG.
LS_ZMMT0123B-VGBEL = LS_TDMX-EBELN.
LS_ZMMT0123B-VGPOS = LS_TDMX-EBELP.
APPEND LS_ZMMT0123B TO LT_ZMMT0123B.
CLEAR: LV_MAIN_CNT,LV_NO_MAIN_CNT,LV_ITEM_SUM.
LOOP AT GT_FJXS_ALL INTO LS_FJXS WHERE VBELN = GWA_JKTD-VBELN+1(10)
AND POSNR = LS_TDMX-POSNR.
IF LS_FJXS-MAIN_PART IS NOT INITIAL.
LV_MAIN_CNT = LV_MAIN_CNT + 1.
ELSE.
LV_NO_MAIN_CNT = LV_NO_MAIN_CNT + 1.
ENDIF.
ENDLOOP.
LOOP AT GT_FJXS_ALL INTO LS_FJXS WHERE VBELN = GWA_JKTD-VBELN+1(10)
AND POSNR = LS_TDMX-POSNR.
MOVE-CORRESPONDING LS_FJXS TO LS_ZMMT0123C.
"将金额分滩到拆分表: 主件分摊80%金额,非主件分摊20%金额(如果全是主件或非主件就直接 金额/主件或非主件纪录数)
IF LS_FJXS-MAIN_PART IS NOT INITIAL AND LV_MAIN_CNT IS NOT INITIAL AND LV_NO_MAIN_CNT IS NOT INITIAL.
LS_ZMMT0123C-PACK_AMT = ( LS_TDMX-ZJE * 80 ) / ( LV_MAIN_CNT * 100 ).
"全是主件
ELSEIF LS_FJXS-MAIN_PART IS NOT INITIAL AND LV_MAIN_CNT IS NOT INITIAL AND LV_NO_MAIN_CNT IS INITIAL.
LS_ZMMT0123C-PACK_AMT = LS_TDMX-ZJE / LV_MAIN_CNT.
"主件没有
ELSEIF LS_FJXS-MAIN_PART IS INITIAL AND LV_NO_MAIN_CNT IS NOT INITIAL AND LV_MAIN_CNT IS INITIAL.
LS_ZMMT0123C-PACK_AMT = LS_TDMX-ZJE / LV_NO_MAIN_CNT.
ELSEIF LS_FJXS-MAIN_PART IS INITIAL AND LV_NO_MAIN_CNT IS NOT INITIAL AND LV_MAIN_CNT IS NOT INITIAL.
LS_ZMMT0123C-PACK_AMT = ( LS_TDMX-ZJE * 20 ) / ( LV_NO_MAIN_CNT * 100 ).
ENDIF.
LS_ZMMT0123C-WAERS = LS_TDMX-WAERS.
IF LS_FJXS-PACK_QTY IS NOT INITIAL.
LS_ZMMT0123C-PACK_PRICE = LS_ZMMT0123C-PACK_AMT / LS_ZMMT0123C-PACK_QTY.
ENDIF.
LV_ITEM_SUM = LV_ITEM_SUM + LS_ZMMT0123C-PACK_AMT.
LS_ZMMT0123C-VBELN = GWA_JKTD-VBELN.
APPEND LS_ZMMT0123C TO LT_ZMMT0123C.
CLEAR LS_ZMMT0123C.
ENDLOOP.
"尾差抹平
IF LV_ITEM_SUM <> LS_TDMX-ZJE.
LOOP AT LT_ZMMT0123C INTO LS_ZMMT0123C WHERE VBELN = GWA_JKTD-VBELN
AND POSNR = LS_TDMX-POSNR..
LS_ZMMT0123C-PACK_AMT = LS_ZMMT0123C-PACK_AMT + ( LS_TDMX-ZJE - LV_ITEM_SUM ).
MODIFY LT_ZMMT0123C FROM LS_ZMMT0123C INDEX SY-TABIX.
EXIT.
ENDLOOP.
ENDIF.
ENDLOOP.

IF LT_ZMMT0123A IS NOT INITIAL.
MODIFY ZMMT0123A FROM TABLE LT_ZMMT0123A.
IF SY-SUBRC = 0.
* COMMIT WORK AND WAIT.
* MESSAGE '保存成功' TYPE 'I'.
* LWA_CFMX-ZMSG = '保存成功'.
* MODIFY GT_CFMX FROM LWA_CFMX TRANSPORTING ZMSG WHERE ZMSG = SPACE.
ELSE.
ROLLBACK WORK.
MESSAGE '保存失败' TYPE 'I'.
RETURN.
ENDIF.
ENDIF.
IF LT_ZMMT0123B IS NOT INITIAL.
MODIFY ZMMT0123B FROM TABLE LT_ZMMT0123B.
IF SY-SUBRC = 0.
IF LT_ZMMT0123C[] IS INITIAL.
COMMIT WORK AND WAIT.
MESSAGE '保存成功' TYPE 'I'.
ENDIF.
* LWA_CFMX-ZMSG = '保存成功'.
* MODIFY GT_CFMX FROM LWA_CFMX TRANSPORTING ZMSG WHERE ZMSG = SPACE.
* MOVE-CORRESPONDING LT_ZMMT0123A TO GT_HEAD.
* MOVE-CORRESPONDING LT_ZMMT0123B TO GT_ITEM_ALL.
ELSE.
ROLLBACK WORK.
MESSAGE '保存失败' TYPE 'I'.
RETURN.
ENDIF.
ENDIF.
IF LT_ZMMT0123C IS NOT INITIAL.
MODIFY ZMMT0123C FROM TABLE LT_ZMMT0123C.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
MESSAGE '保存成功' TYPE 'I'.
* LWA_CFMX-ZMSG = '保存成功'.
* MODIFY GT_CFMX FROM LWA_CFMX TRANSPORTING ZMSG WHERE ZMSG = SPACE.
MOVE-CORRESPONDING LT_ZMMT0123A TO GT_HEAD.
MOVE-CORRESPONDING LT_ZMMT0123B TO GT_ITEM_ALL.
ELSE.
ROLLBACK WORK.
MESSAGE '保存失败' TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_VBELN_PROCESS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LWA_HEAD_VBELN
*& <-- GWA_JKTD_VBELN
*&---------------------------------------------------------------------*
FORM GET_VBELN_PROCESS USING VALUE(PI_VBELN) TYPE CHAR15
CHANGING VALUE(PO_VBELN) TYPE CHAR15.
DATA: LV_VBELN(15) TYPE C,
LV_NUM(2) TYPE N.
CONCATENATE 'R' PI_VBELN '%'INTO LV_VBELN.
SELECT SINGLE MAX( VBELN )
INTO PO_VBELN
FROM ZMMT0123A
WHERE VBELN LIKE LV_VBELN.
IF PO_VBELN <> SPACE.
CLEAR LV_NUM.
LV_NUM = PO_VBELN+12(2) + 1.
CONCATENATE 'R' PI_VBELN '-' LV_NUM INTO PO_VBELN.
ELSE.
CONCATENATE 'R' PI_VBELN '-01' INTO PO_VBELN.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_RETURN_CHG
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_RETURN_CHG .
DATA: LS_ZMMT0123A TYPE ZMMT0123A. "提单退货表头
DATA: LS_ZMMT0123B TYPE ZMMT0123B. "提单退货行项目
DATA: LT_ZMMT0123A TYPE STANDARD TABLE OF ZMMT0123A. "提单退货表头
DATA: LT_ZMMT0123B TYPE STANDARD TABLE OF ZMMT0123B. "提单退货行项目
DATA LS_HEAD TYPE TY_HEAD.
DATA LS_TDMX TYPE TY_TDMX.
IF GT_TDMX IS INITIAL.
MESSAGE '合同明细为空,不能保存' TYPE 'E'.
ENDIF.
READ TABLE GT_HEAD INTO LS_HEAD WITH KEY VBELN = GWA_JKTD-VBELN.
MOVE-CORRESPONDING LS_HEAD TO LS_ZMMT0123A.
*当这个报关 标示打上时,保存或 更新 ZMM0123A 时 是否报关 置为Z3 未报;
*当这个报关 标示未打上时,保存或 更新 ZMM0123A 时 是否报关 置为Z1
IF GWA_JKTD-ZBAOGUAN IS NOT INITIAL.
LS_ZMMT0123A-NO_CUST = 'Z3'.
LS_ZMMT0123A-NO_CUST_TXT = '未报'.
ELSE.
LS_ZMMT0123A-NO_CUST = 'Z1'.
LS_ZMMT0123A-NO_CUST_TXT = '不报'.
ENDIF.
LS_ZMMT0123A-ZWERKS = GWA_JKTD-WERKS.
LS_ZMMT0123A-TDDAT = GWA_JKTD-LDDAT.
LS_ZMMT0123A-WAERS = GWA_JKTD-WAERK.
LS_ZMMT0123A-ZLSCH = GWA_JKTD-ZZFFS.
LS_ZMMT0123A-FREIGHT = GWA_JKTD-FREIGHT.
LS_ZMMT0123A-ZZBJ = GWA_JKTD-ZZBJ.
* LS_ZMMT0123A-INCO1 = GWA_JKTD-ZJGFS.
LS_ZMMT0123A-SGTXT = GWA_JKTD-ZHWMC.
* LS_ZMMT0123A-QANETWR = GWA_JKTD-ZZBJ.
* MOVE-CORRESPONDING GWA_JKTD TO LS_ZMMT0123A.
* LS_ZMMT0123A-ZCONF = 'Z1'.
LS_ZMMT0123A-WERKS1 = GWA_JKTD-WERKS1."转运基地
LS_ZMMT0123A-ZWERKS = GWA_JKTD-WERKS."入库基地
* LS_ZMMT0123A-ZCONF_TXT = '未确认'.
APPEND LS_ZMMT0123A TO LT_ZMMT0123A.
LOOP AT GT_TDMX INTO LS_TDMX.
MOVE-CORRESPONDING LS_TDMX TO LS_ZMMT0123B.
LS_ZMMT0123B-PART_CUST = LS_TDMX-ZLJBG.
LS_ZMMT0123B-LFIMG = LS_TDMX-ZLFIMG.
LS_ZMMT0123B-VGBEL = LS_TDMX-EBELN.
LS_ZMMT0123B-VGPOS = LS_TDMX-EBELP.
APPEND LS_ZMMT0123B TO LT_ZMMT0123B.
ENDLOOP.
IF LT_ZMMT0123A IS NOT INITIAL.
MODIFY ZMMT0123A FROM TABLE LT_ZMMT0123A.
IF SY-SUBRC = 0.
* COMMIT WORK AND WAIT.
* MESSAGE '保存成功' TYPE 'I'.
* LWA_CFMX-ZMSG = '保存成功'.
* MODIFY GT_CFMX FROM LWA_CFMX TRANSPORTING ZMSG WHERE ZMSG = SPACE.
ELSE.
ROLLBACK WORK.
MESSAGE '保存失败' TYPE 'I'.
RETURN.
ENDIF.
ENDIF.
IF LT_ZMMT0123B IS NOT INITIAL.
MODIFY ZMMT0123B FROM TABLE LT_ZMMT0123B.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
MESSAGE '保存成功' TYPE 'I'.
* LWA_CFMX-ZMSG = '保存成功'.
* MODIFY GT_CFMX FROM LWA_CFMX TRANSPORTING ZMSG WHERE ZMSG = SPACE.
ELSE.
ROLLBACK WORK.
MESSAGE '保存失败' TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_RETURN_QUEREN
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_RETURN_QUEREN USING VALUE(PI_VBELN) TYPE CHAR15.
DATA: LS_ZMMT0123A TYPE ZMMT0123A. "提单退货表头
DATA: LS_ZMMT0123B TYPE ZMMT0123B. "提单退货行项目
DATA: LT_ZMMT0123A TYPE STANDARD TABLE OF ZMMT0123A. "提单退货表头
DATA: LT_ZMMT0123B TYPE STANDARD TABLE OF ZMMT0123B. "提单退货行项目
DATA LS_HEAD TYPE TY_HEAD.
DATA LS_TDMX TYPE TY_TDMX.
DATA: LV_VBELN TYPE LIKP-VBELN. "add cjj 20190529
DATA L_FASONG_MESSAGE TYPE CHAR_1536.
DATA L_FASONG_ERROR_FLAG TYPE CHAR01.
DATA LWA_ZMMT0011 TYPE ZMMT0011.
* IF GT_TDMX IS INITIAL.
* MESSAGE '合同明细为空,不能保存' TYPE 'E'.
* ENDIF.
READ TABLE GT_HEAD INTO LS_HEAD WITH KEY VBELN = PI_VBELN.
MOVE-CORRESPONDING LS_HEAD TO LS_ZMMT0123A.
* move-corresponding GWA_JKTD to ls_zMMT0123A.
CLEAR LWA_ZMMT0011.
LWA_ZMMT0011-ZISSHEN = 'Z2'.
LWA_ZMMT0011-ZVBELN = PI_VBELN.
LWA_ZMMT0011-ERDAT = SY-DATUM.
LWA_ZMMT0011-UZEIT = SY-UZEIT.
LWA_ZMMT0011-UNAME = SY-UNAME.
MODIFY ZMMT0011 FROM LWA_ZMMT0011.

COMMIT WORK AND WAIT.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
PERFORM FRM_UNLOCK_DATA USING PI_VBELN.
* LWA_HEAD-ZCONF = 'Z2'.
* LWA_HEAD-ZCONF_TXT = '确认'.
"接口发送数据
* CALL FUNCTION 'ZFM_MM_DELIVER_BILLS'
* EXPORTING
* IV_ACTION = '1'
* IV_VBELN = ''
* IV_VBELN_RETURN = PI_VBELN
* IV_COMMIT = 'X'
* IV_053_MODE = '1'
* IMPORTING
* EV_MESSAGE = L_FASONG_MESSAGE
* EV_ERROR_FLAG = L_FASONG_ERROR_FLAG.
* IF L_FASONG_ERROR_FLAG = 'S'.
* LWA_HEAD-ZFASONG = 'X'.
* ELSE.
* MESSAGE I000(ZMM001) WITH '发送失败:' L_FASONG_MESSAGE.
* RETURN.
* ENDIF.
LS_HEAD-ZCONF = 'Z2'.
LS_HEAD-ZCONF_TXT = '确认'.
LS_ZMMT0123A-ZCONF = 'Z2'.
LS_ZMMT0123A-ZCONF_TXT = '确认'.
APPEND LS_ZMMT0123A TO LT_ZMMT0123A.

IF LT_ZMMT0123A IS NOT INITIAL.
MODIFY ZMMT0123A FROM TABLE LT_ZMMT0123A.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
MODIFY GT_HEAD FROM LS_HEAD TRANSPORTING ZCONF ZCONF_TXT ZFASONG WHERE VBELN = PI_VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
ELSE.
ROLLBACK WORK.
MESSAGE '保存失败' TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_RETURN_TUIHUI
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LWA_HEAD_VBELN
*&---------------------------------------------------------------------*
FORM FRM_RETURN_TUIHUI USING PI_VBELN TYPE CHAR15.
DATA: LS_ZMMT0123A TYPE ZMMT0123A. "提单退货表头
DATA: LS_ZMMT0123B TYPE ZMMT0123B. "提单退货行项目
DATA: LT_ZMMT0123A TYPE STANDARD TABLE OF ZMMT0123A. "提单退货表头
DATA: LT_ZMMT0123B TYPE STANDARD TABLE OF ZMMT0123B. "提单退货行项目
DATA LS_HEAD TYPE TY_HEAD.
DATA LS_TDMX TYPE TY_TDMX.
DATA LWA_ZMMT0011 TYPE ZMMT0011.
DATA: LV_VBELN TYPE LIKP-VBELN. "add cjj 20190529
DATA L_FASONG_MESSAGE TYPE CHAR_1536.
DATA L_FASONG_ERROR_FLAG TYPE CHAR01.
* IF GT_TDMX IS INITIAL.
* MESSAGE '合同明细为空,不能保存' TYPE 'E'.
* ENDIF.
READ TABLE GT_HEAD INTO LS_HEAD WITH KEY VBELN = PI_VBELN.
MOVE-CORRESPONDING LS_HEAD TO LS_ZMMT0123A.
* move-corresponding GWA_JKTD to ls_zMMT0123A.
CLEAR LWA_ZMMT0011.
LWA_ZMMT0011-ZISSHEN = 'Z1'.
LWA_ZMMT0011-ZVBELN = PI_VBELN.
LWA_ZMMT0011-ERDAT = SY-DATUM.
LWA_ZMMT0011-UZEIT = SY-UZEIT.
LWA_ZMMT0011-UNAME = SY-UNAME.
MODIFY ZMMT0011 FROM LWA_ZMMT0011.

COMMIT WORK AND WAIT.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
PERFORM FRM_UNLOCK_DATA USING PI_VBELN.
"接口发送数据
* CALL FUNCTION 'ZFM_MM_DELIVER_BILLS'
* EXPORTING
* IV_ACTION = '1'
* IV_VBELN = ''
* IV_VBELN_RETURN = PI_VBELN
* IV_COMMIT = 'X'
* IV_053_MODE = '2'
* IMPORTING
* EV_MESSAGE = L_FASONG_MESSAGE
* EV_ERROR_FLAG = L_FASONG_ERROR_FLAG.
* IF L_FASONG_ERROR_FLAG = 'S'.
* LWA_HEAD-ZFASONG = 'X'.
* ELSE.
* MESSAGE I000(ZMM001) WITH '发送失败:' L_FASONG_MESSAGE.
* ENDIF.
LS_HEAD-ZCONF = 'Z3'.
LS_HEAD-ZCONF_TXT = '退回'.
LS_ZMMT0123A-ZCONF = 'Z3'.
LS_ZMMT0123A-ZCONF_TXT = '退回'.
APPEND LS_ZMMT0123A TO LT_ZMMT0123A.

IF LT_ZMMT0123A IS NOT INITIAL.
MODIFY ZMMT0123A FROM TABLE LT_ZMMT0123A.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
MODIFY GT_HEAD FROM LS_HEAD TRANSPORTING ZCONF ZCONF_TXT ZFASONG WHERE VBELN = PI_VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
ELSE.
ROLLBACK WORK.
MESSAGE '保存失败' TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DELETE_PROCESS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LWA_HEAD_VBELN
*&---------------------------------------------------------------------*
FORM DELETE_PROCESS USING PI_VBELN TYPE CHAR15.
DATA: LS_ZMMT0123A TYPE ZMMT0123A. "提单退货表头
DATA: LS_ZMMT0123B TYPE ZMMT0123B. "提单退货行项目
DATA: LS_ZMMT0123C TYPE ZMMT0123C. "提单退货拆分项目
DATA: LT_ZMMT0123A TYPE STANDARD TABLE OF ZMMT0123A. "提单退货表头
DATA: LT_ZMMT0123B TYPE STANDARD TABLE OF ZMMT0123B. "提单退货行项目
DATA: LT_ZMMT0123C TYPE STANDARD TABLE OF ZMMT0123C. "提单退货拆分项目
DATA LS_HEAD TYPE TY_HEAD.
DATA LS_TDMX TYPE TY_TDMX.
DATA LV_MSG_OUT TYPE CHAR200.
SELECT *
FROM ZMMT0123A
INTO TABLE LT_ZMMT0123A
WHERE VBELN = PI_VBELN.
SELECT *
FROM ZMMT0123B
INTO TABLE LT_ZMMT0123B
WHERE VBELN = PI_VBELN.
SELECT *
FROM ZMMT0123C
INTO TABLE LT_ZMMT0123C
WHERE VBELN = PI_VBELN.
IF LT_ZMMT0123A IS NOT INITIAL.
DELETE ZMMT0123A FROM TABLE LT_ZMMT0123A.
IF SY-SUBRC = 0.
* COMMIT WORK AND WAIT.
ELSE.
ROLLBACK WORK.
MESSAGE '删除失败' TYPE 'I'.
RETURN.
ENDIF.
DELETE ZMMT0123B FROM TABLE LT_ZMMT0123B.
IF SY-SUBRC = 0.
IF LT_ZMMT0123C[] IS INITIAL.
COMMIT WORK AND WAIT.
LV_MSG_OUT = '进口提单:' && PI_VBELN && '已删除'.
DELETE GT_HEAD WHERE VBELN = PI_VBELN.
DELETE GT_ITEM WHERE VBELN = PI_VBELN.
DELETE GT_ITEM_ALL WHERE VBELN = PI_VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
MESSAGE LV_MSG_OUT TYPE 'S'.
ENDIF.
ELSE.
ROLLBACK WORK.
MESSAGE '删除失败' TYPE 'I'.
RETURN.
ENDIF.
IF LT_ZMMT0123C[] IS NOT INITIAL.
DELETE ZMMT0123C FROM TABLE LT_ZMMT0123C.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
LV_MSG_OUT = '进口提单:' && PI_VBELN && '已删除'.
DELETE GT_HEAD WHERE VBELN = PI_VBELN.
DELETE GT_ITEM WHERE VBELN = PI_VBELN.
DELETE GT_ITEM_ALL WHERE VBELN = PI_VBELN.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
MESSAGE LV_MSG_OUT TYPE 'S'.
ELSE.
ROLLBACK WORK.
MESSAGE '删除失败' TYPE 'I'.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_THVBELN
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& <-- LV_VBELN
*&---------------------------------------------------------------------*
FORM GET_THVBELN CHANGING VALUE(PI_VBELN) TYPE CHAR15.
DATA: LV_VBELN TYPE CHAR10.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = '01'
OBJECT = 'ZMM123'
* QUANTITY = '1'
* SUBOBJECT = ' '
* TOYEAR = '0000'
* IGNORE_BUFFER = ' '
IMPORTING
NUMBER = LV_VBELN
* QUANTITY =
* RETURNCODE =
EXCEPTIONS
INTERVAL_NOT_FOUND = 1
NUMBER_RANGE_NOT_INTERN = 2
OBJECT_NOT_FOUND = 3
QUANTITY_IS_0 = 4
QUANTITY_IS_NOT_1 = 5
INTERVAL_OVERFLOW = 6
BUFFER_OVERFLOW = 7
OTHERS = 8.
PI_VBELN = 'R' && LV_VBELN.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_CHARG
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& <-- LWA_TDMX_CHARG
*&---------------------------------------------------------------------*
FORM GET_CHARG CHANGING VALUE(P_CHARG) TYPE CHAR10.
DATA LV_CHARG TYPE CHAR10.
DATA LV_CHAR4 TYPE NUMC04.
DATA LV_CHAR5 TYPE CHAR5.
DATA LV_FST_DATE TYPE SY-DATUM.
DATA LV_LST_DATE TYPE SY-DATUM.

LV_FST_DATE = SY-DATUM(6) && '01'.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = SY-DATUM
IMPORTING
E_DATE = LV_LST_DATE.
CLEAR LV_CHARG.
SELECT MAX( CHARG ) FROM MCH1 INTO LV_CHARG
WHERE ERSDA >= LV_FST_DATE AND ERSDA <= LV_LST_DATE
AND LVORM = SPACE.
IF LV_CHARG IS INITIAL.
CLEAR LV_CHAR5.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = '01'
OBJECT = 'ZCHARG5'
* QUANTITY = '1'
* SUBOBJECT = ' '
* TOYEAR = '0000'
* IGNORE_BUFFER = ' '
IMPORTING
NUMBER = LV_CHAR5
* QUANTITY =
* RETURNCODE =
EXCEPTIONS
INTERVAL_NOT_FOUND = 1
NUMBER_RANGE_NOT_INTERN = 2
OBJECT_NOT_FOUND = 3
QUANTITY_IS_0 = 4
QUANTITY_IS_NOT_1 = 5
INTERVAL_OVERFLOW = 6
BUFFER_OVERFLOW = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ELSE.
P_CHARG = SY-DATUM+2(4) && 'X' && LV_CHAR5.
ENDIF.
ELSE.
CALL FUNCTION 'ZFM_GET_BATCH_NUMBER'
IMPORTING
E_BATCH = P_CHARG.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_ACCOUNT_NR
*&---------------------------------------------------------------------*
*& 取新旧账册号
*&---------------------------------------------------------------------*
FORM FRM_GET_ACCOUNT_NR .

CLEAR:GV_ACBK_USE.
SELECT SINGLE COUNT(*) FROM ZMMT0005_1
WHERE ZUSE_NEW_ACBK = ABAP_TRUE.
IF SY-SUBRC = 0.
GV_ACBK_USE = ABAP_TRUE.
ENDIF.

CLEAR:GV_OLD_ACCOUNT_NR.

IF GV_ACBK_USE NE ABAP_TRUE.
SELECT SINGLE ZACCOUNT_BOOK_NR INTO GV_OLD_ACCOUNT_NR
FROM ZMMT0005_1
WHERE ZLAST_ACTIVE = ABAP_TRUE.
ENDIF.

CLEAR:GV_NEW_ACCOUNT_NR.
SELECT SINGLE ZACCOUNT_BOOK_NR INTO GV_NEW_ACCOUNT_NR
FROM ZMMT0005_1
WHERE ZACTIVE = ABAP_TRUE.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form EDIT_HEAD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LWA_LIKP
*& --> LWA_LIPS
*&---------------------------------------------------------------------*
FORM EDIT_HEAD USING PWA_LIKP TYPE LIKP
PWA_LIPS TYPE LIPS
PV_JE TYPE EKPO-NETWR
PV_LFIMG1 TYPE ZMMT0123B-LFIMG
PV_ZTAX TYPE KBETR_KOND
PWA_EKKO TYPE TY_EKKO
PT_LIPS TYPE TYP_T_LIPS
PT_MATDOC TYPE TY_T_MATDOC
PT_T001L TYPE TYP_T_T001L
PT_LFA1 TYPE TYP_T_LFA1
PT_USER_ADDR TYPE TYP_T_USER_ADDR
PT_MKPF TYPE TYP_T_MKPF
PT_TOA01 TYPE TYP_T_TOA01
PT_ZMMT0123B TYPE TYP_T_ZMMT0123B
PT_RBKP TYPE TYP_T_RBKP "add cjj 20191118
PT_RBSTAT TYPE TYP_T_DD07V.
DATA LWA_HEAD TYPE TY_HEAD.
DATA LV_DOMVALUE TYPE DD07V-DOMVALUE_L.
DATA:LV_DDTEXT TYPE DD07V-DDTEXT,
LS_LIPS TYPE LIPS,
LS_T001L TYPE TYP_T001L,
LS_USER_ADDR TYPE TYP_USER_ADDR,
LS_MKPF TYPE TYP_MKPF,
LS_MATDOC TYPE TY_MATDOC,
LS_LFA1 TYPE TYP_LFA1,
LS_RBKP TYPE TYP_RBKP, "Add cjj 20191118
LV_LFIMG2 TYPE ZMMT0123B-LFIMG,
LS_ZMMT0123B TYPE ZMMT0123B,
LS_RBSTAT TYPE DD07V.
DATA LV_ID TYPE THEAD-TDID.
DATA LV_TDNAME TYPE THEAD-TDNAME.
DATA LV_OBJECT TYPE THEAD-TDOBJECT.
DATA LT_LINES TYPE STANDARD TABLE OF TLINE .
DATA LWA_LINES TYPE TLINE.
DATA LV_SHKZG_1 TYPE CHAR01.
DATA LV_SHKZG_2 TYPE CHAR01.
* DATA LV_JE TYPE EKPO-NETWR.
CLEAR LWA_HEAD.
LWA_HEAD-LGORT = PWA_LIPS-LGORT.
LWA_HEAD-ZSTATUS = PWA_LIKP-ZSTATUS.
CLEAR LV_DOMVALUE.
LV_DOMVALUE = PWA_LIKP-ZSTATUS.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_INSTATUS'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_HEAD-ZSTATUS_TXT = LV_DDTEXT.
ENDIF.
ENDIF.
LWA_HEAD-ZCONF = PWA_LIKP-CONFIRM.
CLEAR LV_DOMVALUE.
LV_DOMVALUE = PWA_LIKP-CONFIRM.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_CONFIRM'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_HEAD-ZCONF_TXT = LV_DDTEXT.
ENDIF.
ENDIF.

IF P_DJLX1 IS NOT INITIAL.
LWA_HEAD-ZLEIBIE = '退货'.
ELSEIF P_DJLX2 IS NOT INITIAL.
LWA_HEAD-ZLEIBIE = '送货'.
ELSEIF P_DJLX0 IS NOT INITIAL.
CLEAR: LV_SHKZG_1,LV_SHKZG_2.
LOOP AT PT_LIPS INTO LS_LIPS WHERE VBELN = PWA_LIKP-VBELN.
IF LS_LIPS-SHKZG IS NOT INITIAL.
LV_SHKZG_1 = 'X'.
ENDIF.
IF LS_LIPS-SHKZG IS INITIAL.
LV_SHKZG_2 = 'X'.
ENDIF.
ENDLOOP.
IF LV_SHKZG_1 IS NOT INITIAL AND LV_SHKZG_2 IS NOT INITIAL.
LWA_HEAD-ZLEIBIE = '部分退货'.
ELSEIF LV_SHKZG_1 IS NOT INITIAL AND LV_SHKZG_2 IS INITIAL.
LWA_HEAD-ZLEIBIE = '退货'.
ELSEIF LV_SHKZG_1 IS INITIAL AND LV_SHKZG_2 IS NOT INITIAL.
LWA_HEAD-ZLEIBIE = '送货'.
ENDIF.
ENDIF.
* add cjj 20190528 start
CLEAR LS_MATDOC.
READ TABLE PT_MATDOC INTO LS_MATDOC WITH KEY VBELN_IM = PWA_LIKP-VBELN
BINARY SEARCH.
IF SY-SUBRC = 0.
LWA_HEAD-MBLNR = LS_MATDOC-MBLNR.
ENDIF.
* add cjj 20190528 end
LWA_HEAD-NO_CUST = PWA_LIKP-NO_CUST.
LWA_HEAD-VBELN = PWA_LIKP-VBELN.
LWA_HEAD-ZDELIVERYPLANNO = PWA_LIKP-ZDELIVERYPLANNO.
LWA_HEAD-WERKS = PWA_LIKP-WERKS.
LWA_HEAD-LGORT = PWA_LIPS-LGORT.
LWA_HEAD-SGTXT = PWA_LIKP-SGTXT.
LWA_HEAD-ANZPK = PWA_LIKP-ANZPK.
LWA_HEAD-BTGEW = PWA_LIKP-BTGEW.
LWA_HEAD-NTGEW = PWA_LIKP-NTGEW.
LWA_HEAD-GEWEI = PWA_LIKP-GEWEI.
SELECT SINGLE MSEHL FROM T006A INTO LWA_HEAD-GEWEI_TXT
WHERE SPRAS = SY-LANGU
AND MSEHI = LWA_HEAD-GEWEI.
LWA_HEAD-FREIGHT = PWA_LIKP-FREIGHT.
LWA_HEAD-BOLNR = PWA_LIKP-BOLNR.
LWA_HEAD-INV_NO = PWA_LIKP-INV_NO.
LWA_HEAD-PACK_DATE = PWA_LIKP-PACK_DATE.
LWA_HEAD-ITM_EXPVZ = PWA_LIKP-ITM_EXPVZ.
LWA_HEAD-TRADE_TYPE = PWA_LIKP-TRADE_TYPE.

SELECT SINGLE BEZEI INTO LWA_HEAD-ITM_EXPVZ_TXT
FROM TVTRT
WHERE SPRAS = SY-LANGU
AND VKTRA = LWA_HEAD-ITM_EXPVZ.

CLEAR LV_DOMVALUE.
LV_DOMVALUE = LWA_HEAD-TRADE_TYPE.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_TRADE_TYPE'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_HEAD-TRADE_TYPE_TXT = LV_DDTEXT.
ENDIF.
ENDIF.

LWA_HEAD-LDDAT = PWA_LIKP-LDDAT.
LWA_HEAD-ITM_KZGBE = PWA_LIKP-ITM_KZGBE.
LWA_HEAD-DUE_ARRIVE_DATE = PWA_LIKP-DUE_ARRIVE_DATE.
LWA_HEAD-ZCARGOVALUECURRENCY = PWA_LIKP-ZCARGOVALUECURRENCY.
LWA_HEAD-LFDAT = PWA_LIKP-LFDAT.
LWA_HEAD-ERDAT = PWA_LIKP-ERDAT.
LWA_HEAD-AEDAT = PWA_LIKP-AEDAT.
LWA_HEAD-TDDAT = PWA_LIKP-TDDAT.
LWA_HEAD-ZWERKS = PWA_LIKP-ZWERKS.
LWA_HEAD-ZKEGONG = PWA_LIKP-CLIENT_BUY.
LWA_HEAD-CUST_NO = PWA_LIKP-CUST_NO.
LWA_HEAD-QANETWR = PWA_LIKP-QANETWR.
* SELECT SINGLE NAME2 FROM T001W INTO LWA_HEAD-WERKS_TXT
* WHERE WERKS = LWA_HEAD-ZWERKS.
SELECT SINGLE NAME1 FROM ZMMT0124 INTO LWA_HEAD-WERKS_TXT
WHERE WERKS = LWA_HEAD-ZWERKS.
LWA_HEAD-WERKS1 = PWA_LIKP-WERKS1.
* rep by cjj 20190611 start
* SELECT SINGLE LGOBE INTO LWA_HEAD-LGORT_TXT FROM T001L
* WHERE WERKS = '1000'
* AND LGORT = LWA_HEAD-LGORT.
CLEAR LS_T001L.
READ TABLE PT_T001L INTO LS_T001L WITH KEY LGORT = LWA_HEAD-LGORT
BINARY SEARCH.
IF SY-SUBRC = 0.
LWA_HEAD-LGORT_TXT = LS_T001L-LGOBE.
ENDIF.
* rep by cjj 20190611 end
* CLEAR LV_JE.
* LOOP AT GT_ITEM_ALL INTO LWA_ITEM WHERE VBELN = PWA_LIKP-VBELN.
* LV_JE = LV_JE + LWA_ITEM-ZJE.
* ENDLOOP.
LWA_HEAD-ZFYJE = PV_JE.
LWA_HEAD-ZTOL = LWA_HEAD-ZFYJE + LWA_HEAD-FREIGHT.

* CLEAR LWA_EKKO.
* READ TABLE LT_EKKO INTO LWA_EKKO
* WITH KEY EBELN = PWA_LIPS-VGBEL
* EBELP = PWA_LIPS-VGPOS BINARY SEARCH.
IF PWA_EKKO IS NOT INITIAL.
LWA_HEAD-ZHTH = PWA_EKKO-ZHTH.
LWA_HEAD-EKGRP = PWA_EKKO-EKGRP.
SELECT SINGLE EKNAM FROM T024
INTO LWA_HEAD-EKGRP_TXT
WHERE EKGRP = LWA_HEAD-EKGRP.
LWA_HEAD-LIFNR = PWA_EKKO-LIFNR.
* rep by cjj 20190611 start
* CLEAR LWA_LFA1.
* SELECT SINGLE NAME1 NAME2 FROM LFA1
* INTO CORRESPONDING FIELDS OF LWA_LFA1
* WHERE LIFNR = LWA_HEAD-LIFNR.
* CONCATENATE LWA_LFA1-NAME1 LWA_LFA1-NAME2 INTO LWA_HEAD-LIFNR_TXT
* SEPARATED BY SPACE.
CLEAR LS_LFA1.
READ TABLE PT_LFA1 INTO LS_LFA1 WITH KEY LIFNR = LWA_HEAD-LIFNR
BINARY SEARCH.
IF SY-SUBRC = 0.
CONCATENATE LS_LFA1-NAME1 LS_LFA1-NAME2 INTO LWA_HEAD-LIFNR_TXT
SEPARATED BY SPACE.
ENDIF.
* rep by cjj 20190611 end
LWA_HEAD-ZLSCH = PWA_EKKO-ZLSCH.
LWA_HEAD-INCO1 = PWA_EKKO-INCO1.
LWA_HEAD-WKURS = PWA_EKKO-WKURS.
LWA_HEAD-ZTAX = PV_ZTAX.
LWA_HEAD-WAERS = PWA_EKKO-WAERS.
SELECT SINGLE KTEXT FROM TCURT
INTO LWA_HEAD-WAERS_TXT
WHERE SPRAS = SY-LANGU
AND WAERS = LWA_HEAD-WAERS.
ENDIF.

LV_DOMVALUE = LWA_HEAD-NO_CUST.
IF LV_DOMVALUE IS NOT INITIAL.
CALL FUNCTION 'DOMAIN_VALUE_GET'
EXPORTING
I_DOMNAME = 'ZD_NO_CUST'
I_DOMVALUE = LV_DOMVALUE
IMPORTING
E_DDTEXT = LV_DDTEXT
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LWA_HEAD-NO_CUST_TXT = LV_DDTEXT.
ENDIF.
ENDIF.

"入库人,入库日期
* rep by cjj 20190611 start
* SELECT MKPF~USNAM MKPF~BUDAT
* FROM MKPF INNER JOIN MSEG
* ON MKPF~MBLNR = MSEG~MBLNR
* AND MKPF~MJAHR = MSEG~MJAHR
* UP TO 1 ROWS
* INTO ( LWA_HEAD-USNAM,LWA_HEAD-BUDAT )
* WHERE MSEG~VBELN_IM = LWA_HEAD-VBELN.
* ENDSELECT.

* SELECT SINGLE NAME_TEXTC FROM USER_ADDR
* INTO LWA_HEAD-USNAM_TXT
* WHERE BNAME = LWA_HEAD-USNAM.
CLEAR LS_MKPF.
READ TABLE PT_MKPF INTO LS_MKPF WITH KEY VBELN_IM = LWA_HEAD-VBELN
BINARY SEARCH.
IF SY-SUBRC = 0.
LWA_HEAD-USNAM = LS_MKPF-USNAM.
LWA_HEAD-BUDAT = LS_MKPF-BUDAT.
CLEAR LS_USER_ADDR.
READ TABLE PT_USER_ADDR INTO LS_USER_ADDR WITH KEY BNAME = LWA_HEAD-USNAM
BINARY SEARCH.
IF SY-SUBRC = 0.
LWA_HEAD-USNAM_TXT = LS_USER_ADDR-NAME_TEXTC.
ENDIF.
ENDIF.
* rep by cjj 20190611 end
SELECT SINGLE TEXT2 FROM T042ZT INTO LWA_HEAD-ZLSCH_TXT
WHERE SPRAS = SY-LANGU
AND LAND1 = 'CN'
AND ZLSCH = LWA_HEAD-ZLSCH.

LV_ID = '0102'.
LV_TDNAME = LWA_HEAD-VBELN.
LV_OBJECT = 'VBBK'.
CLEAR LT_LINES.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = LV_ID
LANGUAGE = SY-LANGU
NAME = LV_TDNAME
OBJECT = LV_OBJECT
TABLES
LINES = LT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LOOP AT LT_LINES INTO LWA_LINES.
CONCATENATE LWA_HEAD-MEMO LWA_LINES-TDLINE INTO LWA_HEAD-MEMO.
ENDLOOP.
ENDIF.

* "发送标记
* CLEAR LWA_ZMMT0011.
* READ TABLE LT_ZMMT0011 INTO LWA_ZMMT0011 WITH KEY VBELN = LWA_HEAD-VBELN.
*
* LWA_HEAD-ZFASONG = 'X'.
*
* ENDLOOP.
* ENDIF.

"合同附件
* rep by cjj 20190611 start
* SELECT COUNT(*) FROM TOA01
* WHERE SAP_OBJECT = 'ZMMR0003' AND OBJECT_ID = LWA_HEAD-ZHTH.
READ TABLE PT_TOA01 WITH KEY OBJECT_ID = LWA_HEAD-ZHTH
SAP_OBJECT = 'ZMMR0003'
TRANSPORTING NO FIELDS.
* rep by cjj 20190611 end
IF SY-SUBRC = 0.
LWA_HEAD-ZHTBJ = '附件'.
ENDIF.
"提单附件
* rep by cjj 20190611 start
* SELECT COUNT(*) FROM TOA01
* WHERE SAP_OBJECT = 'ZMMR012301' AND OBJECT_ID = LWA_HEAD-VBELN.
READ TABLE PT_TOA01 WITH KEY OBJECT_ID = LWA_HEAD-VBELN
SAP_OBJECT = 'ZMMR012301'
TRANSPORTING NO FIELDS.
* rep by cjj 20190611 end
IF SY-SUBRC = 0.
LWA_HEAD-ZTDFJ = '附件'.
ENDIF.
"发票附件
* rep by cjj 20190611 start
* SELECT COUNT(*) FROM TOA01
* WHERE SAP_OBJECT = 'ZMMR012302' AND OBJECT_ID = LWA_HEAD-VBELN.
READ TABLE PT_TOA01 WITH KEY OBJECT_ID = LWA_HEAD-VBELN
SAP_OBJECT = 'ZMMR012302'
TRANSPORTING NO FIELDS.
* rep by cjj 20190611 end
IF SY-SUBRC = 0.
LWA_HEAD-ZFPFJ = '附件'.
ENDIF.
"在途入库单附件
* rep by cjj 20190611 start
* SELECT COUNT(*) FROM TOA01
* WHERE SAP_OBJECT = 'ZMMR012303' AND OBJECT_ID = LWA_HEAD-VBELN.
READ TABLE PT_TOA01 WITH KEY OBJECT_ID = LWA_HEAD-VBELN
SAP_OBJECT = 'ZMMR012303'
TRANSPORTING NO FIELDS.
* rep by cjj 20190611 end
IF SY-SUBRC = 0.
LWA_HEAD-ZZTRKDFJ = '附件'.
ENDIF.
"正式入库单附件
* rep by cjj 20190611 start
* SELECT COUNT(*) FROM TOA01
* WHERE SAP_OBJECT = 'ZMMR012304' AND OBJECT_ID = LWA_HEAD-VBELN.
READ TABLE PT_TOA01 WITH KEY OBJECT_ID = LWA_HEAD-VBELN
SAP_OBJECT = 'ZMMR012304'
TRANSPORTING NO FIELDS.
* rep by cjj 20190611 end
IF SY-SUBRC = 0.
LWA_HEAD-ZZSRKDFJ = '附件'.
ENDIF.

"正式入库单附件
* rep by cjj 20190611 start
* SELECT COUNT(*) FROM TOA01
* WHERE SAP_OBJECT = 'ZMMR0011' AND OBJECT_ID = LWA_HEAD-VBELN.
READ TABLE PT_TOA01 WITH KEY OBJECT_ID = LWA_HEAD-VBELN
SAP_OBJECT = 'ZMMR0011'
TRANSPORTING NO FIELDS.
* rep by cjj 20190611 end
IF SY-SUBRC = 0.
LWA_HEAD-ZBGDFJ = '附件'.
ENDIF.
* Edit 发货数量
CLEAR: LV_LFIMG2.
* LOOP AT GT_ITEM_ALL INTO LWA_ITEM WHERE VBELN = PWA_LIKP-VBELN.
* LV_LFIMG1 = LV_LFIMG1 + LWA_ITEM-LFIMG.
* CLEAR LWA_ITEM.
* ENDLOOP.
LOOP AT PT_ZMMT0123B INTO LS_ZMMT0123B WHERE VBELN+1(10) = PWA_LIKP-VBELN.
LV_LFIMG2 = LV_LFIMG2 + LS_ZMMT0123B-LFIMG.
CLEAR LS_ZMMT0123B.
ENDLOOP.
IF LV_LFIMG2 >= PV_LFIMG1.
LWA_HEAD-THZT = '完全退货'.
ELSEIF LV_LFIMG2 < PV_LFIMG1 AND LV_LFIMG2 <> 0.
LWA_HEAD-THZT = '部分退货'.
ENDIF.
* add cjj 20191118 start
CLEAR LS_RBKP.
READ TABLE PT_RBKP INTO LS_RBKP WITH KEY ZUONR = PWA_LIKP-VBELN.
READ TABLE PT_RBSTAT INTO LS_RBSTAT WITH KEY DOMVALUE_L = LS_RBKP-RBSTAT.
LWA_HEAD-RBSTAT = LS_RBSTAT-DDTEXT.
LWA_HEAD-BELNR = LS_RBKP-BELNR.
* add cjj 20191118 end
APPEND LWA_HEAD TO GT_HEAD.
CLEAR LWA_HEAD.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form ON_USER_COMMAND
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& <-- E_UCOMM
*&---------------------------------------------------------------------*
FORM ON_USER_COMMAND CHANGING PE_UCOMM TYPE SY-UCOMM.
DATA: LT_ROW TYPE LVC_T_ROW,
LS_ROW TYPE LVC_S_ROW.
CLEAR LT_ROW.
* CALL METHOD G_GRID->GET_SELECTED_ROWS
* IMPORTING
* ET_ROW_NO = LT_ROW.
DATA: LV_CONT TYPE I,
LV_TABIX TYPE SY-TABIX.

* clear GT_select.
CASE PE_UCOMM.
WHEN 'SAL'.
CALL METHOD GCL_ALV_GRID4->GET_SELECTED_ROWS
IMPORTING
ET_INDEX_ROWS = LT_ROW.
* LOOP AT gty_bsikD INTO lS_bsikD.
* LV_TABIX = SY-TABIX.
* READ TABLE LT_FILTERED WITH KEY TABLE_LINE = LV_TABIX TRANSPORTING NO FIELDS.
* IF SY-SUBRC NE 0.
* CLEAR lS_bsikD-CHK.
* MODIFY gty_bsikD FROM lS_bsikD INDEX LV_TABIX.
* ENDIF.
* ENDLOOP.
DATA LWA_PO_HEAD TYPE TY_PO_HEAD.
DATA LT_ITEM_TMP TYPE STANDARD TABLE OF TY_PO_ITEM.
DATA: LS_PO_ITEM TYPE TY_PO_ITEM.
DATA LWA_LAYOUT TYPE LVC_S_LAYO.
CLEAR LT_ITEM_TMP.
LOOP AT LT_ROW INTO LS_ROW.
READ TABLE GT_PO_HEAD INTO LWA_PO_HEAD INDEX LS_ROW-INDEX.
IF SY-SUBRC = 0.
LOOP AT GT_PO_ITEM_ALL INTO LS_PO_ITEM WHERE EBELN = LWA_PO_HEAD-EBELN.
APPEND LS_PO_ITEM TO LT_ITEM_TMP.
ENDLOOP.
ENDIF.
ENDLOOP.
CLEAR GT_PO_ITEM[].
GT_PO_ITEM[] = LT_ITEM_TMP[].
* CLEAR gv_row4.
* gv_row4 = row.
* CLEAR gt_po_item.
* lt_item_tmp = gt_po_item_all.
* DELETE lt_item_tmp WHERE ebeln <> lwa_po_head-ebeln.
* gt_po_item = lt_item_tmp.

CLEAR LWA_LAYOUT.
LWA_LAYOUT-CWIDTH_OPT = 'X'.
LWA_LAYOUT-ZEBRA = 'X'.
LWA_LAYOUT-SEL_MODE = 'D'.
CALL METHOD GCL_ALV_GRID5->SET_FRONTEND_LAYOUT
EXPORTING
IS_LAYOUT = LWA_LAYOUT.

CALL METHOD GCL_ALV_GRID4->REFRESH_TABLE_DISPLAY.
CALL METHOD GCL_ALV_GRID5->REFRESH_TABLE_DISPLAY.
PERFORM FRM_SET_CURSOR4.
WHEN 'SAL'.
* CALL METHOD G_GRID_m->GET_FILTERED_ENTRIES
* IMPORTING
* ET_FILTERED_ENTRIES = LT_FILTERED.

* LOOP AT gty_bsikD INTO lS_bsikD.
* LV_TABIX = SY-TABIX.
* READ TABLE LT_FILTERED WITH KEY TABLE_LINE = LV_TABIX TRANSPORTING NO FIELDS.
* IF SY-SUBRC NE 0.
* CLEAR lS_bsikD-CHK.
* MODIFY gty_bsikD FROM lS_bsikD INDEX LV_TABIX.
* ENDIF.
* ENDLOOP.

ENDCASE.

* CALL METHOD G_GRID->REFRESH_TABLE_DISPLAY.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form EDIT_ZTAXTYPE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LV_PSPHI
*& --> LV_SLWID
*& <-- LWA_PO_ITEM_ZTAXTYPE
*&---------------------------------------------------------------------*
FORM EDIT_ZTAXTYPE USING VALUE(PI_PSPHI) TYPE PROJ-PSPNR
VALUE(PI_SLWID) TYPE PRPS-SLWID
CHANGING VALUE(PO_ZTAXTYPE) TYPE CHAR10.
DATA: L_ZZPJTNO TYPE ZPST0007-ZZPJTNO,
LS_ZPST0007 TYPE ZPST0007.
IF PI_SLWID <> 'ZPMCGJ1'.
CLEAR: L_ZZPJTNO,LS_ZPST0007,PO_ZTAXTYPE.
CALL FUNCTION 'CONVERSION_EXIT_KONPD_OUTPUT'
EXPORTING
INPUT = PI_PSPHI
IMPORTING
OUTPUT = L_ZZPJTNO.
SELECT SINGLE *
FROM ZPST0007
INTO LS_ZPST0007
WHERE ZZPJTNO = L_ZZPJTNO.
PO_ZTAXTYPE = LS_ZPST0007-ZZTAX.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9800 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9800 OUTPUT.
SET PF-STATUS 'S9800'.
SET TITLEBAR 'T9800'.
ENDMODULE.

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9800 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9800 INPUT.
DATA: FLG_ERROR TYPE C.
OK_CODE = SY-UCOMM.
CASE OK_CODE.
WHEN 'BACK' OR 'EXIT' OR 'CANC' OR 'CANCL'.
LEAVE TO SCREEN 0 .
WHEN 'CONFIM_BACK'.
* 必输check
CLEAR FLG_ERROR.
PERFORM CHECK_SPLIT_DATA CHANGING FLG_ERROR.
IF FLG_ERROR = SPACE.
* BDC process
PERFORM BDC_PROCESS USING 'E'.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
LEAVE TO SCREEN 0 .
ENDIF.
WHEN 'CONFIM'.
* 必输check
CLEAR FLG_ERROR.
PERFORM CHECK_SPLIT_DATA CHANGING FLG_ERROR..
* Bapi 执行预制凭证
IF FLG_ERROR = SPACE.
* PERFORM PARK_PROCESS.
PERFORM BDC_PROCESS USING 'N'.
CALL METHOD GCL_ALV_GRID1->REFRESH_TABLE_DISPLAY.
LEAVE TO SCREEN 0 .
ENDIF.
* IF G_BUTTON_TEXT_GO = '提交'.
* PERFORM FRM_AUDIT_GO.
* ENDIF.
* IF G_BUTTON_TEXT_GO = '撤回'.
* PERFORM FRM_UNDO_GO.
* ENDIF.

WHEN OTHERS .

ENDCASE.
ENDMODULE.

*&---------------------------------------------------------------------*
*& Module HLP_ZTERM INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE HLP_ZTERM INPUT.
CALL FUNCTION 'FI_F4_ZTERM'
EXPORTING
I_KOART = 'K'
I_ZTERM = GS_0101-ZTERM
I_XSHOW = ' '
IMPORTING
E_ZTERM = ZTERM.
GS_0101-ZTERM = ZTERM.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module HLP_YFTJ INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE HLP_YFTJ INPUT.
CALL FUNCTION 'FI_F4_ZTERM'
EXPORTING
I_KOART = 'K'
I_ZTERM = GS_0101-YFTJ
I_XSHOW = ' '
IMPORTING
E_ZTERM = ZTERM.
GS_0101-YFTJ = ZTERM.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module HLP_ZBTJ INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE HLP_ZBTJ INPUT.
CALL FUNCTION 'FI_F4_ZTERM'
EXPORTING
I_KOART = 'K'
I_ZTERM = GS_0101-ZBTJ
I_XSHOW = ' '
IMPORTING
E_ZTERM = ZTERM.
GS_0101-ZBTJ = ZTERM.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form CHECK_SPLIT_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& <-- FLG_ERROR
*&---------------------------------------------------------------------*
FORM CHECK_SPLIT_DATA CHANGING VALUE(P_FLG) TYPE C.
IF GS_0101-ZLSCH IS INITIAL.
MESSAGE I398(00) WITH '请输入付款方式' DISPLAY LIKE 'E'.
P_FLG = 'X'.
ENDIF.
IF GS_0101-ZTERM IS INITIAL.
MESSAGE I398(00) WITH '请输入付款条件' DISPLAY LIKE 'E'.
P_FLG = 'X'.
ENDIF."add cjj 20191011 end
* 付款方式check
IF GS_0101-YFJE IS NOT INITIAL AND GS_0101-YFFS IS INITIAL.
MESSAGE I398(00) WITH '请输入预付款付款方式' DISPLAY LIKE 'E'.
P_FLG = 'X'.
ENDIF.
* 付款条件check
IF GS_0101-YFJE IS NOT INITIAL AND GS_0101-YFTJ IS INITIAL.
MESSAGE I398(00) WITH '请输入预付款付款条件' DISPLAY LIKE 'E'.
P_FLG = 'X'.
ENDIF.
* 付款方式check
IF GS_0101-ZBJE IS NOT INITIAL AND GS_0101-ZBFS IS INITIAL.
MESSAGE I398(00) WITH '请输入质保金付款方式' DISPLAY LIKE 'E'.
P_FLG = 'X'.
ENDIF.
* 付款条件check
IF GS_0101-ZBJE IS NOT INITIAL AND GS_0101-ZBTJ IS INITIAL.
MESSAGE I398(00) WITH '请输入质保金付款条件' DISPLAY LIKE 'E'.
P_FLG = 'X'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BDC_PROCESS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_
*&---------------------------------------------------------------------*
FORM BDC_PROCESS USING PI_MODE TYPE C.
DATA: LT_BDCDATA TYPE STANDARD TABLE OF BDCDATA,
LT_BDCMSG TYPE STANDARD TABLE OF BDCMSGCOLL,
LS_BDCMSG TYPE BDCMSGCOLL,
LV_MODE(1) TYPE C VALUE 'E',
LS_CTU_PARAMS TYPE CTU_PARAMS,
LV_BUZEI TYPE N,
LV_FIELDS TYPE BDC_PROG,
LV_DMBTR TYPE ZMMT0034-SBA_INV_AMT, "发票含税金额 add cjj 20190806
LV_DMBTR_SUM TYPE ZMMT0034-SBA_INV_AMT,
LV_DMBTR_O(13) TYPE C,
LS_ITEM TYPE TY_ITEM,
LV_MSG TYPE CHAR250,
LV_FREIGHT TYPE EKPO-NETWR, "运费
LV_MSG1 TYPE CHAR250,
LV_LINE TYPE I,
LT_ITEM_PARK TYPE STANDARD TABLE OF TY_ITEM. "Add cjj 20191119
DATA: LT_RBSELBEST TYPE STANDARD TABLE OF RBSELBEST,
LS_RBSELBEST TYPE RBSELBEST,
LS_RBSTAT TYPE DD07V. "Add cjj 20191203
DATA: LT_DRSEG_123 TYPE STANDARD TABLE OF DRSEG,
LS_DRSEG TYPE DRSEG.
DATA LV_TEXT_QUESTION TYPE CHAR100.
DATA LV_ANSWER TYPE CHAR01.
DATA LV_TITLE TYPE CHAR50.

CLEAR:LT_ITEM_PARK, LV_ANSWER,LV_DMBTR_SUM,LV_LINE.
LT_ITEM_PARK[] = GT_ITEM_PARK[].
SORT LT_ITEM_PARK BY VGBEL.
DELETE ADJACENT DUPLICATES FROM LT_ITEM_PARK COMPARING VGBEL.
DESCRIBE TABLE LT_ITEM_PARK LINES LV_LINE.
IF LV_LINE <> 1.
IF PI_MODE = 'E'.
LV_TEXT_QUESTION = '不同采购订单做在同一提单,余额可能不平,请检查并手工调整!'.
ELSE.
LV_TEXT_QUESTION = '不同采购订单做在同一提单,余额可能不平,请模拟生成并检查!'.
ENDIF.
LV_TITLE = '提单管理'.
MESSAGE I398(00) WITH LV_TEXT_QUESTION .
IF PI_MODE = 'N'.
RETURN.
ENDIF.
ENDIF.
LOOP AT GT_ITEM_PARK INTO LS_ITEM.
* LS_rbselbest-GJAHR = ls_item-MJAHR.
LS_RBSELBEST-EBELN = LS_ITEM-VGBEL.
LS_RBSELBEST-EBELP = LS_ITEM-VGPOS.
APPEND LS_RBSELBEST TO LT_RBSELBEST.
LS_DRSEG-EBELN = LS_ITEM-VGBEL.
LS_DRSEG-EBELP = LS_ITEM-VGPOS.
* LS_DRSEG-MBLNR = GS_ZMMI0059_ALV_S1-MBLNR.
* LS_DRSEG-MJAHR = GS_ZMMI0059_ALV_S1-MJAHR.
* LS_DRSEG-MBLPO = GS_ZMMI0059_ALV_S1-ZEILE.

LS_DRSEG-MENGE = LS_ITEM-LFIMG.
LS_DRSEG-MEINS = LS_ITEM-VRKME.
LS_DRSEG-WRBTR = LS_ITEM-ZJE.
LS_DRSEG-NETWR = LS_ITEM-FREIGHT. "运费
LV_DMBTR_SUM = LV_DMBTR_SUM + LS_ITEM-ZJE + LS_ITEM-FREIGHT. "运费
LS_DRSEG-MATNR = LS_ITEM-MATNR.
LS_DRSEG-SGT_SCAT = LS_ITEM-VBELN.
LS_DRSEG-BEWAE = LS_ITEM-WAERS.
LS_DRSEG-MWSKZ = GS_0101-MWSKZ.
* LS_DRSEG-FKNUM = GS_ZMMI0059_ALV_S1-VBELN.
* LS_DRSEG-FKPOS = GS_ZMMI0059_ALV_S1-POSNR.

APPEND LS_DRSEG TO LT_DRSEG_123.
CLEAR LS_ITEM.
ENDLOOP.
* lv_FREIGHT = GWA_HEAD-FREIGHT.
IF LV_DMBTR_SUM <> GS_0101-SBA_INV_AMT2 AND PI_MODE = 'N'.
MESSAGE E398(00) WITH '余额不为0,不能生成预制凭证。'.
ENDIF.
SORT LT_RBSELBEST.
DELETE ADJACENT DUPLICATES FROM LT_RBSELBEST.
IF LT_RBSELBEST[] IS NOT INITIAL.
*TO LMR1MF3U
EXPORT LT_RBSELBEST TO MEMORY ID '&ZMMR0123_EBELN'.
* EXPORT lv_FREIGHT TO MEMORY ID '&ZMMR0123_FREIGHT'.
ENDIF.
* TO LMRMDF0H& LMR1MF3U
IF LT_DRSEG_123[] IS NOT INITIAL.
EXPORT LT_DRSEG_123 TO MEMORY ID '&ZMMR0123_ITEM'.
ENDIF.
* CLEAR ls_item.
* READ TABLE GT_item_PARK INTO ls_item INDEX 1.
SET PARAMETER ID 'BUK' FIELD GS_0101-BUKRS.

PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'RM08M-REFERENZBELEGTYP' '1'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '/00'
CHANGING LT_BDCDATA.


* PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
* CHANGING LT_BDCDATA.
* PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=MSEL'
* CHANGING LT_BDCDATA.
* PERFORM FRM_FILL_BDC USING '' 'RM08M-VORGANG' '1' "发票 add 20191219
* CHANGING LT_BDCDATA.
CLEAR LV_DMBTR_O.
WRITE GS_0101-SBA_INV_AMT2 TO LV_DMBTR_O CURRENCY GS_0101-WAERS.
PERFORM FRM_FILL_BDC USING '' 'INVFO-WRBTR' LV_DMBTR_O "总金额
CHANGING LT_BDCDATA.
* PERFORM FRM_FILL_BDC USING '' 'INVFO-XMWST' 'X' "自动计算税
* CHANGING LT_BDCDATA.
* PERFORM FRM_FILL_BDC USING '' 'INVFO-MWSKZ' GS_ZMMI0059_ALV_S1-MWSKZ "税code add cjj 20190911
* CHANGING LT_BDCDATA. " add cjj 20190911
CLEAR LV_DMBTR_O.
WRITE GS_0101-SBA_TAX_2 TO LV_DMBTR_O.
PERFORM FRM_FILL_BDC USING '' 'INVFO-WMWST' LV_DMBTR_O "税
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'INVFO-MWSKZ' GS_0101-MWSKZ "税code
CHANGING LT_BDCDATA.

PERFORM FRM_FILL_BDC USING '' 'INVFO-BLDAT' SY-DATUM
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'INVFO-BUDAT' SY-DATUM
CHANGING LT_BDCDATA.
* PERFORM FRM_FILL_BDC USING '' 'RM08M-REFERENZBELEGTYP' '1'
* CHANGING LT_BDCDATA.
READ TABLE GT_ITEM_PARK INTO LS_ITEM INDEX 1.
PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'RM08M-XWARE_BNK' '3'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=MSEL'
CHANGING LT_BDCDATA.

* if LS_ITEM-FREIGHT <> 0.
** PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
** CHANGING LT_BDCDATA.
* PERFORM FRM_FILL_BDC USING '' 'RM08M-XWARE_BNK' '3'
* CHANGING LT_BDCDATA.
** PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '/00'
** CHANGING LT_BDCDATA.
* else.
* PERFORM FRM_FILL_BDC USING '' 'RM08M-XWARE_BNK' '1'
* CHANGING LT_BDCDATA.
* endif.
PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6220'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '/00'
CHANGING LT_BDCDATA.

PERFORM FRM_FILL_BDC USING '' 'RM08M-EBELN(01)' LS_ITEM-VGBEL
CHANGING LT_BDCDATA.

PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6220'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=CREA_ITEML'
CHANGING LT_BDCDATA.

* 付款信息
PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=HEADER_PAY'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=HEADER_PAY'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'INVFO-ZTERM' GS_0101-ZTERM
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'INVFO-ZLSCH' GS_0101-ZLSCH
CHANGING LT_BDCDATA.
* 分配
PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=HEADER_FI'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=HEADER_FI'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'INVFO-ZUONR' LS_ITEM-VBELN
CHANGING LT_BDCDATA.
IF GS_0101-FREIGHT <> 0."计划外运费
PERFORM FRM_FILL_BDC USING '' 'INVFO-BEZNK' GS_0101-FREIGHT
CHANGING LT_BDCDATA.
ENDIF.
* 金额分摊
PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=HEADER_SPLIT'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=HEADER_SPLIT'
CHANGING LT_BDCDATA.
LV_DMBTR = GS_0101-SBA_INV_AMT2 - GS_0101-YFJE - GS_0101-ZBJE."凭证货币中的部分总的发票金额
LV_BUZEI = 1.
CLEAR LV_FIELDS.
IF LV_DMBTR IS NOT INITIAL.
CLEAR LV_DMBTR_O.
WRITE LV_DMBTR TO LV_DMBTR_O CURRENCY GS_0101-WAERS.
CONCATENATE 'ACSPLT-WRBTR(0' LV_BUZEI ')' INTO LV_FIELDS.
PERFORM FRM_FILL_BDC USING '' LV_FIELDS LV_DMBTR_O "发票金额
CHANGING LT_BDCDATA.
ENDIF.
LV_BUZEI = 2.
IF GS_0101-YFJE IS NOT INITIAL.
CLEAR LV_FIELDS.
CONCATENATE 'ACSPLT-WRBTR(0' LV_BUZEI ')' INTO LV_FIELDS.
CLEAR LV_DMBTR_O.
WRITE GS_0101-YFJE TO LV_DMBTR_O CURRENCY GS_0101-WAERS.
PERFORM FRM_FILL_BDC USING '' LV_FIELDS LV_DMBTR_O "发票金额
CHANGING LT_BDCDATA.
CLEAR LV_FIELDS.
CONCATENATE 'ACSPLT-ZLSCH(0' LV_BUZEI ')' INTO LV_FIELDS.
PERFORM FRM_FILL_BDC USING '' LV_FIELDS GS_0101-YFFS "付款方式
CHANGING LT_BDCDATA.
CLEAR LV_FIELDS.
CONCATENATE 'ACSPLT-ZTERM(0' LV_BUZEI ')' INTO LV_FIELDS.
PERFORM FRM_FILL_BDC USING '' LV_FIELDS GS_0101-YFTJ "付款条件代码
CHANGING LT_BDCDATA.
LV_BUZEI = LV_BUZEI + 1.
ENDIF.

IF GS_0101-ZBJE IS NOT INITIAL.
CLEAR LV_FIELDS.
CLEAR LV_DMBTR_O.
WRITE GS_0101-ZBJE TO LV_DMBTR_O CURRENCY GS_0101-WAERS.
CONCATENATE 'ACSPLT-WRBTR(0' LV_BUZEI ')' INTO LV_FIELDS.
PERFORM FRM_FILL_BDC USING '' LV_FIELDS LV_DMBTR_O "发票金额
CHANGING LT_BDCDATA.
CLEAR LV_FIELDS.
CONCATENATE 'ACSPLT-ZLSCH(0' LV_BUZEI ')' INTO LV_FIELDS.
PERFORM FRM_FILL_BDC USING '' LV_FIELDS GS_0101-ZBFS "付款方式
CHANGING LT_BDCDATA.
CLEAR LV_FIELDS.
CONCATENATE 'ACSPLT-ZTERM(0' LV_BUZEI ')' INTO LV_FIELDS.
PERFORM FRM_FILL_BDC USING '' LV_FIELDS GS_0101-ZBTJ "付款条件代码
CHANGING LT_BDCDATA.
ENDIF.
IF GS_0101-HKONT IS NOT INITIAL AND GS_0101-DMBTR_GAP <> 0 AND GS_0101-SBA_INV_AMT2 <> 0.
PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=ITEMS_G/L'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=ITEMS_G/L'
CHANGING LT_BDCDATA.
CLEAR LV_FIELDS.
LV_FIELDS = 'ACGL_ITEM-HKONT(01)'.
PERFORM FRM_FILL_BDC USING '' LV_FIELDS GS_0101-HKONT "会计科目
CHANGING LT_BDCDATA.
CLEAR LV_FIELDS.
LV_FIELDS = 'ACGL_ITEM-SHKZG(01)'.
IF GS_0101-DMBTR_GAP < 0.
PERFORM FRM_FILL_BDC USING '' LV_FIELDS 'H' "记账码
CHANGING LT_BDCDATA.
ELSE.
PERFORM FRM_FILL_BDC USING '' LV_FIELDS 'S' "记账码
CHANGING LT_BDCDATA.
ENDIF.
CLEAR LV_FIELDS.
LV_FIELDS = 'ACGL_ITEM-KOSTL(01)'.
PERFORM FRM_FILL_BDC USING '' LV_FIELDS GS_0101-KOSTL "成本中心
CHANGING LT_BDCDATA.
CLEAR LV_DMBTR_O.
GS_0101-DMBTR_GAP = ABS( GS_0101-DMBTR_GAP ).
WRITE GS_0101-DMBTR_GAP TO LV_DMBTR_O CURRENCY GS_0101-WAERS.
CLEAR LV_FIELDS.
LV_FIELDS = 'ACGL_ITEM-WRBTR(01)'.
PERFORM FRM_FILL_BDC USING '' LV_FIELDS LV_DMBTR_O "金额
CHANGING LT_BDCDATA.
ENDIF.
PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=AMAR'
CHANGING LT_BDCDATA.

IF PI_MODE = 'N'.
PERFORM FRM_FILL_BDC USING 'X' 'SAPLMR1M' '6000'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=ZCOMP'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING 'X' 'SAPLSPO1' '0100'
CHANGING LT_BDCDATA.
PERFORM FRM_FILL_BDC USING '' 'BDC_OKCODE' '=YES'
CHANGING LT_BDCDATA.

ENDIF.
LS_CTU_PARAMS-DISMODE = PI_MODE."'E'."LV_MODE.
LS_CTU_PARAMS-UPDMODE = 'S'.
LS_CTU_PARAMS-NOBINPT = 'X'.
LS_CTU_PARAMS-NOBIEND = 'X'.
CALL TRANSACTION 'MIR7' USING LT_BDCDATA
OPTIONS FROM LS_CTU_PARAMS
MESSAGES INTO LT_BDCMSG.
LOOP AT LT_BDCMSG INTO LS_BDCMSG WHERE MSGTYP CA 'AEX'.
MESSAGE ID LS_BDCMSG-MSGID
TYPE 'I'
NUMBER LS_BDCMSG-MSGNR
WITH LS_BDCMSG-MSGV1
LS_BDCMSG-MSGV2
LS_BDCMSG-MSGV3
LS_BDCMSG-MSGV4
INTO LV_MSG1.
IF LV_MSG IS INITIAL.
LV_MSG = LV_MSG1.
ELSE.
CONCATENATE LV_MSG1 LV_MSG INTO LV_MSG SEPARATED BY '|'.
ENDIF.
ENDLOOP.
IF LV_MSG IS NOT INITIAL.
* LOOP AT GT_ZMMI0059_ALV_S1 INTO GS_ZMMI0059_ALV_S1 WHERE SEL = 'X'.
* GS_ZMMI0059_ALV_S1-MSG = LV_MSG.
* MODIFY GT_ZMMI0059_ALV_S1 FROM GS_ZMMI0059_ALV_S1 .
* CLEAR GS_ZMMI0059_ALV_S1 .
* ENDLOOP.

MESSAGE E398(00) WITH LV_MSG(50) LV_MSG+50(50) LV_MSG+100(50) LV_MSG+150(50).
ELSE.
CLEAR:LS_BDCMSG.
READ TABLE LT_BDCMSG INTO LS_BDCMSG WITH KEY MSGID = 'M8' MSGNR = '388'.
IF SY-SUBRC = 0.
READ TABLE GT_HEAD INTO GWA_HEAD INDEX GV_PARK_INDEX.

SELECT SINGLE BELNR "发票号
RBSTAT "发票预制人
* CPUDT "发票预制日期
INTO ( GWA_HEAD-BELNR,
GWA_HEAD-RBSTAT )
* LS_ZMMI0059_ALV_S1-CPUDT )
FROM RBKP
WHERE BELNR = LS_BDCMSG-MSGV1
AND GJAHR = LS_BDCMSG-MSGV2.
READ TABLE GT_RBSTAT INTO LS_RBSTAT WITH KEY DOMVALUE_L = GWA_HEAD-RBSTAT.
GWA_HEAD-RBSTAT = LS_RBSTAT-DDTEXT.
MODIFY GT_HEAD FROM GWA_HEAD INDEX GV_PARK_INDEX TRANSPORTING BELNR RBSTAT.
* SELECT SINGLE NAME_TEXTC
* FROM USER_ADDR
* INTO LS_ZMMI0059_ALV_S1-NAME_LAST
* WHERE BNAME = LS_ZMMI0059_ALV_S1-USNAM.
* sp_ifdataout-eblnr = lv_invoicedocnumber.
* sp_ifdataout-gjahr = lv_fiscalyear.
* LOOP AT GT_ZMMI0059_ALV_S1 INTO GS_ZMMI0059_ALV_S1 WHERE SEL = 'X'.
*
* GS_ZMMI0059_ALV_S1-BELNR = LS_ZMMI0059_ALV_S1-BELNR.
* GS_ZMMI0059_ALV_S1-USNAM = LS_ZMMI0059_ALV_S1-USNAM.
* GS_ZMMI0059_ALV_S1-CPUDT = LS_ZMMI0059_ALV_S1-CPUDT.
* GS_ZMMI0059_ALV_S1-NAME_LAST = LS_ZMMI0059_ALV_S1-NAME_LAST.
* MODIFY GT_ZMMI0059_ALV_S1 FROM GS_ZMMI0059_ALV_S1 .
* CLEAR GS_ZMMI0059_ALV_S1 .
* ENDLOOP.
MESSAGE S398(00) WITH '预制凭证:' LS_BDCMSG-MSGV1 '保存成功'.
ELSE.
MESSAGE S398(00) WITH '预制凭证保存失败!' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form CREATE_PARK
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM CREATE_PARK.
DATA LWA_ROW TYPE LVC_S_ROID.
DATA LT_ROW TYPE LVC_T_ROID.
DATA: "LWA_HEAD TYPE TY_HEAD,
LWA_ITEM TYPE TY_ITEM,
LT_ITEM_PARK TYPE STANDARD TABLE OF TY_ITEM.
DATA LT_HEAD_SEL TYPE STANDARD TABLE OF TY_HEAD.
DATA LV_CNT TYPE I.
DATA: L_GOS_MANAGER TYPE REF TO CL_GOS_MANAGER,
L_GOS_LOTOBJ TYPE BORIDENT,
L_GOS_SVC TYPE SGS_SRVNAM,
LV_ZTERM TYPE EKKO-ZTERM,
LV_ZLSCH TYPE EKKO-ZLSCH,
LV_LINE(10) TYPE N,
LV_DMBTR_ALL TYPE DMBTR,
LV_DMBTR_SUM TYPE DMBTR,
LV_DMBTR_GAP TYPE DMBTR,
LV_DMBTR_I TYPE DMBTR,
LV_KNUMV TYPE EKKO-KNUMV,
LV_KWERT TYPE PRCD_ELEMENTS-KWERT.
CALL METHOD GCL_ALV_GRID1->GET_SELECTED_ROWS
IMPORTING
ET_ROW_NO = LT_ROW.

IF LT_ROW IS INITIAL.
MESSAGE '请选择要预制发票的提单号' TYPE 'E'.
ELSE.
DESCRIBE TABLE LT_ROW LINES LV_CNT.
IF LV_CNT > 1.
MESSAGE '只能选择一个提单号' TYPE 'E'.
ENDIF.
ENDIF.
READ TABLE LT_ROW INTO LWA_ROW INDEX 1.
CLEAR: GWA_HEAD,GT_ITEM_PARK,LT_ITEM_PARK,GV_PARK_INDEX.
READ TABLE GT_HEAD INTO GWA_HEAD INDEX LWA_ROW-ROW_ID.
GV_PARK_INDEX = LWA_ROW-ROW_ID.
* 若提单的货币为CNY则报错提示:非外币采购不能使用该功能!
IF GWA_HEAD-WAERS = 'CNY'.
MESSAGE '非外币采购不能使用该功能!' TYPE 'E'.
ENDIF.
IF GWA_HEAD-VBELN(1) = 'R'.
MESSAGE '退货不能使用该功能!' TYPE 'E'.
ENDIF.

IF GWA_HEAD-ZCONF <> 'Z2'.
MESSAGE '提单未确认不能使用该功能!' TYPE 'E'.
ENDIF.
* 检查提单“发票凭证号”一列是否为空,若非空则在左下角报错“该提单已预制发票”
IF GWA_HEAD-BELNR <> SPACE.
MESSAGE '该提单已预制发票!' TYPE 'E'.
ENDIF.
READ TABLE GT_ITEM INTO LWA_ITEM WITH KEY VBELN = GWA_HEAD-VBELN.
CLEAR: GS_0101,LV_ZTERM,LV_ZLSCH.
GS_0101-VBELN = GWA_HEAD-VBELN.
SELECT SINGLE ZTERM
ZLSCH
KNUMV
EKKO~BUKRS
EKKO~WAERS
EKKO~BSART
EKPO~KNTTP
MWSKZ
INTO ( LV_ZTERM,LV_ZLSCH,LV_KNUMV,GS_0101-BUKRS,GS_0101-WAERS,GS_0101-BSART,GS_0101-KNTTP,GS_0101-MWSKZ )
FROM EKKO INNER JOIN EKPO
ON EKKO~EBELN = EKPO~EBELN
WHERE EKKO~EBELN = LWA_ITEM-VGBEL
AND EKPO~EBELP = LWA_ITEM-VGPOS.
* 标准运费取得
CLEAR:LV_KWERT.
SELECT SUM( KWERT )
FROM PRCD_ELEMENTS
INTO LV_KWERT
WHERE KPOSN <> 000000
AND KNUMV = LV_KNUMV
AND KSCHL = 'FRB1'.
IF GS_0101-ZTERM IS INITIAL.
GS_0101-ZTERM = LV_ZTERM.
ENDIF.
IF GS_0101-ZLSCH IS INITIAL.
GS_0101-ZLSCH = LV_ZLSCH.
ENDIF.

LOOP AT GT_ITEM INTO LWA_ITEM WHERE VBELN = GWA_HEAD-VBELN.
LV_DMBTR_ALL = LV_DMBTR_ALL + LWA_ITEM-ZJE.
APPEND LWA_ITEM TO LT_ITEM_PARK.
CLEAR LWA_ITEM.
ENDLOOP.

IF LV_KWERT = 0.
GS_0101-FREIGHT = GWA_HEAD-FREIGHT.
GT_ITEM_PARK[] = LT_ITEM_PARK[].
ELSE.
LOOP AT LT_ITEM_PARK INTO LWA_ITEM.
IF GWA_HEAD-FREIGHT <> 0.
LV_DMBTR_I = GWA_HEAD-FREIGHT * LWA_ITEM-ZJE / LV_DMBTR_ALL.
AT LAST.
LV_DMBTR_I = GWA_HEAD-FREIGHT - LV_DMBTR_SUM.
ENDAT.
LV_DMBTR_SUM = LV_DMBTR_SUM + LV_DMBTR_I.
LWA_ITEM-FREIGHT = LV_DMBTR_I.
ENDIF.
APPEND LWA_ITEM TO GT_ITEM_PARK.
CLEAR LWA_ITEM.
ENDLOOP.
ENDIF.
GS_0101-SBA_INV_AMT2 = GWA_HEAD-ZTOL. "发票含税金额
CALL SCREEN 9800
STARTING AT 12 12
ENDING AT 82 22.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form FRM_FILL_BDC
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_
*& --> P_
*& --> P_
*& <-- LT_BDCDATA
*&---------------------------------------------------------------------*
FORM FRM_FILL_BDC USING PL_1 TYPE CHAR01
PL_2 TYPE BDC_PROG
PL_3 TYPE ANY
CHANGING CT_BDCDATA TYPE TT_BDCDATA.
DATA: LS_BDCDATA TYPE BDCDATA.

IF PL_1 = 'X'.
LS_BDCDATA-PROGRAM = PL_2.
LS_BDCDATA-DYNPRO = PL_3.
LS_BDCDATA-DYNBEGIN = 'X'.
ELSE.
LS_BDCDATA-FNAM = PL_2.
LS_BDCDATA-FVAL = PL_3.
CONDENSE LS_BDCDATA-FVAL.
ENDIF.

APPEND LS_BDCDATA TO CT_BDCDATA.
CLEAR LS_BDCDATA.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form FRM_POP_UP_1
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LV_TITLE
*& --> LV_TEXT_QUESTION
*& <-- LV_ANSWER
*&---------------------------------------------------------------------*
FORM FRM_POP_UP_1 USING U_LV_TITLE
U_LV_TEXT_QUESTION
CHANGING C_LV_ANSWER.


CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = U_LV_TITLE
TEXT_QUESTION = U_LV_TEXT_QUESTION
* TEXT_BUTTON_1 = '确定'
* TEXT_BUTTON_2 = '否'
DISPLAY_CANCEL_BUTTON = ''
IMPORTING
ANSWER = C_LV_ANSWER
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
ENDIF.
ENDFORM.

原文地址:https://www.cnblogs.com/JackeyLove/p/14271926.html