SHVENDORSET_GET_ENTITYSET
   IF io_tech_request_context->get_search_string( ) IS INITIAL.
      CALL METHOD super->shvendorset_get_entityset
        EXPORTING
          iv_entity_name           = iv_entity_name
          iv_entity_set_name       = iv_entity_set_name
          iv_source_name           = iv_source_name
          it_filter_select_options = it_filter_select_options
          is_paging                = is_paging
          it_key_tab               = it_key_tab
          it_navigation_path       = it_navigation_path
          it_order                 = it_order
          iv_filter_string         = iv_filter_string
          iv_search_string         = iv_search_string
          io_tech_request_context  = io_tech_request_context
        IMPORTING
          et_entityset             = et_entityset
          es_response_context      = es_response_context
          .
    ELSE.
      cl_fis_shlp_processor=>get_values(
        EXPORTING
          iv_search_help          = 'Z_SH_LFA1'
          iv_search_help_field    = 'LIFNR'
          io_tech_request_context = io_tech_request_context
        IMPORTING
          et_entityset            = et_entityset
          es_response_context     = es_response_context ).

    ENDIF. "io_tech_request_context->get_search_string( ) IS INITIAL.
  ENDMETHOD.
  
  SHREGIONSET_GET_ENTITYSET
    METHOD shregionset_get_entityset.
    IF io_tech_request_context->get_search_string( ) IS INITIAL.
      CALL METHOD super->shregionset_get_entityset
        EXPORTING
          iv_entity_name           = iv_entity_name
          iv_entity_set_name       = iv_entity_set_name
          iv_source_name           = iv_source_name
          it_filter_select_options = it_filter_select_options
          is_paging                = is_paging
          it_key_tab               = it_key_tab
          it_navigation_path       = it_navigation_path
          it_order                 = it_order
          iv_filter_string         = iv_filter_string
          iv_search_string         = iv_search_string
          io_tech_request_context  = io_tech_request_context
        IMPORTING
          et_entityset             = et_entityset
          es_response_context      = es_response_context
        .
    ELSE.
      cl_fis_shlp_processor=>get_values(
        EXPORTING
          iv_search_help          = 'Z_SH_REGIO'
          iv_search_help_field    = 'BLAND'
          io_tech_request_context = io_tech_request_context
        IMPORTING
          et_entityset            = et_entityset
          es_response_context     = es_response_context ).


    ENDIF. "io_tech_request_context->get_search_string( ) IS INITIAL.
  ENDMETHOD.
  
  SHLANGUAGESET_GET_ENTITYSET
    METHOD shlanguageset_get_entityset.
    IF io_tech_request_context->get_search_string( ) IS INITIAL.

      CALL METHOD super->shlanguageset_get_entityset
        EXPORTING
          iv_entity_name           = iv_entity_name
          iv_entity_set_name       = iv_entity_set_name
          iv_source_name           = iv_source_name
          it_filter_select_options = it_filter_select_options
          is_paging                = is_paging
          it_key_tab               = it_key_tab
          it_navigation_path       = it_navigation_path
          it_order                 = it_order
          iv_filter_string         = iv_filter_string
          iv_search_string         = iv_search_string
          io_tech_request_context  = io_tech_request_context
        IMPORTING
          et_entityset             = et_entityset
          es_response_context      = es_response_context
          .
      ELSE.
        cl_fis_shlp_processor=>get_values(
          EXPORTING
            iv_search_help          = 'CMD_SH_LANGUAGE'
            iv_search_help_field    = 'LAISO'
            io_tech_request_context = io_tech_request_context
          IMPORTING
            et_entityset            = et_entityset
            es_response_context     = es_response_context ).
    ENDIF. "io_tech_request_context->get_search_string( ) IS INITIAL.
  ENDMETHOD.
  
  SHCOUNTRYSET_GET_ENTITYSET
    METHOD shcountryset_get_entityset.
**TRY.
    IF io_tech_request_context->get_search_string( ) IS INITIAL.
      CALL METHOD super->shcountryset_get_entityset
        EXPORTING
          iv_entity_name           = iv_entity_name
          iv_entity_set_name       = iv_entity_set_name
          iv_source_name           = iv_source_name
          it_filter_select_options = it_filter_select_options
          is_paging                = is_paging
          it_key_tab               = it_key_tab
          it_navigation_path       = it_navigation_path
          it_order                 = it_order
          iv_filter_string         = iv_filter_string
          iv_search_string         = iv_search_string
          io_tech_request_context  = io_tech_request_context
        IMPORTING
          et_entityset             = et_entityset
          es_response_context      = es_response_context
          .
    ELSE.
      cl_fis_shlp_processor=>get_values(
        EXPORTING
          iv_search_help          = 'Z_SH_COUNTRY'
          iv_search_help_field    = 'LAND1'
          io_tech_request_context = io_tech_request_context
        IMPORTING
          et_entityset            = et_entityset
          es_response_context     = es_response_context ).

    ENDIF. "io_tech_request_context->get_search_string( ) IS INITIAL.
  ENDMETHOD.
  
  SHCOMPANYCODE_GET_ENTITYSET
    METHOD shcompanycode_get_entityset.
    IF io_tech_request_context->get_search_string( ) IS INITIAL.
      CALL METHOD super->shcompanycode_get_entityset
        EXPORTING
          iv_entity_name           =  iv_entity_name
          iv_entity_set_name       =  iv_entity_set_name
          iv_source_name           =  iv_source_name
          it_filter_select_options =  it_filter_select_options
          is_paging                =  is_paging
          it_key_tab               =  it_key_tab
          it_navigation_path       =  it_navigation_path
          it_order                 =  it_order
          iv_filter_string         =  iv_filter_string
          iv_search_string         =  iv_search_string
          io_tech_request_context  =  io_tech_request_context
        IMPORTING
          et_entityset             =  et_entityset
          es_response_context      =  es_response_context
          .
      cl_fis_shlp_processor=>get_values(
        EXPORTING
          iv_search_help          = 'H_T001'
          iv_search_help_field    = 'BUKRS'
          io_tech_request_context = io_tech_request_context
        IMPORTING
          et_entityset            = et_entityset
          es_response_context     = es_response_context ).
    ENDIF.
  ENDMETHOD.
  
  SHBANKSET_GET_ENTITYSET
  METHOD shbankset_get_entityset.

  IF io_tech_request_context->get_search_string( ) IS INITIAL.
    CALL METHOD super->shbankset_get_entityset
      EXPORTING
        iv_entity_name           = iv_entity_name
        iv_entity_set_name       = iv_entity_set_name
        iv_source_name           = iv_source_name
        it_filter_select_options = it_filter_select_options
        is_paging                = is_paging
        it_key_tab               = it_key_tab
        it_navigation_path       = it_navigation_path
        it_order                 = it_order
        iv_filter_string         = iv_filter_string
        iv_search_string         = iv_search_string
        io_tech_request_context  = io_tech_request_context
      IMPORTING
        et_entityset             = et_entityset
        es_response_context      = es_response_context
        .
  ELSE.
    cl_fis_shlp_processor=>get_values(
      EXPORTING
        iv_search_help          = 'Z_SH_BANK'
        iv_search_help_field    = 'BANKS'
        io_tech_request_context = io_tech_request_context
      IMPORTING
        et_entityset            = et_entityset
        es_response_context     = es_response_context ).
  ENDIF. "io_tech_request_context->get_search_string( ) IS INITIAL.
ENDMETHOD.

SCREENFIELDSSET_CREATE_ENTITY
  METHOD screenfieldsset_create_entity.
    DATA: ls_vendor TYPE lfa1,
          ls_screen_fields TYPE zvmd_screen_fields,
          ls_lfbk TYPE lfbk,
          lv_bnka TYPE bnka,
          lv_adrc TYPE adrc,
          lv_lifnr(10) TYPE c,
          lv_addrnum TYPE lfa1-adrnr,
          lv_address TYPE ad_addrnum,
          lv_spras TYPE lfa1-spras,
          lv_smtp_addr TYPE adr6-smtp_addr,
          ls_tiban TYPE tiban,
          lv_bnklz TYPE bnka-bnklz,
          ls_item TYPE zitem.


    io_data_provider->read_entry_data( IMPORTING es_data = ls_screen_fields ).

    lv_lifnr = ls_screen_fields-lifnr.
    lv_smtp_addr = ls_screen_fields-ad_smtpadr.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input        = lv_lifnr
      IMPORTING
        output       = lv_lifnr  .


    CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
      EXPORTING
        input                  = ls_screen_fields-laiso
      IMPORTING
        output                 = lv_spras .

    CALL FUNCTION 'CONVERSION_EXIT_SXIDN_INPUT'
      EXPORTING
        input        = lv_smtp_addr
     IMPORTING
       output        =  lv_smtp_addr.


    IF ls_screen_fields-action = 'Update'.
      SELECT adrnr FROM lfa1 INTO lv_addrnum WHERE lifnr = lv_lifnr.
      ENDSELECT.

      UPDATE lfa1 SET name1 = ls_screen_fields-name WHERE lifnr = lv_lifnr.
      UPDATE lfa1 SET land1 = ls_screen_fields-land1 WHERE lifnr = lv_lifnr.
      UPDATE lfa1 SET regio = ls_screen_fields-regio WHERE lifnr = lv_lifnr.
      UPDATE lfa1 SET stras = ls_screen_fields-stras WHERE lifnr = lv_lifnr.
      UPDATE lfa1 SET pstlz = ls_screen_fields-pstlz WHERE lifnr = lv_lifnr.
      UPDATE lfa1 SET ort01 = ls_screen_fields-ort01 WHERE lifnr = lv_lifnr.
      UPDATE lfa1 SET spras = lv_spras WHERE lifnr = lv_lifnr.
      UPDATE lfa1 SET stcd1 = ls_screen_fields-stcd1 WHERE lifnr = lv_lifnr.
      UPDATE lfa1 SET stceg = ls_screen_fields-stceg WHERE lifnr = lv_lifnr.
      UPDATE lfa1 SET telf1 = ls_screen_fields-telf1 WHERE lifnr = lv_lifnr.

      UPDATE adrc SET name1 = ls_screen_fields-name WHERE addrnumber = lv_addrnum.
      UPDATE adrc SET country = ls_screen_fields-land1 WHERE addrnumber = lv_addrnum.
      UPDATE adrc SET city1 = ls_screen_fields-ort01 WHERE addrnumber = lv_addrnum.
      UPDATE adrc SET street = ls_screen_fields-street WHERE addrnumber = lv_addrnum.
      UPDATE adrc SET house_num1 = ls_screen_fields-house_num1 WHERE addrnumber = lv_addrnum.
      UPDATE adrc SET post_code1 = ls_screen_fields-pstlz WHERE addrnumber = lv_addrnum.
      UPDATE adrc SET region = ls_screen_fields-regio WHERE addrnumber = lv_addrnum.
      UPDATE adrc SET country = ls_screen_fields-land1 WHERE addrnumber = lv_addrnum.
      UPDATE adrc SET langu = lv_spras WHERE addrnumber = lv_addrnum.

      UPDATE adr6 SET smtp_addr = lv_smtp_addr WHERE addrnumber = lv_addrnum.


      SELECT SINGLE * FROM lfbk INTO ls_lfbk WHERE lifnr = lv_lifnr AND banks = ls_screen_fields-banks
        AND bankl = ls_screen_fields-bankl AND bankn = ls_screen_fields-bankn.
      IF sy-subrc = 0.
        UPDATE lfbk SET banks = ls_screen_fields-banks WHERE lifnr = lv_lifnr.
        UPDATE lfbk SET bankl = ls_screen_fields-bankl WHERE lifnr = lv_lifnr.
        UPDATE lfbk SET bankn = ls_screen_fields-bankn WHERE lifnr = lv_lifnr.
        UPDATE lfbk SET bkont = ls_screen_fields-bkont WHERE lifnr = lv_lifnr.
        UPDATE lfbk SET bvtyp = ls_screen_fields-bvtyp WHERE lifnr = lv_lifnr.
        ELSE.
          CLEAR ls_lfbk.
          ls_lfbk-mandt = sy-mandt.
          ls_lfbk-lifnr = lv_lifnr.
          ls_lfbk-banks = ls_screen_fields-banks.
          ls_lfbk-bankl = ls_screen_fields-bankl.
          ls_lfbk-bankn = ls_screen_fields-bankn.
          INSERT INTO lfbk VALUES ls_lfbk.
      ENDIF.


      SELECT SINGLE * FROM tiban INTO ls_tiban WHERE banks = ls_screen_fields-banks
        AND bankl = ls_screen_fields-bankl AND bankn = ls_screen_fields-bankn AND bkont = ls_screen_fields-bkont.
      IF sy-subrc = 0.
        UPDATE tiban SET iban = ls_screen_fields-iban WHERE banks = ls_screen_fields-banks
          AND bankl = ls_screen_fields-bankl AND bankn = ls_screen_fields-bankn
          AND bkont = ls_screen_fields-bkont.
        ELSE.
          CLEAR ls_tiban.
          ls_tiban-banks = ls_screen_fields-banks.
          ls_tiban-bankl = ls_screen_fields-bankl.
          ls_tiban-bankn = ls_screen_fields-bankn.
          ls_tiban-bkont = ls_screen_fields-bkont.
          ls_tiban-iban = ls_screen_fields-iban.
          INSERT INTO tiban VALUES ls_tiban.
      ENDIF.

      SELECT SINGLE * FROM zitem INTO ls_item WHERE lifnr = lv_lifnr.
      IF sy-subrc IS INITIAL.
        UPDATE zitem SET sgtxt = ls_screen_fields-sgtxt WHERE lifnr = lv_lifnr.
        ELSE.
        ls_item-lifnr = lv_lifnr.
        ls_item-sgtxt = ls_screen_fields-sgtxt.
        INSERT INTO zitem VALUES ls_item.
      ENDIF. "sy-subrc IS INITIAL

    ELSEIF ls_screen_fields-action = 'ProposeIBAN'.

      SELECT bnklz FROM bnka INTO lv_bnklz WHERE banks = ls_screen_fields-banks
        AND bankl = ls_screen_fields-bankl.
      ENDSELECT.

      CALL FUNCTION 'CONVERT_BANK_ACCOUNT_2_IBAN'
        EXPORTING
          i_bank_account           = ls_screen_fields-bankn
          i_bank_control_key       = ls_screen_fields-bkont
          i_bank_country           = ls_screen_fields-banks
          i_bank_number            = lv_bnklz
          i_bank_key               = ls_screen_fields-bankl
       IMPORTING
         e_iban                   = ls_screen_fields-iban.
*       EXCEPTIONS
*         NO_CONVERSION            = 1
*         OTHERS                   = 2
                .
      IF sy-subrc <> 0.
        ls_screen_fields-action = 'ERROR'.
      ENDIF.

    ELSEIF ls_screen_fields-action = 'Block'.
      SELECT SINGLE * FROM lfa1 INTO ls_vendor WHERE lifnr =  lv_lifnr.
      IF ls_vendor-sperq <> '99'.
        UPDATE lfa1 SET sperq = '99' WHERE lifnr = lv_lifnr.
        ls_screen_fields-sperq = '99'.
        ELSE.
        UPDATE lfa1 SET sperq = '' WHERE lifnr = lv_lifnr.
        ls_screen_fields-sperq = ''.
      ENDIF.

    ELSEIF ls_screen_fields-action = 'DeletionFlag'.
      SELECT SINGLE * FROM lfa1 INTO ls_vendor WHERE lifnr =  lv_lifnr.
      IF ls_vendor-loevm = 'X'.
        UPDATE lfa1 SET loevm = '' WHERE lifnr = lv_lifnr.
        ls_screen_fields-loevm = ''.
        ELSE.
        UPDATE lfa1 SET loevm = 'X' WHERE lifnr = lv_lifnr.
        ls_screen_fields-loevm = 'X'.
      ENDIF.

    ELSE.

*      lv_lifnr = ls_screen_fields-lifnr.
      SELECT SINGLE bukrs FROM lfb1 INTO ls_screen_fields-bukrs WHERE lifnr = lv_lifnr.
      SELECT SINGLE * FROM lfa1 INTO ls_vendor WHERE lifnr =  lv_lifnr.
      SELECT SINGLE * FROM lfbk INTO ls_lfbk WHERE lifnr = lv_lifnr.
      SELECT SINGLE * FROM adrc INTO lv_adrc WHERE addrnumber = ls_vendor-adrnr.


      SELECT SINGLE name1 from lfa1 INTO ls_screen_fields-name WHERE lifnr =  lv_lifnr.
      ls_screen_fields-land1 = ls_vendor-land1.
      ls_screen_fields-regio = ls_vendor-regio.
      ls_screen_fields-stras = ls_vendor-stras.
      ls_screen_fields-pstlz = ls_vendor-pstlz.
      ls_screen_fields-ort01 = ls_vendor-ort01.
      ls_screen_fields-laiso = ls_vendor-spras.
      ls_screen_fields-stcd1 = ls_vendor-stcd1.
      ls_screen_fields-stceg = ls_vendor-stceg.
      ls_screen_fields-telf1 = ls_vendor-telf1.
      ls_screen_fields-sperq = ls_vendor-sperq.
      ls_screen_fields-loevm = ls_vendor-loevm.

      SELECT SINGLE landx FROM t005t INTO ls_screen_fields-landx
        WHERE spras = sy-langu AND land1 = ls_screen_fields-land1.
      SELECT SINGLE bezei FROM t005u INTO ls_screen_fields-bezei
        WHERE spras = sy-langu AND land1 = ls_screen_fields-land1
          AND bland = ls_screen_fields-regio.
      SELECT SINGLE sptxt FROM t002t INTO ls_screen_fields-sptxt
        WHERE spras = sy-langu AND sprsl = ls_vendor-spras.
      SELECT SINGLE smtp_addr FROM adr6 INTO ls_screen_fields-ad_smtpadr
        WHERE addrnumber =  ls_vendor-adrnr.

      ls_screen_fields-banks = ls_lfbk-banks.
      ls_screen_fields-bankl = ls_lfbk-bankl.
      ls_screen_fields-bankn = ls_lfbk-bankn.
      ls_screen_fields-bkont = ls_lfbk-bkont.
      ls_screen_fields-bvtyp = ls_lfbk-bvtyp.
      ls_screen_fields-street = lv_adrc-street.
      ls_screen_fields-house_num1 = lv_adrc-house_num1.

      SELECT SINGLE landx FROM t005t INTO ls_screen_fields-bankx
        WHERE spras = sy-langu AND land1 = ls_screen_fields-banks.

      SELECT SINGLE * FROM bnka INTO lv_bnka WHERE banks = ls_screen_fields-banks
        AND bankl = ls_screen_fields-bankl.

      SELECT SINGLE iban FROM tiban INTO ls_screen_fields-iban WHERE banks = ls_screen_fields-banks
        AND bankl = ls_screen_fields-bankl
        AND bankn = ls_lfbk-bankn
        AND bkont = ls_lfbk-bkont.

      ls_screen_fields-banka = lv_bnka-banka.
      ls_screen_fields-swift = lv_bnka-swift.

      SELECT SINGLE sgtxt FROM zitem INTO ls_screen_fields-sgtxt WHERE lifnr = lv_lifnr.

ENDIF.


    er_entity-action = ls_screen_fields-action.
    er_entity-lifnr = ls_screen_fields-lifnr.
    er_entity-name = ls_screen_fields-name.
    er_entity-bukrs = ls_screen_fields-bukrs.
    er_entity-land1 = ls_screen_fields-land1.
    er_entity-landx = ls_screen_fields-landx.
    er_entity-regio = ls_screen_fields-regio.
    er_entity-bezei = ls_screen_fields-bezei.
    er_entity-street = ls_screen_fields-street.
    er_entity-house_num1 = ls_screen_fields-house_num1.
    er_entity-stras = ls_screen_fields-stras.
    er_entity-pstlz = ls_screen_fields-pstlz.
    er_entity-ort01 = ls_screen_fields-ort01.
    er_entity-laiso = lv_spras.
    er_entity-sptxt = ls_screen_fields-sptxt.
    er_entity-stcd1 = ls_screen_fields-stcd1.
    er_entity-stceg = ls_screen_fields-stceg.
    er_entity-telf1 = ls_screen_fields-telf1.
    er_entity-adrnr = ls_screen_fields-adrnr.
    er_entity-ad_smtpadr = ls_screen_fields-ad_smtpadr.
    er_entity-banks = ls_screen_fields-banks.
    er_entity-bankx = ls_screen_fields-bankx.
    er_entity-bankl = ls_screen_fields-bankl.
    er_entity-bankn = ls_screen_fields-bankn.
    er_entity-bkont = ls_screen_fields-bkont.
    er_entity-bvtyp = ls_screen_fields-bvtyp.
    er_entity-iban  = ls_screen_fields-iban.
    er_entity-banka = ls_screen_fields-banka.
    er_entity-swift = ls_screen_fields-swift.
    er_entity-sperq = ls_screen_fields-sperq.
    er_entity-loevm = ls_screen_fields-loevm.
    er_entity-sgtxt = ls_screen_fields-sgtxt.

  ENDMETHOD.