Enhancement for me53n through BADI

Hi Experts,
                 I need to check the Open order and closed order item in ME53N t-Code(PR) through Quantity and quantity order filed. Now the problem is Order Quantity value is exceeds than quantity.if Quantity value is equal to Order Quanity the order should be closed. If Quantity value is lesser than order quantity the order should be in open state.
Thanks
Rajesh

Not quite sure what you actually want to do here.
Do you want to "modify" an existing BADI  or create a new one.
AFAIK there aren't any existing BADI's for ME53 so you'll have to create a new one --not too difficult so long as you follow the rules.
You will need some place also to call it from (a User / Screen exit / a user mod or whatever.)
Use code something like this.
*& Report  Z_BADI_TEST
REPORT  Z_BADI_TEST.
test call Badi from standard abap. (Only from rel 6.40 and above)
do the following
1) define the Badi  (SE18). For Abap call  test uncheck multiple use
                            and filter boxes
2) Implement the badi (SE19). Add any methods here in the implemntation
3) activate
4)  define the standard class exithandler to the abap. This class is the "Badi caller
5)  define an exit variable referring to your Badi Implementation interface
    this interface  will normally be something like ZIF_EX***************
    You will see this  in SE18/SE19.
6)  Instantiate your instance of the badi (method call get_instance)
7)  Now call any method(s) in the Badi.
    class cl_exithandler definition load.      "Declaration
    data exit type ref to zif_ex__jimbotest.        "Interface reference
    data yes type c.
    data: v_knvv type knvv.                         "Used in Fmod call in Badi methods
    start-of-selection.
    yes = ' '.
  selection-screen  begin of block b1.
  parameters: r1  radiobutton  group rad1,
              r2  radiobutton group rad1,
              r3  radiobutton group rad1.
  selection-screen end of block b1.
    parameters: p_kunnr type knvv-kunnr.
    select  single * into v_knvv
    from knvv
     where kunnr eq p_kunnr.
     export v_knvv to memory id 'CUST6A'.   "Save customer data for the function module
break-point 1.
    call method cl_exithandler=>get_instance      "Factory method call
            exporting                                                "Method
                exit_name           = 'Z_JIMBOTEST' "Name of your BADI
            changing instance = exit.
   if not exit is initial.
    if r1 = 'X'.
     call method exit->dispord     "Add-In call
        exporting kunnr = p_kunnr.
endif.
if r2 = 'X'.
call method exit->dispfakt.
endif.
if r3 = 'X'.
call method exit->dispmat.
endif.
endif.
Your badi will have different methods -- just check your quantities and if necessary close the order.
Ensure that when you call your Badi you have access to all the releveant data to close the order if required.
Cheers
Jimbo

Similar Messages

  • BADI enhancement for Enjoy PO Tcodes at "header level".

    I could successfully add an item level tab to MEXXN PO tcodes. Somebody help me with the ME_GUI_PO_CUST and ME_PROCESS_PO implementations to add a customer field , say ZZ_ETYP in a separate header level tab "Expense type".
    Do I need to add subscreen2 attribute to the implementing class ?
    Will one structure do for both header and item level data ?
    Do I need to create a separate table ( like ZMEPO_BADI_EXAMPL for items ) for the header also ?
    It would be gr8 if i could get the code for the above BADIs and MEPOBADIEX's function modules.

    Dear Iyer,
    Kindly go through the code.. hope this will help you...
    <b>DETAILED DATABASE DESIGN SPECIFICATIONS</b>
    <b>1. ZTPTP_HEADER</b>
    Header: Expense Type
    Field Name     Field Type     Key Information     Field Description
    MANDT     MANDT     X     Client
    EBELN     EBELN     X     Purchasing Document Number
    ZZ_EXPTYPE     ZZEXPTYPE          Expense Type
    <b>2. ZTPTP_ITEM</b>
    Item: Retainage
    Field Name     Field Type     Key Information     Field Description
    MANDT     MANDT     X     Client
    EBELN     EBELN     X     Purchasing Document Number
    EBELP     EBELP     X     Item Number of Purchasing Document
    ZZ_RETAINAGE      ZZRETAINAGE           Retainage
    <b>3. ZSPTP_HEADER</b>
    PO Enhancement structure: Header
    Field Name     Field Type     Key Information     Field Description
    EBELN     EBELN          Purchasing Document Number
    ZZ_EXPTYPE     ZZEXPTYPE          Expense Type
    <b>4. ZSPTP_ITEM</b>
    PO Enhancement structure: Item
    Field Name     Field Type     Key Information     Field Description
    EBELN     EBELN          Purchasing Document Number
    EBELP     EBELP          Item Number of Purchasing Document
    ZZ_RETAINAGE      ZZRETAINAGE           Retainage
    Detailed logic
    <b>LZPTP_PORETAINAGETOP (TOP INCLUDE) FG: ZPTP_PORETAINAGE</b>
    persistent item data
    data: git_persistent_data type sorted table of ztptp_item
                             with unique key mandt ebeln ebelp,
    actual item data
          git_data            type sorted table of ztptp_item
                             with unique key mandt ebeln ebelp.
    persistent header data
    data: git_persistent_head type sorted table of ztptp_header
                             with unique key mandt ebeln ,
    actual header data
          git_head            type sorted table of ztptp_header
                             with unique key mandt ebeln .
    dynpro output structure
    tables: zsptp_item,
            zsptp_header.
    definitions required for dynpro/framework integration
    data: ok-code type sy-ucomm.
    Following is a SAP include.
    include lmeviewsf01.
    <b>1. ZPTP_COMMIT_HEADER FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_COMMIT. In this Function module we update the database table ZTPTP_HEADER i.e. as per a change / insert or delete command at the header level. This database table’s size will always be low. It just contains the PO s data just being edited or created.
    The interface would look like:
         TABLES
          IMT_DATA_NEWHD STRUCTURE ZTPTP_HEADER
          IMT_DATA_OLDHD STRUCTURE ZTPTP_HEADER
          Comparing the old and new data we update 3 different internal tables and using these we can update the internal tables ZTPTP_HEADER before actually updating the database table EKKO.A similar logic is coded in the sample FM : MEPOBADIEX_COMMIT
    <b>
    2. ZPTP_COMMIT_ITEM FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_COMMIT. In this Function module we update the database table ZTPTP_HEADER i.e. as per a change / insert or delete command at the item level. This database table’s size will always be low. It just contains the PO s latest data just being edited or created.
    The interface would look like :
         TABLES
           IMT_DATA_NEW STRUCTURE  ZTPTP_ITEM
      IMT_DATA_OLD STRUCTURE  ZTPTP_ITEM
          Comparing the old and new data we update 3 different internal tables and using these we can update the internal tables ZTPTP_HEADER before actually updating the database table EKPO. A similar logic is coded in the sample FM : MEPOBADIEX_COMMIT
    <b>3. ZPTP_GET_DATA_HEADER FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_GET_DATA. This FM is responsible for updating an internal table (git_head) which would hold the data the user has changed or created or displayed till the current point of time. It would also hold the latest customer header data that is to be displayed in case of a change transaction.
    The interface would be as follows:
    Local Interface:
    IMPORTING
         REFERENCE(IM_EBELN) TYPE  EBELN
         REFERENCE(IM_EBELP) TYPE  EBELP OPTIONAL
    EXPORTING
         REFERENCE(EX_HEAD) TYPE  ZTPTP_HEADER
    Read expense type from git_header. If not found, get expense value from EKKO.
    <b>4. ZPTP_GET_DATA_ITEM FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_GET_DATA. This FM is responsible for updating an internal table (git_data) which would hold the data the user has changed or created or displayed till the current point of time. It would also hold the latest customer item data that is to be displayed in case of a change transaction.
    The interface would be as follows:
    Local Interface:
      IMPORTING
         REFERENCE(IM_EBELN) TYPE  EBELN
         REFERENCE(IM_EBELP) TYPE  EBELP
      EXPORTING
         VALUE(EX_DATA) TYPE  ZTPTP_ITEM
    Read Retainage from git_data. If not found, get Retainage value from EKPO.
    <b>5.  ZPTP_INIT FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_INIT. This FM is responsible for clearing the header and item internal tables.
    clear: git_persistent_data[], git_data[],git_persistent_head[],git_head[].
    <b>6. ZPTP_OPEN FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_OPEN.  This FM is responsible for existing information from respective database tables.
    The interface would be as follows:
    Local Interface:
    IMPORTING
    REFERENCE(IM_EBELN) TYPE  EBELN
    Get Expense type and Retainage from customer created Tables and assign it to respective global internal tables.
    <b>7.  ZPTP_POP_HEADER FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_POP. This FM is responsible for getting header values from screen fields.
    The interface would be as follows:
    Local Interface:
    EXPORTING
       REFERENCE(EX_DYNP_DATAHD) TYPE  ZSPTP_HEADER
    get dynpro data
      ex_dynp_datahd = zsptp_header.
    <b>8.  ZPTP_POP_ITEM FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_POP. This FM is responsible for getting item values from screen fields.
    The interface would be as follows:
    Local Interface:
    EXPORTING
       REFERENCE(EX_DYNP_DATA) TYPE  ZSPTP_ITEM
    get dynpro data
      ex_dynp_data = zsptp_item.
    <b>9.  ZPTP_POST_HEADER FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_POST. This FM is responsible for preparing header data for posting.
    Local Interface:
    IMPORTING
       VALUE(IM_EBELN) TYPE  EBELN
    prepare customers data for posting
      check not im_ebeln is initial.
      lit_data_newhd[] = git_head.
      lit_data_oldhd[] = git_persistent_head.
      lwa_head-mandt = sy-mandt.
      lwa_head-ebeln = im_ebeln.
      modify lit_data_newhd from lwa_head transporting mandt ebeln where ebeln is initial.
    Commit data in Database ztptp_header.
      call function 'ZPTP_COMMIT_HEADER'
        tables
          imt_data_newhd = lit_data_newhd
          imt_data_oldhd = lit_data_oldhd.
    <b>10. ZPTP_POST_ITEM FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_POST. This FM is responsible for preparing item data for posting.
    "Local Interface:
    IMPORTING
        VALUE(IM_EBELN) TYPE  EBELN
      data: lwa_data like line of git_data,
            lit_data_new type standard table of ztptp_item,
            lit_data_old type standard table of ztptp_item.
    prepare customers data for posting
      check not im_ebeln is initial.
      lit_data_new[] = git_data.
      lit_data_old[] = git_persistent_data.
      lwa_data-mandt = sy-mandt.
      lwa_data-ebeln = im_ebeln.
      modify lit_data_new from lwa_data transporting mandt ebeln where ebeln is initial.
    Commit data in Database ztptp_item.
      call function 'ZPTP_COMMIT_ITEM' in update task
        tables
          imt_data_new = lit_data_new
          imt_data_old = lit_data_old.
    <b>11.  ZPTP_PUSH_HEADER FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_PUSH. This FM is responsible for populating header values to screen fields.
    Local Interface:
      IMPORTING
         REFERENCE(IM_DYNP_DATAHD) TYPE  ZSPTP_HEADER
    set dynpro data
      zsptp_header = im_dynp_datahd .
    <b>12.  ZPTP_PUSH_ITEM FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_PUSH. This FM is responsible for populating item values to screen fields.
    Local Interface:
    IMPORTING
       REFERENCE(IM_DYNP_DATA) TYPE  ZSPTP_ITEM
    set dynpro data
      zsptp_item = im_dynp_data .
    <b>13. ZPTP_SET_DATA_HEADER FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_SET_DATA. This FM is responsible for keep update header  information in git_header.
    delete a line from git_data
        delete table git_head with table key mandt = sy-mandt
                                            ebeln = im_datahd-ebeln.
    update customer data
        read table git_head assigning <lf_datahd> with table key
                                            mandt = sy-mandt
                                            ebeln = im_datahd-ebeln.
        if sy-subrc is initial.
    update existing data
          <lf_datahd>-zz_exptype = im_datahd-zz_exptype.
        else.
    make a new entry into the data table
          lwa_head = im_datahd.
          lwa_head-mandt = sy-mandt.
          insert lwa_head into table git_head.
        endif.
    <b>14. ZPTP_SET_DATA_ITEM FG: ZPTP_PORETAINAGE</b>
    Get the sample function module code from the standard FM: MEPOBADIEX_SET_DATA. This FM is responsible for keep update item information in git_data.
    delete a line from git_data
        delete table git_data with table key mandt = sy-mandt
                                            ebeln = im_data-ebeln
                                            ebelp = im_data-ebelp.
    update customer data
        read table git_data assigning <lf_data> with table key
                                            mandt = sy-mandt
                                            ebeln = im_data-ebeln
                                            ebelp = im_data-ebelp.
        if sy-subrc is initial.
    update existing data
          <lf_data>-zz_retainage = im_data-zz_retainage.
        else.
    make a new entry into the data table
          lwa_data = im_data.
          lwa_data-mandt = sy-mandt.
          insert lwa_data into table git_data.
        endif.
    <b>DETAILED SCREEN DESIGN SPECIFICATIONS</b>
    <b>screen 0002</b>
    Item Retainage
    ZSPTP_ITEM-ZZ_RETAINAGE     DEC     5     Retainage
    Screen Logic / Process before Output
      call method call_view->handle_event( 'PBO' ).
    Screen Logic / Process after Input
    call method call_view->handle_event( 'PAI' )
    <b>Screen 0003</b>
    Header: Expense type
    ZSPTP_HEADER-ZZ_EXPTYPE     NUMC     4     Expense Type
    Screen Logic / Process before Output
      call method call_view->handle_event( 'PBO' ).
    Screen Logic / Process after Input
    call method call_view->handle_event( 'PAI' )
    <b>DETAILED CLASS DESIGN SPECIFICATIONS</b>
    <b>A. ZCL_IM_ME_GUI_PO_CUST</b>
    Description
    Imp. Class ZME_GUI_PO_CUST
    Attributes
    Name     Level     Visibility     Type
    SUBSCREEN1     Constant     Public     MEPO_NAME
    SUBSCREEN2     Constant     Public     MEPO_NAME
    DYNP_DATA_PBO     Instance Attribute     Private     ZSPTP_ITEM
    DYNP_DATA_PAI     Instance Attribute     Private     ZSPTP_ITEM
    DYNP_DATA_PBOHD     Instance Attribute     Private     ZSPTP_HEADER
    DYNP_DATA_PAIHD     Instance Attribute     Private     ZSPTP_HEADER
    Methods
    Name     Level     Visibility
    IF_EX_ME_GUI_PO_CUST~SUBSCRIBE     Instance Attribute     Public
    IF_EX_ME_GUI_PO_CUST~MAP_DYNPRO_FIELDS     Instance Attribute     Public
    IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_MODEL     Instance Attribute     Public
    IF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_DYNP     Instance Attribute     Public
    IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_DYNP     Instance Attribute     Public
    IF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_MODEL     Instance Attribute     Public
    <b>1. SUBSCRIBE</b>
    Description
    Publisch Customer's Own Screens
    Detailed logic
      when lc_item.
    the name is a unique identifier for the subscreen and defined in this class definition
      lwa_subscriber-name = subscreen1.
    the dynpro number to use
      lwa_subscriber-dynpro = '0002'.
    the program where the dynpro can be found
      lwa_subscriber-program = 'SAPLZPTP_PORETAINAGE'.
    each subscreen needs his own DDIC-Structure
      lwa_subscriber-struct_name = 'ZSPTP_ITEM'.
    a label can be defined
      lwa_subscriber-label = text-001.
    the position within the tabstrib can be defined
      lwa_subscriber-position = 1.
      lwa_subscriber-height = 7.
      append lwa_subscriber to re_subscribers.
    Header subscreen
      when lc_header.
    the name is a unique identifier for the subscreen and defined in this class definition
      lwa_subscriber-name = subscreen2.
    the dynpro number to use
      lwa_subscriber-dynpro = '0003'.
    the program where the dynpro can be found
      lwa_subscriber-program = 'SAPLZPTP_PORETAINAGE'.
    each subscreen needs his own DDIC-Structure
      lwa_subscriber-struct_name = 'ZSPTP_HEADER'.
    a label can be defined
      lwa_subscriber-label = text-002.
    the position within the tabstrib can be defined
      lwa_subscriber-position = 1.
      lwa_subscriber-height = 7.
      append lwa_subscriber to re_subscribers.
      endcase.
    <b>2. MAP_DYNPRO_FIELDS</b>
    Description
    Build Up Field Catalog
    Detailed logic
      loop at ch_mapping assigning <lf_mapping>.
    *Assignment of metafields to the customer fields.
        case <lf_mapping>-fieldname.
          when 'EBELN'.       <lf_mapping>-metafield = mmmfd_preq_no_po.
          when 'EBELP'.       <lf_mapping>-metafield = mmmfd_preq_item_po.
          when 'ZZ_RETAINAGE'. <lf_mapping>-metafield = mmmfd_cust_01.
          when 'ZZ_EXPTYPE'.   <lf_mapping>-metafield = mmmfd_cust_02.
        endcase.
      endloop.
    <b>
    3. TRANSPORT_FROM_MODEL</b>
    Description
    Data Transport from Business Object
    Detailed logic
        when subscreen1.
    Get the item object
          mmpur_dynamic_cast lif_item im_model.
          check not lif_item is initial.
          lwa_mepoitem = lif_item->get_data( ).
    transport customer fields
          call function 'ZPTP_GET_DATA_ITEM'
            exporting
              im_ebeln = lwa_mepoitem-ebeln
              im_ebelp = lwa_mepoitem-ebelp
            importing
              ex_data  = lwa_customer.
    store info for later use
          move-corresponding lwa_mepoitem to dynp_data_pbo.
          move lwa_customer-zz_retainage to dynp_data_pbo-zz_retainage.
        when subscreen2.
    Get the header object
          mmpur_dynamic_cast lif_header im_model.
          check not lif_header is initial.
    transport standard fields
          lwa_mepohead = lif_header->get_data( ).
    transport customer fields
          call function 'ZPTP_GET_DATA_HEADER'
            exporting
              im_ebeln = lwa_mepohead-ebeln
            importing
              ex_head  = lwa_customerhd.
    store info for later use
          move-corresponding lwa_mepohead to dynp_data_pbohd.
          if not lwa_customerhd-zz_exptype is initial.
            move lwa_customerhd-zz_exptype to dynp_data_pbohd-zz_exptype.
          else.
            move dynp_data_paihd-zz_exptype to dynp_data_pbohd-zz_exptype.
          endif.
        when others.
      endcase.
    <b>4. TRANSPORT_TO_DYNP</b>
    Description
    Data Transport to Screen
    Detailed logic
    case im_name.
        when subscreen1 .
       Pushing item data to screen fields
          call function 'ZPTP_PUSH_ITEM'
            exporting
              im_dynp_data = dynp_data_pbo.
        when subscreen2 .
       Pushing header data to screen fields
          call function 'ZPTP_PUSH_HEADER'
            exporting
              im_dynp_datahd = dynp_data_pbohd.
        when others.
      endcase.
    <b>5. TRANSPORT_FROM_DYNP</b>
    Description
    Data Transport from Screen
    Detailed logic
    case im_name.
        when subscreen1.
    Getting item data from screen fields
          call function 'ZPTP_POP_ITEM'
            importing
              ex_dynp_data = dynp_data_pai.
          if dynp_data_pai ne dynp_data_pbo
           or dynp_data_paihd ne dynp_data_pbohd.
    If data  changed we have to notify the framework
    to transport data to the model
            re_changed = mmpur_yes.
        endif.
        when subscreen2.
    Getting header data from screen fields
          call function 'ZPTP_POP_HEADER'
            importing
              ex_dynp_datahd = dynp_data_paihd.
          if dynp_data_paihd ne dynp_data_pbohd
          or dynp_data_pai ne dynp_data_pbo.
    If data changed we have to notify the framework
    to transport data to the model
            re_changed = mmpur_yes.
          endif.
        when others.
      endcase.
    <b>6. TRANSPORT_TO_MODEL</b>
    Description
    Treatment of Function Codes
    Detailed logic
      case im_name.
        when subscreen1.
    is it an item? im_model can be header or item.
          mmpur_dynamic_cast lif_item im_model.
          check not lif_item is initial.
          lwa_mepoitem = lif_item->get_data( ).
    standard fields changed?
          if dynp_data_pbo-ebeln ne dynp_data_pai-ebeln  or
             dynp_data_pbo-ebelp ne dynp_data_pai-ebelp or
             dynp_data_pbo-zz_retainage ne dynp_data_pai-zz_retainage.
    update standard fields
            lwa_mepoitem-ebeln = dynp_data_pai-ebeln.
            lwa_mepoitem-ebelp = dynp_data_pai-ebelp.
            lwa_mepoitem-zzretainage = dynp_data_pai-zz_retainage.
            call method lif_item->set_data( lwa_mepoitem ).
          endif.
    customer fields changed?
          if dynp_data_pbo-zz_retainage ne dynp_data_pai-zz_retainage.
            call function 'ZPTP_GET_DATA_ITEM'
              exporting
                im_ebeln = lwa_mepoitem-ebeln
                im_ebelp = lwa_mepoitem-ebelp
              importing
                ex_data  = lwa_customer.
            lwa_customer-zz_retainage = dynp_data_pai-zz_retainage.
    Commit changes to database.
            call function 'ZPTP_SET_DATA_ITEM'
              exporting
                im_data = lwa_customer.
          endif.
        when subscreen2.
    is it an header? im_model can be header or item.
          mmpur_dynamic_cast lif_header im_model.
          check not lif_header is initial.
          lwa_mepohead = lif_header->get_data( ).
    standard fields changed?
          if dynp_data_pbohd-ebeln ne dynp_data_paihd-ebeln or
          dynp_data_pbohd-zz_exptype ne dynp_data_paihd-zz_exptype.
    update standard fields
            lwa_mepohead-ebeln = dynp_data_paihd-ebeln.
            lwa_mepohead-zzexptype = dynp_data_paihd-zz_exptype.
            call method lif_header->set_data( lwa_mepohead ).
          endif.
    customer fields changed?
          if dynp_data_pbohd-zz_exptype ne dynp_data_paihd-zz_exptype.
            call function 'ZPTP_GET_DATA_HEADER'
              exporting
                im_ebeln = lwa_mepohead-ebeln
              importing
                ex_head  = lwa_customerhd.
            lwa_customerhd-zz_exptype = dynp_data_paihd-zz_exptype.
    Commit changes to database.
            call function 'ZPTP_SET_DATA_HEADER'
              exporting
                im_datahd = lwa_customerhd.
          endif.
        when others.
      endcase.
    <b>
    B. ZCL_IM_ME_PROCESS_PO_CUST</b>
    Description
    Imp. Class for BAdI imp. ZME_PROCESS_PO_CUST
    Methods
    Name     Level     Visibility
    IF_EX_ME_PROCESS_PO_CUST~INITIALIZE     Instance Attribute     Public
    IF_EX_ME_PROCESS_PO_CUST~OPEN     Instance Attribute     Public
    IF_EX_ME_PROCESS_PO_CUST~PROCESS_HEADER     Instance Attribute     Public
    IF_EX_ME_PROCESS_PO_CUST~PROCESS_ITEM     Instance Attribute     Public
    IF_EX_ME_PROCESS_PO_CUST~POST     Instance Attribute     Public
    IF_EX_ME_PROCESS_PO_CUST~CLOSE     Instance Attribute     Public
    <b>
    1. INITIALIZE</b>
    Description
    Initializations (Invoked Once Only)
    Detailed logic
    initializations
      call function 'ZPTP_INIT'.
    <b>2. OPEN</b>
    Description
    Open a Purchase Order
    Detailed logic
    data: lwa_mepoheader type mepoheader.
    read customer data
    this has to be done when we open a persistent object
      check im_trtyp eq 'V' or im_trtyp eq 'A'.
      lwa_mepoheader = im_header->get_data( ).
    read customer data from database
      call function 'ZPTP_OPEN'
        exporting
          im_ebeln = lwa_mepoheader-ebeln.
    <b>3. PROCESS_HEADER</b>
    Description
    Processing of Header Data
    Detailed logic
    data: lwa_mepohead type mepoheader,
            lwa_customerhd type ztptp_header.
      include mm_messages_mac. "useful macros for message handling
    here we check customers data
      lwa_mepohead = im_header->get_data( ).
      if lwa_mepohead-loekz eq 'D'.
    a physical deletion of the header was carried out.
        lwa_customerhd-ebeln = lwa_mepohead-ebeln.
        call function 'ZPTP_SET_DATA_HEADER'
          exporting
            im_datahd                  = lwa_customerhd
            im_physical_delete_request = 'X'.
      endif.
    <b>4. PROCESS_ITEM</b>
    Description
    Processing of Item Data
    Detailed logic
    data: lwa_mepoitem type mepoitem,
            lwa_customer type ztptp_item.
      include mm_messages_mac. "useful macros for message handling
    here we check customers data
      lwa_mepoitem = im_item->get_data( ).
      if lwa_mepoitem-loekz eq 'D'.
    a physical deletion of the item was carried out. therrefor we have to
    delete customer data on the level of the item
        lwa_customer-ebeln = lwa_mepoitem-ebeln.
        lwa_customer-ebelp = lwa_mepoitem-ebelp.
        call function 'ZPTP_SET_DATA_ITEM'
          exporting
            im_data                    = lwa_customer
            im_physical_delete_request = 'X'.
      endif.
    <b>5. POST</b>
    Description
    Post
    Detailed logic
    *Posting header data
          call function 'ZPTP_POST_HEADER'
            exporting
              im_ebeln       = im_ebeln.
    *Posting item data
          call function 'ZPTP_POST_ITEM'
            exporting
              im_ebeln       = im_ebeln.
    <b>
    6. CLOSE</b>
    Description
    Closing Processing
    Detailed logic
    close customer data
      call function 'ZPTP_INIT'.

  • Badi / Exit / Enhancement for replacing INSMK during PO creation

    Hi Gurus,
    we want to default the INSMK field (stock type) during Purchase Order creation..
    Can someone help me findind the right BAdI / exit / enhancement for it?
    Thanks in advance,
    Regards,
    Alessio

    Hi Alessio,
    You may check these first:
    Re: Negative postings to MVER table
    Re: select stock type
    Thanks,
    Gordon

  • Exit/BADI/Enhancement for Payroll driver

    Dear Friends,
    When we run transaction pc00_m10_calc for US payroll driver for an employee for a period,we can see the renumeration statement in the output screen.
    I need to modify the internal table xrt to add the similar wage types in one period before it passes to form , which exit / BADI enhancement should for this purpose.
    Pls. advice.
    Thanks..
    Regards,Prashant

    Hi,
        Please check the below.
    Enhancement
    HRUSRCU0                                Enhancement for Customer Exit for RPCTRCU0.
    Business Add-in
    PC10_PAY0001                            User exit for base_wages in a gross up calculation
    PC10_PAY0002                            Exit to determine if negative taxables should be allowed
    PC10_PAY0003                            Exit to determine if distribution calc should be allowed
    PC10_PAY0004                            Work Tax Area Override Add-In: Activation
    PC10_PAY0005                            Work Tax Area Override Add-In: Default proration of wages
    PC10_PAY0006                            User exit for additional ESS W4 (PZ10) fields; before output
    PC10_PAY0007                            User exit for PZ10 and IT0210 fields; after input
    PC10_PAY0008                            More than 99 exemptions for US payroll withholding tax calc
    Regards,
    Srini.

  • EXIT OR BADI OR ENHANCEMENT FOR CATS_APPR_LITE TCODE

    Hi All ,
       I want to put some validation for tcode CATS_APPR_LITE  . when you execute this tcode and after
    entering reporting period and F8 , it shows a report there you will click on first application toolbar button
    for Approve or Reset Approve for any row .
    When user click on Approve or Reset approve at that time i want to put some validations .
    For this validations i am not able to find any EXIT OR BADI OR ENHANCEMENT  .
    i found one Badi : CATSXT_EVENT . but my data is not visible which i want like Activity type .
    Can anyone please help me .
    Regards ,
    Nilesh K Jain .

    Hi Nilesh,
    Tcode : CAT2.
    /message/5260477#5260477 [original link is broken]
    Regards,
    Sravanthi

  • Enhancement for BASIC_PURCHASE_PRICE_READ

    Hi All,
      I want to make some changes for FM BASIC_PURCHASE_PRICE_READ.
    This is only possible through enhancement like userexits and BADI's
    Does anyone knows what is enhancement for BASIC_PURCHASE_PRICE_READ.
    Thanks in Advance,
    Nitin P

    in info record you can only have one price at a time. there is nothing in the info record that can make prices dependend on customers.
    split valuation  cannot do anything for you in this case.
    you may just enter a basic price in the info record. and then add a surcharge or deduction in the PO.
    for this surcharge/deduction you can maintain  conditions with MEK1. you may need to customize a new access sequence that contains the customer (I have never tried it)
    The question is: how does the PO know that it is for a certain customer? is it a third-party PO? is it with a account assignment to a sales order?

  • Enhancement for MIRO (PO Invoice)

    Hi,
    I have implemented the method IF_EX_INVOICE_UPDATE~CHANGE_IN_UPDATE to trigger a custom workflow when a PO invoice is posted (save button is pressed).
    When a PO invoice is held (hold button is pressed), it will still hit the method. That is okay since I have some checks in place (checking if document is created in bkpf) that would not trigger the workflow.
    However, when I open the held invoice in MIRO and post (pressing the save button) it, it will not hit the method.
    Anybody knows if there is there is an enhancement point or exit where I can place the codes to trigger the workflow when an invoice is held before being posted? Any advice is appreciated. Thanks.

    Hello
    You say that you have created a class implementing the interface IF_EX_INVOICE_UPDATE. However, you do not mention at all whether you have created an implementation of the corresponding BAdI <b>INVOICE_UPDATE</b>. If you have not done this yet you will never run through your coding.
    Steps for implementing a BAdI include:
    (1) SE19: Create an implementation (e.g. Z_INVOICE_UPDATE) of the BAdI
    (2) SE19: Display tabstrip Interface and enter your class at Name of implementing class
    (3) SE19: Activate (!!!) your implementation
    Now you should run through your coding. If you have set break-points the SAP system will stop there and allow debugging.
    Regards
      Uwe

  • Enhancement for Production Order Release and Batch Fixing.

    Hi Experts,
    I have assigned a enhancement for production order.The user exit is also given in the req as PPCO0001 through which i have to call a Z-Program for Batch fixing using Trans CO01 and release the order before saving once it is assigned to components.
    Now my probs is where to start working for the enhancement -is it possible to use any BAPI instead of Batch (BDC) or I can use any BADI instead User Exit.
    So if you guys have similar scenario worked on it or have similar example approach to solve it.Please do help.I will reward for all helpful answers.

    I figured out thr friends !
    Thanks,
    SriRam

  • How to change keyboard shortcut for cycle through open tabs in PS and AI CC 2014

    I would love to set my own keyboard shortcuts for cycling through open tabs in PS and AI 2014 on OS X. I found out that this can be achieved with ctrl+tab in PS, but I couldn't manage to make any of the suggestions in the forum work for AI. As said, I would like to set a more "standard" shortcut like alt+cmd+arrow-keys for both of the apps. If that shouldn't be possible, does anyone know a shortcut in AI CC 2014?
    Many thanks!
    Amadeus

    Thanks! The shortcut can be set like this in AI, although all key combinations I would want to use are not allowed. Too bad. But anyways, thank you very much for the tip!
    cmd+~ is not an option for me, I guess, since the swiss/german keyboard layout has no dedicated tilde key.
    So, I have a working shortcut in PS (ctrl+tab / of which I still don't know how to change, if possible at all) and thanks to you, I can now set one in AI as well. Unfortunately, I can not set it to be identical as in PS, since the "cmd" key needs to be included in AI's shortcut assignment dialogue, but I guess, this is as good as it gets.

  • Update ZPURCHASE THROUGH BADI .. at the time of saving Purchase Order

    Dear All Gurus,
    I have a situation wherein i have to save the Purchase Order Details in My DB table (ZPURCHASE ) at the time of Purchase Order Creation through BADI...
    Fields of ZPURCHASE are (Mandt,EBELN,BUKRS)
    Can some one guide me how can i achieve this..
    I tried doing it through User Exits.. i have written a piece of code when saving the purchase order but my problem is .. The purchase order numbers are generated only after SAVE is complete..
    The other alternative i want to try is through BADI.
    Looking forward for your reply.
    Thanks !!

    > I have a situation wherein i have to save the Purchase Order Details in My DB table (ZPURCHASE ) at the time of Purchase Order Creation through BADI...
    > Fields of ZPURCHASE are (Mandt,EBELN,BUKRS)
    I have no solution for your actual problem (wrong forum, you should try the MM forum) but I wonder why you just don't use the data that is already there in EKKO and EKPO?
    Markus

  • Enhancement for changinf header of Workorder (IW31)

    Hello Gurus,
    I am looking out for an exit/BADI for changing the header of
    work order (IW31) during creation of the same.
    I could find some of the exits but they doesn't change the header.
    Could anyone of you suggest some enhancemnet for the same.
    My requirement is to add the revision number on the basis of Basic start
    dates .
    Your quick response would be highly appreciated.
    Thanks in Advance,
    Sumit.

    Hello Friend,
    I am facing a similar kind of a problen.
    Were you able to get through this?
    If yes, please share the solution.
    Thanks in Advance,
    Sumit

  • Additional tab at header level  in ME21N through BADI ME_GUI_PO_CUST

    Hi,
    I want to have additional tab at header level  in ME21n through BADI ME_GUI_PO_CUST.  But after all effort I am not getting display of  tab.  Let me explain what i did till now
    1. Appended  table EKKO with field
    2. Create one function Group -under that
    A. Created one Include u2013Paste the code given
    DATA: call_subscreen   TYPE sy-dynnr,
          call_prog        TYPE sy-repid,
          call_view        TYPE REF TO cl_screen_view_mm,
          call_view_stack  TYPE REF TO cl_screen_view_mm OCCURS 0,
          global_framework TYPE REF TO cl_framework_mm,
          global_help_view TYPE REF TO cl_screen_view_mm,
          global_help_prog TYPE sy-repid.
    FORM SET_SUBSCREEN_AND_PROG *
    --> DYNNR *
    --> PROG *
    --> VIEW *
    --> TO *
    --> CL_SCREEN_VIEW_MM *
    FORM set_subscreen_and_prog USING dynnr TYPE sy-dynnr
    prog TYPE sy-repid
    view TYPE REF TO cl_screen_view_mm.
    call_subscreen = dynnr.
    call_prog = prog.
    call_view = view.
    ENDFORM. "set_subscreen_and_prog
    B. Created one screen  (9000)
    3. Implemented BADI ME_GUI_PO_CUST and paste the code.
    data: ls_subscribe like line of re_subscribers.
    CHECK im_application = 'PO'.
    CHECK im_element = 'HEADER'.
    CLEAR re_subscribers[].
    ls_subscribe-name = ' ZMMSCR1'.
    ls_subscribe-dynpro = '9000'.
    ls_subscribe-program = ' ZMMSCR1'.
    ls_subscribe-struct_name = 'EKKO'.
    ls_subscribe-label = text-001..
    ls_subscribe-position = 15.
    ls_subscribe-height = 7.
    append ls_subscribe to re_subscribers.
    Please help me what s going wrong .and what else I will do to get success.
    Edited by: Vishal A Vijaywargia on Jul 29, 2009 2:24 AM

    Hi Prosengit,
    I am not aure about u r BADI,
    BUt last week i have custom tab in the PO header data using this enahncement 'MM06E005'.
    IN thi senhancement u have thrre screen exits.In this enhancement
    SAPMM06E        0111 CUSTSCR1 SAPLXM06        0111 Subscreen: PO item
    u can add subscreen and u can add u r own fields here .
    and u can write u r code in 'EXIT_SAPMM06E_006'.
    if u want to change the title of the program.
    Go to program SAPLXM06 then go to text element give text symbol no as '111' and u can change the title of u r tab.
    I hope this solves u r problem.

  • Calling Bapi through BADI gives data statement error

    Dear Experts,
    I am trying to call BAPI through BADI ME_PROCESS_REQ_CUST --> process_item.
    I get an error stating that "The addition OCCURS no longer supported in OO objects"
    If, I remove OCCURS statement I get an error stating that "Tables with headers are no longer supported in OO context" for the following data statement.
    Appreciate, if you could provide possible solution to overcome the problem.
    Regards
    Kumar
    BAPI code is as follows.
    DATA: LV_TABIX LIKE SY-TABIX,
    LT_WMDVSX LIKE BAPIWMDVS OCCURS 0 WITH HEADER LINE,
    LT_WMDVEX LIKE BAPIWMDVE OCCURS 0 WITH HEADER LINE.
    LV_TABIX = SY-TABIX.
    CLEAR: LT_WMDVSX, LT_WMDVEX.
    REFRESH: LT_WMDVSX, LT_WMDVEX.
    Fill communication table
    LT_WMDVSX-REQ_DATE = ET_PROCUREMENT_ITEM-DELIV_DATE.
    LT_WMDVSX-REQ_QTY = ET_PROCUREMENT_ITEM-QUANTITY.
    APPEND LT_WMDVSX.
    Availability check with check rule '03'
    CALL FUNCTION 'BAPI_MATERIAL_AVAILABILITY'
    EXPORTING
    PLANT = ET_PROCUREMENT_ITEM-PLANT
    MATERIAL = ET_PROCUREMENT_ITEM-MATERIAL
    UNIT = ET_PROCUREMENT_ITEM-UNIT
    CHECK_RULE = '03'
    TABLES
    WMDVSX = LT_WMDVSX
    WMDVEX = LT_WMDVEX
    EXCEPTIONS
    OTHERS = 1.
    IF SY-SUBRC EQ 0.
    READ TABLE LT_WMDVEX WITH KEY
    COM_DATE = ET_PROCUREMENT_ITEM-DELIV_DATE.
    IF SY-SUBRC EQ 0.
    ET_PROCUREMENT_ITEM-AVAIL_QTY = LT_WMDVEX-COM_QTY.
    ENDIF.
    ENDIF.

    Hi,
    Occurs is no more supported by SAP ( is an obsolete statement )
    <b>Instead of following code</b>
    DATA: LV_TABIX LIKE SY-TABIX,
    LT_WMDVSX LIKE BAPIWMDVS OCCURS 0 WITH HEADER LINE,
    LT_WMDVEX LIKE BAPIWMDVE OCCURS 0 WITH HEADER LINE.
    you can use
    data: LT_WMDVSX type standard table of BAPIWMDVS,
            LT_WMDVEX type standrad table of  BAPIWMDVE,
            LS_WMDVSX like line of LT_WMDVSX ,      "( work area )
            LS_WMDVEX like line of LT_WMDVEX.       "(work area)
    use workarea to get the data and then append the records from workarea to Internal tables
    Reward points if usefull
    Regards,
    Mohan

  • Enhancement for BGM1 Transaction

    Hi Friends,
    I have a reqirement to add a new column in the BGM1 transaction -> Item Screen -> Services Tab ,            in-between SORTID and INCL/EXCL. I have checked all the User-exits, Customer exits and BADI's available for the transaction but could not find a suitable enhancement for this.
    I have given the basic frame work of the sequence in which the column should be inserted below.
    Item              Service             Text              LongText            Sortid       New field to be inserted              INCL/EXCL                       
    Is there any way to modify the screen by inserting this column. Please guide me.
    Thanks & Regards,
    R.Indirajit.

    Hi
    I do not think so, there is any user exit/BADI related to "Baseline date" change.
    Instead, if you are using ECC6.0 you can go with " Enhancement Spots ".
    Program:
    Include:     LFDCBFM0
    Search for " Implicit Enhancement " in the above program.....
    At the end of the Subroutine " Modify_Screen_Header_Fields ", place your logic:
    Logic:
                 Loop at screen.
                     Case Screen-Name.
                           When 'INVFO-ZFBDT'.
                               If <company code> is YES.
                                   screen-input = 0.
                                    modify screen.
                                endif.
                     endcase.
                 end loop.
    Hope this helps.............

  • Enhancement for MIR7 - MIRO

    Dear Friends,
      I want to call an enhancement when posting a parked invoice document in tcode MIRO. I want to do some processing after the document is saved in the database. This invoice document will be initially parked using tcode MIR7. I tried with various BADI's like INVOICE_UPDATE, FDCB_SUBBAS04 etc. I also tried user exits and BTE(Event -1050) but nothing seems to be working.
    If I directly post the invoice from tcode MIRO all the exits and BADI's are called, but when the document originates from MIR7(Parked) and then posted from tcode MIRO, then nothing is called.Even I tried the implicit enhancement in program SAPLMR1M, but this is called only when the invoice is posted from MIRO. Please help me if you have any ides.
    Rgds
    Sapient

    Hi,
    i´ve done a test in my system and after parking the document with MIR7 if i try to post the document with MIRO the flow of the program goes through badi INVOICE_UPDATE (e.g. method CHANGE_AT_SAVE).
    In badi INVOICE_UPDATE  the value of sy-tcode is MIR4.
    Best regards.
    Edited by: Pablo Casamayor on Jun 29, 2011 12:05 PM

Maybe you are looking for

  • My Pixma MX925 prints from wireless laptop Win8.1 but won't scan. Only scans to desktop.

    How can I set up my Canon Pixma MX925 to scan to wireless laptop running Windows 8.1, no problem in printing. Desktop connected by ethernet prints and scans. Printer only offers option to scan to desktop.  Have searched unsuccessfull to find answer.

  • Wont play protected content

    My A-TV won't play any protected content. Anyone else having this problem?

  • Freight amount by percentage - FMS

    Dear experts, there is a requirement from my client saying that their vendors will say the freight in percentage only. so every time the user puts the PO he needs to calculate manually for the freight and enter it. Is there any way that we can write

  • Always first item from the punchout catalog will get missed in SRM cart

    Hi All, Recently we have configured the vendor punch-out catalog in our SRM system. We are able to get in to their catalog and able to select the items. However we have observed the following. 1) When we select 3 items from the list we get only 2 ite

  • Mail not 'bleeping' with incoming mail

    Seem to have an intermittent problem where sometimes the phone will bleep/vibrate to notify me of a new email message in the inbox. other times the only time I find out is by seeing the little red circle over the mail icon. have tried all the obvious