这是中文环境下做的程序, 复制过来,代码间的空格错开了,下面的OJT变成日文的了,到时候再贴出来。
*&---------------------------------------------------------------------*
*& 程序名 :ZMMR10040_3_A140
*& 分类 :物流ー出荷管理
*& 机能番号 :MM-L012
*& 机能名称 :货单输出
*& 作成者 :赵建川
*& 作成日 :2005/07/18
*& 版本 :1.0
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZMMR10040_3_A140
NO STANDARD PAGE HEADING
MESSAGE-ID ZXX001.
*----------------------------------------------------------------------*
*------数据表申明
TABLES: MSEG, "凭证段:物料
MKPF, "抬头:物料凭证
LIKP. "SD凭证:交货抬头数据
*---------------------------------------------------------------------*
*------屏幕参数定义
SELECTION-SCREEN BEGIN OF BLOCK BL1.
*复数选择
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 3.
PARAMETERS P_RDO1 RADIOBUTTON
GROUP GRP1
DEFAULT 'X'
USER-COMMAND RADI.
SELECTION-SCREEN COMMENT 5(8) TEXT-000.
SELECTION-SCREEN END OF LINE.
*仓库
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(8) TEXT-001.
SELECTION-SCREEN POSITION 23.
PARAMETERS PA_WERKS LIKE MSEG-WERKS .
SELECTION-SCREEN END OF LINE.
*保管场所
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(8) TEXT-002.
SELECTION-SCREEN POSITION 23.
PARAMETERS PA_LGORT LIKE MSEG-LGORT .
SELECTION-SCREEN END OF LINE.
*出库路径
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(8) TEXT-003.
SELECTION-SCREEN POSITION 20.
SELECT-OPTIONS SE_VSBED FOR LIKP-VSBED.
SELECTION-SCREEN END OF LINE.
*出库预定日
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(10) TEXT-004.
SELECTION-SCREEN POSITION 20.
SELECT-OPTIONS SE_DATUM FOR MKPF-BUDAT.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
*个别选择
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 3.
PARAMETERS P_RDO2 RADIOBUTTON
GROUP GRP1.
SELECTION-SCREEN COMMENT 5(8) TEXT-005.
SELECTION-SCREEN END OF LINE.
*出库凭证番号
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(12) TEXT-006.
SELECTION-SCREEN POSITION 20.
SELECT-OPTIONS SE_VBELN FOR LIKP-VBELN.
SELECTION-SCREEN END OF LINE.
*入出库预定
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(10) TEXT-007.
SELECTION-SCREEN POSITION 20.
SELECT-OPTIONS SE_RSNUM FOR MKPF-MBLNR.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN ULINE 1(80).
SELECTION-SCREEN SKIP 1.
*I/F
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 3.
PARAMETERS P_RDO3 RADIOBUTTON
GROUP GRP2
DEFAULT 'X'
USER-COMMAND RADI.
SELECTION-SCREEN COMMENT 5(8) TEXT-008.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
*印刷
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 3.
PARAMETERS P_RDO4 RADIOBUTTON
GROUP GRP2.
SELECTION-SCREEN COMMENT 5(8) TEXT-009.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
*打印设备
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(8) TEXT-010.
SELECTION-SCREEN POSITION 23.
PARAMETERS PA_PDEST LIKE PRI_PARAMS-PDEST .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BL1.
*---------------------------------------------------------------------*
*------类型定义
*提货/送货/移送 抬头表
TYPES: BEGIN OF TYP_LIKP,
ZZOP2FLG LIKE LIPS-ZZOP2FLG, "再印刷标志位
NAME1 LIKE ADRC-NAME1, "经销店名称
WADAT LIKE LIKP-WADAT, "提货预定日
KUNNR LIKE LIKP-KUNNR, "经销点编号
VBELN LIKE LIKP-VBELN, "出库凭证
TEL_NUMBER LIKE ADRC-TEL_NUMBER, "经销店电话
VSBED LIKE LIKP-VSBED, "装运条件
PROCE(20) TYPE C , "出库路径
VGBEL LIKE LIPS-VGBEL, "订单号
STREET LIKE ADRC-STREET, "送货地址
WERKS2 LIKE LIPS-WERKS, "提货仓库
NAME2 LIKE T001W-NAME1, "提货仓库名称
WERKS LIKE LIKP-WERKS, "交货的接收工厂
"或移送场合仓库
Z001 LIKE TLINE-TDLINE, "运货车号
Z002 LIKE TLINE-TDLINE, "交易者号
Z003 LIKE TLINE-TDLINE, "交易者名称
DEL_FLG TYPE C , "删除标志
END OF TYP_LIKP.
*提货/送货/移送 明细数据
TYPES: BEGIN OF TYP_LIPS,
VBELN LIKE LIKP-VBELN, "出库凭证
ZZOP2FLG LIKE LIPS-ZZOP2FLG, "再印刷标志位
WERKS LIKE LIPS-WERKS, "出库工厂
MATNR LIKE LIPS-MATNR, "品名代码
CHARG LIKE LIPS-CHARG, "管区
LFIMG LIKE LIPS-LFIMG, "数量
VGBEL LIKE LIPS-VGBEL, "单据编号
FLG TYPE C, "机型管理
NAME2 LIKE T001W-NAME1, "出库仓库
MATERIAL_TYPE LIKE CAWNT-ATWTB, "机种类别
END OF TYP_LIPS.
*移管 明细
TYPES: BEGIN OF TYP_RESB,
NAME1 LIKE ADRC-NAME1, "仓库名称
RSNUM LIKE RESB-RSNUM, "入出库预定
BDTER LIKE RESB-BDTER, "预定日
WERKS LIKE RESB-WERKS, "工厂
UMWRK LIKE RESB-UMWRK, "入库工厂
MATNR LIKE RESB-MATNR, "品名代码
CHARG LIKE RESB-CHARG, "管区
BDMNG LIKE RESB-BDMNG, "数量
TEL_NUMBER LIKE ADRC-TEL_NUMBER, "电话号码
STREET LIKE ADRC-STREET, "地址
FLG TYPE C, "机型管理
NAME2 LIKE T001W-NAME1, "出库仓库
MATERIAL_TYPE LIKE CAWNT-ATWTB, "机种类别
VGBEL LIKE LIPS-VGBEL, "移送移管的指令传票
ZZOP2FLG LIKE RESB-ZZOP2FLG,
END OF TYP_RESB.
*移管 抬头
TYPES: BEGIN OF TYP_RKPF,
ZZOP2FLG LIKE LIPS-ZZOP2FLG, "再印刷标志位
NAME1 LIKE ADRC-NAME1, "仓库名称
BDTER LIKE RESB-BDTER, "提货预定日
UMWRK LIKE RESB-UMWRK, "仓库
RSNUM LIKE RESB-RSNUM, "出库凭证
TEL_NUMBER LIKE ADRC-TEL_NUMBER, "经销店电话
VSBED LIKE LIKP-VSBED, "装运条件
PROCE(20) TYPE C , "出库路径
VGBEL LIKE LIPS-VGBEL, "移送移管的指令传票
STREET LIKE ADRC-STREET, "送货地址
WERKS LIKE RESB-WERKS, "提货仓库
NAME2 LIKE T001W-NAME1, "提货仓库名称
END OF TYP_RKPF.
*---------------------------------------------------------------------*
*------工作区定义
DATA: REC_LIKP TYPE TYP_LIKP.
DATA: REC_LIPS TYPE TYP_LIPS.
DATA: REC_RESB TYPE TYP_RESB.
DATA: REC_RKPF TYPE TYP_RKPF.
DATA: REC_INDX LIKE INDX.
*---------------------------------------------------------------------*
*------内部表定义
DATA: TBL_LIKP TYPE TABLE OF TYP_LIKP.
DATA: TBL_LIPS TYPE TABLE OF TYP_LIPS.
DATA: TBL_RESB TYPE TABLE OF TYP_RESB.
DATA: TBL_RKPF TYPE TABLE OF TYP_RKPF.
*---------------------------------------------------------------------*
*------全局变量定义
DATA:G_DATE LIKE SY-DATUM. "本地日期
DATA:G_TIME LIKE SY-UZEIT. "本地时间
DATA:G_TFLG TYPE C. "日期标志
DATA:G_LINE(4) TYPE C VALUE '1'. "行的记数器
DATA:G_ZZOP2FLGCHAR(6) TYPE C. "[再印刷]字样
DATA:G_LIKP(30) TYPE C, "TBL_LIKP的ID
G_LIPS(30) TYPE C, "TBL_LIPS的ID
G_RKPF(30) TYPE C, "TBL_RKPF的ID
G_RESB(30) TYPE C. "TBL_RESB的ID
*---------------------------------------------------------------------*
*------常量定义
CONSTANTS:
C_RADI(4) TYPE C VALUE 'RADI', "常量RADI
C_NULL TYPE C VALUE '', "常量''
C_X(1) TYPE C VALUE 'X' , "常量X
C_S000(4) TYPE C VALUE 'S000', "常量S000
C_01 LIKE LIKP-VSBED VALUE '01', "常量01
C_02 LIKE LIKP-VSBED VALUE '02', "常量02
C_03 LIKE LIKP-VSBED VALUE '03', "常量03
C_04 LIKE LIKP-VSBED VALUE '04', "常量04
C_05 LIKE LIKP-VSBED VALUE '05', "常量05
C_11 LIKE LIKP-VSBED VALUE '11', "常量11
C_31 LIKE LIKP-VSBED VALUE '31', "常量31
C_ZZ LIKE LIKP-VSBED VALUE 'ZZ', "常量ZZ
C_000000(6) TYPE C VALUE '000000', "常量000000
C_WE(2) TYPE C VALUE 'WE', "常量WE
C_261(3) TYPE C VALUE '261', "常量261
C_Z001(4) TYPE C VALUE 'Z001', "常量Z001
C_Z002(4) TYPE C VALUE 'Z002', "常量Z002
C_Z003(4) TYPE C VALUE 'Z003', "常量Z003
C_MATNR(5) TYPE C VALUE 'MATNR', "常量MATNR
C_UTC8(5) TYPE C VALUE 'UTC+8', "常量UTC+8
C_1(1) TYPE C VALUE '1', "常量1
C_2(1) TYPE C VALUE '2', "常量2
C_A(1) TYPE C VALUE '+', "常量+
C_D(1) TYPE C VALUE '-', "常量-
C_SAPSCRIPT_ID(12) TYPE C VALUE 'ZMM001_A140', "SAPSCRIPT的ID
C_SMARTFORM_ID(12) TYPE C VALUE 'ZMMR001_A140', "SMARTFORM的ID
C_LIKP(4) TYPE C VALUE 'LIKP', "表名LIKP
C_LIPS(4) TYPE C VALUE 'LIPS', "表名LIPS
C_RKPF(4) TYPE C VALUE 'RKPF', "表名RKPF
C_RESB(4) TYPE C VALUE 'RESB', "表名RESB
C_ZH LIKE SYST-LANGU VALUE '1', "中文语言
C_JA LIKE SYST-LANGU VALUE 'J', "日文语言
C_VBBK LIKE THEAD-TDOBJECT
VALUE 'VBBK', "常量VBBK
C_MARA LIKE BAPI1003_KEY-OBJECTTABLE
VALUE 'MARA', "常量MARA
C_ZCLASS_MAT LIKE BAPI1003_KEY-CLASSNUM
VALUE 'ZCLASS_MAT', "常量ZCLASS_MAT
C_001 LIKE BAPI1003_KEY-CLASSTYPE
VALUE '001', "常量001
C_TYPEC LIKE BAPI1003_ALLOC_VALUES_CHAR-CHARACT
VALUE 'ZMACHINE_TYPE'. "常量ZMACHINE_TYPE
*&--------------------------------------------------------------------*
*&------初处理事件
INITIALIZATION.
PERFORM SCREEN_INIT.
*&--------------------------------------------------------------------*
*&------选择屏幕PBO事件
AT SELECTION-SCREEN OUTPUT.
PERFORM SCREEN_PBO.
*&--------------------------------------------------------------------*
*&------选择屏幕PAI事件
AT SELECTION-SCREEN.
PERFORM SCREEN_PAI.
*&--------------------------------------------------------------------*
*&------主处理事件
START-OF-SELECTION.
PERFORM PROCESS_MAIN.
*&--------------------------------------------------------------------*
*&------末处理事件
END-OF-SELECTION.
PERFORM PROCESS_END.
*&---------------------------------------------------------------------*
*& FORM SCREEN_INIT
*& 功能: 保管场所的缺省值 S000
*&---------------------------------------------------------------------*
FORM SCREEN_INIT.
PA_LGORT = C_S000.
ENDFORM. " SCREEN_INIT
*&---------------------------------------------------------------------*
*& FORM SCREEN_PBO
*& 功能: 选择屏幕PBO
*&---------------------------------------------------------------------*
FORM SCREEN_PBO.
LOOP AT SCREEN. "循环屏幕参量
IF P_RDO1 = C_X. "复数选择
IF SCREEN-NAME = 'SE_VBELN-LOW' "出库凭证前项目
OR SCREEN-NAME = 'SE_VBELN-HIGH' "出库凭证后项目
OR SCREEN-NAME = 'SE_RSNUM-LOW' "入出库凭证前项目
OR SCREEN-NAME = 'SE_RSNUM-HIGH'. "入出库凭证后项目
SCREEN-INPUT = 0. "禁止输入
SCREEN-OUTPUT = 1. "允许输出
ENDIF.
PERFORM SCREEN_INIT.
ENDIF.
IF P_RDO2 = C_X. "个别选择
IF SCREEN-NAME = 'PA_WERKS' "仓库
OR SCREEN-NAME = 'PA_LGORT' "保管场所
OR SCREEN-NAME = 'SE_VSBED-LOW' "出库路径前项目
OR SCREEN-NAME = 'SE_VSBED-HIGH' "出库路径后项目
OR SCREEN-NAME = 'SE_DATUM-LOW' "出库预定日前项目
OR SCREEN-NAME = 'SE_DATUM-HIGH'. "出库预定日后项目
SCREEN-INPUT = 0. "禁止输入
SCREEN-OUTPUT = 1. "允许输出
ENDIF.
ENDIF.
IF P_RDO3 = C_X. "I/F
IF SCREEN-NAME = 'PA_PDEST'. "打印设备
SCREEN-INPUT = 0.
SCREEN-OUTPUT = 1.
ENDIF.
ENDIF.
MODIFY SCREEN. "修改屏幕参量
ENDLOOP.
ENDFORM. " SCREEN_PBO
*&---------------------------------------------------------------------*
*& FORM SCREEN_PAI
*& 功能: 选择屏幕PAI
*&---------------------------------------------------------------------*
FORM SCREEN_PAI.
IF SY-UCOMM = C_RADI. "判断PAI触发功能代码
PERFORM SCREEN_FLUSH. "刷新屏幕
ELSE.
PERFORM SCREEN_CHECK_INPUT. "输入检查
ENDIF.
ENDFORM. " SCREEN_PAI
*&---------------------------------------------------------------------*
*& FORM SCREEN_FLUSH
*& 功能: 刷新屏幕
*&---------------------------------------------------------------------*
FORM SCREEN_FLUSH.
IF P_RDO1 = C_X. "复数选择
REFRESH: SE_VBELN, "出库凭证
SE_RSNUM. "入出库预定
ENDIF.
IF P_RDO2 = C_X. "个别选择
CLEAR: PA_WERKS, "仓库
PA_LGORT. "保管场所
REFRESH: SE_VSBED, "出库路径
SE_DATUM. "出库预定日
ENDIF.
IF P_RDO3 = C_X. "I/F
CLEAR PA_PDEST. "打印设备
ENDIF.
ENDFORM. "SCREEN_FLUSH
*&---------------------------------------------------------------------*
*& FORM SCREEN_CHECK_INPUT
*& 功能: 输入检查
*&---------------------------------------------------------------------*
FORM SCREEN_CHECK_INPUT.
IF P_RDO1 = C_X. "复数选择
IF PA_WERKS IS INITIAL. "工厂未输入
SET CURSOR FIELD 'PA_WERKS'.
* 报消息:[在所有需要输入的字段中输入一个条目]
MESSAGE ID '00' TYPE 'E' NUMBER '055'.
ENDIF.
IF PA_LGORT IS INITIAL. "保管场所未输入
SET CURSOR FIELD 'PA_LGORT'.
* 报消息:[在所有需要输入的字段中输入一个条目]
MESSAGE ID '00' TYPE 'E' NUMBER '055'.
ENDIF.
ENDIF.
IF P_RDO2 = C_X. "个别选择
IF SE_VBELN[] IS INITIAL "出厂凭证未输入
AND SE_RSNUM[] IS INITIAL. "和入出库凭未输入
SET CURSOR FIELD 'SE_VBELN-LOW'.
* 报消息:[在所有需要输入的字段中输入一个条目]
MESSAGE ID '00' TYPE 'E' NUMBER '055'.
ENDIF.
ENDIF.
IF P_RDO4 = C_X. "打印输出
IF PA_PDEST IS INITIAL. "打印设备未输入
SET CURSOR FIELD 'PA_PDEST'.
* 报消息:[在所有需要输入的字段中输入一个条目]
MESSAGE ID '00' TYPE 'E' NUMBER '055'.
ENDIF.
ENDIF.
ENDFORM. "SCREEN_CHECK_INPUT
*&---------------------------------------------------------------------*
*& FORM PROCESS_MAIN
*& 功能: 主处理:取得对象数据->编辑数据->输出帐票
*&---------------------------------------------------------------------*
FORM PROCESS_MAIN.
PERFORM DATA_GET. "取得对象数据
PERFORM DATA_EDIT. "编辑数据
IF P_RDO3 = C_X. "选择了I/F
STOP.
ENDIF.
IF P_RDO4 = C_X. "选择了印刷
IF SY-LANGU = C_ZH. "用户登陆语言为中文
PERFORM WRITE_SAPSCRIPT. "中文输出帐票
ENDIF.
IF SY-LANGU = C_JA. "用户登陆语言为日文
PERFORM WRITE_SMARTFORM. "日文输出帐票
ENDIF.
* 报消息:[正常执行输出]
MESSAGE ID 'ZXX001' TYPE 'S' NUMBER '036'.
ENDIF.
ENDFORM. " PROCESS_MAIN
*&---------------------------------------------------------------------*
*& FORM DATA_GET
*& 功能: 对象数据取得
*&---------------------------------------------------------------------*
FORM DATA_GET.
CLEAR: TBL_LIKP,
TBL_LIPS,
TBL_RKPF,
TBL_RESB.
IF P_RDO1 = C_X. "如果选了 [复数选择]
PERFORM DO_CHOOSE1.
ENDIF.
IF P_RDO2 = C_X. "如果选了 [个别选择]
PERFORM DO_CHOOSE2.
ENDIF.
IF TBL_LIKP IS INITIAL
AND TBL_RESB IS INITIAL. "对象数据不存在
* 报消息:[对象数据不存在] 终止程序
MESSAGE S035.
STOP.
ENDIF.
ENDFORM. " DATA_GET
*&---------------------------------------------------------------------*
*& FORM DO_CHOOSE1
*& 功能: 复数选择情况
*&---------------------------------------------------------------------*
FORM DO_CHOOSE1 .
*2-1-1-1 提货/送货/移送 场合
IF C_01 IN SE_VSBED "出库路径01 02 03 04
OR C_02 IN SE_VSBED "05 11 31 或没输入
OR C_03 IN SE_VSBED
OR C_04 IN SE_VSBED
OR C_05 IN SE_VSBED
OR C_11 IN SE_VSBED
OR C_31 IN SE_VSBED
OR ( SE_VSBED[] IS INITIAL ).
PERFORM DO_SE_VSBED1. "出库路径情况1处理
ENDIF.
*2-1-1-2 移管 场合
IF C_ZZ IN SE_VSBED
OR ( SE_VSBED[] IS INITIAL ). "出库路径ZZ 或没输入
PERFORM DO_SE_VSBED2. "出库路径情况2处理
ENDIF.
ENDFORM. " DO_CHOOSE1
*&---------------------------------------------------------------------*
*& FORM DO_SE_VSBED1
*& 功能: 出库路径是01 02 03 04 05 11 31 时处理
*&---------------------------------------------------------------------*
FORM DO_SE_VSBED1.
*局部变量
DATA: LO_ADRNR LIKE VBPA-ADRNR. "销售凭证:合作伙伴地址
DATA: LO_SERAIL LIKE LIPS-SERAIL. "地址
*2-1-1-1-1 查询 [SD凭证:交货抬头数据](LIKP)
SELECT VBELN "交货
WADAT "计划货物移动日期
KUNNR "送达方
VSBED "装运条件
WERKS "交货的接收工厂
APPENDING CORRESPONDING FIELDS OF TABLE TBL_LIKP
FROM LIKP "交货抬头数据
WHERE VSBED IN SE_VSBED "指定条件 装运条件
AND WADAT IN SE_DATUM. "指定条件 移动日期
IF SY-SUBRC <> 0. "对象不存在 退出FORM
RETURN.
ENDIF.
*2-1-1-1-2 查询 [销售凭证 : 合作伙伴](VBPA)
CLEAR REC_LIKP.
LOOP AT TBL_LIKP INTO REC_LIKP.
SELECT SINGLE ADRNR
INTO LO_ADRNR
FROM VBPA "销售凭证:合作伙伴
WHERE VBELN = REC_LIKP-VBELN "交货
AND POSNR = C_000000 "销售和分销凭证项目号
AND PARVW = C_WE. "合作伙伴功能
*2-1-1-1-3 查询 [地址 (业务地址服务)](ADRC)
IF SY-SUBRC = 0.
SELECT SINGLE NAME1 "客户名称
TEL_NUMBER "电话号码
STREET "地址
INTO (REC_LIKP-NAME1,
REC_LIKP-TEL_NUMBER,
REC_LIKP-STREET
)
FROM ADRC
WHERE ADDRNUMBER = LO_ADRNR "地址号码等于LO_ADRNR
AND NATION = SPACE. "国际地址版本等于SPACE
MODIFY TBL_LIKP FROM REC_LIKP
TRANSPORTING NAME1 "客户名称
TEL_NUMBER "电话号码
STREET. "地址
ENDIF.
CLEAR REC_LIKP.
ENDLOOP.
*2-1-1-1-4 查询 [SD凭证:交货:项目数据](LIPS)
CLEAR REC_LIKP.
LOOP AT TBL_LIKP INTO REC_LIKP.
SELECT ZZOP2FLG "再印刷标志
VBELN "交货凭证号
WERKS "工厂
MATNR "物料号
CHARG "批号
LFIMG "实际已交货量
SERAIL "序列号参数文件
VGBEL "参考单据的单据编号
INTO (REC_LIPS-ZZOP2FLG,
REC_LIPS-VBELN,
REC_LIPS-WERKS,
REC_LIPS-MATNR,
REC_LIPS-CHARG,
REC_LIPS-LFIMG,
LO_SERAIL,
REC_LIPS-VGBEL)
FROM LIPS
WHERE VBELN = REC_LIKP-VBELN "交货抬头表—交货凭证号
AND WERKS = PA_WERKS "参数工厂
AND LGORT = PA_LGORT "参数保管场所
AND ( ZZOP2FLG IS NULL
OR ZZOP2FLG = SPACE ) "再印刷标志位
AND KOMKZ <> SPACE. "拣配控制指示符
IF LO_SERAIL <> ''. "机种类型不为空
REC_LIPS-FLG = C_X. "机型管理 赋X
ELSE. "机种类型为空
REC_LIPS-FLG = SPACE. "机型管理 赋SPACE
ENDIF.
REC_LIKP-VGBEL = REC_LIPS-VGBEL. "添加抬头订单号
REC_LIKP-ZZOP2FLG = REC_LIPS-ZZOP2FLG.
REC_LIKP-WERKS2 = REC_LIPS-WERKS.
MODIFY TBL_LIKP FROM REC_LIKP
TRANSPORTING VGBEL "定单号
ZZOP2FLG "再印刷标志
WERKS2. "提货仓库
APPEND REC_LIPS TO TBL_LIPS. "添加明细条目
ENDSELECT.
IF SY-SUBRC <> 0. "该抬头没有明细数据
REC_LIKP-DEL_FLG = C_X.
MODIFY TBL_LIKP FROM REC_LIKP
TRANSPORTING DEL_FLG. "删除标志
ENDIF.
ENDLOOP.
DELETE TBL_LIKP WHERE DEL_FLG = C_X. "删除没有明细的表头
*2-1-1-1-5 查询 [工厂/分支机构](T001W)
CLEAR REC_LIPS.
LOOP AT TBL_LIPS INTO REC_LIPS.
SELECT SINGLE NAME1 "工厂名称
FROM T001W
INTO REC_LIPS-NAME2 "出库仓库名称
WHERE WERKS = REC_LIPS-WERKS. "工厂为出库工厂
MODIFY TBL_LIPS FROM REC_LIPS
TRANSPORTING NAME2.
ENDLOOP.
LOOP AT TBL_LIKP INTO REC_LIKP.
SELECT SINGLE NAME1 "工厂名称
FROM T001W
INTO REC_LIKP-NAME2 "出库仓库名称
WHERE WERKS = REC_LIKP-WERKS2. "工厂为出库工厂
MODIFY TBL_LIKP FROM REC_LIKP
TRANSPORTING NAME2. "提货仓库名称
ENDLOOP.
ENDFORM. " DO_SE_VSBED1
*&---------------------------------------------------------------------*
*& FORM DO_SE_VSBED2
*& 功能: 出库路径是ZZ 或者没有输入 时处理
*&---------------------------------------------------------------------*
FORM DO_SE_VSBED2.
DATA: LO_ADRNR LIKE VBPA-ADRNR, "地址
LO_SERNP LIKE MARC-SERNP. "序列号参数文件
*2-1-1-2-1 查询 [预定/相关需求](RESB)
CLEAR REC_RESB.
SELECT RSNUM "入出库预定
BDTER "预定日
WERKS "工厂
UMWRK "入库工厂
MATNR "物料号码
CHARG "批次编号
BDMNG "需求量
ZZOP2FLG "再印刷标志位
INTO (REC_RESB-RSNUM,
REC_RESB-BDTER,
REC_RESB-WERKS,
REC_RESB-UMWRK,
REC_RESB-MATNR,
REC_RESB-CHARG,
REC_RESB-BDMNG,
REC_RESB-ZZOP2FLG)
FROM RESB "预定相关需求明细
WHERE BWART = C_261 "移动类型(库存管理)
AND BDTER IN SE_DATUM "组件的需求日期
"画面参数出入库预定日
AND WERKS = PA_WERKS "工厂为画面参数仓库
AND LGORT = PA_LGORT "库存地点=画面保管场所
AND ( ZZOP2FLG IS NULL
OR ZZOP2FLG = SPACE ). "再印刷标志位
APPEND REC_RESB TO TBL_RESB.
ENDSELECT.
IF SY-SUBRC <> 0. "对象不存在 退出FORM
RETURN.
ENDIF.
*2-1-1-2-2 查询 [工厂/分支机构](T001W)
CLEAR REC_RESB.
LOOP AT TBL_RESB INTO REC_RESB.
SELECT SINGLE ADRNR "地址
INTO LO_ADRNR
FROM T001W
WHERE WERKS = REC_RESB-UMWRK. "相应的工厂代号
*2-1-1-2-3 查询 [地址 (业务地址服务)](ADRC)
IF SY-SUBRC = 0.
SELECT NAME1 "客户名称
TEL_NUMBER "电话号码
STREET "地址
INTO (REC_RESB-NAME1,
REC_RESB-TEL_NUMBER,
REC_RESB-STREET )
FROM ADRC
UP TO 1 ROWS
WHERE ADDRNUMBER = LO_ADRNR "地址号码等于LO_ADRNR
AND NATION = SPACE. "国际地址版本等于SPACE
MODIFY TBL_RESB FROM REC_RESB
TRANSPORTING NAME1
TEL_NUMBER
STREET.
ENDSELECT.
ENDIF.
ENDLOOP.
*2-1-1-2-4 查询 [物料的工厂数据](MARC)
CLEAR REC_RESB.
LOOP AT TBL_RESB INTO REC_RESB.
SELECT SINGLE SERNP "序列号参数文件
INTO LO_SERNP
FROM MARC
WHERE MATNR = REC_RESB-MATNR "物料号为预定表中物料号
AND WERKS = REC_RESB-WERKS. "工厂为预定表中工厂
IF LO_SERNP <> C_NULL. "机种类别不为空
REC_RESB-FLG = C_X.
ELSE.
REC_RESB-FLG = SPACE.
ENDIF.
MODIFY TBL_RESB FROM REC_RESB
TRANSPORTING FLG .
ENDLOOP.
*2-1-1-2-5 查询 [工厂/分支机构](T001W)
LOOP AT TBL_RESB INTO REC_RESB.
SELECT SINGLE NAME1
INTO REC_RESB-NAME2 "提货仓库名称
FROM T001W
WHERE WERKS = REC_RESB-WERKS.
IF SY-SUBRC = 0.
MODIFY TBL_RESB FROM REC_RESB
TRANSPORTING NAME2.
ENDIF.
ENDLOOP.
ENDFORM. "DO_SE_VSBED2
*&---------------------------------------------------------------------*
*& FORM DO_CHOOSE2
*& 功能: 个别选择情况
*&---------------------------------------------------------------------*
FORM DO_CHOOSE2.
IF NOT SE_VBELN[] IS INITIAL. "出库凭证有输入
PERFORM DO_SE_VBELN.
ENDIF.
IF NOT SE_RSNUM[] IS INITIAL. "入出库预定有输入
PERFORM DO_SE_RSNUM.
ENDIF.
ENDFORM. "DO_CHOOSE2
*&---------------------------------------------------------------------*
*& FORM DO_SE_VBELN
*& 功能: 个别选择情况 出库凭证番号有输入
*&---------------------------------------------------------------------*
FORM DO_SE_VBELN.
*局部变量
DATA: LO_ADRNR LIKE VBPA-ADRNR, "地址
LO_SERAIL LIKE LIPS-SERAIL. "机种
*2-1-2-1-1 查询 [SD凭证:交货抬头数据](LIKP)
SELECT VBELN "出库凭证
WADAT "出库预定日
KUNNR "批发销售店号
VSBED "装运条件
WERKS "接受工厂
APPENDING CORRESPONDING FIELDS OF TABLE TBL_LIKP
FROM LIKP "交货抬头表
WHERE VBELN IN SE_VBELN. "指定的出库凭证号
IF SY-SUBRC <> 0. "数据不存在 退出FORM
RETURN.
ENDIF.
*2-1-2-1-2 查询 [销售凭证 : 合作伙伴](VBPA)
CLEAR REC_LIKP.
LOOP AT TBL_LIKP INTO REC_LIKP.
SELECT SINGLE ADRNR "地址
INTO LO_ADRNR
FROM VBPA "合作伙伴
WHERE VBELN = REC_LIKP-VBELN "分销单据号=交货凭证号
AND POSNR = C_000000 "销售项目号='000000'
AND PARVW = C_WE. "合作伙伴功能等于SH
*2-1-2-1-3 查询 [地址 (业务地址服务)](ADRC)
IF SY-SUBRC = 0.
SELECT SINGLE NAME1 "客户名称
TEL_NUMBER "电话号码
STREET "地址
INTO (REC_LIKP-NAME1,
REC_LIKP-TEL_NUMBER,
REC_LIKP-STREET)
FROM ADRC
WHERE ADDRNUMBER = LO_ADRNR "地址号码等于LO_ADRNR
AND NATION = SPACE. "国际地址版本=SPACE
MODIFY TBL_LIKP FROM REC_LIKP
TRANSPORTING NAME1
TEL_NUMBER
STREET.
ENDIF.
ENDLOOP.
*2-1-2-1-4 查询 [SD凭证 : 交货: 项目数据](LIPS)
CLEAR REC_LIKP.
LOOP AT TBL_LIKP INTO REC_LIKP.
SELECT ZZOP2FLG "再印刷标志位
VBELN "交货凭证号
WERKS "工厂
MATNR "物料号码
CHARG "批次编号
LFIMG "实际已交货量
SERAIL "机种
VGBEL "参考单据的单据编号
FROM LIPS
INTO (REC_LIPS-ZZOP2FLG,
REC_LIPS-VBELN,
REC_LIPS-WERKS,
REC_LIPS-MATNR,
REC_LIPS-CHARG,
REC_LIPS-LFIMG,
LO_SERAIL,
REC_LIPS-VGBEL)
WHERE VBELN = REC_LIKP-VBELN. "交货凭证号相等
IF LO_SERAIL <> C_NULL. "机种类型不为空
REC_LIPS-FLG = C_X. "机型管理 赋X
ELSE. "机种类型为空
REC_LIPS-FLG = SPACE. "机型管理 赋SPACE
ENDIF.
REC_LIKP-VGBEL = REC_LIPS-VGBEL. "添加抬头订单号
REC_LIKP-ZZOP2FLG = REC_LIPS-ZZOP2FLG. "再印刷标志位
REC_LIKP-WERKS2 = REC_LIPS-WERKS.
MODIFY TBL_LIKP FROM REC_LIKP
TRANSPORTING VGBEL "定单号
ZZOP2FLG "再印刷标志
WERKS2. "提货仓库
APPEND REC_LIPS TO TBL_LIPS. "添加明细条
ENDSELECT.
IF SY-SUBRC <> 0. "如果没有相应明细数据
REC_LIKP-DEL_FLG = C_X. "记下要删除标志
MODIFY TBL_LIKP FROM REC_LIKP
TRANSPORTING DEL_FLG.
ENDIF.
ENDLOOP.
DELETE TBL_LIKP WHERE DEL_FLG = C_X. "删除没有明细的表头
*2-1-2-1-6 查询 [工厂/分支机构](T001W)
LOOP AT TBL_LIPS INTO REC_LIPS.
SELECT SINGLE NAME1 "工厂名称
INTO REC_LIPS-NAME2 "出库仓库名称
FROM T001W "工厂
WHERE WERKS = REC_LIPS-WERKS. "工厂代码=出库工厂
MODIFY TBL_LIPS FROM REC_LIPS
TRANSPORTING NAME2.
ENDLOOP.
CLEAR LIKP.
LOOP AT TBL_LIKP INTO REC_LIKP.
SELECT SINGLE NAME1 "工厂名称
FROM T001W
INTO REC_LIKP-NAME2 "出库仓库名称
WHERE WERKS = REC_LIKP-WERKS2. "工厂为出库工厂
MODIFY TBL_LIKP FROM REC_LIKP
TRANSPORTING NAME2.
ENDLOOP.
ENDFORM. "DO_SE_VBELN
*&---------------------------------------------------------------------*
*& FORM DO_SE_RSNUM
*& 功能: 个别选择情况 入出库预定有输入
*&---------------------------------------------------------------------*
FORM DO_SE_RSNUM.
*局部变量
DATA: LO_ADRNR LIKE VBPA-ADRNR, "地址
LO_SERNP LIKE MARC-SERNP. "序列号参数文件
*2-1-2-2-1 查询 [预定/相关需求](RESB)
CLEAR REC_RESB.
SELECT RSNUM "入出库预定
BDTER "预定日
WERKS "工厂
UMWRK "入库工厂
MATNR "物料号码
CHARG "批次编号
BDMNG "需求量
ZZOP2FLG "再印刷标志位
APPENDING CORRESPONDING FIELDS OF TABLE TBL_RESB
FROM RESB
WHERE RSNUM IN SE_RSNUM.
IF SY-SUBRC <> 0. "数据不存在 退出FORM
RETURN.
ENDIF.
*2-1-2-2-3 查询 [工厂/分支机构](T001W)
LOOP AT TBL_RESB INTO REC_RESB.
SELECT SINGLE ADRNR "地址
INTO LO_ADRNR
FROM T001W "工厂表
WHERE WERKS = REC_RESB-UMWRK. "相应的工厂代号
*2-1-2-2-4 查询 [地址 (业务地址服务)](ADRC)
IF SY-SUBRC = 0.
SELECT SINGLE NAME1 "客户名称
TEL_NUMBER "电话号码
STREET "地址
INTO (REC_RESB-NAME1,
REC_RESB-TEL_NUMBER,
REC_RESB-STREET)
FROM ADRC "中心地址管理
WHERE ADDRNUMBER = LO_ADRNR "地址号码等于LO_ADRNR
AND NATION = SPACE. "国际地址版本等于SPACE
MODIFY TBL_RESB FROM REC_RESB
TRANSPORTING NAME1
TEL_NUMBER
STREET.
ENDIF.
ENDLOOP.
*2-1-2-2-5 查询 [物料的工厂数据](MARC)
CLEAR REC_RESB.
LOOP AT TBL_RESB INTO REC_RESB.
SELECT SINGLE SERNP "序列号参数文件
INTO LO_SERNP
FROM MARC
WHERE MATNR = REC_RESB-MATNR "物料号为预定表中物料号
AND WERKS = REC_RESB-WERKS. "工厂为预定表中工厂
IF LO_SERNP <> C_NULL. "机种类别不为空情况
REC_RESB-FLG = C_X.
ELSE.
REC_RESB-FLG = SPACE. "机种类别为空情况
ENDIF.
MODIFY TBL_RESB FROM REC_RESB
TRANSPORTING FLG . "机型管理
ENDLOOP.
*2-1-2-2-6 查询 [工厂/分支机构](T001W)
CLEAR REC_RESB.
LOOP AT TBL_RESB INTO REC_RESB.
SELECT SINGLE NAME1 "名称
INTO REC_RESB-NAME2
FROM T001W
WHERE WERKS = REC_RESB-WERKS. "工厂为预定表中出库工厂
IF SY-SUBRC = 0.
MODIFY TBL_RESB FROM REC_RESB
TRANSPORTING NAME2.
ENDIF.
ENDLOOP.
ENDFORM. "DO_SE_RSNUM
*&---------------------------------------------------------------------*
*& FORM DATA_EDIT
*& 功能: 数据编辑
*&---------------------------------------------------------------------*
FORM DATA_EDIT.
*2-2-1 移管的情况下处理
LOOP AT TBL_RESB INTO REC_RESB.
SHIFT REC_RESB-RSNUM LEFT DELETING LEADING '0'.
MODIFY TBL_RESB FROM REC_RESB
TRANSPORTING RSNUM.
REC_RKPF-NAME1 = REC_RESB-NAME1. "仓库名称
REC_RKPF-BDTER = REC_RESB-BDTER. "提货预定日
REC_RKPF-UMWRK = REC_RESB-UMWRK. "仓库
REC_RKPF-RSNUM = REC_RESB-RSNUM. "出库凭证
REC_RKPF-TEL_NUMBER = REC_RESB-TEL_NUMBER. "经销店电话
REC_RKPF-VSBED = C_ZZ. "装运条件
REC_RKPF-PROCE = TEXT-018. "出库路径
REC_RKPF-VGBEL = REC_RESB-VGBEL. "移送移管的指令传票
REC_RKPF-STREET = REC_RESB-STREET. "送货地址
REC_RKPF-WERKS = REC_RESB-WERKS. "提货仓库
REC_RKPF-NAME2 = REC_RESB-NAME2. "提货仓库名称
REC_RKPF-ZZOP2FLG = REC_RESB-ZZOP2FLG. "再印刷标志位
COLLECT REC_RKPF INTO TBL_RKPF . "汇集移管抬头
ENDLOOP.
*2-2-2 项目[出库路径]的出力内容
CLEAR REC_LIKP.
LOOP AT TBL_LIKP INTO REC_LIKP.
CASE REC_LIKP-VSBED. "[装运条件]
WHEN C_01. "01 出库路径为预处理
REC_LIKP-PROCE = TEXT-011.
WHEN C_02. "02 送货
REC_LIKP-PROCE = TEXT-012.
WHEN C_03. "03 送货(无偿)
REC_LIKP-PROCE = TEXT-013.
WHEN C_04. "04 紧急送货
REC_LIKP-PROCE = TEXT-014.
WHEN C_05. "05 紧急送货(无偿)
REC_LIKP-PROCE = TEXT-015.
WHEN C_11. "11 输出
REC_LIKP-PROCE = TEXT-016.
WHEN C_31. "31 移送
REC_LIKP-PROCE = TEXT-017.
WHEN OTHERS. "其它 移管
REC_LIKP-PROCE = TEXT-018.
ENDCASE.
MODIFY TBL_LIKP FROM REC_LIKP.
ENDLOOP.
*2-2-3 [装运条件]是01时 输出运货车号 交易者号 交易者名称
PERFORM GET_TEXT.
*2-2-4 取得机种类别
LOOP AT TBL_LIPS INTO REC_LIPS. "提货/送货/移送
PERFORM GET_LIPS_MATERIAL_TYPE.
ENDLOOP.
LOOP AT TBL_RESB INTO REC_RESB. "移管
PERFORM GET_RESB_MATERIAL_TYPE.
ENDLOOP.
*2-2-5 计算印刷时间
PERFORM GET_TIME.
IF G_TFLG = C_1.
G_DATE = SY-DATUM - 1.
ELSEIF G_TFLG = C_2.
G_DATE = SY-DATUM + 1.
ELSE.
G_DATE = SY-DATUM.
ENDIF.
*2-2-6 现在的页
*2-2-7 总页数
ENDFORM. " DATA_EDIT
*&---------------------------------------------------------------------*
*& FORM GET_TEXT
*& 功能: 装运条件"01"时 输出运货车号 交易者号 交易者名称
*&---------------------------------------------------------------------*
FORM GET_TEXT.
DATA: LO_TBL_TLINE LIKE TABLE OF TLINE. "读取的文本行
DATA: LO_NAME LIKE THEAD-TDNAME. "将要读取的文本名
DATA: LO_REC_TLINE LIKE TLINE. "读取的文本行
CLEAR REC_LIKP.
*2-2-3 装运条件"01"时
LOOP AT TBL_LIKP INTO REC_LIKP.
IF REC_LIKP-VSBED = C_01.
*输出运货车号
REFRESH LO_TBL_TLINE.
LO_NAME = REC_LIKP-VBELN. "交货凭证号
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT "登录的客户机编号
ID = C_Z001 "要读的文本的文本标识
LANGUAGE = C_ZH "将要读取的文本语言
NAME = LO_NAME "将要读取的文本名
OBJECT = C_VBBK "将要读取的文本对象
TABLES
LINES = LO_TBL_TLINE "读文本的文本标题
EXCEPTIONS
ID = 1 "无效的文本标识
LANGUAGE = 2 "无效的语言
NAME = 3 "无效的文本名
NOT_FOUND = 4 "找不到说明文本
OBJECT = 5 "无效的对象名
REFERENCE_CHECK = 6 "参照链中断
WRONG_ACCESS_TO_ARCHIVE = 7 "访问时存档句柄无效
OTHERS = 8. "其他
IF SY-SUBRC = 0.
LOOP AT LO_TBL_TLINE INTO LO_REC_TLINE WHERE TDLINE <> SPACE.
REC_LIKP-Z001 = LO_REC_TLINE-TDLINE. "运货车号
ENDLOOP.
ENDIF.
*输出交易者号
REFRESH LO_TBL_TLINE.
LO_NAME = REC_LIKP-VBELN.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = C_Z002
LANGUAGE = C_ZH
NAME = LO_NAME
OBJECT = C_VBBK
TABLES
LINES = LO_TBL_TLINE
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
IF SY-SUBRC = 0.
LOOP AT LO_TBL_TLINE INTO LO_REC_TLINE WHERE TDLINE <> SPACE.
REC_LIKP-Z002 = LO_REC_TLINE-TDLINE. "交易者号
ENDLOOP.
ENDIF.
*输出交易者名称
REFRESH LO_TBL_TLINE.
LO_NAME = REC_LIKP-VBELN.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = C_Z003
LANGUAGE = C_ZH
NAME = LO_NAME
OBJECT = C_VBBK
TABLES
LINES = LO_TBL_TLINE
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
IF SY-SUBRC = 0.
LOOP AT LO_TBL_TLINE INTO LO_REC_TLINE WHERE TDLINE <> SPACE.
REC_LIKP-Z003 = LO_REC_TLINE-TDLINE. "交易者名称
ENDLOOP.
ENDIF.
MODIFY TBL_LIKP FROM REC_LIKP
TRANSPORTING Z001 "运货车号
Z002 "交易者号
Z003. "交易者名称
ENDIF.
ENDLOOP.
ENDFORM. "GET_TEXT
*&---------------------------------------------------------------------*
*& FORM GET_LIPS_MATERIAL_TYPE
*& 功能: 提货/送货/移送 取得机种类别
*&---------------------------------------------------------------------*
FORM GET_LIPS_MATERIAL_TYPE.
*要分类的对象码
DATA: LO_OBJKEY LIKE BAPI1003_KEY-OBJECT,
*分类 BAPI - 关键字字段
LO_TBL_OBJKEY LIKE BAPI1003_OBJECT_KEYS
OCCURS 0 WITH HEADER LINE,
*返回参数
LO_TBL_RETURN LIKE BAPIRET2
OCCURS 0 WITH HEADER LINE,
*分配 BAPI - NUM、DATE、TIME 类型的值
LO_TBL_ALLOCVALUESNUM LIKE BAPI1003_ALLOC_VALUES_NUM
OCCURS 0 WITH HEADER LINE,
*分配 BAPI - CHAR、BOOL 类型的值
LO_TBL_ALLOCVALUESCHAR LIKE BAPI1003_ALLOC_VALUES_CHAR
OCCURS 0 WITH HEADER LINE,
*分配 BAPI - CURR 类型值
LO_TBL_ALLOCVALUESCURR LIKE BAPI1003_ALLOC_VALUES_CURR
OCCURS 0 WITH HEADER LINE.
LO_TBL_OBJKEY-KEY_FIELD = C_MATNR. "MATNR
LO_TBL_OBJKEY-VALUE_EXT = REC_LIPS-MATNR. "品目代码
APPEND LO_TBL_OBJKEY.
CLEAR: LO_OBJKEY.
CALL FUNCTION 'BAPI_OBJCL_CONCATENATEKEY'
EXPORTING
OBJECTTABLE = C_MARA
IMPORTING
OBJECTKEY_CONC = LO_OBJKEY
TABLES
OBJECTKEYTABLE = LO_TBL_OBJKEY
RETURN = LO_TBL_RETURN.
IF NOT LO_TBL_RETURN IS INITIAL. "检查是否出错
EXIT.
ENDIF.
CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
EXPORTING
OBJECTKEY = LO_OBJKEY
OBJECTTABLE = C_MARA
CLASSNUM = C_ZCLASS_MAT
CLASSTYPE = C_001
TABLES
ALLOCVALUESNUM = LO_TBL_ALLOCVALUESNUM
ALLOCVALUESCHAR = LO_TBL_ALLOCVALUESCHAR
ALLOCVALUESCURR = LO_TBL_ALLOCVALUESCURR
RETURN = LO_TBL_RETURN.
READ TABLE LO_TBL_ALLOCVALUESCHAR WITH KEY CHARACT = C_TYPEC.
IF SY-SUBRC = 0.
REC_LIPS-MATERIAL_TYPE = LO_TBL_ALLOCVALUESCHAR-VALUE_CHAR.
MODIFY TBL_LIPS FROM REC_LIPS.
ENDIF.
REFRESH LO_TBL_OBJKEY.
ENDFORM. "GET_LIPS_MATERIAL_TYPE
*&---------------------------------------------------------------------*
*& FORM GET_RESB_MATERIAL_TYPE
*& 功能: 移管 取得机种类别
*&---------------------------------------------------------------------*
FORM GET_RESB_MATERIAL_TYPE.
*要分类的对象码
DATA: LO_OBJKEY
LIKE BAPI1003_KEY-OBJECT,
*分类 BAPI - 关键字字段
LO_TBL_OBJKEY
LIKE BAPI1003_OBJECT_KEYS OCCURS 0 WITH HEADER LINE,
*返回参数
LO_TBL_RETURN
LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,
*分配 BAPI - NUM、DATE、TIME 类型的值
LO_TBL_ALLOCVALUESNUM
LIKE BAPI1003_ALLOC_VALUES_NUM OCCURS 0 WITH HEADER LINE,
*分配 BAPI - CHAR、BOOL 类型的值
LO_TBL_ALLOCVALUESCHAR
LIKE BAPI1003_ALLOC_VALUES_CHAR OCCURS 0 WITH HEADER LINE,
*分配 BAPI - CURR 类型值
LO_TBL_ALLOCVALUESCURR
LIKE BAPI1003_ALLOC_VALUES_CURR OCCURS 0 WITH HEADER LINE.
LO_TBL_OBJKEY-KEY_FIELD = C_MATNR. "MATNR
LO_TBL_OBJKEY-VALUE_EXT = REC_RESB-MATNR. "品目代码
APPEND LO_TBL_OBJKEY.
CLEAR: LO_OBJKEY.
CALL FUNCTION 'BAPI_OBJCL_CONCATENATEKEY'
EXPORTING
OBJECTTABLE = C_MARA
IMPORTING
OBJECTKEY_CONC = LO_OBJKEY
TABLES
OBJECTKEYTABLE = LO_TBL_OBJKEY
RETURN = LO_TBL_RETURN.
IF NOT LO_TBL_RETURN IS INITIAL. "检查是否出错
EXIT.
ENDIF.
CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
EXPORTING
OBJECTKEY = LO_OBJKEY
OBJECTTABLE = C_MARA
CLASSNUM = C_ZCLASS_MAT
CLASSTYPE = C_001
TABLES
ALLOCVALUESNUM = LO_TBL_ALLOCVALUESNUM
ALLOCVALUESCHAR = LO_TBL_ALLOCVALUESCHAR
ALLOCVALUESCURR = LO_TBL_ALLOCVALUESCURR
RETURN = LO_TBL_RETURN.
READ TABLE LO_TBL_ALLOCVALUESCHAR WITH KEY CHARACT = C_TYPEC.
IF SY-SUBRC = 0.
REC_RESB-MATERIAL_TYPE = LO_TBL_ALLOCVALUESCHAR-VALUE_CHAR.
"特性值
MODIFY TBL_RESB FROM REC_RESB.
ENDIF.
REFRESH LO_TBL_OBJKEY.
ENDFORM. "GET_RESB_MATERIAL_TYPE
*&---------------------------------------------------------------------*
*& FORM GET_TIME
*& 功能: 取得对应本地时间
*&---------------------------------------------------------------------*
FORM GET_TIME.
DATA: LO_TIME1 LIKE SY-UZEIT, "系统时间
LO_TIME2 LIKE SY-UZEIT, "用户时间
LO_TIME3 LIKE SY-UZEIT, "对应本地时间
LO_UT1 LIKE TTZR-UTCSIGN, "差别1
LO_UT2 LIKE TTZR-UTCSIGN, "差别2
LO_ZONE1 LIKE TTZZ-TZONE, "时区1
LO_ZONE2 LIKE USR02-TZONE. "时区2
CLEAR: G_TIME.
CLEAR: G_TFLG.
CALL FUNCTION 'TZON_GET_OS_TIMEZONE'
IMPORTING
EF_TIMEZONE = LO_ZONE1. "时区1
*取得标准时间
PERFORM GET_TIME1
USING
LO_ZONE1 "时区1
CHANGING
LO_TIME1 "系统时间
LO_UT1. "差别1
SELECT SINGLE TZONE
INTO LO_ZONE2
FROM USR02
WHERE BNAME = SY-UNAME. "用户名称
IF LO_ZONE2 = SPACE.
LO_ZONE2 = C_UTC8. "时区2
ENDIF.
*取得标准时间
PERFORM GET_TIME1
USING
LO_ZONE2 "时区2
CHANGING
LO_TIME2 "用户时间
LO_UT2. "差别2
DEFINE TIME.
LO_TIME3 = SY-UZEIT &1 LO_TIME1 &2 LO_TIME2. "对应本地时间
END-OF-DEFINITION.
IF LO_UT1 = C_A AND LO_UT2 = C_A.
TIME - +.
IF LO_TIME3 > SY-UZEIT.
G_TFLG = C_1.
ENDIF.
ELSEIF LO_UT1 = C_A AND LO_UT2 = C_D.
TIME - -.
IF LO_TIME3 > SY-UZEIT.
G_TFLG = C_1.
ENDIF.
ELSEIF LO_UT1 = C_D AND LO_UT2 = C_A.
TIME + +.
IF LO_TIME3 < SY-UZEIT.
G_TFLG = C_2.
ENDIF.
ELSEIF LO_UT1 = C_D AND LO_UT2 = C_D.
TIME + -.
IF LO_TIME3 < SY-UZEIT.
G_TFLG = C_2.
ENDIF.
ENDIF.
G_TIME = LO_TIME3.
ENDFORM. "GET_TIME
*&---------------------------------------------------------------------*
*& FORM GET_TIME1
*& 功能: 取得标准时间
*&---------------------------------------------------------------------*
* -->P_ZONE 时区
* <--P_TIME 时间
* <--P_UT 差别
*----------------------------------------------------------------------*
FORM GET_TIME1
USING
P_ZONE
CHANGING
P_TIME
P_UT.
DATA: LO_ZONERULE LIKE TTZZ-ZONERULE. "时区规则
SELECT SINGLE ZONERULE
INTO LO_ZONERULE
FROM TTZZ
WHERE TZONE = P_ZONE.
SELECT SINGLE UTCDIFF
UTCSIGN
INTO (P_TIME,P_UT)
FROM TTZR
WHERE ZONERULE = LO_ZONERULE.
ENDFORM. " GET_TIME1
*&---------------------------------------------------------------------*
*& FORM WRITE_SAPSCRIPT
*& 功能: 帐票输出
*&---------------------------------------------------------------------*
FORM WRITE_SAPSCRIPT.
DATA: LO_LINE TYPE I, "条目计数
LO_TITLE(15) TYPE C, "当前标题
LO_HEAD(15) TYPE C, "当前头部
LO_INDEX TYPE I VALUE 0, "指示变量
LO_REC_OPTIONS LIKE ITCPO. "打印选项
LO_REC_OPTIONS-TDDEST = PA_PDEST. "输出设备
LO_REC_OPTIONS-TDIMMED = C_X. "立即打印
LO_REC_OPTIONS-TDDELETE = SPACE. "打印后立即删除
LO_REC_OPTIONS-TDNEWID = C_X. "新打印请求
LO_REC_OPTIONS-TDPREVIEW = C_X. "打印预览
*2-3-1排序
SORT TBL_LIKP BY VBELN ASCENDING
VSBED ASCENDING.
SORT TBL_LIPS BY MATNR ASCENDING.
SORT TBL_RESB BY RSNUM ASCENDING
MATNR ASCENDING.
SORT TBL_RKPF BY RSNUM ASCENDING.
*2-3-2帐票出力
* 打开文档格式
PERFORM FORM_OPEN
USING
C_SAPSCRIPT_ID "表格名称
C_ZH "语言
LO_REC_OPTIONS. "打印机选项
*送货/提货/移送 输出
LOOP AT TBL_LIKP INTO REC_LIKP.
IF LO_INDEX <> 0. "是否为第1页
PERFORM FORM_CONTROL
USING
'NEW-PAGE'.
ENDIF.
LO_INDEX = LO_INDEX + 1.
LO_LINE = 0.
IF REC_LIKP-ZZOP2FLG IS INITIAL.
G_ZZOP2FLGCHAR = SPACE.
ELSE.
G_ZZOP2FLGCHAR = TEXT-020. "再印刷
ENDIF.
CASE REC_LIKP-VSBED. "装运条件
*2-3-2-1 [装运条件] 为常量01场合 提货格式输出
WHEN C_01.
PERFORM FORM_WRITE
USING
'E_TITLE_T' "提货单标题
'HEAD'.
PERFORM FORM_WRITE
USING
'E_HEAD'
'MAIN'.
PERFORM FORM_WRITE
USING
'E_HEAD_T' "提货单抬头
'MAIN'.
LO_TITLE = 'E_TITLE_T'.
LO_HEAD = 'E_HEAD_T'.
*2-3-2-2 [装运条件] 为常量02/03/04/05/11场合 送货格式输出
WHEN C_02 OR
C_03 OR
C_04 OR
C_05 OR
C_11.
PERFORM FORM_WRITE
USING
'E_TITLE_S' "送货单标题
'HEAD'.
PERFORM FORM_WRITE
USING
'E_HEAD'
'MAIN'.
PERFORM FORM_WRITE
USING
'E_HEAD_S' "送货单抬头
'MAIN'.
LO_TITLE = 'E_TITLE_S'.
LO_HEAD = 'E_HEAD_S'.
WHEN C_31.
*2-3-2-2 [装运条件] 为常量31场合 送货格式输出
PERFORM FORM_WRITE
USING
'E_TITLE_S' "送货单标题
'HEAD'.
PERFORM FORM_WRITE
USING
'E_HEAD'
'MAIN'.
PERFORM FORM_WRITE
USING
'E_HEAD_YS' "移送单抬头
'MAIN'.
LO_TITLE = 'E_TITLE_S'.
LO_HEAD = 'E_HEAD_YS'.
WHEN OTHERS. "其它场合
PERFORM FORM_WRITE
USING
'E_TITLE_S'
'HEAD'.
PERFORM FORM_WRITE
USING
'E_HEAD'
'MAIN'.
PERFORM FORM_WRITE
USING
'E_HEAD_YS'
'MAIN'.
LO_TITLE = 'E_TITLE_YS'.
LO_HEAD = 'E_HEAD_YS'.
ENDCASE.
PERFORM FORM_WRITE
USING
'E_ITEM_HEAD'
'MAIN'. "明细头名称
G_LINE = '5.2'.
DO 29 TIMES. "画29行明细表格行
PERFORM FORM_WRITE
USING
'E_ITEM_BODY'
'MAIN'.
G_LINE = G_LINE + 1.
ENDDO.
*详细信息输出
CLEAR REC_LIPS.
LOOP AT TBL_LIPS INTO REC_LIPS
WHERE VBELN = REC_LIKP-VBELN. "与抬头对应的明细
IF LO_LINE >= 29. "数据明细行大于29,分页
LO_LINE = 0.
PERFORM FORM_WRITE
USING
'E_ITEM_FOOT'
'MAIN'. "当前页提货仓库
PERFORM FORM_WRITE
USING
'E_FOOT'
'FOOT'. "打印当前页页脚
PERFORM FORM_CONTROL
USING
'NEW-PAGE'. "新建页
PERFORM FORM_WRITE
USING
LO_TITLE
'HEAD'. "上一页标题信息
PERFORM FORM_WRITE
USING
'E_HEAD'
'MAIN'.
PERFORM FORM_WRITE
USING
LO_HEAD
'MAIN'. "上一页头部信息
PERFORM FORM_WRITE
USING
'E_ITEM_HEAD'
'MAIN'. "明细头名称
G_LINE = '5.2'.
DO 29 TIMES.
PERFORM FORM_WRITE
USING
'E_ITEM_BODY'
'MAIN'. "画表格行
G_LINE = G_LINE + 1. "表格行加1
ENDDO.
ENDIF.
PERFORM FORM_WRITE
USING
'E_ITEM_DATA' "打印一条明细
'MAIN'.
LO_LINE = LO_LINE + 1. "明细行加1
ENDLOOP.
PERFORM FORM_WRITE
USING
'E_ITEM_FOOT'
'MAIN'. "打印提货仓库
PERFORM FORM_WRITE
USING
'E_FOOT'
'FOOT'. "打印页脚
ENDLOOP.
*移管 输出
LOOP AT TBL_RKPF INTO REC_RKPF.
IF LO_INDEX <> 0.
PERFORM FORM_CONTROL
USING
'NEW-PAGE'.
ENDIF.
LO_INDEX = LO_INDEX + 1.
LO_LINE = 0.
IF REC_RKPF-ZZOP2FLG IS INITIAL. "再印刷标志
G_ZZOP2FLGCHAR = SPACE.
ELSE.
G_ZZOP2FLGCHAR = TEXT-020. "[再印刷]
ENDIF.
PERFORM FORM_WRITE
USING
'E_TITLE_S' "送货单标题
'HEAD'.
PERFORM FORM_WRITE
USING
'E_HEAD' "抬头方框
'MAIN'.
PERFORM FORM_WRITE
USING
'E_HEAD_YG' "移管抬头数据
'MAIN'.
PERFORM FORM_WRITE
USING
'E_ITEM_HEAD' "明细头名称
'MAIN'.
*打印29行明细条目框
G_LINE = '5.2'.
DO 29 TIMES.
PERFORM FORM_WRITE
USING
'E_ITEM_BODY'
'MAIN'.
G_LINE = G_LINE + 1.
ENDDO.
G_LINE = '5.2'.
*详细信息输出
CLEAR REC_RESB.
LOOP AT TBL_RESB INTO REC_RESB
WHERE RSNUM = REC_RKPF-RSNUM.
IF LO_LINE >= 29.
LO_LINE = 0.
PERFORM FORM_WRITE
USING
'E_ITEM_FOOT_YG'
'MAIN'. "当前页提货仓库
PERFORM FORM_WRITE
USING
'E_FOOT'
'FOOT'. "打印当前页页脚
PERFORM FORM_CONTROL
USING
'NEW-PAGE'. "新建页
PERFORM FORM_WRITE
USING
'E_TITLE_S' "标题
'HEAD'.
PERFORM FORM_WRITE
USING
'E_HEAD' "抬头方框
'MAIN'.
PERFORM FORM_WRITE
USING
'E_HEAD_YG' "抬头数据
'MAIN'.
PERFORM FORM_WRITE
USING
'E_ITEM_HEAD'
'MAIN'. "明细头名称
G_LINE = '5.2'.
DO 29 TIMES.
PERFORM FORM_WRITE
USING
'E_ITEM_BODY'
'MAIN'.
G_LINE = G_LINE + 1.
ENDDO.
G_LINE = '5.2'.
ENDIF.
PERFORM FORM_WRITE
USING
'E_ITEM_DATA_YG'
'MAIN'. "打印一条移管数据
LO_LINE = LO_LINE + 1. "数据行加1
ENDLOOP.
PERFORM FORM_WRITE
USING
'E_ITEM_FOOT_YG'
'MAIN'. "打印提货仓库
PERFORM FORM_WRITE
USING
'E_FOOT'
'FOOT'. "打印页脚
ENDLOOP.
PERFORM FORM_CLOSE. "关闭文档格式
ENDFORM. " WRITE_SAPSCRIPT
*&---------------------------------------------------------------------*
*& FORM FORM_OPEN
*& 功能: 打开文档格式
*&---------------------------------------------------------------------*
* --> I_FORM_NAME FORM的ID
* --> I_LANGUAGE 语言
* --> I_OPTIONS 打印机选项
*----------------------------------------------------------------------*
FORM FORM_OPEN
USING
I_FORM_NAME TYPE ANY
I_LANGUAGE TYPE ANY
I_OPTIONS TYPE ANY.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
FORM = I_FORM_NAME
LANGUAGE = I_LANGUAGE
OPTIONS = I_OPTIONS
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
MAIL_OPTIONS = 6
ARCHIVE_ERROR = 7
INVALID_FAX_NUMBER = 8
MORE_PARAMS_NEEDED_IN_BATCH = 9
SPOOL_ERROR = 10
CODEPAGE = 11
OTHERS = 12.
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_OPEN
*&---------------------------------------------------------------------*
*& FORM FORM_WRITE
*& 功能: 指定WINDOW ELEMENT输出到当前打开的FORM
*&---------------------------------------------------------------------*
* --> I_ELEMENT_NAME 文本元素名称
* --> I_WINDOW_NAME 页窗口名称
*----------------------------------------------------------------------*
FORM FORM_WRITE USING I_ELEMENT_NAME TYPE ANY
I_WINDOW_NAME TYPE ANY.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = I_ELEMENT_NAME
WINDOW = I_WINDOW_NAME
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10.
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_WRITE
*&---------------------------------------------------------------------*
*& FORM FORM_CLOSE
*& 功能: 关闭文档格式
*&---------------------------------------------------------------------*
FORM FORM_CLOSE.
CALL FUNCTION 'CLOSE_FORM'
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SEND_ERROR = 3
SPOOL_ERROR = 4
CODEPAGE = 5
OTHERS = 6.
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_CLOSE
*&---------------------------------------------------------------------*
*& FORM FORM_CONTROL
*& 功能: FROM控制
*&---------------------------------------------------------------------*
* --> I_COMMAND FORM命令
*----------------------------------------------------------------------*
FORM FORM_CONTROL
USING
I_COMMAND TYPE ANY.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = I_COMMAND
EXCEPTIONS
UNOPENED = 1
UNSTARTED = 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.
ENDFORM. "FORM_CONTROL
*&---------------------------------------------------------------------*
*& FORM WRITE_SMARTFORM
*& 功能: SMARTFROM输出
*&---------------------------------------------------------------------*
FORM WRITE_SMARTFORM.
DATA LO_RS38L_FNAM TYPE RS38L_FNAM. "SMARTFORMS文件名
SORT TBL_LIKP BY VBELN. "对内部表TBL_LIKP排序
SORT TBL_RKPF BY RSNUM. "对内部表TBL_RKPF排序
CONCATENATE C_SMARTFORM_ID "SMARTFORM名称
C_LIKP "表名LIKP
SY-UZEIT "当前时间
INTO G_LIKP. "生成标记ID
REC_INDX-AEDAT = SY-DATUM. "SYST日期
REC_INDX-USERA = SY-UNAME. "用户名
REC_INDX-PGMID = SY-REPID. "ABAP 程序名
EXPORT TBL_LIKP[] "把内表存入数据库缓存
TO DATABASE INDX(HK) "EXPORT 数据表中的区域
ID G_LIKP "INDX中用户-定义关键字
FROM REC_INDX.
CONCATENATE C_SMARTFORM_ID "SMARTFORM名称
C_LIPS "表名LIPS
SY-UZEIT "当前时间
INTO G_LIPS. "生成标记ID
REC_INDX-AEDAT = SY-DATUM. "SYST日期
REC_INDX-USERA = SY-UNAME. "用户名
REC_INDX-PGMID = SY-REPID. "ABAP 程序名
EXPORT TBL_LIPS[] "把内表存入数据库缓存
TO DATABASE INDX(HK) "EXPORT 数据表中的区域
ID G_LIPS "INDX中用户-定义关键字
FROM REC_INDX.
CONCATENATE C_SMARTFORM_ID "SMARTFORM名称
C_RKPF "表名RKPF
SY-UZEIT "当前时间
INTO G_RKPF. "生成标记ID
REC_INDX-AEDAT = SY-DATUM. "SYST日期
REC_INDX-USERA = SY-UNAME. "用户名
REC_INDX-PGMID = SY-REPID. "ABAP 程序名
EXPORT TBL_RKPF[] "把内表存入数据库缓存
TO DATABASE INDX(HK) "EXPORT 数据表中的区域
ID G_RKPF "INDX中用户-定义关键字
FROM REC_INDX.
CONCATENATE C_SMARTFORM_ID "SMARTFORM名称
C_RESB "表名RESB
SY-UZEIT "当前时间
INTO G_RESB. "生成标记ID
REC_INDX-AEDAT = SY-DATUM. "SYST日期
REC_INDX-USERA = SY-UNAME. "用户名
REC_INDX-PGMID = SY-REPID. "ABAP 程序名
EXPORT TBL_RESB[] "把内表存入数据库缓存
TO DATABASE INDX(HK) "EXPORT 数据表中的区域
ID G_RESB "INDX中用户-定义关键字
FROM REC_INDX.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZMMR001_A140' "SMARTFORMS程序名
IMPORTING
FM_NAME = LO_RS38L_FNAM "对应的函数名
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 LO_RS38L_FNAM
EXPORTING
P_LIKP = G_LIKP "TBL_LIKP对应的ID
P_LIPS = G_LIPS "TBL_LIPS对应的ID
P_RKPF = G_RKPF "TBL_RKPF对应的ID
P_RESB = G_RESB "TBL_RESB对应的ID
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.
DELETE FROM DATABASE INDX(HK) ID G_LIKP. "删除缓存数据TBL_LIKP
DELETE FROM DATABASE INDX(HK) ID G_LIPS. "删除缓存数据TBL_LIPS
DELETE FROM DATABASE INDX(HK) ID G_LIKP. "删除缓存数据TBL_RKPF
DELETE FROM DATABASE INDX(HK) ID G_LIPS. "删除缓存数据TBL_RESB
ENDFORM. "WRITE_SMARTFORM
*&---------------------------------------------------------------------*
*& FORM PROCESS_END
*& 功能: 打印完毕后,确定已打印标志,更新数据库
*&---------------------------------------------------------------------*
FORM PROCESS_END.
LOOP AT TBL_LIKP INTO REC_LIKP.
UPDATE LIPS "确定LIPS中已打印标志
SET ZZOP2FLG = C_X
WHERE VBELN = REC_LIKP-VBELN.
ENDLOOP.
LOOP AT TBL_RESB INTO REC_RESB.
UPDATE RESB "确定RESB中已打印标志
SET ZZOP2FLG = C_X
WHERE RSNUM = REC_RESB-RSNUM.
ENDLOOP.
ENDFORM. "PROCESS_END
文本消息
000复数选择
001仓库保
002管场所
003出库路径
004出库预定日
005个别选择
006出库凭证番号
007入出库预定
008I/F
009印刷
010打印设备
011预处理
012送货
013送货(无偿)
014紧急送货
015紧急送货(无偿)
016输出
017移送
018移管
019上海大金空调有限公司
020再印刷
021提 货 单
022经销店名称
023提货预定日
024经销店编号
025出库凭证
026经销店电话
027出库路径
028订单号
029运货车号
030交易者号
031品名代码
032管区
033数量
034机种类别
035机型管理
036提货仓库
037签名
038印刷时间
039第
040页
041共
042送 货 单
043送货地址
044仓库名称
045仓库
046移送移管的指令传票