云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

网站空间_网易云是腾讯的吗_哪家好

小七 141 0

网站空间_网易云是腾讯的吗_哪家好

Hello!

Since you have a task to attach a file to HR object you may spend a lot of time learning how to do it.

Once I did it I wanted to keep this knowledge here to return here when required.

Actualy here is just 1 method implementation to do it:

class-methods ATTACH_FILE_TO_THE_HROBJID

importing

!IV_OBJID type HROBJID

!IV_OTYPE type OTYPE

!IV_FILENAME type STRING

!IV_DESCRIPT type STRING

!IR_LOGINST type ref to CL_CCMS_APPLOG optional

!IV_HEXCONT type XSTRING

!IV_DOCTYPE type SO_OBJ_TP default ‘PDF’ .

METHOD attach_file_to_the_hrobjid.

DATA: lv_msgty TYPE msgty,

lv_msgid TYPE msgid,

lv_msgno TYPE symsgno,

lv_msgv1 TYPE msgv1,

lv_msgv2 TYPE msgv2,

lv_msgv3 TYPE msgv3.

DEFINE add_log_msg.

if ir_loginst is supplied.

lv_msgty = &1.

lv_msgid = &2.

lv_msgno = &3.

lv_msgv1 = &4.

lv_msgv2 = &5.

lv_msgv3 = &6.

ir_loginst->add_message(

ip_msg_type = lv_msgty

ip_msg_id   = lv_msgid

ip_msg_no   = lv_msgno

ip_msg_v1   = lv_msgv1

ip_msg_v2   = lv_msgv2

ip_msg_v3   = lv_msgv3 ).

endif.

END-OF-DEFINITION.

*  Check if the object exists

*  The fastest way is to access the DB table

DATA: lv_plvar TYPE hrp1000–plvar.

SELECT SINGLE plvar INTO lv_plvar

FROM hrp1000

WHERE plvar = cl_hap_pmp_const=>plvar and

otype = iv_otype AND

objid = iv_objid.

IF sy–subrc 0.

"add_log_msg ‘E’ ‘ ‘ 030 iv_otype iv_objid ". "#EC NOTEXT

RETURN.

ENDIF.

* Here is your logic to check if there’s already file attached

IF sy–subrc 4.

"add_log_msg ‘E’ ‘ ‘ 031 iv_objid " ". "#EC NOTEXT

RETURN.

ENDIF.

DATA: ls_folder TYPE soodk.

CALL FUNCTION ‘SO_FOLDER_ROOT_ID_GET’

EXPORTING

region                = ‘B’                           "#EC NOTEXT

IMPORTING

folder_id             = ls_folder

EXCEPTIONS

communication_failure = 1

owner_not_exist       = 2

system_failure        = 3

x_error               = 4

OTHERS                = 5.

IF sy–subrc 0.

* Implement suitable error handling here

ENDIF.

*  Convert hex string to hex table

DATA: lv_binsize TYPE i,

lt_hextab  TYPE TABLE OF solix,

ls_docdat  TYPE sodocchgi1,

ls_docinfo TYPE sofolenti1.

CALL FUNCTION ‘SCMS_XSTRING_TO_BINARY’

EXPORTING

buffer        = iv_hexcont

IMPORTING

output_length = lv_binsize

TABLES

binary_tab    = lt_hextab.

*  Prepare some attributes for the file

ls_docdat–doc_size  = lv_binsize.

ls_docdat–obj_name  = iv_filename.

ls_docdat–obj_descr = iv_descript.

*  Create the file

CALL FUNCTION ‘SO_DOCUMENT_INSERT_API1’

EXPORTING

folder_id                  = ls_folder

document_data              = ls_docdat

document_type              = iv_doctype

IMPORTING

document_info              = ls_docinfo

TABLES

contents_hex               = lt_hextab

EXCEPTIONS

folder_not_exist           = 1

document_type_not_exist    = 2

operation_no_authorization = 3

parameter_error            = 4

x_error                    = 5

enqueue_error              = 6

OTHERS                     = 7.

IF sy–subrc 0.

* Implement suitable error handling here

add_log_msg ‘E’ sy–msgid sy–msgno sy–msgv1 sy–msgv2 sy–msgv3. "#EC NOTEXT

RETURN.

ENDIF.

*  Create relation between file and the object

DATA:   ls_object        TYPE borident,

ls_attachmnt     TYPE borident.

ls_object–objkey = lv_plvar && iv_objid.

ls_object–objtype = c_prefix_hrobj && iv_otype.

ls_attachmnt–objtype = ‘MESSAGE’.                         "#EC NOTEXT

ls_attachmnt–objkey  = ls_docinfo–doc_id(34).

CALL FUNCTION ‘BINARY_RELATION_CREATE’

EXPORTING

obj_rolea      = ls_object

obj_roleb      = ls_attachmnt

relationtype   = ‘ATTA’                               "#EC NOTEXT

fire_events    = abap_false

EXCEPTIONS

no_model       = 1

internal_error = 2

unknown        = 3

OTHERS         = 4.

IF sy–subrc 0.

* Implement suitable error handling here

add_log_msg ‘E’ sy–msgid sy–msgno sy–msgv1 sy–msgv2 sy–msgv3. "#EC NOTEXT

RETURN.

ELSE.

COMMIT WORK AND WAIT.

ENDIF.

*Here you may implement your logic to check if file was attached

IF sy–subrc = 0.

*    Success

"add_log_msg ‘S’ ‘ ‘ 032 iv_objid " ". "#EC NOTEXT

RETURN.

ELSE.

*    Failed

"add_log_msg ‘E’ ‘ ‘ 033 iv_objid " ". "#EC NOTEXT

RETURN.

ENDIF.

ENDMETHOD.

I know this will help me in future. Hope it will useful for you as well.

,物联网智库,企业信息化软件,返利系统,淘客返利app,返利软件