Enhancement SRVDET in T-Code ML81N

Hi,
My requirement is to add certain custom fields in T-Code ML81N. For this I am using the Enhancement SRVDET - User screen on tab strip of service detail screen.
I have added the fields in Table CI_ESLLDB. and then mapped these Custom fields in the Screen Exit on Screen 0299. The custom fields have appeard on the Tabstrip.
But the problem is even if I am viewing the line item in ML81N in Display mode, my custom fields are appearing in editable mode. And if I am entering the values in the custom fields(either in Change mode or Display mode of ML81N), these entries are not getting stored.
I am not writing any code in the Function Exit of this Enhancement.
I have tried by giving INP in Group2 in Attributes of Custom Fields in Screen(by seeing the Screen Group of other fields in Tabstrip).
But still it is not working. If anyone has worked on Enhancement SRVDET plz tell tell me where I am commiting the mistake.
Regards,
Nitin

OK, I got the issue straighten out.
We need to write code to transfer the data between the screen field and the custom field.
First, declare the new fields in ehancement SRVDET, append new fields to CI_ESLLDB, eg.  I declared zzcharg - batch number.
At EXIT_SAPLMLSP_040, declare a global variable to store the custom field information.  This will allow the user input data to be stored in a temporary variable.  eg.  I did the following:
At ZXMLUTOP:
***INCLUDE ZXMLUTOP .
data  g_esll_zzcharg like esll-zzcharg.  "global variable
At the enhancement EXIT_SAPLMLSP_040, I did:
*&  Include           ZXMLUU23
g_esll_zzcharg = i_esll-zzcharg.
The trick is, at Screen 299.  Do the following.... declare module status_0299.
process before output.
module status_0299.
Inside  module status_0299, do the following:
***INCLUDE ZXMLUO01 .
*&      Module  STATUS_0299  OUTPUT
&----       text
module status_0299 output.
i_esll-zzcharg = g_esll_zzcharg.
endmodule.                 " STATUS_0299  OUTPUT
Now, the input field will show up correctly and saved correctly.
If you dun want to field to be editable, do a loop at screen, when screen-name = 'ESLL-ZZCHARG', screen-input = '0'.
I am also working on assigning a value to the field automatically, and found the exit to do this already.  So the whole thing is automatic.
Good luck.  Hope this help and please award points accordingly.
Thank you,
Jinson Wong

Similar Messages

  • Trying to add enhancement point in standard code

    Hi,
    i am trying  to add enhancement point in standard code using the steps givenin the link.
    http://www.sapdev.co.uk/enhance/eframework/ef_implicit.htm
    but i am not able to get the enhancement point .
    Could you please let me know if there is anything additional steps to be followed.
    or are there config setting that has to be checked.
    Regards,
    saleha

    Hi Sandra,
    when I try to create an enhancement point by pressing enhance (shift-f4) going in edit->Enhancment operations->Create it gives me a message 'In this mode you can create implementations only'. (At this point my cursor in the code is at the point I want to make it happen)
    So the Q is how do I get the E.point in the code at the point I desire.
    Regards,
    Saleha

  • Enhancement for CAA3 T-code

    Hi,
    I have to do an enhancement in Standard t-code CAA3(Display Contract account). One field has to be added in the 2nd screen.
    Can you please guide me for a solution.
    Thanks in advance.
    Regards,
    Sreenivas.

    Hi, SAP has a tool, BDT (Business Data Toolset) that help you to modify the screen of some IS transaction.
    You may check out the following document to give you more idea about BDT. And the area menu of BDT for contract account is CAWM
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/6173fb9e-0701-0010-6083-a0001827a6ff
    Hope it helps.
    Maine

  • Enhancements points in standard code

    hello!
    Can I use enhancements points in standard code? How do it?
    Thanks!!

    Yes, you can. That is really the whole point,  as you would not need enhancement points in a custom program. 
    In order to leverage the Enhancement Framework, you should familarize yourself with the documentation and then go from there.
    http://help.sap.com/saphelp_nw2004s/helpdata/en/94/9cdc40132a8531e10000000a1550b0/frameset.htm
    Regards,
    Rich Heilman

  • Enhancement Point in ABAP code

    Hi ,
    I am working on an upgrade from 4.6 to ECC ,so have a  have a standard FM with an enhancement point , how do i know if there is an implementaion for that or not and can i debugg the code in the enhancement point .
    When i click on the enhancement spot it goes to a class and i can see the code in that methods but cant set a breakpoint in it , kindly suggest what should i do.
    Regards
    Arun

    Hi
    double click on the enhancement point. it will take you to the enhancement spot into which it is defined.
    click on the tab "enhancement implementation". it will show you all the existing implementation. I you find nothing than this point is not implemented yet.
    if it is taking you to a class then it is a BADi implemented via new enhancement framework. to find it is implemented or not, repeat the above steps. to debug it:
    in the left section, expand entries under heading BADi definitions.
    double click on "implementations". you will get the existing entries on right side. double click on this entry. on the left side under heading "BADI definitions" you will get the implementing class.
    double click on it to get the class name.
    go into the class and see the method implemented. u try to hard code the break point into the method,
    activate it and then try to debug it.
    Thanks
    Vishal Kapoor

  • 0FI_AR_4 Extractor Enhancement without user exit code Question

    Hi
    I have a requirement to enhance 0FI_AR_4 Extractor with below Fields from BSID:
    Field     DataElement
    PRCTR       PRCTR
    VPOS2       NUM06
    VBUND       RASSC
    As per SAP Note: 410799, I am assuming I don't need to write any ABAP code to populate these fields.
    In the extract structure DTFIAR_3 of extractor 0FI_AR_4 Double clicked on the Include CI_BSID.
    It prompted "Structure CI_BSID not available. Create the structure?"
    After entering Access key it created new Structure "CI_BSID".
    I have entered the Component and Component Type values as below:
    Component   Component Type
    YYPRCTR     PRCTR
    YYVPOS2     NUM06
    YYVBUND     RASSC
    1. Please let me know Component and Component Type values and the steps I followed are correct or not?
    2. And I hope I don't need to write the code in the User exit to populate these fields?
    Thanks
    Sree

    Hi,
    For any FI datasource enhancement there are two scenarios :-
    1. All the fields of the customer enhancement in the customer include are available in the read structure BSID
    Then no additional action is required. The fields of the customer enhancement are filled automatically by the datasource from the assigned read structure via "move-corresponding".
    2. Fields of the customer enhancement in the customer include are not contained in the read structure BSID
    In this case you have to program a function module to fill the field of the customer enhancement. To do this, there is a Business Transaction Event available (open FI interface for process 00005021). Create any function module you like and use function module SAMPLE_PROCESS_00005021 as a template for the interface (input parameter, changing parameter).
    Hope this helps.
    Reg,
    Rahul

  • FB60 enhancement to validate Company Code

    Hi,
    I have to do the validation for Company code in Tcode FB60. The issue iam unable to get the correct enhance ment for tis.
    i have tried following enhancements.
    F050S001            FIDCMT, FIDCC1, FIDCC2: Edit user-defined IDoc segment
    F050S002            FIDCC1: Change IDoc/do not send
    F050S003            FIDCC2: Change IDoc/do not send
    F050S004            FIDCMT, FIDCC1, FIDCC2: Change outbound IDoc/do not send
    F050S005            FIDCMT, FIDCC1, FIDCC2 Inbound IDoc: Change FI document
    F050S006            FI Outgoing IDoc: Reset Clearing in FI Document
    F050S007            FIDCCH Outbound: Influence on IDoc for Document Change
    F180A001            Balance Sheet Adjustment
    FARC0002            Additional Checks for Archiving MM Vendor Master Data
    RFAVIS01            Customer Exit for Changing Payment Advice Segment Text
    RFEPOS00            Line item display: Checking of selection conditions
    RFKORIEX            Automatic correspondence
    SAPLF051            Workflow for FI (pre-capture, release for payment)
    Thanks,
    Deepthi.

    Hi,
    My requirement is changed now.
    I need to get a user exit or badi where after entering the header data and only ONE LINE ITEM data and press enter key, I should get the Header Company code and Line Item Company code in one enhnacement. I must valdate these 2 fields.
    Regards,
    Deepthi.

  • Problem in creating service entry sheet in t-code- ML81N

    Dear cons
        we have two company codes. we have single vendor in both the company code. we created two p.o for the two company code. we want to create one service entry sheet by taking two ser. p.o. how it ispossible.
    nrk

    HI nirupama,
    it is not possible, Standard SAP System having not such functionality to create one Service entry sheet of two different PO's By ML81N.
    its better to create seperate SES for each PO's. Also Accounting Point of View, posting should be seprate for each Co. code.
    Regards.
    Vraj

  • Help enhance my Drag&Drop code

    Good day!
    I have here my code for a simple drag and drop excercise and it looks a little bit redundant. I want to enhance it and trim it down for efficiency but I'm not really sure how should I do it. Also, I have a problem when selecting a drag object; when I click it, it is lost. I really don't know why it happens, I just followed a tutorial I've seen on the internet. Help would really be appreciated!
    Sincerely,
    Mr. Milo
    MY CODE ARE AS FOLLOWS:
    at1.addEventListener(MouseEvent.MOUSE_DOWN, pickAT);
    in1.addEventListener(MouseEvent.MOUSE_DOWN, pickIN);
    in2.addEventListener(MouseEvent.MOUSE_DOWN, pickIN);
    in3.addEventListener(MouseEvent.MOUSE_DOWN, pickIN);
    in4.addEventListener(MouseEvent.MOUSE_DOWN, pickIN);
    in5.addEventListener(MouseEvent.MOUSE_DOWN, pickIN);
    in6.addEventListener(MouseEvent.MOUSE_DOWN, pickIN);
    in7.addEventListener(MouseEvent.MOUSE_DOWN, pickIN);
    in8.addEventListener(MouseEvent.MOUSE_DOWN, pickIN);
    on1.addEventListener(MouseEvent.MOUSE_DOWN, pickON);
    on2.addEventListener(MouseEvent.MOUSE_DOWN, pickON);
    at1.addEventListener(MouseEvent.MOUSE_UP, dropAT);
    in1.addEventListener(MouseEvent.MOUSE_UP, dropIN);
    in2.addEventListener(MouseEvent.MOUSE_UP, dropIN);
    in3.addEventListener(MouseEvent.MOUSE_UP, dropIN);
    in4.addEventListener(MouseEvent.MOUSE_UP, dropIN);
    in5.addEventListener(MouseEvent.MOUSE_UP, dropIN);
    in6.addEventListener(MouseEvent.MOUSE_UP, dropIN);
    in7.addEventListener(MouseEvent.MOUSE_UP, dropIN);
    in8.addEventListener(MouseEvent.MOUSE_UP, dropIN);
    on1.addEventListener(MouseEvent.MOUSE_UP, dropON);
    on2.addEventListener(MouseEvent.MOUSE_UP, dropON);
    at1.buttonMode = true;
    in1.buttonMode = true;
    in2.buttonMode = true;
    in3.buttonMode = true;
    in4.buttonMode = true;
    in5.buttonMode = true;
    in6.buttonMode = true;
    in7.buttonMode = true;
    in8.buttonMode = true;
    on1.buttonMode = true;
    on2.buttonMode = true;
    var startX: Number;
    var startY: Number;
    var correct: Number = 0;
    var attempt: Number = 0;
    // I think I have a problem here
    function pickAT(event:MouseEvent): void {
        var obj = event.target;
        obj.startDrag();
        obj.x = startX;
        obj.y = startY;
    function pickIN(event:MouseEvent): void {
        var obj = event.target;
        obj.startDrag();
        obj.x = startX;
        obj.y = startY;
    function pickON(event:MouseEvent): void {
        var obj = event.target;
        obj.startDrag();
        obj.x = startX;
        obj.y = startY;
    function dropAT(event:MouseEvent): void {
        var object = event.target;
        object.stopDrag()
        if(object.dropTarget != null && object.hitTestObject(targetAT1)) {
            attempt++;
            correct++;
            attemptCounter.text = String(attempt);
            correctCounter.text = String(correct);
            object.removeEventListener(MouseEvent.MOUSE_DOWN, pickAT);
            object.removeEventListener(MouseEvent.MOUSE_UP, dropAT);
            object.buttonMode = false;
            object.x = targetAT1.x;
            object.y = targetAT1.y;
        else {
            attempt++;
            attemptCounter.text = String(attempt);
            object.x = startX;
            object.y = startY;
    function dropIN(event:MouseEvent): void {
        var object = event.target;
        object.stopDrag()
        if(object.dropTarget != null && object.hitTestObject(targetIN1)) {
            attempt++;
            correct++;
            attemptCounter.text = String(attempt);
            correctCounter.text = String(correct);
            object.removeEventListener(MouseEvent.MOUSE_DOWN, pickIN);
            object.removeEventListener(MouseEvent.MOUSE_UP, dropIN);
            object.buttonMode = false;
            object.x = targetIN1.x;
            object.y = targetIN1.y;
        else if(object.dropTarget != null && object.hitTestObject(targetIN2)) {
            attempt++;
            correct++;
            attemptCounter.text = String(attempt);
            correctCounter.text = String(correct);
            object.removeEventListener(MouseEvent.MOUSE_DOWN, pickIN);
            object.removeEventListener(MouseEvent.MOUSE_UP, dropIN);
            object.buttonMode = false;
            object.x = targetIN2.x;
            object.y = targetIN2.y;
        else if(object.dropTarget != null && object.hitTestObject(targetIN3)) {
            attempt++;
            correct++;
            attemptCounter.text = String(attempt);
            correctCounter.text = String(correct);
            object.removeEventListener(MouseEvent.MOUSE_DOWN, pickIN);
            object.removeEventListener(MouseEvent.MOUSE_UP, dropIN);
            object.buttonMode = false;
            object.x = targetIN3.x;
            object.y = targetIN3.y;
        else if(object.dropTarget != null && object.hitTestObject(targetIN4)) {
            attempt++;
            correct++;
            attemptCounter.text = String(attempt);
            correctCounter.text = String(correct);
            object.removeEventListener(MouseEvent.MOUSE_DOWN, pickIN);
            object.removeEventListener(MouseEvent.MOUSE_UP, dropIN);
            object.buttonMode = false;
            object.x = targetIN4.x;
            object.y = targetIN4.y;
        else if(object.dropTarget != null && object.hitTestObject(targetIN5)) {
            attempt++;
            correct++;
            attemptCounter.text = String(attempt);
            correctCounter.text = String(correct);
            object.removeEventListener(MouseEvent.MOUSE_DOWN, pickIN);
            object.removeEventListener(MouseEvent.MOUSE_UP, dropIN);
            object.buttonMode = false;
            object.x = targetIN5.x;
            object.y = targetIN5.y;
        else if(object.dropTarget != null && object.hitTestObject(targetIN6)) {
            attempt++;
            correct++;
            attemptCounter.text = String(attempt);
            correctCounter.text = String(correct);
            object.removeEventListener(MouseEvent.MOUSE_DOWN, pickIN);
            object.removeEventListener(MouseEvent.MOUSE_UP, dropIN);
            object.buttonMode = false;
            object.x = targetIN6.x;
            object.y = targetIN6.y;
        else if(object.dropTarget != null && object.hitTestObject(targetIN7)) {
            attempt++;
            correct++;
            attemptCounter.text = String(attempt);
            correctCounter.text = String(correct);
            object.removeEventListener(MouseEvent.MOUSE_DOWN, pickIN);
            object.removeEventListener(MouseEvent.MOUSE_UP, dropIN);
            object.buttonMode = false;
            object.x = targetIN7.x;
            object.y = targetIN7.y;
        else if(object.dropTarget != null && object.hitTestObject(targetIN8)) {
            attempt++;
            correct++;
            attemptCounter.text = String(attempt);
            correctCounter.text = String(correct);
            object.removeEventListener(MouseEvent.MOUSE_DOWN, pickIN);
            object.removeEventListener(MouseEvent.MOUSE_UP, dropIN);
            object.buttonMode = false;
            object.x = targetIN8.x;
            object.y = targetIN8.y;
        else {
            attempt++;
            attemptCounter.text = String(attempt);
            object.x = startX;
            object.y = startY;
    function dropON(event:MouseEvent): void {
        var object = event.target;
        object.stopDrag()
        if(object.dropTarget != null && object.hitTestObject(targetON1)) {
            attempt++;
            correct++;
            attemptCounter.text = String(attempt);
            correctCounter.text = String(correct);
            object.removeEventListener(MouseEvent.MOUSE_DOWN, pickON);
            object.removeEventListener(MouseEvent.MOUSE_UP, dropON);
            object.buttonMode = false;
            object.x = targetON1.x;
            object.y = targetON1.y;
        else if(object.dropTarget != null && object.hitTestObject(targetON2)) {
            attempt++;
            correct++;
            attemptCounter.text = String(attempt);
            correctCounter.text = String(correct);
            object.removeEventListener(MouseEvent.MOUSE_DOWN, pickON);
            object.removeEventListener(MouseEvent.MOUSE_UP, dropON);
            object.buttonMode = false;
            object.x = targetON2.x;
            object.y = targetON2.y;
        else {
            attempt++;
            attemptCounter.text = String(attempt);
            object.x = startX;
            object.y = startY;

    Ned,
    Thank you for looking into the code and pointing to the mistakes.
    Milo,
    I was typing off the top of head and, of course, overlooked some things. Hopefully this works:
    var startX: Number;
    var startY: Number;
    var correct: Number = 0;
    var attempt: Number = 0;
    var currentlyDragged:MovieClip;
    // collection of objects stored in array
    // so that you can reference them programmatically
    var objects:Array = [at1, in1, in2, in3, in4, in5, in6, in7, in8, on1, on2];
    activateObjects();
    // assigns listeners and other functionality to the objects in objects array
    function activateObjects():void {
         for each(var mc:MovieClip in objects) {
              mc.addEventListener(MouseEvent.MOUSE_DOWN, pickObject);
              mc.buttonMode = true;
              // assign drop targets based on names
              switch(String(mc.name).substring(0, 2)) {
                   case "at":
                        mc.dropTargets = [targetAT1];
                   break;
                   case "in":
                        mc.dropTargets = [targetIN1, targetIN2, targetIN3, targetIN4, targetIN5, targetIN6, targetIN7, targetIN8];
                   break;
                   case "on":
                        mc.dropTargets = [targetON1, targetON2];
                   break;
    function pickObject(e:MouseEvent):void {
         currentlyDragged = MovieClip(e.currentTarget);
         currentlyDragged.startDrag();
         startX = currentlyDragged.x;
         startY = currentlyDragged.y;
         stage.addEventListener(MouseEvent.MOUSE_UP, dropObject);
    function dropObject(e:MouseEvent):void {
         stage.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
         stopDrag();
         var droppedOn:MovieClip;
         if (currentlyDragged.dropTarget) {
              // loop through targets belonging to the currently dragged clip
              for each(var mc:MovieClip in currentlyDragged.dropTargets) {
                   if (currentlyDragged.hitTestObject(mc)) {
                        // get the target
                        droppedOn = mc;
                        currentlyDragged.removeEventListener(MouseEvent.MOUSE_DOWN, pickObject);
                        currentlyDragged.buttonMode = false;
                        currentlyDragged.x = droppedOn.x;
                        currentlyDragged.y = droppedOn.y;
                        correct++;
                        correctCounter.text = String(correct);
                        // stop loop - it is not necessary to continue
                        break;
         attempt++;
         attemptCounter.text = String(attempt);
         // return to the initial position if there is no hit
         if (!droppedOn) {
            currentlyDragged.x = startX;
            currentlyDragged.y = startY;
    Message was edited by: Andrei1

  • Is I have to create different enhancement implementation for diff. code are

    Hi,
       I want to modify standard program in 3 different part  through enhancement framework.
    Is I ave to create 3 different enhancement implementation or i can use only one?.
    Regards,
    Himanshu

    Hi,
                  Below is given code which i have added in copy of stranded program at diff. code ares and its running fine.
                 Now i want to write in stranded code through enhancement framework.
                 I dont think we can write it in 1 place.? what you say.
    Internal tables
    ******Added By Himanshu*****
             BDMNG               LIKE  RESB-BDMNG,
    ******Himanshu*****
    ***Himanshu modification*****
       DATA: BEGIN OF xtab1 OCCURS 10,        "Tabelle der Reservierungen
             werks LIKE resb-werks,
             lgort LIKE resb-lgort,
             charg LIKE resb-charg,
             matnr LIKE resb-matnr,
             bdmng LIKE resb-bdmng,
             bdmns LIKE resb-bdmng,
             erfme LIKE resb-erfme,                      "ALRK014884 SW
             erfmg LIKE resb-erfmg,                      "ALRK014884 SW
           END OF xtab1.
      DATA: kzwso LIKE mara-kzwsm,
            ytab1 like xtab1 occurs 0 with header line.
    RANGES: xbdart FOR resb-bdart,
            MS_WERKS FOR MARC-WERKS.
    REFRESH XBDART.
      CLEAR   XBDART.
      XBDART-SIGN   = 'I'.
      XBDART-OPTION = 'EQ'.
      XBDART-LOW    = 'AR' .
      APPEND XBDART.
      XBDART-LOW    = 'MR' .
      APPEND XBDART.
      REFRESH MS_WERKS.
      CLEAR   MS_WERKS.
      XBDART-SIGN   = 'I'.
      XBDART-OPTION = 'EQ'.
      XBDART-LOW    = 1010.
      APPEND XBDART.
    end Himanshu********
    FORM data_selection.
    ****Himanshu*****
      data :  begin of it_mat occurs 0,
                matnr like mara-matnr,
                end of it_mat.
      select matnr  into corresponding fields of table it_mat
                          from mara
                        where matnr in matnr.
        CLEAR: XTAB1  . REFRESH XTAB1 .
        loop at it_mat .
      CALL FUNCTION 'MB_ADD_RESERVATION_QUANTITIES'
        EXPORTING
          X_MATNR = it_mat-matnr
          X_XLOEK = SPACE
          X_KZEAR = SPACE
          X_KZWSO = KZWSO          "ALRK014884 SW
        TABLES
          XTAB1   = XTAB1
          XWERKS  = MS_WERKS
          XBDART  = XBDART.
          ytab1 = xtab1.
          append ytab1.
          endloop.
    ****end himanshu*****
    FORM fieldcatalog.
    *****Himanshu Modification******
        loop at ytab1.
        read table bestand  with key matnr = ytab1-matnr.
        if sy-subrc = 0.
         bestand-bdmng = ytab1-bdmng.
         MODIFY TABLE bestand .
        endif.
        endloop.
    ******end Himanshu *******
    *****Himanshu Modification******
         CLEAR fieldcat.
      fieldcat-fieldname     = 'BDMNG'.
      fieldcat-tabname       = 'BESTAND'.
      fieldcat-ref_tabname   = 'YTAB1'.
      FIELDCAT-SELTEXT_S = 'Reserved'.
      fieldcat-outputlen     = 8.
      APPEND fieldcat.
    *****end Himanshu******

  • Experiences - Applying support packs to enhanced SAP Web Dynpro code

    Just thought I might highlight some experiences we've had with applying support packs for XSS. (Reply if you have your own experiences or a proven better way)
    Firstly, we are using Travel within XSS and have some significant developments to get this working globally.  Rightly or wrongly, we added our own DC's within the ESS application area and need to take this into account during support packs.
    As advised by SAP, we have not directly applied the support pack source code to the modified track, but created a separate SPXX track which we manually need to reaply all of our changes.  It dissapoints me that SAP don't recommend doing what the help.sap.com states, but there must be a reason for this (supposedly the meta data tool not yet available in NW04 will address the main reason).
    In order to get our custom DC's from the old track to the new; I needed to add all non-generated objects to an activity, connect SPXX-1 track to the SPXX track and transport all the way through to the approval stage to get it migrated (the connection can be terminated after this is done).  Again - Less than ideal, especially if you accidentally transport a generated file or miss a file.
    Then for all SAP Web Dynpro changes, we've documented all changes to the nth degree and it's at this point we manually reapply the changes - taking into account any SAP changes that may have occurred.
    I hope SAP promotes doing this a better way soon, but here's a process for anyone else needing to do this.
    Regards,
    Matt

    As you stated the system without the context tab is NetWeaver 7.0.  The context tab and the extra wizards were new features in NetWeaver 7.0 Enhancement Package 1.  Your system would have to be updated to this NetWeaver Enhancement Package level in order to have this functionality.

  • Service entry sheet for t.code ml81n

    Hai every one,
    My requirement is like this.
    User should select one line item while adopting from service PO in service entry sheet and save. So that he will get one service entry sheet for one line item. so when he  select more than one line item and tries to save in one service entry sheet the system should give error message and he should not be able to save.
    For this i found one function exit 'EXIT_SAPLMLSP_031'.
    i wrote the code like this.
    *BREAK-POINT.
    tables:esll, rm11p.
    data : serent like esll-extrow,
    serent1 like esll-introw,
           count type i
    data: begin of ix_esll occurs 2000.
             include structure msupdap.
    data:    selkz   like rm11p-selkz.
    data: end of ix_esll.
    *break-point.
    *count = 0.
    **loop at IX_ESLL .
    *if IX_ESLL-selkz = 'X'.
    *count = count + 1.
    *endif.
    *endloop.
    break-point.
    if sy-tcode = 'ML81N'.
    *if sy-index <> 0.
    if sy-srows <> 0.
    esll-extrow <> '0000000010'.
    *if esll-EXTROW = '0000000010'.
    *if ix_esll-extrow <> '0000000010'.
    message e000(38) with 'Select only one line item'.
      endif.
      endif.
    *ENDIF.
    In ML81n we can see the line item start with 10,20 ,30 like that. If i hard code the line number is 10. it will work correctly. if i select the 20 it wont work.
    If user select 30 or 40 how i can do this.
    Plz helpme regarding this. It is very urgent.
    Thanks and Regards,
    Vamsi.

    Hi,
    Just use the following code as it is. If you are facing any problem please let me know.
    data: w_no_of_records Type I.
    CONSTANTS:
          c_pgmvariable(21)  value '(SAPLMLSP)REF_ESLL[]'.
    DATA: BEGIN OF I_REF_ESLL OCCURS 200.
             INCLUDE STRUCTURE UESLL.
    DATA:    KOT_PACKNO LIKE COMSRV-KOT_PACKNO,
             KOT_INTROW LIKE COMSRV-KOT_INTROW,
             CON_PACKNO LIKE COMSRV-CON_PACKNO,
             CON_INTROW LIKE COMSRV-CON_INTROW.
    DATA: END OF I_REF_ESLL.
    FIELD-SYMBOLS: <FC> Type ANY.
    assign (c_pgmvariable) to <FC>.
    I_REF_ESLL[] = <FC>.
    DESCRIBE table I_REF_ESLL Lines w_no_of_records.
    If w_no_of_records NE 0.
       message e000(38) with 'Select only one line item'.
    Endif.
    Regards
    Raju Chitale

  • Enhancement for ME21N t-code ?

    Dear ABAP Experts..,
            I have a requirement that in ME21N t-code Delivery / Invoice tab there is a field called Payment Terms. If user select Payment Terms as '0010'
    then he wants to new screen which have different entries .
         How can i do this issue when the user is selected Payment Terms as '0010' to generate new Tab in header part ?
    Thaks & Regards.
    K. Chinna..!

    Hi,
      Use this user exit MM06E005 Or BADI
    ME_GUI_PO_CUST
    ME_PROCESS_PO_CUST
    and write your code based on requirement .
    Regards,
    kumar.

  • Product enhancement for confidential BP codes

    Currently, I am not aware of a way to restrict access to certain BP accounts, including the related activities for a BP. For example, our bank, HR consultants, etc. where I would like to limit the access to these BP accounts and related attachments to certain users, such as our management group.
    Primary importance would be to limit access to related activities where sensitive information may be stored in the form of emails, attachments, etc.
    Our previous CRM allowed us to flag BP accounts as restricted and set up permissions to authorized users.
    Is anyone aware of a way to limit access to these activities?
    If not, this is a great enhancement for future releases.

    Hi Deb,
    that's right! Assigning your config key to business role allows you using your own configuration for this business role.
    I thought, that you enhanced GET_I_DATAORIGIN_TEXT by redefining the I-GETTER. For me, this means, that the SAP creates a new z-class which inherits the SAP standard class. In this case you have to assign your enhancement set to your client...
    Did you set a break-point to your GET_I_DATAORIGIN_TEXT and checked the returning parameter? If rv_disable = "FALSE" and the DDLB is still disabled, this could mean, that the entity belonging to your field is not changeable...
    best wishes,
    Hakan

  • Dtaa source Enhancement code

    Hi All,
    I am enhancing the DS: 2LIS_11_VAITM with fields EDATU,ZZADATE from VBEP Table.
    Could any body provide me the code for this
    Regards,
    Madhu

    Hi.....
    Check this........
    Data source Enhancement Code Samples
    Data source Enhancement
    Re: writing custom code for enhancing the generic data source
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/302d4b15-5847-2a10-93bb-9c45d9f06b16
    Hope this helps you.......
    Regards,
    Debjani.......

Maybe you are looking for

  • Using OLAP Connection for SAP BW based on authentication type Prompt

    We try to use an OLAP Connection based on authentication type Prompt. This should cause a dialog to popup where the user can enter credentials for SAP BW. This works fine for Analysis for OLAP, but not in Web Intelligence and Design Studio. In design

  • Obsolete fm needed

    Hi All we are working on a UPGRADE project from 46c to ECC 6. we have found function module CACS_APPL_GET_SET is missing it exists in the old version but deleted by SAP. do suggest the replacement if any . below attached is the code CALL FUNCTION 'CA

  • Web Service Problems in ES2

    Running LC ES2 SP1 on Windows 2008 R2 32-bit server. I have a form that has multiple web service connections to processes I created in workbench.  I can connect to them fine in workbench and some of them work fine on my form.  I am using the WSDL for

  • Oracle makes only buggy products

    Why does Oracle make only buggy products? I think it wants everyone to sign up support contract. We are developing an application on HTML DB. Its charts have bugs. I posted a thread on forum about that. X Axis Grid Lines I tried doing the chart work

  • Imports freehand files?

    does illustrator cc imports freehand files?