quarta-feira, 22 de julho de 2020

Selecionar itens de contratos pendentes - utilizando classe da transação SDV3

  METHOD get_analise_contrato.

    DATAlt_fieldlist TYPE tdt_fieldname,
          lt_message   TYPE tdt_sdoc_msg,
          lt_field_sel TYPE tdt_fieldname.

    DATAls_selcrit TYPE tds_sdoc_selcrit,
          ls_it_cont TYPE tp_it_cont.

    DATAlo_data TYPE REF TO data,
          lo_exc  TYPE REF TO cx_root.

    FIELD-SYMBOLS<lt_result> TYPE STANDARD TABLE.

    DATA lo_result_tab_type TYPE REF TO cl_abap_tabledescr.

    REFRESH et_it_cont.

    ls_selcrit-vbeln VALUE #sign 'I' option 'EQ' low i_vbeln ).
    ls_selcrit-open abap_true.

    TRY.

        DATA(lo_sdocNEW cl_sdoc_select_report_adapter(
                        iv_application_id if_sdoc_select=>co_application_id-va45nn
                        iv_trvog if_sdoc_select=>co_trvog-contract ).

        INSERT if_sdoc_adapter=>co_fieldname-bstnk INTO TABLE lt_fieldlist.
        INSERT if_sdoc_adapter=>co_fieldname-audat INTO TABLE lt_fieldlist.
        INSERT if_sdoc_adapter=>co_fieldname-auart INTO TABLE lt_fieldlist.
        INSERT if_sdoc_adapter=>co_fieldname-vbeln INTO TABLE lt_fieldlist.
        INSERT if_sdoc_adapter=>co_fieldname-ernam INTO TABLE lt_fieldlist.
        INSERT if_sdoc_adapter=>co_fieldname-kunnr INTO TABLE lt_fieldlist.
        INSERT if_sdoc_adapter=>co_fieldname-netwr INTO TABLE lt_fieldlist.
        INSERT if_sdoc_adapter=>co_fieldname-waerk INTO TABLE lt_fieldlist.
        INSERT if_sdoc_adapter=>co_fieldname-posnr INTO TABLE lt_fieldlist.
        INSERT if_sdoc_adapter=>co_fieldname-matnr INTO TABLE lt_fieldlist.
        INSERT if_sdoc_adapter=>co_fieldname-zmeng INTO TABLE lt_fieldlist.
        INSERT if_sdoc_adapter=>co_fieldname-vrkme INTO TABLE lt_fieldlist.
        INSERT if_sdoc_adapter=>co_fieldname-kwmeng INTO TABLE lt_fieldlist.

        lo_result_tab_type lo_sdoc->if_sdoc_adapter~get_result_table_type).
        CREATE DATA lo_data TYPE HANDLE lo_result_tab_type.

        ASSIGN lo_data->TO <lt_result>.

        lo_sdoc->execute_query(
              EXPORTING
                it_req_result_comp_name lt_fieldlist
                is_selcrit              ls_selcrit
              IMPORTING
                et_result               <lt_result>
                et_message              lt_message
                et_field_sel            lt_field_sel ).

      CATCH cx_sy_create_object_error INTO lo_exc.
        MESSAGE lo_exc->get_textTYPE 'I'.

    ENDTRY.

    IF <lt_result> IS ASSIGNED.

      LOOP AT <lt_result> ASSIGNING FIELD-SYMBOL(<ls_result>).

        CLEAR ls_it_cont.

        ASSIGN COMPONENT 'POSNR' OF STRUCTURE <ls_result> TO FIELD-SYMBOL(<l_value>).
        CHECK sy-subrc 0.
        ls_it_cont-posnr <l_value>.
        ASSIGN COMPONENT 'MATNR' OF STRUCTURE <ls_result> TO <l_value>.
        CHECK sy-subrc 0.
        ls_it_cont-matnr <l_value>.
        ASSIGN COMPONENT 'KWMENG' OF STRUCTURE <ls_result> TO <l_value>.
        CHECK sy-subrc 0.
        ls_it_cont-kwmeng <l_value>.

        APPEND ls_it_cont TO et_it_cont.

      ENDLOOP.

    ENDIF.


  ENDMETHOD.

Funções para checagem de crédito de cliente


      *** SALDO DO CRÉDITO **********  

      CALL FUNCTION 'UKM_COMMTS_BUPA_DISPLAY'
        EXPORTING
          i_partner  = <id_kunnr>
          i_segment  ls_sgm-credit_sgmnt
        IMPORTING
          e_amount_l l_amount.

      ADD <total> TO l_amount.

      *********** CALCULA EM PERCENTUAL SE ULTRAPASSOU O VALOR   
      CALL FUNCTION 'UKM_CALCULATE_EXPOSURE'
        EXPORTING
          i_credit_limit     ls_sgm-credit_limit
          i_commitment       l_amount
        IMPORTING
          e_exposure_percent l_exp_percent.

      IF l_exp_percent > '99.9'.
       

        ***** LIMPA OBJETOS
        FIELD-SYMBOLS <lo_check_worth> TYPE REF TO cl_ukm_credit_check_simu.
        ASSIGN ('(SAPLUKM_CREDIT_WORTHINESS_SIMU)g_gui_check_worthiness')
           TO <lo_check_worth>.
        IF sy-subrc 0.
          FREE <lo_check_worth>.
        ENDIF.
           
     *********** VERIFICA PARTIDAS EM ABERTO EM ATRASO
        CALL FUNCTION 'UKM_CREDIT_CHECK_SIMU'
          EXPORTING
            i_partner      = <id_kunnr>
            i_segment      ls_sgm-credit_sgmnt
            i_currency     'BRL'
            i_no_dialog    abap_true
          IMPORTING
            e_check_result ls_check_result.

        CHECK ls_check_result IS NOT INITIAL.

        DATA(lt_denialls_check_result-denial_reasons[].

     endif.