VA01信贷使用

1业务场景

业务在正式机中发现,当使用VA01输入客户编号回车后会报错

2解决方法

1. SE24进入CL_IM_UKM_SD_FSCM_INTEGR1

2. 双击方法IF_EX_BADI_SD_CM~FSCM_CREDIT_CHECK_ORDER

3. 找到并进入cl_ukm_xi_facade_r3_50=>if_ukm_credit_query_r3~check_credit

4. 在此处创建隐式增强

ZSD_WS_Credit

FSCM Credit Webservice Enhancement

5.粘贴的代码

ENHANCEMENT 1  ZSD_WS_CREDIT.    "active version
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$SE:(2) Class CL_UKM_XI_FACADE_R3_50, Interface IF_UKM_CREDIT_QUERY_R3, Method CHECK_CREDIT, Start, Enhancement ZSD_WS_CREDIT, Start                      A
* Data Declarations that would be used for local mapping of structures

    DATA:
          ls_query1     TYPE ukmr3_credit_worthiness_query,
          ls_response1  TYPE ukmr3_cw_response,
          lx_exc1       TYPE REF TO cx_root,
          lx_ai1        TYPE REF TO cx_ai_system_fault,
          e_message1    LIKE LINE OF et_return,
          ltext1        TYPE string.
* Data declaration to get the input data to the proxy
      DATA: ls_input        TYPE ukm_credit_worthiness_q_in,
            ls_ouput        TYPE ukm_credit_worthiness_r_out,
            ls_chk_sch      TYPE ukm_credit_worthiness_query_ch,
*       ls_chk_sch1     TYPE ukmr3_cw_checkingschedule1,
            ls_chk_sch1     LIKE LINE OF ls_query1-credit_worthiness_query-credit_worthiness_query-checking_schedule,
            lref_wor_qu     TYPE REF TO cl_ukm_credit_worthiness_query,
            ls_in_cre_par   TYPE ukm_cw_creditor_party,
*       ls_out_cre_par  TYPE ukmr3_cw_creditor_party2,
            ls_out_cre_par  TYPE ukm_cw_creditor_party,
            ls_in_sel_par   TYPE ukm_cw_seller_party,
*       ls_out_sel_par  TYPE ukmr3_cw_seller_party2,
            ls_out_sel_par  TYPE ukm_cw_seller_party,
            ls_in_pro_cat   TYPE ukm_cw_product_category,
*       ls_out_pro_cat  TYPE ukmr3_cw_product_category2.
            ls_out_pro_cat  TYPE ukm_cw_product_category.

**Using the below method convert the Import Parameters coming into Check Credit Method -  query data being sent to PI
      CALL METHOD cl_ukm_xi_facade_r3_50=>credit_query_convert_outbound
      EXPORTING
        i_partner        = i_partner
        i_credit_sgmnt   = i_credit_sgmnt
        i_amount         = i_amount
        i_currency       = i_currency
        i_checkrule      = i_checkrule
        i_checkseverity  = i_checkseverity
        i_retrieval_flag = i_retrieval_flag
        i_effective_date = i_effective_date
        i_log_reference  = i_log_reference
        it_schedule      = it_schedule
      IMPORTING
        es_query         = ls_query1.




* Map the values from ls_query1 to ls_input and than calling the inbound proxy of FSCM* information of the segment id

      MOVE:
      ls_query1-credit_worthiness_query-credit_worthiness_query-credit_segment_internal_id
      TO ls_input-credit_worthiness_query-credit_worthiness_query-credit_segment_internal_id,

*     information of the amount to be checked
      ls_query1-credit_worthiness_query-credit_worthiness_query-checked_amount-currency_code
      TO ls_input-credit_worthiness_query-credit_worthiness_query-checked_amount-currency_code,

      ls_query1-credit_worthiness_query-credit_worthiness_query-checked_amount-VALUE
      TO ls_input-credit_worthiness_query-credit_worthiness_query-checked_amount-VALUE,
*  Details of the rule code
      ls_query1-credit_worthiness_query-credit_worthiness_query-checking_rule_code
      TO ls_input-credit_worthiness_query-credit_worthiness_query-checking_rule_code,

*  Details of severity code
      ls_query1-credit_worthiness_query-credit_worthiness_query-checking_severity_code
      TO ls_input-credit_worthiness_query-credit_worthiness_query-checking_severity_code,

*  Details of permission indicator
      ls_query1-credit_worthiness_query-credit_worthiness_query-car_permission_indicator
      TO ls_input-credit_worthiness_query-credit_worthiness_query-credit_agency_permission_ind.

      LOOP AT ls_query1-credit_worthiness_query-credit_worthiness_query-checking_schedule
      INTO ls_chk_sch1.

        MOVE: ls_chk_sch1-valuation_date                TO ls_chk_sch-valuation_date,
        ls_chk_sch1-checked_amount                TO ls_chk_sch-checked_amount,
        ls_chk_sch1-credit_segment_internal_id    TO ls_chk_sch-credit_segment_internal_id,
        ls_chk_sch1-debtor_party-scheme_id        TO ls_chk_sch-debtor_party-scheme_id,
        ls_chk_sch1-debtor_party-scheme_agency_id TO ls_chk_sch-debtor_party-scheme_agency_id,
        ls_chk_sch1-debtor_party-VALUE            TO ls_chk_sch-debtor_party-VALUE.

        APPEND ls_chk_sch TO
        ls_input-credit_worthiness_query-credit_worthiness_query-checking_schedule.
        CLEAR ls_chk_sch.

      ENDLOOP.

* setting up values of DEBTOR PARTY
      MOVE:
      ls_query1-credit_worthiness_query-credit_worthiness_query-debtor_party-internal_id-scheme_id
      TO ls_input-credit_worthiness_query-credit_worthiness_query-debtor_party-internal_id-scheme_id,

      ls_query1-credit_worthiness_query-credit_worthiness_query-debtor_party-internal_id-scheme_agency_id
      TO ls_input-credit_worthiness_query-credit_worthiness_query-debtor_party-internal_id-scheme_agency_id,

      ls_query1-credit_worthiness_query-credit_worthiness_query-debtor_party-internal_id-VALUE
      TO ls_input-credit_worthiness_query-credit_worthiness_query-debtor_party-internal_id-VALUE,

*     setting up values of CREDITOR PARTY
      ls_query1-credit_worthiness_query-credit_worthiness_query-creditor_party-internal_id-scheme_id
      TO ls_input-credit_worthiness_query-credit_worthiness_query-creditor_party-internal_id-scheme_id,

      ls_query1-credit_worthiness_query-credit_worthiness_query-creditor_party-internal_id-scheme_agency_id
      TO ls_input-credit_worthiness_query-credit_worthiness_query-creditor_party-internal_id-scheme_agency_id,

      ls_query1-credit_worthiness_query-credit_worthiness_query-creditor_party-internal_id-VALUE
      TO ls_input-credit_worthiness_query-credit_worthiness_query-creditor_party-internal_id-VALUE,

*     setting up values of seller party
      ls_query1-credit_worthiness_query-credit_worthiness_query-seller_party-internal_id-scheme_id
      TO ls_input-credit_worthiness_query-credit_worthiness_query-seller_party-internal_id-scheme_id,

      ls_query1-credit_worthiness_query-credit_worthiness_query-seller_party-internal_id-scheme_agency_id
      TO ls_input-credit_worthiness_query-credit_worthiness_query-seller_party-internal_id-scheme_agency_id,

      ls_query1-credit_worthiness_query-credit_worthiness_query-seller_party-internal_id-VALUE
      TO ls_input-credit_worthiness_query-credit_worthiness_query-seller_party-internal_id-VALUE,

*     setting up values of product category
      ls_query1-credit_worthiness_query-credit_worthiness_query-product_category-internal_id-scheme_id
      TO ls_input-credit_worthiness_query-credit_worthiness_query-product_category-internal_id-scheme_id,

      ls_query1-credit_worthiness_query-credit_worthiness_query-product_category-internal_id-scheme_agency_id
      TO ls_input-credit_worthiness_query-credit_worthiness_query-product_category-internal_id-scheme_agency_id,

      ls_query1-credit_worthiness_query-credit_worthiness_query-product_category-internal_id-VALUE
      TO ls_input-credit_worthiness_query-credit_worthiness_query-product_category-internal_id-VALUE.

***************************************************************************************

**     Call the inbound Proxy with the data mapped in previous steps                     **

**     This is the Proxy method that is called when the FSCM inbound call is made to ECC **

***************************************************************************************

      CREATE OBJECT lref_wor_qu.

      TRY.
        CALL METHOD lref_wor_qu->ii_ukm_credit_worthiness_query~execute_synchronous
        EXPORTING
          INPUT  = ls_input
        IMPORTING
          OUTPUT = ls_ouput.
      CATCH cx_ukm_cw_check_fault INTO lx_exc1.

        ltext1 = lx_exc1->get_text( ).
        MESSAGE e008(ukm_pi) WITH ltext1 INTO e_message1-MESSAGE.

        e_message1-TYPE         = sy-msgty.
        e_message1-ID           =  sy-msgid.
        e_message1-NUMBER       = sy-msgno.
        e_message1-message_v1   = ltext1.
        APPEND e_message1 TO et_return.
        RAISE credit_check_failed.

      ENDTRY.


* From the response of the Inbound Proxy, map accordingly to the corresponding structures and tables to be converted into the return parameters of the Check Credit Method

      MOVE:
      ls_ouput-credit_worthiness_response-credit_worthiness-credit_segment_internal_id
      TO  ls_response1-credit_worthiness_response-credit_worthiness-credit_segment_internal_id,

      ls_ouput-credit_worthiness_response-credit_worthiness-indicator
      TO  ls_response1-credit_worthiness_response-credit_worthiness-indicator,

      ls_ouput-credit_worthiness_response-credit_worthiness-debtor_party_blocked_indicator
      TO  ls_response1-credit_worthiness_response-credit_worthiness-debtor_party_blocked_indicator,

      ls_ouput-credit_worthiness_response-credit_worthiness-debtor_party_attntn_indicator
      TO  ls_response1-credit_worthiness_response-credit_worthiness-debtor_party_special_attention,

      ls_ouput-credit_worthiness_response-credit_worthiness-horizon_end_date
      TO  ls_response1-credit_worthiness_response-credit_worthiness-horizon_end_date,

*     setting up value for DEBTOR PARTY
      ls_ouput-credit_worthiness_response-credit_worthiness-debtor_party-internal_id-scheme_id
      TO  ls_response1-credit_worthiness_response-credit_worthiness-debtor_party-internal_id-scheme_id,

      ls_ouput-credit_worthiness_response-credit_worthiness-debtor_party-internal_id-scheme_agency_id
      TO  ls_response1-credit_worthiness_response-credit_worthiness-debtor_party-internal_id-scheme_agency_id,

      ls_ouput-credit_worthiness_response-credit_worthiness-debtor_party-internal_id-VALUE
      TO  ls_response1-credit_worthiness_response-credit_worthiness-debtor_party-internal_id-VALUE,

*     setting up value for RATING
      ls_ouput-credit_worthiness_response-credit_worthiness-rating
      TO  ls_response1-credit_worthiness_response-credit_worthiness-rating,

*     setting up value for RISK_CLASS
      ls_ouput-credit_worthiness_response-credit_worthiness-risk_class
      TO  ls_response1-credit_worthiness_response-credit_worthiness-risk_class,

*     setting up value for CREDIT_LIMIT
      ls_ouput-credit_worthiness_response-credit_worthiness-credit_limit
      TO  ls_response1-credit_worthiness_response-credit_worthiness-credit_limit,

      ls_ouput-credit_worthiness_response-credit_worthiness-checking_description[]
      TO  ls_response1-credit_worthiness_response-credit_worthiness-checking_description[].



*     getting the values of the creditor party
      LOOP AT ls_ouput-credit_worthiness_response-credit_worthiness-creditor_party
      INTO ls_in_cre_par.

        MOVE: ls_in_cre_par-internal_id-scheme_id         TO ls_out_cre_par-internal_id-scheme_id,
        ls_in_cre_par-internal_id-scheme_agency_id  TO ls_out_cre_par-internal_id-scheme_agency_id,
        ls_in_cre_par-internal_id-VALUE             TO  ls_out_cre_par-internal_id-VALUE.

        APPEND ls_out_cre_par TO ls_response1-credit_worthiness_response-credit_worthiness-creditor_party.
        CLEAR ls_out_cre_par.
      ENDLOOP.

*     getting the values of the seller party
      LOOP AT ls_ouput-credit_worthiness_response-credit_worthiness-seller_party
      INTO ls_in_sel_par.

        MOVE: ls_in_sel_par-internal_id-scheme_id         TO ls_out_sel_par-internal_id-scheme_id,
        ls_in_sel_par-internal_id-scheme_agency_id  TO ls_out_sel_par-internal_id-scheme_agency_id,
        ls_in_sel_par-internal_id-VALUE             TO ls_out_sel_par-internal_id-VALUE.

        APPEND ls_out_sel_par TO ls_response1-credit_worthiness_response-credit_worthiness-seller_party.
        CLEAR ls_out_sel_par.
      ENDLOOP.

*     getting the values of product category
      LOOP AT ls_ouput-credit_worthiness_response-credit_worthiness-product_category
      INTO ls_in_pro_cat.

        MOVE: ls_in_pro_cat-internal_id-scheme_id         TO ls_out_pro_cat-internal_id-scheme_id,
        ls_in_pro_cat-internal_id-scheme_agency_id  TO ls_out_pro_cat-internal_id-scheme_agency_id,
        ls_in_pro_cat-internal_id-VALUE             TO ls_out_pro_cat-internal_id-VALUE.

        APPEND ls_in_pro_cat TO
        ls_response1-credit_worthiness_response-credit_worthiness-product_category.
        CLEAR ls_in_pro_cat.

      ENDLOOP.

* Use the data populated with the proxy response to convert it to the Export parameters of the Check Credit Method

      CALL METHOD cl_ukm_xi_facade_r3_50=>credit_query_convert_inbound
      EXPORTING
        is_response           = ls_response1
      IMPORTING
        et_credit_messages    = et_credit_messages
        e_check_confirmation  = e_check_confirmation
        e_rating              = e_rating
        e_riskclass           = e_riskclass
        e_creditlimit         = e_creditlimit
        e_limit_currency      = e_limit_currency
        e_limit_valid_to      = e_limit_valid_to
        e_blocked_indicator   = e_blocked_indicator
        e_attntn_indicator    = e_attntn_indicator
        e_credit_horizon_date = e_credit_horizon_date.

* EXIT statement to come out of the method.

      EXIT.

* This EXIT statement would force the execution out of this method by-passing the standard code where PI calls are made


ENDENHANCEMENT.
原文地址:https://www.cnblogs.com/BinGeneral/p/12859182.html