当前位置: 首页 > news >正文

上传PDF、DOC文件到SAP HCM系统中案例

背景:公司最近在上电子签系统,以实现劳动合同、保密协议等文件的去纸质化,保存为电子档文件,而企业的信息化的中心是SAP ERP,于是领导要求将签好的电子文件存储到HCM中。

题主写了如下代码实现需求:

FUNCTION ZHR_SAVE_FILE.
*"----------------------------------------------------------------------
*"*"局部接口:
*"  IMPORTING
*"     VALUE(FILE) TYPE  STRING OPTIONAL
*"     VALUE(USRTY) TYPE  CHAR4 OPTIONAL
*"     VALUE(USRID) TYPE  CHAR30 OPTIONAL
*"     VALUE(FILETYPE) TYPE  CHAR10 OPTIONAL
*"  EXPORTING
*"     VALUE(ZTYPE) TYPE  TEXT1
*"     VALUE(MESSAGE) TYPE  CHAR200
*"----------------------------------------------------------------------DATA: access_info   LIKE  scms_acinf   OCCURS 1 WITH HEADER LINE,content_txt   LIKE  sdokcntasc   OCCURS 1,content_bin   LIKE  sdokcntbin   OCCURS 1.DATA: ls_content_bin LIKE LINE OF content_bin.DATA: l_string TYPE string.DATA: l_xstring TYPE xstring.DATA: doc_id_out TYPE char40.
*  DATA: ADOKID     TYPE SAPB-SAPADOKID.
*  DATA: lt_ztb_icnum LIKE TABLE OF ztb_icnum,
*        ls_ztb_icnum LIKE LINE OF lt_ztb_icnum.access_info-comp_id    = 'data'.IF FILETYPE is INITIAL or FILETYPE = '' .ztype = 'E'.message = '请输入文件类型!' .return.ENDIF.IF USRID is INITIAL or USRID = ''.ztype = 'E'.message = '请输入人员工号!' .return.ENDIF.IF usrty IS NOT INITIAL AND usrid IS NOT INITIAL AND file IS NOT INITIAL .
*    ls_ztb_icnum-ictyp = usrty.                               "通过证件号码获取人员编号
*    ls_ztb_icnum-icnum = usrid.
*    APPEND ls_ztb_icnum TO lt_ztb_icnum.CLEAR ls_ztb_icnum.
*
*
*    IF lt_ztb_icnum[] IS NOT INITIAL.
*
*      CALL FUNCTION 'Z_IF_HR_PA_CHECK'
*        TABLES
*          tb_hr_icnum = lt_ztb_icnum.
*
*    ENDIF.
*
*    READ TABLE lt_ztb_icnum INTO ls_ztb_icnum INDEX 1.
*
*    IF ls_ztb_icnum-pernr IS NOT INITIAL.                         "判断是否能找到SAP对应的人员编号CALL FUNCTION 'SCMS_BASE64_DECODE_STR'EXPORTINGinput    = file
*     unescape = 'X'IMPORTINGoutput   = l_xstringEXCEPTIONSfailed   = 1OTHERS   = 2.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF.CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'EXPORTINGbuffer                = l_xstring
*     APPEND_TO_TABLE       = ' '
*   IMPORTING
*     OUTPUT_LENGTH         =TABLESbinary_tab            = content_bin.DATA: lv_nu TYPE i.CLEAR l_string.CLEAR access_info-comp_size.LOOP AT content_bin INTO ls_content_bin.l_string = ls_content_bin-line.access_info-comp_size = STRLEN( l_string ) + access_info-comp_size.ENDLOOP.access_info-mimetype   = 'application/*'.access_info-binary_flg = 'X'.access_info-first_line = 1.access_info-last_line = LINES( content_bin ).APPEND access_info.CALL FUNCTION 'SCMS_R3DB_EXPORT'EXPORTINGmandt             = sy-mandtcrep_id           = 'A2'doc_id            = ''doc_prot          = 'rud'overwrite         = '-'vscan_profile     = '/SCMS/KPRO_CREATE'IMPORTINGdoc_id_out        = doc_id_outTABLESaccess_info       = access_infocontent_txt       = content_txtcontent_bin       = content_binEXCEPTIONSerror_export      = 1error_import      = 2error_parameter   = 3blocked_by_policy = 4OTHERS            = 5.IF sy-subrc <> 0.
*    case sy-subrc.
*      when 1.      sys_message_raising error_export.
*      when 2.      sys_message_raising error_export.
*      when 3.      sys_message_raising error_parameter.
*      when 4.      sys_message_raising blocked_by_policy.
*      when others. sys_message_raising error_export.
*    endcase.ELSE.DATA: BEGIN OF i_toaom OCCURS 1.INCLUDE STRUCTURE toaom.DATA: END OF i_toaom.DATA: BEGIN OF i_toav0 OCCURS 1.INCLUDE STRUCTURE toav0.DATA: END OF i_toav0.REFRESH i_toaom.i_toav0-mandt       = sy-mandt.i_toav0-sap_object  = 'PREL'.i_toav0-archiv_id  = 'A2'.i_toav0-object_id  = usrid. "pernr-pernri_toav0-ar_object   = 'HRICONTRAC'.i_toav0-ar_date     = sy-datum.
*  I_TOAV0-DEL_DATE    = SY-DATUM.i_toav0-reserve     = filetype.i_toav0-arc_doc_id  = doc_id_out.APPEND i_toav0.CALL FUNCTION 'ARCHIV_CONNECTIONTABLE_INSERT'TABLESentrys_connectiontable = i_toav0EXCEPTIONSno_entry_possible      = 1OTHERS                 = 2.CASE sy-subrc.WHEN 1.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4RAISING no_entry_possible.WHEN 2.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4RAISING others.WHEN OTHERS.ztype = 'S'.message = '上传成功'.ENDCASE.ENDIF.
*    ELSE.
*      ztype = 'E'.
*      CONCATENATE '无法在SAP系统中找到证件号码为:' ls_ztb_icnum-icnum ',的人员!' INTO message .ENDIF.
*  ELSE.
*    ztype = 'E'.
*    message = '请输入所有必输项!'.
*  ENDIF.ENDFUNCTION.

效果图如下:


http://www.mrgr.cn/news/5832.html

相关文章:

  • 信息学奥赛初赛天天练-73-NOIP2016普及组-基础题4-枚举法、放苹果、统筹方法
  • 学习笔记第三十天
  • 点灯案例练习(基于寄存器)
  • Bigtop 从0开始(下)
  • 如何通过数据互通提升销售效率与客户满意度
  • GraphRAG + Ollama 本地部署全攻略:避坑实战指南
  • 二分类交叉熵与多分类交叉熵详解及实例计算
  • 手动修改zk类型的kafka offset
  • 推荐大模型书籍|《扩散模型从原理到实战》
  • qt的QCustomPlot绘制实时曲线图总结
  • 数据结构(6_3_1)——图的广度优先遍历
  • 关于Arrays.asList返回List无法新增和删除?
  • 浅谈Kafka(一)
  • 龙格-库塔法(Matlab实现)
  • 【Python机器学习】NLP概述——聊天机器人的自然语言流水线
  • 【vue3|第25期】Vue3中的useRoute:轻松访问路由信息
  • Baumer工业相机堡盟工业相机如何通过BGAPISDK初始化时过滤其它非Baumer相机(C++)
  • 实时手势识别(2)- 基于关键点分类实现零样本图片的任意手势的识别
  • 大数据面试-Zookeeper
  • Stable Diffusion【应用篇】【艺术写真】:超高相似度人物换脸写真,IP-Adapter与InstantID完美结合