Validation \ User-exit \ BADI \ BTE for F-43 for missing exchange rate

Hi,
I maintain the exchange rate on a daily basis in TCURR exchange rate table.
But, let's say that, by accident, in one day I fail to input the exchange rate.
In this case, when I input a invoice in F-43, I'd like for the system to issue a warning (blocking) message saying that there is no exchange rate for that specific posting (translation) date.
I tryed to create a validation for F-43. But the conditions available in validation are just too simple and I couldn't achieve my goal.
However, I saw I can attach an user exit to the validation or an user exit directly in F-43.
I found in SMOD the following user-exits for F-43 (in package FBAS), but I don't know how to use them:
F050S001 FIDCMT, FIDCC1, FIDCC2: Edit user-defined IDoc segment
F050S002 FIDCC1: Change IDoc/do not send
F050S003 FIDCC2: Change IDoc/do not send
F050S004 FIDCMT, FIDCC1, FIDCC2: Change outbound IDoc/do not send
F050S005 FIDCMT, FIDCC1, FIDCC2 Inbound IDoc: Change FI document
F050S006 FI Outgoing IDoc: Reset Clearing in FI Document
F050S007 FIDCCH Outbound: Influence on IDoc for Document Change
F180A001 Balance Sheet Adjustment
FARC0002 Additional Checks for Archiving MM Vendor Master Data
RFAVIS01 Customer Exit for Changing Payment Advice Segment Text
RFEPOS00 Line item display: Checking of selection conditions
RFKORIEX Automatic correspondence
SAPLF051 Workflow for FI (pre-capture, release for payment)
Can you help me to attach an user-exit to a validation or an user exit directly in F-43 to do the specified validation?
Or maybe this can be done with a BADI \ BTE?

Thanks for the reply.
I succeded creating the validation with an user-exit. I made the following steps:
1) I created the validation in GGB0 (for document header), issuing a standard message (420 "Exchange rate not found") from message class (ZRSAU) - which is a copy of RSAU message class (in the beggining I put no pre-requisites, checks or rules, just the message).
2) In OB28 I attached the validation (with call point document header) and I made it active (without batch input).
3) I copied the RGGBR000 program (which is standard program with an example of validation) into ZRGGBR00 (it should be maximum 8 characters).
Then I changed the ZRGGBR00 program (form U100) comparing the translation date (from BKPF) with the date from table TCURR (and exchange rate type M, and documents currency other than local currency).
If the program doesn't find any exchange rate in TCURR in that date, it issues the error message (assigned in GGB0).
4) In GGB0, I put the U100 user exit as a check and rule
5)  In GCX2, I attached the ZRGGBR00 program to the GBLR application area (which is for user exits for validations / rules).
Now it's working fine!

Similar Messages

  • User Exit / Badi / BTE for Asset creation A ?

    Hi Experts,
    I need User Exit  / BADI / BTE for asset Creation.
    After saving newly created Asset from As01 we need to send a mail to the person for whom the Asset is assigned.
    i have tried all this.But no one is triggering after saving the As01 transaction.
    Exit Name           Description                                                                               
    AAPM0001            Integration of asset accounting and plant maintenance                    
    AFAR0003            External changeover method                                               
    AFAR0004            Determination of proportional values for retirement                      
    AINT0004            Change amount posted for certain areas                                   
    AINT0005            Dummy for extended syntax check. Do not use.                             
    AISA0001            Assign Inventory Number                                                  
    AIST0001            Exchange number range in master data maintenance                         
    AIST0002            Customer fields in asset master                                          
    AMSP0002            Determine relationship type for two company codes                        
    TRAN0001            User exit for asset transfer           
    Please suggest if anybody worked on this.
    regards,
    Imran

    Hi,
    Check out the following posts pertaining to similar topic.
    Change Asset Workflow
    Asset Management WORKFLOW
    Regards
    Sreekanth

  • User-Exit / Badi / BTE for STWB_WORK for integrating 3rd party tool

    Hi,
                 I need a user-exit / badi / BTE for the transaction STWB_WORK user test worklist. I'm trying to integrate a 3rd party tool to this transaction. When a worklist from this transaction is selected, i'll run the 3rd party tool executable from abap coding in the user-exit/badi/bte. Can anybody help me find one?
    thanks,
    Venky

    Hello Venky,
    I saw your question in sdn and I am wondering, if you got a solution for your question.
    I will be very happy, if you can help me you. I have the same problem as you.
    cu Manfred

  • USER-EXIT /BADI/ BTE for ROUTING.

    Hi,
    Can somebody help us with  USER-EXIT / BADI / BTE which gets triggered when a routing is being saved? (TX CA01 and CA02)
    We try to use BADI  CUSLNTRTO_ADDIN but it does not meet our requirements.
    Regards.

    Hi,
    You can find it own your own. In one session open SE37 and FM BF_FUNCTIONS_FIND. Set a break-point at call function syntax. Then in another session open F871 and create a doc. Now the system stops at the break-point. Read the container I_EVENT. It'll container the BTE that is triggered when this doc. is created. Then customize that BTE using tcode FIBF.
    Regards,
    Raj

  • FB60  Line item User exit/BADI/BTE

    Hi Guys,
       I need a user exit/ BADI/BTE to change the  Line item in FB60 transaction.  Please let me know ifyou know  any enhancment on this. Thanks
    Regards,
    Ganesh

    Hi Dude,
    Following are the list of BADIS  for FB60 tcode
    BADI_FDCB_SUBBAS01
    BADI_LAYER
    BADI_FDCB_SUBBAS02
    PPA_CUST_BADI
    BADI_FDCB_SUBBAS03
    WRF_PREPAY_INVOICE
    BADI_FDCB_SUBBAS04
    BADI_FDCB_SUBBAS05
    ADDR_LANGU_TO_VERS
    ADDR_PRINTFORM_SHORT
    BADI_MATN1
    For your requirement the releavant badi is PPA_CUST_BADI
    Thanks & Regards
    Ramakrishna Pathi

  • Validation user exit / BADI

    Hello to you all,
    Does anyone know of validation user exit / BADI of FI documents that were created outside of the FI? Like invoice verification in logistic?
    I found a BADI AC_DOCUMENT for substitution,
    I am now looking for validation
    Thanks In advance,
    Yoav

    Hi Yoav,
    The LIV invoice posts a MM based document and a Finance document.
    A Validation in Finance will affect the posting for the Finance document mentioned above, even though it comes from LIV - MM.
    If you want to affect the MM document, then I would suggest you post this thread on the ABAP and MM boards as some of the users there may know a user exit that can be used to validate the values posted.
    Hope this helps.

  • User-Exit/BADI/BTE for transaction /COCKPIT/1

    Hi everybody,
    I need to send and Idoc when a MM invoice enters the system from transaction /COCKPIT/1.
    I already made a function to send the idoc but now I'm having trouble to find a place to fire it.
    Any help would be very much appreciated.
    Thanks.
    Fábio Galvã

    Hi ,
    I dont know if replying on such an old link will help.
    Did you find the user exit /Badi for this transaction?
    Regards,
    Kushmeen

  • Automatic posting (user-exit, BADI, BTE...)

    Hello, saperos (as we are known in Spain).
    We have a requirement from our customer in order to post automatic documents (with call transaction or BAPI) just after the posting of another. I have doubts about the mechanism to do this, maybe a BADI, BTE...? The full business process is like this:
    1) Post of down payment.
    2) Post of invoice (same vendor). Just after this document is saved, we need to post "automatically" a clearing document to the previous down payment (F-54).
    Do you know about a user-exit, BADI or BTE to do this?
    Thanks in advance.

    Try using BADI 'AC_DOCUMENT'. Trnasaction SE18.
    Regards,
    Vishal Thakur.

  • User-Exit/BADI/BTE Search

    Guys,
    Got fed-up trying all the other programs which (unsucessfully) try to find user-exits etc.
    Here is my attempt...
    Any comments would be most welcome..
    *& Report  ZPJA_PM002 (V2)                                            &*
    *& Text Elements:                                                     &*
    *& P_DEVC Show user-exits from development class                      &*
    *& P_LIMIT Limit submit program selection                             &*
    *& P_FUNC Show function modules                                       &*
    *& P_SUBM Show submit programs                                        &*
    *& S01    Selection data (TCode takes precedence  over program name)  &*
    report  zpja_pm002
      no standard page heading
      line-size 158.
    *tables: enlfdir.     "Additional Attributes for Function Modules
    data: tabix      like sy-tabix,
          w_linnum   type i,
          w_off      type i,
          w_index    like sy-tabix,
          w_include  like trdir-name,
          w_prog     like trdir-name,
          w_incl     like trdir-name,
          w_area     like rs38l-area,
          w_level,
          w_str(50)  type c,
          w_funcname like tfdir-funcname.
    constants: c_fmod(40) type c value 'Function modules selected: ',
               c_subm(40) type c value 'Submit programs selected: ',
               c_col1(12) type c value 'Enhanmt Type',
               c_col2(40) type c value 'Enhancement',
               c_col3(30) type c value 'Program/Include',
               c_col4(20) type c value 'Enhancement Name',
               c_col5(40) type c value 'Enhancement Description'.
    * Work Areas: ABAP Workbench
    data: begin of wa_d010inc.
    data: master type d010inc-master.
    data: end of wa_d010inc.
    data: begin of wa_tfdir.
    data: funcname type tfdir-funcname,
          pname    type tfdir-pname,
          include  type tfdir-include.
    data: end of wa_tfdir.
    data: begin of wa_tadir.
    data: devclass type tadir-devclass.
    data: end of wa_tadir.
    data: begin of wa_tstc.
    data: pgmna type tstc-pgmna.
    data: end of wa_tstc.
    data: begin of wa_tstcp.
    data: param type tstcp-param.
    data: end of wa_tstcp.
    data: begin of wa_enlfdir.
    data: area type enlfdir-area.
    data: end of wa_enlfdir.
    * Work Areas: BADIs
    data: begin of wa_sxs_attr.
    data: exit_name type sxs_attr-exit_name.
    data: end of wa_sxs_attr.
    data: begin of wa_sxs_attrt.
    data: text type sxs_attrt-text.
    data: end of wa_sxs_attrt.
    * Work Areas: Enhancements
    data: begin of wa_modsap.
    data: member type modsap-member.
    data: end of wa_modsap.
    data: begin of wa_modsapa.
    data: name type modsapa-name.
    data: end of wa_modsapa.
    data: begin of wa_modsapt.
    data: modtext type modsapt-modtext.
    data: end of wa_modsapt.
    * Work Areas: Business Transaction Events
    data: begin of wa_tbe01t.
    data: text1 type tbe01t-text1.
    data: end of wa_tbe01t.
    data: begin of wa_tps01t.
    data: text1 type tps01t-text1.
    data: end of wa_tps01t.
    * user-exits
    types: begin of t_userexit,
          type(12) type c,
          pname    like trdir-name,
          txt(300),
          level    type c,
          modname(30) type c,
          modtext(40) type c,
    end of t_userexit.
    data: i_userexit type standard table of t_userexit with header line.
    * Function module developmnet classes
    types: begin of t_devclass,
          clas   like trdir-clas,
    end of t_devclass.
    data: i_devclass type standard table of t_devclass with header line.
    * Submit programs
    types: begin of t_submit,
          pname     like trdir-name,
          level,
          done,
    end of t_submit.
    data: i_submit type standard table of t_submit with header line.
    * Source code
    types: begin of t_sourcetab,                        "#EC * (SLIN lügt!)
            line(200),                                  "#EC * (SLIN lügt!)
          end of t_sourcetab.                           "#EC * (SLIN lügt!)
    data: sourcetab type standard table of t_sourcetab with header line.
    data c_overflow(30000) type c.
    * Description of an ABAP/4 source analysis token
    data: i_stoken type standard table of stokex with header line.
    data wa_stoken like i_stoken.
    * Description of an ABAP/4 source analysis statement
    data: i_sstmnt type standard table of sstmnt with header line."#EC NEEDED
    * keywords for searching ABAP code
    types: begin of t_keywords,
          word(30),
    end of t_keywords.
    data: keywords type standard table of t_keywords with header line.
    * function modules within program
    types: begin of t_fmodule,
          name   like rs38l-name,
          pname  like trdir-name,
          pname2 like trdir-name,
          level,
          bapi,
          done,
    end of t_fmodule.
    data: i_fmodule type standard table of t_fmodule with header line.
    *& Selection Options                                                  &*
    selection-screen begin of block selscr1 with frame title text-s01.
    parameter: p_pname like trdir-name memory id rid,
               p_tcode like syst-tcode,
               p_limit(4) type n default 100,
               p_devc  like rihea-dy_ofn default ' ',
               p_func  like rihea-dy_ofn default ' ',
               p_subm  like rihea-dy_ofn default ' '.
    selection-screen end of block selscr1.
    *& START-OF-SELECTION                                                 &*
    start-of-selection.
      if p_pname is initial and p_tcode is initial.
        message e008(hrfpm).  "Make entry on the selection screen
        stop.
      endif.
    * ensure P_LIMIT is not zero.
      if p_limit = 0.
        p_limit = 1.
      endif.
      perform data_select.
      perform get_submit_data.
      perform get_fm_data.
      perform get_additional_data.
      perform data_display.
    *& Form DATA_SELECT                                                   &*
    form data_select.
    * data selection message to sap gui
      call function 'SAPGUI_PROGRESS_INDICATOR'
        destination 'SAPGUI'
        keeping logical unit of work
        exporting
          text                  = 'Get programs/includes'       "#EC NOTEXT
        exceptions
          system_failure
          communication_failure
        .                                                       "#EC *
    * determine search words
      keywords-word = 'CALL'.
      append keywords.
      keywords-word = 'FORM'.
      append keywords.
      keywords-word = 'PERFORM'.
      append keywords.
      keywords-word = 'SUBMIT'.
      append keywords.
      keywords-word = 'INCLUDE'.
      append keywords.
      if not p_tcode is initial.
    * get program name from TCode
        select single pgmna from tstc into wa_tstc-pgmna
                     where tcode eq p_tcode.
        if not wa_tstc-pgmna is initial.
          p_pname = wa_tstc-pgmna.
    * TCode does not include program name, but does have refereve TCode
        else.
          select single param from tstcp into wa_tstcp-param
                       where tcode eq p_tcode.
          if sy-subrc = 0.
            check wa_tstcp-param(1)   = '/'.
            check wa_tstcp-param+1(1) = '*'.
            if wa_tstcp-param ca ' '.
            endif.
            w_off = sy-fdpos + 1.
            subtract 2 from sy-fdpos.
            if sy-fdpos gt 0.
              p_tcode = wa_tstcp-param+2(sy-fdpos).
            endif.
            select single pgmna from tstc into wa_tstc-pgmna
                   where tcode eq p_tcode.
            p_pname = wa_tstc-pgmna.
            if sy-subrc <> 0.
              message e110(/saptrx/asc) with 'No program found for: ' p_tcode."#EC NOTEXT
              stop.
            endif.
          else.
            message e110(/saptrx/asc) with 'No program found for: ' p_tcode."#EC NOTEXT
            stop.
          endif.
        endif.
      endif.
    * Call customer-function aus Program coding
      read report p_pname into sourcetab.
      if sy-subrc > 0.
        message e017(enhancement) with p_pname raising no_program."#EC *
      endif.
      scan abap-source sourcetab tokens     into i_stoken
                                 statements into i_sstmnt
                                 keywords   from keywords
                                 overflow into c_overflow
                                 with includes.
      if sy-subrc > 0. "keine/syntakt. falsche Ablauflog./Fehler im Skanner
        message e130(enhancement) raising syntax_error.         "#EC *
      endif.
    * check I_STOKEN for entries
      clear w_linnum.
      describe table i_stoken lines w_linnum.
      if w_linnum gt 0.
        w_level = '0'.
        w_prog = ''.
        w_incl = ''.
        perform data_search tables i_stoken using w_level w_prog w_incl.
      endif.
    endform.                        "DATA_SELECT
    *& Form GET_FM_DATA                                                   &*
    form get_fm_data.
    * data selection message to sap gui
      call function 'SAPGUI_PROGRESS_INDICATOR'
        destination 'SAPGUI'
        keeping logical unit of work
        exporting
          text                  = 'Get function module data'    "#EC NOTEXT
        exceptions
          system_failure
          communication_failure
        .                                                       "#EC *
    * Function module data
      sort i_fmodule by name.
      delete adjacent duplicates from i_fmodule comparing name.
      loop at i_fmodule where done  ne 'X'.
        clear:   i_stoken, i_sstmnt, sourcetab, wa_tfdir, w_include .
        refresh: i_stoken, i_sstmnt, sourcetab.
        clear wa_tfdir.
        select single funcname pname include from tfdir into wa_tfdir
                                where funcname = i_fmodule-name.
        check sy-subrc = 0.
        call function 'FUNCTION_INCLUDE_SPLIT'
          exporting
            program = wa_tfdir-pname
          importing
            group   = w_area.
        concatenate 'L' w_area 'U' wa_tfdir-include into w_include.
        i_fmodule-pname  = w_include.
        i_fmodule-pname2 = wa_tfdir-pname.
        modify i_fmodule.
        read report i_fmodule-pname into sourcetab.
        if sy-subrc = 0.
          scan abap-source sourcetab tokens     into i_stoken
                                     statements into i_sstmnt
                                     keywords   from keywords
                                     with includes.
          if sy-subrc > 0.
            message e130(enhancement) raising syntax_error.
          endif.
    * check i_stoken for entries
          clear w_linnum.
          describe table i_stoken lines w_linnum.
          if w_linnum gt 0.
            w_level = '1'.
            w_prog  = i_fmodule-pname2.
            w_incl =  i_fmodule-pname.
            perform data_search tables i_stoken using w_level w_prog w_incl.
          endif.
        endif.
      endloop.
      if p_devc = 'X'.
        loop at i_fmodule.
          clear: wa_tadir, wa_enlfdir.
          select single area from enlfdir into wa_enlfdir-area
                                where funcname = i_fmodule-name.
          check not wa_enlfdir-area is initial.
          select single devclass into wa_tadir-devclass
                          from tadir where pgmid    = 'R3TR'
                                       and object   = 'FUGR'
                                       and obj_name = wa_enlfdir-area.
          check not wa_tadir-devclass is initial.
          move wa_tadir-devclass to i_devclass-clas.
          append i_devclass.
          i_fmodule-done = 'X'.
          modify i_fmodule.
        endloop.
        sort i_devclass.
        delete adjacent duplicates from i_devclass.
      endif.
    endform.                        "GET_FM_DATA
    *& Form GET_SUBMIT_DATA                                               &*
    form get_submit_data.
    * data selection message to sap gui
      call function 'SAPGUI_PROGRESS_INDICATOR'
        destination 'SAPGUI'
        keeping logical unit of work
        exporting
          text                  = 'Get submit data'             "#EC NOTEXT
        exceptions
          system_failure
          communication_failure
        .                                                       "#EC *
      sort i_submit.
      delete adjacent duplicates from i_submit comparing pname.
      w_level = '0'.
      loop at i_submit where done ne 'X'.
        clear:   i_stoken, i_sstmnt, sourcetab.
        refresh: i_stoken, i_sstmnt, sourcetab.
        read report i_submit-pname into sourcetab.
        if sy-subrc = 0.
          scan abap-source sourcetab tokens     into i_stoken
                                     statements into i_sstmnt
                                     keywords   from keywords
                                     with includes.
          if sy-subrc > 0.
    *        message e130(enhancement) raising syntax_error.
            continue.
          endif.
    * check i_stoken for entries
          clear w_linnum.
          describe table i_stoken lines w_linnum.
          if w_linnum gt 0.
            w_prog  = i_submit-pname.
            w_incl = ''.
            perform data_search tables i_stoken using w_level w_prog w_incl.
          endif.
        endif.
    * restrict number of submit program selected for processing
        describe table i_submit lines w_linnum.
        if w_linnum ge p_limit.
          w_level = '1'.
        endif.
        i_submit-done = 'X'.
        modify i_submit.
      endloop.
    endform.                       "GET_SUBMIT_DATA
    *& Form DATA_SEARCH                                                   &*
    form data_search tables p_stoken structure stoken
                            using p_level p_prog p_incl.
      loop at p_stoken.
        clear i_userexit.
        tabix = sy-tabix + 1.
        i_userexit-level = p_level.
        if i_userexit-level = '0'.
          if p_incl is initial.
            i_userexit-pname = p_pname.
          else.
            concatenate  p_pname '/' p_incl into i_userexit-pname.
          endif.
        else.
          if p_incl is initial.
            i_userexit-pname = p_prog.
          else.
            concatenate  p_prog '/' p_incl into i_userexit-pname.
          endif.
        endif.
    * Include
        if p_stoken-str eq 'INCLUDE'.
          check p_level eq '0'.    " do not perform for function modules (2nd pass)
          w_index = sy-tabix + 1.
          read table p_stoken index w_index into wa_stoken.
          check not wa_stoken-str cs 'STRUCTURE'.
          check not wa_stoken-str cs 'SYMBOL'.
          read table i_submit with key pname = wa_stoken-str.
          if sy-subrc <> 0.
            i_submit-pname = wa_stoken-str.
            i_submit-level = p_level.
            append i_submit.
          endif.
        endif.
    * Enhancements
        if p_stoken-str eq 'CUSTOMER-FUNCTION'.
          clear w_funcname.
          read table p_stoken index tabix.
          translate p_stoken-str using ''' '.
          condense p_stoken-str.
          if p_prog is initial.
            concatenate 'EXIT' p_pname p_stoken-str into w_funcname
                         separated by '_'.
          else.
            concatenate 'EXIT' p_prog p_stoken-str into w_funcname
                   separated by '_'.
          endif.
          select single member from modsap into wa_modsap-member
                where member = w_funcname.
          if sy-subrc = 0.   " check for valid enhancement
            i_userexit-type = 'Enhancement'.
            i_userexit-txt  = w_funcname.
            append i_userexit.
          else.
            clear wa_d010inc.
            select single master into wa_d010inc-master
                  from d010inc
                     where include = p_prog.
            concatenate 'EXIT' wa_d010inc-master p_stoken-str into w_funcname
                   separated by '_'.
            i_userexit-type = 'Enhancement'.
            i_userexit-txt  = w_funcname.
          endif.
        endif.
    * BADIs
        if p_stoken-str cs 'cl_exithandler='.
          w_index = sy-tabix + 4.
          read table p_stoken index w_index into wa_stoken.
          i_userexit-txt = wa_stoken-str.
          replace all occurrences of '''' in i_userexit-txt with space.
          i_userexit-type = 'BADI'.
          append i_userexit.
        endif.
    * Business transaction events
        if p_stoken-str cs 'OPEN_FI_PERFORM'.
          i_userexit-type = 'BusTrEvent'.
          i_userexit-txt = p_stoken-str.
          replace all occurrences of '''' in i_userexit-txt with space.
          i_userexit-modname =  i_userexit-txt+16(8).
          case i_userexit-txt+25(1).
            when 'E'.
              clear wa_tbe01t.
              select single text1 into wa_tbe01t-text1 from tbe01t
                               where event = i_userexit-txt+16(8)
                                 and spras = sy-langu.
              if wa_tbe01t-text1 is initial.
                i_userexit-modtext = '<Not active>'.            "#EC NOTEXT
              else.
                i_userexit-modtext = wa_tbe01t-text1.
              endif.
              i_userexit-modname+8 = '/P&S'.                    "#EC NOTEXT
            when 'P'.
              clear wa_tps01t.
              select single text1 into wa_tps01t-text1 from tps01t
                               where procs = i_userexit-txt+16(8)
                                 and spras = sy-langu.
              i_userexit-modtext = wa_tps01t-text1.
              i_userexit-modname+8 = '/Process'.
          endcase.
          append i_userexit.
        endif.
    * Program exits
        if p_stoken-str cs 'USEREXIT_'.
          i_userexit-type = 'Program Exit'.
          i_userexit-txt = p_stoken-str.
          replace all occurrences of '''' in i_userexit-txt with space.
          append i_userexit.
        endif.
    * Submit programs
        if p_stoken-str cs 'SUBMIT'.
          check p_level eq '0'.    " do not perform for function modules (2nd pass)
          check not p_stoken-str cs '_'.   " ensure not SUBMIT_XXX
          w_index = sy-tabix + 1.
          read table p_stoken index w_index into wa_stoken.
          check not wa_stoken-str cs '_'.   " ensure not SUBMIT_XXX
          replace all occurrences of '''' in wa_stoken-str with space.
          read table i_submit with key pname = wa_stoken-str.
          if sy-subrc <> 0.
            i_submit-pname = wa_stoken-str.
            i_submit-level = p_level.
            append i_submit.
          endif.
        endif.
    * Perform routines (which reference external programs)
        if p_stoken-str cs 'PERFORM'.
          check p_level eq '0'.    " do not perform for function modules (2nd pass)
          w_index = sy-tabix + 1.
          read table p_stoken index w_index into wa_stoken.
          if not wa_stoken-ovfl is initial.
            w_off = wa_stoken-off1 + 10.
            w_str = c_overflow+w_off(30).
            find ')' in w_str match offset w_off.
            w_off = w_off + 1.
            wa_stoken-str = w_str(w_off).
          endif.
          check wa_stoken-str cs '('.
          w_off = 0.
          while sy-subrc  = 0.
            if wa_stoken-str+w_off(1) eq '('.
              replace section offset w_off length 1 of wa_stoken-str with ''.
              replace all occurrences of ')' in wa_stoken-str with space.
              read table i_submit with key pname = wa_stoken-str.
              if sy-subrc <> 0.
                i_submit-pname = wa_stoken-str.
                append i_submit.
              endif.
              exit.
            else.
              replace section offset w_off length 1 of wa_stoken-str with ''.
              shift wa_stoken-str left deleting leading space.
            endif.
          endwhile.
        endif.
    * Function modules
        if p_stoken-str cs 'FUNCTION'.
          clear i_fmodule.
          check p_level eq '0'.    " do not perform for function modules (2nd pass)
          w_index = sy-tabix + 1.
          read table p_stoken index w_index into wa_stoken.
    **      if wa_stoken-str cs 'WF_'.
    *      if wa_stoken-str cs 'IF_'.
    *        break-point.
    *      endif.
          if wa_stoken-str cs 'BAPI'.
            i_fmodule-bapi = 'X'.
          endif.
          replace first occurrence of '''' in wa_stoken-str with space.
          replace first occurrence of '''' in wa_stoken-str with space.
          if sy-subrc = 4.   " didn't find 2nd quote (ie name truncated)
            clear wa_tfdir.
            concatenate wa_stoken-str '%' into wa_stoken-str.
            select single funcname into wa_tfdir-funcname from tfdir
                         where funcname like wa_stoken-str.
            if sy-subrc = 0.
              i_fmodule-name = wa_tfdir-funcname.
            else.
              continue.
            endif.
          else.
            i_fmodule-name = wa_stoken-str.
          endif.
          i_fmodule-level = p_level.
          append i_fmodule.
        endif.
      endloop.
    endform.                        "DATA_SEARCH
    *& Form GET_ADDITIONAL_DATA                                           &*
    form get_additional_data.
    * data selection message to sap gui
      call function 'SAPGUI_PROGRESS_INDICATOR'
        destination 'SAPGUI'
        keeping logical unit of work
        exporting
          text                  = 'Get additional data'         "#EC NOTEXT
        exceptions
          system_failure
          communication_failure
        .                                                       "#EC *
      loop at i_userexit.
    * Enhancement data
        if  i_userexit-type cs 'Enh'.
          clear: wa_modsapa.
          select single name into wa_modsapa-name from modsap
                            where member = i_userexit-txt.
          check sy-subrc = 0.
          i_userexit-modname = wa_modsapa-name.
          clear wa_modsapt.
          select single modtext into wa_modsapt-modtext from modsapt
                            where name = wa_modsapa-name
                                         and sprsl = sy-langu.
          i_userexit-modtext = wa_modsapt-modtext.
        endif.
    * BADI data
        if  i_userexit-type eq 'BADI'.
          clear wa_sxs_attr.
          select single exit_name into wa_sxs_attr-exit_name from sxs_attr
                                        where exit_name = i_userexit-txt.
          if sy-subrc = 0.
            i_userexit-modname = i_userexit-txt.
          else.
            i_userexit-modname = 'Dynamic call'.                "#EC NOTEXT
          endif.
          clear wa_sxs_attrt.
          select single text into wa_sxs_attrt-text from sxs_attrt
                                         where exit_name = wa_sxs_attr-exit_name
                                           and sprsl = sy-langu.
          i_userexit-modtext = wa_sxs_attrt-text.
        endif.
        modify i_userexit.
      endloop.
    * get enhancements via program package
      clear wa_tadir.
      select single devclass into wa_tadir-devclass from tadir
                                 where pgmid    = 'R3TR'
                                   and object   = 'PROG'
                                   and obj_name = p_pname.
      if sy-subrc = 0.
        clear: wa_modsapa, wa_modsapt.
        select name from modsapa into wa_modsapa-name
                              where devclass = wa_tadir-devclass.
          select single modtext from modsapt into wa_modsapt-modtext
                              where name = wa_modsapa-name
                                and sprsl = sy-langu.
          read table i_userexit with key modname = wa_modsapa-name.
          if sy-subrc <> 0.
            i_userexit-modtext = wa_modsapt-modtext.
            i_userexit-type = 'Enhancement'.                    "#EC NOTEXT
            i_userexit-modname  = wa_modsapa-name.
            i_userexit-txt = 'Determined from program DevClass'."#EC NOTEXT
            i_userexit-pname = 'Unknown'.                       "#EC NOTEXT
            append i_userexit.
          endif.
        endselect.
      endif.
    endform.                        "GET_ADDITIONAL_DATA
    *& Form DATA_DISPLAY                                                  &*
    form data_display.
    * data selection message to sap gui
      call function 'SAPGUI_PROGRESS_INDICATOR'
        destination 'SAPGUI'
        keeping logical unit of work
        exporting
          text                  = 'Prepare screen for display'  "#EC NOTEXT
        exceptions
          system_failure
          communication_failure
        .                                                       "#EC *
      sort i_userexit by type txt modname.
      delete adjacent duplicates from i_userexit comparing txt modname.
    * format headings
      write: 'Enhancements from main program'.                  "#EC NOTEXT
      write: /.
      uline.
      format color col_heading.
      write: /    sy-vline,
             (12) c_col1,                    "Enhanmt Type
                  sy-vline,
             (40) c_col2,                    "Enhancement
                  sy-vline,
             (30) c_col3,                    "Program/Include
                  sy-vline,
             (20) c_col4,                    "Enhancement name
                  sy-vline,
             (40) c_col5,                    "Enhancement description
                  sy-vline.
      format reset.
      uline.
    * format lines
      loop at i_userexit.
    * set line colour
        case i_userexit-type.
          when 'Enhancement'.
            format color 3 intensified off.
          when 'BADI'.
            format color 4 intensified off.
          when 'BusTrEvent'.
            format color 5 intensified off.
          when 'Program Exit'.
            format color 6 intensified off.
          when others.
            format reset.
        endcase.
        write: / sy-vline,
                 i_userexit-type,
                 sy-vline,
                 i_userexit-txt(40),
                 sy-vline,
                 i_userexit-pname(30),
                 sy-vline,
                 i_userexit-modname(20),
                 sy-vline,
                 i_userexit-modtext(40),
                 sy-vline.
      endloop.
      format reset.
      uline.
    * user-exits from development class of function modules
      if p_devc = 'X'.
        write: /.
        write: / 'User-exits from function module development class'."#EC NOTEXT
        write: 157''.
        uline (90).
        write: 157''.
        loop at i_devclass.
          clear wa_modsapa.
          select name from modsapa into wa_modsapa
                       where devclass = i_devclass-clas.
            select single name modtext into corresponding fields of wa_modsapt
                                       from modsapt
                                         where name  = wa_modsapa-name
                                           and sprsl = sy-langu.
            format color 3 intensified off.
            write: / sy-vline,
                     (12) 'Enhancement',
                     sy-vline,
                    wa_modsapa-name,
                    sy-vline,
                    wa_modsapt-modtext,
                    sy-vline.
          endselect.
        endloop.
        uline (90).
        format reset.
      endif.
      describe table i_fmodule lines w_linnum.
      write: / c_fmod , at 35 w_linnum.                         "#EC NOTEXT
      write: 157''.
      if p_func = 'X'.
    * display fuction modules used in program
        uline (38).
        write: 157''.
        loop at i_fmodule.
          write: sy-vline,
                 i_fmodule-name,
                 sy-vline,
                 i_fmodule-bapi,
                 sy-vline.
          write: 157''.
        endloop.
        uline (38).
      endif.
      describe table i_submit lines w_linnum.
      write: / c_subm , at 35 w_linnum.                         "#EC NOTEXT
      write: 157''.
      if p_subm = 'X'.
    * display submit programs used in program
        uline (44).
        write: 157''.
        loop at i_submit.
          write: sy-vline,
                 i_submit-pname,
                 sy-vline.
          write: 157''.
        endloop.
        uline (44).
      endif.
    * issue message with number of user-exits displayed
      describe table i_userexit lines w_linnum.
      message s697(56) with w_linnum.
    endform.                        "DATA_DISPLAY

    HI Peter,
      did you try this code t find the user exit..
    TABLES : tstc,     "SAP Transaction Codes
             tadir,    "Directory of Repository Objects
             modsapt,  "SAP Enhancements - Short Texts
             modact,   "Modifications
             trdir,    "System table TRDIR
             tfdir,    "Function Module
             enlfdir,  "Additional Attributes for Function Modules
             tstct.    "Transaction Code Texts
    DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
    DATA : field1(30).
    DATA : v_devclass LIKE tadir-devclass.
    SELECTION-SCREEN BEGIN OF BLOCK a01 WITH FRAME TITLE text-001.
    SELECTION-SCREEN SKIP.
    PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN END OF BLOCK a01.
    START-OF-SELECTION.
    * Validate Transaction Code
      SELECT SINGLE * FROM tstc
        WHERE tcode EQ p_tcode.
    * Find Repository Objects for transaction code
      IF sy-subrc EQ 0.
        SELECT SINGLE * FROM tadir
           WHERE pgmid    = 'R3TR'
             AND object   = 'PROG'
             AND obj_name = tstc-pgmna.
        MOVE : tadir-devclass TO v_devclass.
        IF sy-subrc NE 0.
          SELECT SINGLE * FROM trdir
             WHERE name = tstc-pgmna.
          IF trdir-subc EQ 'F'.
            SELECT SINGLE * FROM tfdir
              WHERE pname = tstc-pgmna.
            SELECT SINGLE * FROM enlfdir
              WHERE funcname = tfdir-funcname.
            SELECT SINGLE * FROM tadir
              WHERE pgmid    = 'R3TR'
                AND object   = 'FUGR'
                AND obj_name = enlfdir-area.
            MOVE : tadir-devclass TO v_devclass.
          ENDIF.
        ENDIF.
    * Find SAP Modifactions
        SELECT * FROM tadir
          INTO TABLE jtab
          WHERE pgmid    = 'R3TR'
            AND object   = 'SMOD'
            AND devclass = v_devclass.
        SELECT SINGLE * FROM tstct
          WHERE sprsl EQ sy-langu
            AND tcode EQ p_tcode.
        FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
        WRITE:/(19) 'Transaction Code - ',
        20(20) p_tcode,
        45(50) tstct-ttext.
        SKIP.
        IF NOT jtab[] IS INITIAL.
          WRITE:/(95) sy-uline.
          FORMAT COLOR COL_HEADING INTENSIFIED ON.
          WRITE:/1 sy-vline,
          2 'Exit Name',
          21 sy-vline ,
          22 'Description',
          95 sy-vline.
          WRITE:/(95) sy-uline.
          LOOP AT jtab.
            SELECT SINGLE * FROM modsapt
            WHERE sprsl = sy-langu AND
            name = jtab-obj_name.
            FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
            WRITE:/1 sy-vline,
            2 jtab-obj_name HOTSPOT ON,
            21 sy-vline ,
            22 modsapt-modtext,
            95 sy-vline.
          ENDLOOP.
          WRITE:/(95) sy-uline.
          DESCRIBE TABLE jtab.
          SKIP.
          FORMAT COLOR COL_TOTAL INTENSIFIED ON.
          WRITE:/ 'No of Exits:' , sy-tfill.
        ELSE.
          FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
          WRITE:/(95) 'No User Exit exists'.
        ENDIF.
      ELSE.
        FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
        WRITE:/(95) 'Transaction Code Does Not Exist'.
      ENDIF.
    * Take the user to SMOD for the Exit that was selected.
    AT LINE-SELECTION.
      GET CURSOR FIELD field1.
      CHECK field1(4) EQ 'JTAB'.
      SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
      CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
    regards
    satesh

  • User Exit / BADI or similar...for transaction SE10 (Transport Organizer)

    Hi folks.
    I am working with ECC 6.0 and I would like to kow if there is an user exit (that works during creation of a Request (workbench and customizing) ) that could give me the request number that is being created during that moment.
    There are some exits/badis for the releaseing moment/changing of a request, but I need some procees that could give me the request number being created !!!
    Example:
    BADI: CL_IM_CTS_REQUEST_CHECK / method IF_EX_CTS_REQUEST_CHECK~CHECK_BEFORE_CREATION, does not have, at that moment, the request number that is being created, since the request number is created  by SAP a few moments before this method...
    Does anyone already implemented a process like this one before ?
    Thansk in advance!!

    I don't think there is one, but you may either implement an implicit enhancement option (routine GET_NEXT_NUMBER in program SAPLSTRD), or make a custom program which creates transport requests (it is then easier to get the number).

  • User Exit/BADI to Lock Sales order for any changes in VA02 (Excluding Prici

    Hi All,
    I am looking for an User Exit or BADI which disallows any kind of changes in Sales Order on a particular condition.
    This can't b controlled through Authorization, so have to look for an exit. Please suggest.
    If possible, please provide the example.
    Thanks

    Hi,
    Check the user exit MV45AFZZ in this exit u will be finding the Lot of stages where we can control the VA01 or VA02 . Please find the exit with the name SAVE before. Try to check any changes For sales order in CDHDR and CDPOS and give some error message .
    Thanks and Regards,
    Srinivas.

  • Need User exit/BADI or BTE for FF_5

    Hi,
    My requirement is to enhance the automatic clearing rules for tcode ff_5.
    Program RFEBKA00 will upload bank statement items based on the external transaction codes provided by the banks .
    The standard posting rules will clear a GL bank account using a set of algorithms for further interpretation
    set of standard algorithms do not meet the clearing criteria .hence i need user exit / badi/bte to enhance the automatic clearing rules.
    EXIT ZXF01U01& or FEB_BADI are triggering before posting the document.hence i think we can not use these.
    Please suggest me the alternate solution.

    Hi,
    We are facing a similar requirement. We are trying to enhance the interpretation logarithm using search string. The requirement is to update the text field with a Constant Prefix + a number from the Notes to Payee field. For e.g.:
    The BAI file transaction data is like:
    16,169,94906,V,120108,0000,6008ABS43400024460,783517/
    88,TBS EUROPE LTD   203647 10293164
    88,/ENTRY-06 FEB
    88,TRF/REF  6008ABS43400024475
    88,783517 BANK GIRO CREDIT
    We defined a search string to find the text 'TBS EUROPE LTD' and if it is found, the search string fetches the number '783517' from the Notes to Payee field and thereafter, at the time of posting, the text field has to be updated with '120108 TBS EUROPE LTD 783517', where 120108 is the validity date of the incoming money through this transaction and which does not form part of the Notes to Payee field.
    Also, if just the number '783517' has to be updated in the text field.
    Please suggest how to achieve this functionality.
    Thanks in advance.
    Regards
    Sourabh

  • User Exit/ Badi for Changing Quant parameters during TO Creation

    Hi Gurus,
    Could you please guide me to advice the User Exit/Badi which can be used for changing Quant Data during TO Creation.
    User Requirement: Using "Recepient Field" in MIGO as a Key Value for FIFO in WM during goods issue. Receipient is copied into TR and TO (Standard SAP Functionality). For the purpose of Stock Removal based on Receipient Value, we need to copy this value into Quant Data field named Certificate Number ("LQUA-ZEUGN").
    I will highly appreciate reply from Gurus.
    Regards,
    Gupta M

    Hi manish,
    Use the Exit MWMTO001 for this purpose and modify the table accordingly. This will solve your problem.
    Thanks,
    Shibashis

  • User exit/ badi needed for planned order create/change,collective ATP check

    Dear All,
    I'm looking for a user exit/ badi which can be used for planned orders at the stage of
    mass collective availability check (COMAC tcode) update; or at some other relevant stages of mass update of planned orders.
    I need after collective availability check to perform the following:
    1) to copy date from "total comitment" field on header tab of planned order and paste it (replace old date) to order finish date on header screen
    then
    2) to start a scheduling.
    Very appreciate your help.
    Best Regards,
    Andrey
    Edited by: Andrey Kruglov on Apr 15, 2010 3:06 PM
    Edited by: Andrey Kruglov on Apr 15, 2010 3:07 PM

    Dear,
    Use the BAPI : BAPI_PLANNEDORDER_CHANGE
    Or use the function module MD_SET_ACTION_PLAF for Schedule planned order.
    and the transaction MDAC Execute action for planned order
    This function module includes the following actions:
    Explode BOM
    Explode BOM, check availability
    Check availability, only explode BOM in the case of a requirement
    Check availability, do not explode BOM
    Reset availability
    Change planned order data
    Schedule planned order
    Delete planned order
    Assign the key for the respective action control to the materials in the material master (MRP 4 view).
    Please refer this thread,
    Re: MDVP for collective orders
    Regards,
    R.Brahmankar

  • User exit -BADI for overriding Partner number in Purchase order output type

    Hello All,
    We have a requirement wherein the EDI message type will distribute the Idoc to the partner number determined in the output type of the purchase order. We are maintaining the condition record for a generic partner number in MN04 and we want this partner number with partner role SH from the condition record to be modified to the sales order sold to party partner number. We are using third party processing and hence sales order number can be fetched from account assignment (EKKN) table of the purchase order. Kindly do let me know the user exit /BADI that can be used for achieving this functionality.
    Thanks in advance for your immediate response.
    With regards,
    Joseph Anand B

    Hi,
    check with below link,
    fo this one you will find both user exit and badis
    https://www.sdn.sap.com/irj/scn/wiki?path=/display/abap/find%252bapplication%252bclass%252bwith%252bexits%252band%252bbadis%252bfor%252ba%252btransaction
    Regards,
    Madhu

Maybe you are looking for

  • What is the best way to display a Interactive Report having 20 columns

    Hi, I am having a Interactive Report having many columns (around 20). What is the best way to display that report...by default we have to scroll it horizontally to see all the columns. I want to avoid Horizontally Scrolling. Thanks, Deepak

  • Updating to Jaguar from 9.2; but no DVD drive

    My Granny has a B/W G3 Mac OS 9.2 and it has no DVD drive. I have a Jaguar install DVD. I also have a iMac G5 iSight with SuperDrive on it. I am told you can use a FireWire cable to use my iMac as a host or something like that. How do I do that? Than

  • Hi all ,i need a good documentation for a beginner in WORK FLOW ?

    hi all , i need a good documentation for a beginner in WORK FLOW ? please,try to send the attached documents as much as u can apart from giving the weblinks ? hope you will send it soon .... thanks & regards vishnuvardhan k.v.

  • Please tell me how to fix this parameter error

    When I try to download the flash player 10 it asks if I will download the active x and download manager then as my manager is coming up it comes on and says CANT RETRIEVE ESSENTIAL PARAMETER 16291.301.749  PLEASE SOMEONE TELL ME HOW TO FIX THIS.

  • Cannot charge the mac book pro after updated with Lion mountain patch.

    Yesterday , i updated to Lion mountain patch, I am not sure what the version is. But after that i dont see the laptop is getting charged.My battery completely drained off. I dont know how to resolve this issue.But i am not sure because of the "update