SAP ABAP:SAP端如何编写与PIPO的接口

SAPPIPO接口的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.

 

posted @ 2022-10-27 15:02  SAP蛋妞  阅读(943)  评论(0编辑  收藏  举报