Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DATA: distrimodel LIKE bdi_model OCCURS 0 WITH HEADER LINE,
- change_pointers LIKE STANDARD TABLE OF bdcp,
- change_pointer LIKE bdcp,
- lt_cp TYPE TABLE OF bdicpident,
- lv_subty TYPE p0021-subty,
- lt_0021 TYPE TABLE OF p0021,
- it_data TYPE TABLE OF edidd,
- it_data1 TYPE TABLE OF edidd,
- ls_idoc_body TYPE z1i0021,
- ls_data TYPE edidd,
- lt_comm_idoc LIKE edidc OCCURS 0 WITH HEADER LINE,
- s_ctrl_rec LIKE edidc.
- CONSTANTS: lc_message_type TYPE bdcps-mestype VALUE 'ZFAMILY'.
- CALL FUNCTION 'CHANGE_POINTERS_READ'
- EXPORTING
- message_type = lc_message_type
- read_not_processed_pointers = 'X'
- TABLES
- change_pointers = change_pointers
- EXCEPTIONS
- error_in_date_interval = 1
- error_in_time_interval = 2
- OTHERS = 3.
- IF sy-subrc <> 0.
- MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
- WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
- ENDIF.
- LOOP AT change_pointers INTO change_pointer.
- IF change_pointer-cretime+0(8) <= sy-datum.
- DATA(lv_pernr) = change_pointer-tabkey+1(8).
- DATA(lv_infty) = change_pointer-tabkey+9(4).
- DATA(lv_strlen) = strlen( change_pointer-tabkey ).
- IF lv_strlen = 30.
- lv_subty = change_pointer-tabkey+13(1).
- DATA(lv_begda) = change_pointer-tabkey+14(8).
- DATA(lv_endda) = change_pointer-tabkey+22(8).
- ELSE.
- lv_subty = change_pointer-tabkey+13(2).
- lv_begda = change_pointer-tabkey+15(8).
- lv_endda = change_pointer-tabkey+23(8).
- ENDIF.
- ls_data-segnam = 'Z1I0021'.
- ls_data-mandt = sy-mandt.
- CALL FUNCTION 'HR_READ_INFOTYPE'
- EXPORTING
- tclas = 'A'
- pernr = CONV prelp-pernr( lv_pernr )
- infty = CONV prelp-infty( lv_infty )
- begda = CONV prelp-begda( lv_begda )
- endda = CONV prelp-endda( lv_endda )
- TABLES
- infty_tab = lt_0021.
- IF lt_0021 IS NOT INITIAL.
- READ TABLE lt_0021 ASSIGNING FIELD-SYMBOL(<fs_0021>) WITH KEY subty = lv_subty.
- IF <fs_0021> IS ASSIGNED.
- ls_idoc_body-pernr = <fs_0021>-pernr.
- ls_idoc_body-begda = <fs_0021>-begda.
- ls_idoc_body-endda = <fs_0021>-endda.
- ls_idoc_body-rel_type = <fs_0021>-subty.
- ls_idoc_body-dob = <fs_0021>-fgbdt.
- ls_idoc_body-first_name = <fs_0021>-favor.
- ls_idoc_body-last_name = <fs_0021>-fanam.
- ls_idoc_body-gender_key = <fs_0021>-fasex.
- ls_data-docnum = change_pointer-cpident.
- ls_data-sdata = ls_idoc_body.
- APPEND ls_data TO it_data.
- ELSE.
- IF change_pointer-cdchgid EQ 'D'.
- ls_idoc_body-pernr = <fs_0021>-pernr.
- ls_idoc_body-begda = <fs_0021>-begda.
- ls_idoc_body-endda = <fs_0021>-endda.
- ls_idoc_body-rel_type = <fs_0021>-subty.
- ls_data-sdata = ls_idoc_body.
- ls_data-docnum = change_pointer-cpident.
- APPEND ls_data TO it_data.
- ENDIF.
- ENDIF.
- ELSE.
- ls_idoc_body-pernr = lv_pernr.
- ls_idoc_body-begda = lv_begda.
- ls_idoc_body-endda = lv_endda.
- ls_idoc_body-rel_type = lv_subty.
- ls_data-sdata = ls_idoc_body.
- ls_data-docnum = change_pointer-cpident.
- APPEND ls_data TO it_data.
- ENDIF.
- ELSE.
- ls_idoc_body-pernr = lv_pernr.
- ls_idoc_body-begda = lv_begda.
- ls_idoc_body-endda = lv_endda.
- ls_idoc_body-rel_type = lv_subty.
- ls_data-sdata = ls_idoc_body.
- ls_data-docnum = change_pointer-cpident.
- APPEND ls_data TO it_data.
- ENDIF.
- CALL FUNCTION 'ALE_MODEL_INFO_GET'
- EXPORTING
- message_type = lc_message_type
- TABLES
- model_data = distrimodel
- EXCEPTIONS
- OTHERS = 0.
- IF distrimodel IS NOT INITIAL.
- s_ctrl_rec-mestyp = 'ZFAMILY' . "Message type
- s_ctrl_rec-idoctp = 'ZHR_IT0021'. "Basic IDOC type
- s_ctrl_rec-rcvprt = 'LS'. "Partner type of receiver
- s_ctrl_rec-rcvprn = 'IDECLNT810'. "Part
- CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
- EXPORTING
- master_idoc_control = s_ctrl_rec "rec_control " Control record of master IDoc
- TABLES
- communication_idoc_control = lt_comm_idoc "it_control " Control records of created comm. IDocs
- master_idoc_data = it_data " Data records of master IDoc
- EXCEPTIONS
- error_in_idoc_control = 1
- error_writing_idoc_status = 2
- error_in_idoc_data = 3
- sending_logical_system_unknown = 4
- OTHERS = 5.
- IF sy-subrc <> 0.
- MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
- WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
- ELSE.
- CLEAR lt_cp.
- APPEND VALUE #( cpident = change_pointer-cpident ) TO lt_cp.
- CALL FUNCTION 'CHANGE_POINTERS_STATUS_WRITE'
- EXPORTING
- message_type = 'ZFAMILY'
- TABLES
- change_pointers_idents = lt_cp.
- ENDIF.
- ENDIF.
- ENDLOOP.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement