PF Status Buttons in Multiple lines?

Hello Everyone,
I have a Screen in my program and there are some buttons added to the PF Status of this screen. Now, i want to divide these buttons into two lines, some of these buttons to appear in the first line and some of them in the second line. Is it possible??
Best regards,
rama

No big deal then. Simply put separator on applicaton toolbar. This is vertical line which separates set of options in nice way. If I remember correctly in PF status, expand area where you add buttons on toolbar, right click, choose add separator .
Two lines are obviously not possible, but this solution is also better as the customer must have got used to standard SAP look and feel (where separator is used). Wouldn't he be confused once he see two-line toolbar:) So keep it simple adhering to standard.
Regards
Marcin

Similar Messages

  • Using "All Calls" button for multiple lines on one phone

    I have several executive assistants that have multiple lines for executives that they answer calls for. We have added the "All Calls" button so they don't accidentally make outbound call using one of the executives lines. When the All Calls button is selected, all outbound calls are made using line 1. However, when a call comes in on one of the executives lines it doesn't show the name and number of the calling party unless you select the line.
    How can we make it so the name and number show on the inbound call while having the "All Calls" button selected?

    Little confused still by this, just want to make sure I'm clear.  My current set up with Asterisk is you make users which are extensions, and then enable voicemail on them, so for example:
    Extension 300 - Voicemail enabled
    Extension 301 - Voicemail enabled
    Extension 302 - No Voicemail
    Etc.  And it's there that you set the username/password for each extension.  So on a SIP phone, under Line 1 registration I'd have it register Extension 300, and line 2 could register Extension 301 and so on.  If someone calls extension 300, line 1 rings and if no answer goes to the voicemail box for 300.  If someone calls Extension 301, then line 2 on the phone rings and if no answer goes to voicemail for Line 2.
    I do understand what you mean how each phone is it's own "User", and so the way I have it set up now is my 7970 is my user, and it has Extension 300 with voicemail assigned to Button 1 which works fine.
    I just simply need a way so that Extension 301 shows up on Button 2 on the phone, so that I can select that line to make an outbound call (with a different caller ID), and if someone calls Extension 301, then that line on my phone with also ring, BUT will go to the voicemail box for 301.  I don't need my 7970 to light up that there's a vm or anything like that, it just needs to capture the vm.
    If I make a floating extension or extension mobility for a new user with extension 301 and enable voicemail, then calling 301 does go to its voicemail box, but I'm just not sure how I would have that show up on my 7970 as line 2 and ring on there and make outbound calls on there as well.  Thank you so much!

  • Best way to create button with multiple lines of display text

    now i am using html to do it.
    for example: new button("<html> ABC<br> DEF");
    but this is ok if there is only 2 lines of text. however if there is 3 or more lines of text, the text looks very bad and some case it hides some part of the text.
    also its display also depends on the version of sdk.
    Is there a better way to do it ?
    Thanks

    now i am using html to do it.
    for example: new button("<html> ABC<br> DEF");
    but this is ok if there is only 2 lines of text.
    however if there is 3 or more lines of text, the text
    looks very bad and some case it hides some part of
    the text.
    also its display also depends on the version of sdk.
    Is there a better way to do it ?Alternatives may be:
    (1)Use a layout manager that doesn't honor component's preferred
    size, such as GridLayout. Use a BIG window.
    (2)Override button's getPreferredSize() method. Make it thick.

  • Problem with status-button in item view of ME21/22/23N

    Hello ABAP,
    i have to check for some conditions when a PO is saved, and due to those checks either save it or well, not.
    This is working fine so far.
    when you click check, or save, conditions get checked and window with errors pops up.
    I´m using the normal error message procession used in SAPLMEGUI which i have to fill with thos three makros.
    I just have one problem, my status button in item line doesnt get updated. i tried with a lot of metafields by now but it seems trial and error is not the way to go here.
    any tips?

    requirement resolved.
    solution follows:
    DATA: lt_ytab             TYPE TABLE OF ysdch_vbap_idnlf,
          lt_data             TYPE TABLE OF ymmch_check_idnlf_out, "added ID (TYPE INT4) Field to structure
          lt_out              TYPE TABLE OF char80.
    DATA: ls_ytab             TYPE ysdch_vbap_idnlf,
          ls_mska             TYPE mska,
          ls_data             TYPE ymmch_check_idnlf_out,
          ls_out              TYPE char80,
          lv_row_end          TYPE i VALUE 10.
    CONSTANTS:  lc_col_start        TYPE i VALUE 10,
                lc_col_end          TYPE i VALUE 40,
                lc_row_start        TYPE i VALUE 10,
                lc_title            TYPE char80 VALUE
                'Fehler, noch Bestand zu Liquidations/Annulationsaufträgen vorhanden'.
    *~~~Get header data
    ls_head = im_header->get_data( ).
    *~~~Get item data
    lt_items = im_header->get_items( ).
    LOOP AT lt_items INTO lr_item.
      ls_item = lr_item-item->get_data( ).  "EKPO
      "select liquidations/annulations orders for supplier material nr.
      SELECT *
      FROM   ysdch_vbap_idnlf
      INTO   TABLE lt_ytab
      WHERE  /fis/idnlf = ls_item-idnlf.
      LOOP AT lt_ytab INTO ls_ytab.
        "now lets see which of those orders has order stock
        SELECT SINGLE kalab kaspe
        FROM   mska
        INTO   CORRESPONDING FIELDS OF ls_mska
        WHERE  vbeln = ls_ytab-vbeln
        AND    posnr = ls_ytab-posnr.
        IF ls_mska-kalab GT 0 OR ls_mska-kaspe GT 0.
          ls_data-vbeln       = ls_ytab-vbeln.
          ls_data-posnr       = ls_ytab-posnr.
          ls_data-/fis/idnlf  = ls_item-idnlf.
          ls_data-kalab       = ls_mska-kalab.
          ls_data-kaspe       = ls_mska-kaspe.
          ls_data-meins       = ls_item-meins.
          ls_data-ebelp       = ls_item-ebelp.
          ls_data-id          = ls_item-id. "saved ID for later processing
          APPEND ls_data TO lt_data.
        ELSE.
          CONTINUE.
        ENDIF.
      ENDLOOP.
    ENDLOOP. " lt_item
    IF NOT lt_data IS INITIAL.
      "we got annulation/liquidation orders with order stock for this material
      "so popup a error message
      LOOP AT lt_data INTO ls_data.
        IF NOT ls_data-vbeln IS INITIAL AND NOT ls_data-posnr IS INITIAL.
          mmpur_business_obj_id ls_data-id. "using other makro now and making use of ID
          "using mmpur_business_obj_id instead of mmpur_business_obj_it
        ENDIF.
        mmpur_metafield mmmfd_item_number.
        mmpur_message  'W' 'YMMCH' '110' ls_data-vbeln ls_data-posnr ls_data-ebelp ' '.
      ENDLOOP.
      ch_failed = 'X'.
    ENDIF.
    Edited by: Florian Kemmer on Sep 7, 2010 3:22 PM

  • Display a text in multiple lines inside a button

    I have a toggle button bar containing many buttons as follows:
    <mx:ToggleButtonBar id="menu"               
         itemClick="clickButton(event)"
         styleName="myToggleButtonBarStyle"/>
    The styles apllied are :
    <mx:Style>
              .myToggleButtonBarStyle {
                   button-style-name: "buttons";  
                   vertical-center:0;
         .buttons {
              text-selected-color: #14476c;
              text-roll-over-color: #14476c;
              up-skin: Embed(source="/phase_grey.png");
              over-skin: Embed(source="/phase_blue.png");
              down-skin: Embed(source="/phase_blue.png");
              selected-up-skin: Embed(source="/phase_blue.png");
              selected-over-skin: Embed(source="/phase_blue.png");
              selected-down-skin: Embed(source="/phase_blue.png");
              padding-left:45;
              padding-right:30;
         </mx:Style>
    My problem is that when I have a long text, it is displayed in one ligne so the button get larger. I do not want my button to get larger it has to keep the initila size (my button is an image). I want indeed to display the text in multiple lines rather than only one.
    How to do this?
    Thank's in advance

    These links on multi-line buttons in Flex should answer your question:
    http://blogs.adobe.com/aharui/2007/04/multiline_buttons.html
    http://www.igorcosta.org/?p=73
    http://www.nabble.com/Is-it-possible-to-make-multiline-Button--td7508988.html
    http://electro-bunny.blogspot.com/2009/02/creating-multiline-button-in-flex.html
    If this post answers your question or helps, please mark it as such.

  • Trying to create multiple lines of radio buttons on the same page. how do i do that??

    Greetings. I'm brand new to this, and am trying to create a form with multiple lines of radio buttons on a single page to send to my students.  How can I do this??  I currently have a table that I want the students to fill out and return, but every time I put radio buttons in, the form only allows selection of one of the 12 - I want students to be able to select one on each row.........

    Each group of three radio buttons for a row should have the same field name and different "Radio Button Choice" (see Options tab). So if you copy & paste the first row, be sure to rename the new ly added radio buttons.

  • How to select multiple lines in ALV report

    hi gurus,
    I am working on an interactive ALV report where i have to select multiple lines from the basic list into an internal table, based on check box clicks. Using RS_SELFIELD i can select only 1 row. The coding has been done based on Call Function. Can u please suggest some way.
    Regards,
    Satyajit

    hi,
    try like this
    TABLES:     ekko.
    TYPE-POOLS: slis.                                 "ALV Declarations
    TYPES: BEGIN OF t_ekko,
      sel,                         "stores which row user has selected
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
          fieldcatalog1 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
          gd_tab_group TYPE slis_t_sp_group_alv,
          gd_layout    TYPE slis_layout_alv,
          gd_repid     LIKE sy-repid.
    DATA : BEGIN OF det_tab OCCURS 0,
            ebeln LIKE ekpo-ebeln,
           END OF det_tab.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM build_fieldcatalog.
      PERFORM build_layout.
      PERFORM display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
    *       Build Fieldcatalog for ALV Report
    FORM build_fieldcatalog.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-do_sum      = 'X'.        "Display column total
      fieldcatalog-datatype     = 'CURR'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
    *       Build layout for ALV grid report
    FORM build_layout.
      gd_layout-box_fieldname     = 'SEL'.
      "set field name to store row selection
      gd_layout-edit              = 'X'. "makes whole ALV table editable
      gd_layout-zebra             = 'X'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
    *       Display report using ALV grid
    FORM display_alv_report.
      gd_repid = sy-repid.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program       = gd_repid
          i_callback_user_command  = 'USER_COMMAND'
          i_callback_pf_status_set = 'SET_STAT'
          is_layout                = gd_layout
          it_fieldcat              = fieldcatalog[]
          i_save                   = 'X'
        TABLES
          t_outtab                 = it_ekko
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
    *       Retrieve data form EKPO table and populate itab it_ekko
    FORM data_retrieval.
      SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
       UP TO 10 ROWS
        FROM ekpo
        INTO CORRESPONDING FIELDS OF TABLE it_ekko.
    ENDFORM.                    " DATA_RETRIEVAL
    *       FORM USER_COMMAND                                          *
    *       --> R_UCOMM                                                *
    *       --> RS_SELFIELD                                            *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
    * Check function code
      CASE r_ucomm.
        WHEN '&IC1'.
          IF rs_selfield-fieldname = 'EBELN'.
            READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
            SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
            CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
          ENDIF.
        WHEN 'DET'.  "button add by me
          CLEAR det_tab.
          REFRESH det_tab.
          LOOP AT it_ekko INTO wa_ekko WHERE sel = 'X'.
            MOVE-CORRESPONDING wa_ekko TO det_tab.
            APPEND det_tab.
          ENDLOOP.
          PERFORM build_cat.
          PERFORM dis_data.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  set_stat
    *       text
    *      -->RT_EXTAB   text
    FORM set_stat USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZSTAT' EXCLUDING rt_extab.
    ENDFORM.                    "set_stat
    *&      Form  build_cat
    *       text
    FORM build_cat.
      CLEAR fieldcatalog1.
      REFRESH fieldcatalog1.
      fieldcatalog1-fieldname = 'EBELN'.
      fieldcatalog1-tabname = 'DET_TAB'.
      fieldcatalog1-seltext_m = 'Order No.'.
      fieldcatalog1-outputlen = 10.
      APPEND fieldcatalog1 TO fieldcatalog1.
      CLEAR fieldcatalog1.
    ENDFORM.                    "build_cat
    *&      Form  dis_data
    *       text
    FORM dis_data.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = 'ZTEST_DS'
          it_fieldcat        = fieldcatalog1[]
          i_save             = 'X'
        TABLES
          t_outtab           = det_tab.
    ENDFORM.                    "dis_data
    here i have copied standard gui status of ALV into my z status ZSTAT and add one button DET......
    here u can select morethan one line using control(ctrl)
    reward if usefull...

  • Multiple line items with eCATT....again

    Hi folks,
    I am struggling with adding multiple lines in an eCATT script. For this example I will use the Airline demo example from SAP help: http://help.sap.com/saphelp_nw70ehp1/helpdata/en/fd/4f6b3f3d643b3be10000000a114084/content.htm.
    (You initialize the Airline demo data with SE38>>SAPBC_DATA_GENERATOR first.)
    The demo is based on transaction EC_TUTORIAL_SAPGUI.
    Start transaction EC_TUTORIAL_SAPGUI
    Open an airline and flight
    Right click on a date and select New Booking
    Pick a customer from F4 list
    Select Passengers tab
    Enter a last name, title and date of birth.
    I have created the script, system and test data containers and test configuration. Everything runs great.
    Now I want to modify it a little so I can add multiple passengers into one flight booking request.
    I have read Sapna Modi & Rakesh Kumar Jain's excellent blogs and have been able to start using eCATT productively with their help. Also from reading all the SDN posts I think I need the DO...ENDDO loop. (I would like to do it without inline ABAP mainly because I don't know ABAP at all and we will want to do similar things in the future with other non-ABAP'ers.)
    Here is my test script ZTUTORIAL_TS_LOOP:
    SAPGUI ( EC_TUTORIAL_SAPGUI_100_1 ).
    SAPGUI ( EC_TUTORIAL_SAPGUI_120_1 ).
    GETGUI ( EC_TUTORIAL_SAPGUI_100_4 ).
    Switch to Passengers tab. Cursor in Class field.
    SAPGUI ( EC_TUTORIAL_SAPGUI_100_STE_1 ).
    Delete first row so I start with empty table.
    SAPGUI ( EC_TUTORIAL_SAPGUI_100_STE_2 ).
    This is where I am stuck. I don't know how to add as many rows as there are variants (records) in my test data containter.
    The way it is below, it inserts the same record twice and the whole script repeats for each record in the TDC.
    DO ( 2 ).
    Insert row and type passenger name, title, DOB.
    SAPGUI ( EC_TUTORIAL_SAPGUI_100_STE_3 ).
    ENDDO.
    Save.
    SAPGUI ( EC_TUTORIAL_SAPGUI_100_STE_4 ).
    Confirm pop-up.
    SAPGUI ( EC_TUTORIAL_SAPGUI_110_STE_1 ).
    Show message in status bar.
    SAPGUI ( EC_TUTORIAL_SAPGUI_100_STE_5 ).
    I know I have to pass the DO a parameter and somehow get that into the command and use that to loop through the test data container, I just haven't been able to put the pieces together. Can anybody help? Thank you,
    David

    Dear David,Vinay and Sebastian,
    I have an issue....I am new to ECATT.
    iam Using SECATT Transaction.
    I need 2 record PFCG to Create Role and assign Multiple Transactions.
    Now I have Gone through th eBlogs of Sapna and many other links.
    Firstly I have Tried Both the Methods,
    TCD and GUI as well.
    My Case is as Follows....
    1)while Creating Role in PFCG(Recording).
    I give
             a)Role Name
             b)Description Then Navigate to Menu Tab
             c)Click on  Transaction Button
             d)now this is where the Problem Arises.
    I  first    Enter VA01 and press enter
       Then  Enter Va02 and Press enter
    Similarly I make Multiple Entries.
    After that I Click on Assign Transaction and then Save my Recording and then go back.
    Now I am Done with my recording.
    Now issue is after creating my Test Script...When i Create the Test Configuration.
    I provide the Test Script Name and Download the Template.
    Now after Creating Template I give Entries as follows in tab Delimit Format.
    I modified my File as follows.
    [VARIANT]                          [DESCRIPTION]     V_ROLE_NAME     V_DESC     V_TCODE
                                          BDC field value     BDC field value     BDC field value
    *ECATTDEFAULT                           X104     A1     VL03N
    1          ROLE1     A1     SE37
    2          ROLE1     A1     SE38
    3          ROLE1     A1     SE51
    Problems:-
    1)Whenever I Execute The Recording it Shows Previous Entry which i made during Recording and says that the Role already Exists
    2)while recording in Foreground Teh File Picks ROLE1 then picks the Desc  A1 then when it Picks the Transaction  se37.
    now when it Goes to second line it Shows the Previous Entry I JUST ENTERED.i.e SE37 and says that Tcode laready Exists.
    How do i Clear this previus variables.
    2ndly if i Program My Code and dont Use External Vaiant.
    I made the File as Below as Text Delimit and This Time iam not using The Template.
    But when i Execute it It Gives Error.
    Is there any Problem with My File..Please Suggest.
    It has been 3 Days and iam Still Stuck at this issue.
    ROLE2     DES1     MB5B
    ROLE2     DES2     ME23N        
    Please Respond.
    Thanks Awaiting.
    Essam

  • Multiple line selection and then capturing the selected values

    Dear all
      in my alv program ,i need to capture multiple line selections  using checkboxes.
    I have appended check boxes by adding it in the internal table  & filling in field catalog.
    but problem is i'm not able to capture multiple selected check boxes dynamically,
    i could capture only the last selected check box,
    option i found was to use class method get-selected-rows,but i'm unable to use it properly, could anyone explain in detail
    i have already gone through the various examples in sdn but i am not able to work out.
    like using parameters etc....
    CAN ANY ONE HELP ME WITH THE CODE
    help reqired  immediately,
    Thanks in advance.

    Hi Ankur,
    In the PAI, just after the selection of your user event, button or menu,
    add this code before getting the selected records.
    <b>CALL METHOD grid1->check_changed_data
                 IMPORTING
                   e_valid = ws_x.</b>
    where    grid1  TYPE REF TO cl_gui_alv_grid,
    Now fetch the selected records.
    Check this code for reference
                C O M P A N Y   C O N F I D E N T I A L                **
           Care should be taken to prevent its unauthorized use.       **
    REPORT zfipost MESSAGE-ID f4 NO STANDARD PAGE HEADING .
    AUTHOR   : Susmitha Susan Thomas
    DATE     : August 18, 2005
    *Abridged Version : This report generates a list in Abap List Viewer of
                      all the selected records in VBKPF/VBSEG. * *
                      (TRANSACTION ZPPD:Modified from transaction FBV0)
    -- Class definition--
    CLASS lcl_event_receiver DEFINITION DEFERRED.
    --Tables--
    TABLES:  vbkpf. " Belegkopf
    TABLES: tsp1d, pri_params, spopli.
    TYPE-POOLS slis.
    ---- Global Variables -
    DATA:    anzkr(6)     TYPE n,
             lsind        LIKE sy-lsind,
             no_output(1) TYPE c,
             records(1) TYPE c,
             xpick(1)     TYPE c,
             xpickc(1)    TYPE c,
             xbinp(1)     TYPE c,
             rc           LIKE syst-subrc,
             ok_code LIKE sy-ucomm,
             index TYPE i,
             char_x(1)    TYPE c VALUE 'X',
             post         TYPE c,
             ans          TYPE n,
             user(40) TYPE c.
    DATA :BEGIN OF i_doctype OCCURS 0,
             blart LIKE vbkpf-blart,
          END OF i_doctype.
    --AlV Initialization--
    DATA:  gs_layout TYPE lvc_s_layo,
           gt_fieldcat TYPE lvc_t_fcat,
           gs_fieldcat TYPE lvc_s_fcat,
           gs_index_rows TYPE lvc_t_row,
           l_layout TYPE disvariant,
           g_repid LIKE sy-repid,
           g_max TYPE i VALUE 100,
           ws_row_idx TYPE lvc_t_row ,
           ws_row_no TYPE lvc_t_roid,
           i_excl_func TYPE ui_functions,
           ls_prnt TYPE lvc_s_prnt,
           refresh TYPE c,
           i_fieldcat  TYPE lvc_t_fcat,
          post(1) TYPE c,
           accr_def(1) TYPE c,
           rev_cd(3) TYPE c,
           ch(1) TYPE c.
    DATA: list_index LIKE sy-lsind,
          flag TYPE n VALUE 0,
          fl TYPE n VALUE 0,
          g_container TYPE scrfname VALUE 'GRID_CONTAINER',
          grid_container TYPE REF TO cl_gui_docking_container,
          grid1  TYPE REF TO cl_gui_alv_grid,
          custom_container1 TYPE REF TO cl_gui_custom_container,
          event_receiver TYPE REF TO lcl_event_receiver,
          gt_vbkpf1 TYPE STANDARD TABLE OF vbkpf WITH HEADER LINE,
          i_vbkpf TYPE  TABLE OF vbkpf WITH HEADER LINE,
          i_ws_row_idx LIKE ws_row_idx WITH HEADER LINE.
    ---Internal table containing details of selected documents--
    DATA : BEGIN OF gt_vbkpf OCCURS 0,
             xpick(1) TYPE c,
             belnr LIKE vbkpf-belnr,
             gjahr LIKE vbkpf-gjahr,
             bukrs LIKE vbkpf-bukrs,
             blart LIKE vbkpf-blart,
             budat LIKE vbkpf-budat,
             bldat LIKE vbkpf-bldat,
             bktxt LIKE vbkpf-bktxt,
             waers LIKE vbkpf-waers,
             usnam LIKE vbkpf-usnam,
             xblnr LIKE vbkpf-xblnr,
             rev_code(3) TYPE c,
             rev_rsn(15) TYPE c,
             rev_date(10) TYPE c,
             linecolor(4) TYPE c,
           END OF gt_vbkpf.
    --Table to store long text--
    DATA : BEGIN OF inline OCCURS 0,
    tdformat TYPE tdformat,
    tdline TYPE tdline,
    END OF inline.
    DATA: thead LIKE thead OCCURS 0 WITH HEADER LINE.
    -- Records to be posted--
    DATA:   BEGIN OF tbkpf OCCURS 5.
            INCLUDE STRUCTURE vbkpf.
    DATA:   END   OF tbkpf.
    ---- Constants -
    CONSTANTS: awtyp_bkpf TYPE awtyp VALUE 'BKPF '.
    CONSTANTS: awtyp_space TYPE awtyp VALUE '     '.
    Selection Screen
    PARAMETER: funcl   LIKE t020-funcl NO-DISPLAY.   "P(ost),D(isplay),U(pd)
    SELECTION-SCREEN SKIP 2.
    SELECT-OPTIONS:
             p_bukrs     FOR  vbkpf-bukrs,
             p_belnr     FOR  vbkpf-belnr,
             p_gjahr     FOR  vbkpf-gjahr,
             p_budat     FOR  vbkpf-budat,
             p_bldat     FOR  vbkpf-bldat,
             p_blart     FOR  vbkpf-blart,
             p_xblnr     FOR  vbkpf-xblnr,
             p_bktxt     FOR  vbkpf-bktxt,
             p_usnam     FOR  vbkpf-usnam.
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN BEGIN OF BLOCK blk
                WITH FRAME TITLE text-010 NO INTERVALS.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(35) text-002.
    PARAMETER norm_doc    TYPE c
              RADIOBUTTON GROUP doc DEFAULT 'X' .
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(35) text-001.
    PARAMETER ad_doc       TYPE c
               RADIOBUTTON GROUP doc .
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(35) text-003.
    PARAMETER all_doc       TYPE c
                RADIOBUTTON GROUP doc .
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK blk.
          CLASS lcl_event_receiver DEFINITION
          For capturing events on the ALV                               *
    CLASS lcl_event_receiver DEFINITION.
      PUBLIC SECTION.
        METHODS:
    to capture all recently changed data.
          handle_data_changed      FOR EVENT data_changed OF
                                           cl_gui_alv_grid
                                           IMPORTING er_data_changed,
    for hot spot
          handle_hotspot           FOR EVENT hotspot_click OF
                                           cl_gui_alv_grid
                                           IMPORTING e_column_id e_row_id.
    ENDCLASS.   " lcl_event_receiver (Definition)
          CLASS lcl_event_receiver (Implementation)
          For capturing events on the ALV                               *
    CLASS lcl_event_receiver IMPLEMENTATION.
      METHOD handle_data_changed.
        PERFORM f2200_handle_data_changed USING er_data_changed.
      ENDMETHOD.
      METHOD handle_hotspot.
        PERFORM f2201_handle_hotspot USING e_column_id e_row_id .
      ENDMETHOD.
    ENDCLASS.  " lcl_event_receiver (Implementation)
    AT SELECTION-SCREEN
    AT SELECTION-SCREEN.
    START-OF-SELECTION
    START-OF-SELECTION.
    ---- Colors -
      FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
    -------------------- Status und Title Bar----------------------------*
      SET PF-STATUS funcl.
      SET TITLEBAR  funcl.
    -- Read Records--
      SELECT * FROM vbkpf INTO TABLE gt_vbkpf1
          WHERE bukrs IN p_bukrs
            AND ausbk IN p_bukrs
            AND belnr IN p_belnr
            AND gjahr IN p_gjahr
            AND budat IN p_budat
            AND bldat IN p_bldat
            AND blart IN p_blart
            AND bktxt IN p_bktxt
            AND xblnr IN p_xblnr
            AND usnam IN p_usnam
            AND bstat EQ 'V'
          AND ( awtyp IN (awtyp_bkpf, awtyp_space) OR
                awtyp IS null )
          ORDER BY PRIMARY KEY.
    ----Call the ALV Screen -
      PERFORM alv_display.
    END-OF-SELECTION.
                         FORM BELEG_PICKUP                              *
          Indicate changing of the selected external record             *
    FORM beleg_pickup.
      SET PARAMETER ID 'BUK' FIELD vbkpf-bukrs.
      SET PARAMETER ID 'GJR' FIELD vbkpf-gjahr.
      SET PARAMETER ID 'BLP' FIELD vbkpf-belnr.
      CASE funcl.
         WHEN 'P'.
          IF anzkr IS INITIAL.
            CALL FUNCTION 'ZPRELIMINARY_POSTING_POST_D'
                 EXPORTING
                      bukrs = vbkpf-bukrs
                      belnr = vbkpf-belnr
                      gjahr = vbkpf-gjahr.
          ELSE.
            IF sy-ucomm EQ 'BUCH'.
              CALL FUNCTION 'ZPRELIMINARY_POSTING_POST_ALL'
                   EXPORTING
                        synch   = char_x
                        bupbi   = xbinp
                   TABLES
                        t_vbkpf = tbkpf.
            ELSE.
              CALL FUNCTION 'ZPRELIMINARY_POSTING_POST_ALL'
                   EXPORTING
                        bupbi   = xbinp
                   TABLES
                        t_vbkpf = tbkpf.
             wait up to 3 seconds.
             commit work.
            ENDIF.
          ENDIF.
        WHEN OTHERS.
          IF sy-tcode = 'ZPPD'.
            funcl = 'P'.
          ENDIF.
          CALL FUNCTION 'ZPRELIMINARY_POSTING_DISPLAY'
               EXPORTING
                    bukrs = vbkpf-bukrs
                    belnr = vbkpf-belnr
                    gjahr = vbkpf-gjahr.
      ENDCASE.
    ENDFORM.
                        FORM TBKPF_FUELLEN                              *
                Include  records for posting in TBKPF                   *
    FORM tbkpf_fuellen.
      records = 'X'.
      LOOP AT gt_vbkpf.
        IF gt_vbkpf-xpick = 'X'.
          CLEAR anzkr.
          CLEAR records.
          IF sy-subrc = 0.
            anzkr = anzkr + 1.
            MOVE-CORRESPONDING gt_vbkpf TO tbkpf.
            APPEND tbkpf.
          ELSE.
            EXIT.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.
                              FORM MALL                                 *
                         Select All documents                           *
    FORM mall.
      LOOP AT gt_vbkpf.
        gt_vbkpf-xpick = 'X'.
        MODIFY gt_vbkpf.
      ENDLOOP.
      refresh = 'X'.
      CALL METHOD grid1->refresh_table_display.
    ENDFORM.
                             FORM EMAL                                  *
                       Unselect all documents                           *
    FORM emal.
      LOOP AT gt_vbkpf.
        gt_vbkpf-xpick = ' '.
        MODIFY gt_vbkpf.
      ENDLOOP.
      refresh = 'X'.
      CALL METHOD grid1->refresh_table_display.
    ENDFORM.
                         Form  alv_display                               *
                  To display the details on an ALV.                      *
    FORM alv_display.
      CALL SCREEN 100.
    ENDFORM.                    " alv_display
    *&      Module  PB0_100  OUTPUT
    MODULE pb0_100 OUTPUT.
      SET PF-STATUS 'MAIN100'.
      SET TITLEBAR 'POSTDOC'.
    --To verify that posting is complete.--
    ---- Setting the layout -
      IF grid1 IS INITIAL.
        PERFORM fill_table.
    -- Initializing the field catalog--
        PERFORM fieldcat_init CHANGING i_fieldcat.
    -- Initializing the ALV GRID and CONTAINER--
        CLEAR gs_layout.
        gs_layout-info_fname = 'linecolor'.
        gs_layout-grid_title = 'Parked Documents'(100).
        gs_layout-zebra               = 'X'.
        gs_layout-cwidth_opt   = 'X'.
        gs_layout-sel_mode = 'A'.
        gs_layout-edit                = 'X'.
        l_layout-report = sy-repid.
    ------ Create a custom container control for ALV Control----
        IF cl_gui_alv_grid=>offline( ) IS INITIAL.
          CREATE OBJECT grid_container
             EXPORTING
               dynnr                     = '100'
               ratio                     = '100'
            EXCEPTIONS
             cntl_error                  = 1
             cntl_system_error           = 2
             create_error                = 3
             lifetime_error              = 4
             lifetime_dynpro_dynpro_link = 5
             others                      = 6.
          IF sy-subrc NE 0.
         MESSAGE i000 WITH text-007.  " Error in object creation
            LEAVE LIST-PROCESSING.
          ENDIF.
    -- Create an instance of alv control--
          CREATE OBJECT grid1
                 EXPORTING
                    i_lifetime = 1
                    i_parent = grid_container.
    ---- Disable all unwanted button in the ALV grid -
          PERFORM disable_functions TABLES i_excl_func.
    ---- Call the display function of ALV grid -
          CALL METHOD grid1->set_table_for_first_display
               EXPORTING
                         is_variant       = l_layout
                         i_save           = 'A'
                         is_layout        = gs_layout
                         is_print         = ls_prnt
                         it_toolbar_excluding          = i_excl_func
               CHANGING  it_outtab        = gt_vbkpf[]
                         it_fieldcatalog  = i_fieldcat.
        ENDIF.                  "  IF cl_gui_alv_grid=>offline IS INITIAL
        CALL METHOD grid1->register_edit_event
            EXPORTING
             i_event_id = cl_gui_alv_grid=>mc_evt_enter.
        CALL METHOD grid1->register_edit_event
          EXPORTING
            i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    ---- Create a reciever object to handle events -
        CREATE OBJECT event_receiver.
        SET HANDLER event_receiver->handle_data_changed FOR grid1.
        SET HANDLER event_receiver->handle_hotspot FOR grid1.
        CALL METHOD cl_gui_control=>set_focus EXPORTING control = grid1.
      ENDIF.                   " IF grid1 IS INITIAL.
    ENDMODULE.                 " PB0_100  OUTPUT
    *&      Form  fill_table
         Fills the data table to be passed to the ALV grid.
    FORM fill_table.
      LOOP AT gt_vbkpf1.
        MOVE-CORRESPONDING gt_vbkpf1 TO gt_vbkpf.
        IF ad_doc = 'X' OR all_doc = 'X'.
          thead-tdobject = 'BELEG'.
          CONCATENATE gt_vbkpf1-bukrs
                      gt_vbkpf1-belnr
                      gt_vbkpf1-gjahr INTO thead-tdname.
          thead-tdspras = sy-langu.
          thead-tdid = '0004'.
          PERFORM read_text.
          READ TABLE inline INDEX 1.
          gt_vbkpf-rev_code =  inline-tdline.
          REFRESH inline.
          CLEAR inline.
          thead-tdid = '0005'.
          PERFORM read_text.
          READ TABLE inline INDEX 1.
          gt_vbkpf-rev_rsn =  inline-tdline.
          REFRESH inline.
          CLEAR inline.
          thead-tdid = '0006'.
          PERFORM read_text.
          READ TABLE inline INDEX 1.
          gt_vbkpf-rev_date =  inline-tdline.
          REFRESH inline.
          CLEAR inline.
          REFRESH inline.
          CLEAR inline.
        ENDIF.
        APPEND gt_vbkpf.
        CLEAR gt_vbkpf.
    ENDLOOP.
      ENDLOOP.
    ENDFORM.
    *&      Form  fieldcat_init
         Initialize the field catalog
    FORM fieldcat_init CHANGING i_fieldcat TYPE lvc_t_fcat.
      DATA: i_fldcat TYPE lvc_t_fcat WITH HEADER LINE.
    CHECKBOX
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'XPICK'.
      i_fldcat-checkbox  = 'X'.
    i_fldcat-key       = 'X'.
      i_fldcat-tabname   = 'GT_VBKPF'.
      i_fldcat-outputlen   =  '4'.
      i_fldcat-scrtext_l =  'ChkB'.
       APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'BELNR'.
      i_fldcat-tabname   = 'GT_VBKPF'.
    i_fldcat-key       = 'X'.
      i_fldcat-hotspot   = 'X'.
      i_fldcat-outputlen   =  '15'.
      i_fldcat-scrtext_l =  'Document Number'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'GJAHR'.
      i_fldcat-tabname   = 'GT_VBKPF'.
    i_fldcat-key       = 'X'.
      i_fldcat-scrtext_l = 'FYear'.
      i_fldcat-outputlen   = '5'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'BUKRS'.
      i_fldcat-tabname   = 'GT_VBKPF'.
    i_fldcat-key       = 'X'.
      i_fldcat-scrtext_l = 'CCode'.
      i_fldcat-outputlen   =  '5'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'BLART'.
      i_fldcat-tabname   = 'GT_VBKPF'.
    i_fldcat-key       = 'X'.
      i_fldcat-scrtext_l = 'Type'.
      i_fldcat-outputlen   =  '6'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'BLDAT'.
      i_fldcat-tabname  = 'GT_VBKPF'.
    i_fldcat-key      = 'X'.
      i_fldcat-scrtext_l = 'Doc Date'.
      i_fldcat-outputlen   =  '12'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'BUDAT'.
      i_fldcat-tabname  = 'GT_VBKPF'.
    i_fldcat-key      = 'X'.
      i_fldcat-scrtext_l = 'Park Date'.
      i_fldcat-outputlen   =  '12'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'BKTXT'.
      i_fldcat-tabname  = 'GT_VBKPF'.
    i_fldcat-key      = 'X'.
      i_fldcat-scrtext_l = 'Document Header Text'.
      i_fldcat-outputlen   =  '25'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'WAERS'.
      i_fldcat-tabname  = 'GT_VBKPF'.
    i_fldcat-key      = 'X'.
      i_fldcat-scrtext_l = 'Curr'.
      i_fldcat-outputlen   =  '7'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'USNAM'.
      i_fldcat-tabname   = 'GT_VBKPF'.
    i_fldcat-key       = 'X'.
      i_fldcat-scrtext_l = 'Parked By'.
      i_fldcat-outputlen   =  '13'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'XBLNR'.
      i_fldcat-tabname   = 'GT_VBKPF'.
    i_fldcat-key       = 'X'.
      i_fldcat-scrtext_l = 'Reference Text'.
      i_fldcat-outputlen   =  '19'.
      APPEND i_fldcat TO i_fieldcat.
      IF ad_doc = 'X' OR all_doc = 'X'.
        CLEAR i_fldcat.
        i_fldcat-fieldname = 'REV_CODE'.
        i_fldcat-tabname   = 'GT_VBKPF'.
       i_fldcat-key       = 'X'.
        i_fldcat-scrtext_l = 'RC'.
        i_fldcat-outputlen   =  '2'.
        APPEND i_fldcat TO i_fieldcat.
        CLEAR i_fldcat.
        i_fldcat-fieldname = 'REV_RSN'.
        i_fldcat-tabname   = 'GT_VBKPF'.
       i_fldcat-key       = 'X'.
        i_fldcat-scrtext_l = 'Rev Reason'.
        i_fldcat-outputlen   =  '15'.
        APPEND i_fldcat TO i_fieldcat.
        CLEAR i_fldcat.
        i_fldcat-fieldname = 'REV_DATE'.
        i_fldcat-tabname   = 'GT_VBKPF'.
       i_fldcat-key       = 'X'.
        i_fldcat-scrtext_l = 'Rev Date'.
        i_fldcat-outputlen   =  '10'.
        APPEND i_fldcat TO i_fieldcat.
      ENDIF.
    ENDFORM.                    " fieldcat_init
    *&      Module  PAI_100  INPUT
    MODULE pai_100 INPUT.
      CASE ok_code.
        WHEN 'BACK'.
          IF sy-dynnr = '1000'.
            PERFORM exit_program.
          ELSEIF sy-dynnr = '0100'.
            LEAVE TO TRANSACTION 'ZPPD'.
          ENDIF.
        WHEN 'EXIT'.
          IF sy-dynnr = '1000'.
            PERFORM exit_program.
          ELSEIF sy-dynnr = '0100'.
            LEAVE TO TRANSACTION 'ZPPD'.
          ENDIF.
        WHEN '%EX'.
          IF sy-dynnr = '1000'.
            PERFORM exit_program.
          ELSEIF sy-dynnr = '0100'.
            LEAVE TO TRANSACTION 'ZPPD'.
          ENDIF.
        WHEN 'BINP'.
          DATA : ws_x TYPE c VALUE 'X'.
          CALL FUNCTION 'POPUP_TO_CONFIRM'
              EXPORTING
                   titlebar      = 'Posting Documents Via Batch Input'
                   text_question =
               'Are you sure you want to post all the selected documents?'
                   text_button_1 = 'Yes'
                   text_button_2 = 'No'
                   start_column  = 25
                   start_row     = 6
              IMPORTING
                   answer        = ans.
          IF ans = '1'.
            CALL METHOD grid1->check_changed_data
                 IMPORTING
                   e_valid = ws_x.
            xbinp = 'X'.
            PERFORM tbkpf_fuellen.
            IF records = 'X'.
              MESSAGE s999(zv) WITH text-007.
            ELSE.
              PERFORM beleg_pickup.
            ENDIF.
          ENDIF.
        WHEN 'MALL'.
          PERFORM mall.
        WHEN 'EMAL'.
          PERFORM emal.
        WHEN 'RW'.
          IF sy-dynnr = '1000'.
            PERFORM exit_program.
          ELSEIF sy-dynnr = '0100'.
            LEAVE TO TRANSACTION 'ZPPD'.
          ENDIF.
        WHEN 'BUCH'.
          CALL FUNCTION 'POPUP_TO_CONFIRM'
               EXPORTING
                    titlebar      = 'Posting Document'
                    text_question =
                'Are you sure you want to post all documents selected?'
                    text_button_1 = 'Yes'
                    text_button_2 = 'No'
                    start_column  = 25
                    start_row     = 6
               IMPORTING
                    answer        = ans.
          IF ans = '1'.
            CALL METHOD grid1->check_changed_data
              IMPORTING
                e_valid = ws_x.
                perform tbkpf_fuellen.
            IF records = 'X'.
              MESSAGE s999(zv) WITH text-007.
            ELSE.
              PERFORM beleg_pickup.
            ENDIF.
          ENDIF.
        WHEN 'PICK'.
          DATA : check TYPE n,
                 no_rec TYPE c.
          check = 0.
          no_rec = 'X'.
          CALL METHOD grid1->check_changed_data
            IMPORTING
              e_valid = ws_x.
          index = 0.
          LOOP AT gt_vbkpf.
            funcl = 'D'.
            index = index + 1.
            IF gt_vbkpf-xpick = 'X'.
              check = 1.
              CLEAR no_rec.
              READ TABLE gt_vbkpf1 INDEX index INTO vbkpf.
              PERFORM beleg_pickup.
            ENDIF.
          ENDLOOP.
          IF check = 0.
            CALL METHOD grid1->get_selected_rows
              IMPORTING
                et_index_rows = ws_row_idx.
            IF NOT ws_row_idx IS INITIAL.
              CLEAR no_rec.
            ENDIF.
            LOOP AT ws_row_idx INTO i_ws_row_idx.
              READ TABLE gt_vbkpf1 INDEX i_ws_row_idx-index INTO vbkpf.
              PERFORM beleg_pickup.
            ENDLOOP.
            IF no_rec = 'X'.
              MESSAGE s999(zv) WITH text-007.
            ENDIF.
          ENDIF.
        WHEN '&RNT_PREV'.
          CALL METHOD grid1->set_function_code
          CHANGING c_ucomm = ok_code.
        WHEN '&RNT'.
          CALL METHOD grid1->set_function_code
          CHANGING c_ucomm = ok_code.
        WHEN '%SC'.
          CALL METHOD grid1->set_function_code
          CHANGING c_ucomm = ok_code.
        WHEN '&OL0'.
          CALL METHOD grid1->set_function_code
         CHANGING c_ucomm = ok_code.
        WHEN '&OAD'.
          CALL METHOD grid1->set_function_code
          CHANGING c_ucomm = ok_code.
        WHEN '&AVE'.
          CALL METHOD grid1->set_function_code
         CHANGING c_ucomm = ok_code.
        WHEN '&AQW'.
          CALL METHOD grid1->set_function_code
         CHANGING c_ucomm = ok_code.
        WHEN '&XXL'.
          CALL METHOD grid1->set_function_code
         CHANGING c_ucomm = ok_code.
        WHEN '%PC'.
          CALL METHOD grid1->set_function_code
         CHANGING c_ucomm = ok_code.
        WHEN '&CRTEMPL'.
          CALL METHOD grid1->set_function_code
         CHANGING c_ucomm = ok_code.
        WHEN OTHERS.
         do nothing.
      ENDCASE.
      CLEAR ok_code.
    ENDMODULE.                 " PAI_100  INPUT
    *&      Form  exit_program
         Exits from the program after freeing the grid and container     *
    FORM exit_program.
      IF NOT grid_container IS INITIAL.
        CALL METHOD grid_container->free.
      ENDIF.
      IF NOT grid1 IS INITIAL.
        CALL METHOD grid1->free
           EXCEPTIONS
             cntl_error        = 1
             cntl_system_error = 2
             OTHERS            = 3.
      ENDIF.
      LEAVE PROGRAM.
    ENDFORM.                    " exit_program
    *&      Form  f2200_handle_data_changed
          To handle event of change in data in ALV.
         -->P_ER_DATA_CHANGED  text
    FORM f2200_handle_data_changed USING    ir_data_changed
                                             TYPE REF TO
                                             cl_alv_changed_data_protocol.
      DATA : ls_mod_cell TYPE lvc_s_modi ,
             lv_value TYPE lvc_value,
             lflg_check TYPE i.
      DATA : wa_vbkpf LIKE LINE OF gt_vbkpf.
      SORT ir_data_changed->mt_mod_cells BY row_id .
      LOOP AT ir_data_changed->mt_mod_cells
                         INTO ls_mod_cell
                         WHERE fieldname = 'I_PICK'.
        IF NOT ls_mod_cell-value IS INITIAL .
          CALL METHOD ir_data_changed->modify_cell
            EXPORTING
              i_row_id    = ls_mod_cell-row_id
              i_fieldname = ls_mod_cell-fieldname
              i_value     = ls_mod_cell-value.
          READ TABLE gt_vbkpf INTO wa_vbkpf
                     INDEX ls_mod_cell-row_id.
          IF ls_mod_cell-fieldname = 'I_PICK'.
            wa_vbkpf-xpick = ls_mod_cell-value.
          ENDIF.
          MODIFY gt_vbkpf  FROM wa_vbkpf
                              INDEX ls_mod_cell-row_id.
        ENDIF .
      ENDLOOP .
    ENDFORM.                    " f2200_handle_data_changed
    *&      Form  f2201_handle_hotspot
                To handle event of clicking on hyperlink
         -->P_E_COLUMN_ID  text
    FORM f2201_handle_hotspot USING    p_e_column_id  p_e_row_id.
      READ TABLE gt_vbkpf1 INDEX p_e_row_id INTO vbkpf.
      funcl = 'D'.
      PERFORM beleg_pickup.
      PERFORM exit_program.
    ENDFORM.                    " f2201_handle_hotspot
    Regards,
    Susmitha
    Dont forget to reward points for useful answers

  • Is it possible to have multiple lines on a phone but only have one of the number ring on that phone?

    I have a client who has four number on his phone. Extension 4709 is the clients number. He also has 4715,4725 and 4712 on his phone. Is it possible to make it so only 4709 will ring on his phone? The client is running CME 10.0
    New here and new CME so any help would be greatly appreciated

    Hi Joseph,
    This would be configured using the "button" (s=silent separator) command;
    From;
    http://www.cisco.com/c/en/us/td/docs/voice_ip_comm/cucme/command/reference/cme_cr/cme_b1ht.html#wp1050318
    Cheers!
    Rob
    button
    To associate ephone-dns with individual buttons on a Cisco Unified IP phone and to specify line type or ring behavior, use the button command in ephone configuration mode. To remove an ephone-dn association from a button, use the no form of this command.
    button button-number {separator} dn-tag [,dn-tag...] [button-number{x}overlay-button-number] [button-number...]
    no button button-number {separator} dn-tag [,dn-tag...] [button-number{x}overlay-button-number] [button-number...]
    Syntax Description
    button-number
    Number of a line button on a Cisco Unified IP phone that is to be associated with an extension (ephone-dn). The maximum number of button-ephone-dn pairs is determined by the phone type. Note The Cisco Unified IP Phone 7910G has only one physical line button, but you can assign it two button-ephone-dn pairs.
    separator
    Single character that denotes the characteristics to be associated with this phone button. Valid entries are as follows: •: (colon)—Normal ring. For incoming calls on this extension, the phone produces audible ringing, a flashing icon in the phone display, and a flashing red light on the handset. On the Cisco IP Phone 7914 Expansion Module, a flashing yellow light also accompanies incoming calls. •b—Beep but no ring. Audible ring is suppressed for incoming calls, but call-waiting beeps are allowed. Visible cues are the same as those described for a normal ring. •c—Call waiting. Provides call waiting for secondary calls to an overlaid ephone-dn. See also the o keyword. •f—Feature ring. Differentiates incoming calls on a special line from incoming calls on other lines on the phone. The feature-ring cadence is a triple pulse, as opposed to a single pulse for normal internal calls and a double pulse for normal external calls.
    •m—Monitor mode for a shared line. Visible line status indicates whether the line is in-use or not. Monitored lines cannot be used on this phone for incoming or outgoing calls. •o—Overlay line. Multiple ephone-dns share a single button, up to a maximum of 25 on a button. See also the c keyword. •s—Silent ring. Audible ring and call-waiting beep are suppressed for incoming calls. The only visible cue is a flashing ((< icon in the phone display. Note In Cisco IOS Release 12.4(4)XC and later releases, the silent ringing behavior is overridden during active night-service periods. Silent ringing does not apply during designated night-service periods when the s keyword is used. •w—Watch mode for all lines on the phone for which this directory number is the primary line. Visible line status indicates whether watched phone is idle or not.
    dn-tag
    Ephone-dn tag that was previously defined using the ephone-dn command. When used with the c and o keywords, the dn-tag argument can contain up to 25 individual dn-tags, separated by commas.
    x
    Separator that creates an overlay rollover button. When the overlay button specified in this command is occupied by an active call, a second call to one of its ephone-dns will appear on this button. This button is also known as an overlay expansion button.
    overlay-button-number
    Number of the overlay button that should overflow to this button.

  • How to Update multiple line Items in Sales order Interactive form

    Hi,
            I have created one online interactive form for sales order. In that I incorporated dynamic table logic .i.e. we can add row and delete row using buttons. Interactive form is working fine with one line item. But if I give multiple lines in table (line item) its creating sales order with single line item. So please help me how to pass multiple lines.
    Thanks & Regards,
    Krishna.

    Hi,
    Check out this link, this deals with the problem you are facing.
    http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/802f0ed1-a17a-2c10-7db4-d515a5b047ed
    Regards,
    Runal

  • Using Select all to create multiple lines in a sales order

    Hello SAP experts,
    In our business practice users create multiple line sales orders with reference to contracts and use the copy paste method and then assign each line to the contract manually.
    After a few years of this practice i found a new way to create multiple lines but it doesn't quite work correctly. When you have created the first line of an order if you click on the select all button the system will ask you how many lines do you want to copy. I don't know if this is standard SAP but 3 things don't happen when we use this 1) The schedule line information is blank 2) conditions do not copy from the contract even though the contract has been referenced. 3) Since there is no schedule line information the order fails when saving and we get a update terminated message.
    I am having problems finding any documentation around this function so any help with this would be greatly appreciated.
    error when updating is
    Transaction..   VA01
    Update key...   4D358878A8B601AAE10080000A2C4982
    Generated....   28.01.2011, 13:47:23
    Completed....   28.01.2011, 13:47:23
    Error Info...   00 671: ABAP/4 processor: GETWA_NOT_ASSIGNED

    GETWA_NOT_ASSIGNED
    Many threads are there on this error message and you would come to know if you google with this text.  Check couple of threads where  the same topic was discussed
    [Re: GETWA_NOT_ASSIGNED|Re: GETWA_NOT_ASSIGNED;
    [Re: GETWA_NOT_ASSIGNED ABAP Dump|GETWA_NOT_ASSIGNED ABAP Dump;
    Also there are some 20 OSS notes on this error message and you can have a look at the following notes:-
    1)   Note 913679 - VA01: Short Dump GETWA_NOT_ASSIGNED on click of quantity.
    2)   Note 591955 - ABAP runtime error GETWA_NOT_ASSIGNED
    3)   Note 870670 - SD_SALES_DOCU_MAINTAIN_DIALOG termination with GETWA_NOT_***
    4)   Note 141314 - VA02: Dump with 'GETWA_NOT_ASSIGNED'
    thanks
    G. Lakshmipathi

  • 1 line item in invoice for Multiple line items of SO

    Hi SD Gurus,
    My client requirement is multiple line items of the sales order should reflect as a single line item in the invoice ..?
    For ex: I am using Service material type Dien & material created under different material groups.
    My Sales order looks somthing like below with material no & amount:
    10  Testing charges    10$     material group xx1
    20  Baking charges     20$     material group xx2
    30  Scan/Taping          20$    matierial group xx1
    Now in the invoice its should reflect only with 1 line item with the whole amount 50$.
    Kinldy let me know how  this requriement can be fullfilled.
    Thanks,
    Rahul

    Dear Rahul
    I think you can apply Rate Routing for this.
    A rate routing is a routing for repetitive manufacturing. It enables you to easily reproduce the lean production process.
    In the rate routing, the production rate per operation is defined (production time according to a base quantity). Set-up time is not usually defined, since no changes to setup are planned.
    However, you can also use standard routings. A standard routing represents the various steps of production (such as setup, processing, teardown and so on), operation by operation, if necessary with suboperations.
    A rate routing does, however, offer all the same functions as a standard routing.
    <b>Structure</b>
    If you use the same standard value key for all the work centers on the line, the system copies the descriptions of the standard values to the routing as the column headings of the operation overview.
    If you use different standard value keys for the work centers, the system copies the descriptions into the routing that is entered in the control data for the routing in Customizing.
    To create a Rate Routing, follow the steps as under:-
    1)  Starting from the main Line Design menu, choose Rate routing --> Create.
           The system displays the initial screen for rate routings.
    2)  Enter the plant, the material and in the field Group, the group to which you want to assign the rate routing.
    3)  Choose Enter.
         The system displays the screen Header details.
    4)  Enter the following data:
             => the routing description
             => the plant
             => the usage of the rate routing, i.e.production
             => the status, i.e. released
             => the unit of measure of the materials to be produced
    5)  Save your rate routing.
    <b>Result</b>
    You have created the rate routing. Continue creating the main production line and if necessary, feeder lines.
    You can also take the help of your PP guy for this.
    Thanks
    G. Lakshmipathi

  • Text Field with multiple lines

    I am trying to create a text field in the selection screen where it can insert a text with multiple lines for instance those text fields which you can see online where you can key in text lines after lines.
    How do you do that in ABAP?

    Hi
    See any Std program code for CREATING long Text lines
    See any application document HEADER or ITEM text and copy that code
    first declare a field with some table field
    like
    PARAMETERS: p_text like Tline-tdname.
    then keep a button (for Long text) and in the program write a code such that when you press on that line it will take you to text ediotr
    using the CREATE_TEXT fun module
    copy it from a std program text..
    <b>Reward points for useful Answers</b>
    Regards
    Anji

  • Multiple Line Graph

    First off, thanks to kglad for the line graph function I
    started with, it has been a huge help. Now the step I'm trying to
    take is 2 fold.
    First, I'd like to graph more than one line segment on the
    graph. Right now I am graphing functions f1 and f2, but f2
    currently overwrites f1. I want them to coincide so f1 goes from
    x=1 to x=15, f2 goes from x=15 to x=25, f3 goes from x=25 to x=10
    at a different y (these are all curves), and finally f4 goes from
    x=10 to x=1 creating a closed shape. Also, I want the x values and
    the y values to be variable based on the temperature. I'm using
    PV=nRT and n, R, and T are all known. so I have something like
    P=nRT/V where P is y, V is X and the nRT can be calculated for two
    steps of the 4. The other two steps are adiabatic, so Q=0, I don't
    know yet how to fit the lines but i do know that y = a / (x^(5/3))
    is a formula that works, I just need to find the proper a values
    for steps 2 and 4.
    Part two of this issue is that currently the graph is drawing
    as the whole canvas, which is fine for testing until i get the
    multiple line part worked out; however I only want this to be 1/4
    of the viewing area as I have other movie clips and such to put on
    this. A conceptual drawing of what I plan on making can be found
    at:
    http://www.students.bucknell.edu/gbement/Steps.html
    I'm a novice to Actionscript and movie clips, I previously
    did everything with motion tweens and nothing was dynamic. I plan
    on creating the piston and molecule simulation in another movie
    clip, then I can vary the play speed relative to the hot and cold
    temperatures by looping the movieclip and having it play faster for
    a high T and slower for a low T.
    Any help on any of my many issues would be greatly
    appreciated and the user will be recognized for their assistance in
    my research presentation :)

    Hi Arun, thanks again for the help but upon closer inspection
    (along with only a basic knowledge of java and actionscript), I
    think your script would need editing to work for me (editing i'm
    unsure of how to do). What I'm looking for is a graph that will
    create a line based on a function. Much like y=(a*b*c)/x or
    y=(a*b*c)/(x^1.66) The a*b*c would be complicated also, but here's
    what i've thought up on paper that I have to move to script, I hope
    this is useful:
    Step 1: Calculate the a*b*c
    The original function is PV=nRT , nRT being the a*b*c ,
    however the Thot and Tcold terms are input boxes that the user
    types in before hitting the "go" button.
    So I have to do this much:
    tcold = Number(tcold_num.text);
    thot = Number(thot_num.text);
    var n:Number = 1;
    var R:Number = 0.0825;
    var a:Number;
    var b:Number;
    var c:Number;
    var d:Number;
    a = n*R*thot // Step 1 constant
    b = // Step 2 constant (formula to be finished :-/) Looks to
    be a formula using ((b) / (Math.pow(x, 1.666)))
    c = n*R*tcold // Step 3 constant
    d = // Step 4 constant (formula to be finished :-/)
    Then I need to find a way to initialize axis to line the
    graph, I can label the P and V axis using static text boxes later I
    suppose.
    The problem I have with yours that I don't understand is that
    I could add the function into the y part of the addLine() function,
    however it's noted as inity= y1 (requires a number), and the
    function definition has y1:Number.
    Now the issue i'm tackling below is just a newbie's lack of
    understanding (i hope), but the script kglad wrote (snipped below)
    will graph one line, and i can't figure out for the life of me how
    to write this up to graph more than one instance without
    overwritting the previous line. Again, Thanks for the help so far,
    it has helped me find the points where I lacked direction and solid
    ideas before.

Maybe you are looking for

  • Firefox on hp laptop always open with option of safe mode or reset how can i get it to open without option.desktop doesn't do this. Doug

    I set up firefox on laptop first and it always requires that i choose to open in safe mode or reset toolbar, how can i change this without reinstalling firefox. My desktop does not require that i do all that it opens with everything in place. I don't

  • Display combined results of 2 queries in 1 BEx Web Report.

    Dear Experts I tried to achieve this in just 1 BEx Query and found it difficult. Then I ended up creating 2 BEx Queries getting partial result and then amalgamating both in WAD. Still I think there should be a way to achieve what I need from just 1 B

  • Service instance q-in-q for xconnect

    Topology: ce1---- g0/1 PE1 ---- PE2 g2/2---- Switch---- ce2 and other CE's           1.1.1.1          2.2.2.2 Ive never done service instances, so considering the above topology, how can i use service instance to xconnect one of gig2/2 vlans on PE2 t

  • Fragment problem

    Hi Our xdp's are rendered on our site as rendered html form  or rendered pdf form depending on which the client wants. we've started using simple fragments for the address page a the end of the form. let's say there are 30 different xdp's all with th

  • How do I scan with hp m1217 nfw?

    Can't find a simple solution that doesn't involve downloading drivers, but I know it's out there.