v1.5
This commit is contained in:
225
src/#deso#dh_utilities.clas.abap
Normal file
225
src/#deso#dh_utilities.clas.abap
Normal file
@@ -0,0 +1,225 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user