SAP ABAP:SAP端如何编写与PIPO的接口
SAP与PIPO接口的ABAP处理
此文档不包含PIPO部分的配置!
SAP与PIPO的接口处理主要分为两种类型:Inbound和Outbound,以下分别以这两种方式的处理做说明。
Inbound
首先执行Tcode:SPROXY进入对象浏览器,如:
找到要处理的接口:
比如:
双击此service,系统提示:
开发类别处输入开发包,请求处选择请求号,Prefix填写前缀如Z:
点击Cont.(continue)下一步,点击完成,然后在工具栏点击激活按钮激活。
比如激活后的接口服务会有绿色标记,在实施类中实现传入的逻辑开发:
双击实施类,可以看到方法、属性等:
根据方法的参数,在方法内实现功能即可:
比如示例实现从外部HR系统接收人员资料进入客制表:
示例代码:
1 METHOD ZII_SI_EHR2ERPPM_PERSONNEL_INF~SI_EHR2ERPPM_PERSONNEL_INFORMA. 2 *** **** INSERT IMPLEMENTATION HERE **** *** 3 DATA: LT_EMP TYPE TABLE OF YFG_D_HR_EMP. 4 DATA: WA_EMP LIKE LINE OF LT_EMP. 5 6 REFRESH LT_EMP. 7 LOOP AT INPUT-MT_PERSONNEL_INFORMATION_REQUE-ROW 8 ASSIGNING FIELD-SYMBOL (<FS_EMP>). 9 CLEAR WA_EMP. 10 MOVE-CORRESPONDING <FS_EMP> TO WA_EMP. 11 IF <FS_EMP> -BIRTHDAY IS NOT INITIAL. 12 WA_EMP-BIRTHDAY = <FS_EMP>-BIRTHDAY(4) && <FS_EMP>-BIRTHDAY+5(2) && <FS_EMP>-BIRTHDAY+8(2). 13 ENDIF. 14 IF <FS_EMP>-ENTERPRISEDATE IS NOT INITIAL. 15 WA_EMP-ENTERPRISEDATE = <FS_EMP>-ENTERPRISEDATE(4) && <FS_EMP>-ENTERPRISEDATE+5(2) && <FS_EMP>-ENTERPRISEDATE+8(2). 16 ENDIF. 17 IF <FS_EMP>-ENTERDATE IS NOT INITIAL. 18 WA_EMP-ENTERDATE = <FS_EMP>-ENTERDATE(4) && <FS_EMP>-ENTERDATE+5(2) && <FS_EMP>-ENTERDATE+8(2). 19 ENDIF. 20 IF <FS_EMP>-LEAVEDATE IS NOT INITIAL. 21 WA_EMP-LEAVEDATE = <FS_EMP>-LEAVEDATE(4) && <FS_EMP>-LEAVEDATE+5(2) && <FS_EMP>-LEAVEDATE+8(2). 22 ENDIF. 23 IF <FS_EMP>-MODIFYDATE IS NOT INITIAL. 24 WA_EMP-MODIFYDATE = <FS_EMP>-MODIFYDATE(4) && <FS_EMP>-MODIFYDATE+5(2) && <FS_EMP>-MODIFYDATE+8(2). 25 ENDIF. 26 27 IF WA_EMP IS NOT INITIAL. 28 WA_EMP-MANDT = SY-MANDT. 29 GET TIME STAMP FIELD WA_EMP-TIMESTAMP. 30 APPEND WA_EMP TO LT_EMP. 31 ENDIF. 32 ENDLOOP. 33 34 CHECK LT_EMP IS NOT INITIAL. 35 MODIFY YFG_D_HR_EMP FROM TABLE LT_EMP. 36 ENDMETHOD.
Outbound
Outbound接口的程序处理与调用Webservice类似,参考接口类的数据类型在程序中调用即可。
首先同样需要再SPROXY中激活接口,如:
以下示例为推送SAP中获取的主数据至外部系统。
在SE38中建立可执行程序,取数放进接口接口类方法中的Output参数即可。以下示例:
1 REPORT YFG_SEND_AODATA. 2 3 DATA: GT_AO TYPE YFG_TT_AOLIST. 4 DATA: GV_FLAG TYPE C. 5 DATA: GV_DATE LIKE SY-DATUM. 6 DATA: G_PRXY_AO TYPE REF TO ZCO_SI_ERP2WWW_ARCHITECTURE_OB. “接口中的类 7 DATA: G_OUTPUT TYPE ZMT_ARCHITECTURE_OBJECT_MASTER. 8 9 SELECTION-SCREEN: BEGIN OF BLOCK BK1 WITH FRAME TITLE TEXT-T01. 10 PARAMETERS: RB_1 RADIOBUTTON GROUP RBG1 DEFAULT 'X', 11 RB_2 RADIOBUTTON GROUP RBG1. 12 SELECTION-SCREEN: END OF BLOCK BK1. 13 14 START-OF-SELECTION. 15 CLEAR GV_FLAG. 16 IF RB_1 = 'X'. 17 GV_FLAG = ' '. 18 ELSE. 19 GV_FLAG = 'X'. 20 ENDIF. 21 22 * 注意:FM 獲取的是當天的變更清單,background Job放在凌晨12點之後,則此處減一天 23 CLEAR GV_DATE. 24 GV_DATE = SY-DATUM - 1. 25 REFRESH GT_AO. 26 CALL FUNCTION 'YFG_GET_DATA_AO' 27 EXPORTING 28 IV_DATE = GV_DATE 29 IV_FLAG = GV_FLAG 30 IMPORTING 31 ET_AO = GT_AO. 32 33 END-OF-SELECTION. 34 CHECK GT_AO IS NOT INITIAL. 35 REFRESH G_OUTPUT-MT_ARCHITECTURE_OBJECT_MASTER-ROWS. 36 MOVE-CORRESPONDING GT_AO TO G_OUTPUT-MT_ARCHITECTURE_OBJECT_MASTER-ROWS. 37 38 IF SY-SUBRC = 0. 39 CREATE OBJECT G_PRXY_AO. 40 TRY. 41 CALL METHOD G_PRXY_AO->SI_ARCHITECTURE_OBJECT_MASTER 42 EXPORTING 43 OUTPUT = G_OUTPUT. 44 CATCH CX_AI_SYSTEM_FAULT . 45 ENDTRY. 46 ENDIF.
原创声明:转载或引用请务必@SAP蛋妞 Daniel-胡莲舟