Advertisement
Guest User

Untitled

a guest
Jun 12th, 2018
3,646
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 2.61 KB | None | 0 0
  1. REPORT zdemo_idoc.
  2.  
  3. TABLES: ztbl_idoc1.
  4. DATA : s_ctrl_rec LIKE edidc, "Idoc Control Record
  5.        s_zsegment LIKE zdm_sgmt. "CUSTOMER Header Data
  6.  
  7. DATA : t_tbl_idoc1 LIKE ztbl_idoc1 OCCURS 0 WITH HEADER LINE.
  8.  
  9. DATA : t_edidd LIKE edidd OCCURS 0 WITH HEADER LINE. "Data Records
  10. DATA : lt_comm_idoc LIKE edidc OCCURS 0 WITH HEADER LINE. "Generated Communication IDOc
  11.  
  12. CONSTANTS: c_idoctp LIKE edidc-idoctp VALUE 'ZBASIC_IT'. "
  13. CONSTANTS :c_segnam LIKE edidd-segnam VALUE 'ZDM_SGMT'.  "
  14.  
  15.  
  16. SELECT-OPTIONS: s_pernr  FOR ztbl_idoc1-pernr OBLIGATORY.
  17.  
  18. PARAMETERS: c_mestyp LIKE edidc-mestyp DEFAULT 'ZDEMO_MESSTYPE', "Message type
  19.             c_rcvprt LIKE edidc-rcvprt DEFAULT 'LS', "System type
  20.             c_logsys LIKE edidc-rcvprn DEFAULT 'ERPCLNT810'. "Reciever
  21.  
  22. START-OF-SELECTION.
  23.   PERFORM generate_data_records.
  24.   PERFORM generate_control_record.
  25.   PERFORM send_idoc.
  26.  
  27. FORM generate_data_records .
  28.   SELECT * FROM ztbl_idoc1
  29.           INTO TABLE t_tbl_idoc1
  30.                   WHERE pernr IN s_pernr.
  31.   IF sy-subrc <> 0.
  32.   ENDIF.
  33.   PERFORM arrange_data_records.
  34. ENDFORM.
  35.  
  36. FORM generate_control_record .
  37.   s_ctrl_rec-mestyp = c_mestyp. "Message type
  38.   s_ctrl_rec-idoctp = c_idoctp. "Basic IDOC type
  39.   s_ctrl_rec-rcvprt = c_rcvprt. "Partner type of receiver
  40.   s_ctrl_rec-rcvprn = c_logsys. "Partner number of receiver
  41. ENDFORM.
  42.  
  43. FORM send_idoc .
  44.   CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
  45.     EXPORTING
  46.       master_idoc_control            = s_ctrl_rec
  47. *     OBJ_TYPE                       = ''
  48. *     CHNUM                          = ''
  49.     TABLES
  50.       communication_idoc_control     = lt_comm_idoc
  51.       master_idoc_data               = t_edidd
  52.     EXCEPTIONS
  53.       error_in_idoc_control          = 1
  54.       error_writing_idoc_status      = 2
  55.       error_in_idoc_data             = 3
  56.       sending_logical_system_unknown = 4
  57.       OTHERS                         = 5.
  58.   IF sy-subrc <> 0.
  59.     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
  60.     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  61.   ELSE.
  62.     COMMIT WORK.
  63.     LOOP AT lt_comm_idoc.
  64.       WRITE:/ 'IDoc Number - ', lt_comm_idoc-docnum.
  65.     ENDLOOP.
  66.   ENDIF.
  67. ENDFORM.
  68. FORM arrange_data_records .
  69.  
  70.   SORT t_tbl_idoc1 BY pernr.
  71.  
  72.   LOOP AT t_tbl_idoc1.
  73.     s_zsegment-pernr = t_tbl_idoc1-pernr.
  74.     s_zsegment-begda = t_tbl_idoc1-begda.
  75.     s_zsegment-endda = t_tbl_idoc1-endda.
  76.     s_zsegment-zfield1 = t_tbl_idoc1-zfield1.
  77.     s_zsegment-zfield2 = t_tbl_idoc1-zfield2.
  78.     s_zsegment-zfield3 = t_tbl_idoc1-zfield3.
  79.     t_edidd-segnam = c_segnam.
  80.     t_edidd-sdata = s_zsegment.
  81.     APPEND t_edidd.
  82.     CLEAR t_edidd.
  83.   ENDLOOP.
  84. ENDFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement