Use this code to create the incidident
*"----
- Translate Work area to a sequence number
- Validate Plant
- No persons supplied in Involved Table are Valid
- Need to discuss about this condtion
- Populate persons Involved table
- Get Inicident controllers
- populate Incident Controllers
- Populate Incident Long Text
- Create an Incident
- Check If there is any Error
- Successfully Incident Created
""Local Interface:
*" IMPORTING
*" VALUE(I_PLANT) TYPE WERKS_D
*" VALUE(I_EVDATE) TYPE DATS
*" VALUE(I_EVTIME) TYPE CCIHE_EVTIME
*" VALUE(I_EVDESC) TYPE CCIHE_EVDESCLXT
*" VALUE(I_WORKAREA) TYPE CCIHE_WAID
*" VALUE(I_ACCIDENTLOCATION) TYPE CCIHE_ACLOCDESC OPTIONAL
*" EXPORTING
*" VALUE(E_INCIDENT) TYPE CCIHE_IALID
*" VALUE(E_IALID) TYPE CCIHE_IALID
*" VALUE(E_STATUS) TYPE CHAR4
*" VALUE(E_RETURN) TYPE BAPIRET2
*" TABLES
*" INVOLVED STRUCTURE ZEHS_IP_STRUCT
*" LONGTEXT STRUCTURE TLINE
*"----
CONSTANTS:c_zihs TYPE tdid VALUE 'ZIHS',
c_eng TYPE spras VALUE 'E',
c_e TYPE c VALUE 'E',
c_a TYPE c VALUE 'A',
c_c TYPE c VALUE 'C',
c_star TYPE c VALUE '*',
c_inc(3) TYPE c VALUE 'INC',
c_000(3) TYPE c VALUE '000',
c_crtd(4) TYPE c VALUE 'CRTD',
c_object TYPE tdobject VALUE 'Z_IHS_IAL'.
TYPES:BEGIN OF ty_inc_type,
ippers LIKE cciht_ip-ippers, " Person Involved
END OF ty_inc_type,
BEGIN OF ty_but000,
partner TYPE bu_partner, " Business Partner Number
END OF ty_but000,
tt_but000 TYPE STANDARD TABLE OF ty_but000,
BEGIN OF ty_pa0001,
pernr TYPE persno, " Person Number
END OF ty_pa0001,
tt_pa0001 TYPE STANDARD TABLE OF ty_pa0001.
DATA: l_recn TYPE cciht_wah-recn,
l_addinf TYPE rcgaddinf,
lt_api_ial_tab TYPE cihal_ial_api_tab_type,
wa_api_ial_tab TYPE cihal_ial_api_wa_type,
lt_invpers_tab TYPE TABLE OF
cihal_invpersa_api_wa_type,
wa_invpers_tab TYPE cihal_invpersa_api_wa_type,
wa_api_invpers_ltxt_tab TYPE cihal_ipltapi_wa_type,
int_api_invpers_ltxt_tab TYPE cihal_ipltapi_tab_type,
l_cciht_ial TYPE cciht_ial,
wa_api_header_tab TYPE cihal_ialhapi_wa_type,
lt_api_header_tab TYPE cihal_ialhapi_tab_type,
wa_involved TYPE yehs_ip_struct,
wa_freetext_tab TYPE cih01_dft_api_tab_type,
wa_longtext TYPE ccihs_longtextapi,
wa_longtext_tab TYPE cihal_ipltapi_tab_type,
lt_freetext_tab TYPE cih01_dft_api_tab_type,
lt_pa0001 TYPE tt_pa0001,
lt_pa0001_temp TYPE tt_pa0001 WITH HEADER LINE,
lt_but000 TYPE tt_but000,
wa_thead TYPE thead,
wa_tline TYPE tline,
lt_tline TYPE TABLE OF tline,
wa_inc TYPE ty_inc_type,
lt_inc TYPE TABLE OF ty_inc_type,
l_pernr TYPE persno,
l_flag TYPE c,
l_strlen TYPE i,
l_num TYPE symsgno,
l_werks TYPE werks_d,
l_partner TYPE bu_partner.
DATA : lo_num TYPE REF TO cx_sy_conversion_no_number.
CLEAR l_recn.
CALL FUNCTION 'CBIH_LB10_TRANS_WAID_TO_RECN'
EXPORTING
i_waid = i_workarea
IMPORTING
e_recn = l_recn
EXCEPTIONS
wa_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
e_return-type = c_e. " Error
e_return-message = 'Work Area Not Found'(001).
RETURN.
ENDIF.
SELECT SINGLE werks FROM t001w
INTO l_werks
WHERE werks EQ i_plant.
IF sy-subrc NE 0.
e_return-type = c_e.
MESSAGE s326(v1) WITH i_plant
INTO e_return-message.
RETURN.
ENDIF.
CLEAR:l_addinf.
l_addinf-valdat = sy-datum.
*validate Involved persons
IF involved[] IS NOT INITIAL.
LOOP AT involved INTO wa_involved.
CLEAR lt_pa0001_temp.
TRY.
MOVE wa_involved-ippers+0(8) TO lt_pa0001_temp-pernr .
APPEND lt_pa0001_temp.
CATCH cx_sy_conversion_no_number INTO lo_num.
e_return = c_e.
CALL METHOD lo_num->get_text
RECEIVING
result = e_return-message.
RETURN.
ENDTRY.
CLEAR wa_involved.
ENDLOOP.
SELECT pernr
INTO TABLE lt_pa0001
FROM pa0001
FOR ALL ENTRIES IN lt_pa0001_temp[]
WHERE pernr = lt_pa0001_temp-pernr
AND begda <= sy-datum
AND endda >= sy-datum
AND persg = 1.
IF sy-subrc NE 0.
l_flag = c_x.
ELSE.
SORT lt_pa0001 BY pernr.
ENDIF.
*Get all external partners
SELECT partner
INTO TABLE lt_but000
FROM but000
FOR ALL ENTRIES IN involved[]
WHERE partner = involved-ippers.
IF sy-subrc NE 0 AND l_flag EQ c_x.
ELSE.
SORT lt_but000 BY partner.
ENDIF.
ENDIF.
LOOP AT involved INTO wa_involved WHERE ippers NE space.
CLEAR: wa_invpers_tab.
READ TABLE lt_pa0001 WITH KEY pernr = wa_involved-ippers
BINARY SEARCH
TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
wa_invpers_tab-head-iptype = wa_involved-iptype.
wa_invpers_tab-head-ippers = wa_involved-ippers.
wa_invpers_tab-head-ippersgrp = c_c.
APPEND wa_invpers_tab TO lt_invpers_tab.
ELSE.
*check if external partner
READ TABLE lt_but000 WITH KEY partner = wa_involved-ippers
BINARY SEARCH
TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
wa_invpers_tab-head-iptype = wa_involved-iptype.
wa_invpers_tab-head-ippers = wa_involved-ippers.
wa_invpers_tab-head-ippersgrp = c_a.
APPEND wa_invpers_tab TO lt_invpers_tab.
ENDIF.
ENDIF.
CLEAR wa_involved.
ENDLOOP.
CALL FUNCTION 'ZEH_GET_INC_DETAILS'
EXPORTING
i_recn = l_recn
i_iptype = c_inc
TABLES
int_ippers = lt_inc.
LOOP AT lt_inc INTO wa_inc.
wa_invpers_tab-head-iptype = c_inc.
wa_invpers_tab-head-ippers = wa_inc-ippers.
wa_invpers_tab-head-ippersgrp = c_a.
APPEND wa_invpers_tab TO lt_invpers_tab.
CLEAR : wa_invpers_tab, wa_inc.
ENDLOOP.
IF NOT longtext[] IS INITIAL.
LOOP AT longtext INTO wa_tline.
wa_tline-tdformat = c_star.
APPEND wa_tline TO lt_tline.
CLEAR wa_tline.
ENDLOOP.
ENDIF.
wa_api_ial_tab-head-iaplant = i_plant.
wa_api_ial_tab-head-evdat = i_evdate.
wa_api_ial_tab-head-evtime = i_evtime.
wa_api_ial_tab-head-evdesc = i_evdesc.
wa_api_ial_tab-head-recntwah = l_recn.
wa_api_ial_tab-head-iatype = c_000.
wa_api_ial_tab-head-mtnlangu = sy-langu.
wa_api_ial_tab-invpersons_tab[] = lt_invpers_tab[].
APPEND wa_api_ial_tab TO lt_api_ial_tab.
CALL FUNCTION 'CBIH_IA30_IAL_CREATE'
EXPORTING
i_addinf = l_addinf
i_flg_header = esp1_true
i_flg_invpers = esp1_true
i_flg_invpers_ltxt = esp1_true
i_flg_freetext = esp1_true
i_flg_freetext_ltxt = esp1_true
TABLES
x_api_ial_tab = lt_api_ial_tab
EXCEPTIONS
no_object_specified = 1
parameter_error = 2
internal_error = 3
convmode_set_failed = 4
OTHERS = 5.
IF sy-subrc NE 0.
e_return-type = c_e.
MESSAGE ID sy-msgid TYPE c_s NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
INTO e_return-message.
RETURN.
ENDIF.
CLEAR:wa_api_ial_tab.
READ TABLE lt_api_ial_tab INTO wa_api_ial_tab INDEX 1.
IF wa_api_ial_tab-head-errormode EQ c_e.
l_strlen = STRLEN( wa_api_ial_tab-head-errorinfo ).
IF l_strlen GE 4.
l_num = wa_api_ial_tab-head-errorinfo+1(3).
ELSE.
l_num = wa_api_ial_tab-head-errorinfo.
ENDIF.
e_return-type = c_e.
MESSAGE ID wa_api_ial_tab-head-errorclass TYPE c_s NUMBER l_num
WITH wa_api_ial_tab-head-errorparam INTO e_return-message.
RETURN.
ELSE.
e_ialid = wa_api_ial_tab-head-ialid.
CALL FUNCTION 'CBIH_IA30_IAL_SAVE_TO_DB'.
ENDIF.
*populate long text
IF NOT longtext[] IS INITIAL.
wa_thead-tdid = c_zihs.
wa_thead-tdname = wa_api_ial_tab-head-ialid.
wa_thead-tdspras = c_eng.
wa_thead-tdobject = c_object.
CALL FUNCTION 'CREATE_TEXT'
EXPORTING
fid = wa_thead-tdid
flanguage = c_eng
fname = wa_thead-tdname
fobject = wa_thead-tdobject
save_direct = esp1_true
TABLES
flines = lt_tline
EXCEPTIONS
no_init = 1
no_save = 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.
ENDIF.
*
Edited by: Rizwan Ahmad Siddiqui on Mar 1, 2010 5:13 AM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.