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

本篇演示通过 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_connection
        result = 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 FixedAsset

app = Flask(__name__)
app.config['JSON_SORT_KEYS'] =False


@app.route("/")
def index():
    return "index page"

@app.route('/aa/create', methods=['POST'])
def create_asset():
    # payload
    payload = request.get_json()

    fixed_asset_obj = FixedAsset()
    rv = fixed_asset_obj.create_asset(payload);
    return jsonify(rv)

使用 Postman 进行测试:


源代码:github - pyrfc_flask_restful_service

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值