226 lines
6.1 KiB
ABAP
226 lines
6.1 KiB
ABAP
class /DESO/DH_UTILITIES definition
|
|
public
|
|
final
|
|
create public .
|
|
|
|
public section.
|
|
|
|
data GT_WHERE type ICL_LINE_TT .
|
|
|
|
class-methods GET_PARAM
|
|
importing
|
|
value(PARAM) type /DESO/DH_OBJECT
|
|
value(DATA) type /DESO/S_DATA
|
|
returning
|
|
value(VALUE) type EDC_REFKEY .
|
|
class-methods SET_PARAM
|
|
importing
|
|
value(PARAM) type /DESO/DH_OBJECT
|
|
value(VALUE) type EDC_REFKEY
|
|
changing
|
|
!CS_DATA type /DESO/S_DATA .
|
|
methods INSERT_MESSAGE
|
|
importing
|
|
!IV_VIEW type /DESO/DH_VIEW
|
|
!IV_OBJECT type /DESO/DH_OBJECT
|
|
!IV_OBJKEY type EDC_REFKEY
|
|
!IV_REFOBJ type /DESO/DH_OBJECT
|
|
!IV_REFKEY type EDC_REFKEY
|
|
!IV_REFFLD type FIELDNAME optional
|
|
!IV_MSGTY type SYST_MSGTY optional
|
|
!IV_MSGID type SYST_MSGID optional
|
|
!IV_MSGNO type SYST_MSGNO optional
|
|
!IV_MSGV1 type SYST_MSGV optional
|
|
!IV_MSGV2 type SYST_MSGV optional
|
|
!IV_MSGV3 type SYST_MSGV optional
|
|
!IV_MSGV4 type SYST_MSGV optional
|
|
!IV_MSGTXT type NATXT optional
|
|
changing
|
|
!IS_DATA type /DESO/DH_MESSAGE .
|
|
methods GET_WHERE
|
|
importing
|
|
!IV_TABNAME type TABNAME
|
|
!IV_OBJECT type /DESO/DH_OBJECT
|
|
!IV_OBJKEY type EDC_REFKEY .
|
|
methods GET_TAB
|
|
importing
|
|
!IV_OBJECT type /DESO/DH_OBJECT
|
|
exporting
|
|
!ET_TABNAME type /DESO/DH_TT_TABNAME
|
|
!ET_CHECK_FIELD type /DESO/DH_TT_CHECK_FIELD
|
|
exceptions
|
|
NOT_CUSTOMIZED .
|
|
PROTECTED SECTION.
|
|
private section.
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS /DESO/DH_UTILITIES IMPLEMENTATION.
|
|
|
|
|
|
METHOD get_tab.
|
|
|
|
SELECT tabname FROM /deso/dh_c_tab
|
|
INTO TABLE et_tabname
|
|
WHERE object = iv_object.
|
|
|
|
IF sy-subrc = 0.
|
|
SELECT * FROM dd03l
|
|
INTO CORRESPONDING FIELDS OF TABLE et_check_field
|
|
FOR ALL ENTRIES IN et_tabname
|
|
WHERE tabname = et_tabname-tabname
|
|
AND checktable NE space
|
|
AND NOT ( fieldname EQ 'CLIENT'
|
|
OR fieldname EQ 'MANDT' )
|
|
AND domname NE 'AD_ADDRNUM'.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD get_where.
|
|
DATA: ls_fieldname TYPE fieldname.
|
|
DATA: ls_value TYPE string.
|
|
DATA: ls_where TYPE string.
|
|
|
|
REFRESH gt_where.
|
|
|
|
ls_value = '"' && iv_objkey && '"'.
|
|
REPLACE ALL OCCURRENCES OF '"' IN ls_value WITH ''''.
|
|
|
|
SELECT fieldname FROM dd03l INTO ls_fieldname
|
|
WHERE tabname = iv_tabname
|
|
AND keyflag = abap_true
|
|
ORDER BY position.
|
|
CHECK ls_fieldname NE 'CLIENT'
|
|
AND ls_fieldname NE 'MANDT'
|
|
AND ls_fieldname(1) NE '.'.
|
|
CONCATENATE ls_fieldname '=' ls_value INTO ls_where SEPARATED BY space .
|
|
APPEND ls_where TO gt_where.
|
|
EXIT.
|
|
ENDSELECT.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD insert_message.
|
|
|
|
DATA: lv_msgtxt TYPE natxt.
|
|
DATA: lv_msgnr TYPE msgnr.
|
|
DATA: lv_msgid TYPE syst_msgid.
|
|
DATA: lv_msgty TYPE syst_msgty.
|
|
DATA: ls_data TYPE /deso/dh_message.
|
|
|
|
lv_msgnr = iv_msgno.
|
|
lv_msgty = iv_msgty.
|
|
lv_msgid = iv_msgid.
|
|
|
|
IF lv_msgid IS INITIAL.
|
|
lv_msgid = '/DESO/'.
|
|
ENDIF.
|
|
IF lv_msgty IS INITIAL.
|
|
lv_msgty = 'E'.
|
|
ENDIF.
|
|
|
|
|
|
IF iv_msgtxt IS INITIAL.
|
|
CALL FUNCTION 'MESSAGE_PREPARE'
|
|
EXPORTING
|
|
language = 'D'
|
|
msg_id = lv_msgid
|
|
msg_no = lv_msgnr
|
|
msg_var1 = iv_msgv1
|
|
msg_var2 = iv_msgv2
|
|
msg_var3 = iv_msgv3
|
|
msg_var4 = iv_msgv4
|
|
IMPORTING
|
|
msg_text = lv_msgtxt
|
|
EXCEPTIONS
|
|
function_not_completed = 1
|
|
message_not_found = 2
|
|
OTHERS = 3.
|
|
ELSE.
|
|
lv_msgtxt = iv_msgtxt.
|
|
ENDIF.
|
|
|
|
is_data-object = iv_object.
|
|
is_data-objkey = iv_objkey.
|
|
is_data-refobject = iv_refobj.
|
|
is_data-refobjkey = iv_refkey.
|
|
is_data-reffld = iv_reffld.
|
|
is_data-check_view = iv_view.
|
|
is_data-msgty = lv_msgty.
|
|
is_data-msgid = lv_msgid.
|
|
is_data-msgno = lv_msgnr.
|
|
is_data-msgv1 = iv_msgv1.
|
|
is_data-msgv2 = iv_msgv2.
|
|
is_data-msgv3 = iv_msgv3.
|
|
is_data-msgv4 = iv_msgv4.
|
|
is_data-msgtxt = lv_msgtxt.
|
|
is_data-crdate = sy-datum.
|
|
is_data-crtime = sy-uzeit.
|
|
is_data-crname = sy-uname.
|
|
is_data-status = '@0A@'.
|
|
DO.
|
|
SELECT SINGLE * FROM /deso/dh_message
|
|
WHERE
|
|
check_view = @is_data-check_view AND
|
|
object = @is_data-object AND
|
|
objkey = @is_data-objkey AND
|
|
class = @is_data-class AND
|
|
method = @is_data-method AND
|
|
refobject = @is_data-refobject AND
|
|
refobjkey = @is_data-refobjkey AND
|
|
reffld = @is_data-reffld AND
|
|
msgty = @is_data-msgty AND
|
|
msgid = @is_data-msgid AND
|
|
msgno = @is_data-msgno
|
|
INTO @ls_data.
|
|
IF sy-subrc EQ 0.
|
|
SELECT SINGLE FOR UPDATE * FROM /deso/dh_message
|
|
WHERE
|
|
check_view = @is_data-check_view AND
|
|
object = @is_data-object AND
|
|
objkey = @is_data-objkey AND
|
|
class = @is_data-class AND
|
|
method = @is_data-method AND
|
|
refobject = @is_data-refobject AND
|
|
refobjkey = @is_data-refobjkey AND
|
|
reffld = @is_data-reffld AND
|
|
msgty = @is_data-msgty AND
|
|
msgid = @is_data-msgid AND
|
|
msgno = @is_data-msgno
|
|
INTO @ls_data.
|
|
IF sy-subrc EQ 0.
|
|
UPDATE /deso/dh_message FROM @is_data.
|
|
EXIT.
|
|
ELSE .
|
|
WAIT UP TO 5 SECONDS.
|
|
ENDIF.
|
|
ELSE.
|
|
INSERT INTO /deso/dh_message VALUES @is_data.
|
|
EXIT.
|
|
ENDIF.
|
|
ENDDO.
|
|
ENDMETHOD.
|
|
|
|
|
|
method GET_PARAM.
|
|
clear value.
|
|
READ TABLE data-iparam ASSIGNING FIELD-SYMBOL(<fs_param>) with key param = param.
|
|
if sy-subrc eq 0.
|
|
move <fs_param>-value to value.
|
|
endif.
|
|
endmethod.
|
|
|
|
|
|
method SET_PARAM.
|
|
read table cs_data-iparam ASSIGNING FIELD-SYMBOL(<fs_data>) with key param = param.
|
|
if sy-subrc ne 0.
|
|
APPEND INITIAL LINE TO cs_data-iparam ASSIGNING <fs_data>.
|
|
endif.
|
|
move param to <fs_data>-param.
|
|
move value to <fs_data>-value.
|
|
endmethod.
|
|
ENDCLASS.
|