ABAP 调用外部Webservcie

调用Webservice触发OA审批

1.SE80创建企业服务

详细过程网上很多教程,我这里就不详述
在这里插入图片描述

2.lpconfig创建逻辑

这里也可以使用SOAMANAGER,效果都是一样的
有一点需要注意的是,要注意激活,否则调用的时候会提示无效,如果创建的时候没有激活,再进来激活的时候要通过菜单栏-逻辑端口-激活
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.程序调用

WHEN 'ZOASP1' OR 'ZOASP2'.
      READ TABLE gt_output03 INTO gs_output03 WITH KEY box = 'X'.
      IF sy-subrc <> 0.
        MESSAGE '请先选择数据' TYPE 'E'.
      ENDIF.

      PERFORM frm_push_oa.

FORM frm_push_oa .
  DATA:lt_ztmm024 TYPE TABLE OF ztmm024 WITH HEADER LINE.
  DATA:   answer TYPE string.
  DATA:   selectlist       TYPE TABLE OF spopli WITH HEADER LINE,
          lo_sys_exception TYPE REF TO   cx_ai_system_fault,
          lo_service       TYPE REF TO   zmm_service01co_capbomservice.

  DATA:ps_import TYPE zmm_service01set_capbomarray1,
       ps_return TYPE zmm_service01set_capbomarray_1,
       ps_header TYPE zmm_service01rdm_oabomh,
       ps_form   TYPE zmm_service01detail,
       pt_form   TYPE zmm_service01detail_tab,
       result    TYPE string.

  DATA:lt_dd07t LIKE TABLE OF dd07t WITH HEADER LINE.

  CLEAR: lt_dd07t.
  REFRESH:lt_dd07t.

  SELECT * FROM dd07t INTO CORRESPONDING FIELDS OF TABLE lt_dd07t
  WHERE domname = 'ZDMSPSTATUS' AND ddlanguage = '1' AND as4local = 'A'.

  SELECT * FROM ztmm024 INTO TABLE lt_ztmm024
    WHERE uname = sy-uname.

  IF lt_ztmm024[] IS INITIAL.
    MESSAGE '请先使用 ZFIT79 维护SAP对应的OA帐号!' TYPE 'E'.
  ENDIF.

  CLEAR   selectlist.
  REFRESH selectlist.
  LOOP AT lt_ztmm024.
    selectlist-varoption = lt_ztmm024-zoaname.
    APPEND selectlist.
  ENDLOOP.

  CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
    EXPORTING
      textline1          = '请选择账号'
      titel              = '账号'
    IMPORTING
      answer             = answer
    TABLES
      t_spopli           = selectlist
    EXCEPTIONS
      not_enough_answers = 1
      too_much_answers   = 2
      too_much_marks     = 3
      OTHERS             = 4.
  IF answer EQ 'A'.
    MESSAGE '已取消' TYPE 'S'.
    EXIT.
  ENDIF.

  TRY.
      CREATE OBJECT lo_service
        EXPORTING
          logical_port_name = 'ZMM_SERVICE01CO_CAPBOMSERVICE'.
    CATCH cx_ai_system_fault INTO lo_sys_exception.
      MESSAGE '调用接口时出现异常,请联系IT处理!' TYPE 'E'.
      EXIT.
  ENDTRY.
  READ TABLE lt_ztmm024 INDEX answer.

  ps_header-username = lt_ztmm024-zoaid.

  LOOP AT gt_output03 INTO gs_output03 WHERE box = 'X'.
    CLEAR:ps_form.
    ps_form-subcontractor = gs_output03-name2."分包方
    ps_form-model = gs_output03-zcx_t.  "零担/车型
    ps_form-city =  gs_output03-zarea_t && gs_output03-zcity_t && gs_output03-zcountry_t. "目的城市
    ps_form-price = gs_output03-zprice1 && '/' && gs_output03-zprice2 && '/' && gs_output03-zprice3
    && '/' && gs_output03-zprice4 && '/' && gs_output03-zprice5 && '/' && gs_output03-zprice6 && '/' && gs_output03-zprice7."区间单价
    ps_form-num2 = gs_output03-zpacks && '/' && gs_output03-zpackl && '/' && gs_output03-zpackt && '/' && gs_output03-zpackc."回桶

    APPEND ps_form TO pt_form.
    CLEAR:gs_output03.
  ENDLOOP.

  ps_import-parameters-arg1 = ps_header.
  ps_import-parameters-arg0-rdm_oa_bom_i = pt_form.

  TRY.
      CALL METHOD lo_service->set_capbomarray
        EXPORTING
          set_capbomarray          = ps_import
        IMPORTING
          set_capbomarray_response = ps_return.
    CATCH cx_ai_system_fault INTO lo_sys_exception.
      MESSAGE lo_sys_exception->errortext TYPE 'I'.
      EXIT.
  ENDTRY.

  IF ps_return-parameters-return CS 'false' OR ps_return-parameters-return IS INITIAL.
    MESSAGE '推送OA失败,请检查OA账号是否维护正确!' TYPE 'E'.
  ELSE.
    LOOP AT gt_output03 INTO gs_output03 WHERE box = 'X'.
      gs_output03-zstatus = '2'.
      gs_output03-zstatus_t = '已提交待审批'.
      MODIFY gt_output03 FROM gs_output03.
      CLEAR:gs_output03.
    ENDLOOP.
    MESSAGE s000(oo) WITH '提交成功!' ps_return-parameters-return.
  ENDIF.
ENDFORM.                    " FRM_PUSH_OA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值