It is possible to writing vertically in script/smart forms

I am trying to write vertically in script,
how to write in script
then how to draw vertical line in script?
I try to draw vertical line / box
my code is, 
&vline(10)&
bt it appered
I I I I I I I I I I
Thanks,
Vino

Hi Vino,
The only way I can see to place text like this is to write it as invidual characters on each line like you have done above. Perpahs you canj use tab stops to place the characters on each line for alignment.
There are commands to rotate text but this will not give the result you require.
Regards,
Aidan

Similar Messages

  • Sending emails in PDF & TXT format generated by SAP script/Smart forms

    Hi
    We have a requirement to configure SMTP node to send emails in PDF & TXT format. Currently, Output format for SAP Documents generated by SAP Script/Smart Forms configured in PDF. (Tx - SCOT - SMTP Node - Intetnet - Output Forms for SAP Documents). But, We also like to send emails in TXT format for other application in the same system. I see that you can send emails generated by SAP Script/Smart Forms either in PDF or TXT format not both.
    Is it possible to send the emails in both the formats by configuring in Tx SCOT?
    Your inputs will be appreciated.
    Regards
    Chandu

    Hi chandu,
    1.  emails in both the formats by configuring in Tx SCOT ?
      Scot will allow only ONE AT A TIME.
    2. The other workaround is,
      that using some FM
      convert the OTF (sapscript/smartform)
      data to TEXT,
      and send it as RAW
    3. Configure RAW =  TEXT in scot.
    regards,
    amit m.

  • How to draw vertical lines in SMART FORMS

    Hi Guys,
    Can anyone please let me know how to draw vertical and horizontal lines in smart forms, i have to do this in the secondary window.
    thanks,
    Ramesh

    Hi Ramesh,
    In the window output options you have option of check box to get lines.
    Then you need to give the spacing for vertical and horizontal.
    Another option is putting a template on window and getting the boxes, but it is quite little bit complex.
    Put the cursor on the WINDOW in which the lines you want.
    Right click on it>create>complex section.
    In that select the TEMPLATE radio button.
    Goto TAB TEMPLATE.
    Name: give some name of line.
    From: From coloumn.
    To: To coloumn
    Height: specify the height of the line.
    Next give the coloumn widths.
    Like this you can draw the vertical and horzontal lines.
    If the above option doesnot workout then u can try the below option also
    any how you can draw vertical and horizontal lines using Template and Table.
    for Template First define the Line and divide that into coloumns and goto select patterns and select the required pattern to get the vertical and horizontal lines.
    For table, you have to divide the total width of the table into required no.of columns and assign the select pattern to get the vertical and horizontal lines.
    if this helps, reward with points.
    Regards,
    Naveen

  • Problems in sap script/smart forms

    what are the major problems will come in real time about smart form and sap script?

    Hi there.
    Question 1:
    Use font MICR_C for MICR CMC-7 or MICR_E for MICR E-13B
    http://help.sap.com/saphelp_nw04/helpdata/en/90/78f078030211d399b90000e83dd9fc/frameset.htm
    Question 2:
    /: SET DATE MASK = 'DDMMYYYY'
    http://help.sap.com/saphelp_nw04/helpdata/en/d1/8034d4454211d189710000e8322d00/frameset.htm
    Question 3:
    /E BOX_ELEMENT
    /: POSITION WINDOW                       
    /: POSITION YORIGIN &Y& LN 
    /: SIZE HEIGHT &HEIGHT& LN    
    /: BOX FRAME 10 TW
    /: BOX XPOS  '0.0' CM  WIDTH 0 TW FRAME 10 TW
    Question 4:
    &symbol(C)&
    http://help.sap.com/saphelp_nw04/helpdata/en/d1/8034d4454211d189710000e8322d00/frameset.htm
    Question 5:
    See SAP Note 129581.
    Best regards.
    Valter Oliveira.
    Edited by: Valter Oliveira on May 30, 2008 4:42 PM

  • SAP Script & Smart forms

    Hi All,
    How to find out in a particular object whether SAP scripts or smart forms are used?
    If forms are used is there any t.code to find out which type of form is used?
    Regards,
    Vamsi P

    Hello Vamsi,
    <b>SAP scripts and SMARTFORMS - both serve the same purpose.</b>
    SMARTFORMS were introduced since the release of SAP 4.7. Earlier to that it was only SAP scripts for designing layouts. SMARTFORMS have few additional benefits in terms designing over scripts.
    Now, coming to your questions -  Every Script or a SMARTFORM has a driver program. i.e. Smart form/Script has to be called into a program. And this Driver program is in turn assigned to the relevant output type, And the output type is assiged to appropriate level of a transaction i.e. at the header level of an order or invoice etc.
    T-code: SE71 is used to design SAP script.
    T-Code: SMARTFORMS is used for designing Smart Forms.
    To find out whether a script or Smartform is used in any particular case..........you have to look into the <b>Driver program</b> that is assiged to the output type.
    Hope this helps..............
    <b>REWARD POINTS IF HELPFUL.</b>
    Regards
    Sai

  • Print Vertical on a smart form

    Hi All,
    I want to print some dynamic text on the smart form, some part of it has to be printed vertically.
    please suggest how to do that.
    Thanks,
    Pankaj Sharma

    Hi!
    The most, what Smartform can do for vertical printing (and SAPScript also) is to print like this:
    H
    E
    L
    L
    O
    W
    O
    R
    L
    D
    Or you can scan vertical texts as an image and print them like a BITMAP.
    Regards
    Tamá

  • Printing vertical text in SMART FORMS

    Hi,guys iam fresher to this environment and i just want to print vertical text in SMARTFORMS.Will you please provide any information regarding this.

    Hi Raja,
       As far as my knowledge its not possible in Smartforms.
      I had the same requirement , what I had done is I have created a text in word and saved that as BMP and used that logo inside that window. But the requirement for me was that the TEXT was Static means it was not changing.
    Reward points if Helpful
    Regards
    Avi.........

  • Find Script/Smart form

    Hi, I have been given the program name. How do I find out which form/script is attached to that program?

    Hi,
    Using the NACE trasaction code you come to know which form and the Drier Program is used, first select the application type in NACE then Press the Output Types, you need to know the Output type then Select the output type then press the Processing Routines then you will get the Program name and the Layout nmae
    and also, Look at the table TNAPR to know the Layout name
    Regards
    Sudheer

  • Writing Dynamic code in smart form

    Hi All,
       I have a issue on Smart form . the smart form is customized view of bbp_po(srm) for po(purchase order) details  in that in a secoundary window where vedor adress is displaying .In the first line of the address name1 and name2 are displaying now my need is if the name1+name2 is more than 47 chars then i need  to shift name2 to next line how can i do this dynamic code plase i need it urgently .
    Thanks
    channu sajjanar

    Hi
    Write code yto count the no of character, if it is more than 47 then display NAME2 in second line else write in first line.
    for second line put conditionin text element  NAME2 <> space.
    This will work
    Thanks
    Shiva

  • Advantage of SAP Script over Smart forms

    Hi Friends,
    Can you please let me know some ten points on Advantages of SAP Scripts over Smart Forms.
    Thanks,
    Gokul

    Hi Gokul,
    Major Differences between smart form and Scripts are
    Multiple page formats are possible in smartforms which is not the case of SAP Scripts
    It is possible to have a smartform without a main window
    Labels cannot be created in smartforms.
    Routines can be written in smartforms tool.
    Smartforms generates a function module when activated
    Background graphics are possible in case of SMARTFORMS
    Assigning the font colours to the text are not possible in the case SMARTFORMS.
    Creating and maintaining SMARTFORMS requires half the time compared to SAP Scripts
    Smart Forms                                           SAP Scripts
    1)Form, Text Module, Styles are          Form, So10 are
    client independent                             client dependent
    2)In a form diff pages can have         In a form all pages should
    different page formats                      follow one page format
    3)Back ground picture is possible     Not Possible
    4)Maintenance cost is low                Heavy
    5)Web publishing is possible             Not Possible
      using XML
    rewards if helpful........................
    Regards,
    Maha.

  • How to limit the number of rows in a smart form , sap script.

    Can anyone tell me how to limit the number of rows in the output of a sap script/smart form. I have tried "protect/endprotect" in sap script but have no idea of how to do in smart form. In sap script the only way it has happened is by reducing the size of the main window.

    Hi,
    In Smartform also, why dont you try reducing the size of the window if you want to limit the rows in it. Also if you are printing Line Items in a LOOP, you can write
    LOOP AT T_ITAB FROM 1 TO N in the LOOP Node if you know how many records exactly you want to display in 1 Page processing.
    regards,
    Mahesh

  • Regarding Smart form and Script

    Hi.
    Can anybody send Full screen short of Smart Form And Script.
    Thanks And Regards
    Gulo.

    Hi Golu singh,
    Pleasae check this link
    Tutorials on SAP Script/Smart Forms
    http://www.****************/Tutorials/Smartforms/SFMain.htm
    SAP SmartForms explained step by step including Table display .
    http://sap.niraj.tripod.com/id67.html
    SMARTFORMS
    [Step br Step Tutorial to create Smartform|http://smoschid.tripod.com/How_to_do_things_in_SAP/How_To_Build_SMARTFORMS/How_To_Build_SMARTFORMS.html]
    Best regards,
    raam

  • Writing vertically in cells

    How do I go about writing vertically in cells.

    Here is a highly enhanced version of the script.
    It no longer use a temporary text box
    It keeps text attributes like font name, font size, color…
    --{code}
    --[SCRIPT rotate_cell_contents]
    Enregistrer le script en tant que Script : rotate_cell_contents.scpt
    déplacer le fichier ainsi créé dans le dossier
    <VolumeDeDémarrage>:Users:<votreCompte>:Library:Scripts:Applications:Numbers:
    Il vous faudra peut-être créer le dossier Numbers et peut-être même le dossier Applications.
    Sélectionner une cellule dont le texte doit être tourné de 90 degrés.
    Aller au menu Scripts , choisir Numbers puis choisir “rotate_cell_contents”
    --=====
    L’aide du Finder explique:
    L’Utilitaire AppleScript permet d’activer le Menu des scripts :
    Ouvrez l’Utilitaire AppleScript situé dans le dossier Applications/AppleScript.
    Cochez la case “Afficher le menu des scripts dans la barre de menus”.
    Sous 10.6.x,
    aller dans le panneau “Général” du dialogue Préférences de l’Éditeur Applescript
    puis cocher la case “Afficher le menu des scripts dans la barre des menus”.
    --=====
    Save the script as a Script: rotate_cell_contents.scpt
    Move the newly created file into the folder:
    <startup Volume>:Users:<yourAccount>:Library:Scripts:Applications:Numbers:
    Maybe you would have to create the folder Numbers and even the folder Applications by yourself.
    Select a cell whose contents must be rotated for 90 degrees.
    Go to the Scripts Menu, choose Numbers, then choose “rotate_cell_contents”
    --=====
    The Finder’s Help explains:
    To make the Script menu appear:
    Open the AppleScript utility located in Applications/AppleScript.
    Select the “Show Script Menu in menu bar” checkbox.
    Under 10.6.x,
    go to the General panel of AppleScript Editor’s Preferences dialog box
    and check the “Show Script menu in menu bar” option.
    --=====
    Yvan KOENIG (VALLAURIS, France)
    2012/06/23
    2012/06/26 -- No longer use an auxiliary text box. Now keep the text attributes.
    --=====
    on run
              local dName, sName, tName, rowNum1, colNum1, rowNum2, colNum2
              local le_texte, la_largeur, la_hauteur, myNewDoc
              my activateGUIscripting()
    Extract properties of the source/target cell *)
              set {dName, sName, tName, rowNum1, colNum1, rowNum2, colNum2} to my get_SelParams()
              tell application "Numbers" to tell document dName to tell sheet sName to tell table tName
                        set selection range to range (name of column colNum1 & name of row rowNum1)
              end tell
    Cut*)
              my raccourci("Numbers", "x", "c")
    Trigger Preview *)
              tell application "System Events"
                        if "Preview" is not in (name of every application process) then launch application "Preview"
              end tell
      delay 0.2 -- required
    New document from the clipboard *)
              my raccourci("Preview", "n", "c")
    Rotate to left *)
              my raccourci("Preview", "l", "c")
    Copy *)
              my raccourci("Preview", "c", "c")
    Quit *)
              my raccourci("Preview", "q", "c")
    Click the [Don't Save] button in the warning sheet *)
              tell application "Preview" to activate
              tell application "System Events" to tell application process "Preview"
                        tell window 1 to tell sheet 1 to click button 2
              end tell
    Back to Numbers *)
              tell application "Numbers" to tell document dName to tell sheet sName to tell table tName
      -- just reset the focus on the table
              end tell
    Paste in the cell *)
              my raccourci("Numbers", "v", "c")
    end run
    --=====
    set { dName, sName, tName,  rowNum1, colNum1, rowNum2, colNum2} to my get_SelParams()
    tell application "Numbers" to tell document dName to tell sheet sName to tell table tName
    on get_SelParams()
              local d_name, s_name, t_name, row_num1, col_num1, row_num2, col_num2
              tell application "Numbers" to tell document 1
                        set d_name to its name
                        set s_name to ""
                        repeat with i from 1 to the count of sheets
                                  tell sheet i to set maybe to the count of (tables whose selection range is not missing value)
                                  if maybe is not 0 then
                                            set s_name to name of sheet i
                                            exit repeat
                                  end if -- maybe is not 0
                        end repeat
                        if s_name is "" then
                                  if my parleAnglais() then
                                            error "No sheet has a selected table embedding at least one selected cell !"
                                  else
                                            error "Aucune feuille ne contient une table ayant au moins une cellule sélectionnée !"
                                  end if
                        end if
                        tell sheet s_name to tell (first table where selection range is not missing value)
                                  tell selection range
                                            set {top_left, bottom_right} to {name of first cell, name of last cell}
                                  end tell
                                  set t_name to its name
                                  tell cell top_left to set {row_num1, col_num1} to {address of its row, address of its column}
                                  if top_left is bottom_right then
                                            set {row_num2, col_num2} to {row_num1, col_num1}
                                  else
                                            tell cell bottom_right to set {row_num2, col_num2} to {address of its row, address of its column}
                                  end if
                        end tell -- sheet…
                        return {d_name, s_name, t_name, row_num1, col_num1, row_num2, col_num2}
              end tell -- Numbers
    end get_SelParams
    --=====
    on parleAnglais()
              local z
              try
                        tell application "Numbers" to set z to localized string "Cancel"
              on error
                        set z to "Cancel"
              end try
              return (z is not "Annuler")
    end parleAnglais
    --=====
    on decoupe(t, d)
              local oTIDs, l
              set oTIDs to AppleScript's text item delimiters
              set AppleScript's text item delimiters to d
              set l to text items of t
              set AppleScript's text item delimiters to oTIDs
              return l
    end decoupe
    --=====
    Creates a new iWork document from the Blank template and returns its name.
    example:
    set myNewDoc to my makeAnIworkDoc(theApp)
    on makeAnIworkDoc(the_app)
              local maybe, path_to_the_App, nb_doc, doc_name
              if the_app is "Pages" then
                        tell application "Pages"
                                  set nb_doc to count of documents
      make new document with properties {template name:item 1 of templates}
                        end tell
              else if the_app is "Numbers" then
                        tell application "System Events" to set maybe to the_app is in title of every application process
                        if not maybe then tell application theApp to activate
                        tell application "System Events"
                                  set path_to_the_App to get application file of application process the_app
                        end tell
                        tell application "Numbers"
                                  set nb_doc to count of documents
                                  open ((path_to_the_App as text) & "Contents:Resources:Templates:Blank.nmbtemplate:")
                        end tell
              else
                        if my parleAnglais(theApp) then
                                  error "The application “" & the_app & "“ is not accepted !"
                        else
                                  error "l’application « " & the_app & " » n’est pas gérée !"
                        end if
              end if
              tell application the_app
                        repeat until (count of documents) > nb_doc
                                  delay 0.1
                        end repeat
                        set doc_name to name of document 1
              end tell -- the_App
              return doc_name
    end makeAnIworkDoc
    --=====
    on activateGUIscripting()
      (* to be sure than GUI scripting will be active *)
              tell application "System Events"
                        if not (UI elements enabled) then set (UI elements enabled) to true
              end tell
    end activateGUIscripting
    --=====
    ==== Uses GUIscripting ====
    This handler may be used to 'type' text, invisible characters if the third parameter is an empty string.
    It may be used to 'type' keyboard raccourcis if the third parameter describe the required modifier keys.
    I changed its name « shortcut » to « raccourci » to get rid of a name conflict in Smile.
    on raccourci(a, t, d)
              local k
              tell application a to activate
              tell application "System Events" to tell application process a
                        set frontmost to true
                        try
                                  t * 1
                                  if d is "" then
      key code t
                                  else if d is "c" then
      key code t using {command down}
                                  else if d is "a" then
      key code t using {option down}
                                  else if d is "k" then
      key code t using {control down}
                                  else if d is "s" then
      key code t using {shift down}
                                  else if d is in {"ac", "ca"} then
      key code t using {command down, option down}
                                  else if d is in {"as", "sa"} then
      key code t using {shift down, option down}
                                  else if d is in {"sc", "cs"} then
      key code t using {command down, shift down}
                                  else if d is in {"kc", "ck"} then
      key code t using {command down, control down}
                                  else if d is in {"ks", "sk"} then
      key code t using {shift down, control down}
                                  else if (d contains "c") and (d contains "s") and d contains "k" then
      key code t using {command down, shift down, control down}
                                  else if (d contains "c") and (d contains "s") and d contains "a" then
      key code t using {command down, shift down, option down}
                                  end if
                        on error
                                  repeat with k in t
                                            if d is "" then
      keystroke (k as text)
                                            else if d is "c" then
      keystroke (k as text) using {command down}
                                            else if d is "a" then
      keystroke k using {option down}
                                            else if d is "k" then
      keystroke (k as text) using {control down}
                                            else if d is "s" then
      keystroke k using {shift down}
                                            else if d is in {"ac", "ca"} then

  • Is it possible to execute same eCATT  script in different SAP versions

    is it possible to execute same eCATT  script in different SAP versions?
    Regards,
    Sunil sankar B.
    [email protected]

    Yes. In the ecatt script you have the option under ATTRIBUTES --> VERISONING DATA you can restrict it to different software components and different releases.

  • Is possible to separate path using script....?

    Hi Everyone,
    I have one overall path and two outer edge path.
    use overall path to separate each like pant and tops.
    Is possible to separate path using script. I have also tried script but is not working on second separation.
    can any rectify that script is possible...?
    -yajiv
    #target Photoshop
    app.bringToFront;
    var docRef = app.activeDocument;
    var myDocname=app.activeDocument.name
    var e=0
    try {
        var ecp=docRef.colorProfileName;
         var n=docRef.pathItems.length;
                        if(n>0){
                if(docRef.pathItems[0].name=="Path 1"){
                  var pathRef = docRef.pathItems[0].duplicate(); 
                  var path1=docRef.pathItems.getByName("1");   
                  //path1.duplicate();         
                  path1.select();
                  Path_copy();
                  var pathitem=docRef.pathItems.getByName("Path 1 copy");
                   pathitem.select();
                   Path_Paste();
                   pathitem.operation = ShapeOperation.SHAPEINTERSECT;
                   Path_Combine();
                   var path1=docRef.pathItems.getByName("1");  
                   var pathRef1 = path1.duplicate();
                   path1.select();
                   path1.remove();
                    var pathitem=docRef.pathItems.getByName("Path 1 copy");
                    pathitem.select();
                    pathitem.name="1";
                    var pathitem=docRef.pathItems.getByName("Box");
                    pathitem.select();
                    Path_copy();
                   var path1=docRef.pathItems.getByName("1 copy");  
                    path1.select();
                    path1.name="OL"
                    Path_Paste();
                    path1.operation = ShapeOperation.SHAPEXOR;
                    Path_Combine();
                   var pathRef = docRef.pathItems[0].duplicate(); 
                   var pathitem=docRef.pathItems.getByName("Path 1 copy");
                   pathitem.select();
                   Path_copy();
                   var path2=docRef.pathItems.getByName("OL");  
                   path2.select();
                   Path_Paste();
                   path2.operation = ShapeOperation.SHAPEINTERSECT;
                   alert(path2.operation);
                   Path_Combine();
    catch (e) {
       alert(e);
    //alert ("PSR_LWC_PLUS_V2_PT - Color Profile not Embedded...\n Check it out...!!!")
    function Path_copy(){
        var id200 = charIDToTypeID( "copy" );
        executeAction( id200, undefined, DialogModes.NO );
    function Path_Paste(){
        var id204 = charIDToTypeID( "past" );
        executeAction( id204, undefined, DialogModes.NO );
    function Path_Combine(){
                var idcombine = stringIDToTypeID( "combine" );
                    var desc26 = new ActionDescriptor();
                    var idnull = charIDToTypeID( "null" );
                        var ref25 = new ActionReference();
                        var idPath = charIDToTypeID( "Path" );
                        var idOrdn = charIDToTypeID( "Ordn" );
                        var idTrgt = charIDToTypeID( "Trgt" );
                        ref25.putEnumerated( idPath, idOrdn, idTrgt );
                    desc26.putReference( idnull, ref25 );
                executeAction( idcombine, desc26, DialogModes.NO );

    Hi c.pfaffenbichler,
    Finally with your guidance I rectify the script error.
    Thank you for your time and knowledge, I really do appreciate it.
    Once again Thanks for your continue support.
    "Wish you Happy successful New Year - 2012...!!!"
    Regards
    -yajiv....
    Here is the Code.....!
    // create path intersections;
    // 2011; use it at your own risk;
    #target photoshop
    if (app.documents.length > 0) {
    var myDocument = app.activeDocument;
    // set to pixels;
    var originalRulerUnits = app.preferences.rulerUnits;
    app.preferences.rulerUnits = Units.POINTS;
    var theArray = new Array;
    var theNumber = myDocument.pathItems.length;
    // »simplify« paths and collect components;
    for (var m = 0; m < theNumber; m++) {
              myDocument.pathItems[m].select();
              combinePath();
              theArray.push(collectPathComponents(myDocument, myDocument.pathItems[m]));
          var OV_Path=myDocument.pathItems[0]
        // create intersections;
        for (var n = 1; n < theNumber; n++) {
            //alert(OV_Path);
              var theFirst = collectPathComponents(myDocument,OV_Path );
              var theSecond = theArray[n];
              for (var a = 0; a < theSecond.length; a++) {
                        theFirst.push(theSecond[a]);
              var thePath = createPathFromPathComponentActionDesc(theFirst, "intersect",0);
              makePath(myDocument.pathItems[0].name+" intersected with "+myDocument.pathItems[n].name);
              combinePath();
    // create subtraction;
        var theFirst = collectPathComponents(myDocument, myDocument.pathItems[0]);
        for (var o = 1; o < theNumber; o++) {
                  var theSecond = theArray[o];
                  for (var a = 0; a < theSecond.length; a++) {
                            theFirst.push(theSecond[a])
        var thePath = createPathFromPathComponentActionDesc(theFirst, "subtract",1); // Modify the parameter, add flag for function
        //subtract
        makePath("all others subtracted from "+myDocument.pathItems[0].name);
        combinePath();
    // reset;
    app.preferences.rulerUnits = originalRulerUnits;
        function combinePath () {
        // =======================================================
        var idcombine = stringIDToTypeID( "combine" );
            var desc4 = new ActionDescriptor();
            var idnull = charIDToTypeID( "null" );
                var ref3 = new ActionReference();
                var idPath = charIDToTypeID( "Path" );
                var idOrdn = charIDToTypeID( "Ordn" );
                var idTrgt = charIDToTypeID( "Trgt" );
                ref3.putEnumerated( idPath, idOrdn, idTrgt );
            desc4.putReference( idnull, ref3 );
        executeAction( idcombine, desc4, DialogModes.NO );
        //components correspond to subPathItems,  subpathList contains the actual paths than can make up one subPathItem ;
        ////// collect path infor from actiondescriptor //////
        function collectPathComponents (myDocument, thePath) {
            //var myDocument = app.activeDocument;
            var originalRulerUnits = app.preferences.rulerUnits;
            app.preferences.rulerUnits = Units.POINTS;
            // based of functions from xbytor’s stdlib;
            var ref = new ActionReference();
            for (var l = 0; l < myDocument.pathItems.length; l++) {
                      var thisPath = myDocument.pathItems[l];
                      if (thisPath == thePath && thisPath.name == "Work Path") {
                                ref.putProperty(cTID("Path"), cTID("WrPt"));
                      if (thisPath == thePath && thisPath.name != "Work Path" && thisPath.kind != PathKind.VECTORMASK) {
                                ref.putIndex(cTID("Path"), l + 1);
                      if (thisPath == thePath && thisPath.kind == PathKind.VECTORMASK) {
                   // var idPath = charIDToTypeID( "Path" );
                    var idPath = charIDToTypeID( "Path" );
                    var idvectorMask = stringIDToTypeID( "vectorMask" );
                    ref.putEnumerated( idPath, idPath, idvectorMask );
             var desc = app.executeActionGet(ref);
            var pname = desc.getString(cTID('PthN'));
            // create new array;
            var theArray = new Array;
            var pathContents = desc.getObjectValue(cTID("PthC"));
            var pathComponents = pathContents.getList(sTID('pathComponents'));
            for (var m = 0; m < pathComponents.count; m++) {
            var comp = pathComponents.getObjectValue(m);
            var subPathList = comp.getList(sTID("subpathListKey"));
            var shapeOp = comp.getEnumerationType(sTID("shapeOperation"));
            //alert("shapeOp - "+shapeOp);    q
            theArray.push([comp, subPathList, shapeOp]);
            // by xbytor, thanks to him;
            function cTID (s) { return cTID[s] || cTID[s] = app.charIDToTypeID(s); };
            function sTID (s) { return sTID[s] || sTID[s] = app.stringIDToTypeID(s); };
            // reset;
            app.preferences.rulerUnits = originalRulerUnits;
            return theArray;
        ////// create a path from an array of pathcomponents //////
        function createPathFromPathComponentActionDesc (theArray, shapeOperation,flag) {
        cTID = function(s) { return app.charIDToTypeID(s); };
        sTID = function(s) { return app.stringIDToTypeID(s); };
        var desc1 = new ActionDescriptor();
        var ref1 = new ActionReference();
        ref1.putProperty(cTID('Path'), cTID('WrPt'));
        desc1.putReference(sTID('null'), ref1);
        var list1 = new ActionList();
        for (var m = 0; m < theArray.length; m++) {
                  var desc37 = new ActionDescriptor();
                  if (m == 0 && flag=0) {
                            desc37.putEnumerated(sTID('shapeOperation'), sTID('shapeOperation'), cTID('Intr'));
                  else  if (m == 0 && flag=1) {//Modify mode to exclude.....!
                             desc37.putEnumerated(sTID('shapeOperation'), sTID('shapeOperation'), theArray[m][2]);
                  else {
                            switch (shapeOperation) {
                                      case "intersect":
                                      desc37.putEnumerated(sTID('shapeOperation'), sTID('shapeOperation'), cTID('Intr'));
                                      break;
                                      case "subtract":
                                      desc37.putEnumerated(sTID('shapeOperation'), sTID('shapeOperation'), cTID('Sbtr'));
                                      break;
                                      case "exclude":
                                      desc37.putEnumerated(sTID('shapeOperation'), sTID('shapeOperation'), 696);
                                      default:
                                      desc37.putEnumerated(sTID('shapeOperation'), sTID('shapeOperation'), theArray[m][2]);
                                      break;
                  var list5 = new ActionList();
                  desc37.putList(cTID('SbpL'), theArray[m][1]);
                  list1.putObject(cTID('PaCm'), desc37);
        desc1.putList(cTID('T   '), list1);
        executeAction(cTID('setd'), desc1, DialogModes.NO);
        ////// make work path regular path //////
        function makePath (aName) {
        // =======================================================
        var idMk = charIDToTypeID( "Mk  " );
            var desc4 = new ActionDescriptor();
            var idnull = charIDToTypeID( "null" );
                var ref2 = new ActionReference();
                var idPath = charIDToTypeID( "Path" );
                ref2.putClass( idPath );
            desc4.putReference( idnull, ref2 );
            var idFrom = charIDToTypeID( "From" );
                var ref3 = new ActionReference();
                var idPath = charIDToTypeID( "Path" );
                var idWrPt = charIDToTypeID( "WrPt" );
                ref3.putProperty( idPath, idWrPt );
            desc4.putReference( idFrom, ref3 );
            var idNm = charIDToTypeID( "Nm  " );
            desc4.putString( idNm, aName );
        executeAction( idMk, desc4, DialogModes.NO );

Maybe you are looking for