热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SAP接口编程PyRFC调用BAPI_FIXEDASSET_CREATE1创建固定资产

本篇演示通过PyRFC调用BAPI_FIXEDASSET_CREATE1在SAP系统中创建固定资产,再一次体验一下Python与其它语言相比的简洁性。首先简单说明B

本篇演示通过 PyRFC 调用 BAPI_FIXEDASSET_CREATE1 在 SAP 系统中创建固定资产,再一次体验一下 Python 与其它语言相比的简洁性。

首先简单说明 BAPI_FIXEDASSET_CREATE1 的用法。这个函数的参数比较多,但可能实际用不到那么多字段,我们只使用一些基本和必须的字段。下面的 ABAP 代码演示了该函数的用法。


  • 参数存在后缀加 x 的参数,比如 general_data,存在 general_data_x 的参数。这些参数用于告诉函数哪些字段的值是需要被修改的。
  • 根据 SAP 的配置,有些字段不需要显式指定,比如 depreciation areas 部分的折旧码、折旧年限等字段,SAP 根据配置来设置这些字段的值。如果需要改变配置的值,比如某资产的折旧年限不使用折旧码的默认值 5 年,而是 3 年,也可以在函数的参数中来设定。
  • 调用 BAPI_FIXEDASSET_CREATE1 函数后,固定资产主数据的号码会被占用,后面应该根据情况,分别使用函数 BAPI_TRANSACTION_COMMIT 提交修改,或者 BAPI_TRANSACTION_ROLLBACK 进行回滚操作。

下面是使用 PyRFC 调用 BAPI 的代码示例:

class FixedAsset(object):def __init__(self) -> None:self.sap_connection = current_sap_connection()def create_asset(self, asset_info):conn = self.sap_connectionresult = conn.call('BAPI_FIXEDASSET_CREATE1',KEY=asset_info['key'],GENERALDATA=asset_info['general_data'],GENERALDATAX=asset_info['general_data_x'],TIMEDEPENDENTDATA=asset_info['time_dependent_data'],TIMEDEPENDENTDATAX=asset_info['time_dependent_data_x'])if result['ASSET'] == None:conn.call('BAPI_TRANSACTION_ROLLBACK')else:conn.call('BAPI_TRANSACTION_COMMIT')return result['RETURN']

结合 Flask,编写一个视图函数:

from flask import Flask, make_response, jsonify, request
from SAP.fixed_asset import FixedAssetapp = Flask(__name__)
app.config['JSON_SORT_KEYS'] =False@app.route("/")
def index():return "index page"@app.route('/aa/create', methods=['POST'])
def create_asset():# payloadpayload = request.get_json()fixed_asset_obj = FixedAsset()rv = fixed_asset_obj.create_asset(payload);return jsonify(rv)

使用 Postman 进行测试:


源代码:github - pyrfc_flask_restful_service


推荐阅读
author-avatar
moon2502863581
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有