SAP接口实现QA11 BDC绕过决策数字签名

FUNCTION z_qm.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(CTU) LIKE  APQI-PUTACTIVE DEFAULT 'X'
*"     VALUE(MODE) LIKE  APQI-PUTACTIVE DEFAULT 'E'
*"     VALUE(UPDATE) LIKE  APQI-PUTACTIVE DEFAULT 'S'
*"     VALUE(GROUP) LIKE  APQI-GROUPID OPTIONAL
*"     VALUE(USER) LIKE  APQI-USERID OPTIONAL
*"     VALUE(KEEP) LIKE  APQI-QERASE OPTIONAL
*"     VALUE(HOLDDATE) LIKE  APQI-STARTDATE OPTIONAL
*"     VALUE(NODATA) LIKE  APQI-PUTACTIVE DEFAULT '/'
*"     VALUE(PRUEFLOS_001) LIKE  BDCDATA-FVAL DEFAULT ''
*"     VALUE(VMENGE03) LIKE  BDCDATA-FVAL DEFAULT '1'
*"     VALUE(SIGNER_010) LIKE  BDCDATA-FVAL DEFAULT ''
*"     VALUE(PASSWORD_011) LIKE  BDCDATA-FVAL DEFAULT ''
*"  EXPORTING
*"     VALUE(SUBRC) LIKE  SYST-SUBRC
*"  TABLES
*"      MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL
*"----------------------------------------------------------------------

  subrc = 0.

  PERFORM bdc_nodata      USING nodata.
"20240429下面BDC参数用于测试
**  ctu = 'X'.
**  mode = 'N'.
**  update = 'L'.

  PERFORM open_group      USING group user keep holddate ctu.

  PERFORM bdc_dynpro      USING 'SAPMQEVA' '0100'.
  PERFORM bdc_field       USING 'BDC_CURSOR'                  'QALS-PRUEFLOS'.
  PERFORM bdc_field       USING 'BDC_OKCODE'                  '=NB'.
  PERFORM bdc_field       USING 'QALS-PRUEFLOS'                prueflos_001."质检批号

  PERFORM bdc_dynpro      USING 'SAPMQEVA' '0200'.
  PERFORM bdc_field       USING 'BDC_OKCODE'                  '=BB'.
  PERFORM bdc_field       USING 'BDC_CURSOR'                  'RQEVA-MHD_01'.

  PERFORM bdc_dynpro      USING 'SAPMQEVA' '0200'.
  PERFORM bdc_field       USING 'BDC_OKCODE'                  '/00'.
  PERFORM bdc_field       USING 'BDC_CURSOR'                  'RQEVA-VMENGE03'.
  PERFORM bdc_field       USING 'RQEVA-VMENGE03'              vmenge03. "数量

  PERFORM bdc_field       USING 'BDC_OKCODE'                  '/00'.
  PERFORM bdc_field       USING 'BDC_OKCODE'                  '/00'.

  PERFORM bdc_dynpro      USING 'SAPMQEVA' '0200'.
  PERFORM bdc_field       USING 'BDC_OKCODE'                  '=BU'.
  PERFORM bdc_field       USING 'BDC_CURSOR'                  'RQEVA-VMENGE03'.
  PERFORM bdc_field       USING 'RQEVA-VMENGE03'               vmenge03. "数量


**
**  PERFORM bdc_dynpro      USING 'SAPLCJ00' '1100'.
**  PERFORM bdc_field       USING 'BDC_CURSOR'                  'RC70D-PASSWORD'.
**  PERFORM bdc_field       USING 'BDC_OKCODE'                  '=ENT'.
**  PERFORM bdc_field       USING 'RC70D-SIGNER'                ''.   "帐号
**  PERFORM bdc_field       USING 'RC70D-PASSWORD'              ''."密码
.
  PERFORM bdc_transaction TABLES messtab
  USING                         'QA11'
                                ctu
                                mode
                                update.
  IF sy-subrc <> 0.
    subrc = sy-subrc.
    EXIT.
  ENDIF.

  PERFORM close_group USING     ctu.

*  SUBRC = 0.
*
*  PERFORM BDC_NODATA      USING NODATA.
*
*  PERFORM OPEN_GROUP      USING GROUP USER KEEP HOLDDATE CTU.
*
*  PERFORM BDC_DYNPRO      USING 'SAPMQEVA' '0100'.
*  PERFORM BDC_FIELD       USING 'BDC_CURSOR'
*                                'QALS-PRUEFLOS'.
*  PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                '=NB'.
*  PERFORM BDC_FIELD       USING 'QALS-PRUEFLOS'
*                                PRUEFLOS_001.
*  PERFORM BDC_DYNPRO      USING 'SAPMQEVA' '0200'.
*  PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                '=BB'.
*  PERFORM BDC_FIELD       USING 'BDC_CURSOR'
*                                'RQEVA-MHD_01'.
**perform bdc_field       using 'RQEVA-MHD_01'
**                              MHD_01_002.
*  PERFORM BDC_DYNPRO      USING 'SAPMQEVA' '0200'.
*  PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                '/00'.
*  PERFORM BDC_FIELD       USING 'BDC_CURSOR'
*                                'RQEVA-VMENGE03'.
**perform bdc_field       using 'RQEVA-QLGO_VM01'
**                              QLGO_VM01_003.
*  PERFORM BDC_FIELD       USING 'RQEVA-VMENGE03'
*                                VMENGE03.
**perform bdc_field       using 'RQEVA-QLGO_VM04'
**                              QLGO_VM04_005.
**perform bdc_field       using 'RQEVA-QLGO_VM06'
**                              QLGO_VM06_006.
*  PERFORM BDC_DYNPRO      USING 'SAPMQEVA' '0200'.
*  PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                '=BU'.
*  PERFORM BDC_FIELD       USING 'BDC_CURSOR'
*                                'RQEVA-VMENGE01'.
**perform bdc_field       using 'RQEVA-QLGO_VM01'
**                              QLGO_VM01_007.
**perform bdc_field       using 'RQEVA-VMENGE03'
**                              VMENGE03_008.
**perform bdc_field       using 'RQEVA-QLGO_VM04'
**                              QLGO_VM04_009.
**perform bdc_field       using 'RQEVA-QLGO_VM06'
**                              QLGO_VM06_010.
*
*  PERFORM BDC_TRANSACTION TABLES MESSTAB
*  USING                         'QA11'
*                                CTU
*                               MODE
*                               UPDATE
*                               .
*
*
*
*  IF SY-SUBRC <> 0.
*    SUBRC = SY-SUBRC.
*    EXIT.
*  ENDIF.
*
*  PERFORM CLOSE_GROUP USING     CTU.


*  DATA :  L_OPT TYPE CTU_PARAMS .
*  L_OPT-RACOMMIT = 'X'.
*  L_OPT-DISMODE = 'N'.
*  L_OPT-UPDMODE = 'S'.
*  L_OPT-NOBINPT = 'X' .
*
*  CALL TRANSACTION P_TCODE
*  USING BDCDATA
*         OPTIONS FROM L_OPT
*          MESSAGES INTO P_MESSTAB.


ENDFUNCTION.
INCLUDE bdcrecxy .

上面是BDC部分的代码,跟实际在本地运行的时候大致相同,基本上按照需要通过SHDB进行测试和验证即可。

关键点是由于是通过接口去执行的,用户就不需要去进行数字签名,那么这块就不需要进行提交数字签名的BDC操作,直接提交即可。但是对于接口用户必须使用接口服务类型的账号,并且赋予了ALL的权限,否则可能写入失败。如果提交成功的话会在MSEG和QAMB中创建对应的物料凭证,类型为S,消息号为163,;如果创建失败的话就没有对应的凭证号,其中有时候会返回类型为S,但是实际上并没有创建成功。

还有,测试的时候需要通过外部接口调用的方式进行测试,不可以通过SPROXY,否则也会调用失败。

相关推荐

  1. SAP接口实现QA11 BDC决策数字签名

    2024-04-30 13:22:03       36 阅读
  2. Windows 11的安装门槛

    2024-04-30 13:22:03       35 阅读
  3. Spring Boot实现接口签名验证

    2024-04-30 13:22:03       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 13:22:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 13:22:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 13:22:03       82 阅读
  4. Python语言-面向对象

    2024-04-30 13:22:03       91 阅读

热门阅读

  1. 极端天气频发:普通人如何保全自己

    2024-04-30 13:22:03       25 阅读
  2. LED灯降压恒流驱动芯片5~60v输出1.5A大电流AP51656

    2024-04-30 13:22:03       31 阅读
  3. MATLAB使用贝叶斯网络bnt工具箱:使用手册详解

    2024-04-30 13:22:03       27 阅读
  4. 服务器根据功能划分有哪几种?

    2024-04-30 13:22:03       28 阅读
  5. centos学习-压缩和解压缩命令

    2024-04-30 13:22:03       32 阅读
  6. 如何衡量一个算法的好坏

    2024-04-30 13:22:03       30 阅读