How to pass header/item text in inbound ORDERS05 IDoc

Hi,
I'm trying to create Sales Order from an inbound ORDERS05 idoc thru SE19.
How do I pass the header text and item text to the Sales Order?
What should be the value of E1EDKT1-TDOBJECT and E1EDKT1-TDOBNAME?
An early response is highly appreciated.
Regards,
Gajendra

Hi Gajendra,
What is the significance of "TDOBJECT" and "TDNAME"?
<b>TDOBJECT</b>: application object of the text
The field is part of the text key. It contains the name of the text object to which the text is allocated. This object must be defined in table TTXOB.
<b>TDNAME</b>: name of the text
The field is part of the text key. It contains the name of the text module. This name may be up to 70 characters long. An internal structure of the text name is preset by the text object, but not interpreted by SAPscript.
<b>TDID</b>: ID of the text
The field is part of the text key. It contains the name of the text ID to which the text module belongs. The text ID must be defined in table TTXID together with the text object.
<b>TDSPRAS</b>: language key of the text
The field is part of the text key. It contains the language key of the language used to enter the text lines of the text module. The language key must be defined in table T002.
Hope this will help.
Regards,
Ferry Lianto

Similar Messages

  • How to copy header/item text from Quotation to sales order?

    Dear All,
    On ECC 6, I am trying to get text copied from the quotation to the sales order (when the order is created with reference to the quote).
    As of now, the order creation is fine with all the right items & partners etc. in it, but the text is missing.
    The same text IDs have been assigned to both documents (at header & item levels).
    Is the text content supposed to be copied by standard SAP? Is there any customizing needed for this? Please guide me on how I can achieve this.
    Please help.
    Thanks
    Best regards,
    Rohit L
    Edited by: Rohit Lokray on Nov 26, 2009 10:49 AM

    Hi Rohit,
    Pls check this e.g.
    Text Determination Procedure
    You can define text for
    Customer
    Sales document
    Delivery
    Billing 
    1) Create new text types
    (Menu Path:  SPRO-IMG-Sales and distribution- Basic function-Text Control-Define text type). You can define new text type in this menu for your requirement for different objects (Customer, Sales document, Delivery and billing document). T-code: VOTXN
    2) Assign the new text ID in the text   determination procedure
    (Menu Path:  SPRO-IMG-Sales and distribution-Basic function- Text Control-Define text type). Click on change on application tool bar. Select text procedure   created and double click on Text ID'  s in text Procedure. Assign new text Id to Text determination procedure
    3) Define and Assign an access sequence to the new text ID
    (Menu Path: SPRO-IMG-Sales and distribution-Basic function-Text Control-Define access sequence for determining text).Access sequence can be defined only for sales document not for customer master. Select text procedure and double click on text id's in text procedure folder. Select text id and double click on access sequence and create new access sequence here.
    4) Assign the Text determination procedure with the sales document type.
    (Menu Path: SPRO-IMG-Sales and distribution-Basic function-Text Control-Define and assign text determination procedure) In this menu path you can assign text determination procedure to sales document type.
    [http://help.sap.com/saphelp_erp60_sp/helpdata/en/90/758534c960a134e10000009b38f83b/frameset.htm]

  • Is there any report to get the header/item text at GR stage together?

    Hi gurus,
    Is there any report to get the header/item text at GR stage together with a date range?
    at the point of goods receipt?  Or a report that could be run to search for header/item text at GR stage together with a date range?
    Text that was entered at the point of goods receipt?

    Hi
    Check MB51 report with posting dates for materials/vendors and use the display variant document header text (which is GR header text). I hope this is the one you are looking for.
    Thanks

  • How to pass apex item value into custom xml for chart or guage?

    Re-opening the old thread : Re: How to pass apex item value into custom xml for chart or guage?
    Which was not answered.
    Roel - Thanks. Its working - but in a semi quotes in the custom XML
    <pointers>
    <pointer value= '&P5_RUNNING_TOTAL.'
    <label enabled="true">
    <position placement_mode="ByPoint" x="50" y="15" />
    <format>{%Value}{numDecimals:1}</format>
    <background enabled="false" />
    </label>
    </pointer>
    </pointers>This question was helpful for us to resolving one recent thread : AnyChart - set Dial axis intervals dynamically?
    (Re: AnyChart - set Dial axis intervals dynamically?
    Edited by: P.Ranish on Dec 13, 2012 6:23 AM

    P.Ranish wrote:
    Is there any update for this question ???
    Edited by: P.Ranish on Dec 13, 2012 3:36 AMNo, And there won't be in the future.
    Please stop posting followup's to old threads, if you have a real problem please search the forum first and post a new question with all information
    Roel wrote:
    Try using &P5_RUNNING_TOTAL. or #P5_RUNNING_TOTAL#Just to make it clear - this will only work if page is reloaded after setting the item values dynamically via AJAX

  • How to place a delivery block at line item level from Inbound ORDERS IDoc?

    Hi EDI/ABAP Experts,
    Can anyone please tell me how to place a delivery block at line item level from Inbound ORDERS IDoc?
    I tried using exit "EXIT_SAPLVEDA_001'. But there is no LIFSP field in either of XVBEP and YVBEP structures.
    Can you guys throw some light. How to place a delivery block @ line item level on sales order from Inbound ORDERS IDoc.
    Thanks,
    Matt .

    Look into the Include: LVEDAF5A that is the only place where this exit is hit... double click on the Structures and look which structure has billling block field.. and use that..
    FORM CUSTOMER_FUNCTION_IDOC USING IDOC_DATA.
      CALL CUSTOMER-FUNCTION '001'
        EXPORTING SEGMENT = IDOC_DATA
                  DVTCOMAG = VTCOMAG
                  DXMESCOD = IDOC_CONTRL-MESCOD
                  CONTRL   = IDOC_CONTRL
        TABLES    DXBDCDATA = BDCDATA
                  DXVBAP    = XVBAP
                  DXVBEP    = XVBEP
                  DYVBEP    = YVBEP
                  DXVBADR   = XVBADR
                  DYVBADR   = YVBADR
                  DXVBPA    = XVBPA
                  DXVBUV    = XVBUV
                  DD_FLAG_P = D_FLAG_P
                  DXKOMV    = XKOMV
                  DXVEKP    = XVEKP
                  DYVEKP    = YVEKP
        CHANGING  DXVBAK   = XVBAK
                  DD_FLAG_K = D_FLAG_K
        EXCEPTIONS
                  USER_ERROR = 01.
    If you are in ECC6.0  you can also use Enhancement point : INTERPRET_IDOC_ORDERS_01 SPOTS ES_SAPLVEDA. in include: LVEDAF2U

  • How to retrieve the item text from VL03 transaction .

    How to retrieve the item text from VL03 transaction .
    The requirement is like this, the item text thus retrieved should be printed in the script under the item.

    Jagadieshwar,
    Use <b>READ_TEXT</b> function module to get the proper item text of Delivery.
    <b>ID</b>: Probably you want 0002 (Item Note), but it depends which text you want Item Note, Material Sales Text ,etc..
    <b>NAME</b>: CONCATENATE Delivery Doc. Number + Delivery Item Number (e.g. 0080001729000010)
    <b>OBJECT</b>: VBBP
    <b>
    LANGUAGE</b>: sy-langu or whatever you want.

  • Inbound ORDERS05 IDoc - Create SD Sales Order (EDI)

    I having an issue in inbound ORDERS05 IDoc processing to create SD sales order where the sales unit of measure for the material is getting lost/replaced. We are sending sales unit of measure in the E1EDP01-MENEE field, we are also sending the material UPC in teh E1EDP19 (003) segment relying on UPC material determination rules to resolve the material for the sales order. During this process of material determination the sales unit of measure is getting lost/replaced. I know as if we send the actual SAP material in the E1EDP19 segment (no material determination required) the sales unit of measure is unchanged. In this SAP system multiple sales unit of measure are maintained for each individual UPC code. Just looking for input on where to look to resolve this, config, user exits, etc..

    I can't say for sure what you should be doing, as I don't know how you have setup your material master, or how your Customers order. We have some Customers that always want EAches, some that always want OUTers, then some who want whatever UOM is assigned to the GTIN (UPC) that they order, which could be one of several. We have our custom code in ZXVEDU03.
    Cheers, Paul.

  • UNICODE TEXT CONVERSION IN ORDERS05 IDOC

    Hello All,
    I have a text that is sent by the customer as following
    Für verborgene Mängel besteht keine Untersuchungs- und Rügepflicht gem
    when the IDOC is created it appears as the following
    F#r verborgene M#ngel besteht keine Untersuchungs- und R#gepflicht gem
    I tried using SET LOCALE LANGUAGE 'E' in the copy of EDI_DATA_INCOMING function module.. it dint work
    Please help me to resolve this issue.

    Thanks Dani.
    I checked the T166A table and found that the following entries are missing for my cases: EKPO and EKKO for my ZNB PO type.
    Shall I just put an entry for those two things in that table and this will allow me to get my texts in my ORDERS05 IDoc?
    For point 2, as I am not an ABAP developper, I do not understand what to do. I can deal with customizing, but not with ABAP programming on that subject.
    Thanks anyway at least for the first part of the answer.

  • How to pass header text in bapi for sale order

    hai to all
    i am using BAPI_SALESORDER_CREATEFROMDAT2 to create sale order
    i can find order_text in tables parameters for creating item texts
    but in my senario i have to maintain header text
    please advice me how to proceed
    rgds
    vijay

    Hi Vijay,
    As I mentioned <b>it is very much possible to create sales order header text with this BAPI only</b>.
    Just check out following working code:
    REPORT yab_testso .
    DATA: orderheaderin LIKE bapisdhd1,
    orderitem TYPE TABLE OF bapisditm,
    wa_orderitem TYPE bapisditm,
    orderitemx TYPE TABLE OF bapisditmx,
    wa_orderitemx TYPE bapisditmx,
    orderpart TYPE TABLE OF bapiparnr,
    wa_orderpartner TYPE bapiparnr,
    ordertext TYPE TABLE OF bapisdtext,
    wa_text TYPE bapisdtext,
    orderret TYPE TABLE OF bapiret2,
    wa_ret TYPE bapiret2,
    lv_lines type i.
    orderheaderin-doc_type = 'ZZOR'.
    orderheaderin-sales_org = 'SS01'.
    orderheaderin-distr_chan = 'SH'.
    orderheaderin-division = 'ST'.
    wa_orderpartner-partn_role = 'SP'.
    wa_orderpartner-partn_numb = '1000000342'.
    APPEND wa_orderpartner TO orderpart.
    wa_orderpartner-partn_role = 'WE'.
    wa_orderpartner-partn_numb = '1000000342'.
    APPEND wa_orderpartner TO orderpart.
    wa_orderitem-itm_number = '10'.
    wa_orderitem-material = '000000111000000185'.
    wa_orderitem-target_qty = '10'.
    APPEND wa_orderitem TO orderitem.
    wa_text-text_id = '0012'.
    wa_text-langu = 'E'.
    wa_text-text_line = 'Test for text creation'.
    APPEND wa_text TO ordertext.
    CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
      EXPORTING
      SALESDOCUMENTIN               =
        order_header_in               = orderheaderin
      ORDER_HEADER_INX              =
      SENDER                        =
      BINARY_RELATIONSHIPTYPE       =
      INT_NUMBER_ASSIGNMENT         =
      BEHAVE_WHEN_ERROR             =
      LOGIC_SWITCH                  =
      TESTRUN                       =
      CONVERT                       = ' '
    IMPORTING
      SALESDOCUMENT                 =
      TABLES
       return                        = orderret
       order_items_in                =  orderitem
      ORDER_ITEMS_INX               =
        order_partners                = orderpart
      ORDER_SCHEDULES_IN            =
      ORDER_SCHEDULES_INX           =
      ORDER_CONDITIONS_IN           =
      ORDER_CFGS_REF                =
      ORDER_CFGS_INST               =
      ORDER_CFGS_PART_OF            =
      ORDER_CFGS_VALUE              =
      ORDER_CFGS_BLOB               =
      ORDER_CFGS_VK                 =
      ORDER_CFGS_REFINST            =
      ORDER_CCARD                   =
       order_text                    =  ordertext
      ORDER_KEYS                    =
      EXTENSIONIN                   =
      PARTNERADDRESSES              =
    describe table orderret lines lv_lines.
    READ TABLE orderret into wa_ret index lv_lines.
    IF wa_ret-type = 'S'.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
      WRITE: / wa_ret-message_v2.
    ENDIF.
    Hope it helps.
    Regards,
    Akshay Bhagwat
    Note: Pls reward points if this helps you.

  • At the time of Sales Transaction Header & Item Text is not coming in print

    Hi Gurus,
    At the time of Sales order or Outbound Delivery or Invoice if I am giving text in Header or Item text it is not coming in Print , Please let me know Gurus what I need to do for it ,
    I need to get print of my text name also , means If I am typing Vehical no. in front of Vehical number text coloum , I wants to print Vehical Number : XYZ 01 123 in Print
    Please help me in this issue,
    Please let me know how we can add text in Excise Invoice,
    & Which Excise Register need to update from Sales ,
    & how to do it ,
    Please help me Gurus,
    Thanking you ,
    Reagrds,
    Sai

    Dear Sai,
    Take help of ABAPer to capture the header or item text in to the print copy of sales order ,delivery and invoice.
    I hope this will help you,
    Regards,
    Murali.

  • How to copy header items and paste it into a new channel

    Hi everybody,
    i'm trying to customize my tasks with DIAdem and got some big problem. I have a channel table in VIEW with 295 columns and have added a new column.In this column i want to write all the Header Items i've got.
    I've created a new channel with:
    Call ChnAlloc("Betriebsdaten_akt_Monat", 295, 1,DataTypeString,"Text")
    Call Zusfassg.Columns.Add(296)
    Then I use this command to read the header items:
    Set MyHeaders = View.ActiveSheet.ActiveArea.DisplayObj.HeaderItems
    But how could i now paste all these items into the new column i've created?
    Thanks in advance for your help.
    Kind regards
    Patrick
    Patrick Etoumann

    Hello Patrick,
    to be honest, I did not completely understand what you are trying to do - so if the answer does not fit 100%, please give me some more information about your task.
    Within the DIAdem Help (topic: Object HeaderItem) you can find this short script:
    Set oMyHeaders = View.ActiveSheet.ActiveArea.DisplayObj.HeaderItems
      For Each oMyHeaderItem in oMyHeaders
      Call MsgBoxDisp(oMyHeaderItem.Name)
    Next
    It calls a messagebox for each configured headeritem. If you want to write the titles of these items into a new channel you can use the ChT() variable. Specify the row and a textchannel as parameters of this function.
    But because you created a textchannels with a length that equals the numlber of displayed channels i think you rather want to copy the content of a specific header property to the rows of that column. In this case it might be most convenient to program a for loop and use the loop variable to reference the individual channels. With the command ChnPropGet(), the channel number and the property name you can read the value of a property.  Even here, use ChT() to store the data into the new channel.
    Ingo Schumacher
    Systems Engineer Sound&VibrationNational Instruments Germany

  • LSMW Sales Order BAPI : Header & Item Text

    Hi frenz,
           I'm migrating Sales Order data using LSMW with BAPI method. We got four files...
    one for header, one for item, one for header text, one for item text.
    Now my problem is how do i update both header and item text.
    B'cos while assigning structural relations we got only one text structure(E1BPSDTEXT) common for both header and item. So which source structure(whether header_text or item_text) should be assigned to this segment(E1BPSDTEXT)?
    Else is there any other way to update both header and item texts?
    With regards,
    praveen.

    Unfortunately, you cannot assign more than one source structure to a target structure. But you can still manipulate the code. Here is how.
    Let us say your source structure defined for item texts is ITEM_TEXTS. In your field mapping section for E1BPSDTEXT, double click the '__BEGIN_OF_RECORD__' in change mode. It will pop-up a warning message, say 'yes' and proceed. Remove all the coding that is there in this section, but copy the lines to somewhere(say x buffer) before you do that. You will need those lines below. Just add the following lines there.
    if v_transferred_texts = 'X'.
    *-- all the texts are transferred, don't need to process again.
      skip_record.
    endif.
    You need to define 'v_transferred_texts' in the
    '__GLOBAL_DATA__' section as follows.
    data: v_transferred_texts type c.
    Now double click on '_END_OF_RECORD_' in change mode. It will pop-up a warning, but you can say 'yes' and proceed. This will open up the coding window with one line of code in it 'transfer_record.'. Here you need to add your coding as follows.
    *-- move the header texts
    LOOP AT HEADER_TEXTS.
    *-- This should <b>ALWAYS</b> be there
      g_edidd_segnam = 'E2BPSDTEXT000'.
      g_edidd_segnum = '0021'.         
      g_edidd_psgnum = '000001'.       
      g_edidd_hlevel = '02'.           
      clear E1BPSDTEXT.                
    *-- fill each field of the following fields
      E1BPSDTEXT-DOC_NUMBER = SALESHEADER-ORDERNUMBER.
      E1BPSDTEXT-ITM_NUMBER = '000000'.
      E1BPSDTEXT-TEXT_ID    = HEADER_TEXTS-TEXTID.
      E1BPSDTEXT-LANGU      = SY-LANGU.
      E1BPSDTEXT-LANGU_ISO 
      E1BPSDTEXT-FORMAT_COL
      E1BPSDTEXT-TEXT_LINE  = HEADER_TEXTS-TEXT.
      E1BPSDTEXT-FUNCTION   = '005'.
      transfer_record.
    ENDLOOP.
    *-- Now move the item texts
    LOOP AT ITEM_TEXTS.
    *-- This should <b>ALWAYS</b> be there
      g_edidd_segnam = 'E2BPSDTEXT000'.
      g_edidd_segnum = '0021'.         
      g_edidd_psgnum = '000001'.       
      g_edidd_hlevel = '02'.           
      clear E1BPSDTEXT.                
    *-- fill each field of the following fields
      E1BPSDTEXT-DOC_NUMBER = SALESHEADER-ORDERNUMBER.
      E1BPSDTEXT-ITM_NUMBER = ITEM_TEXTS-ITM_NUMBER.
      E1BPSDTEXT-TEXT_ID    = ITEM_TEXTS-TEXTID.
      E1BPSDTEXT-LANGU      = SY-LANGU.
    *  E1BPSDTEXT-LANGU_ISO  =
    *  E1BPSDTEXT-FORMAT_COL
      E1BPSDTEXT-TEXT_LINE  = ITEM_TEXTS-TEXT.
      E1BPSDTEXT-FUNCTION   = '005'.
      transfer_record.
    ENDLOOP.
    *-- set the flag that the texts have been transferred
    v_transferred_texts = 'X'.
    Please let me know how it goes.
    Srinivas

  • How to pass multiple items in Adobe forms to a Webservice

    Hello, all.
    I'm trying to create Interactive Form to create a sales order in R/3.
    Please somebody tell me how to pass the multiple line item data to the Webservice.
    For example, the Webservice I'm using was generated from BAPI_SALESORDER_CREATEFORMDAT2.
    The BAPI has tables for item data in sales order.
    However, when I create the form with table for item data, the only last line of the table is passed to the Webservice.
    How can I create Adobe forms to pass multiple line item to the Webservice.

    Hi,
    I have worked on the same application for the creation sales order and has used the same BAPI.
    You should first extract the data from the table node through the method "get_static_attributes_table" and take all the result into a table of type same as element of that particular node.
    Now pass the data from this table into the internal table of type as mentioned in the BAPI using work area.
    And pass this table to BAPI.
    This will work .
    Regards,
    Shruti

  • Sales document header/item text

    Header and item text saved during sales document create uses XXXXXXXXXX as the tdname, because the sales document number has not been determined yet.  Occasionally, this text gets left behind.  Subsequent documents being created get the stranded text.  We have been using the delete_text function module to get rid of this text.  Is there a fix for this?

    There is an OSS note 539221, describing similar problem but it is fixed in patch level 2 and you are already on level 15.
    Have you opened an OSS message for this problem ?
    -Sanjeev

  • How to align the item text in the combobox vertically centred after increasing the height of the combobox in mfc?

    I want to make the item text of the combobox to  be aligned vertically(Centred) . Actually I increased the height 
    of the combobox and after the increasing the combobox height, the text is not centred vertically.The code
    snippet for increasing the height is as follows,
    m_SpecifyCombo.SetItemHeight(-1,20);//CCombobox m_SpecifyCombo
    After increasing the height the text in the combobox is not in the centre as shown in the below image,
    But I want the text to be centred as shown in the below image.
    Code snippet for owner drawn combobox:
    #if !defined(AFX_CUSTCOMBOBOX_H__F8528B4F_396E_11D1_9384_00A0248F6145__INCLUDED_)
    #define AFX_CUSTCOMBOBOX_H__F8528B4F_396E_11D1_9384_00A0248F6145__INCLUDED_
    #if _MSC_VER >= 1000
    #pragma once
    #endif // _MSC_VER >= 1000
    typedef enum {FONTS} STYLE; //Why have I enumerated, Cos, Maybe I might want something other than Fonts here
    class COwnerDrawCombo : public CComboBox
    // Construction
    public:
    COwnerDrawCombo();
    COwnerDrawCombo (STYLE);
    // Attributes
    public:
    void SetHilightColors (COLORREF hilight,COLORREF hilightText)
    m_clrHilight = hilight;
    m_clrHilightText = hilightText;
    void SetNormalColors (COLORREF clrBkgnd,COLORREF clrText)
    m_clrNormalText = clrText;
    m_clrBkgnd = clrBkgnd;
    static BOOL CALLBACK EnumFontProc (LPLOGFONT lplf, LPTEXTMETRIC lptm, DWORD dwType, LPARAM lpData);
    void FillFonts ();
    int GetSelFont (LOGFONT&);
    // Operations
    public:
    // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CCustComboBox)
    public:
    virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
    virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
    protected:
    virtual void PreSubclassWindow();
    //}}AFX_VIRTUAL
    // Implementation
    public:
    virtual ~COwnerDrawCombo();
    // Generated message map functions
    protected:
    STYLE m_enStyle;
    COLORREF m_clrHilight;
    COLORREF m_clrNormalText;
    COLORREF m_clrHilightText;
    COLORREF m_clrBkgnd;
    BOOL m_bInitOver;
    void DrawDefault (LPDRAWITEMSTRUCT);
    void DrawFont(LPDRAWITEMSTRUCT);
    void InitFonts ();
    //{{AFX_MSG(CCustComboBox)
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    afx_msg void OnDestroy();
    //}}AFX_MSG
    afx_msg long OnInitFonts (WPARAM, LPARAM);
    DECLARE_MESSAGE_MAP()
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
    #endif //!defined(AFX_CUSTCOMBOBOX_H__F8528B4F_396E_11D1_9384_00A0248F6145__INCLUDED_)
    // OwnerDrawCombo.cpp : implementation file
    #include "stdafx.h"
    #include "combobox.h"
    #include "OwnerDrawCombo.h"
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    #define WM_INITFONTS (WM_USER + 123)
    //I chose 123 cos nobody might use the same exact number.. I can improve this by use RegisterWindowMessage..
    // COwnerDrawCombo
    //Initial values of the text and highlight stuff
    COwnerDrawCombo::COwnerDrawCombo()
    m_enStyle = FONTS;
    m_clrHilight = GetSysColor (COLOR_HIGHLIGHT);
    m_clrNormalText = GetSysColor (COLOR_WINDOWTEXT);
    m_clrHilightText = GetSysColor (COLOR_HIGHLIGHTTEXT);
    m_clrBkgnd = GetSysColor (COLOR_WINDOW);
    m_bInitOver = FALSE;
    COwnerDrawCombo::COwnerDrawCombo (STYLE enStyle)
    m_enStyle = enStyle;
    m_clrHilight = GetSysColor (COLOR_HIGHLIGHT);
    m_clrNormalText = GetSysColor (COLOR_WINDOWTEXT);
    m_clrHilightText = GetSysColor (COLOR_HIGHLIGHTTEXT);
    m_clrBkgnd = GetSysColor (COLOR_WINDOW);
    m_bInitOver =FALSE;
    COwnerDrawCombo::~COwnerDrawCombo()
    BEGIN_MESSAGE_MAP(COwnerDrawCombo, CComboBox)
    //{{AFX_MSG_MAP(COwnerDrawCombo)
    ON_WM_CREATE()
    ON_WM_DESTROY()
    //}}AFX_MSG_MAP
    ON_MESSAGE (WM_INITFONTS,OnInitFonts)
    END_MESSAGE_MAP()
    // COwnerDrawCombo message handlers
    void COwnerDrawCombo::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
    //I might want to add something else someday
    switch (m_enStyle)
    case FONTS:
    DrawFont(lpDrawItemStruct);
    break;
    //I dont need the MeasureItem to do anything. Whatever the system says, it stays
    void COwnerDrawCombo::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
    void COwnerDrawCombo::DrawFont(LPDRAWITEMSTRUCT lpDIS)
    CDC* pDC = CDC::FromHandle(lpDIS->hDC);
    CRect rect;
    TRACE0 ("In Draw Font\n");
    // draw the colored rectangle portion
    rect.CopyRect(&lpDIS->rcItem);
    pDC->SetBkMode( TRANSPARENT );
    if (lpDIS->itemState & ODS_SELECTED)
    pDC->FillSolidRect (rect,m_clrHilight);
    pDC->SetTextColor (m_clrHilightText);
    else
    pDC->FillSolidRect (rect,m_clrBkgnd);
    pDC->SetTextColor (m_clrNormalText);
    if ((int)(lpDIS->itemID) < 0) // Well its negetive so no need to draw text
    else
    CString strText;
    GetLBText (lpDIS->itemID,strText);
    CFont newFont;
    CFont *pOldFont;
    ((LOGFONT*)lpDIS->itemData)->lfHeight = 90; //9 point size
    ((LOGFONT*)lpDIS->itemData)->lfWidth = 0;
    newFont.CreatePointFontIndirect ((LOGFONT*)lpDIS->itemData);
    pOldFont = pDC->SelectObject (&newFont);
    pDC->DrawText(strText, rect, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
    pDC->SelectObject (pOldFont);
    newFont.DeleteObject ();
    void COwnerDrawCombo::InitFonts ()
    CDC *pDC = GetDC ();
    ResetContent (); //Delete whatever is there
    EnumFonts (pDC->GetSafeHdc(),NULL,(FONTENUMPROC) EnumFontProc,(LPARAM)this);//Enumerate
    m_bInitOver = TRUE;
    BOOL CALLBACK COwnerDrawCombo::EnumFontProc (LPLOGFONT lplf, LPTEXTMETRIC lptm, DWORD dwType, LPARAM lpData)
    if (dwType == TRUETYPE_FONTTYPE) //Add only TTF fellows, If you want you can change it to check for others
    int index = ((COwnerDrawCombo *) lpData)->AddString(lplf->lfFaceName);
    LPLOGFONT lpLF;
    lpLF = new LOGFONT;
    CopyMemory ((PVOID) lpLF,(CONST VOID *) lplf,sizeof (LOGFONT));
    ((COwnerDrawCombo *) lpData)->SetItemData (index,(DWORD) lpLF);
    return TRUE;
    int COwnerDrawCombo::OnCreate(LPCREATESTRUCT lpCreateStruct)
    if (CComboBox::OnCreate(lpCreateStruct) == -1)
    return -1;
    // TODO: Add your specialized creation code here
    if (m_enStyle == FONTS)
    //SetItemHeight(-1,30);
    PostMessage (WM_INITFONTS,0,0);
    return 0;
    long COwnerDrawCombo::OnInitFonts (WPARAM, LPARAM)
    InitFonts ();
    return 0L;
    void COwnerDrawCombo::OnDestroy()
    if (m_enStyle == FONTS)
    int nCount;
    nCount = GetCount ();
    for (int i = 0; i < nCount; i++)
    delete ((LOGFONT*)GetItemData (i)); //delete the LOGFONTS actually created..
    // TODO: Add your message handler code here
    CComboBox::OnDestroy();
    void COwnerDrawCombo::FillFonts ()
    m_enStyle = FONTS;
    PostMessage (WM_INITFONTS,0,0); //Process in one place
    int COwnerDrawCombo::GetSelFont (LOGFONT& lf)
    int index = GetCurSel ();
    if (index == LB_ERR)
    return LB_ERR;
    LPLOGFONT lpLF = (LPLOGFONT) GetItemData (index);
    CopyMemory ((PVOID)&lf, (CONST VOID *) lpLF, sizeof (LOGFONT));
    return index; //return the index here.. Maybe the user needs it:-)
    void COwnerDrawCombo::PreSubclassWindow()
    // TODO: Add your specialized code here and/or call the base class
    //Tried to do what Roger Onslow did for the button.. Did not work..?? Any R&D guys around :-)
    Can anyone please let me know how can I achieve this.
    Any help can be appreciated.
    Thanks in advance
    SivaV

    Hi sivavuyyuru,
    I cannot find a easy way to make this.
    I think you may need to draw your own Combo Box control. And you could change the edit control more like static text. Check the article:
    http://www.codeguru.com/cpp/controls/combobox/fontselectioncombos/article.php/c1795/Owner-Drawn-Font-Selection-Combobox.htm
    In the resource editor, Owner draw -> variable , Has string->true, type->drop list.
    The result:
    Best regards,
    Shu Hu
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

Maybe you are looking for

  • Bookmarks disappeared in bookmarks drop down menu and bookmarks toolbar disappeared too after upgrading

    I still have all my bookmarks so they are not lost (I can find them under 'bookmarks'>'Edit bookmarks' and also when I put them in the left side windowframe by clicking 'View'>'Sidebar'>'Bookmarks' I saw them appear once again in the dropdown menu bu

  • Calibrate Sony SDM-HS95P with DVI-D

    I just hooked up these 2 montitors, and the colors are pretty bad. Sony says that with the DVI-D interface there is no way to calibrate on screen, and the monitors have no calibration buttons. I tried to use the Mac calibrate, but it simpley says "tu

  • KT4 Ultra Bios 1.2 Doesnt Work

    I have just updated my Bios to verison 1.2 and the computer wont go into windows. Infact I have found the problem to be the USB Via chipset thats at fault. I have Windows Me and the the computer freezes every time it tries to load USB. I have put ver

  • Cash payment not exceed than 20000

    Dear Expert, I want to restrict incoming & outgoing cash payment where amount crosses equal or above ' 20000 ' pls suggest the store procedure. Regards, Datta Kharat

  • Adjusting a still frame in a drop zone

    In previous versions of iDVD, you could move the still image in a drop zone by clicking on it (mainly horizontally -centering an image). In iDVD 08, you can't click on the drop zone and adjust. Checked the help page but no mention. Any suggestions on