Monday, 27 June 2011

IDOCS in BOUND FLOW


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





Provide message type and basic type and Realease
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.
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 save button
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