首页 > 其他分享 >每日一个 ChatGPT 使用小技巧系列之2 - 用 ChatGPT 研读 SAP ABAP BAPI 的实现源代码

每日一个 ChatGPT 使用小技巧系列之2 - 用 ChatGPT 研读 SAP ABAP BAPI 的实现源代码

时间:2023-06-19 23:22:32浏览次数:56  
标签:BAPI 源代码 CREATE ABAP ChatGPT SAP

本系列之前的文章:

正好昨天有朋友向我发起知乎咨询,询问关于 SAP ABAP BAPI bapi_vendor_create 的使用问题,本文就来说一说:

bapi_vendor_create 麻烦想问一下有没有利用这个bapi登陆供应商的实例。我看执行之后是一个前台的程序。可以让他也通过后台执行吗。

首先,我没有在工作中使用过 BAPI_VENDOR_CREATE,所以向 ChatGPT 了解了一下。ChatGPT 的回复如下,还需要相关从业人员进行正确性鉴别,比如说我。

第一段基本正确:

BAPI_VENDOR_CREATE 是一个 SAP ABAP 函数,用于在 SAP 系统中创建新的供应商(也称为供应商主数据记录)。BAPI 代表业务应用程序编程接口(Business Application Programming Interface),它是一种与 SAP 系统进行通信和交互的方法,以便在 SAP 系统中执行操作和获取数据。

下面这一段中标红色的部分就是在睁眼说瞎话了。

BAPI_VENDOR_CREATE 函数接收一组输入参数,例如供应商的名称、地址、联系方式等信息。函数会在 SAP 系统中创建一个新的供应商记录,并返回相应的输出,如供应商编号和任何可能的错误消息。这使得 SAP 系统可以与其他系统集成,以便在创建供应商时遵循统一的流程。

我们在 SE37 里打开这个 BAPI,发现其 Import 参数区域根本没有任何定义,何来“接收一组输入参数”之说?实际上,这些字段都需要用户在 BAPI 执行后弹出的 Dynpro 界面里手动填写。

我们把 SE37 里看到的 BAPI_VENDOR_CREATE 的源代码拷贝一份,然后在前面添上一段话:

给下面这个 ABAP 函数的每一行代码添加上中文注释,解释这一行干了什么事情。

如果某行代码已经具有英文或者德文注释了,直接将这些注释翻译成中文即可。

将源代码附在这段话的末尾,然后一齐发送给 ChatGPT.

ChatGPT 把每行代码加上中文注释后返回给我。在浏览器环境里这些 ABAP 代码没有语法高亮的支持,所以我把它们复制到了 Visual Studio Code 里便于阅读。

这个 BAPI 的实现主要分为两部分。第一部分的关键点如下图图例1和2所示,首先代码第 15 行,使用关键字 CALL TRANSACTION XK01, 启动事务码 XK01,呈现 Vendor 创建的 SAPGUI 界面。等用户完成 Vendor 创建所需的字段填写,保存创建结果。

如果执行过程中出现权限检查异常(CX_SY_AUTHORIZATION_ERROR), 则进入上图图例2所示的异常处理分支,调用函数 BALW_BAPIRETURN_GET1 构造显示给 BAPI 消费者的错误提示消息,然后填充到输出参数 return 中去。

BAPI 实现的第二部分,逻辑也不复杂,就是调用 GET PARAMETER ID 将创建好的 Vendor 信息,从 SAP Memory 里提取出来,填充到 BAPI exporting 参数中去。

GET PARAMETER ID 和 SET PARAMETER ID 这对关键字,分别对应 ABAP 服务器内 SAP Memory 区域数据的读取和设置,在我这篇 ABAP 教程文章里有详细介绍:

如果在阅读了注释之后,还是觉得理解这段代码有点困难,那么可以让 ChatGPT 把这个函数源代码实现的业务逻辑,用 200 字左右的篇幅概括出来。

给 ChatGPT 发出的指令:

用一段 200 字的篇幅,介绍下面这个 SAP ABAP Function Module 实现的业务逻辑是什么?

ChatGPT 的回复基本正确:

最后回到本文开头提到的知乎咨询的问题本身。

我的答复是:BAPI_VENDOR_CREATE 无法通过后台作业的方式运行,因为本文前面已经叙述过,这个 BAPI 是事务码 XK01 的包裹器,而 XK01 里的 Dynpro 界面是通过 CALL SCREEN 在 Dialog 工作进程里执行的,这些 Dynpro 界面在后台执行模式下的后台工作进程中根本不可用。

要在后台模式下完成创建 Vendor 的需求,只能采取其他方法,当然这是另外一个话题了。

本系列其他文章

标签:BAPI,源代码,CREATE,ABAP,ChatGPT,SAP
From: https://www.cnblogs.com/sap-jerry/p/17492500.html

相关文章

  • To ChatGPT:让你更加随意地使用所有ChatGPT应用
    现在其实已经有很多在线的llm服务了,当然也存在许多开源部署方案,但是不知道大家有没有发现一个问题,目前基于ChatGPT开发的应用,都是使用的OpenAI的接口。换句话说,如果没有OpenAI账号,就没有办法使用这些应用。但是其实这些应用并不是强依赖于OpenAI的接口,其他的在线llm服务也是可以的......
  • POSTGRESQL PG_REWIND 从源代码看功能
    PG_REWIND是PG9.6开始提供的功能,主要的作用在于通过PG_REWIND让PG复制中的数据库快速的与预定的“主库”进行数据同步,而复制的方式是是文件块的方式,并且可以避过重复的数据块。所以复制的速度是快的,在不少的高可用方式中都被作为主库失败后的快速的将主库加入原有集群并作为从......
  • 基于ChatGPT函数调用来实现C#本地函数逻辑链式调用助力大模型落地
    6月13日OpenAI官网突然发布了重磅的ChatGPT更新,我相信大家都看到了,除了调用降本和增加更长的上下文版本外,开发者们最关心的应该还是新的函数调用能力。通过这项能力模型在需要的时候可以调用函数并生成对应的JSON对象作为输出。这使开发人员能更准确地从模型获取结......
  • 如何在Windows上从源代码构建OpenJFX 8
    所以你已经听到了这个消息。Oracle震惊世界,改变了Java和相关技术的支持路线图,发布周期等。但是,您的业务'JavaFX应用程序(及其依赖项)在OracleJDK8上运行。您喜欢稳定性,因为如果您不这样做,您的业务软件可能会失败,导致您花钱或更糟-让您破产和/或还是欠债那么这对OracleJDK/Java......
  • ChatGPT:语言模型的进化与应用前景
    当代技术的进步为我们带来了各种令人兴奋的创新,其中ChatGPT(ChatbotGPT)是人工智能领域的一项重要成果。ChatGPT是基于GPT(GenerativePre-trainedTransformer)模型的聊天机器人,它利用自然语言处理和深度学习技术,使得与机器进行对话成为可能。ChatGPT的工作原理ChatGPT的核心是......
  • 【电商平台api接口】获取lazada商品评论获取评论内容、评论日期、买家昵称、评论商品
    ​ 请求获取Lazada商品评论(免费获取测试)的作用如下:1.了解商品质量:通过获取Lazada商品评论,可以了解商品的质量、使用感受等信息,从而更好地了解商品的优缺点,为购买者提供更为准确的参考。2.搜集用户反馈:通过搜集Lazada商品评论,可以了解用户对商品的反馈和意见,了解用户的需求和......
  • 呼叫中心解决方案:探索AIGC(如ChatGPT)与呼叫中心的深度融合
    随着人工智能技术的发展,AI已经在诸如客户服务、数据分析、决策支持等许多领域发挥了重要作用。在这之中,将AI融入呼叫中心已成为一个日益重要的趋势。通过这种集成,不仅可以大幅提升服务效率和质量,还可以根据客户需求提供更个性化的服务。然而,这个过程并非没有挑战,如何有效实现这种......
  • 一次与 ChatGPT 的 .NET 面试问答
    以常用问题来面试机器人,机器人是否能够合格1.您能描述一下您曾经在.NET项目中集成硬件设备的经历吗?这个过程是怎样的,您面临了哪些挑战?GPT回答:当我在.NET项目中集成硬件设备时,我首先研究了硬件设备的文档,了解了其API和接口。我编写了一个简单的应用程序来测试硬件设备的基本功......
  • API接口开发系列(获得京东JD商品详情原数据java源代码调用示例)
    ​请求获取京东商品详情原数据(免费获取调用)的作用:1.提供商品信息:京东商品详情中的原数据可以提供商品的基本信息,包括商品名称、价格、品牌、规格参数、图片等,让消费者更好地了解商品。2.帮助搜索引擎识别:京东商品详情的原数据可以被搜索引擎识别,在搜索结果页中显示更为详细丰富......
  • app直播源代码,JS生成随机数,生成指定位数的随机数
    app直播源代码,JS生成随机数,生成指定位数的随机数<html><script> //获取指定位数的随机数 functiongetRandom(num){  letrandom=Math.floor((Math.random()+Math.floor(Math.random()*9+1))*Math.pow(10,num-1)); } //调用随机数函数生成10位数的随机......