SAP 输出数据给LIMS系统

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

对于这个程序,只是提供一种解决的办法,从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

目录
相关文章
SAP CLIENT 数据配置文件的导出/导入
SAP CLIENT 数据配置文件的导出/导入
453 1
|
数据库
SAP系统不能启动解决方案
SAP系统不能启动解决方案
539 1
|
Unix
SAP R/3系统的启动和关闭
SAP R/3系统的启动和关闭
158 1
|
Oracle 关系型数据库 Unix
SAP系统拷贝 UNIX + Oracle
SAP系统拷贝 UNIX + Oracle
106 1
|
数据处理
|
索引
SAP ABAP——内表(八)【修改内表数据】
本文主要介绍一下SAP ABAP中内表的增删查改语句中的修改内表数据的相关语句,包括利用关键字修改数据,利用索引修改数据,利用WHERE语句修改数据
1134 3
SAP ABAP——内表(八)【修改内表数据】
|
数据库
SAP ABAP——学生信息系统demo
本文是一个ABAP学生信息系统的demo,废话不多说直接看demo场景
308 0
SAP ABAP——学生信息系统demo
|
运维 小程序 Unix
SAP 关于一些日常运维用到的系统小程序
主要介绍处理一些系统数据,或者查询日志用到的小工具程序或函数
413 0
|
索引
SAP ABAP——内表(十)【读取内表数据】
本文主要介绍一下SAP ABAP中内表的增删查改语句中的读取内表数据的相关语句,包括利用关键字读取数据,利用索引读取数据
796 0
SAP ABAP——内表(十)【读取内表数据】
|
索引
SAP ABAP——内表(九)【删除内表数据】
本文主要介绍一下SAP ABAP中内表的增删查改语句中的删除内表数据的相关语句,包括利用关键字删除数据,利用索引删除数据,利用WHERE语句删除数据,删除重复语句行
1305 0
SAP ABAP——内表(九)【删除内表数据】