IDOC Inbound flow steps:
1. Creation of segment (WE31)
2. Basic idoc type creation (WE30)
3. Message type creation (WE81)
4. Assign message type to basic idoc type (WE82)
5. Creating Function module (SE37)
6. Assign Function module to logical system (WE57).
7. Define input Method for Inbound function module (BD51).
8. Creating process code (WE42).
9. Generating the Partner Profile (BD64).
10. Partner profile (WE20)
Create Segment type
Go to t code WE31:
Provide the Segment name: Z1SRQTEV



Click on Create button

Provide short description and field names to we are received data from outbound idoc.



Click on save button

Click on back button find the segment definition is created


Basic idoc type creation:
Go to WE30:


Provide object name:ZHRRQTEV01


Click on create button


Provide description and create new radio button



Click on enter



Click on create
Provide segment type and min and max numbers after click one ok button



Click on save button


MESSAGE type creation:
Go to transaction code: WE81

Click on display change button popup is shown like below click on ok

Click on new entries tab

Provide message type and short text


Click on save button
Message type is created
ASSIGN MESSAGE TYPE TO IDOCTYPE
Go to transaction code: WE82

Click on display change button

Click on new entries tab




Click on save button
CREATE FUNCTION MODULE
Go to transaction code:SE37
Provide function module name: ZFHR_PT_CATSDB_APRISO12


Click on create button


Provide function group name and short text


Click on save button
Create function module
Import, export, tables and source code
FUNCTION ZFHR_PT_CATSDB_APRISO.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(INPUT_METHOD) LIKE BDWFAP_PAR-INPUTMETHD
*" REFERENCE(MASS_PROCESSING) LIKE BDWFAP_PAR-MASS_PROC
*" EXPORTING
*" REFERENCE(WORKFLOW_RESULT) LIKE BDWF_PARAM-RESULT
*" REFERENCE(APPLICATION_VARIABLE) LIKE BDWF_PARAM-APPL_VAR
*" REFERENCE(IN_UPDATE_TASK) LIKE BDWFAP_PAR-UPDATETASK
*" REFERENCE(CALL_TRANSACTION_DONE) LIKE BDWFAP_PAR-CALLTRANS
*" TABLES
*" IDOC_CONTRL STRUCTURE EDIDC
*" IDOC_DATA STRUCTURE EDIDD
*" IDOC_STATUS STRUCTURE BDIDOCSTAT
*" RETURN_VARIABLES STRUCTURE BDWFRETVAR
*" SERIALIZATION_INFO STRUCTURE BDI_SER
*" EXCEPTIONS
*" WRONG_FUNCTION_CALLED
*"----------------------------------------------------------------------
* Include File containing ALE constants
INCLUDE MBDCONWF.
TABLES : CATSDB,
PA2003.
DATA : WA_ZSHR_RQTEV TYPE ZSHR_RQTEV, "Structure
WA_Z1SRQTEV TYPE Z1SRQTEV, "segment
wa_data type edidd,
WA_CATSDB TYPE CATSDB,
IT_CATSDB TYPE TABLE OF CATSDB,
WA_P2003 TYPE PA2003,
IT_P2003 TYPE TABLE OF PA2003,
return TYPE bapireturn1.
DATA: empnumber TYPE hr_pernr,
message TYPE string,
ret TYPE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA: catsrecords_input LIKE bapicats1 OCCURS 0 WITH HEADER LINE,
sendercostcentre TYPE kostl,
profile TYPE catsvarian VALUE 'USP-LGL1',
wa_i_catsrecords_input LIKE bapicats1.
WORKFLOW_RESULT = C_WF_RESULT_OK.
LOOP AT IDOC_DATA INTO WA_DATA. "WHERE DOCNUM EQ IDOC_CONTRL-DOCNUM.
CASE WA_DATA-SEGNAM.
WHEN 'Z1SRQTEV'.
AT NEW SEGNUM.
WA_Z1SRQTEV = WA_DATA-SDATA.
MOVE-CORRESPONDING WA_Z1SRQTEV TO WA_P2003.
MOVE-CORRESPONDING WA_Z1SRQTEV TO WA_CATSDB.
APPEND WA_CATSDB TO IT_CATSDB.
ENDAT.
***********begin of insert data in pa2003 infotype
CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
EXPORTING
number = WA_P2003-pernr
IMPORTING
return = return.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = '2003'
number = WA_P2003-pernr
SUBTYPE = WA_P2003-subty
VALIDITYEND = WA_P2003-endda
VALIDITYBEGIN = WA_P2003-begda
record = WA_P2003
operation = 'INS'
IMPORTING
RETURN = return
.
if sy-subrc = 0.
message 'INSERT DATA IN INFOTYPE SUCCESSFULLY' type 'I'.
endif.
*mapping
CATSDB-PERNR = catsrecords_input-employeenumber.
CATSDB-WORKDATE = catsrecords_input-workdate.
CATSDB-BEGUZ = catsrecords_input-STARTTIME.
CATSDB-ENDUZ = catsrecords_input-ENDTIME.
CATSDB-CATSHOURS = catsrecords_input-CATSHOURS.
CATSDB-AWART = catsrecords_input-ABS_ATT_TYPE.
CATSDB-STATUS = '30'.
move-corresponding wa_catsdb to catsrecords_input.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = sendercostcentre
IMPORTING
output = sendercostcentre.
CALL FUNCTION 'BAPI_CATIMESHEETMGR_INSERT'
EXPORTING
profile = profile
TABLES
catsrecords_in = catsrecords_input
return = ret
.
IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
IF ret[] IS INITIAL.
CONCATENATE 'Time Sheet has been filled successfully for' empnumber INTO message SEPARATED BY space.
ELSE.
READ TABLE ret WITH KEY type = 'E'.
IF sy-subrc EQ 0.
message = ret-message.
ELSE.
READ TABLE ret INDEX 1.
message = ret-message.
ENDIF.
ENDIF.
ELSE.
READ TABLE ret WITH KEY type = 'E'.
IF sy-subrc EQ 0.
message = ret-message.
ELSE.
READ TABLE ret WITH KEY type = 'A'.
IF sy-subrc EQ 0.
message = ret-message.
ELSE.
READ TABLE ret INDEX 1.
message = ret-message.
ENDIF.
ENDIF.
ENDIF.
if sy-subrc = 0.
message 'INSERT DATA IN CATSDB TABLE SUCCESSFULLY' type 'I'.
endif.
*****************end of insert the data in catsdb table
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'ZHR'.
IDOC_STATUS-MSGNO = '012'.
IDOC_STATUS-MSGV1 = WA_CATSDB-PERNR.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'ZHR'.
IDOC_STATUS-MSGNO = '013'.
IDOC_STATUS-MSGV1 = WA_CATSDB-PERNR.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
endcase.
endloop.
ENDFUNCTION.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(INPUT_METHOD) LIKE BDWFAP_PAR-INPUTMETHD
*" REFERENCE(MASS_PROCESSING) LIKE BDWFAP_PAR-MASS_PROC
*" EXPORTING
*" REFERENCE(WORKFLOW_RESULT) LIKE BDWF_PARAM-RESULT
*" REFERENCE(APPLICATION_VARIABLE) LIKE BDWF_PARAM-APPL_VAR
*" REFERENCE(IN_UPDATE_TASK) LIKE BDWFAP_PAR-UPDATETASK
*" REFERENCE(CALL_TRANSACTION_DONE) LIKE BDWFAP_PAR-CALLTRANS
*" TABLES
*" IDOC_CONTRL STRUCTURE EDIDC
*" IDOC_DATA STRUCTURE EDIDD
*" IDOC_STATUS STRUCTURE BDIDOCSTAT
*" RETURN_VARIABLES STRUCTURE BDWFRETVAR
*" SERIALIZATION_INFO STRUCTURE BDI_SER
*" EXCEPTIONS
*" WRONG_FUNCTION_CALLED
*"----------------------------------------------------------------------
* Include File containing ALE constants
INCLUDE MBDCONWF.
TABLES : CATSDB,
PA2003.
DATA : WA_ZSHR_RQTEV TYPE ZSHR_RQTEV, "Structure
WA_Z1SRQTEV TYPE Z1SRQTEV, "segment
wa_data type edidd,
WA_CATSDB TYPE CATSDB,
IT_CATSDB TYPE TABLE OF CATSDB,
WA_P2003 TYPE PA2003,
IT_P2003 TYPE TABLE OF PA2003,
return TYPE bapireturn1.
DATA: empnumber TYPE hr_pernr,
message TYPE string,
ret TYPE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA: catsrecords_input LIKE bapicats1 OCCURS 0 WITH HEADER LINE,
sendercostcentre TYPE kostl,
profile TYPE catsvarian VALUE 'USP-LGL1',
wa_i_catsrecords_input LIKE bapicats1.
WORKFLOW_RESULT = C_WF_RESULT_OK.
LOOP AT IDOC_DATA INTO WA_DATA. "WHERE DOCNUM EQ IDOC_CONTRL-DOCNUM.
CASE WA_DATA-SEGNAM.
WHEN 'Z1SRQTEV'.
AT NEW SEGNUM.
WA_Z1SRQTEV = WA_DATA-SDATA.
MOVE-CORRESPONDING WA_Z1SRQTEV TO WA_P2003.
MOVE-CORRESPONDING WA_Z1SRQTEV TO WA_CATSDB.
APPEND WA_CATSDB TO IT_CATSDB.
ENDAT.
***********begin of insert data in pa2003 infotype
CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
EXPORTING
number = WA_P2003-pernr
IMPORTING
return = return.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = '2003'
number = WA_P2003-pernr
SUBTYPE = WA_P2003-subty
VALIDITYEND = WA_P2003-endda
VALIDITYBEGIN = WA_P2003-begda
record = WA_P2003
operation = 'INS'
IMPORTING
RETURN = return
.
if sy-subrc = 0.
message 'INSERT DATA IN INFOTYPE SUCCESSFULLY' type 'I'.
endif.
*mapping
CATSDB-PERNR = catsrecords_input-employeenumber.
CATSDB-WORKDATE = catsrecords_input-workdate.
CATSDB-BEGUZ = catsrecords_input-STARTTIME.
CATSDB-ENDUZ = catsrecords_input-ENDTIME.
CATSDB-CATSHOURS = catsrecords_input-CATSHOURS.
CATSDB-AWART = catsrecords_input-ABS_ATT_TYPE.
CATSDB-STATUS = '30'.
move-corresponding wa_catsdb to catsrecords_input.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = sendercostcentre
IMPORTING
output = sendercostcentre.
CALL FUNCTION 'BAPI_CATIMESHEETMGR_INSERT'
EXPORTING
profile = profile
TABLES
catsrecords_in = catsrecords_input
return = ret
.
IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
IF ret[] IS INITIAL.
CONCATENATE 'Time Sheet has been filled successfully for' empnumber INTO message SEPARATED BY space.
ELSE.
READ TABLE ret WITH KEY type = 'E'.
IF sy-subrc EQ 0.
message = ret-message.
ELSE.
READ TABLE ret INDEX 1.
message = ret-message.
ENDIF.
ENDIF.
ELSE.
READ TABLE ret WITH KEY type = 'E'.
IF sy-subrc EQ 0.
message = ret-message.
ELSE.
READ TABLE ret WITH KEY type = 'A'.
IF sy-subrc EQ 0.
message = ret-message.
ELSE.
READ TABLE ret INDEX 1.
message = ret-message.
ENDIF.
ENDIF.
ENDIF.
if sy-subrc = 0.
message 'INSERT DATA IN CATSDB TABLE SUCCESSFULLY' type 'I'.
endif.
*****************end of insert the data in catsdb table
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'ZHR'.
IDOC_STATUS-MSGNO = '012'.
IDOC_STATUS-MSGV1 = WA_CATSDB-PERNR.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'ZHR'.
IDOC_STATUS-MSGNO = '013'.
IDOC_STATUS-MSGV1 = WA_CATSDB-PERNR.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
endcase.
endloop.
ENDFUNCTION.
ASSIGN FM TO LOGICAL MESSAGE
Go to transaction code WE57

Click on display and change button

Click on new entries

Provide Function module name, function type, basic idoc type message type and direction




Click on save button
DEFINE INPUT M METHOD FOR INBOUND FUNCTION MODULE
Go to transaction code :BD51

Click on display and change button

Click on new entries

Provide Function module name and input type


Click on save button
CREATING PROCESS CODE
Go to transaction code: WE42


Click on display and changes button
Click on new entries

Provide process code and description
In processing type select the second radio button



Click on save button the below popup is shown


Click ok

Provide Function module name:


Click on logical message tab


Click on new entries tab


Provide message type


Click on save button
Process code is created
Generating partner profile

Click on display and changes button

Click on create create model view tab



Click on ok button
Our creating view is shown like below


Click on add message type tab




Click on ok
After modal view is shown like below


Select our modal view and go to Environment->Generate partner profile tab




Click on execute button


Our message type is successfully created message is shown
No comments:
Post a Comment