OA通过调用RFC实现员工报销的接口
FUNCTION zfmfi_if804.*"----------------------------------------------------------------------*"*"本地接口:*" IMPORTING*" VALUE(IS_HEAD) TYPE ZSLOG_101 OPTIONAL*" EXPORTING*" VALUE(ES_HEAD) TYPE ZSLOG_101*" VALUE(EV_STATUS) TYPE BAPI_MTYPE*" VALUE(EV_MESSAGE) TYPE BAPI_MSG*" TABLES*" T_HEAD STRUCTURE ZSFI_001H OPTIONAL*" T_ITEM STRUCTURE ZSFI_001 OPTIONAL*" T_RETURN STRUCTURE ZSFI_001R OPTIONAL*"---------------------------------------------------------------------- zfdatasave_name 'ZFMFI_IF804'. DATA: ls_documentheader TYPE bapiache09, "待传凭证抬头 工作区 ls_accountgl TYPE bapiacgl09, "总帐科目项 工作区 lt_accountgl TYPE STANDARD TABLE OF bapiacgl09, "总帐科目项内表 ls_currencyamount TYPE bapiaccr09, "货币项目 工作区 lt_currencyamount TYPE STANDARD TABLE OF bapiaccr09, "货币项目 内表 ls_accountreceivable TYPE bapiacar09, "客户项目 工作区 lt_accountreceivable TYPE STANDARD TABLE OF bapiacar09, "客户项目 内表 ls_accountpayable TYPE bapiacap09, "供应商项目 工作区 lt_accountpayable TYPE STANDARD TABLE OF bapiacap09, "供应商项目内表 lt_tax TYPE STANDARD TABLE OF bapiactx09, "税务项目 ls_tax TYPE bapiactx09, "税务项目 ls_return TYPE bapiret2, "返回参数 工作区 lt_return TYPE STANDARD TABLE OF bapiret2, "参考结构 内表 lt_extension2 TYPE STANDARD TABLE OF bapiparex, "参考结构 内表 ls_extension2 TYPE bapiparex, lv_belnr TYPE bapiache09-obj_key. "参考结构 内表 "扩展字段 DATA: ls_zexten LIKE zexten. "ZEXTEN SE11创建的那个结构 DATA:lv_no TYPE i. DATA:ls_return1 TYPE zsfi_001r, lt_log TYPE TABLE OF ztfico001, ls_log TYPE ztfico001, lv_kostl TYPE ztfico001-kostl, lv_message(250) TYPE c. DATA : lv_reversal TYPE bapiacrev, lv_bus_act TYPE bapiache09-bus_act, lv_obj_key TYPE bapiacrev-obj_key, lt_return2 TYPE TABLE OF bapiret2 WITH HEADER LINE, ls_return2 TYPE bapiret2, lv_lgo_sys TYPE tbdls-logsys.*--Changeby TCD 2026-02-28--start------------------------------------------------* 需求:当费用科目为福利费(6601040100)或职工教育经费(6601050100)时,* 需要增加应付职工薪酬过渡科目,生成三行凭证:* 行1:借:费用科目(原借贷方向不变)* 行2:贷:应付职工薪酬-费用科目(计提)* 行3:借:应付职工薪酬-费用科目(支付)* 原凭证中的其他应收款科目由其他行处理保持不变 "需要特殊处理的费用科目 CONSTANTS: BEGIN OF lc_special_expense, welfare TYPE saknr VALUE '6601040100', "福利费 education TYPE saknr VALUE '6601050100', "职工教育经费 END OF lc_special_expense. "对应的应付职工薪酬科目 CONSTANTS: BEGIN OF lc_payable, welfare TYPE saknr VALUE '2211020000', "应付职工薪酬-福利费 education TYPE saknr VALUE '2211050000', "应付职工薪酬-职工教育经费 END OF lc_payable.*--Changeby TCD 2026-02-28--end------------------------------------------------ lv_no = 0. "报销 LOOP AT t_head INTO DATA(ls_head).*--------add by TCD on 20260120-----------start*限制不能重复创建会计凭证*确保凭证抬头文本抬头是唯一的*凭证抬头文本是OA的流程单(例如:FYBXD2026011925247) DATA: lv_bktxt_exists TYPE bkpf-belnr. CLEAR: lv_bktxt_exists. "检查BKPF表中是否存在相同的凭证抬头文本 SELECT SINGLE belnr FROM bkpf INTO @lv_bktxt_exists WHERE bktxt = @ls_head-bktxt AND bukrs = @ls_head-bukrs AND xreversal = ''. "如果凭证已经存在,则返回成功消息,跳过处理 IF lv_bktxt_exists IS NOT INITIAL. ls_return1-status = 'S'. ls_return1-belnr = lv_bktxt_exists. ls_return1-bukrs = ls_head-bukrs. ls_return1-gjahr = ls_head-gjahr. ls_return1-message = |凭证已存在,无需重复创建.|. APPEND ls_return1 TO t_return. "记录日志 ls_log-rldnr = ls_head-rldnr. "分类账 ls_log-bukrs = ls_head-bukrs. "分类账 ls_log-gjahr = ls_head-gjahr. "分类账 ls_log-zlsh = ls_head-bktxt. "流水号 ls_log-belnr = lv_bktxt_exists."会计凭证号 ls_log-zzt = '10'. "状态 ls_log-status = 'S'. ls_log-message = |凭证已存在,无需重复创建.|. APPEND ls_log TO lt_log. CONTINUE. "跳过当前凭证的处理 ENDIF.*--------add by TCD on 20260120-----------end "抬头 ls_documentheader-username = sy-uname. "创建人 ls_documentheader-header_txt = ls_head-bktxt. "凭证抬头文本 ls_documentheader-comp_code = ls_head-bukrs. "公司代码 ls_documentheader-doc_date = ls_head-bldat. "凭证中的凭证日期 ls_documentheader-pstng_date = ls_head-budat. "凭证中的过账日期 ls_documentheader-fisc_year = ls_head-gjahr. "会计年度 ls_documentheader-fis_period = ls_head-monat. "会计期间 ls_documentheader-doc_type = 'SA'. "凭证类型 ls_documentheader-ref_doc_no = ls_head-xblnr. "参考凭证编号* ls_documentheader-ac_doc_no = ls_head-belnr. "会计凭证号码 "清空内表 REFRESH: lt_accountgl, lt_currencyamount, lt_accountreceivable, lt_accountpayable, lt_tax, lt_extension2.*--Changeby TCD 2026-02-28--start------------------------------------------------ "用于记录下一个可用的行项目号,确保行号连续 DATA: lv_next_itemno TYPE posnr_acc. lv_next_itemno = 1.*--Changeby TCD 2026-02-28--end------------------------------------------------ LOOP AT t_item INTO DATA(ls_item) WHERE bktxt = ls_head-bktxt.***********changedby Jack 20241212******【D7149】******************** IF LS_ITEM-BSCHL = '40'. IF ls_item-bschl = '40' OR ls_item-bschl = '50'.***********changedby Jack 20241212******【D7149】************* IF ls_item-kostl IS NOT INITIAL. ls_log-kostl = ls_item-kostl. "成本中心 ENDIF.*--Changeby TCD 2026-02-28--start------------------------------------------------ "判断是否是需要特殊处理的费用科目 DATA: lv_is_special TYPE abap_bool. DATA: lv_payable_account TYPE saknr. CLEAR: lv_is_special, lv_payable_account. CASE ls_item-ktonr. WHEN lc_special_expense-welfare. lv_is_special = abap_true. lv_payable_account = lc_payable-welfare. WHEN lc_special_expense-education. lv_is_special = abap_true. lv_payable_account = lc_payable-education. ENDCASE. IF lv_is_special = abap_true. "========================================== "特殊处理:费用科目(福利费/职工教育经费) "生成三行凭证: "行1:借:费用科目(原借贷方向不变) "行2:贷:应付职工薪酬-费用科目(计提) "行3:借:应付职工薪酬-费用科目(支付) "========================================== "保存原始信息 DATA(lv_original_amount) = ls_item-wrbtr. DATA(lv_original_bschl) = ls_item-bschl. DATA(lv_item_text) = ls_item-sgtxt. DATA(lv_original_buzei) = ls_item-buzei.*--Changeby TCD 2026-02-28--end------------------------------------------------*--Changeby TCD 2026-02-28--start------------------------------------------------ "---------------------------------------- "行1:费用科目(原借方/贷方不变) "---------------------------------------- ls_accountgl-itemno_acc = |{ lv_next_itemno ALPHA = IN }|. ls_accountgl-gl_account = ls_item-ktonr. ls_accountgl-item_text = lv_item_text. ls_accountgl-comp_code = ls_head-bukrs. ls_accountgl-costcenter = ls_item-kostl. ls_accountgl-fis_period = ls_head-monat. ls_accountgl-fisc_year = |{ ls_head-gjahr ALPHA = IN }|. ls_accountgl-pstng_date = ls_head-budat.************ADD BY TCD 29.02.2024 14:46:46 START********* IF ls_head-check = 0. ls_accountgl-orderid = |{ ls_item-aufnr ALPHA = IN }|. "订单编号 ELSEIF ls_head-check = 1. ls_zexten-posnr = |{ lv_next_itemno ALPHA = IN }|. ls_zexten-zzhsxmid = |{ ls_item-aufnr ALPHA = IN }|. "扩展字段****CHANGE BY TCD [87463]20250314 START---*OLD* LS_ZEXTEN-BSCHL =

相关新闻

React系列-1

React系列-1

React是什么?React 是一个用于构建用户界面的 JavaScript 库,主要负责视图层开发。它采用组件化思想,将 UI 拆分为独立组件,提高代码复用性和可维护性。React 使用声明式编程方式,只需要描述界面状态而不需要手动操作 …

2026/6/19 0:06:58 阅读更多 →
基于flask的计件工人工资管理系统-vue pycharm django

基于flask的计件工人工资管理系统-vue pycharm django

目录技术栈选择系统功能模块实现步骤代码示例(Flask Vue)注意事项开发技术路线源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术栈选择 后端框架:Flask(轻量级,适合快速开发…

2026/5/17 7:13:44 阅读更多 →
基于flask的河南红色旅游景点管理系统-vue pycharm django

基于flask的河南红色旅游景点管理系统-vue pycharm django

目录技术栈选择与分工数据库设计功能模块分解开发阶段规划部署方案测试策略特色功能实现开发技术路线源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术栈选择与分工 后端框架 FlaskDjango组合:Django负责数据模型和Admin后…

2026/6/18 15:08:27 阅读更多 →

最新新闻

秋之盒:免费图形化ADB工具终极指南

秋之盒:免费图形化ADB工具终极指南

秋之盒:免费图形化ADB工具终极指南 【免费下载链接】AutumnBox 图形化ADB工具箱 项目地址: https://gitcode.com/gh_mirrors/au/AutumnBox 还在为复杂的ADB命令行而头疼吗?秋之盒(AutumnBox)是一款革命性的图形化ADB工具&a…

2026/7/3 16:08:17 阅读更多 →
口碑好的鹤壁烟酒公司:节前备酒,提前安排清单

口碑好的鹤壁烟酒公司:节前备酒,提前安排清单

好的,这就为您撰写一篇关于节前备酒的原创文章,严格遵循您的要求,聚焦鹤壁本地企业的采购场景。节前备酒,鹤壁企业采购的这份“提前安排清单”请收好对鹤壁的广大企业来说,节前备酒是一项关乎员工福利、客户关系和公司…

2026/7/3 16:08:17 阅读更多 →
第30篇:安全、对齐与合规——大模型走向产业落地的最后一道门槛

第30篇:安全、对齐与合规——大模型走向产业落地的最后一道门槛

引言:能力越强,风险越大 这 30 篇专栏,我们走过了从数学基础到多模态大模型的全栈旅程。 但最后一篇不讲技术——讲安全。一个技术再先进的模型,如果不安全、不合规,就无法落地。在全球 AI 监管日益严格的今天,安全合规不仅是技术问题,更是业务问题。 一、红队测试 红…

2026/7/3 16:04:15 阅读更多 →
工业4-20mA电流环设计与STM32F303VE应用解析

工业4-20mA电流环设计与STM32F303VE应用解析

1. 工业4-20mA电流环的基础原理与设计需求在工业自动化领域,4-20mA电流环传输标准已有超过60年的应用历史。这种看似简单的信号传输方式之所以能长期占据工业现场的主导地位,关键在于其独特的物理特性:电流信号在长距离传输时不受线路电阻影响…

2026/7/3 16:02:11 阅读更多 →
浏览器扩展架构演进三部曲:从资源嗅探到媒体处理平台的技术哲学

浏览器扩展架构演进三部曲:从资源嗅探到媒体处理平台的技术哲学

浏览器扩展架构演进三部曲:从资源嗅探到媒体处理平台的技术哲学 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 技术演进的本质是在平台…

2026/7/3 15:58:09 阅读更多 →
为什么选择iSulad Rust扩展?深度解析容器运行时扩展的终极解决方案

为什么选择iSulad Rust扩展?深度解析容器运行时扩展的终极解决方案

为什么选择iSulad Rust扩展?深度解析容器运行时扩展的终极解决方案 【免费下载链接】isula-rust-extensions Rust extensions for iSulad 项目地址: https://gitcode.com/openeuler/isula-rust-extensions 前往项目官网免费下载:https://ar.opene…

2026/7/3 15:49:54 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻