您的位置:首页 > 其它

ABAP程序的性能优化啊.

2009-07-21 11:38 996 查看
*===============================基本信息===============================*
* 标题:销售订单评审一览表
* 创建日期:2006-03-15
* 基本描述:XXX
*===============================更改日志===============================*
* 申请号 日期 修改人 更改描述
* 2008-04修改新老产品,“新/老产品”--BOM和CQS使用取于物料主数据,CQS评
* 审完后修改物料主数据由新产品更改为老产品。视图更改:CQS评审更改物料定
* 价组,只开通修改销售视图,所以BDC所选的位置是2
* 2008-04-07增加ZAR的订单类型,为益周物流(物控,生管,采购)在"生管评审备注"
* 填写生产异常信息
** 2008-06-24 同一订单下的相同新产品把第二项改成老产品。(取消)
* 2008-09-27  优化
* 2008-11-25 从20081202后的免费订单由GCM评审
* 2008-12-11 放开ZAR订单查看的权限
* 2009-01-19 CQS评审时不仅带出评审帐号且带上电脑名
* 2009-01-21 增加ZMJ收费无料号样品订单评审,只要GCM评审
* 2009-03-05 取消ZMJ样品订单的评审
* 2009-03-18 销售人员姓名改为取自订单版本号 YLT
*CQS权限说明 WTCQS帐号只能评审不为A,B,C,Y的料号;YJCQS不能评审80R的料号
* 2009-07-10 增加送达方
*===============================定 义===============================*

************************************************************************
* 基本代码
************************************************************************
REPORT ZR_SD_043
NO STANDARD PAGE HEADING
LINE-COUNT 65
LINE-SIZE 150
MESSAGE-ID ZSD1.

************************************************************************
* INCLUDE:包含文件
************************************************************************
INCLUDE OLE2INCL.

************************************************************************
* TABLE: 定义内表和TABLE
************************************************************************
TABLES: MARC,MARA, T001W, MAKT, VBAK,VBEP,VBAP,JEST,JCDS,ONRVB,MAST,STKO,MVKE,ZJCDS.
************************************************************************
* TYPE : 定义数据类型
************************************************************************
TYPE-POOLS: SLIS.
*报表最后输出时使用的数据
DATA: T_VBAK1 LIKE VBAK OCCURS 0 WITH HEADER LINE. "销售订单
DATA: T_TEMP LIKE VBAP OCCURS 0 WITH HEADER LINE. "YILT 销售订单项目数据
DATA: FLAG.
DATA: BEGIN OF T_VBAK OCCURS 0.
INCLUDE STRUCTURE T_VBAK1.
DATA NAME1 LIKE KNA1-NAME1.
DATA BZ(80).
DATA FLAG.
DATA: END OF T_VBAK.
DATA: BEGIN OF T_VBAP1 OCCURS 0,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
MAKTX LIKE MAKT-MAKTX,
ZMENG LIKE VBAP-ZMENG,
MEINS LIKE VBAP-MEINS,
NETWR_D LIKE VBAP-NETWR,
KWMENG LIKE VBAP-KWMENG,
KDMAT LIKE VBAP-KDMAT,
KONDM LIKE VBAP-KONDM,
MMKON LIKE MVKE-KONDM,
ABGRU LIKE VBAP-ABGRU,
SERNR LIKE VBAP-SERNR,
VTEXT LIKE T178T-VTEXT,
SOVTE LIKE T178T-VTEXT,
VTEXT1 LIKE TSPAT-VTEXT,
NAME1 LIKE KNA1-NAME1,
DISPO LIKE MARC-DISPO,
BISMT LIKE MARA-BISMT,

END OF T_VBAP1.

DATA: BEGIN OF IT_PRINT_001 OCCURS 0.
DATA FLAG.
DATA: COLOR1 TYPE SLIS_T_SPECIALCOL_ALV.

INCLUDE STRUCTURE T_VBAK1.
INCLUDE STRUCTURE T_VBAP1.
DATA BSTKD_E LIKE VBKD-BSTKD_E.
DATA XL(130).
DATA E1.
DATA ET1(130).
DATA E2.
DATA ET2(40).
DATA E3.
DATA ET3(40).
DATA E4.
DATA ET4(132).
DATA E5. "免费订单GCM评审状态
DATA ET5(132).
DATA COLOR(4) TYPE C . "显示颜色-- PPAP订单为黄色 ELIN 09-06-30

*DATA BSTKD_E LIKE VBKD-BSTKD_E. "谢明志 05-08-18
DATA STRGR LIKE MARC-STRGR.
DATA ZKUNNR LIKE VBAK-KUNNR. "送达方客户号
DATA NAME2 LIKE KNA1-NAME1. "送达方名称
DATA SNAME LIKE PA0001-SNAME. "销售人员姓名
DATA USNAM0 LIKE JCDS-USNAM.
DATA UDATE0 LIKE JCDS-UDATE.
DATA UTIME0 LIKE JCDS-UTIME.
DATA USNAM01(12).

DATA USNAM1 LIKE JCDS-USNAM.
DATA UDATE1 LIKE JCDS-UDATE.
DATA UTIME1 LIKE JCDS-UTIME.
DATA USNAM11(12).

DATA USNAM2 LIKE JCDS-USNAM.
DATA IPDEC2(16) TYPE C. "取CQS评审人的IP
DATA HOST2(25) TYPE C. "取CQS评审人的电脑名
DATA ZNAME LIKE ZDT02-ZNAME. "CQS评审人姓名
DATA UDATE2 LIKE JCDS-UDATE.
DATA UTIME2 LIKE JCDS-UTIME.
DATA USNAM21(12).

DATA USNAM3 LIKE JCDS-USNAM.
DATA UDATE3 LIKE JCDS-UDATE.
DATA UTIME3 LIKE JCDS-UTIME.
DATA USNAM31(12).
*免费订单由GCM评审
DATA USNAM4 LIKE JCDS-USNAM.
DATA UDATE4 LIKE JCDS-UDATE.
DATA UTIME4 LIKE JCDS-UTIME.
DATA USNAM41(12).

DATA :OBJNR1 LIKE ONRVB-OBJNR,
OBJNR2 LIKE ONRVB-OBJNR,
EDATU LIKE VBEP-EDATU,

WERKS LIKE VBAP-WERKS,
STLST LIKE STKO-STLST "BOM状态
.

DATA: END OF IT_PRINT_001.
DATA Z_AREA LIKE IT_PRINT_001.
DATA L_TEMP LIKE LINE OF IT_PRINT_001.
DATA: IP_UNAME TYPE USR41-TERMINAL.
DATA: P_REPORT,
P_ALV.
*长文本信息
DATA: IT_LTEXT TYPE STANDARD TABLE OF TLINE
INITIAL SIZE 1 WITH HEADER LINE.

*BDC使用的参数
DATA: IT_BDCDATA_001 LIKE STANDARD TABLE OF BDCDATA INITIAL SIZE 6
WITH HEADER LINE,SESSION LIKE APQI-GROUPID.

*读取EXCEL表格后,存放数据
*NEED MODIFY: 根据EXCEL表格字段量的不同做修改。这里只适用不多于5个字
*段的情况,如有更多的字段,则必须进行相应的扩展。扩展后子程序
*F_FILE_READ_DATA的也要做相应的扩展。
DATA: BEGIN OF IT_EXCEL_001 OCCURS 0,
COLUMN_001(20) ,
COLUMN_002(20) ,
COLUMN_003(20) ,
COLUMN_004(20) ,
COLUMN_005(20) ,
END OF IT_EXCEL_001.

DATA: BEGIN OF IT_SELECT_CONDITION OCCURS 0,
SIGN(1) ,
OPTION(2) ,
LOW(8) ,
HIGH(8) ,
END OF IT_SELECT_CONDITION.

************************************************************************
* CONSTANTS : 定义常量
************************************************************************

************************************************************************
* TYPE : 定义数据类型
************************************************************************
TYPE-POOLS: SLIS.

************************************************************************
* DATA : 定义变量
************************************************************************

*用于绘制普通REPORT
DATA G_WRITE_COUNT TYPE I VALUE 0.
DATA G_INIT_COUNT TYPE I VALUE 0.
DATA G_LAST_FILED_WIDTH TYPE I VALUE 0.
TYPES TYPE_IT_WRITE_POSITION TYPE I OCCURS 0 .
DATA IT_WRITE_POSITION TYPE TYPE_IT_WRITE_POSITION.

*用于ALV控件双击事件
DATA: G_SELECTED_FIELD_VALUE(80).
DATA: G_TABINDEX TYPE I.
DATA: COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE. "用于显示不同颜色
*ALV控件构造时需要的参数
DATA: G_ALV_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
G_ALV_FIELDCAT_LINE LIKE LINE OF G_ALV_FIELDCAT,
G_ALV_EVENT TYPE SLIS_T_EVENT.

*读取EXCEL文件时需要的对象
DATA EXCEL TYPE OLE2_OBJECT.
DATA WORKBOOK TYPE OLE2_OBJECT.
DATA CELL TYPE OLE2_OBJECT.

*ALV控件输出的表头
DATA: G_ALV_LISTHEADER TYPE SLIS_T_LISTHEADER.

*指定ALV控件触发TOP_OF_PAGE事件时调用的子程序
DATA: G_ALV_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME
VALUE 'F_ALV_EVENT_TOP_OF_PAGE'.
*指定ALV控件触发END_OF_LIST事件时调用的子程序
DATA: G_ALV_FORMNAME_END_OF_LIST TYPE SLIS_FORMNAME
VALUE 'F_ALV_EVENT_END_OF_LIST'.

*指定ALV控件的显示特征
DATA : G_ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
*BDC
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER
LINE.
************************************************************************
* DEFINE: 定义宏
************************************************************************
*普通报表格式的输出宏
DEFINE MACRO001.
WRITE: "NEED MODIFY
/1 &1,
21 &2,
41 &3,
61 &4,
81 &5,
100 &6.
END-OF-DEFINITION.

************************************************************************
* SELECTION SCREEN : 定义报表筛选条件
************************************************************************
*确定过滤参数
SELECTION-SCREEN BEGIN OF BLOCK FLAG WITH FRAME TITLE BLK_001 .
SELECT-OPTIONS : S_VBELN FOR VBAK-VBELN,
S_POSNR FOR VBAP-POSNR,
S_VKORG FOR VBAK-VKORG OBLIGATORY MEMORY ID VOK ,
S_VTWEG FOR VBAK-VTWEG,
S_SPART FOR VBAK-SPART,
S_VKBUR FOR VBAK-VKBUR,
S_VKGRP FOR VBAK-VKGRP,
S_KUNNR FOR VBAK-KUNNR,
S_ERDAT FOR VBAK-ERDAT,
S_VDATU FOR VBAK-VDATU,
S_EDATU FOR VBEP-EDATU, "YLT 增加行项目交期
S_MATNR FOR MARC-MATNR,
S_DISPO FOR MARC-DISPO,
S_AUGRU FOR VBAK-AUGRU,
S_ABGRU FOR VBAP-ABGRU,
S_KONDM FOR VBAP-KONDM.
* S_MMKON FOR MVKE-KONDM.
PARAMETERS: SGD AS CHECKBOX DEFAULT ''."启用生管过滤评审时间
SELECT-OPTIONS :S_UDATE FOR JCDS-UDATE.
SELECT-OPTIONS S_STLST FOR STKO-STLST.
SELECTION-SCREEN END OF BLOCK FLAG.

SELECTION-SCREEN BEGIN OF BLOCK BLK_002 WITH FRAME TITLE BLK_002 .
PARAMETERS:
S_ALL RADIOBUTTON GROUP R1 ,
S_PS RADIOBUTTON GROUP R1 DEFAULT 'X',
EPLAS RADIOBUTTON GROUP R1 ,
S_AZFD RADIOBUTTON GROUP R1 , "所有免费订单
S_ZFD RADIOBUTTON GROUP R1 . "所有未评审的免费订单

SELECTION-SCREEN END OF BLOCK BLK_002.
*选择文件
*NEED MODIFY:当要使用文件功能时,只要将代码“NO-DISPLAY”去掉即可
*代码“NO-DISPLAY”的作用:隐藏参数
SELECTION-SCREEN BEGIN OF BLOCK BLK_003 WITH FRAME TITLE BLK_003 .
PARAMETERS: P_FILE LIKE CFFILE-FILENAME NO-DISPLAY .
SELECTION-SCREEN END OF BLOCK BLK_003.

*===============================事 件===============================*
************************************************************************
* INITIALIZATION.启动程序开始执行
************************************************************************

************************************************************************
* AT SELECTION SCREEN:
************************************************************************
AT SELECTION-SCREEN.
PERFORM F_CHECK_INPUT. "检查用户输入

INITIALIZATION.
BLK_001 = '检索参数---PPAP订单为黄色背景色!'.
BLK_002 = '报表类型'.
BLK_003 = '文件参数'.

**用于弹出文件对话框
*NEED MODIFY:当要使用文件功能时,只要将以下代码的注释去掉即可
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
* PERFORM F_FILE_GET.

************************************************************************
* START OF SELECTION:
************************************************************************
START-OF-SELECTION.
*往数据库增加运行日志
DATA: BEGIN OF IT_ZREPORTLOG OCCURS 0.
INCLUDE TYPE ZREPORTLOG.
DATA: END OF IT_ZREPORTLOG .

IT_ZREPORTLOG-MANDT = SY-MANDT.
IT_ZREPORTLOG-TCODE = SY-TCODE.
IT_ZREPORTLOG-DATUM = SY-DATUM.
IT_ZREPORTLOG-UZEIT = SY-UZEIT.
IT_ZREPORTLOG-UNAME = SY-UNAME.
IT_ZREPORTLOG-TITLE = SY-TITLE.
APPEND IT_ZREPORTLOG.
INSERT INTO ZREPORTLOG VALUES IT_ZREPORTLOG .
*如果P_FILE有赋值,则进行EXCEL文件读取
IF P_FILE <> ''.
PERFORM F_FILE_OPEN. "文件2.打开文件
PERFORM F_FILE_READ_DATA. "文件3.取文件中的数据
PERFORM F_FILE_CLOSE. "文件3.关闭文件
ENDIF.

PERFORM F_READ_DATA.

************************************************************************
* END OF SELECTION
************************************************************************
END-OF-SELECTION.
* IF P_REPORT = 'X'.
* PERFORM F_PRINT_REPORT.
* ELSEIF P_ALV = 'X'.
PERFORM F_PRINT_ALV.
* ELSEIF P_FORM = 'X'.
* PERFORM F_PRINT_FORM.
*ENDIF.

************************************************************************
* TOP OF PAGE
************************************************************************
TOP-OF-PAGE.

************************************************************************
* END OF PAGE
************************************************************************
END-OF-PAGE.

************************************************************************
* LINE SELECTION
************************************************************************
AT LINE-SELECTION .

************************************************************************
* AT PFXX:
************************************************************************
AT PFXX.

************************************************************************
* AT USER-COMMAND
************************************************************************
AT USER-COMMAND.

*===============================子 例 程===============================*
************************************************************************
*过滤条件有效性检查
FORM F_CHECK_INPUT.
*增加销售机构权限检查BY PXY AT 08-06-02
TABLES:T001.
SELECT T001~BUKRS
FROM T001
INTO T001-BUKRS
WHERE T001~BUKRS IN S_VKORG.
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'CO.'
ID 'BUKRS' FIELD T001-BUKRS.
IF SY-SUBRC <> 0 .
MESSAGE E026 WITH S_VKORG.
ENDIF.
ENDSELECT.

IF EPLAS = 'X'.
* 权限控制,S43D权限组能修改“生产评审意见”的相关字段
* AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43D' ID 'BUKRS' FIELD T001-BUKRS..
* IF SY-SUBRC <> 0 .
* MESSAGE E015.
* ENDIF.
ENDIF.
ENDFORM. " F_CHECK_INPUT
************************************************************************
*从数据库中读取数据,填充报表输出时所用的内表
FORM F_READ_DATA .
DATA: CELLCOLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.
IF EPLAS = 'X'.
SELECT *
FROM VBAP
INNER JOIN VBAK
ON VBAK~VBELN = VBAP~VBELN
* INNER JOIN ONRVB
* ON ONRVB~VBELN = VBAP~VBELN AND ONRVB~POSNR = VBAP~POSNR
INNER JOIN VBEP
ON VBEP~VBELN = VBAP~VBELN AND VBEP~POSNR = VBAP~POSNR AND VBEP~ETENR = '0001'
* INNER JOIN JEST
* ON JEST~OBJNR = ONRVB~OBJNR
* AND JEST~INACT = ''
* AND JEST~CHGNR = '001'
INNER JOIN MARC
ON VBAP~MATNR = MARC~MATNR AND VBAP~WERKS = MARC~WERKS
INNER JOIN MARA
ON VBAP~MATNR = MARA~MATNR
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_001
WHERE VBAK~VBELN IN S_VBELN
AND VBAP~POSNR IN S_POSNR
AND VBAK~VKORG IN S_VKORG
AND VBAK~VTWEG IN S_VTWEG
AND VBAK~SPART IN S_SPART
AND VBAK~VKBUR IN S_VKBUR
AND VBAK~VKGRP IN S_VKGRP
AND VBAK~KUNNR IN S_KUNNR
AND VBAK~ERDAT IN S_ERDAT
AND VBAK~VDATU IN S_VDATU
AND VBEP~EDATU IN S_EDATU "行项目交期
AND VBAK~AUGRU IN S_AUGRU
AND VBAP~ABGRU IN S_ABGRU
AND VBAK~AUART = 'ZAR' "EPLAS不需要订单评审的生管备注
AND MARC~DISPO IN S_DISPO
AND MARC~MATNR IN S_MATNR
AND VBAP~KONDM IN S_KONDM.
* ELSEIF S_ALL = ''.
ELSEIF S_PS = 'X'.
SELECT *
FROM VBAP
INNER JOIN VBAK
ON VBAK~VBELN = VBAP~VBELN
INNER JOIN ONRVB
ON ONRVB~VBELN = VBAP~VBELN AND ONRVB~POSNR = VBAP~POSNR
INNER JOIN VBEP
ON VBEP~VBELN = VBAP~VBELN AND VBEP~POSNR = VBAP~POSNR AND VBEP~ETENR = '0001'
INNER JOIN JEST
ON JEST~OBJNR = ONRVB~OBJNR
AND JEST~INACT = ''
AND JEST~CHGNR = '001'
INNER JOIN MARC
ON VBAP~MATNR = MARC~MATNR AND VBAP~WERKS = MARC~WERKS
INNER JOIN MARA
ON VBAP~MATNR = MARA~MATNR
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_001
WHERE VBAK~VBELN IN S_VBELN
AND VBAP~POSNR IN S_POSNR
AND VBAK~VKORG IN S_VKORG
AND VBAK~VTWEG IN S_VTWEG
AND VBAK~SPART IN S_SPART
AND VBAK~VKBUR IN S_VKBUR
AND VBAK~VKGRP IN S_VKGRP
AND VBAK~KUNNR IN S_KUNNR
AND VBAK~ERDAT IN S_ERDAT
AND VBAK~VDATU IN S_VDATU
AND VBEP~EDATU IN S_EDATU "行项目交期
AND VBAK~AUGRU IN S_AUGRU
AND VBAP~ABGRU IN S_ABGRU
AND ( VBAK~AUART = 'ZOR' OR VBAK~AUART = 'ZSD'
OR VBAK~AUART = 'ZKB' OR VBAK~AUART = 'ZTJ' )
* OR VBAK~AUART = 'ZFD' OR VBAK~AUART = 'ZKB' ) "免费订单用另外的处理方式
AND MARC~DISPO IN S_DISPO
AND MARC~MATNR IN S_MATNR
AND VBAP~KONDM IN S_KONDM
AND ( JEST~STAT = 'E0001' OR JEST~STAT = 'E0002' OR JEST~STAT = 'E0003' ).

SELECT *
FROM VBAP
INNER JOIN VBAK
ON VBAK~VBELN = VBAP~VBELN
INNER JOIN ONRVB
ON ONRVB~VBELN = VBAP~VBELN AND ONRVB~POSNR = VBAP~POSNR
INNER JOIN VBEP
ON VBEP~VBELN = VBAP~VBELN AND VBEP~POSNR = VBAP~POSNR AND VBEP~ETENR = '0001'
INNER JOIN JEST
ON JEST~OBJNR = ONRVB~OBJNR
AND JEST~INACT = ''
AND JEST~CHGNR = '001'
INNER JOIN MARC
ON VBAP~MATNR = MARC~MATNR AND VBAP~WERKS = MARC~WERKS
INNER JOIN MARA
ON VBAP~MATNR = MARA~MATNR
APPENDING CORRESPONDING FIELDS OF TABLE IT_PRINT_001
WHERE VBAK~VBELN IN S_VBELN
AND VBAP~POSNR IN S_POSNR
AND VBAK~VKORG IN S_VKORG
AND VBAK~VTWEG IN S_VTWEG
AND VBAK~SPART IN S_SPART
AND VBAK~VKBUR IN S_VKBUR
AND VBAK~VKGRP IN S_VKGRP
AND VBAK~KUNNR IN S_KUNNR
AND VBAK~ERDAT IN S_ERDAT
AND VBAK~VDATU IN S_VDATU
AND VBEP~EDATU IN S_EDATU "行项目交期
AND VBAK~AUGRU IN S_AUGRU
AND VBAP~ABGRU IN S_ABGRU
AND VBAK~AUART = 'ZFD' "免费订单用另外的处理方式
AND MARC~DISPO IN S_DISPO
AND MARC~MATNR IN S_MATNR
AND VBAP~KONDM IN S_KONDM
* AND VBAK~ERDAT <= '20081202' "在此日期前的免费订单为三个状态
AND VBAK~ERDAT <= '20081201' "在此日期前的免费订单为三个状态
AND ( JEST~STAT = 'E0001' OR JEST~STAT = 'E0002' OR JEST~STAT = 'E0003').

SELECT *
FROM VBAP
INNER JOIN VBAK
ON VBAK~VBELN = VBAP~VBELN
INNER JOIN ONRVB
ON ONRVB~VBELN = VBAP~VBELN AND ONRVB~POSNR = VBAP~POSNR
INNER JOIN VBEP
ON VBEP~VBELN = VBAP~VBELN AND VBEP~POSNR = VBAP~POSNR AND VBEP~ETENR = '0001'
INNER JOIN JEST
ON JEST~OBJNR = ONRVB~OBJNR
AND JEST~INACT = ''
AND JEST~CHGNR = '001'
INNER JOIN MARC
ON VBAP~MATNR = MARC~MATNR AND VBAP~WERKS = MARC~WERKS
INNER JOIN MARA
ON VBAP~MATNR = MARA~MATNR
APPENDING CORRESPONDING FIELDS OF TABLE IT_PRINT_001
WHERE VBAK~VBELN IN S_VBELN
AND VBAP~POSNR IN S_POSNR
AND VBAK~VKORG IN S_VKORG
AND VBAK~VTWEG IN S_VTWEG
AND VBAK~SPART IN S_SPART
AND VBAK~VKBUR IN S_VKBUR
AND VBAK~VKGRP IN S_VKGRP
AND VBAK~KUNNR IN S_KUNNR
AND VBAK~ERDAT IN S_ERDAT
AND VBAK~VDATU IN S_VDATU
AND VBEP~EDATU IN S_EDATU "行项目交期
AND VBAK~AUGRU IN S_AUGRU
AND VBAP~ABGRU IN S_ABGRU
AND VBAK~AUART = 'ZFD' "免费订单用另外的处理方式
AND MARC~DISPO IN S_DISPO
AND MARC~MATNR IN S_MATNR
AND VBAP~KONDM IN S_KONDM
* AND VBAK~ERDAT > '20081202'
AND VBAK~ERDAT > '20081201'
AND ( JEST~STAT = 'E0001' OR JEST~STAT = 'E0002' OR JEST~STAT = 'E0003' OR JEST~STAT = 'E0004').

* SELECT *
*FROM VBAP
*INNER JOIN VBAK
* ON VBAK~VBELN = VBAP~VBELN
*INNER JOIN ONRVB
* ON ONRVB~VBELN = VBAP~VBELN AND ONRVB~POSNR = VBAP~POSNR
*INNER JOIN VBEP
* ON VBEP~VBELN = VBAP~VBELN AND VBEP~POSNR = VBAP~POSNR AND VBEP~ETENR = '0001'
*INNER JOIN JEST
* ON JEST~OBJNR = ONRVB~OBJNR
* AND JEST~INACT = ''
* AND JEST~CHGNR = '001'
*INNER JOIN MARC
* ON VBAP~MATNR = MARC~MATNR AND VBAP~WERKS = MARC~WERKS
*INNER JOIN MARA
* ON VBAP~MATNR = MARA~MATNR
*APPENDING CORRESPONDING FIELDS OF TABLE IT_PRINT_001
*WHERE VBAK~VBELN IN S_VBELN
*AND VBAP~POSNR IN S_POSNR
*AND VBAK~VKORG IN S_VKORG
*AND VBAK~VTWEG IN S_VTWEG
*AND VBAK~SPART IN S_SPART
*AND VBAK~VKBUR IN S_VKBUR
*AND VBAK~VKGRP IN S_VKGRP
*AND VBAK~KUNNR IN S_KUNNR
*AND VBAK~ERDAT IN S_ERDAT
*AND VBAK~VDATU IN S_VDATU
*AND VBEP~EDATU IN S_EDATU "行项目交期
*AND VBAK~AUGRU IN S_AUGRU
*AND VBAP~ABGRU IN S_ABGRU
*AND VBAK~AUART = 'ZMJ'
*AND MARC~DISPO IN S_DISPO
*AND MARC~MATNR IN S_MATNR
*AND VBAP~KONDM IN S_KONDM
*AND ( JEST~STAT = 'E0001' ).

ELSEIF S_ZFD = 'X'.

SELECT *
FROM VBAP
INNER JOIN VBAK
ON VBAK~VBELN = VBAP~VBELN
INNER JOIN ONRVB
ON ONRVB~VBELN = VBAP~VBELN AND ONRVB~POSNR = VBAP~POSNR
INNER JOIN VBEP
ON VBEP~VBELN = VBAP~VBELN AND VBEP~POSNR = VBAP~POSNR AND VBEP~ETENR = '0001'
INNER JOIN JEST
ON JEST~OBJNR = ONRVB~OBJNR
AND JEST~INACT = ''
AND JEST~CHGNR = '001'
INNER JOIN MARC
ON VBAP~MATNR = MARC~MATNR AND VBAP~WERKS = MARC~WERKS
INNER JOIN MARA
ON VBAP~MATNR = MARA~MATNR
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_001
WHERE VBAK~VBELN IN S_VBELN
AND VBAP~POSNR IN S_POSNR
AND VBAK~VKORG IN S_VKORG
AND VBAK~VTWEG IN S_VTWEG
AND VBAK~SPART IN S_SPART
AND VBAK~VKBUR IN S_VKBUR
AND VBAK~VKGRP IN S_VKGRP
AND VBAK~KUNNR IN S_KUNNR
AND VBAK~ERDAT IN S_ERDAT
AND VBAK~VDATU IN S_VDATU
AND VBEP~EDATU IN S_EDATU "行项目交期
AND VBAK~AUGRU IN S_AUGRU
AND VBAP~ABGRU IN S_ABGRU
AND VBAK~AUART = 'ZFD' "免费订单用另外的处理方式
AND MARC~DISPO IN S_DISPO
AND MARC~MATNR IN S_MATNR
AND VBAP~KONDM IN S_KONDM
* AND VBAK~ERDAT <= '20081202' "在此日期前的免费订单为三个状态
AND VBAK~ERDAT <= '20081201' "在此日期前的免费订单为三个状态
AND ( JEST~STAT = 'E0001' OR JEST~STAT = 'E0002' OR JEST~STAT = 'E0003').

SELECT *
FROM VBAP
INNER JOIN VBAK
ON VBAK~VBELN = VBAP~VBELN
INNER JOIN ONRVB
ON ONRVB~VBELN = VBAP~VBELN AND ONRVB~POSNR = VBAP~POSNR
INNER JOIN VBEP
ON VBEP~VBELN = VBAP~VBELN AND VBEP~POSNR = VBAP~POSNR AND VBEP~ETENR = '0001'
INNER JOIN JEST
ON JEST~OBJNR = ONRVB~OBJNR
AND JEST~INACT = ''
AND JEST~CHGNR = '001'
INNER JOIN MARC
ON VBAP~MATNR = MARC~MATNR AND VBAP~WERKS = MARC~WERKS
INNER JOIN MARA
ON VBAP~MATNR = MARA~MATNR
APPENDING CORRESPONDING FIELDS OF TABLE IT_PRINT_001
WHERE VBAK~VBELN IN S_VBELN
AND VBAP~POSNR IN S_POSNR
AND VBAK~VKORG IN S_VKORG
AND VBAK~VTWEG IN S_VTWEG
AND VBAK~SPART IN S_SPART
AND VBAK~VKBUR IN S_VKBUR
AND VBAK~VKGRP IN S_VKGRP
AND VBAK~KUNNR IN S_KUNNR
AND VBAK~ERDAT IN S_ERDAT
AND VBAK~VDATU IN S_VDATU
AND VBEP~EDATU IN S_EDATU "行项目交期
AND VBAK~AUGRU IN S_AUGRU
AND VBAP~ABGRU IN S_ABGRU
AND VBAK~AUART = 'ZFD' "免费订单用另外的处理方式
AND MARC~DISPO IN S_DISPO
AND MARC~MATNR IN S_MATNR
AND VBAP~KONDM IN S_KONDM
* AND VBAK~ERDAT > '20081202'
AND VBAK~ERDAT > '20081201'
AND ( JEST~STAT = 'E0001' OR JEST~STAT = 'E0002' OR JEST~STAT = 'E0003' OR JEST~STAT = 'E0004').

* SELECT *
*FROM VBAP
*INNER JOIN VBAK
* ON VBAK~VBELN = VBAP~VBELN
*INNER JOIN ONRVB
* ON ONRVB~VBELN = VBAP~VBELN AND ONRVB~POSNR = VBAP~POSNR
*INNER JOIN VBEP
* ON VBEP~VBELN = VBAP~VBELN AND VBEP~POSNR = VBAP~POSNR AND VBEP~ETENR = '0001'
*INNER JOIN JEST
* ON JEST~OBJNR = ONRVB~OBJNR
* AND JEST~INACT = ''
* AND JEST~CHGNR = '001'
*INNER JOIN MARC
* ON VBAP~MATNR = MARC~MATNR AND VBAP~WERKS = MARC~WERKS
*INNER JOIN MARA
* ON VBAP~MATNR = MARA~MATNR
*APPENDING CORRESPONDING FIELDS OF TABLE IT_PRINT_001
*WHERE VBAK~VBELN IN S_VBELN
*AND VBAP~POSNR IN S_POSNR
*AND VBAK~VKORG IN S_VKORG
*AND VBAK~VTWEG IN S_VTWEG
*AND VBAK~SPART IN S_SPART
*AND VBAK~VKBUR IN S_VKBUR
*AND VBAK~VKGRP IN S_VKGRP
*AND VBAK~KUNNR IN S_KUNNR
*AND VBAK~ERDAT IN S_ERDAT
*AND VBAK~VDATU IN S_VDATU
*AND VBEP~EDATU IN S_EDATU "行项目交期
*AND VBAK~AUGRU IN S_AUGRU
*AND VBAP~ABGRU IN S_ABGRU
*AND VBAK~AUART = 'ZMJ'
*AND MARC~DISPO IN S_DISPO
*AND MARC~MATNR IN S_MATNR
*AND VBAP~KONDM IN S_KONDM
*AND ( JEST~STAT = 'E0001').

ELSE.
IF SGD = 'X'.
SELECT *
FROM VBAP
INNER JOIN VBAK
ON VBAK~VBELN = VBAP~VBELN
INNER JOIN ONRVB
ON ONRVB~VBELN = VBAP~VBELN AND ONRVB~POSNR = VBAP~POSNR
INNER JOIN JCDS
ON JCDS~OBJNR = ONRVB~OBJNR
AND JCDS~STAT = 'E0004'
AND JCDS~CHIND = 'I'
INNER JOIN VBEP
ON VBEP~VBELN = VBAP~VBELN AND VBEP~POSNR = VBAP~POSNR AND VBEP~ETENR = '0001'
INNER JOIN MARC
ON VBAP~MATNR = MARC~MATNR AND VBAP~WERKS = MARC~WERKS
INNER JOIN MARA
ON VBAP~MATNR = MARA~MATNR
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_001
WHERE VBAK~VBELN IN S_VBELN
AND VBAP~POSNR IN S_POSNR
AND VBAK~VKORG IN S_VKORG
AND VBAK~VTWEG IN S_VTWEG
AND VBAK~SPART IN S_SPART
AND VBAK~VKBUR IN S_VKBUR
AND VBAK~VKGRP IN S_VKGRP
AND VBAK~KUNNR IN S_KUNNR
AND VBAK~ERDAT IN S_ERDAT
AND VBAK~VDATU IN S_VDATU
AND VBEP~EDATU IN S_EDATU "行项目交期
AND VBAK~AUGRU IN S_AUGRU
AND VBAP~ABGRU IN S_ABGRU
AND MARC~DISPO IN S_DISPO
AND MARC~MATNR IN S_MATNR
* AND JCDS~USNAM IN S_
AND JCDS~UDATE IN S_UDATE
* AND JCDS~UTIME IN S_
AND VBAP~KONDM IN S_KONDM
AND ( VBAK~AUART = 'ZOR' OR VBAK~AUART = 'ZSD'
OR VBAK~AUART = 'ZFD' OR VBAK~AUART = 'ZKB'
OR VBAK~AUART = 'ZTJ' ) .

ELSEIF S_ALL = 'X'.
SELECT *
FROM VBAP
INNER JOIN VBAK
ON VBAK~VBELN = VBAP~VBELN
INNER JOIN ONRVB
ON ONRVB~VBELN = VBAP~VBELN AND ONRVB~POSNR = VBAP~POSNR
INNER JOIN VBEP
ON VBEP~VBELN = VBAP~VBELN AND VBEP~POSNR = VBAP~POSNR AND VBEP~ETENR = '0001'
INNER JOIN MARC
ON VBAP~MATNR = MARC~MATNR AND VBAP~WERKS = MARC~WERKS
INNER JOIN MARA
ON VBAP~MATNR = MARA~MATNR
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_001
WHERE VBAK~VBELN IN S_VBELN
AND VBAP~POSNR IN S_POSNR
AND VBAK~VKORG IN S_VKORG
AND VBAK~VTWEG IN S_VTWEG
AND VBAK~SPART IN S_SPART
AND VBAK~VKBUR IN S_VKBUR
AND VBAK~VKGRP IN S_VKGRP
AND VBAK~KUNNR IN S_KUNNR
AND VBAK~ERDAT IN S_ERDAT
AND VBAK~VDATU IN S_VDATU
AND VBEP~EDATU IN S_EDATU "行项目交期
AND VBAK~AUGRU IN S_AUGRU
AND VBAP~ABGRU IN S_ABGRU
AND MARC~DISPO IN S_DISPO
AND MARC~MATNR IN S_MATNR
AND ( VBAK~AUART = 'ZOR' OR VBAK~AUART = 'ZSD'
OR VBAK~AUART = 'ZFD' OR VBAK~AUART = 'ZKB' OR VBAK~AUART = 'ZTJ'
OR VBAK~AUART = 'ZMJ' )
.
ELSEIF S_AZFD = 'X'.
SELECT *
FROM VBAP
INNER JOIN VBAK
ON VBAK~VBELN = VBAP~VBELN
INNER JOIN ONRVB
ON ONRVB~VBELN = VBAP~VBELN AND ONRVB~POSNR = VBAP~POSNR
INNER JOIN VBEP
ON VBEP~VBELN = VBAP~VBELN AND VBEP~POSNR = VBAP~POSNR AND VBEP~ETENR = '0001'
INNER JOIN MARC
ON VBAP~MATNR = MARC~MATNR AND VBAP~WERKS = MARC~WERKS
INNER JOIN MARA
ON VBAP~MATNR = MARA~MATNR
INTO CORRESPONDING FIELDS OF TABLE IT_PRINT_001
WHERE VBAK~VBELN IN S_VBELN
AND VBAP~POSNR IN S_POSNR
AND VBAK~VKORG IN S_VKORG
AND VBAK~VTWEG IN S_VTWEG
AND VBAK~SPART IN S_SPART
AND VBAK~VKBUR IN S_VKBUR
AND VBAK~VKGRP IN S_VKGRP
AND VBAK~KUNNR IN S_KUNNR
AND VBAK~ERDAT IN S_ERDAT
AND VBAK~VDATU IN S_VDATU
AND VBEP~EDATU IN S_EDATU "行项目交期
AND VBAK~AUGRU IN S_AUGRU
AND VBAP~ABGRU IN S_ABGRU
AND MARC~DISPO IN S_DISPO
AND MARC~MATNR IN S_MATNR
AND ( VBAK~AUART = 'ZFD' OR VBAK~AUART = 'ZMJ' ) .

ENDIF.
ENDIF.

DATA: ZSTLTY LIKE STKO-STLTY,
ZSTLNR LIKE STKO-STLNR,
ZSTLAL LIKE STKO-STLAL,
ZSTKOZ LIKE STKO-STKOZ.
LOOP AT IT_PRINT_001.
SELECT
STKO~STLTY STKO~STLNR STKO~STLAL MAX( STKO~STKOZ )
FROM MAST
INNER JOIN STKO
ON MAST~STLNR = STKO~STLNR
AND MAST~STLAL = STKO~STLAL
INTO (ZSTLTY,ZSTLNR,ZSTLAL,ZSTKOZ)
WHERE MAST~MATNR = IT_PRINT_001-MATNR
AND MAST~WERKS = IT_PRINT_001-WERKS
AND STKO~STLTY = 'M'
AND MAST~STLAN = '1'
GROUP BY
STKO~STLTY STKO~STLNR STKO~STLAL.

ENDSELECT.

SELECT
SINGLE STKO~STLST
FROM STKO
INTO IT_PRINT_001-STLST
WHERE STKO~STLTY = ZSTLTY
AND STKO~STLNR = ZSTLNR
AND STKO~STLAL = ZSTLAL
AND STKO~STKOZ = ZSTKOZ
AND STKO~STLST IN S_STLST.

SELECT SINGLE * FROM JEST INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR2
AND STAT = 'E0004'.

IF SY-SUBRC = 0 .
DELETE IT_PRINT_001.
ELSE.
IF EPLAS = ''."ZAR订单类型不进入判断
SELECT SINGLE * FROM JEST INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR
AND STAT = 'E0001'.
IF SY-SUBRC = 0.
IT_PRINT_001-E1 = 'X'.
IF IT_PRINT_001-STLST IN S_STLST.
IF IT_PRINT_001-OBJNR <> ''.
IT_PRINT_001-OBJNR1 = IT_PRINT_001-OBJNR.
REPLACE 'VB0' WITH '0' INTO IT_PRINT_001-OBJNR1.

CONCATENATE IT_PRINT_001-OBJNR+0(12) '000000' INTO IT_PRINT_001-OBJNR2.
ELSE.
CONCATENATE IT_PRINT_001-VBELN IT_PRINT_001-POSNR INTO IT_PRINT_001-OBJNR1.
ENDIF.
MODIFY IT_PRINT_001.
CLEAR IT_PRINT_001.
ELSE.
DELETE IT_PRINT_001.
ENDIF.
ELSE.
DELETE IT_PRINT_001.
ENDIF.
ENDIF.
ENDIF.
CLEAR IT_PRINT_001.
CLEAR:ZSTLTY,ZSTLNR,ZSTLAL,ZSTKOZ.
ENDLOOP.
* LOOP AT IT_PRINT_001. "YLT 20090718优化程序将下面的LOOP与上面合并
**YILT 080707 益周ZAR的单出不来的调整
** IF IT_PRINT_001-AUART = 'ZAR' AND IT_PRINT_001-WERKS = '2000'.
** ELSE.
* SELECT SINGLE * FROM JEST INTO JEST
* WHERE OBJNR = IT_PRINT_001-OBJNR2
* AND STAT = 'E0004'.
* IF SY-SUBRC = 0.
* DELETE IT_PRINT_001.
* ENDIF.
** ENDIF.
* ENDLOOP.
* IF EPLAS = ''."ZAR订单类型不进入判断
* LOOP AT IT_PRINT_001 .
* SELECT SINGLE * FROM JEST INTO JEST
* WHERE OBJNR = IT_PRINT_001-OBJNR
* AND STAT = 'E0001'.
* IF SY-SUBRC = 0.
* IT_PRINT_001-E1 = 'X'.
* MODIFY IT_PRINT_001.
* CLEAR IT_PRINT_001.
* ELSE.
* DELETE IT_PRINT_001.
* ENDIF.
* ENDLOOP.
* ENDIF.
LOOP AT IT_PRINT_001.
*送达方编号
SELECT SINGLE KUNNR FROM VBPA INTO IT_PRINT_001-ZKUNNR
WHERE VBELN = IT_PRINT_001-VBELN
AND PARVW = 'WE'.
*计算单价
IF IT_PRINT_001-KWMENG > 0.
IT_PRINT_001-NETWR_D = IT_PRINT_001-NETWR / IT_PRINT_001-KWMENG.
ENDIF.
*取评审文本
*IF IT_PRINT_001-AUART = 'ZFD' AND IT_PRINT_001-ERDAT > '20081202'.
IF IT_PRINT_001-AUART = 'ZFD' AND IT_PRINT_001-ERDAT > '20081201' AND IT_PRINT_001-VBELN <> '0000043345'.
PERFORM F_SUB_GET_TEXT
USING IT_PRINT_001-OBJNR1 '0006'
CHANGING IT_PRINT_001-ET1. "取文本数据

SELECT SINGLE * FROM JEST INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR
AND STAT = 'E0002'.
IF SY-SUBRC = 0.
IT_PRINT_001-E5 = 'X'.
ENDIF.
PERFORM F_SUB_GET_TEXT
USING IT_PRINT_001-OBJNR1 '0001'
CHANGING IT_PRINT_001-ET5. "取文本数据
SELECT SINGLE INACT FROM JEST INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR
AND STAT = 'E0003'.
IF SY-SUBRC = 0.
IT_PRINT_001-E2 = 'X'.
ENDIF.
PERFORM F_SUB_GET_TEXT
USING IT_PRINT_001-OBJNR1 '0007'
CHANGING IT_PRINT_001-ET2. "取文本数据

SELECT SINGLE INACT FROM JEST INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR
AND STAT = 'E0004'.
IF SY-SUBRC = 0.
IT_PRINT_001-E3 = 'X'.
ENDIF.
PERFORM F_SUB_GET_TEXT
USING IT_PRINT_001-OBJNR1 '0008'
CHANGING IT_PRINT_001-ET3. "取文本数据

SELECT SINGLE INACT FROM JEST INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR
AND STAT = 'E0005'.
IF SY-SUBRC = 0.
IT_PRINT_001-E4 = 'X'.
ENDIF.
PERFORM F_SUB_GET_TEXT
USING IT_PRINT_001-OBJNR1 '0009'
CHANGING IT_PRINT_001-ET4 . "取文本数据
ELSEIF IT_PRINT_001-AUART = 'ZMJ'. "收费样品订单只有GCM主管评审
PERFORM F_SUB_GET_TEXT
USING IT_PRINT_001-OBJNR1 '0006'
CHANGING IT_PRINT_001-ET1. "取文本数据

SELECT SINGLE * FROM JEST INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR
AND STAT = 'E0002'.
IF SY-SUBRC = 0.
IT_PRINT_001-E5 = 'X'.
ENDIF.
PERFORM F_SUB_GET_TEXT
USING IT_PRINT_001-OBJNR1 '0001'
CHANGING IT_PRINT_001-ET5. "取文本数据
SELECT SINGLE INACT FROM JEST INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR
AND STAT = 'E0003'.
ELSE.

PERFORM F_SUB_GET_TEXT
USING IT_PRINT_001-OBJNR1 '0006'
CHANGING IT_PRINT_001-ET1. "取文本数据

SELECT SINGLE * FROM JEST INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR
AND STAT = 'E0002'.
IF SY-SUBRC = 0.
IT_PRINT_001-E2 = 'X'.
ENDIF.
PERFORM F_SUB_GET_TEXT
USING IT_PRINT_001-OBJNR1 '0007'
CHANGING IT_PRINT_001-ET2. "取文本数据
SELECT SINGLE INACT FROM JEST INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR
AND STAT = 'E0003'.
IF SY-SUBRC = 0.
IT_PRINT_001-E3 = 'X'.
ENDIF.
PERFORM F_SUB_GET_TEXT
USING IT_PRINT_001-OBJNR1 '0008'
CHANGING IT_PRINT_001-ET3. "取文本数据

SELECT SINGLE INACT FROM JEST INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR
AND STAT = 'E0004'.
IF SY-SUBRC = 0.
IT_PRINT_001-E4 = 'X'.
ENDIF.
PERFORM F_SUB_GET_TEXT
USING IT_PRINT_001-OBJNR1 '0009'
CHANGING IT_PRINT_001-ET4. "取文本数据

ENDIF.

*
*物料主数据的物料定价组---BOM和CQS用
SELECT SINGLE T178T~VTEXT T178T~KONDM AS MMKON
FROM MVKE JOIN T178T ON T178T~KONDM = MVKE~KONDM AND T178T~SPRAS = '1'
INTO (IT_PRINT_001-VTEXT,IT_PRINT_001-MMKON)
WHERE MATNR = IT_PRINT_001-MATNR
AND VKORG = IT_PRINT_001-VKORG
AND VTWEG = IT_PRINT_001-VTWEG
.
*获取其它数据
*如果BOM状态为4/5,字体颜色用红色标识 hxh 090714
IF IT_PRINT_001-STLST = '4' OR IT_PRINT_001-STLST = '5'.
CELLCOLOR-FIELDNAME = 'E2'. "BOM评审字段
CELLCOLOR-COLOR-COL = 6.
CELLCOLOR-COLOR-INT = '1'.
CELLCOLOR-COLOR-INV = '0'.
APPEND CELLCOLOR.

CELLCOLOR-FIELDNAME = 'E3'. "CQS评审字段
CELLCOLOR-COLOR-COL = 6.
CELLCOLOR-COLOR-INT = '1'.
CELLCOLOR-COLOR-INV = '0'.
APPEND CELLCOLOR.

CELLCOLOR-FIELDNAME = 'E4'. "生产评审字段
CELLCOLOR-COLOR-COL = 6.
CELLCOLOR-COLOR-INT = '1'.
CELLCOLOR-COLOR-INV = '0'.
APPEND CELLCOLOR.
IT_PRINT_001-COLOR1[] = CELLCOLOR[].
ENDIF.

*如果是PPAP订单--订单原因201-203的用黄色标识 ELIN 20090630
IF IT_PRINT_001-AUGRU = '201' OR IT_PRINT_001-AUGRU = '202' OR IT_PRINT_001-AUGRU = '203' .
IT_PRINT_001-COLOR = 'C310'.
ENDIF.
*销售订单的物料定价组---生管用
SELECT SINGLE VTEXT FROM T178T
INTO IT_PRINT_001-SOVTE
WHERE KONDM = IT_PRINT_001-KONDM
AND SPRAS = '1'.

SELECT SINGLE MAKTX FROM MAKT
INTO IT_PRINT_001-MAKTX
WHERE MATNR = IT_PRINT_001-MATNR
AND SPRAS = '1'.

SELECT SINGLE SPART FROM MARA
INTO IT_PRINT_001-SPART
WHERE MATNR = IT_PRINT_001-MATNR.

SELECT SINGLE KUNNR VSNMR_V FROM VBAK
INTO CORRESPONDING FIELDS OF IT_PRINT_001
WHERE VBELN = IT_PRINT_001-VBELN.

SELECT SINGLE NAME1 FROM KNA1
INTO IT_PRINT_001-NAME1
WHERE KUNNR = IT_PRINT_001-KUNNR.

SELECT SINGLE NAME1 FROM KNA1
INTO IT_PRINT_001-NAME2
WHERE KUNNR = IT_PRINT_001-ZKUNNR.

SELECT SINGLE VTEXT FROM TSPAT
INTO IT_PRINT_001-VTEXT1
WHERE SPART = IT_PRINT_001-SPART
AND SPRAS = '1'.

*SO号
SELECT SINGLE VBKD~BSTKD_E
INTO IT_PRINT_001-BSTKD_E
FROM VBKD
WHERE VBKD~POSNR = IT_PRINT_001-POSNR
AND VBKD~VBELN = IT_PRINT_001-VBELN
.
IF SY-SUBRC <> 0.
SELECT SINGLE VBKD~BSTKD_E
INTO IT_PRINT_001-BSTKD_E
FROM VBKD
WHERE VBKD~POSNR = '0'
AND VBKD~VBELN = IT_PRINT_001-VBELN.
ENDIF.

*取销售人员
*销售人员改从订单版本栏位取值 2009-03-18 YLT
IF IT_PRINT_001-VSNMR_V = ''.
SELECT SINGLE SNAME
FROM VBPA
JOIN PA0001 ON PA0001~PERNR = VBPA~PERNR
INTO IT_PRINT_001-SNAME
WHERE VBPA~VBELN = IT_PRINT_001-VBELN AND VBPA~PARVW = 'AF'.
ELSE.
IT_PRINT_001-SNAME = IT_PRINT_001-VSNMR_V.
ENDIF.

IF IT_PRINT_001-AUART = 'ZFD'.
* IF IT_PRINT_001-ERDAT > '20081202'.
IF IT_PRINT_001-ERDAT > '20081201' AND IT_PRINT_001-VBELN <> '0000043345'.
SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM0,IT_PRINT_001-UDATE0,IT_PRINT_001-UTIME0)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0001'
AND JCDS~CHIND = 'I'.

SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM4,IT_PRINT_001-UDATE4,IT_PRINT_001-UTIME4)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0002'
AND JCDS~CHIND = 'I'.

SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM1,IT_PRINT_001-UDATE1,IT_PRINT_001-UTIME1)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0003'
AND JCDS~CHIND = 'I'.

SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM2,IT_PRINT_001-UDATE2,IT_PRINT_001-UTIME2)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0004'
AND JCDS~CHIND = 'I'.

"CQS评审后的电脑名显示
SELECT SINGLE CQSNAME FROM ZJCDS INTO IT_PRINT_001-HOST2
WHERE ZJCDS~VBELN = IT_PRINT_001-VBELN
AND ZJCDS~POSNR = IT_PRINT_001-POSNR.

SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM3,IT_PRINT_001-UDATE3,IT_PRINT_001-UTIME3)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0005'
AND JCDS~CHIND = 'I'.
ELSE.
*评审时间
SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM0,IT_PRINT_001-UDATE0,IT_PRINT_001-UTIME0)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0001'
AND JCDS~CHIND = 'I'.

SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM1,IT_PRINT_001-UDATE1,IT_PRINT_001-UTIME1)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0002'
AND JCDS~CHIND = 'I'.

SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM2,IT_PRINT_001-UDATE2,IT_PRINT_001-UTIME2)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0003'
AND JCDS~CHIND = 'I'.

"CQS评审后的电脑名显示
SELECT SINGLE CQSNAME FROM ZJCDS INTO IT_PRINT_001-HOST2
WHERE ZJCDS~VBELN = IT_PRINT_001-VBELN
AND ZJCDS~POSNR = IT_PRINT_001-POSNR.
IF IT_PRINT_001-HOST2 = ''.
IT_PRINT_001-HOST2 = IT_PRINT_001-USNAM2.
ENDIF.

SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM3,IT_PRINT_001-UDATE3,IT_PRINT_001-UTIME3)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0004'
AND JCDS~CHIND = 'I'.
ENDIF. "以上执行ZFD类型订单的评审记录

ELSEIF IT_PRINT_001-AUART = 'ZMJ'.

SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM0,IT_PRINT_001-UDATE0,IT_PRINT_001-UTIME0)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0001'
AND JCDS~CHIND = 'I'.

SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM4,IT_PRINT_001-UDATE4,IT_PRINT_001-UTIME4)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0002'
AND JCDS~CHIND = 'I'.
ELSE.
*评审时间
SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM0,IT_PRINT_001-UDATE0,IT_PRINT_001-UTIME0)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0001'
AND JCDS~CHIND = 'I'.

SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM1,IT_PRINT_001-UDATE1,IT_PRINT_001-UTIME1)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0002'
AND JCDS~CHIND = 'I'.

SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM2,IT_PRINT_001-UDATE2,IT_PRINT_001-UTIME2)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0003'
AND JCDS~CHIND = 'I'.

"CQS评审后的电脑名显示
SELECT SINGLE CQSNAME FROM ZJCDS INTO IT_PRINT_001-HOST2
WHERE ZJCDS~VBELN = IT_PRINT_001-VBELN
AND ZJCDS~POSNR = IT_PRINT_001-POSNR.
IF IT_PRINT_001-HOST2 = ''.
IT_PRINT_001-HOST2 = IT_PRINT_001-USNAM2.
ENDIF.

SELECT SINGLE USNAM UDATE UTIME FROM JCDS
INTO (IT_PRINT_001-USNAM3,IT_PRINT_001-UDATE3,IT_PRINT_001-UTIME3)
WHERE JCDS~OBJNR = IT_PRINT_001-OBJNR
AND JCDS~STAT = 'E0004'
AND JCDS~CHIND = 'I'.

ENDIF.

**YILT 增加新/老产品更正的功能
*IF IT_PRINT_001-KONDM = '02'.
* SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE T_TEMP
* WHERE KONDM = '02'
* AND MATNR = IT_PRINT_001-MATNR
* AND VBELN = IT_PRINT_001-VBELN
* .
* SORT T_TEMP BY MATNR VBELN POSNR.
* LOOP AT T_TEMP.
* IF SY-TABIX <> 1 .
* T_TEMP-KONDM = '01'.
* MODIFY VBAP FROM T_TEMP.
* CLEAR T_TEMP.
* ENDIF.
* ENDLOOP.
*ENDIF.

MODIFY IT_PRINT_001.
CLEAR IT_PRINT_001.
ENDLOOP.
ENDFORM. " F_READ_DATA
************************************************************************
*普通报表格式的打印
FORM F_PRINT_REPORT.
*绘制表头
WRITE: AT 50 'XXX表' ,/.
ENDFORM. " F_PRINT_REPORT
************************************************************************
*FORM报表格式的打印
FORM F_PRINT_FORM.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
DEVICE = 'PRINTER'
FORM = '' "NEED MODIFY
DIALOG = 'X'
LANGUAGE = SY-LANGU.
LOOP AT IT_PRINT_001.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = '' "NEED MODIFY
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'.
CLEAR IT_PRINT_001.
ENDLOOP.
CALL FUNCTION 'CLOSE_FORM'
EXCEPTIONS
UNOPENED = 1
OTHERS = 2.
ENDFORM. " F_PRINT_FORM
************************************************************************
*ALV报表格式的打印
FORM F_PRINT_ALV.

REFRESH G_ALV_LISTHEADER[].
PERFORM F_ALV_MODIFY_LISTHEADER .
REFRESH G_ALV_FIELDCAT.
PERFORM F_ALV_BUILD_FIELDCAT.
PERFORM F_ALV_BUILD_EVENTCAT.
PERFORM F_ALV_DISPLAY.
* STOP.

ENDFORM. " F_PRINT_ALV
************************************************************************
*设置ALV报表输出时的抬头信息
FORM F_ALV_MODIFY_LISTHEADER .
DATA : L_ALV_LISTHEADER_LINE LIKE LINE OF G_ALV_LISTHEADER.
L_ALV_LISTHEADER_LINE-TYP = 'S'.
L_ALV_LISTHEADER_LINE-KEY = 'PPAP订单为黄色背景色'.
L_ALV_LISTHEADER_LINE-INFO = 'BOM不完整(包装或产品未输出),BOM/CQS/生产评审为红色背景色'.
APPEND L_ALV_LISTHEADER_LINE TO G_ALV_LISTHEADER.
L_ALV_LISTHEADER_LINE-TYP = 'S'.
L_ALV_LISTHEADER_LINE-KEY = ''.
L_ALV_LISTHEADER_LINE-INFO = '双击功能:物料->MM03 累计提前期限 -> ZT07'.
APPEND L_ALV_LISTHEADER_LINE TO G_ALV_LISTHEADER.
ENDFORM. " F_ALV_MODIFY_LISTHEADER
************************************************************************
*设置ALV报表输出时的字段 NEED MODIFY
FORM F_ALV_BUILD_FIELDCAT .
DATA : COL_POS TYPE I VALUE 0.
G_ALV_LAYOUT-GET_SELINFOS = 'X'.
G_ALV_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
G_ALV_LAYOUT-DETAIL_POPUP = 'X'.
* G_ALV_LAYOUT-EDIT = 'X'.
G_ALV_LAYOUT-BOX_FIELDNAME = 'FLAG'.
G_ALV_LAYOUT-NO_KEYFIX = 'X'.
G_ALV_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

"增加色彩行
G_ALV_LAYOUT-COLTAB_FIELDNAME = 'COLOR1'.
G_ALV_LAYOUT-INFO_FIELDNAME = 'COLOR'.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'BSTKD_E'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'BSTKD_E'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'SO 号'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'SO 号'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'SO 号'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'VBELN'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'VBELN'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '订单编号'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '订单编号'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '订单编号'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAP'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'POSNR'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'POSNR'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '项目号->ZP49'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '项目号->ZP49'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '项目号->ZP49'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAP'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'VKAUS'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'VKAUS'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '项目用途'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '项目用途'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '项目用途'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'ABRVW'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'ABRVW'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-DDICTXT(1) = 'L'.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '抬头用途'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '抬头用途'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '抬头用途'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'AUART'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'AUART'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-DDICTXT(1) = 'L'.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '订单类型'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '订单类型'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '订单类型'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAP'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'ABGRU'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'ABGRU'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-DDICTXT(1) = 'L'.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '拒绝原因'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '拒绝原因'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '拒绝原因'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'ERDAT'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'ERDAT'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '下单日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '下单日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '下单日期'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'BSTNK'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'BSTNK'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '客户采购单号'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '客户采购单号'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '客户采购单号'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'KUNNR'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'KUNNR'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '客户编号'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '客户编号'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '客户编号'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'KNA1'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'NAME1'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'NAME1'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '客户名称'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '客户名称'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '客户名称'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'KUNNR'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'ZKUNNR'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '送达方编号'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '送达方编号'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '送达方编号'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'KNA1'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'NAME1'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'NAME2'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '送达方名称'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '送达方名称'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '送达方名称'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'VKORG'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'VKORG'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '销售机构'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '销售机构'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '销售机构'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'VTWEG'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'VTWEG'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '分销渠道'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '分销渠道'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '分销渠道'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'VKBUR'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'VKBUR'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '销售办事处'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '销售办事处'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '销售办事处'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'VKGRP'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'VKGRP'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '销售组'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '销售组'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '销售组'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'VTEXT1'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-DDICTXT(1) = 'L'.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '生产厂别'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '生产厂别'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '生产厂别'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'VTEXT'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'VTEXT'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '新/老产品'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '新/老产品'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '新/老产品'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'T178T'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'VTEXT'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'SOVTE'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'SO新/老产品-生管'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'SO新/老产品-生管'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'SO新/老产品-生管'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'VDATU'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'VDATU'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '请求交货日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '请求交货日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '请求交货日期'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBEP'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'EDATU'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'EDATU'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '行项目交期'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '行项目交期'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '行项目交期'.
* G_ALV_FIELDCAT_LINE-REPTEXT_DDIC = '内部交期'. "交货日期
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'STKO'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'STLST'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'STLST'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'BOM状态'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'BOM状态'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'BOM状态'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'MARA'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'MATNR'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'MATNR'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '物料编号'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '物料编号'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '物料编号'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'MARA'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'BISMT'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'BISMT'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '旧物料'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '旧物料'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '旧物料'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'MAKT'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'MAKTX'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'MAKTX'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '物料描述'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '物料描述'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '物料描述'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAP'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'KDMAT'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'KDMAT'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '客户物料编号'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '客户物料编号'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '客户物料编号'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAP'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'KWMENG'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'KWMENG'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_L = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '数量'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'JEST'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'INACT'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'E1'.
G_ALV_FIELDCAT_LINE-CHECKBOX = 'X'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'COS评审'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'COS评审'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'COS评审'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'KTEXT'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'ET1'.
G_ALV_FIELDCAT_LINE-CHECKBOX = ''.
G_ALV_FIELDCAT_LINE-KEY = ''.
* 权限控制,S43A权限组能修改“COS评审意见”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43A'.
IF SY-SUBRC = 0 .
G_ALV_FIELDCAT_LINE-EDIT = 'X'.
ENDIF.
G_ALV_FIELDCAT_LINE-DDICTXT(1) = 'L'.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'COS评审备注'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'COS评审备注'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'COS评审备注'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'USNAM0'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-EDIT = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'COS评审人'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'COS评审人'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'COS评审人'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'PA0001'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'SNAME'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'SNAME'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-EDIT = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '销售人员'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '销售人员'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '销售人员'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'UDATE0'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'COS评审日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'COS评审日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'COS评审日期'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'UTIME0'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'COS评审时间'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'COS评审时间'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'COS评审时间'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS .
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'JEST'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'INACT'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'E5'.
G_ALV_FIELDCAT_LINE-CHECKBOX = 'X'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'GCM评审'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'GCM评审'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'GCM评审'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS .
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'KTEXT'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'ET5'.
G_ALV_FIELDCAT_LINE-CHECKBOX = ''.
G_ALV_FIELDCAT_LINE-KEY = ''.
* 权限控制,AACC权限组能修改“GCM评审意见”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43G'.
IF SY-SUBRC = 0 .
G_ALV_FIELDCAT_LINE-EDIT = 'X'.
ENDIF.
G_ALV_FIELDCAT_LINE-DDICTXT(1) = 'L'.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'GCM评审备注'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'GCM评审备注'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'GCM评审备注'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'USNAM4'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-EDIT = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'GCM评审人'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'GCM评审人'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'GCM评审人'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'UDATE4'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'GCM评审日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'GCM评审日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'GCM评审日期'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'UTIME4'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'GCM评审时间'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'GCM评审时间'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'GCM评审时间'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS .
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'JEST'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'INACT'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'E2'.
G_ALV_FIELDCAT_LINE-CHECKBOX = 'X'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'BOM评审'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'BOM评审'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'BOM评审'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS .
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'KTEXT'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'ET2'.
G_ALV_FIELDCAT_LINE-CHECKBOX = ''.
G_ALV_FIELDCAT_LINE-KEY = ''.
* 权限控制,AACC权限组能修改“BOM评审意见”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43B'.
IF SY-SUBRC = 0 .
G_ALV_FIELDCAT_LINE-EDIT = 'X'.
ENDIF.
G_ALV_FIELDCAT_LINE-DDICTXT(1) = 'L'.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'BOM评审备注'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'BOM评审备注'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'BOM评审备注'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'USNAM1'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-EDIT = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'BOM评审人'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'BOM评审人'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'BOM评审人'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'UDATE1'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'BOM评审日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'BOM评审日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'BOM评审日期'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'UTIME1'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'BOM评审时间'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'BOM评审时间'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'BOM评审时间'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'E3'.
G_ALV_FIELDCAT_LINE-CHECKBOX = 'X'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'CQS评审'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'CQS评审'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'CQS评审'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'KTEXT'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'ET3'.
G_ALV_FIELDCAT_LINE-CHECKBOX = ''.
G_ALV_FIELDCAT_LINE-KEY = ''.
* 权限控制,S43C权限组能修改“CQS评审意见”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43C'.
IF SY-SUBRC = 0 .
G_ALV_FIELDCAT_LINE-EDIT = 'X'.
ENDIF.
G_ALV_FIELDCAT_LINE-DDICTXT(1) = 'L'.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'CQS评审备注'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'CQS评审备注'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'CQS评审备注'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
* G_ALV_FIELDCAT_LINE-FIELDNAME = 'USNAM2'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'HOST2'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-EDIT = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'CQS评审人'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'CQS评审人'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'CQS评审人'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'UDATE2'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'CQS评审日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'CQS评审日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'CQS评审日期'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'UTIME2'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'CQS评审时间'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'CQS评审时间'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'CQS评审时间'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'E4'.
G_ALV_FIELDCAT_LINE-CHECKBOX = 'X'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '生产评审'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '生产评审'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '生产评审'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'TLINE'."VBAK
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'TDLINE'."KTEXT
G_ALV_FIELDCAT_LINE-FIELDNAME = 'ET4'.
G_ALV_FIELDCAT_LINE-CHECKBOX = ''.
G_ALV_FIELDCAT_LINE-KEY = ''.
* 权限控制,S43D权限组能修改“生产评审意见”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43D'.
IF SY-SUBRC = 0 .
G_ALV_FIELDCAT_LINE-EDIT = 'X'.
ENDIF.
G_ALV_FIELDCAT_LINE-DDICTXT(1) = 'L'.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '生产评审备注'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '生产评审备注'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '生产评审备注'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'USNAM3'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-EDIT = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '生产评审人'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '生产评审人'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '生产评审人'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'UDATE3'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '生产评审日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '生产评审日期'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '生产评审日期'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = ''.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = ''.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'UTIME3'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '生产评审时间'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '生产评审时间'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '生产评审时间'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'MARC'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'STRGR'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'STRGR'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '策略组'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '策略组'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '策略组'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAP'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'SERNR'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'SERNR'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = 'BOM展开号'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = 'BOM展开号'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = 'BOM展开号'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'AUGRU'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'AUGRU'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '订单原因'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '订单原因'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '订单原因'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

* 权限控制,AAAA权限组能显示“标准成本”相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'AAAA'.
IF SY-SUBRC = 0 .
ENDIF.
* 权限控制,BBBB权限组能显示“采购价格”相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'BBBB'.
IF SY-SUBRC = 0 .
ENDIF.
* 权限控制,CCCC权限组能显示“销售价格”相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'CCCC'.
IF SY-SUBRC = 0 .
ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'NETWR'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'NETWR_D'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '单价'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '单价'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '单价'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAK'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'NETWR'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'NETWR'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '总价'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '总价'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '总价'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.

ADD 1 TO COL_POS.
G_ALV_FIELDCAT_LINE-REF_TABNAME = 'VBAP'.
G_ALV_FIELDCAT_LINE-TABNAME = 'IT_PRINT_001'.
G_ALV_FIELDCAT_LINE-REF_FIELDNAME = 'WAERK'.
G_ALV_FIELDCAT_LINE-FIELDNAME = 'WAERK'.
G_ALV_FIELDCAT_LINE-KEY = ''.
G_ALV_FIELDCAT_LINE-SELTEXT_S = '货币'.
G_ALV_FIELDCAT_LINE-SELTEXT_L = '货币'.
G_ALV_FIELDCAT_LINE-SELTEXT_M = '货币'.
G_ALV_FIELDCAT_LINE-COL_POS = COL_POS.
APPEND G_ALV_FIELDCAT_LINE TO G_ALV_FIELDCAT.
ENDIF.
* 权限控制,AABB权限组能显示“标准成本和采购价格”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'AABB'.
IF SY-SUBRC = 0 .
ENDIF.
* 权限控制,AACC权限组能显示“标准成本和销售价格”的相关字段,如毛利润等
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'AACC'.
IF SY-SUBRC = 0 .

ENDIF.
ENDFORM. " F_ALV_BUILD_FIELDCAT
************************************************************************
*改变ALV的TOP_OF_PAGE事件处理过程
FORM F_ALV_BUILD_EVENTCAT .
DATA : LS_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = G_ALV_EVENT.
READ TABLE G_ALV_EVENT WITH KEY NAME =
SLIS_EV_TOP_OF_PAGE INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE G_ALV_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO G_ALV_EVENT.
ENDIF.

* READ TABLE G_ALV_EVENT WITH KEY NAME =
* SLIS_EV_END_OF_LIST INTO LS_EVENT.
* IF SY-SUBRC = 0.
* MOVE G_ALV_FORMNAME_END_OF_LIST TO LS_EVENT-FORM.
* APPEND LS_EVENT TO G_ALV_EVENT.
* ENDIF.
ENDFORM. " F_ALV_BUILD_EVENTCAT
************************************************************************
*调用ALV控件的输出程序
FORM F_ALV_DISPLAY .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'ZR_SD_043'
I_CALLBACK_USER_COMMAND = 'F_ALV_USER_COMMAND'
I_CALLBACK_PF_STATUS_SET = 'MENU_SET'
IS_LAYOUT = G_ALV_LAYOUT "输出格式
IT_FIELDCAT = G_ALV_FIELDCAT
I_SAVE = 'A'
* I_STRUCTURE_NAME = 'CAUFVD'
IT_EVENTS = G_ALV_EVENT
I_GRID_TITLE = '' "NEED MODIFY
TABLES
T_OUTTAB = IT_PRINT_001
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.

ENDFORM. " F_ALV_DISPLAY
***********************************************************************
*设置GUI菜单栏
FORM MENU_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'ZS43'.
ENDFORM. "menu_set
************************************************************************
*ALV控件双击事件的接口
FORM F_ALV_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
* DATA L_TEMP LIKE LINE OF IT_PRINT_001.
DATA S_TEMP(100) TYPE C.
DATA S_FN(10) TYPE C.
DATA ZMA LIKE IT_PRINT_001-MATNR.

G_SELECTED_FIELD_VALUE = RS_SELFIELD-VALUE.
G_TABINDEX = RS_SELFIELD-TABINDEX.
READ TABLE IT_PRINT_001 INTO L_TEMP INDEX G_TABINDEX.
CASE R_UCOMM.
WHEN '&IC1' .
IF RS_SELFIELD-FIELDNAME = 'POSNR'.
PERFORM F_BDC_EXECUTE_003.
ELSEIF RS_SELFIELD-FIELDNAME = 'ET1'. "MODIFY
IF L_TEMP-ET1 <> ''.
REFRESH IT_LTEXT.
PERFORM F_SUB_GET_TEXT
USING L_TEMP-VBELN '0006'
CHANGING IT_PRINT_001-ET1.

CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY' "调用显示框函数死循环,运行不出来
EXPORTING
ENDPOS_COL = '80'
ENDPOS_ROW = '10'
STARTPOS_COL = '3'
STARTPOS_ROW = '3'
TITLETEXT = 'COS评审意见明细'
TABLES
VALUETAB = IT_LTEXT
EXCEPTIONS
BREAK_OFF = 1.
ENDIF.
ENDIF.

CLEAR: S_TEMP,S_FN.

AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD L_TEMP-VKORG.

IF SY-SUBRC <> 0.
MESSAGE E015.
ELSE.
IF RS_SELFIELD-FIELDNAME = 'E2 '.
IF RS_SELFIELD-VALUE = '1'.
MESSAGE E017.
ELSEIF L_TEMP-E1 = 'X' .
S_FN = 'E2 '.
ELSE.
MESSAGE E011.
ENDIF.
ELSEIF RS_SELFIELD-FIELDNAME = 'E3 '.
IF RS_SELFIELD-VALUE = '1'.
MESSAGE E017.
ELSEIF L_TEMP-E2 = 'X'.
S_FN = 'E3 '.
ELSEIF L_TEMP-E2 = '' AND L_TEMP-MMKON = '01' .
S_FN = 'E3B '.
ELSE.
MESSAGE E011.
ENDIF.
ELSEIF RS_SELFIELD-FIELDNAME = 'E4 '.
IF RS_SELFIELD-VALUE = '1'.
MESSAGE E017.
ELSEIF L_TEMP-E3 = 'X'.
S_FN = 'E4 '.
ELSE.
MESSAGE E011.
ENDIF.
ENDIF.

IF S_FN <> ''.

S_TEMP = L_TEMP-POSNR.
CALL FUNCTION 'ZF_CALL_TECODE'
EXPORTING
P_TCODE = 'VA02'
P_EXTRA1 = L_TEMP-VBELN
P_EXTRA2 = S_FN
P_EXTRA3 = S_TEMP.

IF SY-SUBRC = 0 AND S_FN = 'E3' AND L_TEMP-MMKON <> '01'.
* 权限控制,S43C权限组能修改“CQS评审”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43C'.
IF SY-SUBRC = 0 .
PERFORM F_BDC_EXECUTE_004.
ENDIF.
ENDIF.
"CQS评审加电脑名
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43C'.
IF SY-SUBRC = 0 .
DATA USERN TYPE STRING.
CALL FUNCTION 'Z_RETURN_USERNAME'
IMPORTING
USERNAME = USERN.
TRANSLATE USERN TO UPPER CASE .
SELECT SINGLE ZNAME FROM ZDT02 INTO L_TEMP-HOST2 WHERE ZPC = USERN.

* CALL FUNCTION 'TERMINAL_ID_GET'
* EXPORTING
* USERNAME = SY-UNAME "
* IMPORTING
* TERMINAL = IP_UNAME "IP + HOSTNAME
* EXCEPTIONS
* MULTIPLE_TERMINAL_ID = 1
* NO_TERMINAL_FOUND = 2.
* SPLIT IP_UNAME AT '-' INTO L_TEMP-IPDEC2 L_TEMP-HOST2.
* CONCATENATE SY-UNAME '|' L_TEMP-HOST2 INTO L_TEMP-HOST2.
MOVE L_TEMP-VBELN TO ZJCDS-VBELN.
MOVE L_TEMP-POSNR TO ZJCDS-POSNR.
MOVE L_TEMP-HOST2 TO ZJCDS-CQSNAME.
MODIFY ZJCDS.
ENDIF.
ENDIF.
ENDIF.
CLEAR L_TEMP.
WHEN '&DATA_SAVE'.
LOOP AT IT_PRINT_001.
IF IT_PRINT_001-AUART = 'ZFD'. "把免费订单与其他订单的评审分开
PERFORM F_SUB_SAVE_TEST_001.
PERFORM F_SUB_SAVE_TEST_005.
PERFORM F_SUB_SAVE_TEST_002.
PERFORM F_SUB_SAVE_TEST_003.
PERFORM F_SUB_SAVE_TEST_004.
ELSEIF IT_PRINT_001-AUART = 'ZMJ'.
PERFORM F_SUB_SAVE_TEST_001.
PERFORM F_SUB_SAVE_TEST_005.
ELSE.
PERFORM F_SUB_SAVE_TEST_001.
PERFORM F_SUB_SAVE_TEST_002.
PERFORM F_SUB_SAVE_TEST_003.
PERFORM F_SUB_SAVE_TEST_004.
ENDIF.
ENDLOOP.
WHEN 'PSH'.
SORT IT_PRINT_001 BY FLAG VBELN POSNR."
PERFORM F_BDC_EXECUTE_002.
* 权限控制,S43C权限组能修改“CQS评审”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43C'.
IF SY-SUBRC = 0 .
LOOP AT IT_PRINT_001 WHERE FLAG = 'X' AND MMKON <> '01' AND E3 = '' AND E2 = 'X'.
IF IT_PRINT_001-MATNR <> ZMA AND IT_PRINT_001-VKORG <> '3000'.
L_TEMP = IT_PRINT_001.
PERFORM F_BDC_EXECUTE_004.
ZMA = IT_PRINT_001-MATNR.

ELSEIF IT_PRINT_001-MATNR <> ZMA AND IT_PRINT_001-VKORG = '3000'
* AND ( IT_PRINT_001-MATNR+0(3) = '80R' OR IT_PRINT_001-MATNR+0(3) = '80T' ) AND SY-UNAME = 'WTCQS'."20090609更改权限
AND ( IT_PRINT_001-MATNR+2(1) <> 'A' AND IT_PRINT_001-MATNR+2(1) <> 'B' AND IT_PRINT_001-MATNR+2(1) <> 'C' AND IT_PRINT_001-MATNR+2(1) <> 'Y')
AND SY-UNAME = 'WTCQS'.
L_TEMP = IT_PRINT_001.
PERFORM F_BDC_EXECUTE_004.
ZMA = IT_PRINT_001-MATNR.
ELSEIF IT_PRINT_001-MATNR <> ZMA AND IT_PRINT_001-VKORG = '3000'
AND IT_PRINT_001-MATNR+0(3) <> '80R' AND SY-UNAME <> 'WTCQS'.
L_TEMP = IT_PRINT_001.
PERFORM F_BDC_EXECUTE_004.
ZMA = IT_PRINT_001-MATNR.
ENDIF.
CLEAR:L_TEMP.

CLEAR IT_PRINT_001.
ENDLOOP.
CLEAR:ZMA.

ENDIF.
SET SCREEN 0.
PERFORM F_READ_DATA.
PERFORM F_PRINT_ALV.
* DATA: LR_GRID TYPE REF TO CL_GUI_ALV_GRID.
* CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
* IMPORTING
* E_GRID = LR_GRID.
* CALL METHOD LR_GRID->CHECK_CHANGED_DATA.
* RS_SELFIELD-REFRESH = 'X'. "自动刷新

* PERFORM SUB_PSH. "订单评审BDC执行
WHEN 'REFR'.
SET SCREEN 0.
PERFORM F_READ_DATA.
PERFORM F_PRINT_ALV.
WHEN 'EXIT'.
SET SCREEN 0.
* LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
ENDFORM. "F_ALV_USER_COMMAND
************************************************************************
*调用ALV控件的抬头输出程序
FORM F_ALV_EVENT_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = G_ALV_LISTHEADER.
ENDFORM. "F_ALV_EVENT_TOP_OF_PAGE
************************************************************************
*输出ALV的页脚
FORM F_ALV_EVENT_END_OF_LIST.

ENDFORM. "F_ALV_EVENT_END_OF_LIST
************************************************************************
*弹出文件对话框,确定参数P_FILE
FORM F_FILE_GET.
CLEAR P_FILE.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = P_FILE
DEF_PATH = '/'
MASK = '*.xls,*.xls.'
MODE = 'O'
TITLE = 'XXX数据倒入' "NEED MODIFY
IMPORTING
FILENAME = P_FILE
EXCEPTIONS
INV_WINSYS = 01
NO_BATCH = 02
SELECTION_CANCEL = 03
SELECTION_ERROR = 04.
IF SY-SUBRC EQ 0.
IF P_FILE = '*.xls'.
CLEAR P_FILE.
ENDIF.
ENDIF.
ENDFORM. " F_FILE_GET
************************************************************************
*打开EXCEL文件
FORM F_FILE_OPEN.
CREATE OBJECT EXCEL 'Excel.Application'.
CALL METHOD OF EXCEL 'Workbooks' = WORKBOOK.
CALL METHOD OF WORKBOOK 'Open'
EXPORTING
#1 = P_FILE.

IF SY-SUBRC <> 0 .
MESSAGE W230 WITH P_FILE.
EXIT.
ENDIF.
ENDFORM. " F_FILE_OPEN
************************************************************************
*读取EXCEL表格的数据,充填到内表IT_EXCEL_001中
FORM F_FILE_READ_DATA.
DATA L_ROW TYPE I.
DATA L_H TYPE I.
DATA L_STR(40).

L_H = 2.
DO.
*NEED MODIFY: 可以根据EXCEL表格字段量的不同做相应的扩展。这里只适用字段
*数量不多于5个的情况,如有更多的字段,则必须进行相应的扩展。扩展后内表
*IT_EXCEL_001的字段也要做相应的增加。
CALL METHOD OF EXCEL 'CELLS' = CELL
EXPORTING
#1 = L_H
#2 = 1.
GET PROPERTY OF CELL 'VALUE' = L_STR.
MOVE L_STR TO IT_EXCEL_001-COLUMN_001.

CALL METHOD OF EXCEL 'CELLS' = CELL
EXPORTING
#1 = L_H
#2 = 2.
GET PROPERTY OF CELL 'VALUE' = L_STR.
MOVE L_STR TO IT_EXCEL_001-COLUMN_002.

CALL METHOD OF EXCEL 'CELLS' = CELL
EXPORTING
#1 = L_H
#2 = 3.
GET PROPERTY OF CELL 'VALUE' = L_STR.
MOVE L_STR TO IT_EXCEL_001-COLUMN_003.

CALL METHOD OF EXCEL 'CELLS' = CELL
EXPORTING
#1 = L_H
#2 = 4.
GET PROPERTY OF CELL 'VALUE' = L_STR.
MOVE L_STR TO IT_EXCEL_001-COLUMN_004.

CALL METHOD OF EXCEL 'CELLS' = CELL
EXPORTING
#1 = L_H
#2 = 5.
GET PROPERTY OF CELL 'VALUE' = L_STR.
MOVE L_STR TO IT_EXCEL_001-COLUMN_005.

IF IT_EXCEL_001-COLUMN_001 <= ''.
EXIT.
ENDIF.

APPEND IT_EXCEL_001.
CLEAR IT_EXCEL_001.
L_H = L_H + 1.
ENDDO.
ENDFORM. " F_FILE_READ_DATA
************************************************************************
*关闭EXECL文件
FORM F_FILE_CLOSE.
CALL METHOD OF EXCEL 'QUIT'.
FREE OBJECT CELL.
FREE OBJECT WORKBOOK.
FREE OBJECT EXCEL.
IF SY-SUBRC NE 0 .
MESSAGE E001.
ENDIF.
ENDFORM. " F_FILE_CLOSE
************************************************************************
*设置报表输出时,每个字段的输出位置
FORM F_WRITE_INIT_POSITION USING
PF_ZDKD "字段宽度
.
DATA L_OLD_POSTION TYPE I.
DATA L_NEW_POSTION TYPE I.
DATA L_OLD_INDEX TYPE I.

IF PF_ZDKD = 9999.
REFRESH IT_WRITE_POSITION.
G_INIT_COUNT = 0 .
ELSE.
L_OLD_INDEX = G_INIT_COUNT .
G_INIT_COUNT = G_INIT_COUNT + 1.
IF G_INIT_COUNT = 1 .
L_NEW_POSTION = 1.
ELSE.
READ TABLE IT_WRITE_POSITION INTO L_OLD_POSTION INDEX L_OLD_INDEX.
L_NEW_POSTION = L_OLD_POSTION + G_LAST_FILED_WIDTH.
ENDIF.
APPEND L_NEW_POSTION TO IT_WRITE_POSITION .
ENDIF.
G_LAST_FILED_WIDTH = PF_ZDKD.
ENDFORM. "F_WRITE_INIT_POSITION
************************************************************************
*作用与WRITE命令类似,对齐模式通过参数指定
FORM F_WRITE_OUTPUT USING
PF_SCNR "输出内容,可能输出SY-VLINE
PF_DQMS "对齐模式,三种 (L)EFT-JUSTIFIED . (C)CENTERED . (R)IGHT-JUSTIFIED.
DATA L_WRITE_POSITION TYPE I.

G_WRITE_COUNT = G_WRITE_COUNT + 1.
READ TABLE IT_WRITE_POSITION INTO L_WRITE_POSITION INDEX G_WRITE_COUNT.
CASE PF_DQMS.
WHEN 'L' OR ''.
WRITE: AT L_WRITE_POSITION PF_SCNR LEFT-JUSTIFIED.
WHEN 'C'.
WRITE: AT L_WRITE_POSITION PF_SCNR CENTERED.
WHEN 'R'.
WRITE: AT L_WRITE_POSITION PF_SCNR RIGHT-JUSTIFIED.
ENDCASE.
ENDFORM. "F_WRITE_OUTPUT
**************************************************************
*COS评审意见
FORM F_SUB_SAVE_TEST_001.
DATA: T_TEXT TYPE STANDARD TABLE OF TLINE"长文本信息
INITIAL SIZE 1 WITH HEADER LINE.
DATA: T_HEAD LIKE THEAD.
DATA: T_HEAD1 LIKE THEAD.
DATA L_FUNCTION.

LOOP AT IT_PRINT_001 WHERE ET1 <> ''." AND FLAG = 'X'

AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD IT_PRINT_001-VKORG.

IF SY-SUBRC <> 0.
MESSAGE E015.
ELSE.
*1
REFRESH T_TEXT.
T_TEXT-TDFORMAT = 'TX'.
T_TEXT-TDLINE = IT_PRINT_001-ET1.
APPEND T_TEXT.
*2
CLEAR T_HEAD.
T_HEAD-TDOBJECT = 'VBBP'.
T_HEAD-TDNAME = IT_PRINT_001-OBJNR1.
T_HEAD-TDID = '0006'.
T_HEAD-TDSPRAS = '1'.
T_HEAD-TDFORM = 'SYSTEM'.

*3
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SYST-MANDT
HEADER = T_HEAD
* INSERT = 'X'
SAVEMODE_DIRECT = 'X'
IMPORTING
FUNCTION = L_FUNCTION
NEWHEADER = T_HEAD1
TABLES
LINES = T_TEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4.

IF L_FUNCTION <> 'I' AND L_FUNCTION <> 'U'.
MESSAGE E014 WITH IT_PRINT_001-OBJNR1.
ELSE.
MESSAGE S016 .
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " F_SUB_SAVE_TEST_001

*免费订单GCM评审意见
FORM F_SUB_SAVE_TEST_005.
DATA: T_TEXT TYPE STANDARD TABLE OF TLINE"长文本信息
INITIAL SIZE 1 WITH HEADER LINE.
DATA: T_HEAD LIKE THEAD.
DATA: T_HEAD1 LIKE THEAD.
DATA L_FUNCTION.

LOOP AT IT_PRINT_001 WHERE ET5 <> ''." AND FLAG = 'X'

AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD IT_PRINT_001-VKORG.

IF SY-SUBRC <> 0.
MESSAGE E015.
ELSE.
*1
REFRESH T_TEXT.
T_TEXT-TDFORMAT = 'TX'.
T_TEXT-TDLINE = IT_PRINT_001-ET5.
APPEND T_TEXT.
*2
CLEAR T_HEAD.
T_HEAD-TDOBJECT = 'VBBP'.
T_HEAD-TDNAME = IT_PRINT_001-OBJNR1.
T_HEAD-TDID = '0001'.
T_HEAD-TDSPRAS = '1'.
T_HEAD-TDFORM = 'SYSTEM'.

*3
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SYST-MANDT
HEADER = T_HEAD
* INSERT = 'X'
SAVEMODE_DIRECT = 'X'
IMPORTING
FUNCTION = L_FUNCTION
NEWHEADER = T_HEAD1
TABLES
LINES = T_TEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4.

IF L_FUNCTION <> 'I' AND L_FUNCTION <> 'U'.
MESSAGE E014 WITH IT_PRINT_001-OBJNR1.
ELSE.
MESSAGE S016 .
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " F_SUB_SAVE_TEST_005

*BOM评审意见
FORM F_SUB_SAVE_TEST_002.
DATA: T_TEXT TYPE STANDARD TABLE OF TLINE"长文本信息
INITIAL SIZE 1 WITH HEADER LINE.
DATA: T_HEAD LIKE THEAD.
DATA: T_HEAD1 LIKE THEAD.
DATA L_FUNCTION.

LOOP AT IT_PRINT_001 WHERE ET2 <> '' ."AND FLAG = 'X'
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD IT_PRINT_001-VKORG.

IF SY-SUBRC <> 0.
MESSAGE E015.
ELSE.

SELECT SINGLE *
FROM JEST
INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR
AND STAT = 'E0002'.

IF SY-SUBRC <> 0. "没作评审之前保存文本
*1
REFRESH T_TEXT.
T_TEXT-TDFORMAT = 'TX'.
T_TEXT-TDLINE = IT_PRINT_001-ET2.
APPEND T_TEXT.
*2
CLEAR T_HEAD.
T_HEAD-TDOBJECT = 'VBBP'.
T_HEAD-TDNAME = IT_PRINT_001-OBJNR1.
T_HEAD-TDID = '0007'.
T_HEAD-TDSPRAS = '1'.
T_HEAD-TDFORM = 'SYSTEM'.

*3
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SYST-MANDT
HEADER = T_HEAD
* INSERT = 'X'
SAVEMODE_DIRECT = 'X'
IMPORTING
FUNCTION = L_FUNCTION
NEWHEADER = T_HEAD1
TABLES
LINES = T_TEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4.
IF L_FUNCTION <> 'I' AND L_FUNCTION <> 'U'.
MESSAGE E014 WITH IT_PRINT_001-OBJNR1.
ELSE.
MESSAGE S016.
ENDIF.
ENDIF."SY-SUBRC
ENDIF.
ENDLOOP.
ENDFORM. " F_SUB_SAVE_TEST_002
*CQS评审意见
FORM F_SUB_SAVE_TEST_003.
DATA: T_TEXT TYPE STANDARD TABLE OF TLINE"长文本信息
INITIAL SIZE 1 WITH HEADER LINE.
DATA: T_HEAD LIKE THEAD.
DATA: T_HEAD1 LIKE THEAD.
DATA L_FUNCTION.

LOOP AT IT_PRINT_001 WHERE ET3 <> '' ."AND FLAG = 'X'
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD IT_PRINT_001-VKORG.

IF SY-SUBRC <> 0.
MESSAGE E015.
ELSE.

SELECT SINGLE *
FROM JEST
INTO JEST
WHERE OBJNR = IT_PRINT_001-OBJNR
* AND STAT = 'E0003'.
AND STAT = 'E0004'. "改为生产没有评审前都可以保存文本 ELIN 20090601
IF SY-SUBRC <> 0.
*1
REFRESH T_TEXT.
T_TEXT-TDFORMAT = 'TX'.
T_TEXT-TDLINE = IT_PRINT_001-ET3.
APPEND T_TEXT.
*2
CLEAR T_HEAD.
T_HEAD-TDOBJECT = 'VBBP'.
T_HEAD-TDNAME = IT_PRINT_001-OBJNR1.
T_HEAD-TDID = '0008'.
T_HEAD-TDSPRAS = '1'.
T_HEAD-TDFORM = 'SYSTEM'.

*3
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SYST-MANDT
HEADER = T_HEAD
* INSERT = 'X'
SAVEMODE_DIRECT = 'X'
IMPORTING
FUNCTION = L_FUNCTION
NEWHEADER = T_HEAD1
TABLES
LINES = T_TEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4.

IF L_FUNCTION <> 'I' AND L_FUNCTION <> 'U'.
MESSAGE E014 WITH IT_PRINT_001-OBJNR1.
ELSE.
MESSAGE S016.
ENDIF.
ENDIF."SY-SUBRC
ENDIF.
ENDLOOP.
ENDFORM. " F_SUB_SAVE_TEST_003
*生产评审意见
FORM F_SUB_SAVE_TEST_004.
DATA: T_TEXT TYPE STANDARD TABLE OF TLINE"长文本信息
INITIAL SIZE 1 WITH HEADER LINE.
DATA: T_HEAD LIKE THEAD.
DATA: T_HEAD1 LIKE THEAD.
DATA L_FUNCTION.

LOOP AT IT_PRINT_001 ."AND FLAG = 'X'WHERE ET4 <> ''
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD IT_PRINT_001-VKORG.

IF SY-SUBRC <> 0.
MESSAGE E015.
ELSE.
*1
REFRESH T_TEXT.
T_TEXT-TDFORMAT = 'TX'.
T_TEXT-TDLINE = IT_PRINT_001-ET4.
APPEND T_TEXT.
*2
CLEAR T_HEAD.
T_HEAD-TDOBJECT = 'VBBP'.
T_HEAD-TDNAME = IT_PRINT_001-OBJNR1.
T_HEAD-TDID = '0009'.
T_HEAD-TDSPRAS = '1'.
T_HEAD-TDFORM = 'SYSTEM'.

*3
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SYST-MANDT
HEADER = T_HEAD
* INSERT = 'X'
SAVEMODE_DIRECT = 'X'
IMPORTING
FUNCTION = L_FUNCTION
NEWHEADER = T_HEAD1
TABLES
LINES = T_TEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4.

IF L_FUNCTION <> 'I' AND L_FUNCTION <> 'U'.
MESSAGE E014 WITH IT_PRINT_001-OBJNR1.
ELSE.
MESSAGE S016.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " F_SUB_SAVE_TEST_004

**************************************************************
*取订单文本
FORM F_SUB_GET_TEXT USING P_P_EBELN
VALUE(P_0087)
CHANGING P_L_STR.
DATA: T_TEXT TYPE STANDARD TABLE OF TLINE "长文本信息
INITIAL SIZE 1 WITH HEADER LINE.
TABLES: STXL.

CLEAR T_TEXT.
CLEAR STXL.

SELECT SINGLE * FROM STXL INTO STXL
WHERE TDNAME = P_P_EBELN
AND TDOBJECT = 'VBBP'
AND TDID = P_0087.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = STXL-TDID
LANGUAGE = STXL-TDSPRAS
NAME = STXL-TDNAME
OBJECT = STXL-TDOBJECT
TABLES
LINES = T_TEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5.
IF SY-SUBRC EQ 0.
LOOP AT T_TEXT.
CONCATENATE P_L_STR T_TEXT-TDLINE INTO P_L_STR.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM. " F_SUB_GET_TEXT
***********************************************************
FORM F_BDC_EXECUTE_002. " 批量评审
* SORT IT_PRINT_001 BY VBELN POSNR."FLAG
LOOP AT IT_PRINT_001 WHERE FLAG = 'X'.
Z_AREA = IT_PRINT_001.
AT NEW VBELN.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD Z_AREA-VKORG.

IF SY-SUBRC <> 0.
MESSAGE E015.
ELSE.
REFRESH IT_BDCDATA_001.
PERFORM F_BDC_GET_BDCDATA_001A.
ENDIF.
ENDAT.

* 权限控制,S43B权限组能修改“GCM评审”的相关字段
IF IT_PRINT_001-AUART = 'ZFD'.
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43G'. "免费订单走不同的BDC
IF SY-SUBRC = 0 AND Z_AREA-E4 <> 'X' AND Z_AREA-E5 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001GCM.
ENDIF.
* 权限控制,S43B权限组能修改“BOM评审”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43B'.
IF SY-SUBRC = 0 AND Z_AREA-E5 = 'X' AND Z_AREA-E2 <> 'X' AND Z_AREA-STLST <> '5'.
PERFORM F_BDC_GET_BDCDATA_001BOM2.
ENDIF.
* 权限控制,S43C权限组能修改“CQS评审”的相关字段
IF IT_PRINT_001-VKORG <> '3000'.
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43C'.
IF SY-SUBRC = 0 AND Z_AREA-E2 = 'X' AND Z_AREA-E3 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001CQS2.
ELSEIF SY-SUBRC = 0 AND Z_AREA-MMKON = '01' AND Z_AREA-E5 = 'X' AND Z_AREA-E3 <> 'X'.

PERFORM F_BDC_GET_BDCDATA_001BCQS2.
ENDIF.
ELSEIF IT_PRINT_001-VKORG = '3000'
* AND ( IT_PRINT_001-MATNR+0(3) = '80R' OR IT_PRINT_001-MATNR+0(3) = '80T' ) AND SY-UNAME = 'WTCQS'.
AND ( IT_PRINT_001-MATNR+2(1) <> 'A' AND IT_PRINT_001-MATNR+2(1) <> 'B' AND IT_PRINT_001-MATNR+2(1) <> 'C' AND IT_PRINT_001-MATNR+2(1) <> 'Y')
AND SY-UNAME = 'WTCQS'.

AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43C'.
IF SY-SUBRC = 0 AND Z_AREA-E2 = 'X' AND Z_AREA-E3 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001CQS2.
ELSEIF SY-SUBRC = 0 AND Z_AREA-MMKON = '01' AND Z_AREA-E5 = 'X' AND Z_AREA-E3 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001BCQS2.
ENDIF.
ELSEIF IT_PRINT_001-VKORG = '3000' AND IT_PRINT_001-MATNR+0(3) <> '80R' AND SY-UNAME <> 'WTCQS'.
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43C'.
IF SY-SUBRC = 0 AND Z_AREA-E2 = 'X' AND Z_AREA-E3 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001CQS2.
ELSEIF SY-SUBRC = 0 AND Z_AREA-MMKON = '01' AND Z_AREA-E5 = 'X' AND Z_AREA-E3 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001BCQS2.
ENDIF.
ENDIF.
* 权限控制,S43D权限组能修改“生产评审”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43D'.
IF SY-SUBRC = 0 AND Z_AREA-E3 = 'X' AND Z_AREA-E4 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001SG2.
ENDIF.
ELSEIF IT_PRINT_001-AUART = 'ZMJ'. "收费样品订单
* 权限控制,S43B权限组能修改“GCM评审”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43G'.
IF SY-SUBRC = 0 AND Z_AREA-E5 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001GCM2.
ENDIF.
ELSE.
* 权限控制,S43B权限组能修改“BOM评审”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43B'.
IF SY-SUBRC = 0 AND Z_AREA-E4 <> 'X' AND Z_AREA-E2 <> 'X' AND Z_AREA-STLST <> '5'. "BOM状态为5的不评审
PERFORM F_BDC_GET_BDCDATA_001BOM.
ENDIF.
* 权限控制,S43C权限组能修改“CQS评审”的相关字段
* AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43C'.
* IF SY-SUBRC = 0 AND Z_AREA-E2 = 'X' AND Z_AREA-E3 <> 'X'.
* PERFORM F_BDC_GET_BDCDATA_001CQS.
* ELSEIF SY-SUBRC = 0 AND Z_AREA-MMKON = '01' AND Z_AREA-E3 <> 'X'.
* PERFORM F_BDC_GET_BDCDATA_001BCQS.
* ENDIF.
IF IT_PRINT_001-VKORG <> '3000'.
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43C'.
IF SY-SUBRC = 0 AND Z_AREA-E2 = 'X' AND Z_AREA-E3 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001CQS.

ELSEIF SY-SUBRC = 0 AND Z_AREA-MMKON = '01' AND Z_AREA-E3 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001BCQS.
ENDIF.
ELSEIF IT_PRINT_001-VKORG = '3000'
* AND ( IT_PRINT_001-MATNR+0(3) = '80R' OR IT_PRINT_001-MATNR+0(3) = '80T' ) AND SY-UNAME = 'WTCQS'.
AND ( IT_PRINT_001-MATNR+2(1) <> 'A' AND IT_PRINT_001-MATNR+2(1) <> 'B' AND IT_PRINT_001-MATNR+2(1) <> 'C' AND IT_PRINT_001-MATNR+2(1) <> 'Y')
AND SY-UNAME = 'WTCQS'.

AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43C'.
IF SY-SUBRC = 0 AND Z_AREA-E2 = 'X' AND Z_AREA-E3 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001CQS.
ELSEIF SY-SUBRC = 0 AND Z_AREA-MMKON = '01' AND Z_AREA-E3 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001BCQS.
ENDIF.
ELSEIF IT_PRINT_001-VKORG = '3000' AND IT_PRINT_001-MATNR+0(3) <> '80R' AND SY-UNAME <> 'WTCQS'.
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43C'.
IF SY-SUBRC = 0 AND Z_AREA-E2 = 'X' AND Z_AREA-E3 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001CQS.
ELSEIF SY-SUBRC = 0 AND Z_AREA-MMKON = '01' AND Z_AREA-E3 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001BCQS.
ENDIF.
ENDIF.
* 权限控制,S43D权限组能修改“生产评审”的相关字段
AUTHORITY-CHECK OBJECT 'ZREPORT' ID 'BEGRU' FIELD 'S43D'.
IF SY-SUBRC = 0 AND Z_AREA-E3 = 'X' AND Z_AREA-E4 <> 'X'.
PERFORM F_BDC_GET_BDCDATA_001SG.
* IF SY-SUBRC = 0.
* MESSAGE S010 WITH T_VBAK-VBELN.
* ELSE.
* MESSAGE E011 WITH T_VBAK-VBELN.
* ENDIF.
ENDIF.
ENDIF.
AT END OF VBELN.

PERFORM F_BDC_GET_BDCDATA_001C.
CALL TRANSACTION 'VA02'
USING IT_BDCDATA_001
MODE 'E'
UPDATE 'A'.
IF SY-SUBRC <> 0.
WRITE: / 'ERROR'.
ENDIF.
ENDAT.
CLEAR Z_AREA.

ENDLOOP.

ENDFORM. "F_BDC_EXECUTE_002
**********************************************************************
FORM F_BDC_GET_BDCDATA_001A.
PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPMV45A' '0102',
'' 'BDC_CURSOR' 'VBAK-VBELN',
'' 'BDC_OKCODE' '/00',
'' 'VBAK-VBELN' Z_AREA-VBELN.
ENDFORM. "F_BDC_GET_BDCDATA_001A
**********************************************************************
FORM F_BDC_GET_BDCDATA_001GCM.
PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=POPO',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'RV45A-MABNR(02)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '0251',
'' 'BDC_CURSOR' 'RV45A-POSNR',
'' 'BDC_OKCODE' '=POSI',
'' 'RV45A-POSNR' Z_AREA-POSNR,
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=ITEM',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'VBAP-POSNR(01)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=T/11',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4451SUBSCREEN_BODY',
* '' 'BDC_CURSOR' 'VBKD-DELCO',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=PSTC',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=PICK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'' 'BDC_CURSOR' 'J_STMAINT-ANWS(02)',
'' 'J_STMAINT-ANWS(01) ' '',
'' 'J_STMAINT-ANWS(02) ' 'X',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=BACK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_CURSOR' 'JOSTD-OBJNR',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '/EBACK',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY'.
ENDFORM. "F_BDC_GET_BDCDATA_001GCM

*&---------------------------------------------------------------------*
FORM F_BDC_GET_BDCDATA_001GCM2. "样品订单,由GCM评审最后一部
PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=POPO',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'RV45A-MABNR(02)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '0251',
'' 'BDC_CURSOR' 'RV45A-POSNR',
'' 'BDC_OKCODE' '=POSI',
'' 'RV45A-POSNR' Z_AREA-POSNR,
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=ITEM',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'VBAP-POSNR(01)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=T/11',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4451SUBSCREEN_BODY',
* '' 'BDC_CURSOR' 'VBKD-DELCO',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=PSTC',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',

'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=PICK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'' 'BDC_CURSOR' 'J_STMAINT-ANWS(02)',
'' 'J_STMAINT-ANWS(01) ' '',
'' 'J_STMAINT-ANWS(02) ' 'X',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=BACK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_CURSOR' 'JOSTD-OBJNR',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '/EBACK',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',
'' 'VBAP-ABGRU' ''. "更改拒绝原因为空
ENDFORM. "F_BDC_GET_BDCDATA_001GCM2

*&---------------------------------------------------------------------*

*& Form F_BDC_GET_BDCDATA_001BOM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM F_BDC_GET_BDCDATA_001BOM.
PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=POPO',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'RV45A-MABNR(02)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '0251',
'' 'BDC_CURSOR' 'RV45A-POSNR',
'' 'BDC_OKCODE' '=POSI',
'' 'RV45A-POSNR' Z_AREA-POSNR,
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=ITEM',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'VBAP-POSNR(01)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=T/11',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4451SUBSCREEN_BODY',
* '' 'BDC_CURSOR' 'VBKD-DELCO',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=PSTC',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=PICK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'' 'BDC_CURSOR' 'J_STMAINT-ANWS(02)',
'' 'J_STMAINT-ANWS(01) ' '',
'' 'J_STMAINT-ANWS(02) ' 'X',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=BACK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_CURSOR' 'JOSTD-OBJNR',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '/EBACK',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY'.
ENDFORM. "F_BDC_GET_BDCDATA_001BOM

*&---------------------------------------------------------------------*
*& Form F_BDC_GET_BDCDATA_001BOM2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM F_BDC_GET_BDCDATA_001BOM2.
PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=POPO',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'RV45A-MABNR(02)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '0251',
'' 'BDC_CURSOR' 'RV45A-POSNR',
'' 'BDC_OKCODE' '=POSI',
'' 'RV45A-POSNR' Z_AREA-POSNR,
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=ITEM',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'VBAP-POSNR(01)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=T/11',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4451SUBSCREEN_BODY',
* '' 'BDC_CURSOR' 'VBKD-DELCO',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=PSTC',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=PICK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'' 'BDC_CURSOR' 'J_STMAINT-ANWS(03)',
'' 'J_STMAINT-ANWS(02) ' '',
'' 'J_STMAINT-ANWS(03) ' 'X',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=BACK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_CURSOR' 'JOSTD-OBJNR',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '/EBACK',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY'.
ENDFORM. "F_BDC_GET_BDCDATA_001BOM2

*********************************************************************
*CQS
FORM F_BDC_GET_BDCDATA_001CQS.
DATA USERN TYPE STRING.
CALL FUNCTION 'Z_RETURN_USERNAME'
IMPORTING
USERNAME = USERN.
TRANSLATE USERN TO UPPER CASE .
SELECT SINGLE ZNAME FROM ZDT02 INTO IT_PRINT_001-HOST2 WHERE ZPC = USERN.

* CALL FUNCTION 'TERMINAL_ID_GET'
* EXPORTING
* USERNAME = SY-UNAME "
* IMPORTING
* TERMINAL = IP_UNAME "IP + HOSTNAME
* EXCEPTIONS
* MULTIPLE_TERMINAL_ID = 1
* NO_TERMINAL_FOUND = 2.
*
* SPLIT IP_UNAME AT '-' INTO IT_PRINT_001-IPDEC2 IT_PRINT_001-HOST2.
* TRANSLATE IT_PRINT_001-HOST2 TO UPPER CASE .
* SELECT SINGLE ZNAME FROM ZDT02 INTO IT_PRINT_001-ZNAME WHERE ZPC = IT_PRINT_001-HOST2.
* CONCATENATE IT_PRINT_001-ZNAME '|' IT_PRINT_001-HOST2 INTO IT_PRINT_001-HOST2.
MOVE IT_PRINT_001-VBELN TO ZJCDS-VBELN.
MOVE IT_PRINT_001-POSNR TO ZJCDS-POSNR.
MOVE IT_PRINT_001-HOST2 TO ZJCDS-CQSNAME.
MODIFY ZJCDS.
MODIFY IT_PRINT_001.

PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=POPO',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'RV45A-MABNR(02)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '0251',
'' 'BDC_CURSOR' 'RV45A-POSNR',
'' 'BDC_OKCODE' '=POSI',
'' 'RV45A-POSNR' Z_AREA-POSNR,
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=ITEM',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'VBAP-POSNR(01)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=T/11',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4451SUBSCREEN_BODY',
* '' 'BDC_CURSOR' 'VBKD-DELCO',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=PSTC',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=PICK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'' 'BDC_CURSOR' 'J_STMAINT-ANWS(03)',
'' 'J_STMAINT-ANWS(02) ' '',
'' 'J_STMAINT-ANWS(03) ' 'X',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=BACK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_CURSOR' 'JOSTD-OBJNR',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '/EBACK',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY'.
ENDFORM. "F_BDC_GET_BDCDATA_001CQS

*&---------------------------------------------------------------------*
*& Form F_BDC_GET_BDCDATA_001CQS2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM F_BDC_GET_BDCDATA_001CQS2.
DATA USERN TYPE STRING.
CALL FUNCTION 'Z_RETURN_USERNAME'
IMPORTING
USERNAME = USERN.
TRANSLATE USERN TO UPPER CASE .
SELECT SINGLE ZNAME FROM ZDT02 INTO IT_PRINT_001-HOST2 WHERE ZPC = USERN.

* CALL FUNCTION 'TERMINAL_ID_GET'
* EXPORTING
* USERNAME = SY-UNAME "
* IMPORTING
* TERMINAL = IP_UNAME "IP + HOSTNAME
* EXCEPTIONS
* MULTIPLE_TERMINAL_ID = 1
* NO_TERMINAL_FOUND = 2.
*
* SPLIT IP_UNAME AT '-' INTO IT_PRINT_001-IPDEC2 IT_PRINT_001-HOST2.
* TRANSLATE IT_PRINT_001-HOST2 TO UPPER CASE .
* SELECT SINGLE ZNAME FROM ZDT02 INTO IT_PRINT_001-ZNAME WHERE ZPC = IT_PRINT_001-HOST2.
* CONCATENATE IT_PRINT_001-ZNAME '|' IT_PRINT_001-HOST2 INTO IT_PRINT_001-HOST2.

MOVE IT_PRINT_001-VBELN TO ZJCDS-VBELN.
MOVE IT_PRINT_001-POSNR TO ZJCDS-POSNR.
MOVE IT_PRINT_001-HOST2 TO ZJCDS-CQSNAME.
MODIFY ZJCDS.
MODIFY IT_PRINT_001.

PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=POPO',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'RV45A-MABNR(02)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '0251',
'' 'BDC_CURSOR' 'RV45A-POSNR',
'' 'BDC_OKCODE' '=POSI',
'' 'RV45A-POSNR' Z_AREA-POSNR,
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=ITEM',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'VBAP-POSNR(01)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=T/11',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4451SUBSCREEN_BODY',
* '' 'BDC_CURSOR' 'VBKD-DELCO',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=PSTC',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=PICK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'' 'BDC_CURSOR' 'J_STMAINT-ANWS(04)',
'' 'J_STMAINT-ANWS(03) ' '',
'' 'J_STMAINT-ANWS(04) ' 'X',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=BACK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_CURSOR' 'JOSTD-OBJNR',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '/EBACK',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY'.

ENDFORM. "F_BDC_GET_BDCDATA_001CQS2

*********************************************************************
*CQS----老产品BOM不评审,由CQS评审一起评审
FORM F_BDC_GET_BDCDATA_001BCQS.

DATA USERN TYPE STRING.
CALL FUNCTION 'Z_RETURN_USERNAME'
IMPORTING
USERNAME = USERN.
TRANSLATE USERN TO UPPER CASE .
SELECT SINGLE ZNAME FROM ZDT02 INTO IT_PRINT_001-HOST2 WHERE ZPC = USERN.
* CALL FUNCTION 'TERMINAL_ID_GET'
* EXPORTING
* USERNAME = SY-UNAME "
* IMPORTING
* TERMINAL = IP_UNAME "IP + HOSTNAME
* EXCEPTIONS
* MULTIPLE_TERMINAL_ID = 1
* NO_TERMINAL_FOUND = 2.
*
* SPLIT IP_UNAME AT '-' INTO IT_PRINT_001-IPDEC2 IT_PRINT_001-HOST2.
* TRANSLATE IT_PRINT_001-HOST2 TO UPPER CASE .
* SELECT SINGLE ZNAME FROM ZDT02 INTO IT_PRINT_001-ZNAME WHERE ZPC = IT_PRINT_001-HOST2.
* CONCATENATE IT_PRINT_001-ZNAME '|' IT_PRINT_001-HOST2 INTO IT_PRINT_001-HOST2.
MOVE IT_PRINT_001-VBELN TO ZJCDS-VBELN.
MOVE IT_PRINT_001-POSNR TO ZJCDS-POSNR.
MOVE IT_PRINT_001-HOST2 TO ZJCDS-CQSNAME.
MODIFY ZJCDS.
MODIFY IT_PRINT_001.
PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=POPO',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'RV45A-MABNR(02)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '0251',
'' 'BDC_CURSOR' 'RV45A-POSNR',
'' 'BDC_OKCODE' '=POSI',
'' 'RV45A-POSNR' Z_AREA-POSNR,
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=ITEM',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'VBAP-POSNR(01)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=T/11',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4451SUBSCREEN_BODY',
* '' 'BDC_CURSOR' 'VBKD-DELCO',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=PSTC',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=PICK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'' 'BDC_CURSOR' 'J_STMAINT-ANWS(02)',
'' 'J_STMAINT-ANWS(02) ' 'X',
'' 'J_STMAINT-ANWS(03) ' '',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=PICK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'' 'BDC_CURSOR' 'J_STMAINT-ANWS(03)',
'' 'J_STMAINT-ANWS(02) ' '',
'' 'J_STMAINT-ANWS(03) ' 'X',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=BACK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_CURSOR' 'JOSTD-OBJNR',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '/EBACK',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY'.

ENDFORM. "F_BDC_GET_BDCDATA_001BCQS

*&---------------------------------------------------------------------*
*& Form F_BDC_GET_BDCDATA_001BCQS2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM F_BDC_GET_BDCDATA_001BCQS2.
"评审
DATA USERN TYPE STRING.
CALL FUNCTION 'Z_RETURN_USERNAME'
IMPORTING
USERNAME = USERN.
TRANSLATE USERN TO UPPER CASE .
SELECT SINGLE ZNAME FROM ZDT02 INTO IT_PRINT_001-HOST2 WHERE ZPC = USERN.
* CALL FUNCTION 'TERMINAL_ID_GET'
* EXPORTING
* USERNAME = SY-UNAME "
* IMPORTING
* TERMINAL = IP_UNAME "IP + HOSTNAME
* EXCEPTIONS
* MULTIPLE_TERMINAL_ID = 1
* NO_TERMINAL_FOUND = 2.
*
* SPLIT IP_UNAME AT '-' INTO IT_PRINT_001-IPDEC2 IT_PRINT_001-HOST2.
** CONCATENATE SY-UNAME '|' IT_PRINT_001-HOST2 INTO IT_PRINT_001-HOST2.
* TRANSLATE IT_PRINT_001-HOST2 TO UPPER CASE .
* SELECT SINGLE ZNAME FROM ZDT02 INTO IT_PRINT_001-ZNAME WHERE ZPC = IT_PRINT_001-HOST2.
* CONCATENATE IT_PRINT_001-ZNAME '|' IT_PRINT_001-HOST2 INTO IT_PRINT_001-HOST2.
MOVE IT_PRINT_001-VBELN TO ZJCDS-VBELN.
MOVE IT_PRINT_001-POSNR TO ZJCDS-POSNR.
MOVE IT_PRINT_001-HOST2 TO ZJCDS-CQSNAME.
MODIFY ZJCDS. "ZJCDS用于存放评审的单子的电脑名
MODIFY IT_PRINT_001.

PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=POPO',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'RV45A-MABNR(02)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '0251',
'' 'BDC_CURSOR' 'RV45A-POSNR',
'' 'BDC_OKCODE' '=POSI',
'' 'RV45A-POSNR' Z_AREA-POSNR,
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=ITEM',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'VBAP-POSNR(01)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=T/11',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4451SUBSCREEN_BODY',
* '' 'BDC_CURSOR' 'VBKD-DELCO',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=PSTC',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=PICK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'' 'BDC_CURSOR' 'J_STMAINT-ANWS(03)',
'' 'J_STMAINT-ANWS(03) ' 'X',
'' 'J_STMAINT-ANWS(04) ' '',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=PICK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'' 'BDC_CURSOR' 'J_STMAINT-ANWS(04)',
'' 'J_STMAINT-ANWS(03) ' '',
'' 'J_STMAINT-ANWS(04) ' 'X',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=BACK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_CURSOR' 'JOSTD-OBJNR',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '/EBACK',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY'.

ENDFORM. "F_BDC_GET_BDCDATA_001BCQS2
*********************************************************************
*生管
FORM F_BDC_GET_BDCDATA_001SG.
PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=POPO',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'1' 'SAPMV45A' '0251',
'' 'BDC_CURSOR' 'RV45A-POSNR',
'' 'BDC_OKCODE' '=POSI',
'' 'RV45A-POSNR' Z_AREA-POSNR,
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=ITEM',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'VBAP-POSNR(01)',
'' 'VBAP-ABGRU(01)' '',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=T/11',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4451SUBSCREEN_BODY',
* '' 'BDC_CURSOR' 'RV45A-KWMENG',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=PSTC',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=PICK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'' 'BDC_CURSOR' 'J_STMAINT-ANWS(04)',
'' 'J_STMAINT-ANWS(03) ' '',
'' 'J_STMAINT-ANWS(04)' 'X',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=BACK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_CURSOR' 'JOSTD-OBJNR',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '/EBACK',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',
'' 'VBAP-ABGRU' ''.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form F_BDC_GET_BDCDATA_001SG2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM F_BDC_GET_BDCDATA_001SG2.
PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=POPO',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'1' 'SAPMV45A' '0251',
'' 'BDC_CURSOR' 'RV45A-POSNR',
'' 'BDC_OKCODE' '=POSI',
'' 'RV45A-POSNR' Z_AREA-POSNR,
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=ITEM',
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'VBAP-POSNR(01)',
'' 'VBAP-ABGRU(01)' '',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=T/11',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4451SUBSCREEN_BODY',
* '' 'BDC_CURSOR' 'RV45A-KWMENG',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '=PSTC',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=PICK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'' 'BDC_CURSOR' 'J_STMAINT-ANWS(05)',
'' 'J_STMAINT-ANWS(04) ' '',
'' 'J_STMAINT-ANWS(05)' 'X',
'1' 'SAPLBSVA' '0300',
'' 'BDC_OKCODE' '=BACK',
'' 'BDC_SUBSCR' 'SAPLBSVA 0800HEADER',
'' 'BDC_CURSOR' 'JOSTD-OBJNR',
'' 'BDC_SUBSCR' 'SAPLBSVA 0302SUBSCREEN',
'1' 'SAPMV45A' '4003',
'' 'BDC_OKCODE' '/EBACK',
'' 'BDC_SUBSCR' 'SAPMV45A 4013SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4456SUBSCREEN_BODY',
'' 'BDC_CURSOR' 'VBAP-ABGRU',
'' 'VBAP-ABGRU' ''.

ENDFORM.

**********************************************************************
FORM F_BDC_GET_BDCDATA_001C.
PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPMV45A' '4001',
'' 'BDC_OKCODE' '=SICH',"
'' 'BDC_SUBSCR' 'SAPMV45A 4021SUBSCREEN_HEADER',
'' 'BDC_SUBSCR' 'SAPMV45A 4701PART-SUB',
'' 'BDC_SUBSCR' 'SAPMV45A 4400SUBSCREEN_BODY',
'' 'BDC_SUBSCR' 'SAPMV45A 4440HEADER_FRAME',
'' 'BDC_SUBSCR' 'SAPMV45A 8310HEAD_USER',
'' 'BDC_SUBSCR' 'SAPLV45W 0400SUBSCREEN_VERTRAG',
'' 'BDC_SUBSCR' 'SAPMV45A 4900SUBSCREEN_TC',
'' 'BDC_CURSOR' 'RV45A-MABNR(01)',
'' 'BDC_SUBSCR' 'SAPMV45A 4050SUBSCREEN_BUTTONS'
.
ENDFORM. "F_BDC_GET_BDCDATA_001C
*************************************************************************
FORM F_BDC_MODIFY_BDCDATA USING
FLAG VAR1 VAR2.
CLEAR IT_BDCDATA_001.
IF FLAG = '1'.
IT_BDCDATA_001-PROGRAM = VAR1.
IT_BDCDATA_001-DYNPRO = VAR2.
IT_BDCDATA_001-DYNBEGIN = 'X'.
ELSE.
IT_BDCDATA_001-FNAM = VAR1.
IT_BDCDATA_001-FVAL = VAR2.
ENDIF.
APPEND IT_BDCDATA_001.
ENDFORM. "F_BDC_MODIFY_BDCDATA
************************************************************************
*导入BDC参数
FORM F_BDC_GET_BDCDATA_003 .
* DATA L_TEMP LIKE LINE OF IT_PRINT_001.
REFRESH IT_BDCDATA_001.
* READ TABLE IT_PRINT_001 INTO L_TEMP INDEX G_TABINDEX.
PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'ZR_PP_049' '1000',
'' 'BDC_CURSOR' 'P_WERKS',
'' 'BDC_OKCODE' '=ONLI',
'' 'P_SALE' 'X',
'' 'S_VBELN-LOW' L_TEMP-VBELN,
'' 'S_POSNR-LOW' L_TEMP-POSNR,
'' 'SP$00042' '3',
'' 'P_WERKS' L_TEMP-VKORG,
'' 'S_ARBPL-LOW' 'PC*',
'' 'P_KAPAR' '001',
'' 'P_ARBPL' 'X',
* '' 'P_CBX003' 'X',
'' 'P_ALV' 'X'.
ENDFORM. " F_BDC_GET_BDCDATA_003
************************************************************************
*调用TCODE, 执行BDC(使用内表IT_BDCDATA_001作为参数)
FORM F_BDC_EXECUTE_003.
PERFORM F_BDC_GET_BDCDATA_003.
CALL TRANSACTION 'ZP49'
USING IT_BDCDATA_001
MODE 'E'
UPDATE 'A'.
IF SY-SUBRC <> 0.
WRITE: / 'ERROR'.
ENDIF.
ENDFORM. " F_BDC_EXECUTE_003
************************************************************************
*导入BDC参数--MM02物料定价组
FORM F_BDC_GET_BDCDATA_004 .
* DATA L_TEMP LIKE LINE OF IT_PRINT_001.
REFRESH IT_BDCDATA_001.
* READ TABLE IT_PRINT_001 INTO L_TEMP INDEX G_TABINDEX.
PERFORM F_BDC_MODIFY_BDCDATA
USING:
'1' 'SAPLMGMM' '0060',
'' 'BDC_CURSOR' 'RMMG1-MATNR',
'' 'BDC_OKCODE' '=ENTR',
'' 'RMMG1-MATNR' L_TEMP-MATNR,
'1' 'SAPLMGMM' '0070',
'' 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(02)',
'' 'BDC_OKCODE' '=ENTR',
'' 'MSICHTAUSW-KZSEL(02)' 'X', "CQS评审更改物料定价组,只开通修改销售视图,所以所选的位置是2
'1' 'SAPLMGMM' '0080',
'' 'BDC_CURSOR' 'RMMG1-VTWEG',
'' 'BDC_OKCODE' '=ENTR',
'' 'RMMG1-WERKS' L_TEMP-WERKS,
'' 'RMMG1-VKORG' L_TEMP-VKORG,
'' 'RMMG1-VTWEG' L_TEMP-VTWEG,
'1' 'SAPLMGMM' '4000',
'' 'BDC_OKCODE' '=BABA',
'' 'BDC_SUBSCR' 'SAPLMGMM 2000TABFRA1',
'' 'BDC_SUBSCR' 'SAPLMGD1 1004SUB1',
'' 'BDC_SUBSCR' 'SAPLMGD1 2157SUB2',
'' 'BDC_CURSOR' 'MVKE-KONDM',
* '' 'MVKE-VERSG' '1',
'' 'MVKE-KONDM' '01', "-----由02新产品改成01老产品
* '' 'MVKE-KTGRM' '01',
* '' 'MARA-MTPOS_MARA' 'NORM',
* '' 'MVKE-MTPOS' 'NORM',
'' 'BDC_SUBSCR' 'SAPLMGD1 2156SUB3',
'' 'BDC_SUBSCR' 'SAPLMGD1 2155SUB4',
'' 'BDC_SUBSCR' 'SAPLMGD1 0001SUB5',
'' 'BDC_SUBSCR' 'SAPLMGD1 0001SUB6',
'1' 'SAPLSPO1' '0300',
'' 'BDC_OKCODE' '=YES'.

ENDFORM. " F_BDC_GET_BDCDATA_004
************************************************************************
*调用TCODE, 执行BDC(使用内表IT_BDCDATA_001作为参数)
FORM F_BDC_EXECUTE_004.
PERFORM F_BDC_GET_BDCDATA_004.
CALL TRANSACTION 'MM02'
USING IT_BDCDATA_001
MODE 'E'
UPDATE 'A'.
IF SY-SUBRC <> 0.
WRITE: / 'ERROR'.
ENDIF.
ENDFORM. " F_BDC_EXECUTE_004
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: