sap abap初体验6之bapi

2024-02-09 02:48
文章标签 初体验 sap abap bapi

本文主要是介绍sap abap初体验6之bapi,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SAP ABAP-6.BAPI

  • 6 BAPI
    • 6.1 基础篇
      • 6.1.1 bapi
      • 6.1.2 给用户上锁bapi
    • 6.2 直接上实例
      • 6.2.1 建输入参数结构
      • 6.2.2 建函数组和函数
        • 6.2.2.1 远程调用
        • 6.2.2.2 远程调用 输入参数,参考结构ZBAPI_ORDER_STATUS_IMPORTA,值传递
        • 6.2.2.3 输出是BAPI类型的输出,系统定义的,也是值传递
        • 6.2.2.4 表是ZBAPISTAT的结构
      • 6.2.3 函数代码
        • 6.2.3.1 函数组全局信息
        • 6.2.3.2 函数模块
        • 6.2.3.3 模块调用的子程序,建在函数组外面
        • 6.2.3.4 运行
    • 6.3 生成bapi
      • 6.3.1 SWO1创建,SAP自己封装的一层
      • 6.3.2 添加API
    • 6.4 再看BAPI
      • 6.4.1 释放对象类型
      • 6.4.2 当函数名和参数不含BAPI时,会报错

6 BAPI

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.1 基础篇

在这里插入图片描述

6.1.1 bapi

在这里插入图片描述

6.1.2 给用户上锁bapi

在这里插入图片描述

6.2 直接上实例

在这里插入图片描述

6.2.1 建输入参数结构

在这里插入图片描述

se11建结构1

在这里插入图片描述

在这里插入图片描述

se11建结构2,对应后台表JEST和TJ30T

在这里插入图片描述

查看表

在这里插入图片描述

在这里插入图片描述

6.2.2 建函数组和函数

在这里插入图片描述

在这里插入图片描述

6.2.2.1 远程调用

在这里插入图片描述

6.2.2.2 远程调用 输入参数,参考结构ZBAPI_ORDER_STATUS_IMPORTA,值传递

在这里插入图片描述

6.2.2.3 输出是BAPI类型的输出,系统定义的,也是值传递

在这里插入图片描述

6.2.2.4 表是ZBAPISTAT的结构

在这里插入图片描述

6.2.3 函数代码

6.2.3.1 函数组全局信息
在这里插入代码片
FUNCTION-POOL ZBAPI_GROUP.                  "MESSAGE-ID ..* INCLUDE LZBAPI_GROUPD...                   " Local class definition
DATA: l_char1 type char2,l_char2 type char2.* 把表TJ30T里面的状态ID istat  短描述 txt04和中长描述txt30给拉出来形成结构
TYPES :BEGIN OF Type_tj02t,istat like tj02t-istat,txt04 like tj02t-txt04,txt30 like tj02t-txt30,END OF type_tj02t.* 根据结构来定义内表和结构变量
DATA:T_BAPISTAT like ZBAPISTAT OCCURS 0,G_BAPISTAT like ZBAPISTAT,t_tj02t TYPE type_tj02t OCCURS 0,g_tj02t type type_tj02t .* 返回参数
DATA:BEGIN OF MESSAGE,MSGTY like SY-MSGTY,MSGID like SY-MSGID,MSGNO like SY-MSGNO,MSGV1 like SY-MSGV1,MSGV2 like SY-MSGV2,MSGV3 like SY-MSGV3,MSGV4 like SY-MSGV4,END OF MESSAGE.
6.2.3.2 函数模块
FUNCTION Z_BAPI_GET_ORDER_STATUS.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(BAPI_ORDER_STATUS_IMPORT) TYPE  ZBAPI_ORDER_STATUS_IMPORTA
*"  EXPORTING
*"     VALUE(RETURN) TYPE  BAPIRETURN
*"  TABLES
*"      T_BAPISTAT STRUCTURE  ZBAPISTAT
*"----------------------------------------------------------------------*定义两个变量,其中l_aufnr是用来定义生产订单编号的临时变量,而 l_objnr是存储jest表中订单的临时变量,后面主要是拼接OR开头的字符串DATA:l_aufnr like afko-aufnr,l_objnr like jest-objnr.* 第一步,将输入bapi_order_status_import的ID与afko中的aufnr对比,看看是否在生产订单表中存在该订单,不存在则报返回信息Select SINGLE aufnrfrom afkointo l_aufnrwhere aufnr = bapi_order_status_import-orderid.IF sy-subrc ne 0.clear message.message-msgty = 'E'.message-msgid ='Z3'.message-msgno = '000'.message-msgv1 = BAPI_ORDER_STATUS_IMPORT-orderid.PERFORM set_return_message USING messageCHANGING return.IF 1 = 2.MESSAGE e000(z3).ENDIF.ENDIF.* 第二步,检查返回信息是否初始化,拼接bapi_order_status_import的ID的前缀’orCHECK return is INITIAL.CONCATENATE 'OR' bapi_order_status_import-orderid INTO l_objnr.*  第三步 ,检查选项i_excludeinactive是否输入是X,如果是那么从jest状态表中把三个字段取出来,同时过滤状态是X的。啥都没查到继续抛信息IF bapi_order_status_import-i_excludeinactive ='X'.SElect objnr stat inactfrom jestinto TABLE t_bapistatwhere objnr = l_objnr and inact <> 'X'.ELSE.SElect objnr stat inactfrom jestinto TABLE t_bapistatwhere objnr = l_objnr .ENDIF.IF sy-subrc <> 0.clear message.message-msgty = 'E'.message-msgid ='Z3'.message-msgno = '001'.message-msgv1 = BAPI_ORDER_STATUS_IMPORT-orderid.PERFORM set_return_message USING messageCHANGING return.IF 1 = 2.MESSAGE e000(z3).ENDIF.ENDIF.*  第四步 ,从tj02t文本描述表查询状态名istat、文本信息,同时条件中过滤了i_spras(语言),当然检索了内表t_bapistat,将信息放到内表t_tj02t(这个内表在全局变量定义了)CHECK return is INITIAL.select istat txt04 txt30from tj02tINTO table t_tj02tFOR ALL ENTRIES IN t_bapistatwhere istat = t_bapistat-stat Andspras = bapi_order_status_import-i_spras.*  第五步 ,通过结构g_bapistat循环内表t_bapistat,读内表信息t_tj02t(用关键字istat状态名来判断,读到g_tj02t结构中,读到了就将信息写入到g_bapistat结构中,然后修改内表t_bapistat中的相关信息sort t_tj02t by istat.LOOP AT t_bapistat INTo g_bapistat.READ TABLE t_tj02t with key istat = g_bapistat-stat BINARY SEARCHinto g_tj02t.IF sy-subrc = 0.move:g_tj02t-txt04 to g_bapistat-txt04,g_tj02t-txt30 to g_bapistat-txt30.MODIFY t_bapistat from g_bapistat TRANSPORTING txt04 txt30.ENDIF.ENDLOOP.
ENDFUNCTION.
6.2.3.3 模块调用的子程序,建在函数组外面

在这里插入图片描述

在这里插入图片描述

*----------------------------------------------------------------------*
***INCLUDE LZBAPI_GROUPF01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  SET_RETURN_MESSAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_MESSAGE  text
*      <--P_RETURN  text
*----------------------------------------------------------------------*
FORM SET_RETURN_MESSAGE  USING    value(P_MESSAGE) like messageCHANGING P_RETURN like bapireturn.check not message is INITIAL.CALL FUNCTION 'BALW_BAPIRETURN_GET'EXPORTINGTYPE                             = p_message-msgtyCL                               = p_message-msgidNUMBER                           = p_message-msgnoPAR1                             = p_message-msgv1PAR2                             = p_message-msgv2PAR3                             = p_message-msgv3PAR4                             = p_message-msgv4
*     LOG_NO                           = ' '
*     LOG_MSG_NO                       = ' 'IMPORTINGBAPIRETURN                       = p_returnEXCEPTIONSONLY_2_CHAR_FOR_MESSAGE_ID       = 1OTHERS                           = 2.IF SY-SUBRC <> 0.
* Implement suitable error handling hereENDIF.ENDFORM.                    " SET_RETURN_MESSAGE
6.2.3.4 运行

在这里插入图片描述

点击输入参数

在这里插入图片描述

结果如下:
在这里插入图片描述

跟生产订单对比下,感觉好像对不上啊。以后再研究

在这里插入图片描述

如果输入一个不存在的订单呢?

在这里插入图片描述

6.3 生成bapi

6.3.1 SWO1创建,SAP自己封装的一层

在这里插入图片描述

在这里插入图片描述

6.3.2 添加API

在这里插入图片描述

在这里插入图片描述

下一步,定义table仅为输出参数

在这里插入图片描述

在这里插入图片描述

可以看到方法了,将方法发布实施

在这里插入图片描述

执行,结果和单独执行函数是一样的
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.4 再看BAPI

首先选择过滤,查看全部的BAPI,找到ZORDERSTAT,发现状态是未释放
在这里插入图片描述

6.4.1 释放对象类型

在这里插入图片描述

在这里插入图片描述

再点对象类型组件释放,提示

在这里插入图片描述

需要SE37先把函数释放

在这里插入图片描述

再点对象类型组件释放,提示OK

在这里插入图片描述

在这里插入图片描述

4.生成函数对象

在这里插入图片描述

再看BAPI状态
在这里插入图片描述

6.4.2 当函数名和参数不含BAPI时,会报错

在这里插入图片描述

这篇关于sap abap初体验6之bapi的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/692927

相关文章

SAP学习笔记 - 开发02 - BTP实操流程(账号注册,BTP控制台,BTP集成开发环境搭建)

上一章讲了 BAPI的概念,以及如何调用SAP里面的既存BAPI。 SAP学习笔记 - 开发01 - BAPI是什么?通过界面和ABAP代码来调用BAPI-CSDN博客 本章继续讲开发相关的内容,主要就是BTP的实际操作流程,比如账号注册,登录,BTP集成开发环境的搭建这方面。 目录 1,账号注册 2,BTP登录URL 3,如何在BTP上进行开发? 以下是详细内容。 1,账

SAP项目中沟通的几点总结

最近参与的公司SAP RISE项目,由于是国际项目,全程远程实施,所以沟通显得尤为重要,有几点总结跟大家分享。   1.     提前沟通 提前沟通比事后沟通效果好太多。作为项目管理者,需要把下一步的计划等信息提前通过一定的形式(会议、邮件、Teams Channel等)传播出去。而不是等着这个事情发生了,项目组成员来询问,一方面这样很浪费时间,也会对项目进队产生影响,所以作为项目管理者永

Node.js初体验 Kali安装Node.js

背景:偶然看到node.js开发微信公众号的视频,有些好奇,想要接触下。然后花了两个小时在实验楼网站上在线学习了JavaScript的基础知识,以及Node.js的基础 接着本着从实践出发的原则 先去本地kali下安装个Node.js玩玩 下载地址:https://nodejs.org/en/download/ 网页最下面有提示:Note: Python 2.6 or 2.7 is requ

SMIDI-SAP接口配置手册

目录 一、 SAPERP相关接口配置(必要条件) 1. SAP ERP 配置 1.1 配置

html初体验标准标签

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><input type="text"></body></html> 内容展示

SAP HCM 如何计算缺勤实数

导读 INTRODUCTION 缺勤实数:这几天好几个朋友问题有什么办法可以计算出缺勤的时长,因为计算时长需要和排班去匹配,所以逻辑复杂度还是比较高的,希望有标准的函数能完成。其实SAP有个标准的函数可以完成,复杂的时候填充的参数特别多,所以今天介绍一个函数PA30保存2001的时候会调用,这样可以知道标准参数需要填充什么值。 作者:vivi,来源:osinnovation。 一、具体函数

ABAP CURSOR游标的应用1

【应用场景】BW模块定时增量抽取SAP的销售案场收款单的业务主数据 【关键语法】 FUNCTION ZBWFM_ZTSD0011 .*"----------------------------------------------------------------------*"*"本地接口:*"  IMPORTING*"     VALUE(I_REQUNR) TYPE  SRSC

SAP MM模块与FI模块集成之科目配置

1. 定义评估范围 OMWD   评估范围设置在工厂层,那么系统自动建立和工厂具有相同ID的评估范围 IMG:物料管理>评估和科目设置>科目确定>无向导的科目确定>将评估范围群集分组 提示:评估层级——评估分组代码——评估范围。 2. OBYC-BSX(存货科目) IMG:物料管理->评估和科目设置->科目确定->无向导的科目确定->配置自动记帐 双击BSX,输入科目表。

SAP MPS (主生产计划) 与 MRP (物料需求计划) 简介

SAP MPS 主生产计划 与 MRP 物料需求计划 简介 SAP 主生产计划 (MPS):SAP 物料需求计划 (MRP):MPS 与 MRP 的区别:业务场景前台操作演示1、物料主数据准备2、创建销售订单---VA013、运行MPS---MD404、查看物料需求---MD045、运行MRP---MD026、查看需求---MD047、总结 SAP 主生产计划 (MPS): M

SAP 快速输入

进入SM30,输入TPARA  确定   会生成CR号 之后再重新保存,反复确认下。 程序里加上MEMORY ID PARAMETERS pname_1 LIKE suid_st_bname-bname MEMORY ID zpname1 . "签核PARAMETERS pname_2 LIKE suid_st_bname-bname MEMORY ID zpname2