Liquid UI - WS Reference Library

Update Text Content with Editor


Purpose

This example is to copy text content to text editor screen to handle particular SAP long text control which can't use "copytext" command.
For example, the long text control in Header Data screen -> Texts tab of Create Sales Order (VA01).
The function in this example copies text content to text editor screen in order to save the content for LiquidUI textbox. 


User Interface



Liquid UI Script

//SAPMV45A.E4001.sjs

//user Interface
box([0,87], [5,164], "Term of Delivery");
textbox([1,89], [5,159], {"name":"z_va01_term_of_delivery_text"});
pushbutton([4,161], "@2L\\QSave Text@", "?", {"process":va01SaveText, "size":[1,2], "using":{"l_seq":6}});


//Function to trim string
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}


//Function to check if the string blank
function isBlank(jvar) {
    println(jvar);
    if (jvar=="undefined" || jvar== void 0 || jvar.toString().trim()=="" || jvar==null) {
       return true;
    } else {
       return false;
    }
}

//Function to copy text content to SAP text editor screen
function va01SaveText(param){
    var z_va0x_find_text_counter = param.l_seq;                //Copy passed sequence parameter

    onscreen "SAPMV45A.4001"
        if(isBlank(z_va01_term_of_delivery_text.trim())){    //Skip copy text if textbox is blank
            goto SKIP_COPY_TEXT;
        }
        var start_line=1;                                    //Set initial values
        var blank_line=0;
        enter('/Menu=3,2,11');                                //Go to Header Data-> Text tab
        onmessage                                            //Error handling
            if(_message.substring(0,2) == "E:"){
                message(_message);
                enter('?');
                goto FUNC_END;
            }
            else
                enter();
        
    onscreen 'SAPMV45A.4002'
        enter('=TP_FIRST');                         //Go to first option in the list
        
RECHECK_FIND_TEXT:;
    onscreen 'SAPMV45A.4002'
        if(z_va0x_find_text_counter > 0){           //According to sequence value
            z_va0x_find_text_counter--;
            enter('=TP_NEXT');                       //Go to next text in the list
            goto RECHECK_FIND_TEXT;
        }
        else{
            enter('=TP_DETAIL');                            //Go to text editor
        }
        
    onscreen 'SAPLSTXX.2102'
        enter('/Menu=3,3');                              //Change editor
        
    onscreen 'SAPLSTXX.1100'
        enter("/Menu=1,7");                          //Cancel existing content
        
    onscreen 'SAPLSPO1.0100'
        enter("=YES");                                 //Select "yes" in the popup
        
    onscreen 'SAPLSTXX.1100'
        setcursor('cell[TABLE,3,'+(start_line+2)+']');
        var tmp_next_line = "";
        enter();
    
NEXT_LINE:;
    onscreen 'SAPLSTXX.1100'
        //Copy each line from textbox to a temp string
        copytext({"fromtext":"z_va01_term_of_delivery_text", "tostring":"tmp_line", "line":start_line});
        
        //Remove "indent" in the string if it's not empty
        if(!isBlank(tmp_line)){
            tmp_line = tmp_line.replace(/\t+/g," ").trim();    
        }else{
            tmp_line = "";
        }
        
        //Merge the temp next line with current line
        if(!isBlank(tmp_next_line)){
            tmp_line = tmp_next_line + " " + tmp_line;
        }
        
        if(!isBlank(tmp_line)){
            if(tmp_line.length > 72){     //If length of current line exceed 72 characters
                tmp_chk_text = tmp_line.substring(0,72);
                tmp_last_space = tmp_chk_text.lastIndexOf(" ");
                tmp_next_line = tmp_line.substring(tmp_last_space, tmp_line.length);
                tmp_line = tmp_line.substring(0,tmp_last_space);
            } else {
                tmp_next_line = "";
                tmp_line = tmp_line.trim();
            }
            set('cell[TABLE,3,'+(start_line+2)+']',tmp_line);
            blank_line = 0;
            start_line++;
            setcursor('cell[TABLE,3,'+(start_line+2)+']');
            enter();
            goto NEXT_LINE;
        } else {
            if(blank_line < 2){   //If count of continue blank line is less than 2
                set('cell[TABLE,3,'+(start_line+2)+']',"");
                blank_line++;
                start_line++;
                setcursor('cell[TABLE,3,'+(start_line+2)+']');
                enter();
                goto NEXT_LINE;
            }
        }
        enter('/11');                                        //Save after change
        
    onscreen "SAPMV45A.4001"
SKIP_COPY_TEXT:;
        enter("?");
        
FUNC_END:;
}