上传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

相关文章

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

使用Python实现批量分割PDF文件

《使用Python实现批量分割PDF文件》这篇文章主要为大家详细介绍了如何使用Python进行批量分割PDF文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、架构设计二、代码实现三、批量分割PDF文件四、总结本文将介绍如何使用python进js行批量分割PDF文件的方法

使用Python实现PDF与SVG互转

《使用Python实现PDF与SVG互转》SVG(可缩放矢量图形)和PDF(便携式文档格式)是两种常见且广泛使用的文件格式,本文将详细介绍如何使用Python实现SVG和PDF之间的相互转... 目录使用工具使用python将SVG转换为PDF使用Python将SVG添加到现有PDF中使用Python将PD

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck