*----------------------------------------------------------------------* * 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' '=T\01' ''." 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' '=T\08' ''.
    PERFORM FRM_FILL_BDCDATA USING: 'SAPMV50A'  '3000'  'X',
                                    'BDC_OKCODE' '=T\04' ''.
    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' '=T\02' '',
                                  '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' '=T\03' '',
                                  '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' '=T\04' '',
                                  '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' '=T\07' ''.
  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' '=T\07' ''.
*  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.
                    
                
                
            
        
浙公网安备 33010602011771号