SAP接口--宜搭与SAP对接

宜搭传输表单基础信息,SAP接收信息并保存

log 信息表

在这里插入图片描述

INCLUDE zhs_log_*. 可以删掉
FUNCTION z_acc_document_id_post.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_REQUEST) TYPE  STRING OPTIONAL
*"  EXPORTING
*"     VALUE(E_RESPONSE) TYPE  STRING
*"----------------------------------------------------------------------

  TABLES :Zoas_log.

  TYPES:BEGIN OF Freturnid_data,
          success TYPE string,
          content TYPE string,
        END OF Freturnid_data.

*  TYPES:BEGIN OF Base_data,
*          i_status TYPE char01,
*          i_oaid   TYPE string,
*          i_type1  TYPE string,
*          i_type2  TYPE string,
*          i_type3  TYPE string,
*        END OF Base_data.
*  DATA  :lt_data type TABLE OF Base_data,
*        ls_data type Base_data.

  DATA:lv_time     TYPE string,
       str_in      TYPE string,
       lt_oalog    TYPE TABLE OF  zoas_log,
       ls_oalog    TYPE zoas_log,
       lt_Freturn  TYPE TABLE OF  Freturnid_data,
       ls_oachange TYPE  zstru_acc_document_post_output,
       lW_RETURN   TYPE  zstru_acc_document_post_output,
       ls_Freturn  TYPE Freturnid_data.

  TYPES:BEGIN OF  baseinfo,
          type1      TYPE char10,
          type2      TYPE char20,
          type3      TYPE char20,
          username   TYPE char20,
          useracount TYPE char20,
          id         TYPE char40,
          status     TYPE char1,
        END OF baseinfo.


  DATA : lv_taskname  TYPE char30,
         i_type1      TYPE char10,
         i_type2      TYPE char20,
         i_type3      TYPE char20,
         i_username   TYPE char20,
         i_useracount TYPE char20,
         i_oaid       TYPE char40,
         i_status     TYPE char1.
  DATA : l_encoding(20),
         lt_base        TYPE TABLE OF baseinfo,
         ls_base        TYPE baseinfo.


  IF i_request IS INITIAL  .
    STOP.
  ENDIF.

  *INCLUDE zhs_log_start.

  CALL METHOD cl_http_utility=>unescape_url
    EXPORTING
      escaped   = i_request
    RECEIVING
      unescaped = str_in.

  REPLACE ALL OCCURRENCES  OF 'type3' IN str_in WITH '"type3"' .
  REPLACE ALL OCCURRENCES  OF 'type2' IN str_in WITH '"type2"' .
  REPLACE ALL OCCURRENCES  OF 'id' IN str_in WITH '"id"' .
  REPLACE ALL OCCURRENCES  OF 'type1' IN str_in WITH '"type1"'.
  REPLACE ALL OCCURRENCES  OF 'username' IN str_in WITH '"username"' .
  REPLACE ALL OCCURRENCES  OF 'useracount' IN str_in WITH '"useracount"' .
  REPLACE ALL OCCURRENCES  OF 'status' IN str_in WITH '"status"' .
  REPLACE ALL OCCURRENCES  OF '&' IN str_in WITH ',' .
  REPLACE ALL OCCURRENCES  OF '=' IN str_in WITH ':'.
  str_in = '[{' && str_in && '}]' .


  /ui2/cl_json=>deserialize( EXPORTING json = str_in
                                        pretty_name = /ui2/cl_json=>pretty_mode-camel_case
                              CHANGING data = lt_base ).

  LOOP AT lt_base INTO ls_base.

    i_type1  =  ls_base-type1.
    i_type2  =  ls_base-type2.
    i_type3  =  ls_base-type3.
    i_username  =  ls_base-username.
    i_useracount  =  ls_base-useracount.
    i_oaid     =  ls_base-id.
    i_status =  ls_base-status.

*  SEARCH str_in FOR '{'.
*  IF sy-subrc = 0.
*    DATA(str1) =  sy-fdpos.
*  ENDIF.
*  SEARCH str_in FOR '}'.
*  IF sy-subrc = 0.
*    DATA(str2) =  sy-fdpos.
*  ENDIF.
*  DATA(str3) = str2 - str1.
*  str_in = str_in+str1(str3).
*
*  str_in = '[' && str_in+5 && ']'.

*  CALL METHOD /ui2/cl_json=>deserialize
*    EXPORTING
*      json = str_in
*    CHANGING
*      data = lt_base[].
*  IF lt_base[] IS NOT INITIAL.
*    READ TABLE lt_base INTO ls_base INDEX 2.
*    i_oaid  = ls_base-id.
*    i_status = ls_base-status.
*    i_type1 = ls_base-type.
*    i_type2 = ls_base-type2.
*    i_type3 = ls_base-type3.
*  ENDIF.

    SELECT oaid,status INTO TABLE @DATA(lt_oaid) FROM zoas_log WHERE oaid EQ @i_oaid AND status EQ '0' AND resultcode EQ 'S' .

    lv_time = sy-datum && sy-uzeit.
    ls_oalog-mandt = sy-mandt.
    ls_oalog-oaid = i_oaid.
    ls_oalog-trantime = lv_time.
    ls_oalog-status = i_status.
    ls_oalog-username = i_USERNAME.
    ls_oalog-useracount = i_useracount.
    ls_oalog-type1 = i_TYPE1.
    ls_oalog-type2 = i_TYPE2.
    ls_oalog-type3 = i_TYPE3.

    IF lt_oaid IS INITIAL.
      APPEND ls_oalog TO lt_oalog.
      CLEAR ls_oalog.
      CLEAR ls_Freturn.
      IF  lt_oalog IS NOT INITIAL.
        MODIFY  zoas_log  FROM TABLE lt_oalog.
        COMMIT WORK AND WAIT.
        ls_Freturn-success = 'true'.  "abap_true .
        ls_Freturn-content = '传入ID='&& i_oaid.
      ELSE.
        ROLLBACK WORK.
        ls_Freturn-success = 'false'."abap_false .
        ls_Freturn-content = '接收失败,请检查ID重试'.
      ENDIF.

      DATA(has_entries) = xsdbool( lt_oalog IS NOT INITIAL ).

      CLEAR lt_oalog.
      e_response = /ui2/cl_json=>serialize( ls_Freturn ).

      lv_taskname = sy-uname && sy-datum && sy-uzeit.

      CALL FUNCTION 'Z_ACC_DOCUMENT_INFO_POST' STARTING NEW TASK lv_taskname
        EXPORTING
          lv_oaid       = i_oaid
          lv_status     = i_status
          lv_username   = i_username
          lv_useracount = i_useracount
          lv_type1      = i_type1
          lv_type2      = i_type2
          lv_type3      = i_type3
*     TABLES
*         ET_RETURN     =
        .

    ELSE.
      LOOP AT lt_oaid INTO DATA(ls_oas).

        " oaid1 = ls_oas-oaid.
        "status1 = ls_oas-status.
        IF i_status EQ '0'.
          ls_Freturn-success = 'false'."abap_false .
          ls_Freturn-content = '该id已成功制定凭证,请勿重复'.
          e_response = /ui2/cl_json=>serialize( ls_Freturn ).
        ELSE .
          APPEND ls_oalog TO lt_oalog.
          CLEAR ls_oalog.
          IF  lt_oalog IS NOT INITIAL.
            MODIFY  zoas_log  FROM TABLE lt_oalog.
            COMMIT WORK AND WAIT.

            lv_taskname = sy-uname && sy-datum && sy-uzeit.
            CALL FUNCTION 'Z_ACC_DOCUMENT_INFO_POST' STARTING NEW TASK lv_taskname
              EXPORTING
                lv_oaid     = i_oaid
                lv_status   = i_status
                lv_username = i_username
                lv_useracount   = i_useracount
                lv_type1    = i_type1
                lv_type2    = i_type2
                lv_type3    = i_type3.
            .
          ENDIF.
        ENDIF.

      ENDLOOP.


    ENDIF.

  ENDLOOP.
   IF ls_Freturn-success = 'false'.
*-- rfc log - last phase
*    INCLUDE zhs_log_end_e.

  ELSE.
*-- rfc log - last phase
*    INCLUDE zhs_log_end_s.
  ENDIF.

ENDFUNCTION.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSO (单点登录) 是一种身份验证和访问控制机制,允许用户使用一组凭据(例如用户名和密码)在多个应用程序中进行身份验证。其目的是简化用户的登录过程,提高安全性,并提供无缝的访问体验。 SAP SuccessFactors(SF)是一套云端人力资源管理解决方案,提供雇佣、培训、绩效管理等功能。对接SAP SF,意味着将SSO机制集成到SF应用中。 在实施SSO对接SAP SF时,需要采取以下步骤: 1. 配置身份提供商(IdP):选择一个可信任的身份提供商,如Active Directory Federation Services(AD FS)或其他支持SAML协议的服务提供商,并配置好身份验证方法。 2. 配置SAP SF:在SAP SF中,配置SSO设置,与身份提供商建立信任关系,并提供必要的元数据(metadata)信息。 3. 配置用户映射:确保SAP SF中的用户账号与身份提供商中的用户账号进行正确映射,以保证登录时用户能够正确识别。 4. 测试和验证:测试SSO机制是否正常工作,确保用户可以使用身份提供商的凭据访问SAP SF应用,并自动登录。 5. 后续维护和支持:一旦SSO成功对接SAP SF,需要进行常规维护和支持,包括更新身份提供商凭据、更新SAP SF配置等。 总结起来,对接SSO和SAP SF的过程包括配置身份提供商、配置SAP SF、配置用户映射、测试和验证,并进行后续维护和支持。这样一来,用户就可以方便地使用单一凭据来访问并管理SAP SF应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值