PO Header level Descriptive Flexfields (DFF)

Hi,
We would like to define different sets of DFFs on PO Header level based on different nature of Purchase Orders. For example:
Local Purchase Order (Cotton)
Import Purchase Order (Cotton)
Local Purchase Order (Chemicals)
Service Purchase Order (Processing)
Service Purchase Order (Cleaning)
Service Purchase Order (I.Technology)
The point is to capture different sets of information based on different Categories of purchases.
Our problem is that the PO Headers DFF is shared between RFQ, Quote and PO. Secondly, if we leave it on users to select the Context Value, there is a chance of selecting a wrong value.
Any solutions or suggestions would be highly appreciated.
Regards,
-- Ahmed

On DFF definition form set global variable as a Reference Field eg. global.XX_DOCTYPE.
Set Context field values set BLANKET, STANDARD, CONTRACT, PLANNED etc.
Then on you can set global.XX_DOCTYPE values using form personalization, eg:
Tab Actions:
Object type: Global Variable
Target Object: XX_DOCTYPE
Property Name: VALUE
Value: ${item.po_headers.TYPE_LOOKUP_CODE.value}
This solution is very flexible. We use different context for combinations of Operating Unit and Document Type.
To set values of global.MY_VARIABLE we make concatenation of profile option ORG_ID value and document type value.
I believe this will work in your scenario.
Marcin

Similar Messages

  • Display Issues in Descriptive Flexfield(DFF)

    Hi,
    I have two issues in using a DFF seeded by Oracle HRMS(DFF Title: Personal Address Information and DFF name: Address Structure) in my custom OA Page.
    Issue 1
    When the custom OA page is rendered automatically the first record in the DFF table is shown. This is because the flexfield VO is based on the DFF table PER_ADDRESSES. But my requirement is i have to show the value of context field(Address Style) by default as United States but other DFF columns(like address, city, zip code...) should be rendered but be blank so that the user would be able to enter the values. How could i achieve this?
    Issue 2
    How can i save the values entered by the user for the above flexfield to the database. Should the values be sent as an array? Any sample code would be helpful. Similar question has been raised in the following thread but no solution has been given,
    Saving Values Of DFF in Database
    Thanks, Suresh.

    Suresh,
    For Issue 1, you just need to initialize the VO associated to the DFF. While initializing make sure you set the AttributeCategory to US. Then find the corresponding Address style by querying fnd_territories. Set the address style in the Address VO. OA shall take care of DFF rendering.

  • Descriptive flexfield balance needed

    Hello
    We are using R12 Apps
    my problem is as follows:
    Suppose there are 3 segments in a descriptive flexfield(DFF) and all contain numbers in it or you can say display certain amounts
    Now in the fourth segment that i create in the same DFF, i need to display the total sum for the amounts in the first three DFF`s..is that possible
    Pleasee let me know
    Thanks
    Muhammed

    I don't think that is possible.
    Oracle has the functionality to transfer Req. Distribution DFF to PO Distribution DFF. But it does not work for Req Header or Req Line DFF.
    Hope this helps,
    Sandeep Gandhi

  • Header of a Descriptive Flexfield

    Hi all,
    I've created a descriptive flex in my page but the text I set in Prompt property doesn't appear in runtime. The user wants to have a header saying "Additional Shipment Information" before their custom attributes. Do I have to create a header region explicitly and put my flex item inside it in order to get this result or there is an option or property missing??
    The problem of create explicitly a header region is that it would appear even is the user disable the flex.
    Thanks in advance,
    Eduardo

    I put this in my processRequest. I need to hide the header when the descriptive flexfield is disabled but the dffBean.isRendered() call always returns true.
    OADescriptiveFlexBean dffBean = (OADescriptiveFlexBean)webBean.findIndexedChildRecursive("ShipHdrDescFlex");
    if(dffBean != null && !dffBean.isRendered()) {
    OAHeaderBean flexHdr = (OAHeaderBean)webBean.findIndexedChildRecursive("FlexHdrRN");
    if(flexHdr != null) {
    flexHdr.setRendered(false);
    tks.
    Eduardo

  • Descriptive Flexfield Manual Updation

    Dear All,
    Please tell me, how to update descriptive flexfield data of attribute11 column in oe_order_lines_all, while line has been closed.
    Can we browse the table in toad and update the data manually?
    Regards,
    Jamil

    I don't think that is possible.
    Oracle has the functionality to transfer Req. Distribution DFF to PO Distribution DFF. But it does not work for Req Header or Req Line DFF.
    Hope this helps,
    Sandeep Gandhi

  • Descriptive Flexfield transfer from Requisition (iProcurement) to PO

    Can a descriptive flexfield be transferred from iProcurement (requisition lines) to Purchase Order (lines)?
    I am fairly new to Oracle EBS and this is my first attempt to set up descriptive flexfields. We want the user to populate the field while creating the requisition and would like that value to transfer to the purchase order. (we are on 11i)
    Is this possible? Is there an option or setting that I need to be aware of?
    Thank you!

    I don't think that is possible.
    Oracle has the functionality to transfer Req. Distribution DFF to PO Distribution DFF. But it does not work for Req Header or Req Line DFF.
    Hope this helps,
    Sandeep Gandhi

  • Order Lines Descriptive Flexfield

    We import our orders from an external system. We have many additional attributes to store at the order line level. We have already used all 20 Segments on the Additional Line Information Descriptive Flexfield but we still have more attributes to store.
    Is there somewhere else we can store these values? On another DFF or some other solution.?

    You can create a custom table with the order_line_id as the primary key. And you can store your additional data in columns of this table.
    The data won't be visible in the seeded OE form. You will have to write a custom screen that shows data. It will be very easy to create a ZOOM from the OE screens that opens your custom form to show data for a given order line.
    There are global_attribute fields that are typically used by Oracle for localizations. If you do not have any localizations, you can try using them.
    Hope this answers your question
    Sandeep Gandhi
    Omkar Technologies Inc.
    Independent Techno-functional Consultant
    513-325-9026

  • Pass Descriptive Flexfield Data Requisition/PO Through to GL?

    Is it Possible to Pass Descriptive Flexfield Data Requisition/PO Through to GL?
    Let's say example Project Number and Work order Number DFFs feilds from Requisition/PO line level to GL.

    Pl do not post duplicates - Pass Descriptive Flexfield Data Requisition/PO Through to GL?

  • Additional Data in Header Level for ME51N / ME52N / ME53N

    Dear Gurus,
    I have one requirement related to apply enhancement for additional fields in purchase requisition header level.
    After searching a lot , I dint found any solution for this.
    Does anybody have any solution for this.
    Regards,
    Shibashis.

    I need to add on Tabstrip "Account assignment" for fields
    CO Area and Cost Center text field description ( right side ) for each one.
    How can I do this? Thanks in advance.

  • Issue in creating a Decriptive Flexfield(DFF)

    Hi,
    I am creating a descriptive flexfield region in one of my custom OA Framework pages by following the steps mentioned the developer guide but the context field is not displayed, even after setting 'Display Context Field' property as True. Should i code separately to display the context field columm in the OA F page?
    Thanks, Suresh.

    The issue is resolved. This context flag for the DFF i used had the display flag unchecked. Once the displayed flag was checked the context field was rendered in the OAF page.
    Thanks, Suresh.

  • Creation of Descriptive FlexField on Supplier

    Hello,
    I am trying to add a new segment under context "Global Data Elements" of a DFF.
    Currently this context has two segments referring to columns ATTRIBUTE1 adn ATTRIBUTE2
    In the Segments Summary screen, when I try to select the Descriptive Flexfield column of which I believe it is available (ATTRIBUTE3), I can only select the column "ATTRIBUTE_CATEGORY".
    EBS R12
    application = Purchasing
    title = vendors
    table = PO_VENDORS
    Does anyone has any hints? What am I doing / thinking wrong?
    Thanks

    Attributes might have been used in another DFF. Run the below query to check if other columns are used in another DFF.
    SELECT application_column_name,end_user_column_name,
    ffv.flex_value_set_name,flex_usage.*
    FROM fnd_descr_flex_col_usage_vl flex_usage,
    fnd_descriptive_flexs_vl flex,
    fnd_flex_value_sets ffv
    WHERE flex.descriptive_flexfield_name = flex_usage.descriptive_flexfield_name
    AND flex.application_table_name like 'PO_VENDORS%'
    AND flex_usage.flex_value_set_id = ffv.flex_value_set_id(+)
    Thanks
    Shree

  • The value in flexfield context reference web bean does not match with the value in the context of the Descriptive flexfield web bean BranchDescFlex. If this in not intended, please go back to correct the data or contact your Systems Administrator for assi

    Hi ,
    We have enabled context sensitive DFF in Bank Branch Page for HZ_PARTIES DFF , We have created Flex Map so that only bank branch context fields are only displayed in the bank branch page and  as we know party information DFF is shared by supplier and Customer Page so we dint want to see any Bank Branch fields or context information in those pages.
    We have achieved the requirement but when open existing branches bank branch update is throwing below error message :
    "The value in flexfield context reference web bean does not match with the value in the context of the Descriptive flexfield web bean BranchDescFlex. If this in not intended, please go back to correct the data or contact your Systems Administrator for assistance."
    this error is thrown only when we open existing branches, if we save existing branch and open then it is not throwing any error message.
    Please let us know reason behind this error message.
    Thanks,
    Mruduala

    You are kidding?  It took me about 3 minutes to scroll down on my tab to get to the triplex button!
    Habe you read the error message? 
    Quote:
    java.sql.SQLSyntaxErrorException: ORA-04098: trigger 'PMS.PROJECT_SEQ' is invalid and failed re-validation
    Check the trigger and it should work again.
    Timo

  • 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'.

  • UDF at header level will not auto refresh before & after adding the invoice.

    Hi All,
    I have a FMS query in the UDF at AR Invoice header level. I have set the FMS query to auto refresh when tax rate field changes but the UDF doesn't auto refresh when there is a tax code in the document.
    I will need to add the invoice first then open the added invoice and press shift+F2 to get the calculated amount in the UDF to update the invoice.
    How to get the UDF to auto refresh whenever the tax code has changed? Or after the invoice has added?
    The FMS query:
    SELECT sum(T0.[TotalSumSy]) FROM INV1 T0 inner join OINV t1 on t1.docentry = t0.docentry WHERE T0.VatGroup in ('SR','DS','AJS') and t1.docentry = $[OINV.docentry]
    Thanks & BR,
    Leng

    Hi,
    I solved the problem following the steps in SAP note 633285 - Printing the total Vat amounts in each Vat group, https://websmp130.sap-ag.de/sap/support/notes/0000633285
    In order to print  in the  order  the Vat amount  in each vat group Please perform  the followed stages:
    Go to Tools (in the SBO tool bar ) and chose Manage User Field
    In Marketing Documents (Rows) add new fields according to the Num of the vat groups that you are using in Orders (e.g. A1, A2 ,A4) The type : Units and Totals  - the Structure: sum in the order each column will represent the vat amounts in the line but only for certain  Vat Group
    in order that each column will display the vat amount in the line only if it belong to certain Vat group we attach a query to each column: (e.g. we have 3 columns : A1, A2, A4) .the queries are;
    SELECT $[$38.82.NUMBER]  WHERE $[$38.18.0] = 'A1' FOR BROWSE  SELECT $[$38.82.NUMBER]  WHERE $[$38.18.0] = 'A2' FOR BROWSE SELECT $[$38.82.NUMBER]  WHERE $[$38.18.0] = 'A4' FOR BROWSE Now each column will display the vat amount only if it in the relevant vat group
    in the order document printing template you need to add those Vat column in our example we add 3  data fields : the file: Order - Rows , the Field: A1/A2/A4 - you can hide (un visible ) this columns as needed
    in the Repetitive Area Footer add a calculation field for each vat groupthe Type: Column Total , the Column: Order; A1/A2/A4 in each calculate field you will get the sum amount of the vat in the relevant Vat group. (in  addition you can add text fields with a relevant description for the calculation fields)
    Thanks & BR,
    Leng

  • Transferring order header level details to line level details

    I know, that by creating an order, the order header information is the 'default' information for the lines. What that means is that all the information at the header level, i.e. Freight terms, etc...will default to the lines.
    But when an order already exists and I change some field in Order Header level, changes are not automatically transferred to Order Lines.
    For example, customer requirement is to change ship method for existing order. I change Ship Method on Order Header, but then I must go to Line details and change Ship method on every line. Is there any way, how to change order lines details automatically after Order header update?
    Thank you
    Zdenek Moravec
    Information Systems Department
    Matsushita Television Central Europe
    [email protected]
    tel.: +420 37 8211 261

    SPRO - SD - Billing - Billing Plan - the first 5 config nodes (Define Billing Plan types / Define Date descriptions / Assign Date categories / Maintain Date Proposals / Assign Billing Plan types to Sales Doc types) are applicable to you.
    this is pretty tranparent for a reference.
    What else is required?

Maybe you are looking for

  • Interest rates as part of Payment Terms

    Dear Experts, I have the following scenario :- - Client has a Payment Term of 28 days for its Customer - If the Csutomer pays within 14 days, they are not chanrged any inerest (hence client gives 14 day inerest free credit to its Customers) - Once 14

  • GET_P Method for Link in table - only in display mode

    Hello, i created an assignmentblock to display a ztable (Simple Object). One column in the table is homepage. For this attribute i added some coding to the GET_P_Method to have a link. The link works fine - but i have this link now not only in displa

  • Download of complete report in excel-S_ALR_87013533

    Hi Gurus How can we download the report S_ALR_87013533 completely in excel sheet Thanks in advance Regards Abhijit Sen

  • How do you wire a waveform vi to a analog out vi?

    i keep getting error inappropriate use of. what doe's this mean? And how do I fix it? thanks jeff

  • Sales order VA01 with material checking

    When I create a sales order in VA01, when I enter less than 3 different brand( material in line item), The system should first generate message, after that I should be able to block that order with giving proper reason and then I should be able to sa