SAP ABAP 当标准BAPI或事务无法指定用户名执行的处理办法

这篇具有很好参考价值的文章主要介绍了SAP ABAP 当标准BAPI或事务无法指定用户名执行的处理办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

@

目录
  • 需求
  • 一、远程调用RFC的方式
      • 1.SM59配置
      • 2.指定用户需要满足以下条件
      • 3.创建远程RFC
  • 二、创建SE38程序 通过调用后台作业的方式指定用户名执行
  • 总结

需求

有时我们会面对某一标准事务或bapi需要以特定账户执行,以财务的过账、冲销举例,过账时可以在header中填写用户名指定创建人,这里不做阐述。

如果面对BAPI_ACC_DOCUMENT_REV_POST这样用于冲销且没有指定用户名字段的BAPI,但又需要冲销到指定用户名下,有以下方法

1.远程调用RFC的方式

2.创建SE38程序 通过调用后台作业的方式指定用户名执行


一、远程调用RFC的方式

1.SM59配置

新建ABAP类型连接
SAP ABAP 当标准BAPI或事务无法指定用户名执行的处理办法
指定client和用户名
SAP ABAP 当标准BAPI或事务无法指定用户名执行的处理办法
注意系统是否为Unicode
SAP ABAP 当标准BAPI或事务无法指定用户名执行的处理办法
连接测试通过即可
SAP ABAP 当标准BAPI或事务无法指定用户名执行的处理办法

2.指定用户需要满足以下条件

①.未被锁定
②.有S_RFCACL和S_RFC权限

3.创建远程RFC

BAPI调用成功后需要在当前luw中调用commit。

FUNCTION zbapi_acc_document_rev_post.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(REVERSAL) LIKE  BAPIACREV STRUCTURE  BAPIACREV
*"     VALUE(BUS_ACT) LIKE  BAPIACHE09-BUS_ACT
*"  EXPORTING
*"     VALUE(OBJ_TYPE) LIKE  BAPIACREV-OBJ_TYPE
*"     VALUE(OBJ_KEY) LIKE  BAPIACREV-OBJ_KEY
*"     VALUE(OBJ_SYS) LIKE  BAPIACREV-OBJ_SYS
*"  TABLES
*"      RETURN STRUCTURE  BAPIRET2
*"----------------------------------------------------------------------

  DATA:lv_error TYPE char1.

  CALL FUNCTION 'BAPI_ACC_DOCUMENT_REV_POST'
    EXPORTING
      reversal = reversal
      bus_act  = bus_act
    IMPORTING
      obj_type = obj_type
      obj_key  = obj_key
      obj_sys  = obj_sys
    TABLES
      return   = return.

  LOOP AT return[] INTO DATA(ls_return) WHERE type EQ 'E'.
    lv_error = 'X'.
    EXIT.
  ENDLOOP.

  IF lv_error IS NOT INITIAL.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
*     IMPORTING
*       RETURN        =
      .
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'
*       IMPORTING
*       RETURN        =
      .
  ENDIF.

ENDFUNCTION.

实现代码:


*首先判断destination是否存在
CALL FUNCTION 'CAT_CHECK_RFC_DESTINATION'
    EXPORTING
      rfcdestination = 'ZDEST_FOR_TEST'
    IMPORTING
      msgv1          = lv_msg1
      msgv2          = lv_msg2
      rfc_subrc      = lv_subrc.


      CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
        IMPORTING
          own_logical_system = lv_system.
      ls_reversal-obj_type   = 'BKPFF'.
      ls_reversal-obj_key    = ls_bkpf-awkey.
      ls_reversal-obj_key_r  = ls_bkpf-awkey.
      ls_reversal-comp_code  = ls_bkpf-bukrs.
      ls_reversal-obj_sys = lv_system .
      ls_reversal-pstng_date = gs_date-zcxdate.

      CALL FUNCTION 'ZBAPI_ACC_DOCUMENT_REV_POST'  "  使用带commit远程rfc
        DESTINATION 'ZDEST_FOR_XGF'   " 使用HELPDESK冲销
        EXPORTING
          reversal = ls_reversal
          bus_act  = 'RFBU'
        IMPORTING
          obj_key  = lv_obj_key
        TABLES
          return   = lt_return.
      READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
      IF sy-subrc = 0.
        READ TABLE lt_return INTO ls_return_id WITH KEY number = 361 id = 'F5'.""已被冲销
        IF sy-subrc = 0.
          MESSAGE '凭证号:' && ls_bkpf-awkey && '已冲销' TYPE 'E'.
        ELSE.
          ROLLBACK WORK.
          cv_status = 'E'.
          MESSAGE '凭证冲销失败,凭证号:' && ls_bkpf-awkey TYPE 'E'.
          RETURN.
        ENDIF.
      ELSE.
        cv_status = 'S'.
      ENDIF.

二、创建SE38程序 通过调用后台作业的方式指定用户名执行


submit后跟用户名,程序内代码这里就自己补充啦

代码如下(示例):


*      安排作业  立即执行
      CALL FUNCTION 'JOB_OPEN'
        EXPORTING
          jobname          = lv_name
        IMPORTING
          jobcount         = lv_number
        EXCEPTIONS
          cant_create_job  = 1
          invalid_job_data = 2
          jobname_missing  = 3.
      IF sy-subrc EQ 0.

        SUBMIT zreport WITH SELECTION-TABLE lt_seltab
          USER lv_user AND RETURN
          VIA JOB lv_name NUMBER lv_number.

        IF sy-subrc EQ 0.

          CALL FUNCTION 'JOB_CLOSE'
            EXPORTING
              jobcount  = lv_number
              jobname   = lv_name
              strtimmed = 'X'.  "立即开始
              
        ENDIF.

总结

以上文章来源地址https://www.toymoban.com/news/detail-711038.html

到了这里,关于SAP ABAP 当标准BAPI或事务无法指定用户名执行的处理办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SAP ABAP 用户状态锁定案例

    一、前言 项目需求是根据当天及前两天的离职员工信息(假设这是一个定时器任务每天下午5点执行程序,计算前两天的员工工号是为了将5点之后办理离职的员工工号找出来),将这些员工在用户表 USR02 中的锁定状态设置为 “64”,以保证离职员工无法继续使用系统账号。

    2024年02月15日
    浏览(52)
  • 共享文件夹/盘加密方法:(指定电脑或者拥有用户名和密码才能访问)

    1、选择需要共享的文件夹/盘,右键选择“属性”。  2、在“共享”一栏中点击“网络和共享中心”。 3、点开“所有网络”的项目,前面几项全部选择启用,最后一栏选择“有密码保护的共享”,并保存更改。   4、继续回到共享这一栏,点击“高级共享(D)...”,点击左

    2024年02月02日
    浏览(62)
  • SAP为销售订单生成包装建议的BAPI (Packing Proposal for Sales Order)

    关于装箱打包,网上大部分资料都是交货单相关的。 最近要做销售订单的包装建议更新,没查到资料,于是调试看了VA02的代码,发现以下几个函数可以用于SO包装建议的更新:   V51P_FILL_GT :用于填充一些销售订单的基本数据,比如订单号,行项目等,这一步不做的话,下一

    2024年02月16日
    浏览(51)
  • 我的电脑 因为配置标识不正确 系统无法开始服务器进程。请检查用户名和密码。

    1.点击开始/运行,输入Dcomcnfg,按回车键,选择Microsoft Word文档,配置其属性,身份验证级别选“无”,身份标识选“交互式用户”,在“安全性”里,启动和激活权限,和访问权限,配置权限全部自定义并且添加用户everyone。 2.重装Office,此处是关键,一定要卸载了重装,经

    2024年02月09日
    浏览(60)
  • 因为电脑用户名是中文造成无法安装Latex安装方案及每次电脑开机造成电脑桌面格式化

    安装Latex由于C/用户/(管理者)是中文,造成无法安装。 以联想小新为例(可以询问相关品牌电脑的客服) 开启Administartor账户权限并且登入, (1)在搜索框中输入CMD,右键以管理员方式运行; (2)出现命令提示符窗口; (3)运行命令net user administrator /active:yes 点击\\\"确定;

    2024年02月07日
    浏览(46)
  • SAP/ABAP(二)

    一、循环结构 二、条件判断 三、异常处理(cx-root) 四、结构体,工作区 五、内表

    2024年02月17日
    浏览(46)
  • 【SAP ABAP】SAP Webservice & RESTful 接口服务发布教程

    关于 WebService 概念,这篇文章讲解的非常全面,可以移步阅读《SAP Web service》。 本想通过 RFC 来发布 ODATA 服务,奈何当前 SAP ECC 版本过低不支持,只好采用其他方式来发布服务,于是就尝试了下面这两种方法。 SE37,创建以下测试用 RFC 测试执行 RFC,得到的数据结果如下图:

    2024年02月02日
    浏览(45)
  • SAP ABAP技术文章合集_微信公众号:ABAP猿

    序号 文章标题 01 ABAP OOALV-基本显示 02 ABAP OOALV-排序、过滤 03 ABAP OOALV-合计、小计 04 ABAP OOALV-选择模式、触发事件 05 ABAP OOALV-隐藏列、修改列标题、添加图标列、调整列位置 06 ABAP OOALV-固定列、鼠标悬停文本 07 ABAP OOALV-颜色(列、行、单元格) 08 ABAP OOALV-样式(列、行、单元格

    2024年02月03日
    浏览(50)
  • SAP ABAP 基础语法超详细

    1.表声明 当你声明了一个数据表的同时,系统也同时自动生成了一个和数据表同名的结构,结构的变量集等于数据表里面的字段。 2.定义变量 v1 是变量名。 (l) 是变量的长度。 t 是数据类型。 d 是小数位。 ‘xxx’ 是缺省值。 如:data num(10) type p decimals 3 value ‘1.12’. 数据

    2024年02月15日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包