How to add Camera Mfg data to EXIF?

Hi,
I have a Panasonic GH3 camera.  I would like to add an item that is in the EXIF data of the RAW and DNG file to the EXIF fields kept by LR5. I can see all the camera EXIF data by using the GREAT 'exiftool.exe' created by Phil Harvey. 
http://www.sno.phy.queensu.ca/~phil/exiftool/#running
Just to start, I would like to add the item "Focus Mode" that is in the "Panasonic" section of the EXIF file of the RAW and DNG files.  The Focus Mode field has values such as:  
Example 1:
---- Panasonic ----
Image Quality                   : Raw
Firmware Version                : 0.1.2.0
White Balance                   : Auto
Focus Mode                      : Manual
AF Area Mode                    : 1-area
Image Stabilization             : Off
Macro Mode                      : Off
Shooting Mode                   : Aperture Priority
or, as anoher example:
Example 2:
---- Panasonic ----
Image Quality                   : Raw
Firmware Version                : 0.1.2.0
White Balance                   : Auto
Focus Mode                      : AF-S
AF Area Mode                    : 1-area
Image Stabilization             : Off
Macro Mode                      : Off
Shooting Mode                   : Aperture Priority
I find this data in both the Panasonic Raw files, and the DNG files created by LR5 (and I was very relieved to find that the Focus Mode is carried forward to the DNG files, since I don't keep my old Panasonic RW2 Raw files after they are converted to DNG!).
So, since this camera manufacturer data *is* in the DNG, LR5 *is* reading it.
Thus my question:  How can I tell LR5 to inclued the "FOCUS MODE" value in the EXIF data it creates with each photo?
I hope this is possible?
Thanks for any suggestions.
John
[email protected]

Wow!  That ExifMeta plugin looks great!
It looks like it is just what I was looking for.
But, it's been a very long hard day, and it's almost midnight here, so, I
probably won't try to install the ExifMeta plugin until tomorrow.
Thanks for the rapid response, and for creating what looks like a GREAT
tool!
John

Similar Messages

  • How to add a new data element for existing table filed(Primary key field)

    Hi Experts,
    How to add a new data element for existing table field(Primary key field)
    For this filed ther is no foreign key relation ships and even check table.
    while activating table it is giving message like below.
    can you help any one to solve this and wil steps to add new dataelement for existing primary key filed of a table.
    Check table (NAMING SPACE/TABLE NAME(EX:/TC/VENDOR)) (username/19.02.10/03:29)           
    Primary key change not permitted for value table /TC/VENDOR
    Check on table  /TC/VENDOR resulted in errors              
    Thanks
    Ravi

    Hi,
    Easiest way is to download the table eg into an Excel table (if possible) or text table. Drop the table from the database. Build your table with the new key field. Build the database table again and fill it.
    You can do it also over the database into a new table. Drop the old one. Build the enhanced one and fill it. Afterwards drop your (temporary) table.
    Maybe there are other ways, but this works.
    Success,
    Rob

  • I want to add image in column is it possible then how to add image in data base what data type we need to do

    I want to add image in column is it possible then how to add image in data base  what data type we need to give we required any casting  please show me one example
    jitendra

    Hi again,
    Several points that can help more:
    1. If you are working with Dot.Net, then I highly recommend read the first link that you got! This is nice and simple coding. Another option is this link which is even better in my opinion:
    http://www.dotnetgallery.com/kb/resource21-How-to-store-and-retrieve-images-from-SQL-server-database-using-aspnet.aspx
    2. As i mention above both link use the column's type image. There are several other option of working with Files. In most of my applications architecture I find that it is better to use a column which let us use any type of file and not an image column.
    In choosing the right column's type for your needs basically your fist question should be if if you want to store your data inside relational database environment or outside relational environment. It is a good idea to look for blogs on this issue. Next
    if you chose to store your data inside then you need to chose the right column type according to your server version. I highly recommend to look for blogs on the differences between those column's types: IMAGE, 
    Check those links:
    To BLOB or Not To BLOB: Large Object Storage in a Database or a Filesystem
    http://research.microsoft.com/apps/pubs/default.aspx?id=64525
    FILESTREAM feature of SQL Server 2008
    http://msdn.microsoft.com/library/hh461480
    FileTables feature of SQL Server 2012
    http://technet.microsoft.com/en-us/library/ff929144.aspx
    Compare Options for Storing Blobs (SQL Server)
    http://technet.microsoft.com/en-us/library/hh403405.aspx
    Binary Large Object (Blob) Data (SQL Server)
    http://technet.microsoft.com/en-us/library/bb895234.aspx
    Managing BLOBs using SQL Server FileStream via EF and WCF streaming
    * Very nice tutorial!
    http://petermeinl.wordpress.com/2012/02/20/managing-blobs-using-sql-server-filestream-via-ef-and-wcf-streaming/
    [Personal Site] [Blog] [Facebook]

  • How to add a new data type of oracle to SIM(7.0)

    Hi........
    I need to add a new data type(CLOB) to SIM of oracle .can anyone tell me how to modify or add this new data type.
    Any pointers to this will be highly appriciated.......
    thax in advance...

    Hi,
    Easiest way is to download the table eg into an Excel table (if possible) or text table. Drop the table from the database. Build your table with the new key field. Build the database table again and fill it.
    You can do it also over the database into a new table. Drop the old one. Build the enhanced one and fill it. Afterwards drop your (temporary) table.
    Maybe there are other ways, but this works.
    Success,
    Rob

  • How to add more summary data in the MIP of Compensation workbench

    Hi all,
    In the MIP (incentive plan) of the compensation workbench, we need to add more summary data in the summary section. I checked that all the summary data in that section are stored in the table 'ben_cwb_summary'.
    Even we can change the VIEW object for that page (using extension), we can't retrieve it because the new summary data/information we need to add are not stored in the table 'ben_cwb_summary'. We need to write our query to summerize data.
    How to implement it?
    Thanks in advanced!
    Jane

    faiz2000 wrote:
    > How to add more one record in the same time?
    >
    > Please I need your help to add more one record in the
    same time, how can I do
    > that?
    >
    > I have only one text field and the value it is linked
    from other table, if
    > user he bushes bottoms the all data it will copy it to
    new record:
    >
    > Ex.: <input name="textfield" type="text"
    >
    value="<%=(Recordset1.Fields.Item("webgroup").Value)%>">
    >
    >
    Use "Repeat Region"
    Mick

  • CWB: how to add more summary data in the summary section

    HI All,
    We need to add more summary data in the summary section. Some summary data need to calculated dynamically like (summary data A /summary data B).
    under the worksheet, there is a link:
    Personalize Dynamic Columns
    But this link allows to create Dynamic Columns for the worksheet, but not for summary setion.
    Is any way to add more summary data in the summary section through personalization instead of customization (VO extension)?
    Thanks in advanced!
    Jane

    faiz2000 wrote:
    > How to add more one record in the same time?
    >
    > Please I need your help to add more one record in the
    same time, how can I do
    > that?
    >
    > I have only one text field and the value it is linked
    from other table, if
    > user he bushes bottoms the all data it will copy it to
    new record:
    >
    > Ex.: <input name="textfield" type="text"
    >
    value="<%=(Recordset1.Fields.Item("webgroup").Value)%>">
    >
    >
    Use "Repeat Region"
    Mick

  • How to Add Time in Date

    hi,
    how to add time in a date for example
    date='01-jan-2005 23:00' [dd-mon-yyyy hh24:mi]
    time (to add)='02:00' [hh24:mi]
    if any one hv any idea about. pls reply

    If you can get the time element into an INTERVAL DAY TO SECOND datatype, you can simply add the interval to the date, e.g:
    yourdate + NUMTODSINTERVAL(2,'HOUR')
    What is tricky is converting a string like '02:00' into an interval or a number. You could generate a numeric offset with something like:
    TO_DATE('02:00','HH24:MI') - TO_DATE('00:00','HH24:MI')
    which can then be added to the date
    SELECT TO_DATE('01-jan-2005 23:00', 'dd-mon-yyyy hh24:mi') +
           (TO_DATE('02:00','HH24:MI') - TO_DATE('00:00','HH24:MI'))
    FROM   dual;

  • How to add minutes to date in java

    I have date in string variable, i have to add/subtract minutes from it, please adivce , how i could do in java 1.5
    sample data
    String olddate = "12/16/2010 4:58:29 PM"
    String minutes1 = "300"
    i would like to get value as below for above data
    String newdate ="12/16/2010 9:58:29 PM"

    Use SimpleDateFormat to convert the date object to string. Once the string object converted to date object use the getTime() method to get the date in milliseconds.
    Now you can easily adds/substract the date object.
    Remember, the resulting long value from getTime() method is in milliseconds, to get the value in minutes you need to multiply it by 1000 and by seconds in a minutes, that is 60.
    When your subtraction/adds done convert it back to date object.
    This is the codes:
    import java.text.SimpleDateFormat;
    import java.text.ParseException;
    import java.util.Date;
    public class DateCalculator {
         public static void main(String[] args) throws ParseException {
              String olddate = "12/16/2010 4:58:29 PM";
              System.out.println("old Date: "+olddate);
              SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy h:mm:ss a");
              long oldDateInMillis = formatter.parse(olddate).getTime();
              String minutes1 = "300";
              String newDateAdds = formatter.format(new Date(oldDateInMillis + Long.valueOf(minutes1)*1000*60 ));
              String newDateSubstract = formatter.format(new Date(oldDateInMillis - Long.valueOf(minutes1)*1000*60 ));
              System.out.println("new Date [Additions] : "+newDateAdds);
              System.out.println("new Date [Substraction] : "+newDateSubstract);
    }

  • How to add event in Date type bean

    Hi,
    I have created two date items - start date and end date.
    now I want to add event in these items?
    how can I add event in date type bean?
    Pls help..
    Thanks
    Amit

    Hi Swati,
    Yes, I have two OAMessageTextInput bean of Type Date.
    How can I set event by --StartDateBean.setEnterClientAction(ClientAction);
    I am unable to pass parameter of type "ClientAction" in .setEnterClientAction.
    how can I do this. If I declare by
    ClientAction DateEvent = null;
    then
    StartDateBean.setEnterClientAction(DateEvent);
    then it doesn't gives me any error but I am unable to initialize the value in "ClientAction" except null.
    How can I do this?
    Pls Help?
    Thanks
    Amit

  • How to add a hide data into an appointed image of the pdf

    Can I add data into an appointed image and hide the data?
    if can not add hide data in image, can I  add hide the data into the other layer  of   the pdf?
    Can anybody give me some tips?
    thanks!

    My code:
    ASFile hddatFile = NULL;
    ASPathName hidedataFile = ASFileSysPathFromDIPath (ASGetDefaultFileSys(),  "e:/myInfo.txt", NULL);
    if (hidedataFile == NULL)
         AVAlertNote("not yet");
    ASInt32 hidedataVal = ASFileSysOpenFile(NULL, hidedataFile, ASFILE_READ, &hddatFile);
    if (hidedataVal != 0)
         AVAlertNote("隐藏数据加载失败!");
    CosObj imgCos;
    PDEImageGetCosObj(pdeImage, &imgCos);
    CDocument cDocument;
    ASAtom Seal_K = ASAtomFromString("ADBE:Mytest");
    CosDictPut(imgCos, Seal_K, CosNewInteger((CosDoc)cDocument, false, ASFileGetEOF(hddatFile)));
    I'm not sure whether I have set the hide data in the picture success? there is not a return value to know it.
    when I use this code to get data:
    CosObj stream;
    PDEImageGetCosObj((PDEImage)pdeElement, &stream);
    CosObj nameCosObj = CosDictGet(stream, Seal_K);
    the return value (nameCosObj is (0,0)).  I dont know why? and if I get the cosObj, How to get my hide data?
    Where I do wrong?
    thanks for Leonard !

  • How to backup CAM config data?

    Hello all!
    From time to time, customers ask me if there is a way to backup/restore CAM config data on the management host. IT is clear, that all the array config is stored on the DACstore at the array itself. But there is some data on the management host only (mail configuration, registered arrays and such). In a big (or complex) environment, customers want to have a backup of the CAM config.
    I searched SunSolve, manuals (CAM release notes, install guide, admin guide) and this forum, but couldn't find anything. I assume, most or even all of the data is located somewhere in the CAM installation tree under /opt, but there is quite a bunch of subdirs and files.
    Can anybody shed some light into this? Thank you.
    wolfgang

    I just checked the Import/Export functionality. Reslt is a XML file with the descripion of the registered storage systems (disks, volumes, profiles, etc.). Since the "Administrator" menu item belongs to a specified storage system, I already expected this behaviour. I have to do an export per registered array.
    What I want, is a backup of users, notification settings, and such. In short: everything, what is available unter "General Configuration". Those paramters are valid for an entire CAM installation and not on a "per storage controller" basis. Of course not only backup but also restore.
    Anybody some more ideas?
    wolfgang

  • How to add company code data to BP in SAP CRM

    Hi All
    I have a problem replicating BP from CRM to R3,the error coming is "Fill in the required entry fields".
    While debugging the error i came to know that Company Code data is not given from CRM side which is mandatory in R3.
    Actually the Company code data is kept mandatory at ABAP level due to the Client requirement.
    Now how can i add the company code data to BP so that this errors is resolved.As far as my knowledge goes there is no provisions for company code data in CRM ,now even if we keep this company code data optional in R3 ,this error is coming.
    Please suggest the way out.
    Any help will be highly appreciated.
    Regards
    Ashish

    Hi there
    Thanks for the reply,yeah i understand that there is no company code concept in CRM system.
    so,we mean by Middleware exit is the user exit at R3 side,that i understand too.
    But here scenario is different in the case that customer is not getting replicated due to the company code being kept mandatory at ABAP level in R3.
    Actually client requires the company code data to be mandatory in R3 so that customer id does not get generated in R3 without giving the company code info.
    Now due to the mandatory check on company code at ABAP level ,what happening is that we are not able to replicate the BP info to R3 because if that check was not there we would have at least pass on the BP data except the company code  and company code info would have been given in R3 itself.
    So,i believe the way out is to remove that check and place a user exit in R3 so that at least CRM data is replicated and company code will come automatically.
    Hope this will help me,if you have any better suggestion then please provide the same.
    Regards
    Ashish

  • HOW TO ADD NEW VARIABLE DATAS ON ALV REPORT

    Hi gurus,
               I have cretaed one alv report using
    REUSE_ALV_GRID_DISPLAY.
    I HAVE CALCULATED SOME TOTALS AND STORED ON
    ONE VARIABLE .
    that variable name is 'toterror'.
    now i want to add  this variable on first line OF ALV REPORT.
    that is i should get LIKE THIS.
    PERNR   TEXT     ACTION  [ TITLES OF FIELDS ].THEN
    TOTAL ERROR RECORDS  '900'.
    THEN THE CORRESPONDING FIELDS DATA SHOULD BE DISPLAYED.
    HELP ME.
    THANKS IN ADVANCE.

    Hi
    Thanks Ajeet.
    The scenario is that I have to create a formula (contract end date-current date) and have to display the result using exeption to highlight the contracts ending in 30-60 days.
    The problem is that the info provider does not have any infoobject for date(only valid to and validity start date)
    I have created a formula variable on valid to date using replacement path. But dont have any variable to use for current date.
    The only time char in the cube is Fiscal yera variant.
    How should I go futher creating such formula? Shall I user customer exit variable? But I dont have any date char to create on.
    Can you shed some light on this problem
    Thanks

  • How to add or remove data from one table to another in � jsp page

    I have two tables on my jsp page.
    On the fist table feed by a data base, u have in the first column radiobutton
    second colum data
    third columm data
    on the second table feed by the data of the first table, u have in the first
    columm checkbox
    second colum data
    this column data
    u have two link, one link to add and another to remove
    1 when u click one of the radiobutton of the fist table following by the click of the link add, u add the line into the second table.
    2 when u click on one or two checkboxes of the second table following by a click on the link remove, u remove the line or lines checked.
    Did somebody could send to me en example of code and give to me solution on way to make it. thank u.

    rather than sending you the whole code, i would like
    to see your code first, how far you implemented the
    code ? and where are you getting problem, asking the
    code like this is not a professional.
    All the Best !******************************************************************************************************************************
    that's what i have implements. U have a bean witch picked data in that the data base, and catch properties .
    i describe to u how work the page.
    when u chose or selected TypeDetoyer, it present to u the first table with all the toyer contains in the typeDeToyer, and presents the second table empty.
    Secondly, u click a radio button to select � toyer of typeDeToyer and by clicking to the link ada, u feed the second table with the toyer selected.
    the seconde table is fill with a checkbox.
    inverse, when u check a check box or many of the second table and clicking on the link remove, u remove the selected lines.
    the aim of all of this is to save in the data base
    the second table, after saving the page is redirect to the modifying form.
    I am waiting for ur answer.
    Coul u send to me how u implements the part beetween the two tables
    Thank s
    <%@ page language="java" import="java.util.*"%>
    <jsp:useBean id="nsimalenBean" scope="session" class="nsimalen.NsimalenBean" />
    <jsp:useBean id="toyerBean" scope="session" class="nsimalen.ToyerBean" />
    <jsp:useBean id="vectorLstTasks" scope="session" class="java.util.Vector" />
    <jsp:useBean id="hashtableToyerSelected" scope="session" class="java.util.Hashtable"/>
    <jsp:useBean id="hashtableRegimeFiscalToyers" scope="session" class="java.util.Hashtable"/>
    <%
    //nsimalen.NsimalenBean nsimalenBean=nsimalenBean();
    ///vectorLstTasks.removeElementAt(i);
    String cVide="";
    String typeOperation;
    String monCodeNsimalen;
    //String monCodeNsimalen=request.getParameter("txtCreateNsimalenFormCode");
    String monNomNsimalen;
    String maVilleNsimalen;
    String monPaysNsimalen;
    String monTypeDetoyerSelected;
    String codeToyerSelected;
    String codeToyerSelectedToAdd;
    String codeToyerSelectedToRemove;
    String currentlibelleTypeDetoyer=cVide;
    String typeAction;
    /// d�finition de variable dont les valeurs seront stock�es dans l'objet de session
    if(request.getParameter("txtCreateNsimalenFormCode")!=null)
    monCodeNsimalen=request.getParameter("txtCreateNsimalenFormCode");
    else
    monCodeNsimalen=cVide;
    if(request.getParameter("txtCreateNsimalenFormNom")!=null)
    monNomNsimalen=request.getParameter("txtCreateNsimalenFormNom");
    else
    monNomNsimalen=cVide;
    if(request.getParameter("txtCreateNsimalenFormVille")!=null)
    maVilleNsimalen=request.getParameter("txtCreateNsimalenFormVille");
    else
    maVilleNsimalen=cVide;
    if(request.getParameter("selCreateNsimalenFormPays")!=null)
    monPaysNsimalen=request.getParameter("selCreateNsimalenFormPays");
    else
    monPaysNsimalen=cVide;
    if(request.getParameter("optCreateNsimalenFormTypeToyer")!=null)
    {monTypeDetoyerSelected=request.getParameter("optCreateNsimalenFormTypeToyer");
    currentlibelleTypeDetoyer=toyerBean.getLibelleTypedeToyer(monTypeDetoyerSelected);
    else
    monTypeDetoyerSelected=cVide;
    if(request.getParameter("radioCreateNsimalenFormCodeToyers")!=null)
    codeToyerSelectedToAdd=request.getParameter("radioCreateNsimalenFormCodeToyers");
    else
    codeToyerSelectedToAdd=cVide;
    if(request.getParameter("radioCreateNsimalenFormCodeToyersRemove")!=null)
    codeToyerSelectedToRemove=request.getParameter("radioCreateNsimalenFormCodeToyersRemove");
    else
    codeToyerSelectedToRemove=cVide;
    if(request.getParameter("typeOperation")!=null)
    typeOperation=request.getParameter("typeOperation");
    else
    typeOperation=cVide;
    if(request.getParameter("typeAction")!=null)
    typeAction=request.getParameter("typeAction");
    else
    typeAction=cVide;
    // Stockage des valeurs dans l'objet
    nsimalenBean.setCodePays(monPaysNsimalen);
    nsimalenBean.setNomNsimalen(monNomNsimalen);
    nsimalenBean.setVilleNsimalen(maVilleNsimalen);
    nsimalenBean.setCodeNsimalen(monCodeNsimalen);
    nsimalenBean.setDateCreation("12/12/2001");
    // if typeOperation=Invalidation
    // nsimalenBean.setDatad'invalidation
    if(typeAction.equals("Save"))
    nsimalenBean.validationCreation();
    Vector validationErrors= nsimalenBean.getChampVide();
    %>
    <body>
    <%
    if (validationErrors!=null && validationErrors.size()!=0 )
    for (int i=0; i<validationErrors.size();i++)
    %>
    <BR> Champs Invalides : <%=(String)validationErrors.elementAt(i)%>; <BR>
    <%
    else
    if (hashtableToyerSelected!=null && hashtableToyerSelected.size()<=10)
    nsimalenBean.insertRowNsimalen();
    nsimalenBean.insertRowsToyersAssocieesNsimalen(hashtableToyerSelected);
    if (hashtableToyerSelected!=null && hashtableToyerSelected.size()>=0)
    %>
    <BR> num Toyers max 10 <BR>
    <%
    if (hashtableToyerSelected!=null && hashtableToyerSelected.size()==0)
    %>
    <BR> vous devez au moins selectionner une toyer pour un nsimalen <BR>
    <%
    %>
    <form method="post" name="CreateNsimalenForm" action="CreateNsimalen.jsp">
              <table cool width="681" height="424" usegridx usegridy showgridx showgridy gridx="16" gridy="16" border="0" cellpadding="0" cellspacing="0">
                   <tr height="16">
                        <td width="16" height="423" rowspan="11"></td>
                        <td width="288" height="16" colspan="3"></td>
                        <td width="376" height="144" colspan="3" rowspan="5"></td>
                        <td width="1" height="16"><spacer type="block" width="1" height="16"></td>
                   </tr>
                   <tr height="32">
                        <td width="100" height="32" valign="top" align="left" xpos="16"><label><font size="2" face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular"><b>Code :</b></font></label></td>
                        <td width="188" height="32" colspan="2" valign="top" align="left" xpos="116"><input type="text" name="txtCreateNsimalenFormCode" size="24" value='<%=nsimalenBean.getCodeNsimalen()%>'></td>
                        <td width="1" height="32"><spacer type="block" width="1" height="32"></td>
                   </tr>
                   <tr height="32">
                        <td width="100" height="32" valign="top" align="left" xpos="16"><label><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>Nom :</b></font></label></td>
                        <td width="188" height="32" colspan="2" valign="top" align="left" xpos="116"><input type="text" name="txtCreateNsimalenFormNom" size="24" value='<%=nsimalenBean.getNomNsimalen()%>'></td>
                        <td width="1" height="32"><spacer type="block" width="1" height="32"></td>
                   </tr>
    <input type="hidden" name="typeOperation" size="24" >
    <input type="hidden" name="typeAction" size="24" >
                   <tr height="32">
                        <td width="100" height="32" valign="top" align="left" xpos="16"><label><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>Ville :</b></font></label></td>
                        <td width="188" height="32" colspan="2" valign="top" align="left" xpos="116"><input type="text" name="txtCreateNsimalenFormVille" size="24" value='<%=nsimalenBean.getNomVille()%>'></td>
                        <td width="1" height="32"><spacer type="block" width="1" height="32"></td>
                   </tr>
                   <tr height="32">
                        <td width="100" height="32" valign="top" align="left" xpos="16"><label><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>Pays : </b></font></label></td>
                        <td width="188" height="32" colspan="2" valign="top" align="left" xpos="116"><select name="selCreateNsimalenFormPays" size="1">
    <option value="" ><b><font size="2" name="optCreateNsimalenFormPays"></font></b></option>
    <%
    //String cVide="";
    Vector nsimalenLst = new Vector();
    //strNomNsimalen=request.getParameter("txtSearchFormNom").trim();
    nsimalenLst = nsimalenBean.getAllPays();
    // Pour savoir la taille du vecteur
    if(nsimalenLst!=null && nsimalenLst.size()!=0)
    for(int i=0;i< nsimalenLst.size();i++)
    Hashtable myrecord = (Hashtable)nsimalenLst.elementAt(i);
    String monCodePays ="";
    String monLibelle="";
    monCodePays =(String)myrecord.get("NNAM_CODE");
    monLibelle =(String)myrecord.get("NNAM_LIBELLE");
    System.out.println("mon code pays= "+monCodePays+"i="+i+ " mon Libelle Pays="+monLibelle+"nsimalenLst.size() ="+nsimalenLst.size());
    %>
    <option value='<%=monCodePays%>' <%if(monCodePays.equals(monPaysNsimalen))
    out.print("selected");%> ><b><font name="optCreateNsimalenFormPays" size="2"><%=monCodePays%></font></b></option>
                             <%}
    %>
    </select></td>
                        <td width="1" height="32"><spacer type="block" width="1" height="32"></td>
                   </tr>
                   <tr height="16">
                        <td width="664" height="16" colspan="6" valign="top" align="left" xpos="16">
                             <hr width="644" size="2">
                        </td>
                        <td width="1" height="16"><spacer type="block" width="1" height="16"></td>
                   </tr>
                   <tr height="32">
                        <td width="100" height="32" valign="top" align="left" xpos="16"><label><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>Type de toyer :</b></font></label></td>
                        <td width="32" height="32"></td>
                        <td width="156" height="32" valign="top" align="left" xpos="148"><select name="optCreateNsimalenFormTypeToyer" size="1" onChange="javascript:document.CreateNsimalenForm.submit();">
    <option value="" ><b><font size="2" face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular"></font></b></option>
    <%
    //String cVide="";
    Vector toyerLst = new Vector();
    //strNomNsimalen=request.getParameter("txtSearchFormNom").trim();
    toyerLst = toyerBean.getAllTypeDeToyers();
    // Pour savoir la taille du vecteur
    if(toyerLst!=null && toyerLst.size()!=0)
    hashtableRegimeFiscalToyers = new Hashtable();
    for(int i=0;i< toyerLst.size();i++)
    Hashtable myrecord = (Hashtable)toyerLst.elementAt(i);
    String monTypeToyer ="";
    String monLibelleToyer="";
    monTypeToyer =(String)myrecord.get("TTOY_CODE");
    monLibelleToyer =(String)myrecord.get("TTOY_LIBELLE");
    // System.out.println("mon code pays= "+monTypeToyer+"i="+i+ " mon Libelle Pays="+monLibelleToyer+"nsimalenLst.size() ="+toyerLst.size());
    %>
    <option value=<%=monTypeToyer%> <%if(monTypeToyer.equals(monTypeDetoyerSelected))
    out.print("selected");%>><b><font size="2" face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular"><%=monLibelleToyer%></font></b></option>
                             <%}
    }%>
    </select></td>
                        <td width="376" height="32" colspan="3"></td>
                        <td width="1" height="32"><spacer type="block" width="1" height="32"></td>
                   </tr>
                   <tr height="128">
                        <td width="288" height="128" colspan="3" valign="top" align="left" xpos="16">
                             <%if (!monTypeDetoyerSelected.equals(cVide))
    //String cVide="";
    Vector maTypeToyerDetailList = new Vector();
    //strNomNsimalen=request.getParameter("txtSearchFormNom").trim();
    maTypeToyerDetailList = toyerBean.getToyersDetailsSelected(monTypeDetoyerSelected);
    // Pour savoir la taille du vecteur
    if(maTypeToyerDetailList!=null && maTypeToyerDetailList.size()!=0)
    %>
    <table border="1" cellpadding="0" cellspacing="0" width="224" height="75">
              <tr height="19">
                                       <td height="19" width="20"></td>
                                       <td height="19" width="46"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="3"><b>Toyer</b></font></td>
                                       <td height="19" width="140"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="3"><b>Libell�</b></font></td>
                                  </tr>
    <%
    {  hashtableRegimeFiscalToyers= new Hashtable();
    System.out.println( " je passe dans le premier for");
    for(int i=0;i< maTypeToyerDetailList.size();i++)
    Hashtable myRecord = (Hashtable)maTypeToyerDetailList.elementAt(i);
    System.out.println( " je passe dans le premier for 1");
    String myCodeToyer ="";
    String myLibelleToyer="";
    String myTypeDeToyerCode="";
    myCodeToyer =(String)myRecord.get("TOY_CODE");
    myLibelleToyer =(String)myRecord.get("TOY_LIBELLE");
    // myTypeDeToyerCode=(String)myRecord.get("TTOY_CODE");
    System.out.println( " je passe dans le premier for 2");
    Hashtable hashToyerCaracteristique = new Hashtable();
    hashToyerCaracteristique.put("TOY_LIBELLE",myLibelleToyer);
    hashToyerCaracteristique.put("TTOY_CODE",monTypeDetoyerSelected);
    hashToyerCaracteristique.put("TTOY_LIBELLE",currentlibelleTypeDetoyer);
    hashtableRegimeFiscalToyers.put(myCodeToyer,hashToyerCaracteristique);
    System.out.println( " je passe dans le premier for 3");
    %>
                                  <tr height="19">
                                       <td height="19" width="20" align="center" valign="middle"><input type="radio" value='<%=myCodeToyer%>' name="radioCreateNsimalenFormCodeToyers"></td>
                                       <td height="19" width="46"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b><%=myCodeToyer%></b></font></td>
                                       <td width="140" height="19"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b><%=myLibelleToyer%></b></font></td>
                                  </tr>
    <%
    %>
    <%}%>
    </table>
                        </td>
    <% System.out.println( " je passe dans le premier for 4_1");
    if (hashtableToyerSelected==null)
    hashtableToyerSelected = new Hashtable();
    System.out.println( " je passe dans le premier for 4_2");
    if(hashtableToyerSelected!=null)
    System.out.println( " je passe dans le premier for 4_3");
    %>
    <td width="376" height="128" colspan="3" valign="top" align="left" xpos="304">
                             <table border="1" cellpadding="0" cellspacing="0" width="355" height="117">
                                  <tr height="38">
                                       <td height="38" width="32"></td>
                                       <td width="47" height="38"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="3"><b>Code</b></font></td>
                                       <td height="38" width="112"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="3"><b>Type de toyer</b></font></td>
                                       <td height="38" width="152"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="3"><b>valeur par d�faut</b></font></td>
                                  </tr>
    <%
    System.out.println( " je passe dans le premier for 3");
    if(!codeToyerSelectedToAdd.equals(cVide) && typeOperation.equals("add"))
    System.out.println( " je passe dans le premier for 3_a");
    Hashtable hashToyerCaracteristique = (Hashtable)hashtableRegimeFiscalToyers.get(codeToyerSelectedToAdd);
    hashtableToyerSelected.put(codeToyerSelectedToAdd,hashToyerCaracteristique);
    System.out.println( " je passe dans le premier for 3_a_fin");
    if(!codeToyerSelectedToRemove.equals(cVide) && typeOperation.equals("remove"))
    System.out.println( " je passe dans le premier for 3_a");
    System.out.println( "remove ");
    System.out.println(codeToyerSelectedToRemove);
    hashtableToyerSelected.remove(codeToyerSelectedToRemove);
    if (hashtableToyerSelected.size()!=0)
    for( Enumeration e=hashtableToyerSelected.keys();e.hasMoreElements();)
    System.out.println("je rentre dans la boucle");
    String codeToyer =(String)e.nextElement();
    Hashtable hashToyerCaracteristique = (Hashtable)hashtableToyerSelected.get(codeToyer);
    String libelleToyer =(String)hashToyerCaracteristique.get("TOY_LIBELLE");
    String libelleTypeToyer =(String)hashToyerCaracteristique.get("TTOY_LIBELLE");
    %>
    <tr height="19">
                                       <td height="19" width="32" align="center" valign="middle"><input type="checkbox" value="<%=codeToyer%>" name="radioCreateNsimalenFormCodeToyersRemove"></td>
                                       <td width="47" height="19"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b><%=codeToyer %></b></font></td>
                                       <td height="19" width="112"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b><%=libelleTypeToyer %></b></font></td>
                                       <td height="19" width="152"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b><%=libelleToyer %></b></font></td>
    </tr>
    <%
    /* if (!codeToyerSelected.equals(cVide) && hashtableToyerSelected==null)
    hashtableToyerSelected = new Hashtable();
    if(hashtableToyerSelected!=null)
    //insertion du code HTml pour afficher l'entete du tableau
    if(operationType.equals("ajout"))
    Hahstable toyersdetails = getToyersDetail(IdToyerSelected);
    hashtableToyerSelected.put( IdToyerSelected, toyersdetails);
    if(operationType.equals("remove"))
    hashtableToyerSelected.remove(IdToyerSelected);
    // avant d'afficher l'entete verifier qu'il ya des elements dans hashtableToyerSelected (
    // hashtableToyerSelected.size!=0
    //Affichage de la hashtable
    for( Enumeration e=hashtableToyerSelected.keys();e.hasMoreElements;)
    String IdToyers =(String)e.nextElement();
    Hashtable ToyersDetails = (Hashtable) hashtableToyerSelected.get(IdToyers);
    string defaultValue = (String)ToyersDetails.get(defaultValue);
    // on fait la mise en page apres avoir recuperer tous les caracteristiques
    %>
                   <!--     <td width="376" height="128" colspan="3" valign="top" align="left" xpos="304">
                             <table border="1" cellpadding="0" cellspacing="0" width="355" height="117">
                                  <tr height="38">
                                       <td height="38" width="32"></td>
                                       <td width="47" height="38"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="3"><b>Code</b></font></td>
                                       <td height="38" width="112"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="3"><b>Type de toyer</b></font></td>
                                       <td height="38" width="152"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="3"><b>valeur par d&eacute;faut</b></font></td>
                                  </tr>
                                  <tr height="19">
                                       <td height="19" width="32" align="center" valign="middle"><input type="checkbox" value="checkboxValue" name="checkboxName"></td>
                                       <td width="47" height="19"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>J</b></font></td>
                                       <td height="19" width="112"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>Sp&eacute;cifique</b></font></td>
                                       <td height="19" width="152"><b><font size="3" face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2">Nuit</font></b></td>
                                  </tr>
                                  <tr height="19">
                                       <td width="32" align="center" valign="middle" height="19"><input type="checkbox" value="checkboxValue" name="checkboxName"></td>
                                       <td width="47" height="19"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>K</b></font></td>
                                       <td height="19" width="112"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>Quantit&eacute;</b></font></td>
                                       <td height="19" width="152"><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>Kilo</b></font></td>
                                  </tr> -->
                             </table>
                        </td>
                        <td width="1" height="128"><spacer type="block" width="1" height="128"></td>
                   </tr>
                   <tr height="51">
                        <td width="100" height="51" valign="top" align="left" xpos="16"><label><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>Add</b></font></label></td>
                        <td width="188" height="51" colspan="2"></td>
                        <td width="224" height="51" valign="top" align="left" xpos="304"><label><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>Remove</b></font></label></td>
                        <td width="152" height="51" colspan="2"></td>
                        <td width="1" height="51"><spacer type="block" width="1" height="51"></td>
                   </tr>
                   <tr height="13">
                        <td width="664" height="13" colspan="6" valign="top" align="left" xpos="16">
                             <hr width="644" size="2">
                        </td>
                        <td width="1" height="13"><spacer type="block" width="1" height="13"></td>
                   </tr>
                   <tr height="39">
                        <td width="512" height="39" colspan="4"></td>
                        <td width="80" height="39" valign="top" align="left" xpos="528"><label><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>Save</b></font></label></td>
                        <td width="72" height="39" valign="top" align="left" xpos="608"><label><font face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular" size="2"><b>Fermer</b></font></label></td>
                        <td width="1" height="39"><spacer type="block" width="1" height="39"></td>
                   </tr>
                   <tr height="1" cntrlrow>
                        <td width="16" height="1"><spacer type="block" width="16" height="1"></td>
                        <td width="100" height="1"><spacer type="block" width="100" height="1"></td>
                        <td width="32" height="1"><spacer type="block" width="32" height="1"></td>
                        <td width="156" height="1"><spacer type="block" width="156" height="1"></td>
                        <td width="224" height="1"><spacer type="block" width="224" height="1"></td>
                        <td width="80" height="1"><spacer type="block" width="80" height="1"></td>
                        <td width="72" height="1"><spacer type="block" width="72" height="1"></td>
                        <td width="1" height="1"></td>
                   </tr>
              </table>
              <p></p>
    </form>
    </body>
    </html>

  • Help: How to add serial number data into Delivery Order document

    Dear Gurus,
    I am creating an interface program and I have problem in attaching the serial number data to the corresponding material code for a certain delivery order document in R/3 4.6C SP22 system.
    The serial number can be attached either during the creation of the Delivery Order itself or in the subsequent step after creating the Delivery Order (i.e.: create the D/O document first, and then update the D/O data).
    The BAPI_OUTB_DELIVERY_CONFIRM_DEC FM does not provide any input parameter to let me put the serial number in this R/3 version.
    By tracing in SE30 the standard program VL02N --> Menu --> Extras --> Serial Number --> Continue (Enter) --> Save (Ctrl+S), I found out that the serial attachment 'might' be done during sub-routine SERIAL_LISTE_POST_LS in program SAPLIPW1. It will in turn executes FM SERIAL_LISTE_POST_LS. The commit to database table will be done in update task by FM OBJK_POST_UPDATE_N and SERIAL_POST_UPDATE_LS.
    <b>My question:</b>
    ============
    1. Is FM SERNR_ADD_TO_LS can be used to attach the serial number to D/O?
    If yes, how to do it please because I already tried it I can not see the serial information in VL02N after that. There is no any insert or update to database in this function module. Should I call other FM after this? I want to try to call FM OBJK_POST_UPDATE_N and SERIAL_POST_UPDATE_LS but I do not know how I can retrieve the global object such as XOBJK_ALL that is necessary for the input parameter.
    2. If SERNR_ADD_TO_LS can not be used, what other FM can I use? Can I call SERIAL_LISTE_POST_LS instead? Is there any reliable way to generate the import parameter for this FM, such as XSER00, XSER01, XOBJK_ALL and XEQUI?
    Thank you in advanced for your kind assistance.
    Best Regards,
    Hiroshi

    Try something similar to this below...
    Afterwards you should do a call transaction to VL02N and immediately SAVE. This is sufficient to ensure the status on the serial numbers is updated correctly.
    FUNCTION z_mob_serialnr_update_ls.
    ""Local interface:
    *" IMPORTING
    *" VALUE(VBELN_I) LIKE LIKP-VBELN
    *" TABLES
    *" SERNO_TAB STRUCTURE RISERLS
    *" YSER00 STRUCTURE SER00 OPTIONAL
    *" YSER01 STRUCTURE RSERXX OPTIONAL
    *" YOBJK_ALL STRUCTURE RIPW0 OPTIONAL
    *" YEQUI STRUCTURE RIEQUI OPTIONAL
    *" YMASE STRUCTURE MASE OPTIONAL
    *" EXCEPTIONS
    *" NO_EQUIPMENT_FOUND
    The modified/confirmed table of serial numbers is supplied in
    SERNO_TAB.
    These are updated in the SAP tables
    YSER00 - General Header Table for Serial Number Management
    YSER01 - Document Header for Serial Numbers for Delivery
    YOBJK_ALL - Internal Table for Object List Editing/Serial Numbers
    YEQUI - Internal Structure for IEQUI
    local data
    DATA: BEGIN OF del_wa,
    vbeln LIKE likp-vbeln,
    posnr LIKE lips-posnr,
    matnr LIKE lips-matnr,
    lfimg LIKE lips-lfimg.
    DATA: END OF del_wa.
    DATA: del_tab LIKE del_wa OCCURS 0.
    DATA: _ct TYPE i.
    DATA: lastobknr LIKE objk-obknr.
    DATA: _debug.
    CLEAR: yser00, yser01, yobjk_all, yequi, ymase.
    REFRESH: yser00, yser01, yobjk_all, yequi, ymase.
    GET PARAMETER ID 'ZEDI_DEBUG' FIELD _debug.
    OBJECT KEYS
    read the delivery items with serial numbers to be processed
    SELECT * INTO CORRESPONDING FIELDS OF TABLE del_tab
    FROM lips
    WHERE vbeln = vbeln_i
    AND serail NE space.
    if nothing is relevant for serial numbers bailout
    DESCRIBE TABLE del_tab LINES _ct.
    IF _ct IS INITIAL.
    EXIT.
    ENDIF.
    ==== read the existing object keys for delivery items
    SELECT * INTO CORRESPONDING FIELDS OF TABLE yser01
    FROM ser01
    WHERE lief_nr = vbeln_i.
    IF sy-subrc = 0.
    yser01-dbknz = 'X'. "entry exists in db
    MODIFY yser01 TRANSPORTING dbknz WHERE dbknz = space.
    ENDIF.
    == check if there is a header entry for the delivery item
    LOOP AT del_tab INTO del_wa.
    READ TABLE yser01 WITH KEY lief_nr = del_wa-vbeln
    posnr = del_wa-posnr.
    IF sy-subrc NE 0.
    create one
    CALL FUNCTION 'OBJECTLIST_NUMBER'
    IMPORTING
    obknr = yser01-obknr.
    yser00-mandt = sy-mandt.
    yser00-obknr = yser01-obknr.
    APPEND yser00.
    SELECT SINGLE kunnr INTO (yser01-kunde)
    FROM likp
    WHERE vbeln = vbeln_i.
    yser01-mandt = sy-mandt.
    yser01-lief_nr = del_wa-vbeln.
    yser01-posnr = del_wa-posnr.
    yser01-vorgang = 'SDLS'.
    yser01-vbtyp = 'J'.
    yser01-bwart = '601'.
    yser01-dbknz = space. "not in db
    yser01-loknz = space. "do not delete
    APPEND yser01.
    ENDIF.
    ENDLOOP.
    check if any entries should be deleted
    LOOP AT yser01.
    READ TABLE serno_tab WITH KEY vbeln = yser01-lief_nr
    posnr = yser01-posnr.
    IF sy-subrc NE 0.
    yser01-loknz = 'X'. "mark for delete
    MODIFY yser01.
    ENDIF.
    ENDLOOP.
    collect all the object keys for the delivery item with s/n's
    LOOP AT yser01.
    READ TABLE serno_tab WITH KEY vbeln = yser01-lief_nr
    posnr = yser01-posnr.
    IF sy-subrc = 0.
    READ TABLE yser00 WITH KEY obknr = yser01-obknr.
    IF sy-subrc NE 0.
    yser00-mandt = yser01-mandt.
    yser00-obknr = yser01-obknr.
    APPEND yser00.
    ENDIF.
    ENDIF.
    ENDLOOP.
    IF NOT _debug IS INITIAL. BREAK-POINT. ENDIF.
    SERIAL NO OBJECTS
    ==== read the existing serial numbers from the database
    via object number into YOBJK_ALL
    LOOP AT yser00.
    SELECT * APPENDING CORRESPONDING FIELDS OF TABLE yobjk_all
    FROM objk
    WHERE obknr = yser00-obknr.
    ENDLOOP.
    yobjk_all-dbknz = 'X'.
    MODIFY yobjk_all TRANSPORTING dbknz WHERE dbknz = space.
    === add any new serial numbers
    LOOP AT serno_tab.
    READ TABLE yser01 WITH KEY lief_nr = serno_tab-vbeln
    posnr = serno_tab-posnr.
    READ TABLE yobjk_all WITH KEY sernr = serno_tab-sernr
    matnr = del_wa-matnr.
    IF sy-subrc NE 0.
    this is a new serial number
    yobjk_all-mandt = sy-mandt.
    yobjk_all-obknr = yser01-obknr.
    yobjk_all-obzae = 0.
    yobjk_all-equnr = yequi-equnr.
    yobjk_all-objvw = 'S'.
    yobjk_all-sernr = serno_tab-sernr.
    yobjk_all-matnr = del_wa-matnr.
    yobjk_all-datum = sy-datum.
    yobjk_all-taser = 'SER01'.
    yobjk_all-equpd = 'X'.
    yobjk_all-objnr = yequi-objnr.
    yobjk_all-dbknz = space.
    yobjk_all-loknz = space.
    APPEND yobjk_all.
    ENDIF.
    ENDLOOP.
    === mark any which are no longer confirmed as deleted
    LOOP AT yobjk_all.
    READ TABLE yser01 WITH KEY obknr = yobjk_all-obknr.
    READ TABLE serno_tab WITH KEY vbeln = yser01-lief_nr
    posnr = yser01-posnr
    sernr = yobjk_all-sernr.
    IF sy-subrc NE 0.
    yobjk_all-loknz = 'X'.
    MODIFY yobjk_all TRANSPORTING loknz.
    ENDIF.
    ENDLOOP.
    EQUIPMENT RECORDS
    == get the equipment records
    LOOP AT yobjk_all.
    SELECT SINGLE * INTO CORRESPONDING FIELDS OF yequi
    FROM equi
    WHERE sernr = yobjk_all-sernr
    AND matnr = yobjk_all-matnr.
    IF sy-subrc NE 0.
    CONTINUE.
    ENDIF.
    IF yobjk_all-dbknz = space AND
    yobjk_all-loknz = space.
    yequi-dbknz = 'X'.
    yequi-obknr = yobjk_all-obknr.
    yequi-j_vorgang = 'PMS3'. "add to delivery
    yequi-matnr_old = yequi-matnr.
    APPEND yequi.
    yobjk_all-equnr = yequi-equnr.
    MODIFY yobjk_all TRANSPORTING equnr.
    CONTINUE.
    ENDIF.
    IF yobjk_all-dbknz = 'X' AND
    yobjk_all-loknz = 'X'.
    yequi-dbknz = 'X'.
    yequi-j_vorgang = 'PMSA'. "delete from delivery
    yequi-matnr_old = yequi-matnr.
    APPEND yequi.
    CONTINUE.
    ENDIF.
    ENDLOOP.
    remove any Equipment records that do not need to be processed
    DELETE yequi WHERE j_vorgang IS initial.
    IF NOT _debug IS INITIAL. BREAK-POINT. ENDIF.
    fill the object counter
    LOOP AT del_tab INTO del_wa.
    READ TABLE yser01 WITH KEY lief_nr = del_wa-vbeln
    posnr = del_wa-posnr.
    DO del_wa-lfimg TIMES.
    READ TABLE yobjk_all WITH KEY obknr = yser01-obknr
    obzae = sy-index.
    IF sy-subrc NE 0.
    READ TABLE yobjk_all WITH KEY obknr = yser01-obknr
    obzae = 0.
    IF sy-subrc = 0.
    yobjk_all-obzae = sy-index.
    MODIFY yobjk_all INDEX sy-tabix TRANSPORTING obzae.
    ENDIF.
    ENDIF.
    ENDDO.
    ENDLOOP.
    IF NOT _debug IS INITIAL. BREAK-POINT. ENDIF.
    ===========================================
    update the delivery
    ===========================================
    CALL FUNCTION 'SERIAL_LISTE_POST_LS'
    TABLES
    xser00 = yser00
    xser01 = yser01
    xobjk_all = yobjk_all
    xequi = yequi
    xmase = ymase.
    TAB_CUOBJ =
    XSER03 =
    CALL FUNCTION 'STATUS_BUFFER_EXPORT_TO_MEMORY'
    EXPORTING
    i_memory_id = memid_status.
    COMMIT WORK AND WAIT.
    CALL FUNCTION 'Z_MOB_SERIALNR_REFRESH_LS'
    EXPORTING
    ctu = 'X'
    mode = 'N'
    UPDATE = 'L'
    GROUP =
    USER =
    KEEP =
    HOLDDATE =
    NODATA = '/'
    vbeln_i = vbeln_i.
    IMPORTING
    SUBRC =
    TABLES
    MESSTAB =
    ENDFUNCTION.
    FUNCTION z_mob_serialnr_refresh_ls.
    ""Local interface:
    *" IMPORTING
    *" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
    *" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
    *" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
    *" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
    *" VALUE(USER) LIKE APQI-USERID OPTIONAL
    *" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
    *" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
    *" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
    *" VALUE(VBELN_I) LIKE LIKP-VBELN
    *" EXPORTING
    *" VALUE(SUBRC) LIKE SYST-SUBRC
    *" TABLES
    *" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
    DATA: vbeln_001 LIKE bdcdata-fval.
    vbeln_001 = vbeln_i.
    subrc = 0.
    PERFORM bdc_nodata USING nodata.
    PERFORM open_group USING group user keep holddate ctu.
    PERFORM bdc_dynpro USING 'SAPMV50A' '4004'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LIKP-VBELN'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'LIKP-VBELN'
    vbeln_001.
    PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=PSER_T'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LIPS-POSNR(01)'.
    PERFORM bdc_dynpro USING 'SAPLIPW1' '0200'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'RIPW0-SERNR(01)'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=RWS'.
    PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=SICH_T'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LIPS-MATNR(02)'.
    PERFORM bdc_transaction TABLES messtab
    USING 'VL02N'
    ctu
    mode
    update.
    IF sy-subrc <> 0.
    subrc = sy-subrc.
    EXIT.
    ENDIF.
    PERFORM close_group USING ctu.
    ENDFUNCTION.
    INCLUDE bdcrecxy.

Maybe you are looking for