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

2024-08-22 14:12
文章标签 系统 pdf 案例 上传 doc sap hcm

本文主要是介绍上传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.

效果图如下:

这篇关于上传PDF、DOC文件到SAP HCM系统中案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1096495

相关文章

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取