How to call subscreen and provide selection screen in subscreen

Hi experts,
please anybody suggest me how to call subscreen in module pool screen and provide selection screen in that sub screen.
please tell me how to design this subscreen in module pool screen.
adevanced
thank you
regards
vijay krishna

Hi,
If you need to have select-options in module pool then follow these steps:-
To implement select-options in module pool, first design two input/output fields (textboxes) for the low and high value of the field and name it as <field_name>-low and <field_name>-high.
Create a button next the high value textbox and keep its sutaible function code.
Now, to call the pop-up on this button click, we have to call the same pop-up as in standard      select-options. For this we have to use the function module COMPLEX_SELECTIONS_DIALOG.
For this FM we have to pass the table name, field name and the range for the field whose range needs to fill when using the popup screen.
To pass the table name and field name details into the FM, we have to declare as:
DATA : tab TYPE rstabfield.
This structure comprises of table name and field name.
Pass these details in program as:-
u2003
*-- clear table and field details
  CLEAR tab.
*-- append for range depending on the button clicked
*   either for sales order or line item
  CASE sy-ucomm.
    WHEN 'VBELN'.
      tab-tablename = 'VBAP'.
      tab-fieldname = 'VBELN'.
*--To call the popup screen for the field use code:-
  CALL FUNCTION 'COMPLEX_SELECTIONS_DIALOG'
    EXPORTING
      title             = text-002  u201Ctitle text
      text              = ' '
      signed            = 'X'
      search_help       = v_shelp u201Csearch help if required
      tab_and_field     = tab u201Ctable and field name details
    TABLES
      range             = r_vbeln u201Crange for the associated field
    EXCEPTIONS
      no_range_tab      = 1
      cancelled         = 2
      internal_error    = 3
      invalid_fieldname = 4
      OTHERS            = 5.
Hope this helps you.
Regards,
Tarun

Similar Messages

  • Call a report with selection screen as subscreen.

    Hi all,
    i need to Submit And Return a Report having some parameters and Select options, from a Function Module.
    all i want that the Selection Scrren of Report should appeared as Subscreeen, so that Calling Screen sould be visible in Background.
    Is this Possible , if yes then How ?
    thanks in advance,
    Nitin

    Running new report means opening new internal session. This can't be embeded within the current internal session where your function group (function module specifically) runs. So there is no such a way which you could run a report inside a subscreen area.
    If you however want only selection screen of the report to be embeded inside your subscreen area (not run) you can use
    "report Z_SUBSCREEN_REPORT
    SELECTION-SCREEN BEGIN OF SCREEN 0200 as SUBSCREEN.
      PARAMETERS pa type c.
    SELECTION-SCREEN end of SCREEN 0200.
    "main screen's flow logic in function group with subscreen area
    PROCESS BEFORE OUTPUT.
      call SUBSCREEN area INCLUDING 'Z_SUBSCREEN_REPORT '0200'.
    Regards
    Marcin

  • How to call Function Module in Selection Screen

    Hi All,
    I have developed one HR Report (Qualification Overview Report: To display all active employees and their Qualifications along with their Proficiency).
    Already it has 3 selection fields on selection screen and now I want one more field on selection screen like Qualification Id.
    But when the end user press F4 it should display the Popup which comes in TCode: PA30 at the time of Creating Qualification.
    I have debugged the Standard Code and searched the Function Module: 'RH_OBJID_REQUEST' which shows Popup which I wanted to show at Selection screen for newly added field.
    So I have to define new field like 'Qualification Id' and want to attach above Function Module so that it will cater my requirement.
    If anybody has worked on this type of requirement then please let me know.
    Thanks,
    Jay.

    Hi Raymond,
    I have written following code:
    s_quali is used in selection screen for Qualification Id.
    SELECT-OPTIONS :  s_quali   FOR hrp1000-objid NO INTERVALS.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_quali-low.
      CALL FUNCTION 'RH_OBJID_REQUEST'
        EXPORTING
          plvar           = '01'
          otype           = 'Q'
          seark           = '*'
          seark_begda     = '18000101'
          seark_endda     = '99991231'
          set_mode        = 'X'
        TABLES
          sel_objects     = git_objects.
      LOOP AT git_objects INTO wa_objects.         " Logic is to fill up the Selection screen field
        s_quali-low = wa_objects-objid.
        APPEND s_quali TO s_quali.
        CLEAR : s_quali, wa_objects.
      ENDLOOP.
    Now problem is that, its not populating all values in selection screen which I select from Popup screen (Choose Qualification).
    I checked that the first value in the internal Table is over written by second records in the internal table
    For e.g.: If I select 001,002,003,004 from Popup screen then I am able to see only 002,003,004 in the Multiple selection view of that field though it is available in the internal table s_quali (because I am filling up the table using Loop-Endloop)
    Please advise me how to overcome this issue. (How to fill up selection screen)
    Thanks,
    Jay.

  • Selection screen as Subscreen help required

    Hello All,
    I am facing a problem by calling selection screen as subscreen, Here is my problem
    In my main screen i have create a sub screen as search help
    so in my sub-screen i have select-options
    If i click the button to include and exclude some values i don't see  the dailog box for selections is not appearing.
    Please provide help. I need to allow the user to enter some n values?
    Regards,
    Lisa

    Hi,
    There is a small mistake that you are doing..
    In the subscreen donot create the select options... What you need to do is... in the TOP Include write lines like..
    SELECTION-SCREEN BEGIN OF SCREEN 1010 AS SUBSCREEN.
    SELECT-OPTIONS s_proj FOR zimple_crmt_1000-title_part.
    SELECT-OPTIONS s_cr      FOR crmd_orderadm_h-object_id.
    SELECTION-SCREEN END OF SCREEN 1010 .
    Then.. in the screen where you have subscreen to be included write
    PBO
    CALL SUBSCREEN subs_1010 INCLUDING sy-repid '1010'.
    PAI
    CALL SUBSCREEN subs_1010.
    By doing this... the select option will appear on your subscreen with the extension and interval options.
    All the best.

  • Selection screen as subscreen in module pool main screen

    hello
    i having problem with a module pool  and a selection screen subscreen , i have my main screen 100 in my module pool
    i create a sub screen area , then in my top include i define a seleccion screen as subscreen  150
    i define some paramets and select-options ( for the select-options feature is because i choose use the subscreen )
    so far here is OK , the problem is when i fill the subscreen data and press a pushbutton define in the main screen ( 100 )
    the field are getting cleared ( BTW i call the subscreen in the PBO of the main screen ( 100 ) using call SUBSCREEN SUB_AREA INCLUDING SY-REPID '150'. ) so my question is how i can do for save the data filled in the subscreen ?
    thanks

    i find the solution of my own question:
    in the first line of the PAI event of the main screen ( where you call the subscreen ) need add 'call subscreen SUB_AREA_NAME_HERE.

  • How to accept multiple attachments on selection screen?

    Hi All,
    I need to know how to accept multiple attachments on selection screen and send them as email to external system (outlook).
    Basically, my req is to send a common email with attachments to certain users. These users are displayed in ALV. User will select ALL or specific user from ALV and send an email with message entered on selection screen.
    I used text editor control to input message body. I need to know how to accept attachments and send them.
    Appreciate any inputs.
    Thanks,
    SKJ

    SAP uses a nifty little button called 'Object Services' on ME23N (top left) which you can use to attach documents to business objects.
    http://help.sap.com/saphelp_nw70/helpdata/EN/be/3fe63659241157e10000009b38f889/frameset.htm
    It's a complicated way of doing it but might give you extra functionality in the long run.

  • HOW TO PASS THE DATA FROM SELECTION SCREEN TO STANDARD TRANSACTION?

    HI,
    HOW TO PASS THE DATA FROM SELECTION SCREEN TO STANDARD TRANSACTION?
    thanks,
    samba.

    By selection screen, what do you mean?   There is no selection screen in WDA as there was in classic dynpro. Do you mean you are using the Select-Options reusable component?  Are you wanting to call a standard transaction via ITS - SAPGUI for HTML?  Please provide more details to your question.

  • CALL TRANSACTION AND SKIP FIRST SCREEN to specified tab in TCODE 'IW32'

    Hi,
    I am using CALL TRANSACTION AND SKIP FIRST SCREEN in ALV Grid Report to call IW32 tcode and it goes to tcode skipping the first screen. But it goes to the default header tab in the tab control. Whereas I wish to go to the specified tab 'OPERATIONS'.
    Can any one help me, as to how to resolve this issue ?
    Thanks in advance.

    Sridher,
    I have the similar requirement. but in my case its COSTS tab. Could you please provide the code you have used for this to work?
    I used standard "call transaction with mode 'E' ". This seems to be working but I am not pleased by my effort. Is there any proper way that you might have followed ?
    Greatly appreciated your help.
    Regards,
    Reddy

  • Download and upload selection screen texts

    hello,
           My requirement is to upoad and download selection screen texts from one system to another..
           How do download  the selection screen texts from program to the application server and then upload them on another system. I am writing a bdc to carry out this process...
          Please help me out with this..
    Thank you,

    Hi,
      Why don't you just transport it? If it is linked you can asked basis to set the transport part and link it. If it is not you can download the transport and import it on another system.
      If you still need a program to do that. You can use SAPlink on [http://wiki.sdn.sap.com/wiki/display/ABAP/SAPlink]. SDN provided such code already just download it and implement it on both of your system then you can copy a program with selection screen.
    Cheers,
    Chaiphon

  • How to default date values in Selection Screen

    Hi everyone,
    I would like to display the 1st day of the previous month into the I_GSTRP-LOW field and the last day of the current month into the I_GSTRP-HIGH field.
    For example, this in the 5th month of the year (May), therefore, in the selection screen it should appear like this:
    Basic Date: <u>01.04.2006</u>    to   <u>31.05.2006</u>
    How do i do it?
    *& SELECTION-SCREEN                                                    *
    SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS:
      I_AUFNR FOR AFIH-AUFNR,                           "ORDER NUMBER
      I_GSTRP FOR AFKO-GSTRP,                           "BASIC DATE
      I_BUDAT FOR AUFM-BUDAT,                           "POSTING DATE
      I_IWERK FOR AFIH-IWERK DEFAULT '6010' OBLIGATORY, "PLANNING PLANT
      I_ARBPL FOR CRHD-ARBPL,                           "WORK CENTER
      I_ERNAM FOR AUFK-ERNAM,                           "CREATED BY
      I_MATNR FOR RESB-MATNR,                           "MATERIAL
      I_KTEXT FOR AUFK-KTEXT.                           "EQUIPMENT
    SELECTION-SCREEN END OF BLOCK 1.

    Here is the code to populate default values,as per your requirement.
    data : V_date type sy-datum,
           v_month(2) type c,
           v_low_value(8) type c,
           v_high_value(8) type c,
           v_month1(2) type n,
            V_NO_OF_DAYS type T009B-BUTAG,
           v_curr_month type T009B-BUMON,
           v_curr_year  type T009B-BDATJ.
           select-options : i_gstrp for sy-datum.
    initialization.      
    v_date = sy-datum.
    v_month1 = v_date+4(2) - 1.
    write v_month1 to v_month.
    concatenate v_date+0(4)
    v_month
    '01'
    into v_low_value.
    I_GSTRP-LOW = v_low_value.
    v_curr_month = sy-datum+4(2).
    v_curr_year  = sy-datum+0(4).
    CALL FUNCTION 'NUMBER_OF_DAYS_PER_MONTH_GET'
      EXPORTING
        par_month       = v_curr_month
        par_year        = v_curr_year
    IMPORTING
       PAR_DAYS        = V_NO_OF_DAYS
    concatenate sy-datum+0(6)
    V_NO_OF_DAYS
    into v_high_value.
    I_GSTRP-HIGH = v_high_value.
    I_GSTRP-sign = 'I'.
    I_GSTRP-OPTION = 'EQ'.
    APPEND I_GSTRP.
    regards
    srikanth

  • How to Add Push Button On Selection Screen

    Hi Experts,
    How to add Push button on Selection Screen.
    Points will b rewarded for useful help.
    Bohra.

    Hi,
    To create a pushbutton on the selection screen, you use:
    SELECTION SCREEN PUSHBUTTON [/]<pos(len)> <push>
    USER-COMMAND <ucom> [MODIF ID <key>].
    The [/]<pos(len)> parameters and the MODIF IF addition have the same function as for the formatting options for underlines and comments.
    <push> determines the pushbutton text. For <push>, you can specify a text symbol or a field name with a maximum length of eight characters. This character field must not be declared with the DATA statement, but is generated automatically with length <len>. The field must be filled before the selection screen is called.
    For <ucom>, you must specify a code of up to four characters. When the user clicks the pushbutton on the selection screen, <ucom> is entered in the UCOMM of the SSCRFIELDS interface work area. You must use the TABLES statement to declare the SSCRFIELDS structure. The contents of the SSCRFIELDS-UCOMM field can be processed during the AT SELECTION-SCREENevent.
    Ex.
    REPORT DEMO.
    TABLES SSCRFIELDS.
    DATA FLAG.
    SELECTION-SCREEN:
    BEGIN OF SCREEN 500 AS WINDOW TITLE TIT,
    BEGIN OF LINE,
    PUSHBUTTON 2(10) BUT1 USER-COMMAND CLI1,
    PUSHBUTTON 12(10) TEXT-020 USER-COMMAND CLI2,
    END OF LINE,
    BEGIN OF LINE,
    PUSHBUTTON 2(10) BUT3 USER-COMMAND CLI3,
    PUSHBUTTON 12(10) TEXT-040 USER-COMMAND CLI4,
    END OF LINE,
    END OF SCREEN 500.
    AT SELECTION-SCREEN.
    CASE SSCRFIELDS.
    WHEN 'CLI1'.
    FLAG = '1'.
    WHEN 'CLI2'.
    FLAG = '2'.
    WHEN 'CLI3'.
    FLAG = '3'.
    WHEN 'CLI4'.
    FLAG = '4'.
    ENDCASE.
    START-OF-SELECTION.
    TIT = 'Four Buttons'.
    BUT1 = 'Button 1'.
    BUT3 = 'Button 3'.
    CALL SELECTION-SCREEN 500 STARTING AT 10 10.
    CASE FLAG.
    WHEN '1'.
    WRITE / 'Button 1 was clicked'.
    WHEN '2'.
    WRITE / 'Button 2 was clicked'.
    WHEN '3'.
    WRITE / 'Button 3 was clicked'.
    WHEN '4'.
    WRITE / 'Button 4 was clicked'.
    WHEN OTHERS.
    WRITE / 'No Button was clicked'.
    ENDCASE.
    This example defines four pushbuttons on a selection screen that is displayed as a
    dialog box. The selection screen is defined in a statement chain for keyword
    SELECTION-SCREEN.
    If the text symbols TEXT-020 and TEXT-040 are defined as 'Button 2' and 'Button 4',
    the four pushbuttons appear as follows on the selection screen displayed as a dialog box.
    Regards,
    Bhaskar

  • How to get default values on selection screen(multiple ranges)?

    i want to know how to maintain default ranges in selection screen...like 2000 to 3000 and 7000 to 8000 and 11000 to 15000
    all the above ranges must get by default how to provide those to selection screen by default...please give me idea...with example...

    Hi Suresh,
    You can either use select-options or Ranges. If you want the selection screen to be displayed with allwoing user to enter values apart for the default ones use select options else use ranges. With ranges what ever values use hard code would be set and the end user will not be able to add any more values (or range of values).
    Simply write the following code
    tables : <name of the table from which the field belongs>
    select-options <fieldname> for <tablename>-<fieldname>.
    <fieldname>-sign = 'I'.
    <fieldname>-option = 'BT'.
    <fieldname>-low = '7000'.
    <fieldname>-high = '8000'.
    append <fieldname>..
    similiarly add all the ranges that you need to include as default and in your select statement use the IN operator inthe where clause to include the range.
    If using range replacethe select-option with the range statement.
    Thanks.

  • At selection-screen output and  at selection-screen on

    Hi Experts,
    I had coded in both at selection-screen output for disabling input of certain fields and at selection-screen for validation like this:
    AT SELECTION-SCREEN output.
      IF p_amt = 'X'.
        LOOP AT SCREEN.
          CASE screen-name.
            WHEN 'P_AMT'.
              screen-input = '1'.
            WHEN 'P_TST'.
              screen-input = '1'.
            WHEN 'P_B4C'.
              screen-input = '1'.
            WHEN 'P_AFC'.
              screen-input = '1'.
            WHEN 'P_COM'.
              screen-input = '1'.
            WHEN 'P_COM1'.
              screen-input = '1'.
            WHEN 'P_COM2'.
              screen-input = '1'.
            WHEN OTHERS.
              screen-input = '0'.
          ENDCASE.
          MODIFY SCREEN.
        ENDLOOP.
      ENDIF.
      IF p_amt = 'X'.
        LOOP AT SCREEN.
          CASE screen-name.
            WHEN 'P_AMT'.
              screen-input = '1'.
            WHEN 'P_TST'.
              screen-input = '1'.
            WHEN 'P_B4C'.
              screen-input = '1'.
            WHEN 'P_AFC'.
              screen-input = '1'.
            WHEN 'P_COM'.
              screen-input = '1'.
            WHEN 'P_COM1'.
              screen-input = '1'.
            WHEN 'P_COM2'.
              screen-input = '1'.
            WHEN OTHERS.
              screen-input = '0'.
          ENDCASE.
          MODIFY SCREEN.
        ENDLOOP.
      ENDIF.
      IF p_pdf = 'X'.
        LOOP AT SCREEN.
          CASE screen-name.
            WHEN 'P_PDF'.
              screen-input = '1'.
            WHEN 'P_TST'.
              screen-input = '1'.
            WHEN 'P_PATH'.
              screen-input = '1'.
            WHEN OTHERS.
              screen-input = '0'.
          ENDCASE.
          MODIFY SCREEN.
        ENDLOOP.
      ENDIF.
      IF p_afc = 'X'.
        LOOP AT SCREEN.
          CASE screen-name.
            WHEN 'P_TST'.
              screen-input = '1'.
            WHEN 'S_FID-LOW' OR 'S_FID-HIGH'.
              screen-input = '0'.
            WHEN 'S_ORG-LOW' OR 'S_ORG-HIGH'.
              screen-input = '0'.
            WHEN 'S_OFF-LOW' OR 'S_OFF-HIGH'.
              screen-input = '0'.
            WHEN 'S_DAT-LOW' OR 'S_DAT-HIGH'.
              screen-input = '0'.
          ENDCASE.
          MODIFY SCREEN.
        ENDLOOP.
      ENDIF.
    AT selection-screen on block b5.
    if p_tst is initial.
      message text-016 type 'E'.
    endif.
    AT selection-screen on block b2.
    if p_amt ne 'X' and p_pdf ne 'X'.
    if s_fid is initial and s_org is initial.
    message text-000 type 'E'.
    endif.
    if s_dat is initial.
    message text-000 type 'E'.
    endif.
    endif.
    when i comment out at selection-screen validations the input is disabled for the screen fields as set, else the validations are executed first.
    Any solution for this???
    Thanks in advance.

    AT SELECTION-SCREEN
    Syntax
    AT SELECTION-SCREEN selscreen_event.
    Effect
    This statement defines event blocks for different events selscreen_event that are triggered by the ABAP runtime environment during selection screen processing.
    Selection screen events occur immediately before sending a selection screen and after certain user actions on a displayed selection screen. They assist in selection screen processing in the ABAP program.
    AT SELECTION-SCREEN is triggered at least twice during actions on selection screens that are linked into another selection screen as a subscreen - first for the linked selection screen itself, and then for the linking selection screens.
    Note
    The event blocks after AT SELECTION-SCREEN are implemented internally as procedures. Declarative statments in these event blocks create local data.

  • How to handle this scenario in selection screen?

    hi friends...i have 2 radio-buttons (2 parameter fields below each) in one group..the need when one radio button is checked, i need two parameter fields below it to be input enabled and the other to be disabled, if another radio button is checked, then the former two will be disabled and the other two parameter fields to be input enabled..no problems with this..i have written this functionality in at selection-screen output..i want to make each 1 parameter in the two groups to be mandatory..as using obligatory gives problems during at selection-screen output event, i want to achieve this functionality in some other event...i have tried the same in At selection screen on para_1 and at selection screen on para_2 fields, but am not able to achieve the desired functionality..by default the first radio button is checked, if the user wants to click the second radio button, At selection screen on para_1 event gets triggered and it throws the error msg. for the first one & vice versa...can't handle this in start-of-selection event also, as it gives the error msg. in a blank new screen..how to achieve it??
    i have checked quite a few SDN threads, but doesn't answer my question
    regards,
    Sathish R

    Hi,
    I think you cannot proceed with obligatory statement as it will be triggered before theselection screen events.
    You may check the code below.
    PARAMETERS: r1  RADIOBUTTON GROUP rad1 USER-COMMAND abc.
    PARAMETERS p1(5).    ( maintained as obligatory)
    PARAMETERS p2(5).
    PARAMETERS  r2  RADIOBUTTON GROUP rad1.
    PARAMETERS p3(5).       ( maintained as obligatory)
    PARAMETERS p4(5).
    INITIALIZATION.
      r1 = 'X'.
    AT SELECTION-SCREEN OUTPUT.
      IF r1 = 'X'.
        LOOP AT SCREEN.
          IF screen-name = 'P4'.
            screen-active = 0.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ELSEIF r2 = 'X'.
        LOOP AT SCREEN.
          IF screen-name = 'P2'.
            screen-active = 0.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ENDIF.
    AT SELECTION-SCREEN .
      IF p1 IS INITIAL AND sy-ucomm NE 'ABC'.
        MESSAGE 'Enter the obligatory value' TYPE 'S' DISPLAY LIKE 'E'.
      ENDIF.
      IF p3 IS INITIAL AND sy-ucomm NE 'ABC'.
        MESSAGE 'Enter the  obligatory value' TYPE 'S' DISPLAY LIKE 'E'.
      ENDIF.
    Hope this will help you.
    Regards,
    Smart Varghese

  • How to call user fuction in select statement.

    hi,
    i am facing some problem.How to call user functions in select statement.please send me answer with example.
    Thanks
    Gopal

    Locations to Call User-Defined Functions
    • Select list of a SELECT command
    • Condition of the WHERE and HAVING clauses
    • CONNECT BY, START WITH, ORDER BY, and GROUP
    BY clauses
    • VALUES clause of the INSERT command
    • SET clause of the UPDATE command
    Restrictions on Calling Functions from SQL Expressions
    To be callable from SQL expressions, a user-defined
    function must:
    • Be a stored function
    • Accept only IN parameters
    • Accept only valid SQL data types, not PL/SQL
    specific types, as parameters
    • Return data types that are valid SQL data types,
    not PL/SQL specific types
    • Functions called from SQL expressions cannot
    contain DML statements.
    • Functions called from UPDATE/DELETE statements
    on a table T cannot contain DML on the same table
    T.
    • Functions called from an UPDATE or a DELETE
    statement on a table T cannot query the same table.
    • Functions called from SQL statements cannot
    contain statements that end the transactions.
    • Calls to subprograms that break the previous
    restriction are not allowed in the function.
    jeneesh                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

Maybe you are looking for

  • Error in checking a primary file

    Hi , I am trying to use the CHECKIN_UNIVERSAL idcservice froma standalone java class. I have appeneded the following xml string in my request and trying to use a primary file from my local m/c. <code> requestString = "<?xml version='1.0' ?><SOAP-ENV:

  • Adobe AIR 1.5 Update success unclear

    After installing the Adobe AIR 1.5 Update for Fireworks CS4 on my Mac OS X 10.5.6 machine, the installed version of Fireworks is still set at 10.0.0.495. This version string appears in the both the About box and in the Finder Get Info window, despite

  • Turn off automatic update

    I don't have time to read through your site for the answer to this problem. I don't allow automatic updates and I get very annoyed when I keep getting popups from firefox wanting me to allow you to update firefox on my computer. I read enough here to

  • System.loadLibrary works in 1.3.1 but not in 1.2.2

    I Have a basic hello world application on Sun Solaris 7 that calls C++ from Java using JNI. The code works well on 1.3.1, but when I recompile it under 1.2.2 and run I get the following exception when I call System.loadLibrary to load my shared libra

  • Dvorak layout for Carbon x1

    Hi, I've recently purchase a Carbon X1 2015 edition, is there some place I can purchase a dvorak layout for the keyboard? Thanks,