Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Problem in ABAP Proxy

former_member219850
Participant
0 Likes
875

Hi

I have written below code in ABAP Proxy.

  METHOD zii_si_bloomberg_exchange_rate~si_bloomberg_exchange_rate_as.

* Start of code added by Cybertech on 14/12/2015

* Forex rate upload Project

* Types Declaration

    TYPES: BEGIN OF ty_fcurr_tcurr,

             fcurr TYPE fcurr_curr,

             tcurr TYPE tcurr_curr,

             kurst TYPE kurst_curr,

           END OF ty_fcurr_tcurr,

           BEGIN OF ty_input,

             rate_type  TYPE kurst_curr,

             from_curr  TYPE fcurr_curr,

             to_currncy TYPE tcurr_curr,

             valid_from TYPE gdatu_cur,

             exch_rate  TYPE char50,

           END OF ty_input,

           BEGIN OF ty_tcurf,

             kurst TYPE kurst_curr,

             fcurr TYPE fcurr_curr,

             tcurr TYPE tcurr_curr,

             gdatu TYPE gdatu_invv,

             ffact TYPE ffact_curr,

             tfact TYPE tfact_curr,

             abwct TYPE abwkt_curr,

             abwga TYPE abwga_curr,

           END OF ty_tcurf,

           BEGIN OF ty_error,

             kurst     TYPE kurst_curr,

             fcurr     TYPE fcurr_curr,

             tcurr     TYPE tcurr_curr,

             exch_rate TYPE char50,

             descr     TYPE char255,

           END OF ty_error.

* Internal tables declaration

    DATA: gt_input       TYPE STANDARD TABLE OF ty_input,

          gt_return      TYPE STANDARD TABLE OF bapiret2,

          gt_tcurf       TYPE STANDARD TABLE OF ty_tcurf,

          gt_fcurr_tcurr TYPE STANDARD TABLE OF ty_fcurr_tcurr,

          gt_final       TYPE STANDARD TABLE OF bapi1093_0,

          gt_error       TYPE STANDARD TABLE OF ty_error,

          gt_enq         TYPE STANDARD TABLE OF seqg3,

*          gt_enq1        TYPE STANDARD TABLE OF seqg3,

          gt_temp        TYPE STANDARD TABLE OF ty_input,

          gt_binary1     TYPE solix_tab,

          gt_binary2     TYPE solix_tab,

          gt_binary3     TYPE solix_tab.

* Work area declartion

    DATA:

      gw_return      TYPE bapiret2,

      gw_structure   TYPE zdt_exchange_rate_exchange_rat,

      gw_input       TYPE ty_input,

      gw_fcurr_tcurr TYPE ty_fcurr_tcurr,

      gw_tcurf       TYPE ty_tcurf,

      gw_final       TYPE bapi1093_0,

      gw_error       TYPE ty_error,

      gw_enq         TYPE seqg3,

*      gw_enq1        TYPE seqg3,

      gw_temp        TYPE ty_input.

* Variables Declarations

    DATA: gv_str1          TYPE char4,

          gv_str2          TYPE string,

          gv_str3          TYPE string,

          gv_str4          TYPE string,

          gv_str5          TYPE string,

          gv_str6          TYPE string,

          gv_str7          TYPE string,

          gv_date          TYPE char10,

          gv_date2         TYPE char10,

          gv_var           TYPE char20,

          gv_var2          TYPE char20,

          gv_count         TYPE num2,

          gv_count3        TYPE num2,

          gv_count4        TYPE num2,

          gv_num1          TYPE char10,

          gv_num2          TYPE char10,

          gv_count2        TYPE num2,

          gv_sisid         TYPE sy-sysid,

          gv_sydatum       TYPE char10,

          gv_uzeit         TYPE char10,

          gv_mailsub       TYPE so_obj_des,

          gv_attach1       TYPE sood-objdes,

          gv_attach2       TYPE sood-objdes,

          gv_attach3       TYPE sood-objdes,

          gv_mbody         TYPE string,

          gv_date3         TYPE sy-datum,

          gv_garg          TYPE eqegraarg,

          gv_tabix         TYPE sy-tabix,

          gv_rc            TYPE sy-subrc,

          gv_final         TYPE string,

          gv_final2        TYPE string,

          gv_final3        TYPE string,

          gv_size1         TYPE so_obj_len,

          gv_size2         TYPE so_obj_len,

          gv_size3         TYPE so_obj_len,

          gv_send_request  TYPE REF TO cl_bcs,

          gv_sender        TYPE REF TO if_sender_bcs,

          gv_main_text     TYPE soli_tab,

          gv_document      TYPE REF TO cl_document_bcs,

          gv_recipient     TYPE REF TO if_recipient_bcs,

          gv_sent_to_all   TYPE os_boolean,

          gv_bcs_exception TYPE REF TO cx_bcs,

          gv_user          TYPE sy-uname,

          gv_client        TYPE sy-mandt.

* Constants Declarations

    CONSTANTS: gc_x       TYPE c LENGTH 1 VALUE 'X',

               gc_csv     TYPE c LENGTH 3 VALUE 'CSV',

               gc_tab     TYPE c VALUE cl_bcs_convert=>gc_tab,

               gc_crlf    TYPE c VALUE cl_bcs_convert=>gc_crlf,

               gc_xls     TYPE c LENGTH 3 VALUE 'xls',

               gc_4103    TYPE abap_encod VALUE '4103',

               gc_01      TYPE c LENGTH 2 VALUE '01',

               gc_rstable TYPE seqg3-gname VALUE 'RSTABLE'.

    IF NOT input-mt_exchange_rate-exchange_rate IS INITIAL.

      LOOP AT input-mt_exchange_rate-exchange_rate INTO gw_structure.

        gw_fcurr_tcurr-fcurr = gw_structure-from_curr.

        gw_fcurr_tcurr-tcurr = gw_structure-to_curr.

        gw_fcurr_tcurr-kurst = gw_structure-rate_type.

        APPEND gw_fcurr_tcurr TO gt_fcurr_tcurr.

        CLEAR : gw_fcurr_tcurr, gw_structure.

      ENDLOOP.

    ENDIF.

* Checking currency combinations for business availability

    IF NOT gt_fcurr_tcurr IS INITIAL.

      SELECT  kurst

              fcurr

              tcurr

              gdatu

              ffact

              tfact

              abwct

              abwga

        FROM tcurf

        INTO TABLE gt_tcurf

        FOR ALL ENTRIES IN gt_fcurr_tcurr

        WHERE fcurr = gt_fcurr_tcurr-fcurr

        AND   tcurr = gt_fcurr_tcurr-tcurr

        AND   kurst = gt_fcurr_tcurr-kurst.

    ENDIF.

    IF sy-subrc EQ 0.

      IF NOT  gt_tcurf IS INITIAL.

        LOOP AT gt_tcurf INTO gw_tcurf.

          CALL FUNCTION 'CONVERSION_EXIT_INVDT_OUTPUT'

            EXPORTING

              input  = gw_tcurf-gdatu

            IMPORTING

              output = gv_date.

          CALL FUNCTION 'CONVERSION_EXIT_SDATE_INPUT'

            EXPORTING

              input  = gv_date

            IMPORTING

              output = gv_date2.

          IF gv_date2 GT sy-datum.

            DELETE gt_tcurf INDEX sy-tabix.

          ENDIF.

          CLEAR: gw_tcurf,gv_date,gv_date2.

        ENDLOOP.

      ENDIF.

      SORT gt_tcurf BY kurst fcurr tcurr.

      IF NOT input-mt_exchange_rate-exchange_rate IS INITIAL.

        LOOP AT input-mt_exchange_rate-exchange_rate INTO gw_structure.

          READ TABLE gt_tcurf INTO gw_tcurf

            WITH KEY kurst = gw_structure-rate_type

                     fcurr = gw_structure-from_curr

                     tcurr = gw_structure-to_curr BINARY SEARCH.

          IF sy-subrc EQ 0.

            gw_input-rate_type      = gw_structure-rate_type.

            gw_input-from_curr      = gw_structure-from_curr.

            gw_input-to_currncy     = gw_structure-to_curr.

            CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'

              EXPORTING

                date      = gw_structure-valid_from

                days      = 01

                months    = 00

                signum    = '+'

                years     = 00

              IMPORTING

                calc_date = gv_date3.

            IF sy-subrc <> 0.

*               Implement suitable error handling here

            ENDIF.

            gw_input-valid_from = gv_date3.

            gw_input-exch_rate = gw_structure-exch_rate.

            APPEND gw_input TO gt_input.

            CLEAR: gw_input,gw_tcurf,gv_count,gv_count2,gv_var,gv_num1,

                   gv_num2,gw_structure,gv_date3.

          ENDIF.

        ENDLOOP.

      ENDIF.

    ENDIF.

* Deleting the indirect data which came from external xml file.

    SORT gt_input BY  rate_type from_curr to_currncy.

    gt_temp[] = gt_input[].

    SORT gt_temp BY rate_type  from_curr to_currncy.

    IF NOT gt_input IS INITIAL.

      LOOP AT gt_input INTO gw_input.

        gw_final-rate_type = gw_input-rate_type.

        gw_final-from_curr = gw_input-from_curr.

        gw_final-to_currncy = gw_input-to_currncy.

        gw_final-valid_from = gw_input-valid_from.

        gw_final-from_factor = gc_01.

        gw_final-to_factor = gc_01.

        gv_var = gw_input-exch_rate.

        FIND FIRST OCCURRENCE OF '.' IN gv_var.

        IF sy-subrc EQ 4.

          gv_count = strlen( gv_var ).

          IF gv_count LT 5.

            gw_final-exch_rate = gw_input-exch_rate.

            APPEND gw_final TO gt_final.

            CLEAR gw_final.

            READ TABLE gt_temp INTO gw_temp WITH KEY  rate_type = gw_input-rate_type

                                                      from_curr = gw_input-to_currncy

                                                      to_currncy = gw_input-from_curr BINARY SEARCH.

            IF sy-subrc EQ 0.

              gv_tabix = sy-tabix.

              gw_final-rate_type = gw_input-rate_type.

              gw_final-from_curr = gw_input-to_currncy.

              gw_final-to_currncy = gw_input-from_curr.

              gw_final-valid_from = gw_input-valid_from.

              gw_final-exch_rate_v = gw_input-exch_rate.

              gw_final-from_factor_v = gc_01.

              gw_final-to_factor_v = gc_01.

              APPEND gw_final TO gt_final.

              DELETE gt_temp INDEX gv_tabix.

              DELETE gt_input INDEX gv_tabix.

            ENDIF.

            CLEAR: gw_final,gw_input,gw_temp,gv_tabix.

          ELSE.

* Appending error file

            gw_error-kurst = gw_input-rate_type.

            gw_error-fcurr = gw_input-from_curr.

            gw_error-tcurr = gw_input-to_currncy.

            gw_error-exch_rate = gw_input-exch_rate.

            gw_error-descr = 'Input rate exceeds the allowed length'.

            APPEND gw_error TO gt_error.

            CLEAR: gw_final,gw_input,gw_temp,gv_tabix,gw_error.

          ENDIF.

        ELSEIF sy-subrc EQ 0.

          SPLIT gv_var AT '.' INTO gv_num1 gv_num2.

          gv_count = strlen( gv_num1 ).

          gv_count2 = strlen( gv_num2 ).

          IF gv_count LT 5 AND gv_count2 LT 6.

            gw_final-exch_rate = gw_input-exch_rate.

            APPEND gw_final TO gt_final.

            CLEAR gw_final.

            READ TABLE gt_temp INTO gw_temp WITH KEY  rate_type = gw_input-rate_type

                                                      from_curr = gw_input-to_currncy

                                                      to_currncy = gw_input-from_curr BINARY SEARCH.

            IF sy-subrc EQ 0.

              gv_tabix = sy-tabix.

              gv_var2 = gw_temp-exch_rate.

              FIND FIRST OCCURRENCE OF '.' IN gv_var2.

              IF sy-subrc EQ 4.

                gv_count2 = strlen( gv_var2 ).

                IF gv_count2 GT 4.

                  gw_error-kurst = gw_temp-rate_type.

                  gw_error-fcurr = gw_temp-from_curr.

                  gw_error-tcurr = gw_temp-to_currncy.

                  gw_error-exch_rate = gw_temp-exch_rate.

                  gw_error-descr = 'Input rate exceeds the allowed length'.

                  APPEND gw_error TO gt_error.

                  CLEAR gw_error.

                  CLEAR: gv_var2,gv_count2.

                ENDIF.

              ELSEIF sy-subrc EQ 0.

                SPLIT gv_var2 AT '.' INTO gv_num1 gv_num2.

                gv_count3 = strlen( gv_num1 ).

                gv_count4 = strlen( gv_num2 ).

                IF gv_count3 GT 4 AND gv_count4 GT 5.

                  gw_error-kurst = gw_temp-rate_type.

                  gw_error-fcurr = gw_temp-from_curr.

                  gw_error-tcurr = gw_temp-to_currncy.

                  gw_error-exch_rate = gw_temp-exch_rate.

                  gw_error-descr = 'Input rate exceeds the allowed length'.

                  APPEND gw_error TO gt_error.

                  CLEAR: gw_error.

                  CLEAR gv_var2.

                ENDIF.

              ENDIF.

              gw_final-rate_type = gw_input-rate_type.

              gw_final-from_curr = gw_input-to_currncy.

              gw_final-to_currncy = gw_input-from_curr.

              gw_final-valid_from = gw_input-valid_from.

              gw_final-exch_rate_v = gw_input-exch_rate.

              gw_final-from_factor_v = gc_01.

              gw_final-to_factor_v = gc_01.

              APPEND gw_final TO gt_final.

              DELETE gt_temp INDEX gv_tabix.

              DELETE gt_input INDEX gv_tabix.

              CLEAR: gw_final,gw_input,gw_temp,gv_tabix.

            ENDIF.

          ELSE.

* Appending error file

            gw_error-kurst = gw_input-rate_type.

            gw_error-fcurr = gw_input-from_curr.

            gw_error-tcurr = gw_input-to_currncy.

            gw_error-exch_rate = gw_input-exch_rate.

            gw_error-descr = 'Input rate exceeds the allowed length'.

            APPEND gw_error TO gt_error.

            CLEAR: gw_final,gw_input,gw_temp,gv_tabix,gw_error.

          ENDIF.

        ENDIF.

      ENDLOOP.

    ENDIF.

* Adding code for removing databas lock on OB08 & TCURR

    CALL FUNCTION 'ENQUEUE_READ'

      EXPORTING

        gclient               = sy-mandt

        gname                 = gc_rstable

        guname                = ''

      TABLES

        enq                   = gt_enq

      EXCEPTIONS

        communication_failure = 1

        system_failure        = 2

        OTHERS                = 3.

    IF sy-subrc EQ 0.

* Implement suitable error handling here

    ENDIF.

    SORT gt_enq STABLE BY gname.

    READ TABLE gt_enq INTO gw_enq WITH KEY gname = gc_rstable

                                           garg+0(5)  = 'TCURR' BINARY SEARCH.

    IF sy-subrc = 0.

*      MOVE-CORRESPONDING gw_enq TO gw_enq1.

*      APPEND gw_enq1 TO gt_enq1.

      gv_user = gw_enq-guname.

    ENDIF.

    IF NOT gv_user IS INITIAL.

      gv_client = sy-mandt.

      CALL FUNCTION 'TH_DELETE_USER'

        EXPORTING

          user            = gv_user

          client          = gv_client

          tid             = -1

        EXCEPTIONS

          authority_error = 1

          OTHERS          = 2.

      IF sy-subrc <> 0.

      ENDIF.

    ENDIF.

* BAPI Called for Data upload in TCURR Database Table.

    CALL FUNCTION 'BAPI_EXCHRATE_CREATEMULTIPLE'

      EXPORTING

        upd_allow     = gc_x

        chg_fixed     = gc_x

        dev_allow     = '000'

      TABLES

        exchrate_list = gt_final

        return        = gt_return.

    IF sy-subrc EQ 0.

* Forcing Database COMMIT

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

        EXPORTING

          wait = gc_x.

    ENDIF.

* Code for processing Email

    IF NOT gt_final IS INITIAL.

      LOOP AT gt_final INTO gw_final.

        gv_str1 = gw_final-rate_type.

        gv_str2 = gw_final-from_curr.

        gv_str3 = gw_final-to_currncy.

        IF NOT gw_final-exch_rate IS INITIAL.

          gv_str4 = gw_final-exch_rate.

        ELSE.

          gv_str4 = gw_final-exch_rate_v.

        ENDIF.

        gv_str5 = gw_final-valid_from.

        IF NOT gw_final-from_factor IS INITIAL.

          gv_str6 = gw_final-from_factor.

        ELSE.

          gv_str6 = gw_final-from_factor_v.

        ENDIF.

        IF NOT gw_final-to_factor IS INITIAL.

          gv_str7 = gw_final-to_factor.

        ELSE.

          gv_str7 = gw_final-to_factor_v.

        ENDIF.

        CONCATENATE gv_final

                     gv_str1 gc_tab

                     gv_str2 gc_tab

                     gv_str3 gc_tab

                     gv_str4 gc_tab

                     gv_str5 gc_tab

                     gv_str6 gc_tab

                     gv_str7 gc_crlf

                     INTO gv_final.

        CLEAR: gv_str1, gv_str2, gv_str3, gv_str3, gv_str4, gv_str5,

               gv_str6 ,gv_str7,gw_final.

      ENDLOOP.

    ENDIF.

    IF NOT gt_return IS INITIAL.

      LOOP AT gt_return INTO gw_return.

        gv_str2 = gw_return-message.

        CONCATENATE gv_final2

                    gv_str2 gc_crlf

                    INTO gv_final2.

        CLEAR: gv_str2,gw_return.

      ENDLOOP.

    ENDIF.

    IF NOT gt_error IS INITIAL.

      LOOP AT gt_error INTO gw_error.

        gv_str1 = gw_error-kurst.

        gv_str2 = gw_error-fcurr.

        gv_str3 = gw_error-tcurr.

        gv_str4 = gw_error-exch_rate.

        gv_str5 = gw_error-descr.

        CONCATENATE gv_final3

                    gv_str1 gc_tab

                    gv_str2 gc_tab

                    gv_str3 gc_tab

                    gv_str4 gc_tab

                    gv_str5 gc_crlf

                    INTO gv_final3.

        CLEAR: gv_str1, gv_str2, gv_str3, gv_str4, gv_str5,gw_error.

      ENDLOOP.

    ENDIF.

    gv_sisid   = sy-sysid.

    gv_uzeit   = sy-uzeit.

    CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'

      EXPORTING

        date_internal            = sy-datum

      IMPORTING

        date_external            = gv_sydatum

      EXCEPTIONS

        date_internal_is_invalid = 1

        OTHERS                   = 2.

    IF sy-subrc <> 0.

* Implement suitable error handling here

    ENDIF.

* First attachment

    IF NOT gv_final IS INITIAL.

      TRY.

          cl_bcs_convert=>string_to_solix(

            EXPORTING

              iv_string   = gv_final

              iv_codepage = gc_4103

              iv_add_bom  = gc_x

            IMPORTING

              et_solix  = gt_binary1

              ev_size   = gv_size1 ).

        CATCH cx_bcs.

          MESSAGE e445(so).

      ENDTRY.

    ENDIF.

* Second attachment

    IF NOT gv_final2 IS INITIAL.

      TRY.

          cl_bcs_convert=>string_to_solix(

            EXPORTING

              iv_string   = gv_final2

              iv_codepage = gc_4103

              iv_add_bom  = gc_x

            IMPORTING

              et_solix  = gt_binary2

              ev_size   = gv_size2 ).

        CATCH cx_bcs.

          MESSAGE e445(so).

      ENDTRY.

    ENDIF.

* Third attachment

    IF NOT gv_final3 IS INITIAL.

      TRY.

          cl_bcs_convert=>string_to_solix(

            EXPORTING

              iv_string   = gv_final3

              iv_codepage = gc_4103

              iv_add_bom  = gc_x

            IMPORTING

              et_solix  = gt_binary3

              ev_size   = gv_size3 ).

        CATCH cx_bcs.

          MESSAGE e445(so).

      ENDTRY.

    ENDIF.

    TRY.

* create persistent send request

        gv_send_request = cl_bcs=>create_persistent( ).

        gv_sender = cl_cam_address_bcs=>create_internet_address( 'Forex@User' ).

        CALL METHOD gv_send_request->set_sender

          EXPORTING

            i_sender = gv_sender.

* Generating Mailbody & Subject

        CONCATENATE 'Forex rates:-' gv_sisid'_Connected Cars' ',' 'DATE:' gv_sydatum

                  INTO gv_mailsub.

        CONCATENATE 'Please go through above attachment of Forex rates for system:-' gv_sisid'Connected Cars' ','

                 'Dated:' gv_sydatum ',' 'Time:' gv_uzeit INTO gv_mbody SEPARATED BY space.

        CALL FUNCTION 'SCMS_STRING_TO_FTEXT'

          EXPORTING

            text      = gv_mbody

          TABLES

            ftext_tab = gv_main_text.

        IF sy-subrc EQ 0.

        ENDIF.

        gv_document = cl_document_bcs=>create_document(

          i_type    = 'RAW'

          i_text    = gv_main_text

          i_subject = gv_mailsub ).

* First attachment

        IF NOT gt_binary1 IS INITIAL.

          CONCATENATE 'Input Forex exhchange rate File_' gv_sisid INTO gv_attach1.

          gv_document->add_attachment(

            i_attachment_type    = gc_xls

            i_attachment_subject = gv_attach1

            i_attachment_size    = gv_size1

            i_att_content_hex    = gt_binary1 ).

        ENDIF.

* Second attachment

        IF NOT gt_binary2 IS INITIAL.

          CONCATENATE 'Messages file_' gv_sisid INTO gv_attach2.

          gv_document->add_attachment(

            i_attachment_type    = gc_xls

            i_attachment_subject = gv_attach2

            i_attachment_size    = gv_size2

            i_att_content_hex    = gt_binary2 ).

        ENDIF.

* Third attachment

        IF NOT gt_binary3 IS INITIAL.

          CONCATENATE 'Floating_rate Error file_' gv_sisid INTO gv_attach3.

          gv_document->add_attachment(

            i_attachment_type    = gc_xls

            i_attachment_subject = gv_attach3

            i_attachment_size    = gv_size3

            i_att_content_hex    = gt_binary3 ).

        ENDIF.

* Add document object to send request

        gv_send_request->set_document( gv_document ).

* Add recipient (e-mail address i.e. Distribution List)

        gv_recipient = cl_distributionlist_bcs=>getu_persistent( i_dliname = 'ZFI_FOREX_EM'

                                                               i_private = space ).

* Add recipient object to send request

        gv_send_request->add_recipient( gv_recipient ).

* Send document

        gv_sent_to_all = gv_send_request->send( i_with_error_screen = gc_x ).

        COMMIT WORK.

      CATCH cx_bcs INTO gv_bcs_exception.

        MESSAGE i865(so) WITH gv_bcs_exception->error_type.

    ENDTRY.

    REFRESH: gt_binary1, gt_binary2, gt_binary3,gt_input,gt_error,gt_return,gt_temp.

    CLEAR: gv_size1, gv_size2, gv_size3,gv_attach1, gv_attach2, gv_attach3,

           gv_mbody,gv_main_text,gv_final,gv_final2,gv_final3,gv_client,gv_user.

*End of code added by Cybertech on 14/12/2015

  ENDMETHOD.

******************************************************************************* END OF CODE**************************************************************************

Function module TH_DELETE_USER is behaving strangely.

Interface is triggered by username RFC_PIT130 which has following authorizations.

OBJCT      AUTH         FIELD      VON

S_ADMI_FCD T-PD47969101 S_ADMI_FCD AUDD

S_ADMI_FCD T-PD47969101 S_ADMI_FCD BTCH

S_ADMI_FCD T-PD47969101 S_ADMI_FCD F4MX

S_ADMI_FCD T-PD47969101 S_ADMI_FCD FONT

S_ADMI_FCD T-PD47969101 S_ADMI_FCD LC01

S_ADMI_FCD T-PD47969101 S_ADMI_FCD LC02

S_ADMI_FCD T-PD47969101 S_ADMI_FCD LC03

S_ADMI_FCD T-PD47969101 S_ADMI_FCD LC04

S_ADMI_FCD T-PD47969101 S_ADMI_FCD NADM

S_ADMI_FCD T-PD47969101 S_ADMI_FCD SM02

S_ADMI_FCD T-PD47969101 S_ADMI_FCD SM21

S_ADMI_FCD T-PD47969101 S_ADMI_FCD SP01

S_ADMI_FCD T-PD47969101 S_ADMI_FCD SP0R

S_ADMI_FCD T-PD47969101 S_ADMI_FCD ST0R

S_ADMI_FCD T-PD47969101 S_ADMI_FCD UDSP

S_ADMI_FCD T-PP513803     S_ADMI_FCD NADM

Session is not getting killed, because of that BAPI is throwing an USER LOCKED ERROR.

Please suggest us what should we do???

Thanks,

Darshan.

2 REPLIES 2
Read only

PeterJonker
Active Contributor
0 Likes
680

I don't understand much of why you try to delete the user. I guess becuase he/she is locking the TCURR table while the proxy tries to upload some data to this table.

Wouldn't it be better to try to set a lock on the TCURR table in a while loop (with a counter and a wait for x secs statement to be able to kill the while loop after for example 10 tries with a 2 second wait ) with the proper lock object ? Throwing a user out of the system is not really a nice solution.

You could in stead send a system message to the user asking him/her to leave the transaction.

That doesn't give an explanation about why the FM doesn't work, but I noticed you didn't do any error handling either.

I guess you did debug because you know which error is thrown by the bapi and you didn't do error handling in your code.

Read only

0 Likes
680

Hi Peter,

Thank you for your reply.

I did not get that much.

Please illustrate more with an example.

Thanks,

Darshan.