Dialog Programming......its urgent

Hi Guys
  I have a requirement like this
i have to create a z* table similar to mara and i will take 5 fields of mara.
Suppose there is two sreens designed using SE51
1- one contain three buttons as CREATE,DISPLAY,CHANGE
2- second contain 5 text fields to enter the value and one save button.
now if i will click on the create button it will display the second screen where after entering the appropriate data if i will press save than it would save in the ztable.
again if i will press the display button it will go to the second screen and display the data in the text fields.
Any kind of suggestion is welcome.If anybody have face such kind of issue than he can share with me.
Thanks a lot to all
Mrutyun

Hi Mrityunjaya,
I think this would help.
On user command of the first screen..(PAI)
module user_command_1200 input.
  case ok_code_1200.
    when 'CREA'.
      call screen 1201.
   when 'DISP'.
       call screen 1202.
    when 'SAV1'.
      insert zmara
  endcase.
endmodule.                 " USER_COMMAND_1200  INPUT
Hope I understood the issue correct.
If it helps then good otherwise plz state the issue once again, focussing on what exactly is the issue.
Regards,
Suruchi

Similar Messages

  • How to stop the get pernr in program    ITS URGENT......................

    hi all,
    i want to stop the get pernr after some lines and want to run the remaining lines of the programm which is not in logical database.
    ITS URGENT.....
    Thx in advance
    Sunil

    Hi,
    Try the REJECT statement followed by the name of the logical database.
    Example:
    REJECT 'PERNR'.
    Don't forget to assign points and close the thread when you are finished.
    Best regards,
    Guillaume

  • !!!! Urgent !!!!!!!!Dialog Programming

    In Dialog Programming i have 3 fields, if one field is validated if it is true the next two fields should become gray,so no one can enter the values in those two fields how can i do it.

    HI,
    Go thru this docu.
    <b>Changing The Screen During Runtime</b>
    The attributes are assigned to the screen field when the screen is designed in full screen editor.  Such kind of assignment is static, which means that these attributes are fixed. But many times the need to change the attributes of the screen arises. And this has to be done during runtime.
    Need To Change Screen
    There can be a requirement in the transaction that, certain fields on the screen
    Appear only in certain conditions.
    Are in Change/display mode according to user inputs
    Become mandatory subject to specific inputs.
    Changes its format depending upon certain conditions.
    Modifying the screen
    At the runtime, attributes for each screen field is stored in system defined internal table, with header line, called as SCREEN TABLE. It contains name of field and its attributes. This tab le can be modified during the runtime i.e. through module pool program. Screen table has following fields:
    Field Name           Length          Description
    NAME               30               Name of screen field
    GROUP1          3               Field belongs to field group1
    GROUP2          3               Group 2
    GROUP3          3               Group 3
    GROUP4          3                  Group 4
    ACTIVE          1               Hide/Show
    REQUIRED          1               Field input is mandatory                         
    INPUT          1               Enable/Disable
    OUTPUT          1               Field for display only
    INTENSIFIED     1               Field is highlighted.
    INVISIBLE          1               Field is suppressed.
    LENGTH          1               Field output length is reduced
    DISPLAY 3D          1               Field is displayed with 3-D Frame
    VALUE_HELP     1                             Field is displayed with Value help
    E.g., SCREEN-ACTIVE     = 0   has the same effect as the following statements.
            SCREEN- INPUT       = 0.
            SCREEN-OUTPUT    = 0.
            SCREEN-INVISIBLE = 1.
    The fields SCREEN-NAME and SCREEN-GROUP 1 through SCREEN-GROUP4 tell you which field and / or field group has the attributes.
    You can assign up to 4 groups to a field.
    You need to program screen modifications in module, which is processed during the event PROCESS BEFORE OUTPUT.
    `SCREEN’ is an internal table and, in order to change the field values, LOOP statement has to be used so that the header-line can be populated with the new values, changing the earlier values, the SCREEN table consisted for the specific screen. Finally the changed record in the header-line is NOT APPENDED, but is MODIFIED to the SCREEN table. That is, we first use `LOOP AT SCREEN’ and then assign the values. And finally PRIOR TO ENDLOPP give `MODIFY SCREEN’.
    PROCESS BEFORE OUTPUT.
    MODULE MODIFY_SCREEN OUTPUT.
    MODULE MODIFY_SCREEN.
      LOOP AT SCREEN.
        IF SCREEN-NAME = ‘SFLIGHT-CARRID’.
          SCREEN-INPUT = 1.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
    Thanks
    Sunil

  • Hi All, How we can handle a table control in bdc - in detail its urgent pls

    Hi All, How we can handle a table control in bdc - in detail its urgent. Please send me the explanation in detail.
    Thanks&regards.
    Bharat

    hi,
    Create Table Control
    • Step 1 (Create new structure for table control)
    Type is name of structure (ZTC_EKKO) and press create
    • Step 2 (Create Program)
    Goto transaction SE80(Object Navigator) -> Repository Browser -> Program.
    Enter your program name, please ensure that is begins with SAPMZ…… as this is a module pool (dialog program).
    Press enter to create, and press yes!
    Ensure that you create a top include, and press Enter.
    Accept the name created for the top include.
    Press Enter.
    Press Save
    • Step 3 (Create TOP include)
    Double click on the top include and enter following ABAP code:
    Tables: ZTC_EKKO.
    controls: tc100 type tableview using screen 100.
    data: ok_code type sy-ucomm.
    data: it_ekko type standard
    table of ZTC_EKKO initial size 0,
    wa_ekko type ZTC_EKKO.
    data: ok_code type sy-ucomm.
    Press Save and Activate
    • Step 4 (Create screen)
    Right click the program to create a screen 100 for the dialog. Enter Short description, set screen type to Normal and enter 0 or blank into Next screen. Then move to Element List tab and enter the OK code as OK_CODE (i.e. the same as what you declared in the top include with data: ok_code type sy-ucomm).
    • Step 5 (Create table control)
    Press the Layout button to bring up the screen painter editor.
    Press table control button and drag it on to the screen, enter the name of table control created in TOP include (TC100). Now press the yellow button for attributes and set the table control as below options
    • Step 6 (Populate table control )
    Press the orange button (Fields). On the next screen enter ZTC_EKKO and press the ‘Get from Dict’ button. Select the fields you want (all) and press enter. Now drag them onto your Table Control.
    Below is the result, there will been syntax errors if we check now! So Save and go back into the flow logic tab.
    • Step 7 (Create flow control )
    Within the flow logic of screen 100 and create two modules, one to select the data from the database and the other to move the selected fields into the table control. Also insert the two loop statements to populate and retrieve the lines of the table control.
    PROCESS BEFORE OUTPUT.
    MODULE STATUS_0100.
    module data_retrieval.
    loop at it_ekko into wa_ekko with control TC100.
    module populate_screen.
    endloop.
    PROCESS AFTER INPUT.
    loop at it_ekko.
    endloop.
    MODULE USER_COMMAND_0100.
    Double click the module data_retrieval to create and click yes to get past the popup. Ensure that a new include is created to hold all the PBO modules (default). Press enter.
    Select 10 rows of data from the EKKO table and load into the internal table it_ekko. Go back to the flow logic to load this data into the Table Control.
    check this one
    REPORT ZCALL_TRANS_TAB1 .
    TABLES: LFA1,LFBK,lfb1.
    data: BEGIN OF it_vendor occurs 0,
    LIFNR LIKE LFA1-LIFNR,
    bukrs like lfb1-bukrs,
    END OF it_vendor.
    DATA: BEGIN OF IT_BANK occurs 0,
    LIFNR LIKE LFA1-LIFNR,
    BANKS LIKE LFBK-BANKS,
    BANKL LIKE LFBK-BANKL,
    BANKN LIKE LFBK-BANKN,
    koinh like lfbk-koinh,
    END OF IT_BANK.
    data: it_bdcdata like bdcdata occurs 0 with header line.
    data: it_messages like bdcmsgcoll occurs 0 with header line.
    *selection screen.
    selection-screen: begin of block b1 with frame.
    parameters: p_file like rlgrap-filename default 'c:/vendor.txt'
    obligatory.
    parameters: p_file1 like rlgrap-filename default 'c:/xyz.txt'
    obligatory.
    selection-screen: end of block b1.
    *at selection screen.
    at selection-screen on value-request for p_file.
    perform f4_help using p_file.
    at selection-screen on value-request for p_file1.
    perform f4_help1 using p_file1.
    *start of selection
    start-of-selection.
    *******uploading file
    perform upload_file using p_file P_FILE1.
    ******open session.
    perform populate_data.
    *& Form f4_help
    form f4_help using p_p_file.
    data: l_file type ibipparms-path.
    call function 'F4_FILENAME'
    importing
    file_name = l_file.
    p_file = l_file.
    endform. " f4_help
    *& Form POPULATE_DATA
    form populate_data .
    DATA: L_STRING TYPE STRing.
    DATA: L_COUNTER(2) TYPE n.
    loop at it_vendor.
    perform bdc_dynpro using 'SAPMF02K' '0106'.
    perform bdc_field using 'BDC_CURSOR'
    'RF02K-D0130'.
    perform bdc_field using 'BDC_OKCODE'
    '/00'.
    perform bdc_field using 'RF02K-LIFNR'
    it_vendor-lifnr.
    perform bdc_field using 'RF02K-BUKRS'
    it_vendor-bukrs.
    perform bdc_field using 'RF02K-D0130'
    'X'.
    perform bdc_dynpro using 'SAPMF02K' '0130'.
    perform bdc_field using 'BDC_CURSOR'
    'LFBK-bankn(03)'.
    perform bdc_field using 'BDC_OKCODE'
    '=UPDA'.
    *********bank details
    CLEAR l_COUNTER.
    LOOP AT IT_BANK WHERE LIFNR = IT_VENDOR-LIFNR.
    l_COUNTER = l_COUNTER + 1.
    clear l_string.
    CONCATENATE 'lfbk-banks(' l_counter ')' into l_string.
    perform bdc_field using l_string
    it_bank-banks.
    clear l_string.
    CONCATENATE 'lfbk-bankl(' l_counter ')' into l_string.
    perform bdc_field using l_string
    it_bank-bankl.
    clear l_string.
    CONCATENATE 'lfbk-bankn(' l_counter ')' into l_string.
    perform bdc_field using l_string
    it_bank-bankn.
    endloop.
    ******CALL TRANSACTION.
    call transaction 'FK02' using it_bdcdata mode 'A'
    messages into it_messages.
    write:/ sy-subrc.
    perform format_messages.
    clear it_bdcdata.
    refresh it_bdcdata.
    endloop.
    endform. " POPULATE_DATA
    *& Form FORMAT_MESSAGES
    form format_messages .
    data: l_msg(100).
    loop at it_messages.
    call function 'FORMAT_MESSAGE'
    exporting
    id = it_messages-msgid
    lang = sy-langu
    no = it_messages-msgnr
    v1 = it_messages-msgv1
    v2 = it_messages-msgv2
    v3 = it_messages-msgv3
    v4 = it_messages-msgv4
    importing
    msg = l_msg
    exceptions
    not_found = 1
    others = 2
    write:/ l_msg.
    endloop.
    endform. " FORMAT_MESSAGES
    *& Form bdc_dynpro
    form bdc_dynpro using value(p_program)
    value(p_screen).
    it_bdcdata-program = p_program.
    it_bdcdata-dynpro = p_screen.
    it_bdcdata-dynbegin = 'X'.
    append it_bdcdata.
    clear it_bdcdata.
    endform. " bdc_dynpro
    *& Form bdc_field
    form bdc_field using value(p_fnam)
    value(p_fval).
    it_bdcdata-fnam = p_fnam.
    it_bdcdata-fval = p_fval.
    append it_bdcdata.
    clear it_bdcdata.
    endform. " bdc_field
    *& Form upload_file
    form upload_file using p_p_file
    p_p_file1.
    CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
    CODEPAGE = ' '
    FILENAME = P_P_FILE
    FILETYPE = 'DAT'
    HEADLEN = ' '
    LINE_EXIT = ' '
    TRUNCLEN = ' '
    USER_FORM = ' '
    USER_PROG = ' '
    DAT_D_FORMAT = ' '
    IMPORTING
    FILELENGTH =
    TABLES
    data_tab = IT_VENDOR
    EXCEPTIONS
    CONVERSION_ERROR = 1
    FILE_OPEN_ERROR = 2
    FILE_READ_ERROR = 3
    INVALID_TYPE = 4
    NO_BATCH = 5
    UNKNOWN_ERROR = 6
    INVALID_TABLE_WIDTH = 7
    GUI_REFUSE_FILETRANSFER = 8
    CUSTOMER_ERROR = 9
    NO_AUTHORITY = 10
    OTHERS = 11
    IF sy-subrc <> 0.
    MESSAGE I000(ZZ) WITH 'UNABLE TO UPLOAD'.
    STOP.
    ENDIF.
    *******UPLOADING BANK DETAILS
    CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
    CODEPAGE = ' '
    FILENAME = P_P_FILE1
    FILETYPE = 'DAT'
    HEADLEN = ' '
    LINE_EXIT = ' '
    TRUNCLEN = ' '
    USER_FORM = ' '
    USER_PROG = ' '
    DAT_D_FORMAT = ' '
    IMPORTING
    FILELENGTH =
    TABLES
    data_tab = IT_BANK
    EXCEPTIONS
    CONVERSION_ERROR = 1
    FILE_OPEN_ERROR = 2
    FILE_READ_ERROR = 3
    INVALID_TYPE = 4
    NO_BATCH = 5
    UNKNOWN_ERROR = 6
    INVALID_TABLE_WIDTH = 7
    GUI_REFUSE_FILETRANSFER = 8
    CUSTOMER_ERROR = 9
    NO_AUTHORITY = 10
    OTHERS = 11
    IF sy-subrc <> 0.
    MESSAGE I000(ZZ) WITH 'UNABLE TO UPLOAD'.
    STOP.
    ENDIF.
    endform. " upload_file
    *& Form f4_help1
    -->P_P_FILE1 text
    form f4_help1 using p_p_file1.
    data:l_file1 type ibipparms-path.
    CALL FUNCTION 'F4_FILENAME'
    IMPORTING
    FILE_NAME = l_file1.
    p_file1 = l_file1.
    endform. " f4_help1
    http://sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
    Regards,
    Sankar

  • What is difference between report programming and dialog programming?

    hi,
    what is difference between report programming and dialog programming? plz provide some example code
    bye

    ABAP programming
    Basically reports are used to read database and represent the results in lists.
    Reports are collections of processing blocks that the system calls depending on events.
    We can use reports to evaluate data from database tables.
    Reports are stand alone programs and controlled by events.
    A report itself never creates events
    steps in report:
    Processing the selection screen
    Reading the database
    Evaluating the data and creating lists
    Outputting a list.
    1st u write simple logics, after that u can enhance the code as step by step.
    http://venus.imp.mx/hilario/Libros/TeachYrslfAbap4/index.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/d1/802cfc454211d189710000e8322d00/frameset.htm
    http://www.sapdev.co.uk/reporting/reportinghome.htm
    Dialog Programming
    Structure of a Dialog Program
    A dialog program consists of the following basic components:
    Screens (dynpros)
    Each dialog in an SAP system is controlled by dynpros. A dynpro (DYnamic PROgram) consists of a screen and its flow logic and controls exactly one dialog step. The flow logic determines which processing takes place before displaying the screen (PBO-Process Before Output) and after receiving the entries the user made on the screen (PAI-Process After Input).
    The screen layout fixed in the Screen Painter determines the positions of input/output fields, text fields, and graphical elements such as radio buttons and checkboxes. In addition, the Menu Painter allows to store menus, icons, pushbuttons, and function keys in one or more GUI statuses. Dynpros and GUI statuses refer to the ABAP/4 program that control the sequence of the dynpros and GUI statuses at runtime.
    ABAP/4 module pool
    Each dynpro refers to exactly one ABAP/4 dialog program. Such a dialog program is also called a module pool, since it consists of interactive modules. The flow logic of a dynpro contains calls of modules from the corresponding module pool. Interactive modules called at the PBO event are used to prepare the screen template in accordance to the context, for example by setting field contents or by suppressing fields from the display that are not needed. Interactive modules called at the PAI event are used to check the user input and to trigger appropriate dialog steps, such as the update task.
    All dynpros to be called from within one transaction refer to a common module pool. The dynpros of a module pool are numbered. By default, the system stores for each dynpro the dynpro to be displayed next. This dynpro sequence or chain can be linear as well as cyclic. From within a dynpro chain, you can even call another dynpro chain and, after processing it, return to the original chain.
    Check this link for basics.
    http://sap.mis.cmich.edu/sap-abap/abap09/index.htm
    Check this link for Dialog Programming/Table Control
    http://www.planetsap.com/Tips_and_Tricks.htm#dialog
    Check this SAP Help for Dialog Program doc.
    http://help.sap.com/saphelp_nw04/helpdata/en/9f/db9cdc35c111d1829f0000e829fbfe/content.htm
    Check this SAP Help link for Subscreens.
    http://help.sap.com/saphelp_nw70/helpdata/en/9f/dbabfe35c111d1829f0000e829fbfe/content.htm
    Check this link for subscreen demo program.
    http://abapcode.blogspot.com/2007/05/demo-program-to-create-subscreen-in.html
    Also check this link too.
    http://abapcode.blogspot.com/2007/06/dialog-programming-faq.html
    http://help.sap.com/saphelp_nw04/helpdata/en/9f/db9cdc35c111d1829f0000e829fbfe/frameset.htm
    http://sap.mis.cmich.edu/sap-abap/abap09/sld004.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/52/670ba2439b11d1896f0000e8322d00/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/52/670c17439b11d1896f0000e8322d00/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/52/670c17439b11d1896f0000e8322d00/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/9f/db9ccf35c111d1829f0000e829fbfe/frameset.htm
    http://abapprogramming.blogspot.com/

  • Making attributes of field dynamic in dialog program in layout editor.

    hi,
    to make a field required or possible or hidden, we define its attributes in attributes in layout editor.
    is it possible to make attributes of fields that we define in layout editor dynamic ?
    if functional people want to make some field non-mandatory or mandatory then they go in configuration, and do it. so does this mean that the attributes of the fields that we define in layout editor during dialog program can be made dynamic.
    how is this possible ? because attributes are selected using dropdown, its not a code ?
    please help in solving this mystery...

    Screen Modifications --
    <u>demo_dynpro_modify_simple
    demo_dynpro_modify_screen</u>
    <b><u>Please dont forget to reward points</u></b>
    Sudheer

  • Hi All,Please send me abap-hr material .Its urgent please.

    Hi All,Please send me abap-hr material .Its urgent please.

    These are the FAQ's that might helps you
    http://www.sap-img.com/human/hr-faq.htm
    http://www.sapgenie.com/faq/hr.htm
    http://www.sapgenie.com/sapfunc/index.htm
    http://www.sap-img.com/abap/sample-hr-reports-allocate-petrol-allowance.htm
    http://www.sap-img.com/hr021.htm
    http://www.sap-img.com/human/hr-faq.htm
    http://www.sap-img.com/human/finding-the-list-of-hr-module-tables.htm
    additional info......
    Download the ABAP e-book for HR in the below link under the section 'Free ABAP eBook Download'
    http://www.sap-img.com
    Also have a look at the following links-
    http://www.sapbrain.com/TUTORIALS/FUNCTIONAL/HR_tutorial.html
    http://www.sapdevelopment.co.uk/hr/hrhome.htm
    http://planetsap.com/index.htm
    http://www.atomhr.com/library_full.htm
    http://www.sap-basis-abap.com/saphr.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/60/d8d8c7576311d189270000e8322f96/frameset.htm
    http://www.sapfriends.com/sapstuff.html
    http://www.atomhr.com/know_preview/Reading_Payroll_Results_with_ABAP.htm
    http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci1030179,00.html?track=NL-142&ad=500911#Payroll
    http://www.sap-press.com/product.cfm?account=&product=H967
    http://www.sapdevelopment.co.uk/hr/payres_abap.htm
    http://www.sapdevelopment.co.uk/hr/payres_tcode.htm
    http://help.sap.com/printdocu/core/Print46c/en/Data/Index_en.htm
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPA/PAPA.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPD/PAPD.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_BASICS.pdf
    http://www.atomhr.com/training/Technical_Topics_in_HR.htm
    http://www.planetsap.com/hr_abap_main_page.htm
    you can see some Standard Program examples in this one..
    http://www.sapdevelopment.co.uk/programs/programshr.htm
    http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci1030179,00.html?Offer=SAlgwn12604#Certification

  • Hi All requirement on Purchase Order.Its Urgent

    Hi All,
            Pls provide me the soure code for the following requirement ASAP. Its urgent.
    Program: Z_PO_PRINT_MAIL
    Transaction: ZPOP
    Purchase order number: (should be a parameter not a select option) (Code the lookup using search help MEKK)
    Radio button for:     1. Print Preview
                   2. Print
                   3. E-mail
    Additional parameters based on above selection:
    1.     No additional parameters needed
    2.     Printer (code the F4 to search printers)(default user’s default printer)
    3.     E-mail address, cc (should also have same validations as e-mail address)
    Description:
    On pressing enter, use the Purchase order number to look up vendor number and name and display either to the right or below the purchase order number.
    Vendor Number: EKPO-LIFNR
    Vendor Name:    LFA1-NAME1
    1.     Print Preview: Use function ME_DISPLAY_PURCHASE_DOCUMENT with 2 parameters only:
    I_EBELN = PO Number
    I_PREVIEW = ‘X’
    2.     Print:  For this we have to do a BDC.Use transaction ME9F. Enter the purchase order number, blank out the rest. Select the first message, hit ‘Message details’. Enter a new message via Edit>new Entries. For new entries, you will need to enter ‘NEU’ for Output type with Medium 1 (Print output). Hit enter. Select the message and click on further data. Set dispatch time to 4. Green arrow back. Select the message and click on “Communication” method. Enter the ‘Logical destination’ as the printer, select ‘Print Immediately’ and ‘Release after output’. Green arrow back and save.
    3.     E-mail: Use the following function modules:
    ECP_PO_OTF_CREATE
    CONVERT_OTF_2_PDF
    SO_NEW_DOCUMENT_ATT_SEND_API1

    Hi,
    You can explore following link for more details;
    http://www.sap-basis-abap.com/sapmo017.htm
    http://www.erpgenie.com/sap/sapfunc/purchasing.htm
    Bye,
    Muralidhara

  • Maximize Purchase Order -- Error -- Its Urgent!!!!

    Hai To All,
                  Iam customizing Purchase Order Form. There iam adding one button near cancel button. If i maximum purchase order form i got the following error and SAP Application is closed.
    The instruction at "0x77fcb333" referenced memory at "0x000c0101". The memeory could not be "written".
    Click on OK to terminate the program
    Click on CANCEL to debug the program
    OK           CANCEL
    Can anyone help me........... Its Urgent
    Regards,
    Anitha
    Edited by: ani nazir on Mar 27, 2008 11:43 AM

    Hello Petr,
             S where i change place also its showing error.
    The following code i used to place the button
    oItem = PO_Frm.Items.Add("rm", SAPbouiCOM.BoFormItemTypes.it_BUTTON)
                oItem.Left = PO_Frm.Items.Item("2").Left + 75 '150 '
                oItem.Width = PO_Frm.Items.Item("2").Width  '65 'PO_Frm.Items.Item("51").Width
                oItem.Height = PO_Frm.Items.Item("2").Height '20 '
                oItem.Top = PO_Frm.Items.Item("2").Top + 10 '505 '
                oItem.Visible = True
                oItem.Enabled = True
                Dim d As SAPbouiCOM.Button = oItem.Specific
                d.Caption = "RateMaster"
    Regards,
    Anitha

  • How to create Background job for Dialog program

    Hi Experts,
    I have copied Standard tcode to Z-tcode (CS12 tcode).
    Now my requirement is to create background job for this program (but program is not a 'E' type its 'I').
    How we can schedule Dialog program to Background.
    Pls suggest me.
    Regards
    SK

    Hi do as below :
    Reefer below :
    Bakcground Job Creation
    You will have to submit your report using Submit statement ,
    then inside the submitted report write open_job.
    Regards,
    Uma

  • Field value not updated in Dialog Programming

    Hi experts
              My problem is when i change the field value in dialog programming, the text value is not updated, its showing the same value what exist in database.
       I have done coding as follows, what i need to change in coding, Pls give me the suggestion.
    PROCESS BEFORE OUTPUT.
    MODULE STATUS_1200.
    PROCESS AFTER INPUT.
    CHAIN .
        FIELD :  zrecpt-zrno.
        MODULE vali_zrno ON CHAIN-INPUT.
      ENDCHAIN.
    module header_data10.
    MODULE STATUS_1200 OUTPUT.
        SET PF-STATUS 'ZRECT'.
        SET TITLEBAR 'ZRECT'.
    ENDMODULE.              
    MODULE vali_zrno INPUT.
    if zrecpt-zrno  is not initial.
        select single * from zrecpt
                        where zrno = zrecpt-zrno.
    endif.
    ENDMODULE.
    MODULE header_data10 INPUT.
    CLEAR : it_zrecpt.
      REFRESH : it_zrecpt.
      MOVE-CORRESPONDING zrecpt TO it_zrecpt.
      APPEND it_zrecpt.
    ENDMODULE.
    Thanks in advance.
    Regards
    Rajaram

    Hello...
    IN PAI,,
    You were not updating into any database..
    you were just appending to an internal table...
    now either move the internal table values to the database ...
    or you can simply move from the values entered...[text boxes ]
    pls chk.....

  • Calling dialog program from report

    Hi All,
    I need to call dialog program from report and do not want the initial screen to be shown and execute the dialog program. can this be possible, if yes please let me know this to do this, when I tried using leave to transaction its showing the initial dialog screen.
    Thanks in advane
    jog

    Hi,
    Create a Z trnsaction Code for the Transaction you want to call.
    Go to SE93. Give Transaction name and click on create.
    Select start object as 'Transaction with Variant' or 'Transaction with Parameter'.
    On second screen give transaction name and check the <b>check box for 'Skip initial screen'</b>.
    Find out the initial screen for the transaction and mention it.
    Now, you can call this Z transaction in your program.

  • Table control...? its urgent

    Hi friends,
    Can anyone gve me example table control program..
    My requirement is I have to display blank table control.....but when user enetrs value.. and submits it should be added to the inetrnal table in my program please help......
    Also if he wants to see the records in table control..which he enetered earlier the table should be displayed as populated..
    Please help its urgent....points will be rewarded....

    Seet he following ex:
    Created table control using wizard.
    *& Module pool       ZTEST_TBLCTRL
    PROGRAM  ZTEST_TBLCTRL.
    ***&SPWIZARD: DATA DECLARATION FOR TABLECONTROL 'TC1'
    *&SPWIZARD: DEFINITION OF DDIC-TABLE
    TABLES:   ZFG_SRNO, ZFIH0004.
    *&SPWIZARD: TYPE FOR THE DATA OF TABLECONTROL 'TC1'
    *TYPES: BEGIN OF T_TC1,
            ZSRNO LIKE ZFG_SRNO-ZSRNO,
            SCRNAME LIKE ZFIH0004-SCRNAME,
          END OF T_TC1.
    *TYPES: BEGIN OF T_TC1.
    STRUCTURE ZFG_SRNO.
          END OF T_TC1.
    *&SPWIZARD: INTERNAL TABLE FOR TABLECONTROL 'TC1'
    *DATA:     G_TC1_ITAB   TYPE T_TC1 OCCURS 0 WITH HEADER LINE,
             G_TC1_WA     TYPE T_TC1. "work area
    DATA:     G_TC1_ITAB   LIKE ZFG_SRNO OCCURS 0 WITH HEADER LINE,
              G_TC1_WA     LIKE G_TC1_ITAB. "work area
    DATA:     G_TC1_COPIED.           "copy flag
    *&SPWIZARD: DECLARATION OF TABLECONTROL 'TC1' ITSELF
    CONTROLS: TC1 TYPE TABLEVIEW USING SCREEN 0100.
    *&SPWIZARD: LINES OF TABLECONTROL 'TC1'
    DATA:     G_TC1_LINES  LIKE SY-LOOPC.
    DATA:     OK_CODE LIKE SY-UCOMM,
              S_CODE LIKE SY-UCOMM,
              MARK.
    DATA: T1(10).
    *&SPWIZARD: OUTPUT MODULE FOR TC 'TC1'. DO NOT CHANGE THIS LINE!
    *&SPWIZARD: COPY DDIC-TABLE TO ITAB
    MODULE TC1_INIT OUTPUT.
    IF G_TC1_COPIED IS INITIAL.
    *&SPWIZARD: COPY DDIC-TABLE 'ZFG_SRNO'
    *&SPWIZARD: INTO INTERNAL TABLE 'g_TC1_itab'
       SELECT * FROM ZFG_SRNO
          INTO CORRESPONDING FIELDS
          OF TABLE G_TC1_ITAB.
       G_TC1_COPIED = 'X'.
       REFRESH CONTROL 'TC1' FROM SCREEN '0100'.
    IF T1 <> SPACE.
    G_TC1_ITAB-ZSRNO = T1.
    CLEAR T1.
    APPEND G_TC1_ITAB.
        REFRESH CONTROL 'TC1' FROM SCREEN '0100'.
    ENDIF.
    *TC1-TOP_LINE = 1.
    ENDIF.
    ENDMODULE.
    *&SPWIZARD: OUTPUT MODULE FOR TC 'TC1'. DO NOT CHANGE THIS LINE!
    *&SPWIZARD: MOVE ITAB TO DYNPRO
    MODULE TC1_MOVE OUTPUT.
      MOVE-CORRESPONDING G_TC1_WA TO ZFG_SRNO.
           if sy-subrc ne 0.
    *append G_TC1_WA to G_TC1_ITAB.
    *endif.
    READ TABLE G_TC1_ITAB INDEX TC1-CURRENT_LINE.
    IF SY-SUBRC = 0.
        G_TC1_WA-ZSRNO = G_TC1_ITAB-ZSRNO.
    ENDIF.
    MOVE-CORRESPONDING G_TC1_ITAB TO ZFG_SRNO.
    REFRESH CONTROL 'TC1' FROM SCREEN '8001'.
      tc1-lines = G_TC1_LINES + 100.
    ENDMODULE.
    *&SPWIZARD: OUTPUT MODULE FOR TC 'TC1'. DO NOT CHANGE THIS LINE!
    *&SPWIZARD: GET LINES OF TABLECONTROL
    MODULE TC1_GET_LINES OUTPUT.
      G_TC1_LINES = SY-LOOPC.
    ENDMODULE.
    *&SPWIZARD: INPUT MODULE FOR TC 'TC1'. DO NOT CHANGE THIS LINE!
    *&SPWIZARD: MODIFY TABLE
    MODULE TC1_MODIFY INPUT.
    *break-point.
    MOVE-CORRESPONDING ZFG_SRNO TO  G_TC1_ITAB.
    MODIFY G_TC1_ITAB INDEX TC1-CURRENT_LINE.
    G_TC1_COPIED = 'X'.
    REFRESH CONTROL 'TC1' FROM SCREEN '8001'.
      MOVE-CORRESPONDING ZFG_SRNO TO G_TC1_WA.
      MODIFY G_TC1_ITAB
        FROM G_TC1_WA
        INDEX TC1-CURRENT_LINE.
          G_TC1_COPIED = 'X'.
          if sy-subrc ne 0.
    append G_TC1_WA to G_TC1_ITAB.
    endif.
    *modify G_TC1_ITAB INDEX TC1-CURRENT_LINE.
    ENDMODULE.
    *&SPWIZARD: INPUT MODULE FOR TC 'TC1'. DO NOT CHANGE THIS LINE!
    *&SPWIZARD: PROCESS USER COMMAND
    MODULE TC1_USER_COMMAND INPUT.
      OK_CODE = SY-UCOMM.
      PERFORM USER_OK_TC USING    'TC1'
                                  'G_TC1_ITAB'
                                  'FLAG'
                         CHANGING OK_CODE.
      SY-UCOMM = OK_CODE.
    ENDMODULE.
      INCLUDE TABLECONTROL_FORMS                                         *
    *&      Form  USER_OK_TC                                               *
    FORM USER_OK_TC USING    P_TC_NAME TYPE DYNFNAM
                              P_TABLE_NAME
                              P_MARK_NAME
                     CHANGING P_OK      LIKE SY-UCOMM.
    &SPWIZARD: BEGIN OF LOCAL DATA----
       DATA: L_OK              TYPE SY-UCOMM,
             L_OFFSET          TYPE I.
    &SPWIZARD: END OF LOCAL DATA----
    *&SPWIZARD: Table control specific operations                          *
    *&SPWIZARD: evaluate TC name and operations                            *
       SEARCH P_OK FOR P_TC_NAME.
       IF SY-SUBRC <> 0.
         EXIT.
       ENDIF.
       L_OFFSET = STRLEN( P_TC_NAME ) + 1.
       L_OK = P_OK+L_OFFSET.
    *&SPWIZARD: execute general and TC specific operations                 *
       CASE L_OK.
         WHEN 'INSR'.                      "insert row
           PERFORM FCODE_INSERT_ROW USING    P_TC_NAME
                                             P_TABLE_NAME.
           CLEAR P_OK.
         WHEN 'DELE'.                      "delete row
           PERFORM FCODE_DELETE_ROW USING    P_TC_NAME
                                             P_TABLE_NAME
                                             P_MARK_NAME.
           CLEAR P_OK.
         WHEN 'P--' OR                     "top of list
              'P-'  OR                     "previous page
              'P+'  OR                     "next page
              'P++'.                       "bottom of list
           PERFORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME
                                                 L_OK.
           CLEAR P_OK.
        WHEN 'L--'.                       "total left
          PERFORM FCODE_TOTAL_LEFT USING P_TC_NAME.
        WHEN 'L-'.                        "column left
          PERFORM FCODE_COLUMN_LEFT USING P_TC_NAME.
        WHEN 'R+'.                        "column right
          PERFORM FCODE_COLUMN_RIGHT USING P_TC_NAME.
        WHEN 'R++'.                       "total right
          PERFORM FCODE_TOTAL_RIGHT USING P_TC_NAME.
         WHEN 'MARK'.                      "mark all filled lines
           PERFORM FCODE_TC_MARK_LINES USING P_TC_NAME
                                             P_TABLE_NAME
                                             P_MARK_NAME   .
           CLEAR P_OK.
         WHEN 'DMRK'.                      "demark all filled lines
           PERFORM FCODE_TC_DEMARK_LINES USING P_TC_NAME
                                               P_TABLE_NAME
                                               P_MARK_NAME .
           CLEAR P_OK.
        WHEN 'SASCEND'   OR
             'SDESCEND'.                  "sort column
          PERFORM FCODE_SORT_TC USING P_TC_NAME
                                      l_ok.
       ENDCASE.
    ENDFORM.                              " USER_OK_TC
    *&      Form  FCODE_INSERT_ROW                                         *
    FORM fcode_insert_row
                   USING    P_TC_NAME           TYPE DYNFNAM
                            P_TABLE_NAME             .
    &SPWIZARD: BEGIN OF LOCAL DATA----
       DATA L_LINES_NAME       LIKE FELD-NAME.
       DATA L_SELLINE          LIKE SY-STEPL.
       DATA L_LASTLINE         TYPE I.
       DATA L_LINE             TYPE I.
       DATA L_TABLE_NAME       LIKE FELD-NAME.
       FIELD-SYMBOLS <TC>                 TYPE CXTAB_CONTROL.
       FIELD-SYMBOLS <TABLE>              TYPE STANDARD TABLE.
       FIELD-SYMBOLS <LINES>              TYPE I.
    &SPWIZARD: END OF LOCAL DATA----
       ASSIGN (P_TC_NAME) TO <TC>.
    *&SPWIZARD: get the table, which belongs to the tc                     *
       CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
       ASSIGN (L_TABLE_NAME) TO <TABLE>.                "not headerline
    *&SPWIZARD: get looplines of TableControl                              *
       CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_LINES_NAME.
       ASSIGN (L_LINES_NAME) TO <LINES>.
    *&SPWIZARD: get current line                                           *
       GET CURSOR LINE L_SELLINE.
       IF SY-SUBRC <> 0.                   " append line to table
         L_SELLINE = <TC>-LINES + 1.
    *&SPWIZARD: set top line                                               *
         IF L_SELLINE > <LINES>.
           <TC>-TOP_LINE = L_SELLINE - <LINES> + 1 .
         ELSE.
           <TC>-TOP_LINE = 1.
         ENDIF.
       ELSE.                               " insert line into table
         L_SELLINE = <TC>-TOP_LINE + L_SELLINE - 1.
         L_LASTLINE = <TC>-TOP_LINE + <LINES> - 1.
       ENDIF.
    *&SPWIZARD: set new cursor line                                        *
       L_LINE = L_SELLINE - <TC>-TOP_LINE + 1.
    *&SPWIZARD: insert initial line                                        *
       INSERT INITIAL LINE INTO <TABLE> INDEX L_SELLINE.
       <TC>-LINES = <TC>-LINES + 1.
    *&SPWIZARD: set cursor                                                 *
       SET CURSOR LINE L_LINE.
    ENDFORM.                              " FCODE_INSERT_ROW
    *&      Form  FCODE_DELETE_ROW                                         *
    FORM fcode_delete_row
                   USING    P_TC_NAME           TYPE DYNFNAM
                            P_TABLE_NAME
                            P_MARK_NAME   .
    &SPWIZARD: BEGIN OF LOCAL DATA----
       DATA L_TABLE_NAME       LIKE FELD-NAME.
       FIELD-SYMBOLS <TC>         TYPE cxtab_control.
       FIELD-SYMBOLS <TABLE>      TYPE STANDARD TABLE.
       FIELD-SYMBOLS <WA>.
       FIELD-SYMBOLS <MARK_FIELD>.
    &SPWIZARD: END OF LOCAL DATA----
       ASSIGN (P_TC_NAME) TO <TC>.
    *&SPWIZARD: get the table, which belongs to the tc                     *
       CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
       ASSIGN (L_TABLE_NAME) TO <TABLE>.                "not headerline
    *&SPWIZARD: delete marked lines                                        *
       DESCRIBE TABLE <TABLE> LINES <TC>-LINES.
       LOOP AT <TABLE> ASSIGNING <WA>.
    *&SPWIZARD: access to the component 'FLAG' of the table header         *
         ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.
         IF <MARK_FIELD> = 'X'.
           DELETE <TABLE> INDEX SYST-TABIX.
           IF SY-SUBRC = 0.
             <TC>-LINES = <TC>-LINES - 1.
           ENDIF.
         ENDIF.
       ENDLOOP.
    ENDFORM.                              " FCODE_DELETE_ROW
    *&      Form  COMPUTE_SCROLLING_IN_TC
          text
         -->P_TC_NAME  name of tablecontrol
         -->P_OK       ok code
    FORM COMPUTE_SCROLLING_IN_TC USING    P_TC_NAME
                                           P_OK.
    &SPWIZARD: BEGIN OF LOCAL DATA----
       DATA L_TC_NEW_TOP_LINE     TYPE I.
       DATA L_TC_NAME             LIKE FELD-NAME.
       DATA L_TC_LINES_NAME       LIKE FELD-NAME.
       DATA L_TC_FIELD_NAME       LIKE FELD-NAME.
       FIELD-SYMBOLS <TC>         TYPE cxtab_control.
       FIELD-SYMBOLS <LINES>      TYPE I.
    &SPWIZARD: END OF LOCAL DATA----
       ASSIGN (P_TC_NAME) TO <TC>.
    *&SPWIZARD: get looplines of TableControl                              *
       CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_TC_LINES_NAME.
       ASSIGN (L_TC_LINES_NAME) TO <LINES>.
    *&SPWIZARD: is no line filled?                                         *
       IF <TC>-LINES = 0.
    *&SPWIZARD: yes, ...                                                   *
         L_TC_NEW_TOP_LINE = 1.
       ELSE.
    *&SPWIZARD: no, ...                                                    *
         CALL FUNCTION 'SCROLLING_IN_TABLE'
              EXPORTING
                   ENTRY_ACT             = <TC>-TOP_LINE
                   ENTRY_FROM            = 1
                   ENTRY_TO              = <TC>-LINES
                   LAST_PAGE_FULL        = 'X'
                   LOOPS                 = <LINES>
                   OK_CODE               = P_OK
                   OVERLAPPING           = 'X'
              IMPORTING
                   ENTRY_NEW             = L_TC_NEW_TOP_LINE
              EXCEPTIONS
                 NO_ENTRY_OR_PAGE_ACT  = 01
                 NO_ENTRY_TO           = 02
                 NO_OK_CODE_OR_PAGE_GO = 03
                   OTHERS                = 0.
       ENDIF.
    *&SPWIZARD: get actual tc and column                                   *
       GET CURSOR FIELD L_TC_FIELD_NAME
                  AREA  L_TC_NAME.
       IF SYST-SUBRC = 0.
         IF L_TC_NAME = P_TC_NAME.
    *&SPWIZARD: et actual column                                           *
           SET CURSOR FIELD L_TC_FIELD_NAME LINE 1.
         ENDIF.
       ENDIF.
    *&SPWIZARD: set the new top line                                       *
       <TC>-TOP_LINE = L_TC_NEW_TOP_LINE.
    ENDFORM.                              " COMPUTE_SCROLLING_IN_TC
    *&      Form  FCODE_TC_MARK_LINES
          marks all TableControl lines
         -->P_TC_NAME  name of tablecontrol
    FORM FCODE_TC_MARK_LINES USING P_TC_NAME
                                   P_TABLE_NAME
                                   P_MARK_NAME.
    &SPWIZARD: EGIN OF LOCAL DATA----
      DATA L_TABLE_NAME       LIKE FELD-NAME.
      FIELD-SYMBOLS <TC>         TYPE cxtab_control.
      FIELD-SYMBOLS <TABLE>      TYPE STANDARD TABLE.
      FIELD-SYMBOLS <WA>.
      FIELD-SYMBOLS <MARK_FIELD>.
    &SPWIZARD: END OF LOCAL DATA----
      ASSIGN (P_TC_NAME) TO <TC>.
    *&SPWIZARD: get the table, which belongs to the tc                     *
       CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
       ASSIGN (L_TABLE_NAME) TO <TABLE>.                "not headerline
    *&SPWIZARD: mark all filled lines                                      *
      LOOP AT <TABLE> ASSIGNING <WA>.
    *&SPWIZARD: access to the component 'FLAG' of the table header         *
         ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.
         <MARK_FIELD> = 'X'.
      ENDLOOP.
    ENDFORM.                                          "fcode_tc_mark_lines
    *&      Form  FCODE_TC_DEMARK_LINES
          demarks all TableControl lines
         -->P_TC_NAME  name of tablecontrol
    FORM FCODE_TC_DEMARK_LINES USING P_TC_NAME
                                     P_TABLE_NAME
                                     P_MARK_NAME .
    &SPWIZARD: BEGIN OF LOCAL DATA----
      DATA L_TABLE_NAME       LIKE FELD-NAME.
      FIELD-SYMBOLS <TC>         TYPE cxtab_control.
      FIELD-SYMBOLS <TABLE>      TYPE STANDARD TABLE.
      FIELD-SYMBOLS <WA>.
      FIELD-SYMBOLS <MARK_FIELD>.
    &SPWIZARD: END OF LOCAL DATA----
      ASSIGN (P_TC_NAME) TO <TC>.
    *&SPWIZARD: get the table, which belongs to the tc                     *
       CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
       ASSIGN (L_TABLE_NAME) TO <TABLE>.                "not headerline
    *&SPWIZARD: demark all filled lines                                    *
      LOOP AT <TABLE> ASSIGNING <WA>.
    *&SPWIZARD: access to the component 'FLAG' of the table header         *
         ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.
         <MARK_FIELD> = SPACE.
      ENDLOOP.
    ENDFORM.                                          "fcode_tc_mark_lines
    *&      Module  D20XX_INIT  OUTPUT
          text
    MODULE D20XX_INIT OUTPUT.
    *if screen-name = 'ZSRNO'.
           SCREEN-INPUT = 0.
           SCREEN-COLOR = 0.
           MODIFY SCREEN.
         endif.
    ENDMODULE.                 " D20XX_INIT  OUTPUT
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
    SET PF-STATUS 'xxxxxxxx'.
    SET TITLEBAR 'xxx'.
    *CLEAR R1_REF.
    DO 30 TIMES.
       APPEND G_TC1_ITAB.
    ENDDO.
      DESCRIBE TABLE G_TC1_ITAB LINES TC1-LINES.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  TAB1_INIT  OUTPUT
          text
    MODULE TAB1_INIT OUTPUT.
    ENDMODULE.                 " TAB1_INIT  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Module  MESSAGE  INPUT
          text
    MODULE MESSAGE INPUT.
    OK_CODE = SY-UCOMM.
    S_CODE = OK_CODE.
    CLEAR OK_CODE.
    if S_CODE = 'DELE'.
    loop at G_TC1_ITAB.
    if G_TC1_ITAB-scrname = 'X'.
    delete g_tc1_itab.
    endif.
    endloop.
    ELSEIF S_CODE = 'SAVE'.
    G_TC1_WA-ZSRNO = T1.
    MOVE-CORRESPONDING  G_TC1_WA TO ZFG_SRNO.
      REFRESH CONTROL 'TC1' FROM SCREEN '0100'.
    ENDIF.
    ENDMODULE.                 " MESSAGE  INPUT
    *&      Module  DELETE_RECORD  INPUT
          text
    MODULE DELETE_RECORD INPUT.
      IF MARK = 'X' AND S_CODE = 'DELE'.
        DELETE TABLE G_TC1_ITAB FROM ZFG_SRNO.
        DESCRIBE TABLE G_TC1_ITAB LINES TC1-LINES.
      ENDIF.
    ENDMODULE.                 " DELETE_RECORD  INPUT
    *********************Screen modules*********************
    PROCESS BEFORE OUTPUT.
    *&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'TC1'
      MODULE TC1_INIT.
    *&SPWIZARD: MODULE TC1_CHANGE_TC_ATTR.
    *&SPWIZARD: MODULE TC1_CHANGE_COL_ATTR.
      LOOP AT   G_TC1_ITAB
           INTO G_TC1_WA
           WITH CONTROL TC1
           CURSOR TC1-CURRENT_LINE.
    *&SPWIZARD:   MODULE TC1_CHANGE_FIELD_ATTR
        MODULE TC1_MOVE.
       MODULE TAB1_INIT.
       MODULE TC1_GET_LINES.
      ENDLOOP.
    MODULE D20XX_INIT.
    MODULE STATUS_0100.
    PROCESS AFTER INPUT.
    *&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'TC1'
    *BREAK POINT.
      LOOP AT G_TC1_ITAB.
        CHAIN.
          FIELD ZFG_SRNO-ZSRNO.
          MODULE TC1_MODIFY ON CHAIN-REQUEST.
         MODULE TC1_MODIFY.
        ENDCHAIN.
          MODULE MESSAGE .
        MODULE DELETE_RECORD.
      ENDLOOP.
      MODULE TC1_USER_COMMAND.
    *&SPWIZARD: MODULE TC1_CHANGE_TC_ATTR.
    *&SPWIZARD: MODULE TC1_CHANGE_COL_ATTR.
    MODULE USER_COMMAND_0100.

  • Material on dialog programming

    Hi al,
    does anybody have good material on dialog programming.
    SPECIALLY ON TABLE CONTROL
    THANKS

    Hi
    Go thru this docu
                        TRANSACTIONS
    TABLE OF CONTENTS
    TABLE OF CONTENTS     2
    GENERAL INTRODUCTION TO TRANSACTION     5
    Logical Unit of Work (LUW)     5
    DYNPRO concept     6
    SCREEN PAINTER     7
    Using Screen Painter     7
    Creating a new Screen     7
    Designing of Screen     8
    Selecting Screen Fields     9
    Attributes of Screen Elements     9
    Field List     10
    Screen Flow Logic     10
    MODULE POOL PROGRAMMING     12
    Creation of Module Pool Program     12
    Communication between Dynpro and Module Program     12
    CREATION OF A COMPLETE TRANSACTION     12
    Steps involved to create a complete transaction     12
    Handling Function Code     13
    THE FIELD CHECKS     14
    Automatic Field Checks     14
    About at Exit – Command     15
    In module pool program.     15
    Flow Logic Validations     16
    Module  assign.     16
    Module Pool Program Validations     17
    DYNAMICALLY CALLING THE SCREENS     19
    About Displaying Next Screen     19
    Set Screen     20
    Call Screen     20
    Leave to screen     21
    SUBSCREENS     22
    TABLE CONTROLS     23
    Features of Table Controls     23
    Declaring of Table Control in the Module Pool Program     24
    Designing Table Control on Screen     24
    Passing data to Table Control     24
    STEP LOOPS     27
    Types of Step Loops     27
    Switching To List Mode     28
    Returning back from LIST mode     28
    Process on HELP-REQUEST event     29
    Value Request     30
    THE SCREEN DISPLAYED IS POP-UP SCREEN AND CODE FOR THE FLOW LOGIC AND MODULE IS WRITTEN BELOW:     32
    Need To Change Screen     34
    Modifying the screen     34
    Field Name       Length  Description     34
    MODULE MODIFY_SCREEN.     35
    LOOP AT SCREEN.     35
    ENDMODULE.WORKING WITH MATCHCODE OBJECTS     35
    WORKING WITH MATCHCODE OBJECTS     36
    Creating Matchcode object     36
    Creating Matchcode ids.     37
    Using Matchcode     38
    Creating Lock Objects     39
    Activation of Lock Object     40
                                                                                    GENERAL INTRODUCTION TO TRANSACTION
    Transaction, in R/3 system is an operation that lets the user make necessary changes to the database. The entire R/3 system is nothing but set of business transaction. The data transfer from old system to SAP R/3 database, or modifying data, or deleting data, which is not required, is done through transaction.
    For SAP system, Transaction is nothing but sequence of steps called as dialog steps and for user it is sequence of screens that appears one after the other depending upon the option he selects. The special transaction monitor called the SAP dispatcher handles the sequence of steps that takes place in any transaction. The main task of transaction is to update database table. The database table is not updated until a transaction is completed. All changes can be rolled back if the transaction has not finished.
    The transaction contains two steps which are as following:
    •     Interactive phase: In this step, user enters the data, which needs to be inserted or deleted or modified on to the screen. There can be single screen or multiple screens depending upon the transaction. So this step can consist of single step or multiple steps.  In this phase you prepare database record.
    •     Update phase: This phase processes the database record and updates the database table. Actual updating of database table takes place in this phase.
    All the transactions are associated with transaction code. And all these codes are stored in a table TSTC.
    Logical Unit of Work (LUW)
    The R/3 system is multi user system and many users access the same information at the same time, which is mainly DATA. Consider the case where one user is modifying a record, and second user is trying to delete the same record. If the second user is successful in deleting the record then the first user will face problem for modifying the record that is already deleted. The avoid such situation, R/3 system has provided Logical Unit of Work, which is defined as a locking mechanism to protect transaction integrity. Of course, there are other measures, which ensures data integrity like check table i.e. foreign key relationship. Within SAP system there are three types of transaction and may be distinguished as:
    •     Database transaction known as LUW.  It can be defined as a period in which operation requested must be performed as a unit, i.e. all or nothing operation.  At the end of LUW, either of the database changes are committed or rolled back.
    •     Update transaction or SAP LUW.  One SAP LUW can have several databases LUW. So a set of a database is either committed or rolled back. The special ABAP/4 command COMMIT WORK, marks the end of a SAP LUW.
    •     ABAP/4 transaction. Is made up of a set of related task combined under one transaction code. ABAP/4 transactions are for programming environment, in which ABAP/4 transaction functions like one complete object containing screens, menus and transaction codes.
    R/3 system has provided in built locking mechanism, which defines the Logical Unit of Work. Also user can set his own locking mechanism. The LUW starts when a lock entry in the system table is created, and it ends when the lock is released.
    To provide the user the facility to communicate with the table in order to modify or delete or insert data, R/3 has provided tool called SCREEN PAINTER. This tool allows you to design screen, process screen through program and update the database table.  SAP has provided one and only one way to update the database table, i.e. transaction.  Though you can update database table by using open SQL statement through program, SAP usually doesn’t recommend this kind of updating.  Many standard transactions are available to update standard table but if the need arises, the developer should be able to develop new transaction, which allows the updating of database tables. This can be achieved by using various components of screen painter.
    Following are the few concepts and steps for creating entire new transaction.
    DYNPRO concept
    A dynpro refers to the screen + flow logic. With screen painter you can develop screen and flow logic. The relationship between screen, flow logic, and program can be shown as follows:
    Dynpro, as figure indicates consist of screen and flow logic and places exactly one call to module pool program. A transaction consists of many screens and for each screen flow logic is attached. When the transaction is executed, the screen places a call to flow logic and flow logic in turn places a call to module pool program.
    •     A module program is usual ABAP/4 program that consist of modules and data declaration.
    •     ABAP/4 is an event driven language. In module pool program too, events get triggered and these events are handled in flow logic. Flow logic editor is subset of ABAP/4 editor. The system automatically displays the two important events for the flow logic.
    •     Screen is the important component of dynpro and can be created, designed by screen painter.
    Screen Painter
    A screen painter can be started by
    Development workbench &#61664; Screen Painter
    Or
    SE51 transaction code.
    Using Screen Painter
    The process of creating a dynpro includes the creation and definition of all the needed screen components.
    The steps involved in creating the dynpro are as follows:
    •     Create screen and attributes by using screen attribute screen.
    •     Select and place the needed fields within the screen by using dict/program fields.
    •     Establish the field attributes to which the screen belongs by using field list.
    •     Define the flow logic respect to the transaction to which it belongs by using flow logic.
    Creating a new Screen
    Steps involved are as follows:
    •     Enter the name of program and number of the screen
    •     Click on Create
    •     On “screen attribute” screen enter short description
    •     Enter screen type. Normally, you select NORMAL option for usual R/3 screen. Other options available are SUBSCREEN & MODAL DIALOG BOX. Modal dialog box is used to establish independent and interactive dialog box while subscreen is screen within screen. 
    •     Next attribute to be passed is NEXT SCREEN. Here you need to specify the next screen number, which must be processed after the current one.
    Designing of Screen
    Screen can be designed by using FULL SCREEN EDITOR. You can go to full screen editor.
    From screen attribute screen
    By pressing full screen editor pushbutton
    Or
    From initial screen of screen painter.
    There are two modes available with full screen editor.
    •     Graphical mode. The graphical mode works similarly to typical window application.
    •     Alphanumeric mode (rarely used).
    Elements of screen
    •     Text – Standard text or field labels.
    •     Entry  - display field.
    •     Radiobutton – All radiobutton must be associated with one group.
    •     Checkbox – Normally used for YES/NO operations.
    •     Pushbutton – Used for activating particular function.
    •     Boxes – grouping together many screen elements.
    •     Subscreens – This is a screen area in which you can display another screen.
    •     Table controls – This area of screen is similar to table but should be treated as a loop.
    •     Status - Display output fields containing icon.
    All these elements are on the control bar of full screen editor and can be placed on the screen work area by clicking and placing them wherever needed.
    Selecting Screen Fields
    Screen field can be either dictionary objects or program fields. Steps involved in the placing of fields on the screen are as follows:
    Click the pushbutton Dict/program fields on the full screen editor
    Or
    Goto &#61664; dict/prog fields.
    •     Enter table name.
    •     Click Get from dictionary.
    •     Select fields.
    •     Click copy pushbutton.
    •     Position the cursor where you want those fields to be placed.
    To adjust various screen elements, you can use drag and drop facility for screen elements.
    Attributes of Screen Elements
    The entire element of a screen has some attributes, which determines their behavior.
    •     General – These attributes are directly managed by the screen painter like name of the element, or text of element or column width and various things associated with the screen.
    •     Dictionary – These attributes are applicable to fields, which are from dictionary. Various components of dictionary can be attached to this element like search help, foreign key.
    •     Program.
    •     Display – Behavior of the element with respect to their display feature.
    Attribute dialog box can be displayed by
    •     Clicking on the ATTRIBUTE push button on the application tool bar.
    •     Double clicking on the element.
    Field List
    This list displays a list of all screen elements together with their screen attributes.  One important element of Field list is OKCODE. Any pushbutton is associated with function code as in menu item in menu painter. When the user clicks the pushbutton this code is stored in OKCODE. This OKCODE is created by system without a name and is not visible on the screen. In ABAP/4 this field is work field and is nothing but an area wherein system stores the variable and is the last field of the field list and is invisible, hence user needs to give the name OKCODE. It is not mandatory to give the name OKCODE; developer can give any name to this field.
    Screen Flow Logic
    You can go to this screen either by
    Initial screen of Screen painter &#61664; Flow logic
    Or
    From Screen attribute screen &#61664; Flow logic
    When transaction is executed, the screen is displayed, user enters few fields, selects few functions. Later the screen is processed and processing of screen is done by flow logic.    The events that are associated with screen are as follows:
    •     Process before Output (PBO)
    •     Process after input (PAI)
    •     Process on value request (POV)
    •     Process on help request (POH)
    The system automatically displays two very important events or modules in flow logic i.e. PAI and PBO
    PBO event
    This event is triggered before the screen is displayed. The processing of screen before the display of screen is done in this event. For example, filling in default values in the screen fields. 
    PAI event
    This event is responsible for processing of screen after the user enters the data and clicks the pushbutton. The processing of screen can include displaying another screen, or just displaying list or quitting the transaction itself and many more things. Usually it is displaying another screen. These operations can be carried out in the PAI event. OKCODE plays an important role in this operation.
    POV event
    Process on value request is triggered when the user clicks F4 key. You can handle this event when the user presses F4 key by writing code for the same in module pool program. Normally when the user presses F4, list of possible values is displayed.  The standard list produced by system is adequate for applications you develop yourself.  However, you can also have the option of setting up your own documentation and lists of possible values that are more detailed.
    POH event
    Normally when the user places the cursor on the field and presses F1 function key, the system displays its own Help for that particular field. You can add your own functionality to the Help button by writing code for the same in the POH event.
    Module Pool Programming
    This component though is not attached to the screen painter, plays important role in transaction. Normally, for reports, on line executable programs are written but for transaction, Module Pool Programs are written. The module pool program contains only modules to handle various events associated with screen and data declaration statements.
    System divides the module pool program into several include program. These are global field, PBO modules, and PAI modules. It is entirely user’s decision whether to use these modules or write directly into main program.
    Creation of Module Pool Program
    You can create module pool program either through
    Object browser
    System automatically creates the module pool program and for these program which are created through object browser, system creates the include modules.
    Or
    ABAP/4 editor
    It is similar to normal program creation. Type of program should be given ‘M’ and is not created by system.
    Communication between Dynpro and Module Program
    For each screen, the system executes the flow logic, which contains corresponding events. The control is passed to Module Pool Program. Module Pool Program handles the code for these events and again passes back control to the flow logic and finally to screen. Unlike on line program, in this case, the control remains with flow logic. The switching of control between flow logic and module pool program and back is common process when user executes transaction.
    Creation of a Complete Transaction
    Steps involved to create a complete transaction
    •     Create module pool program.
    •     From screen painter create screens.
    •     Write flow logic for each screen.
    •     Write code for all the events in module pool program.
    •     Check for any error in screen and flow logic.
    •     Generate each and every component of screen i.e. flow logic and screen.
    •     Single screen can be tested using Screen Painter.
    •     Create transaction code through object browser.
    •     Generate the transaction code.
    •     User can execute the transaction by entering the transaction code in the command field.
    Handling Function Code
    The function code or OKCODE is the last field of Field list. Function code can be handled as follows:
    During the Designing of the screen, a function code is assigned to pushbutton.
    •     In field list, developer needs to specify OKCODE as last field.
    •     In module program it is a global field and can be evaluated in the PAI event.
    •     A function code is treated in the same way, regardless it comes from pushbutton, menu item or any other GUI element.
    A complete example for transaction is shown below:
    If you have a screen like the one below:
    When the user clicks on the Display button, you want to display details of sflight, with corresponding carrid and connid (which is entered by the user).
    Module pool program to handle this particular screen is as follows:
    Program YVTEST7.
    TABLES: SFLIGHT.
    DATA: OKCODE (4).
    MODULE INPUT1 INPUT,
    CASE OKCODE.
       WHEN ‘DISP’.
         SELECT * FROM SFLIGHT
                WHERE CARRID =  SFLIGHT – CARRID AND
                               CONNID = SFLIGHT – CONNID.
         ENDSELECT.
         LEAVE TO SCREEN 200.
       WHEN ‘EXIT’.  LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.               “INPUT1 INPUT
    MODULE USER_COMMAND_0200 INPUT.
    CASE OKCODE.
    WHEN ‘BACK’. LEAVE TO SCREEN 100.
    ENDCASE.
    ENDMODULE.                    “USER_COMMAND_0200 INPUT
    When the user clicks on display, control is transferred to screen no. 200 on which you display sflight details & on the same screen, when user clicks on BACK button, he comes back to main screen.
    Flow logic for screen 100 is as follows:
    PROCESS AFTER INPUT.
    MODULE INPUT.
    Flow logic for screen 200
    PROCESS AFTER INPUT.
    USER_COMMAND_0200.
    MODULES: Modules are handled in module pool program.
    You need to write flow logic for screen 200 and design screen 200.
    In case of transaction transfer of data from program to screen is automatic i.e. you need not transfer the data from program to screen explicitly. The fields, which you define in the screen receives the data from program and displays the same.
    The Field Checks
    As already mentioned Transaction is the only method, which SAP recommends to update the database tables. Data entered in the database table should be valid and correct. Data entered is validated at each and every point. ABAP/4 offers various methods to validate data and those are as follows:
    •     Automatic field checks
    •     Checks performed in the flow logic
    •     Checks performed in the ABAP/4 module pool program
    Automatic Field Checks
    These checks are based on the field information stored in the dictionary. These checks are performed by the system automatically when the user enters the data for the screen field. System performs these checks before PAI event is triggered. Types of field checks performed by system are as follows:
    •     Required input
    While designing the screen, for particular screen field if you click the Req. Entry checkbox, the field becomes mandatory. When the transaction is executed if user leaves this particular field blank, the system displays error message. User cannot proceed until the user enters some data.
    •     Proper Data Format
    Each field has its own data format whether it is table field or screen field. Whenever data is entered, system checks for the proper format of the data. For example date. Each user has its own format for date, which is defined in the user master record. If the date defined in the user master record is in the format DD/MM/YYYY, if the user enters the date, say, in YY/DD/MM, the user displays the error message. System also checks for the value of month or days. For example if month entered is greater than twelve then the error message is displayed.
    •     Valid Value for the Field
    In data dictionary two tables are related by Primary key-Foreign key relationship.  Whenever the user enters the data, the system checks for the check table values.   Also in Domain, if you have fixed values, then the system checks for these values.
    Automatic field checks are repeated each time the user enters the data.
    About at Exit – Command
    Automatic field checks can be avoided by AT EXIT-COMMAND, which works exactly the same way as Cancel works on application tools bar. In the R/3 screen, if you want to quit the processing of that particular screen without entering the mandatory fields, user can click the Cancel button. Same functionality can be incorporated in the user-defined transaction by using AT EXIT-COMMAND. This module can be called before the system executes the automatic field checks and it goes without saying that before PAI event. Code for AT EXIT-COMMAND in flow logic and in module pool program can be written as follows:
    In Flow Logic
    Process After Input.
    Module exit AT EXIT-COMMAND.
             In module pool program.
    Module exit.
    Case okcode.
    When ‘Exit’.
    Leave to screen 0.
    To achieve this kind of functionality a pushbutton or menu item should be assigned a function type ‘E’. It tells the system to process this particular module before carrying out any field checks.
    Flow Logic Validations
    Consider the case where you want user to enter only ‘LH’ and ‘SQ’ for sflight-carrid. In this case, you are restricting value of a screen field. This cannot be achieved by automatic field check. Hence there is a need of additional validation. It can be done in flow logic by using following statement:
    Field -
    Values
    Syntax
    PAI.
    Field sflight-carrid values (‘LH’).
    For multiple values
    PAI.
    Field sflight-carrid values (‘LH’ ‘SQ’).
    Field sflight-price values (between 1000 and 2000).
    In this case when the user enters the value, PAI is triggered  and field is checked for  that particular value. If the value entered happens to be wrong, that field is enabled for user to enter. If you have multiple Field statements in your flow logic, it is sequential execution.
    Consider the following case:
    PAI.
    Module  assign.
    Field sflight-carrid values (‘LH’ ‘SQ’).
    In ABAP/4
    Module  assign.
    Data: carrid1 like sflight-carrid.
    Carrid1 = sflight-carrid.
    Endmodule.
    In this case, Sflight-carrid is used in the flow logic before the field statement. The system will give invalid value or some previous value as the field sflight-carrid is used in module before it is checked i.e., field statement is after the module in which sflight-carrid is being used. The field is not available to the system unless it executes the field statement. Field statement transfers the values to the program and is done only once. If you don’t have Field statement in your flow logic, transfer of values takes place in PAI event.
    Consider one more case where you have multiple field statement.
    PAI.
    Field Sflight-carrid values (‘LH’).
    Field Sflight-connid values (‘0400’ ‘0500’).
    In this case if the user enters only carrid wrong, then this particular field is enabled and rest of the fields are disabled for user to input. Many times if the user enters wrong value for one field, then you might want to give option to user to enter all the fields, which is not possible by using Field statement only. This functionality can be achieved by CHAIN – ENDCHAIN.
    Syntax
    Chain.
    Field sflight-carrid value (‘LH’).
         Field sflight-connid values (between ‘200’ and ‘500’).
    Endchain.
    Field sflight-price values (‘100’ ‘1000’).
    In this case, if the user enters wrong value only for carrid, both the fields i.e. carrid and connid are enabled as they are grouped together in the Chain statement. The field price will be disabled for input. Usually, logically related fields are grouped together with Chain-Endchain statement.
    Module Pool Program Validations
    Checking fields ABAP/4 program includes
    •     Field statement in flow logic.
    •     Module statement in ABAP/4 module pool Program.
    Syntax
    PAI.
    Field sflight-carrid module <name>.
    This module can be handled in the main program i.e. module pool program.
    In ABAP/4 program
    Module Check.
    Select single * from sflight where carrid = sflight-carrid.
    If sy-subrc ne 0.
         Message e001.
    Endif.
    In this case, field sflight-carrid is checked in the table for its existence.
    Dynamically Calling the Screens
    About Displaying Next Screen
    Transaction is a sequence of screens, which are displayed one after the other. The next screen displayed depends upon the attributes of first screen. In attributes you need to give Next Screen number i.e. if next screen displayed should be 200 screen, then this number should be given in next Screen attributes. These are static attributes of the screen. By default, if nothing is specified in the program, the system branches out to the screen number, which is specified in the attribute screen.
    But this doesn’t happen always. If you have many pushbuttons on the screen like the one in the following case:
    In this case, if user selects MARA pushbutton, then fields from Mara table are displayed. When the user clicks on the MARD, then the fields from MARD table are displayed. Depending upon users selection, the screen is branched out and this has to be done during runtime. This functionality can be achieved by dynamically calling the screen in module pool program.
    The screen can branch out to new screen depending upon user selection. Following command in module pool program can do this:
    •     SET SCREEM
    •     CALL SCREEN
    •     LEAVE TO SCREEN <NUMBER>
    All these commands override the specifications given in the attributes. This overriding is temporary. The values stored in the attribute are not changed.
    Set Screen
    Syntax
    Set screen <number>.
    In module pool program
    Case okcode.
         When  ‘DISP’.
              Set screen 200.
         When ‘LIST’.
              Set screen 300.
    Endcase.
    In this case, the entire processing of current screen takes place and then the system branches out to next screen. If you want to branch out to the next screen without processing the current screen, LEAVE SCREEN should be used along with the SET SCREEN.
    For Example:
    Case okcode..
         When  ‘DISP’.
              Set screen 200.
              Leave Screen.
         When ‘LIST’.
              Set screen 300.
              Leave Screen.
    Endcase.
    When SET SCREEN is used, control cannot be transferred to the main screen or previous screen, unless you write code for the same.
    Call Screen
    Usually used for pop up screens. Many times, there is a need for user to enter additional information or secondary information on another screen or pop up screen. Once the user enters the data, he should be able to go back to main screen or to the screen where he started. This is not possible by using SET SCREEN. CALL SCREEN achieves this functionality.
    Syntax
    Call Screen 200.
    Will simply call a screen number 200 from a main screen. Once the screen is displayed the user can enter all the data and return to the main screen by clicking BACK button.
    To call screen as pop up screen the syntax is
    Call screen starting at <col.no.> <line no>
                         Ending at <col no> <line no>.
    In this case window will be popped as window and user can close it by using BACK button.
    Leave to screen
    To SET a new screen without processing current screen, you need to use the following two statements together:
    SET SCREEN 200.
    LEAVE SCREEN.
    Or a Single statement
    LEAVE TO SCREEN 200.
    Subscreens
    A subscreen is a screen within screen. Consider the following case.
    If user clicks on FIRST pushbutton, you want to display details of MARA table and if user clicks on the SECOND pushbutton, you want to display details of MARD table.  You can do this by calling two different screens. But the information will be displayed on the next screen. Displaying data on the same screen is possible by using SUBSCREENS.
    Step to create a subscreen are as follows:
    •     Create a subscreen area on MAIN screen and name it.
    •     Create a separate screen of subscreen type.
    •     Arrange the fields on this screen so that they fit in subscreen area exactly. Only when it is larger, the part of the screen that fits in the main area will be visible.
    •     Write code for calling subscreen in flow logic.
    To call subscreen, from your flow logic, you need to include the statement both in PAI and PBO.
    Syntax
    PBO.
    Call subscreen <area> including <prg name> <’screen no’>.
    PAI.
    Call subscreen <area>.
    Area - is the name of the area on main screen.
    Prg. Name - is the name of the module pool program.
    Screen number - is subscreen screen number.
    Some of the don’ts with subscreen are:
    GUI status cannot be set to the subscreen
    •     OKCODE is not applicable to the subscreen.
    •     Subscreen cannot call another screen.
    •     It cannot contain AT EXIT-COMMAND.
    You can call multiple subscreen in the same area (at any given point of time, only one subscreen can be called in the subscreen area) and is done dynamically during runtime by using variable screen number.
    Table Controls
    A table can be created in transaction. These tables when designed on the screen are called as SCREEN TABLES. These screen tables are of two types viz.
    •     Table controls
    •     Step loops
    Though these are tables when code is written to handle them, the  tables are treated  as loops. 
    Features of Table Controls
    •     Data is displayed in the form of table when many records match the criteria.
    •     Table control gives user the feeling of an actual table.
    •     You can scroll through the table vertically and horizontally.
    •     You can select rows and columns
    •     Resize the width of a column
    •     You can have separator lines in between rows and columns
    •     Automatic resizing of the table when the user resizes the window.
    In general table control includes all the features of an actual table and user gets the feeling that he is actually working with table. You can update information in table control and it can be updated in the database table by writing code for it.
    Steps associated for creating complete screen table are as follows:
    •     Declaration of table control in module pool program.
    •     Designing of table control on the screen.
    •     Passing data to table in flow logic.
    Declaring of Table Control in the Module Pool Program
    Syntax
    Controls TCI type Tableview using screen <screen no.>
    When you use table control in a screen you must declare the structure in module pool program. Important fields of tableview are as follows:
    •     Lines – number of displayable rows in a table.
    •     Top_line – the row of table where the screen displays start.
    •     Current_line – The row currently being processed inside a loop.
    When you process the table control in flow logic depending upon where you want to start display of rows, you need to use these variables.
    Designing Table Control on Screen
    •     To design table control on the screen, you need to click on Table in control bar and place it on the screen. You can adjust the length and width of table control.
    •     Name the table control. (Here you need to use same name which you have used for declaration of table control in module pool program)
    •     From dictionary object, select table fields and place them in the table control.
    Passing data to Table Control
    As already mentioned, table controls are tables but are treated like loops. Usually transfer of data from program to screen is automatic. But in case of table control, transfer of data is not automatic. You need to explicitly transfer the data to table control. ABAP/4 provides loop statement, which is associated with flow logic to transfer the data. Because table control is treated like a loop, data from where it is transferred should be a loop. You cannot transfer the data by only select statement; you need to put the data into internal table. ABAP/4 provides the LOOP statement, which is associated with the flow logic and allows you to loop through the table control and internal tables. In between LOOP-ENDLOOP, you can use most of the flow logic keywords like field values.  Module etc.
    You need to code a LOOP statement in both PBO and PAI event of the screen. With LOOP statement, you can transfer the data from program to table control and vice versa.  That is, if user updates the value in the table control, you can update database table with its value. And this can be done in PAI event. So even if you are not updating database table through the table control, you need to put the LOOP statement in the PAI event also.
    Syntax
    PBO.
    LOOP AT <internal table> with control <table control name> cursor <scroll variable>
    PAI.
    Loop at itab.
    Proper usage of Table Control is as follows:
    In flow logic.
    PBO.
    LOOP AT ITAB WITH CONTROL TC1 CURSOR TC1-TOP_LINE.
    MODULE ASSIGN.
    ENDLOOP.
    PAI.
    LOOP AT ITAB.
    ENDLOOP.
    Considering, we have following fields in table control and the screen looks like this:
    In module pool program
    CONTROL TC1 Type tableview using screen 200.
    Module assign.
    Sflight – carrid = itab – carrid.
    Sflight - connid= itab -  connid.
    Sflight - fldate= itab – fldate.
    Endmodule.
    The transfer of the data from program to table control takes place in steps and these steps are as follows:
    •     With LOOP AT statement the first row is picked up and placed in the header of the internal table.
    •     Whatever statements you have in between LOOP-ENDLOOP are executed.  In this case, you have Module statement. In Module statement, value of internal table is assigned to table control field.
    •     The row in internal table is transferred to the first line of the table control as stated in the LOOP AT statement.
    •     The system encounters the ENDLOOP statement and Control is passed to the next line of the internal table.
    •     In the same way, all the records of the internal table are passed to the table control.
    STEP LOOPS
    Step Loops are type of screen table as already mentioned. Step loops are repeated blocks of field in a screen. Each block contains one or more fields and these blocks are repeated. Step loops aren’t like actual table. You can scroll vertically but not horizontally. Three steps are associated with creation of step loops:
    •     Creation of step loops on screen, which includes declaring fields on the screen and then defining the step, loops for these fields.
    •     Passing data to the step loop is exactly similar to the passing of data to table controls.
    •     In step loop, you don’t need to define the step loop as such in the module pool program but the cursor needs to be defined in the program.
    Types of Step Loops
    •     Static – Static Step Loop (SSL) have fixed size that cannot be changed during the runtime. If user resizes the window, the size of the static step loop is not changed.
    •     Dynamic – Dynamic Step Loop (DSL) is variable in size. When the user resizes the window, the system increases or decreases the number of the step loop blocks. 
    You can have only one dynamic step loop and can have as many static loops in your    transaction.
    Programming with the Static and dynamic step loop is exactly same.  For the system or for the user it doesn’t make any difference whether it is static or dynamic step loop.  Only attribute, which you fix during designing of the step loop, is type attribute for step loop F for fixed i.e static and V for variable i.e. dynamic.
    Writing code for Step Loop in the flow logic.
         PBO.
              Loop at itab cursor cl.
              Module set.
             Endloop.
         PAI.     
              Loop at itab.
              Endloop.
    Empty loop is must for both table control and step loop
    LOOP AT statement for step loops and Table controls is similar. Loop At statement transfers the data to screen table. You need to have the Module to assign the values for the screen table.
    In module pool program you need to define the cursor.
    Date:   CL TYPE   i.
    Cursor parameter tells which line of step loop display should start.
    “Module Set” in module pool program assigns the values to step loop fields, which is similar to table controls.               
    Branching to List Processing
    Switching To List Mode
    You can display a list within a transaction.
    You can produce a list from module pool program by using the command
    Leave to List-Processing.
    This statement switches the system from dialog mode to list mode. And from this point onwards until you return to dialog mode, you can use all the normal report statement like write, select or any other event.
    Returning back from LIST mode
    You can return back to dialog mode by clicking the BACK button.
    You can have your GUI status and write code for the same. You can include the command LEAVE LIST-PROCESSING. When the system reaches this command, it leaves the list mode and returns to the dialog mode.
    Help & Value Request
    In any transaction, When the user presses F1 or ? on a field, System provides the help  facility for that particular field. In dialog program, when F1 is pressed, help provided by R3 system is sourced from data element documentation. If this documentation is not present for that particular field or if user needs to display additional information for that particular field, then user defined help can be provided through PROCESS ON HELP REQUEST.
    In ABVP/4 help can be provided to the user by:
    Data element documentation: The F1 help can be enhanced, by adding an additional text for the data element in ABAP/4 dictionary.
    It can be done with the help of following steps:
    Place cursor on the screen field,
    GOTO &#61664; DOCUMENTATION &#61664; DATA ELEMENT DOCUMENT
    You can now extend the existing help.
    USING THE PROCESS ON HELP-REQUEST.
    If you don’t have this event in a program, then the documentation of the field in the ABAP/4 dictionary is taken into consideration. If this event exits in the program then it is executed.
    Process on HELP-REQUEST event
    This event is triggered when user presses F1 on a screen field. You need to handle this event in flow-logic by specifying the fields and attaching the module to it.
    Syntax
    PROCESS ON HELP –REQUEST.
    FIELD SFLIGHT-CARRID MODULE HELP-FOR-CARRID.
    In module pool program
    MODULE HELP.
    Write   : `This is field is from sflight table’
    Write   : /  ‘It is of four Character’.
    ENDMODULE.
    When the user presses F1 on this particular field, then this message will be displayed on the screen.
    Value Request
    Whenever the user presses F4 on the screen field list of possible values, particular fields are displayed. If the standard value-help is inadequate or if you want to display additional fields or with different combination of fields, developer can program this in PROCESS ON VALUE-REQUEST event in the flow-logic and subsequent module in the module pool program. When the user presses F4, list of possible values are displayed either from matchcode objects or check table or help view or domain. Each one of them is explained briefly.
    Matchcode objects: Are aggregated dictionary objects and detailed procedure to create these objects is explained in the later part of the material.
    Check Table:  If a check table is assigned to the table field and if the user presses F4 for that particular field, then all the key fields are displayed.
    Domain Values: The values defined in the domain are displayed. These values are set in domain when the domain is created in the dictionary.
    Help views:  In cases where the check table is not sufficient, you can create a help view with this check table, which gives additional information like explanatory text for the fields of the check table.
    PROCESS ON VALUE_REQUEST.
    Each time the user presses F4 on the screen field, following algorithm is called internally.
    When the user presses F4 on flight number, the following screen is displayed.
    The screen displayed is pop-up screen and code for the flow logic and module is written below:
    Flow-logic code

  • Its urgent pls help me .

    how can i call a portal from webdynpro application
    my requirment is
    i was created webdynpro application.
    in that i was created one view . in that i was created one button (go).
    if i click that button i want move some other portal.
    how can i acchive pls help me.
    its urgent.
    pls send any example programe
    Message was edited by:
            madipadiga nagaraju
    Message was edited by:
            madipadiga nagaraju

    hi,
    there is no direct tcode for going to webdynpro component/interfaces in ecc 6.0.
    but u have se58 in ecc 5.0,as webdynpro convertor.u give ur program name and click web dynpro convertor button then it takes u to se80 .but this wda(webdynpro abap) component comes as in application tree hierarchy .
    i can say in wda component refers a class .if u select webdynpro component/interface,it ask u to create a class or interface.
    after that it automatically generate component controller(it is also a class),
    interface view and windows.all these 3 are classes.for every window one interface view will be created.ie.. window is internal visible where as interface view is external visible.
    u create view and embed these views in windows.by going to the window layout,right click on the window name and click embed view.u can enbed as many view as u wish.in order to navigate from one view to other view ,click  "create navigation" by right clicking the view plugs.
    by default windows and view have inbound plugs.this is literally a event of that class.
    if u want to navigate from view1 to view2 ,create outbound plug for view1,the click outbound plug of view1 and right click the click create navigation the select inbound plug of view2.
    then create a application .this is simillar of creating an object.
    click on this object and test .this will open in browser.
    for deploying u have use "sap webdynpro iview".

  • Need help in bdc its urgent

    hai friends
    my reequirement is extracting data from 4.6 c for  purchase order me21 into flat file format.(tab delimitter) .currently we are working on ecc 6 version.i had already written bdc code for me21 in ecc6 version for uploading data.
    please help me its urgent.
    give any sample code for writing extract program

    Hi Friend,
    if it help full to u please give me max point.i am sending code.
    REPORT ZMXX0295 LINE-SIZE 132 NO STANDARD PAGE HEADING.
    +
    Comparisom of PIR or Contract price with latest PO price
    +
    This program was created to compare PIR prices or contract prices
    with the latest PO price.
    It reads the source lists for the specified materials to determine
    the PIR or contract prices. Afterwards it reads the PO history to
    get the purchase order prices.
    The material to be processed can either be selected from the data
    base (material master) or via an PC upload file.
    The output can be sorted in different variants.
    +
    +
    *eject
    Definition of database tables --------------------------------------+
    TABLES: EINA,                     "Purchasing Info Record: General Data
            EINE,                     "PIR: Purchasing Organization Data
            EIPA,                     "Order Price History, Info Record
            EKAB,                     "Contract Release Documentation
            *EKKO,                    "Contract / PO header
            EKKO,                     "Contract / PO header
            *EKPO,                    "Contract / PO item
            EKPO,                     "Contract / PO item
            EORD,                     "Source list
            TCURC.                    "Currency codes
    *eject
    Definition of internal tables / data -------------------------------+
    DATA: BEGIN OF MAT_PRICE OCCURS 0,
            VRTYP LIKE EORD-VRTYP,                   "Document type
            INFNR LIKE EINE-INFNR,                   "Info record / Contract
            MATNR LIKE EINA-MATNR,                   "Material
            WERKS LIKE EINE-WERKS,                   "Plant
            EKORG LIKE EINE-EKORG,                   "Purch. organization
            LIFNR LIKE EINA-LIFNR,                   "Vendor
            FLIFN LIKE EORD-FLIFN,                   "Fix Vendor
            IRPRS LIKE EINE-NETPR,                   "Info record price
            PEINH LIKE EINE-PEINH,                   "Price unit
            EBELN LIKE EIPA-EBELN,                   "PO header
            EBELP LIKE EIPA-EBELP,                   "PO item
            BEDAT LIKE EIPA-BEDAT,                   "PO date
            POPRS LIKE EIPA-LPREI,                   "PO price
            LPEIN LIKE EIPA-LPEIN,                   "Price unit
            MENGE LIKE EKPO-MENGE,                   "PO quantity
            MEINS LIKE EKPO-MEINS,                   "PO unit of measure
          END OF MAT_PRICE.
    DATA: BEGIN OF MAT_SEL OCCURS 0,
            MATNR LIKE EINA-MATNR,
          END OF MAT_SEL.
    DATA: T_EORD LIKE EORD OCCURS 0 WITH HEADER LINE.
    DATA: CURSORFIELD(15),                           "Fieldname of Cusor pos
          INV_DATE LIKE SY-DATUM,                    "Inverted date
          W_EFFPR  LIKE EINE-EFFPR.                  "Hiwi price
    DATA: W_FILE TYPE STRING.                        "JAN29NOV05
    CONSTANTS: C_0(01)    TYPE C VALUE '0',
               C_F(01)    TYPE C VALUE 'F',
               C_I(01)    TYPE C VALUE 'I',
               C_K(01)    TYPE C VALUE 'K',
               C_X(01)    TYPE C VALUE 'X'.
    CONSTANTS: C_ASC(10) TYPE C VALUE 'ASC'.           "JAN29NOV05
    *eject
    Definition of selection screen -------------------------------------+
    SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-B01.
    PARAMETERS:     P_DBASE RADIOBUTTON GROUP R01.   "Read mat's via select.
    SELECT-OPTIONS: S_MATNR FOR EINA-MATNR.          "Material
    SELECTION-SCREEN ULINE.
    PARAMETERS:     P_XFILE RADIOBUTTON GROUP R01,   "Read mat's via PC file
                    P_DATEI LIKE RLGRAP-FILENAME.    "PC file with MATNR's
    SELECTION-SCREEN SKIP.
    SELECT-OPTIONS: S_MATKL FOR  EINA-MATKL,         "Material group
                    S_WERKS FOR  EINE-WERKS,         "Plant
                    S_EKORG FOR  EINE-EKORG,         "Purch. organization
                    S_BEDAT FOR  EIPA-BEDAT.         "PO price date
    PARAMETERS:     P_WAERS LIKE EINE-WAERS          "Output currency
                            OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK B01.
    *eject
    Process after input ------------------------------------------------+
    AT SELECTION-SCREEN ON P_WAERS.
      PERFORM READ_TCURC.
    AT SELECTION-SCREEN ON P_DATEI.
      IF NOT P_XFILE IS INITIAL
         AND P_DATEI IS INITIAL.
        MESSAGE E999(ZZ) WITH 'Please sepcify PC file name'.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_DATEI.
      PERFORM CALL_WS_EXPLORER.
    *eject
    Start of main program ----------------------------------------------+
    START-OF-SELECTION.
       IF NOT P_XFILE IS INITIAL.
         PERFORM UPLOAD_MATERIAL_SELECTION.          "Read mat's from file
         IF MAT_SEL[] IS INITIAL.
           MESSAGE E999(ZZ) WITH
                  'No records were found in file'(E01) P_DATEI(40).
         ELSE.
           PERFORM GET_MATERIAL_SELECTION.           "Process upload file
         ENDIF.
       ENDIF.
       PERFORM SOME_REWORK.
       PERFORM PROCESS_MATERIALS.                    "Process mat. selection
    END-OF-SELECTION.
    End of Main program ------------------------------------------------+
      SET PF-STATUS 'LIST'.
      SORT MAT_PRICE BY MATNR WERKS EKORG POPRS.
      PERFORM AUSGABE.
      IF SY-SUBRC EQ 0.
        MESSAGE I999(ZZ) WITH TEXT-002.
        MESSAGE S999(ZZ) WITH TEXT-001
                'Material/Plant/PurchOrg/PO Price'(003).
      ENDIF.
    *eject
    User commands - interactive reporting ...
      AT USER-COMMAND.
        IF SY-UCOMM EQ 'ORDR'.
          PERFORM DISPLAY_ORDER.
        ENDIF.
      AT LINE-SELECTION.
        PERFORM CHANGE_SORT_SEQUENCE.
    *eject
    +
          TOP-OF-PAGE
    +
    TOP-OF-PAGE.
      PERFORM LIST_HEADER.
    *eject
    +
          TOP-OF-PAGE during line-selection.
    +
    TOP-OF-PAGE DURING LINE-SELECTION.
      PERFORM LIST_HEADER.
    *eject
          Form  CALL_WS_EXPLORER
    FORM CALL_WS_EXPLORER.
      CALL FUNCTION 'WS_FILENAME_GET'
         EXPORTING
            DEF_FILENAME     = '*.txt,'  "JAN29NOV05
              DEF_FILENAME     = '*.txt'   "JAN29NOV05
              DEF_PATH         = 'D:\'
              MASK             =
                  Block Changed From Here JAN29NOV05
                  'Text files,.txt,Data files,.dat,All files,.,.'(MSK)
                    ' Text files,.txt,Data files,.dat,All files,.,.'(MSK)
                  Block Changed Till Here JAN29NOV05
              MODE             = 'O'
              TITLE            = 'Upload Materials to be processed'(004)
         IMPORTING
              FILENAME         = P_DATEI
         EXCEPTIONS
              INV_WINSYS       = 1
              NO_BATCH         = 2
              SELECTION_CANCEL = 3
              SELECTION_ERROR  = 4.
    ENDFORM.                    " CALL_WS_EXPLORER
    *eject
          Form  PROCESS_MATERIALS
          Read source list for specified materials and then process
          either PIR or contracts.
    FORM PROCESS_MATERIALS.
      PERFORM READ_MATERIAL_SOURCE_LIST.
      LOOP AT T_EORD.
        CLEAR W_EFFPR.
        TRANSLATE T_EORD-VRTYP USING ' I'.           "Set I = Infor record
        IF T_EORD-VRTYP EQ C_I.
          PERFORM GET_PIR_INFORMATION.
        ELSE.
          T_EORD-FLIFN = T_EORD-FEBEL.
          PERFORM GET_CONTRACT_INFORMATION.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " PROCESS_MATERIALS
    *eject
          Form  GET_MATERIAL_SELECTION
    FORM GET_MATERIAL_SELECTION.
      SORT MAT_SEL.
      CLEAR S_MATNR.
      S_MATNR-OPTION = 'EQ'.
      S_MATNR-SIGN   = 'I'.
      LOOP AT MAT_SEL WHERE
           MATNR CO ' 0123456789'.
        SHIFT MAT_SEL-MATNR RIGHT DELETING TRAILING ' '.
        TRANSLATE MAT_SEL-MATNR USING ' 0'.
        S_MATNR-LOW = MAT_SEL-MATNR.
        APPEND S_MATNR.
      ENDLOOP.
    ENDFORM.                    " GET_MATERIAL_SELECTION
          Form  READ_EIPA
    FORM READ_EIPA.
      SELECT EBELN EBELP BEDAT
             INTO CORRESPONDING FIELDS OF EIPA
             FROM EIPA
             UP TO 1 ROWS
             WHERE INFNR EQ EINA-INFNR
             AND   WERKS EQ T_EORD-WERKS
             AND   EKORG EQ T_EORD-EKORG
             AND   BEDAT IN S_BEDAT
             ORDER BY BEDAT DESCENDING.
        PERFORM READ_ADDITIONAL_PO_DATA
                USING EIPA-EBELN EIPA-EBELP.
        CHECK SY-SUBRC EQ 0.
        PERFORM FILL_MAT_PRICE USING 'X' EINA-INFNR
                EINE-EFFPR EINE-PEINH EINE-WAERS.
        APPEND MAT_PRICE.
      ENDSELECT.
    ENDFORM.                    " READ_EIPA
    *eject
          Form  FILL_MAT_PRICE
    FORM FILL_MAT_PRICE USING
    *ID X_EBELN X_EFFPR X_PEINH X_WAERS                  "JAN29NOV05
       Block added from here JAN29NOV05
                               ID      TYPE C
                               X_EBELN TYPE C
                               X_EFFPR TYPE EINE-EFFPR
                               X_PEINH TYPE EINE-PEINH
                               X_WAERS TYPE EINE-WAERS.
       Block added till here JAN29NOV05
      CLEAR MAT_PRICE.
      IF X_WAERS NE P_WAERS.
        PERFORM CONVERT_TO_OTHER_CURRENCY USING
                X_EFFPR X_WAERS P_WAERS.
      ENDIF.
      MAT_PRICE-VRTYP = T_EORD-VRTYP.                "PIR / Contract no.
      MAT_PRICE-INFNR = X_EBELN.                     "PIR / Contract no.
      MAT_PRICE-MATNR = T_EORD-MATNR.                "Material
      MAT_PRICE-LIFNR = T_EORD-LIFNR.                "Vendor
      MAT_PRICE-FLIFN = T_EORD-FLIFN.                "Fix Vendor
      MAT_PRICE-WERKS = T_EORD-WERKS.                "Plant
      MAT_PRICE-EKORG = T_EORD-EKORG.                "Purch. organization
      MAT_PRICE-IRPRS = X_EFFPR.                     "PIR / Contract price
      MAT_PRICE-PEINH = X_PEINH.                     "PIR / Contract pr.unit
      CHECK ID NE SPACE.                             "PO history found ?
    latest PO data ...
      IF EKKO-WAERS NE P_WAERS.
        PERFORM CONVERT_TO_OTHER_CURRENCY USING
                EKPO-EFFWR EKKO-WAERS P_WAERS.
      ENDIF.
      MAT_PRICE-EBELN = EKPO-EBELN.                  "PO number
      MAT_PRICE-EBELP = EKPO-EBELP.                  "PO item
      MAT_PRICE-BEDAT = EKKO-BEDAT.                  "PO date
      IF EKPO-MENGE NE 0.
        MAT_PRICE-POPRS = EKPO-EFFWR / ( EKPO-MENGE  "Last PO price = value
    EKPO-BPUMZ / EKPO-BPUMN ). " / Qty. in sales unit
      ELSE.
        MAT_PRICE-POPRS = EKPO-EFFWR.                "Last PO value
      ENDIF.                                         "PO price unit
      MAT_PRICE-LPEIN = EKPO-PEINH.                  "PO price unit
      MAT_PRICE-MENGE = EKPO-MENGE.                  "PO quantity
      MAT_PRICE-MEINS = EKPO-MEINS.                  "PO unit of measure
    ENDFORM.                    " FILL_MAT_PRICE
    *eject
          Form  CONVERT_TO_OTHER_CURRENCY
    FORM CONVERT_TO_OTHER_CURRENCY USING
                           XVALUE FR_CURR TO_CURR.     "JAN29NOV05
       Block added from here JAN29NOV05
                               XVALUE  TYPE ANY
                               FR_CURR TYPE EKKO-WAERS
                               TO_CURR TYPE EINE-WAERS.
       Block added till here JAN29NOV05
      CALL FUNCTION 'MS_CONVERT_TO_OTHER_CURRENCY'
           EXPORTING
                DATE             = SY-DATUM
                FROM_CURRENCY    = FR_CURR
                FROM_AMOUNT      = XVALUE
                TO_CURRENCY      = TO_CURR
                COMPANY_CURRENCY = 'EUR'
           IMPORTING
                TO_AMOUNT        = XVALUE
           EXCEPTIONS
                OTHERS           = 1.
      IF SY-SUBRC NE 0.
        MESSAGE E999(ZZ) WITH 'Currency conversion error from'(E02)
                              FR_CURR 'to' TO_CURR.
      ENDIF.
    ENDFORM.                    " CONVERT_TO_OTHER_CURRENCY
    *eject
          Form  UPLOAD_MATERIAL_SELECTION
    FORM UPLOAD_MATERIAL_SELECTION.
       Block commented from here JAN29NOV05
    CALL FUNCTION 'WS_UPLOAD'
          EXPORTING
               FILENAME            = P_DATEI
               FILETYPE            = 'DAT'
          TABLES
               DATA_TAB            = MAT_SEL
          EXCEPTIONS
               CONVERSION_ERROR    = 1
               FILE_OPEN_ERROR     = 2
               FILE_READ_ERROR     = 3
               INVALID_TABLE_WIDTH = 4
               INVALID_TYPE        = 5
               NO_BATCH            = 6
               UNKNOWN_ERROR       = 7
               OTHERS              = 8.
       Block commented till here JAN29NOV05
       Block added from here JAN29NOV05
      MOVE P_DATEI TO W_FILE.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
       FILENAME                      =  W_FILE
       FILETYPE                      =  C_ASC
       HAS_FIELD_SEPARATOR           =  C_X
      TABLES
        DATA_TAB                     = MAT_SEL
    EXCEPTIONS
       FILE_OPEN_ERROR               = 1
       FILE_READ_ERROR               = 2
       NO_BATCH                      = 3
       GUI_REFUSE_FILETRANSFER       = 4
       INVALID_TYPE                  = 5
       NO_AUTHORITY                  = 6
       UNKNOWN_ERROR                 = 7
       BAD_DATA_FORMAT               = 8
       HEADER_NOT_ALLOWED            = 9
       SEPARATOR_NOT_ALLOWED         = 10
       HEADER_TOO_LONG               = 11
       UNKNOWN_DP_ERROR              = 12
       ACCESS_DENIED                 = 13
       DP_OUT_OF_MEMORY              = 14
       DISK_FULL                     = 15
       DP_TIMEOUT                    = 16
       OTHERS                        = 17.
       Block added till here JAN29NOV05
      IF SY-SUBRC NE 0.
        MESSAGE E999(ZZ) WITH 'Error uploading from file'
                         P_DATEI(40).
      ENDIF.
    ENDFORM.                    " UPLOAD_MATERIAL_SELECTION
    *eject
          Form  AUSGABE
    FORM AUSGABE.
      LOOP AT MAT_PRICE.
        FORMAT COLOR 1 INTENSIFIED OFF.
        WRITE: /01 MAT_PRICE-VRTYP,                  "Document type
                03 MAT_PRICE-INFNR,                  "Info record / Contract
                14 MAT_PRICE-MATNR,                  "Material
                23 MAT_PRICE-WERKS,                  "Plant
                28 MAT_PRICE-EKORG,                  "Purch. organization
                33 MAT_PRICE-LIFNR,                  "Vendor
                44 MAT_PRICE-FLIFN,                  "Fixed Vendor
                46 MAT_PRICE-IRPRS NO-SIGN,          "Info record price
                61 MAT_PRICE-PEINH NO-SIGN.          "IR price unit
        FORMAT COLOR 2 INTENSIFIED.
        IF NOT MAT_PRICE-EBELN IS INITIAL.
          WRITE:  68 MAT_PRICE-POPRS NO-SIGN,        "PO price
                  83 MAT_PRICE-LPEIN NO-SIGN,        "PO price unit
                  90 MAT_PRICE-MENGE,                "PO quantity
                 107 MAT_PRICE-MEINS,                "PO unit of measure
                 111 MAT_PRICE-EBELN,                "PO number
                 123 MAT_PRICE-BEDAT.                "PO date
        ELSE.
          WRITE:  74 'No PO price was found'(005),
                 132 ' '.
        ENDIF.
        HIDE MAT_PRICE-VRTYP.
        AT END OF MATNR.
          SKIP.
        ENDAT.
      ENDLOOP.
      CLEAR MAT_PRICE.
    ENDFORM.                    " AUSGABE
    *eject
          Form  READ_TCURC
    FORM READ_TCURC.
      CLEAR TCURC.
      TCURC-WAERS = P_WAERS.
      READ TABLE TCURC.
      IF SY-SUBRC NE 0.
        MESSAGE E999(ZZ) WITH P_WAERS 'Currency code invalid'(E03).
      ENDIF.
    ENDFORM.                    " READ_TCURC
    *eject
          Form  LIST_HEADER
    FORM LIST_HEADER.
      FORMAT INTENSIFIED.
      WRITE: /01 'Output currency'(006), 25 ': ', P_WAERS,
             122 'Page'(007), SY-PAGNO,
             /01 'Plant'(008), 25 ':  from '(009), S_WERKS-LOW,
              46 'to '(010), S_WERKS-HIGH,
             /01 'Purchasing Organization'(011),
              25 ':  from '(009), S_EKORG-LOW,
              46 'to '(010), S_EKORG-HIGH,
             /01 'PO date'(012), 25 ':  from '(009), S_BEDAT-LOW,
              46 'to '(010), S_BEDAT-HIGH.
      ULINE.
      FORMAT COLOR 1.
      WRITE: /01 TEXT-T01.
      ULINE.
    ENDFORM.                    " LIST_HEADER
    *eject
          Form  CHANGE_SORT_SEQUENCE
    FORM CHANGE_SORT_SEQUENCE.
      GET CURSOR FIELD CURSORFIELD.
      CASE CURSORFIELD+10(5).
        WHEN 'EKORG'.
          SORT MAT_PRICE BY MATNR EKORG POPRS.
          PERFORM AUSGABE.
          MESSAGE S999(ZZ) WITH TEXT-001
                  'Material/Purch.Organization/Info Rec.Price'(013).
        WHEN 'BEDAT'.
          SORT MAT_PRICE BY MATNR BEDAT POPRS.
          PERFORM AUSGABE.
          MESSAGE S999(ZZ) WITH TEXT-001
                  'Material/PO Date/Info Rec.Price'(014).
        WHEN 'IRPRS'.
          SORT MAT_PRICE BY MATNR IRPRS.
          PERFORM AUSGABE.
          MESSAGE S999(ZZ) WITH TEXT-001
                  'Material/Plant/Info Rec.Price'(015).
        WHEN 'POPRS'.
          SORT MAT_PRICE BY MATNR POPRS.
          PERFORM AUSGABE.
          MESSAGE S999(ZZ) WITH TEXT-001
                  'Material/Plant/PO Price'(016).
        WHEN 'LIFNR'.
          SORT MAT_PRICE BY MATNR LIFNR POPRS.
          PERFORM AUSGABE.
          MESSAGE S999(ZZ) WITH TEXT-001
                  'Material/Vendor/PO Price'(017).
        WHEN OTHERS.
          SORT MAT_PRICE BY MATNR WERKS EKORG POPRS.
          PERFORM AUSGABE.
          MESSAGE S999(ZZ) WITH TEXT-001
                  'Material/Plant/PurchOrg/PO Price'(018).
      ENDCASE.
      SY-LSIND = 0.
    ENDFORM.                    " CHANGE_SORT_SEQUENCE
    *eject
          Form  DISPLAY_ORDER
    FORM DISPLAY_ORDER.
      DATA: X_BELNR(10) TYPE C.
      CLEAR CURSORFIELD.
      GET CURSOR FIELD CURSORFIELD.
      IF CURSORFIELD+10(5) NE 'EBELN' AND
         CURSORFIELD+10(5) NE 'INFNR'.
        MESSAGE I999(ZZ) WITH 'Invalid cursor position'.
        EXIT.
      ENDIF.
      GET CURSOR FIELD CURSORFIELD  VALUE X_BELNR.
      CASE CURSORFIELD+10(5).
        WHEN 'EBELN'.                                "Purchase order
          SET PARAMETER ID 'BES' FIELD X_BELNR.
          CALL TRANSACTION 'ME23' AND SKIP FIRST SCREEN.
        WHEN 'INFNR'.                                "Info rec. / Contract
          IF MAT_PRICE-VRTYP EQ C_I.                 "Info Record ...
            SET PARAMETER ID 'INF' FIELD X_BELNR.
            CALL TRANSACTION 'ME13' AND SKIP FIRST SCREEN.
          ELSE.                                      "Contract ...
            SET PARAMETER ID 'VRT' FIELD X_BELNR.
            CALL TRANSACTION 'ME33' AND SKIP FIRST SCREEN.
          ENDIF.
      ENDCASE.
      CLEAR MAT_PRICE.
    ENDFORM.
    *eject
          Form  SOME_REWORK
    FORM SOME_REWORK.
       IF NOT S_BEDAT-LOW IS INITIAL AND             "Align date for output
          S_BEDAT-HIGH IS INITIAL.
         S_BEDAT-HIGH = S_BEDAT-LOW.
         MODIFY S_BEDAT INDEX 1.
       ENDIF.
       CONVERT DATE SY-DATUM INTO INVERTED-DATE      "today's inverted date
               INV_DATE.
    ENDFORM.                    " SOME_REWORK
    *eject
          Form  READ_ADDITIONAL_PO_DATA
    FORM READ_ADDITIONAL_PO_DATA USING
                                  X_EBELN X_EBELP.  "JAN29NOV05
       Block added from here JAN29NOV05
                                    X_EBELN TYPE EIPA-EBELN
                                    X_EBELP TYPE EIPA-EBELP.
       Block added till here JAN29NOV05
      SELECT SINGLE WAERS BEDAT
             INTO CORRESPONDING FIELDS OF EKKO
             FROM EKKO
             WHERE EBELN EQ X_EBELN.
      SELECT SINGLE EBELN EBELP MENGE MEINS
                    PEINH EFFWR BPUMZ BPUMN
             INTO CORRESPONDING FIELDS OF EKPO
             FROM EKPO
             WHERE EBELN EQ X_EBELN
             AND   EBELP EQ X_EBELP
             AND   LOEKZ NE 'L'.
    ENDFORM.                    " READ_ADDITIONAL_PO_DATA
    *eject
          Form  READ_MATERIAL_SOURCE_LIST
          Read source list entries for specified materials
    FORM READ_MATERIAL_SOURCE_LIST.
      SELECT * INTO CORRESPONDING FIELDS OF TABLE T_EORD
             FROM EORD
             WHERE MATNR IN S_MATNR
             AND   WERKS IN S_WERKS
             AND   EKORG IN S_EKORG
             AND   VDATU LE SY-DATUM
             AND   BDATU GE SY-DATUM
             AND ( VRTYP EQ SPACE
             OR    VRTYP EQ C_K ).
      IF SY-SUBRC NE 0 OR
         T_EORD[] IS INITIAL.
        MESSAGE S999(ZZ) WITH 'No data found for this selection'(S01).
      ENDIF.
    ENDFORM.                    " READ_MATERIAL_SOURCE_LIST
    *eject
          Form  GET_PIR_INFORMATION
          Process purchase info records --> purchase order history
    FORM GET_PIR_INFORMATION.
      SELECT INFNR
             INTO EINA-INFNR
             FROM EINA
             WHERE LIFNR EQ T_EORD-LIFNR
             AND   MATNR EQ T_EORD-MATNR
             AND   MATKL IN S_MATKL
             AND   LOEKZ EQ SPACE.
        SELECT SINGLE EFFPR PEINH WAERS
               INTO CORRESPONDING FIELDS OF EINE
               FROM EINE
               WHERE INFNR EQ EINA-INFNR
               AND   EKORG EQ T_EORD-EKORG
               AND   ESOKZ EQ C_0
               AND   WERKS EQ T_EORD-WERKS
               AND   LOEKZ EQ SPACE.
        CHECK SY-SUBRC EQ 0.
        PERFORM READ_EIPA.                           "Read PO history
        IF SY-SUBRC NE 0.
          PERFORM FILL_MAT_PRICE USING ' ' EINA-INFNR
                  EINE-EFFPR EINE-PEINH EINE-WAERS.
          APPEND MAT_PRICE.
        ENDIF.
      ENDSELECT.
    ENDFORM.                    " GET_PIR_INFORMATION
    *eject
          Form  GET_CONTRACT_INFORMATION
          text
    FORM GET_CONTRACT_INFORMATION.
      SELECT SINGLE WAERS
             INTO *EKKO-WAERS
             FROM EKKO
             WHERE EBELN EQ T_EORD-EBELN
             AND   LOEKZ EQ SPACE.
      SELECT SINGLE EBELN EBELP EFFWR PEINH
                    KTMNG BPUMZ BPUMN
             INTO CORRESPONDING FIELDS OF *EKPO
             FROM EKPO
             WHERE EBELN EQ T_EORD-EBELN
             AND   EBELP EQ T_EORD-EBELP
             AND   LOEKZ EQ SPACE.
      CHECK SY-SUBRC EQ 0.
    Get effective price in sales unit ...
      IF *EKPO-KTMNG EQ 0 OR
         *EKPO-BPUMN EQ 0.
        W_EFFPR = *EKPO-EFFWR.
      ELSE.
        W_EFFPR = *EKPO-EFFWR / *EKPO-KTMNG
    *EKPO-BPUMZ / *EKPO-BPUMN.
      ENDIF.
      PERFORM READ_EKAB.
      IF SY-SUBRC NE 0.
        PERFORM FILL_MAT_PRICE USING ' ' *EKPO-EBELN
                W_EFFPR *EKPO-PEINH *EKKO-WAERS.
        APPEND MAT_PRICE.
      ENDIF.
    ENDFORM.                    " GET_CONTRACT_INFORMATION
    *eject
          Form  READ_EKAB
          Read released document (PO's) of contract
    FORM READ_EKAB.
      SELECT EBELN EBELP BEDAT
             INTO CORRESPONDING FIELDS OF EKAB
             FROM EKAB
             UP TO 1 ROWS
             WHERE KONNR EQ T_EORD-EBELN
             AND   KTPNR EQ T_EORD-EBELP
             AND   WERKS EQ T_EORD-WERKS
             AND   EKORG EQ T_EORD-EKORG
             AND   BEDAT IN S_BEDAT
             AND   BSTYP EQ C_F
             ORDER BY BEDAT DESCENDING.
        PERFORM READ_ADDITIONAL_PO_DATA
                USING EKAB-EBELN EKAB-EBELP.
        CHECK SY-SUBRC EQ 0.
        PERFORM FILL_MAT_PRICE USING 'X' T_EORD-EBELN
                W_EFFPR *EKPO-PEINH *EKKO-WAERS.
        APPEND MAT_PRICE.
      ENDSELECT.
    ENDFORM.                    " READ_EKAB

Maybe you are looking for

  • One line item delivery for 3rd party sales order

    Hello Experts, We have configured a 3rd party sales order process where the PR gets created. We are using scheduling agreement(PO) and creating Schedule line and doing a GR for partial line items.  The stock is recieved as a Sales Order stock. But wh

  • Adapter blew up on iPod touch!

    My sons adapter blew up on him! Has anyone else had this happen?

  • Numbered headers with centered text: the numbers are off to the side.

    Hi, I'm trying to create typical numbered headers as they appear in law reviews. For example, (I used underscore characters here to represent characters): ___________________III.Judge-made law However, Pages seems to only do this: III._______________

  • "unavailable" error

    The "activity you're trying to do is unavailable" error is now almost 24 hours old.  portraying this as an "upgrade to our system" is complete hogwash.  that they've been the victim of a cyber attack is fairly obvious now....how long (if ever) will i

  • Macbook Air late 2008 boot and sleep/wake issues

    First off I have a booting issue. When I press the power button when it's off, the little front light comes on for a second, I hear the little non solid state hard drive spin up, then the little front light turns on again, but nothing else happens. T