JCO20 RFC在ECC中生成IDOC同步.docx
- 文档编号:24855748
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:17
- 大小:546.88KB
JCO20 RFC在ECC中生成IDOC同步.docx
《JCO20 RFC在ECC中生成IDOC同步.docx》由会员分享,可在线阅读,更多相关《JCO20 RFC在ECC中生成IDOC同步.docx(17页珍藏版)》请在冰豆网上搜索。
JCO20RFC在ECC中生成IDOC同步
一:
ECC配置
1):
WE31IDOC段类型ZTEST004_HEAD
WE31IDOC段类型ZTEST004_ITEM
2):
WE30IDOC基本类型ZTEST004
3):
WE81IDOC消息类型ZTEST004
4):
WE82IDOC消息类型与IDOC类型分配
5):
BD51进站功能模块ZTEST004
6):
WE57
7):
SE37创建进站函数
函数代码:
8)WE42创建进站代码ZTEST004
9)SALE创建逻辑系统BS_TEST01
10):
WE20创建合作伙伴类型LSBS_TEST01并增入进站参数ZTEST004
11)SE37创建RFC:
ZJCO_IDOC_001
源代码如下:
FUNCTION ZJCO_IDOC_001.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(INT_EDIDC) LIKE EDIDC STRUCTURE EDIDC
*" EXPORTING
*" VALUE(DOCNUM) LIKE EDIDC-DOCNUM
*" TABLES
*" HEAD STRUCTURE ZTEST004_HEAD OPTIONAL
*" ITEM STRUCTURE ZTEST004_ITEM OPTIONAL
*" EXCEPTIONS
*" IDOC_NOT_SAVED
*"----------------------------------------------------------------------
DATA:
WA_EDIDD TYPE EDIDD,
IT_EDIDD LIKE STANDARD TABLE OF WA_EDIDD.
DATA:
WA_EDIDC TYPE EDIDC.
CLEAR:
DOCNUM.
CLEAR:
WA_EDIDC.
MOVE-CORRESPONDING INT_EDIDC TO WA_EDIDC.
************IDOC
WA_EDIDC-DIRECT = '2'."IDoc 方向 进站
* WA_EDIDC-RCVPOR = 'SAPECD'.
* WA_EDIDC-RCVPRT = 'LS'.
* WA_EDIDC-RCVPRN = 'ECDCLNT300'.
*
* WA_EDIDC-SNDPOR = 'SAPJCOIDOC'.
* WA_EDIDC-SNDPRT = 'LS'.
* WA_EDIDC-SNDPRN = 'BS_TEST01'.
WA_EDIDC-MESTYP = 'ZTEST004'."消息类型
WA_EDIDC-IDOCTP = 'ZTEST004'."基本类型
WA_EDIDC-MAXSEGNUM = 0."数据记录的数目
CLEAR:
WA_EDIDD, IT_EDIDD.
*************ZTEST004_HEAD 段类型
READ TABLE HEAD INDEX 1.
IF SY-SUBRC = 0.
CLEAR:
WA_EDIDD.
WA_EDIDD-SEGNAM = 'ZTEST004_HEAD'.
WA_EDIDD-SDATA = HEAD.
APPEND WA_EDIDD TO IT_EDIDD.
ADD 1 TO WA_EDIDC-MAXSEGNUM.
ENDIF.
***************ZTEST004_ITEM 段类型
LOOP AT ITEM.
CLEAR:
WA_EDIDD.
WA_EDIDD-SEGNAM = 'ZTEST004_ITEM'.
WA_EDIDD-SDATA = ITEM.
APPEND WA_EDIDD TO IT_EDIDD.
ADD 1 TO WA_EDIDC-MAXSEGNUM.
ENDLOOP.
*************IDOC生成
CALL FUNCTION 'IDOC_INBOUND_WRITE_TO_DB'
* EXPORTING
* PI_STATUS_MESSAGE =
* PI_DO_HANDLE_ERROR = 'X'
* PI_NO_DEQUEUE = ' '
* PI_RETURN_DATA_FLAG = 'X'
* PI_RFC_MULTI_CP = ' '
IMPORTING
PE_IDOC_NUMBER = DOCNUM
* PE_STATE_OF_PROCESSING =
* PE_INBOUND_PROCESS_DATA =
TABLES
T_DATA_RECORDS = IT_EDIDD
* T_LINKED_OBJECTS =
CHANGING
PC_CONTROL_RECORD = WA_EDIDC
EXCEPTIONS
IDOC_NOT_SAVED = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
RAISE IDOC_NOT_SAVED.
ENDIF.
ENDFUNCTION.
二:
Jar文件下载和Eclipse实现
到Jar文件
1:
sapjco21P_10-10002243
下载完成后在Eclipse的工程中引用刚才下载的Jar文件
创建ZJCO_IDOC_001类
ZJCO_IDOC_001类代码如下:
importcom.sap.mw.jco.*;
importcom.sap.mw.jco.JCO.Client;
importcom.sap.mw.jco.JCO.Function;
importcom.sap.mw.jco.JCO.Repository;
publicclassZJCO_IDOC_001{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
try{
//CLEINTUSERIDPWDLANGUEIPSYSTEMCODE
Clientclient1=JCO.createClient("300","DEV003","dev003","EN","192.168.0.150","00");
client1.connect();
Repositoryrep=newRepository("ZCLEINT",client1);
Functionfunc=rep.getFunctionTemplate("ZJCO_IDOC_001").getFunction();
//JCO.ParameterList对象包含做Function的输入、输出和表参数。
//FILLINI_EDIDCSTRUCTURE
JCO.ParameterListinput=func.getImportParameterList();
JCO.StructureSedidc=input.getStructure("INT_EDIDC");
Sedidc.setValue("SAPECD","RCVPOR");
Sedidc.setValue("LS","RCVPRT");
Sedidc.setValue("ECDCLNT300","RCVPRN");
Sedidc.setValue("SAPJCO","SNDPOR");
Sedidc.setValue("LS","SNDPRT");
Sedidc.setValue("BS_TEST01","SNDPRN");
//FILLHEADTABLE
//1排
JCO.Tablet_head=func.getTableParameterList().getTable("HEAD");
t_head.appendRow();
t_head.setRow(0);
t_head.setValue("1","EBELN");
t_head.setValue("1","BSART");
t_head.setValue("1","BUKRS");
t_head.setValue("1","EKORG");
t_head.setValue("1","EKGRP");
t_head.setValue("1","LIFNR");
//FILLITEMTABLE
JCO.Tablet_item=func.getTableParameterList().getTable("ITEM");
//1排
t_item.appendRow();
t_item.setRow(0);
t_item.setValue("11","EBELP");
t_item.setValue("12","TXZ01");
t_item.setValue("13","MATNR");
t_item.setValue("14","WERKS");
t_item.setValue("15","LGORT");
t_item.setValue("16","MENGE");
t_item.setValue("17","MEINS");
//2排
t_item.appendRow();
t_item.setRow
(1);
t_item.setValue("21","EBELP");
t_item.setValue("22","TXZ01");
t_item.setValue("23","MATNR");
t_item.setValue("24","WERKS");
t_item.setValue("25","LGORT");
t_item.setValue("26","MENGE");
t_item.setValue("27","MEINS");
//3排
t_item.appendRow();
t_item.setRow
(2);
t_item.setValue("31","EBELP");
t_item.setValue("32","TXZ01");
t_item.setValue("33","MATNR");
t_item.setValue("34","WERKS");
t_item.setValue("35","LGORT");
t_item.setValue("36","MENGE");
t_item.setValue("37","MEINS");
//4排
t_item.appendRow();
t_item.setRow(3);
t_item.setValue("41","EBELP");
t_item.setValue("42","TXZ01");
t_item.setValue("43","MATNR");
t_item.setValue("44","WERKS");
t_item.setValue("45","LGORT");
t_item.setValue("46","MENGE");
t_item.setValue("47","MEINS");
//CALLECC
client1.execute(func);
//取得返回的IDOC号
JCO.ParameterListoutput=func.getExportParameterList();
System.out.println("IDOC号:
"+output.getString("DOCNUM"));
client1.disconnect();
}
catch(java.lang.Exceptionex){
System.out.println("Applicationerror:
"+ex);
}
}
}
三:
测试结果
执行ZJCO_IDOC_001类
得到IDOC号:
0000000000028566
在ECC中的WE02能查询对应的IDOC号:
0000000000028566
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JCO20 RFC在ECC中生成IDOC同步 RFC ECC 生成 IDOC 同步
![提示](https://static.bdocx.com/images/bang_tan.gif)