SAP 输出数据给LIMS系统

对于这个程序,只是提供一种解决的办法,从SAP中取对应的数据 ,然后读到服务器上.供LIMS读取,然后LIMS只要返回一个值给SAP。最后在SAP QA32中使用一个出口,读取这样的状态,就可以直接看到合格 还是不合格的状态了。


*&---------------------------------------------------------------------*
*&Program name: ZQMR0031
*&Create by: Chouer
*&Create on: 2007.09.17
*&Describe: SAP data download to Server for LIMS
*&---------------------------------------------------------------------*

TABLES: QALS.

**---Internal table it_qals
TYPES: BEGIN OF STR_QALS,
MATNR LIKE QALS-MATNR, "物料名称
PRUEFLOS LIKE QALS-PRUEFLOS, "检验批号
KTEXTMAT LIKE QALS-KTEXTMAT, "物料描述(规格)
LIFNR LIKE QALS-LIFNR, "供应商编码
EBELN LIKE QALS-EBELN, "采购编码
EBELP LIKE QALS-EBELP, "采购编码项目
LOSMENGE LIKE QALS-LOSMENGE, "检验数量
PASTRTERM LIKE QALS-PASTRTERM, "开始检验日期
NAME1 LIKE LFA1-NAME1, "供应商名称
ACTUS TYPE C, "状态
MBLNR LIKE QALS-MBLNR, "物料凭证
TXZ01 LIKE EKPO-TXZ01,
END OF STR_QALS.

DATA: WA_QALS TYPE STR_QALS,
IT_QALS TYPE TABLE OF STR_QALS.

DATA: WA_QALS2 TYPE STR_QALS,
IT_QALS2 TYPE TABLE OF STR_QALS.

**---Internal table it_lfa1
TYPES: BEGIN OF STR_LFA1,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
END OF STR_LFA1.

DATA: WA_LFA1 TYPE STR_LFA1,
IT_LFA1 TYPE TABLE OF STR_LFA1.

DATA: BEGIN OF T_DATA OCCURS 0,
TEXT(200) TYPE C,
END OF T_DATA.

DATA: P_PATH LIKE RLGRAP-FILENAME,
P_FPATH(60) TYPE C,
P_FILE(10) TYPE C,
P_NAME(11) TYPE C.
* P_NAME LIKE QALS-PRUEFLOS.
DATA: FH TYPE C VALUE ';',
QUALITY(20) TYPE C.

*&---------------------------------------------------------------------*
*& Form download_data_txt
*&---------------------------------------------------------------------*
* 产生txt文档,供传入LIMS系统
*----------------------------------------------------------------------*
FORM DOWNLOAD_DATA_TXT TABLES P_EKPO STRUCTURE I_EKPO.

IF NOT P_EKPO IS INITIAL.
SELECT MATNR PRUEFLOS KTEXTMAT LIFNR EBELN EBELP LOSMENGE PASTRTERM
MBLNR
FROM QALS
INTO CORRESPONDING FIELDS OF TABLE IT_QALS
FOR ALL ENTRIES IN P_EKPO
WHERE EBELN = P_EKPO-EBELN
AND EBELP = P_EKPO-EBELP
AND MBLNR = P_EKPO-BELNR.
ENDIF.
IF NOT IT_QALS IS INITIAL.
SELECT LIFNR NAME1
FROM LFA1
INTO CORRESPONDING FIELDS OF TABLE IT_LFA1
FOR ALL ENTRIES IN IT_QALS
WHERE LIFNR = IT_QALS-LIFNR.
ENDIF.

LOOP AT IT_QALS INTO WA_QALS.
READ TABLE P_EKPO WITH KEY EBELN = WA_QALS-EBELN
EBELP = WA_QALS-EBELP
BELNR = WA_QALS-MBLNR.
IF SY-SUBRC = 0.
MOVE: P_EKPO-TXZ01 TO WA_QALS-TXZ01.
ENDIF.
MODIFY IT_QALS FROM WA_QALS TRANSPORTING TXZ01.
CLEAR: WA_QALS,P_EKPO.
ENDLOOP.
PERFORM GET_TXT_DATA. "处理数据
PERFORM DOWNLOAD_DATA. "Download data to servers
ENDFORM. " download_data_txt

*&---------------------------------------------------------------------*
*& Form DOWNLOAD_DATA
*&---------------------------------------------------------------------*
* 数据DownLoad到服务器上
*----------------------------------------------------------------------*
FORM DOWNLOAD_DATA .
REFRESH T_DATA.
LOOP AT IT_QALS INTO WA_QALS.
REFRESH T_DATA.
**--用于文件名输
P_NAME = WA_QALS-PRUEFLOS+1(11).
* P_FPATH = 'C:临时TEST'.
* P_FPATH = 'X:TEST'.
* P_FPATH = 'LABSRVSAPLINKSAP'.
P_FPATH = 'LABSRVSAPlinkTESTSAP'.

P_FILE = '.TXT'.
CONCATENATE P_FPATH P_NAME P_FILE INTO P_PATH.
**--把数值型数量 转换为 字符型
QUALITY = WA_QALS-LOSMENGE.

**---删除数量左边的空格
SHIFT QUALITY LEFT DELETING LEADING SPACE.

**---字符串合并
* CONCATENATE WA_QALS-PRUEFLOS WA_QALS-MATNR WA_QALS-KTEXTMAT
* WA_QALS-LIFNR WA_QALS-NAME1 WA_QALS-EBELN
* QUALITY WA_QALS-PASTRTERM
* INTO T_DATA-TEXT SEPARATED BY ';' .
CONCATENATE WA_QALS-PRUEFLOS WA_QALS-MATNR WA_QALS-TXZ01
WA_QALS-LIFNR WA_QALS-NAME1 WA_QALS-EBELN
QUALITY WA_QALS-PASTRTERM
INTO T_DATA-TEXT SEPARATED BY ';' .
APPEND T_DATA.

**---Download file to txt
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
CODEPAGE = 'TIBM'
FILENAME = P_PATH
FILETYPE = 'DAT'
TABLES
DATA_TAB = T_DATA
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
NO_AUTHORITY = 10
OTHERS = 11.
IF SY-SUBRC 0.
MESSAGE '文件路径错误或者没有权限' TYPE 'E'.
STOP.
ENDIF.
CLEAR: WA_QALS, QUALITY,T_DATA.
ENDLOOP.
ENDFORM. " DOWNLOAD_DATA
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* 处理数据(得到供应商的名称)
*----------------------------------------------------------------------*
FORM GET_TXT_DATA .
LOOP AT IT_QALS INTO WA_QALS.
READ TABLE IT_LFA1 INTO WA_LFA1 WITH KEY LIFNR = WA_QALS-LIFNR.
IF SY-SUBRC = 0.
MOVE: WA_LFA1-NAME1 TO WA_QALS-NAME1.
ENDIF.
MODIFY IT_QALS FROM WA_QALS TRANSPORTING NAME1.
ENDLOOP.
ENDFORM. " GET_TXT_DATA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值