Example 4 Updating Documents Selected from a Browse List

Visual LANSA

Example 4: Updating Documents Selected from a Browse List

This example shows updating documents selected from a browse list after selection from a database using selection criteria.

********** Beginning of RDML commands **********             

FUNCTION   OPTIONS(*DIRECT)                                  

********** Field definitions                                 

DEFINE     FIELD(#DATABASE) TYPE(*CHAR) LENGTH(50) INPUT_ATR(LC) 

           DEFAULT('''BIFTEST''')                            

DEFINE     FIELD(#RETCODE) TYPE(*CHAR) LENGTH(2)             

DEFINE     FIELD(#DBHANDLE) TYPE(*CHAR) LENGTH(4)            

DEFINE     FIELD(#DOCHANDLE) TYPE(*CHAR) LENGTH(4)           

DEFINE     FIELD(#SELTYPE) TYPE(*CHAR) LENGTH(1) DEFAULT(N)  

DEFINE     FIELD(#CRITERIA) TYPE(*CHAR) LENGTH(80) INPUT_ATR(LC)

DEFINE     FIELD(#IDTHANDLE) TYPE(*CHAR) LENGTH(4)           

DEFINE     FIELD(#NUMNOTES) TYPE(*DEC) LENGTH(7) DECIMALS(0) 

DEFINE     FIELD(#LSTNOTEID) TYPE(*DEC) LENGTH(7) DECIMALS(0)

DEFINE     FIELD(#NOTEID) TYPE(*DEC) LENGTH(7) DECIMALS(0)   

DEFINE     FIELD(#ITEMNAME) TYPE(*CHAR) LENGTH(20)           

DEFINE     FIELD(#ITEMTYPE) TYPE(*DEC) LENGTH(1) DECIMALS(0) 

DEFINE     FIELD(#INVCODE) TYPE(*CHAR) LENGTH(10)            

DEFINE     FIELD(#INVAMT) TYPE(*DEC) LENGTH(15) DECIMALS(2)  

           EDIT_CODE(3)                                      

DEFINE     FIELD(#INVDATE) TYPE(*CHAR) LENGTH(20) INPUT_ATR(LC)

DEFINE     FIELD(#DUMMY) TYPE(*CHAR) LENGTH(1)        

 

DEF_LIST   NAME(#LIST1) FIELDS((#SELECT *SELECT) (#INVCODE)  

           (#INVAMT) (#INVDATE) (#NOTEID *HIDDEN))           

********** Open the database                                 

USE        BUILTIN(DOM_OPEN_DATABASE) WITH_ARGS('#DATABASE') 

           TO_GET(#RETCODE #DBHANDLE)

IF         COND('#RETCODE *NE ''OK''') 

MENU                                                         

ENDIF                                                        

**********                                                   

BEGIN_LOOP                                                   

CLR_LIST   NAMED(#LIST1)                                     

REQUEST    FIELDS((#CRITERIA *L9 *P2)(#SELTYPE *L5 *P2 *DESC))

           DESIGN(*DOWN) IDENTIFY(*LABEL) DOWN_SEP(001)      

           ACROSS_SEP(001) EXIT_KEY(*YES L1) MENU_KEY(*YES L1)

           TEXT((*TMAP001 1 1))                              

********** Search all documents or using criteria            

USE        BUILTIN(DOM_SEARCH_DOCUMENTS) WITH_ARGS(#DBHANDLE 

           #SELTYPE #DUMMY #CRITERIA) TO_GET(#RETCODE #IDTHANDLE

           #NUMNOTES)                                        

IF         COND('#RETCODE *NE ''OK''')                       

GOTO       LABEL(L1)                                         

ENDIF                                                        

********** Read all documents in Note ID Table               

IF         COND('#NUMNOTES > 0')                             

CHANGE     FIELD(#LSTNOTEID) TO(0)                           

USE        BUILTIN(DOM_GET_NXT_DOCUMENT) WITH_ARGS(#IDTHANDLE

           #LSTNOTEID) TO_GET(#RETCODE #NOTEID)              

**********                                                   

DOWHILE    COND('#RETCODE *NE ''EF''')                       

CHANGE     FIELD(#LSTNOTEID) TO(#NOTEID)                     

**********                                                   

USE        BUILTIN(DOM_OPEN_DOCUMENT) WITH_ARGS(#DBHANDLE    

           #NOTEID) TO_GET(#RETCODE #DOCHANDLE)              

********** Get data items from the document                  

CHANGE     FIELD(#ITEMNAME) TO(INVCODE)                      

CHANGE     FIELD(#ITEMTYPE) TO(2)                            

USE        BUILTIN(DOM_GET_ITEM) WITH_ARGS(#DOCHANDLE #ITEMNAME 

           #ITEMTYPE) TO_GET(#RETCODE #INVCODE)              

IF         COND('#RETCODE *NE ''OK''')                       

GOTO       LABEL(L1)                                         

ENDIF                                                        

CHANGE     FIELD(#ITEMNAME) TO(INVAMT)                       

CHANGE     FIELD(#ITEMTYPE) TO(1)                            

USE        BUILTIN(DOM_GET_ITEM) WITH_ARGS(#DOCHANDLE #ITEMNAME 

           #ITEMTYPE) TO_GET(#RETCODE #DUMMY #INVAMT)        

IF         COND('#RETCODE *NE ''OK''')                       

GOTO       LABEL(L1)                                         

ENDIF                                                        

CHANGE     FIELD(#ITEMNAME) TO(INVDATE)                      

CHANGE     FIELD(#ITEMTYPE) TO(3)                            

USE        BUILTIN(DOM_GET_ITEM) WITH_ARGS(#DOCHANDLE #ITEMNAME

           #ITEMTYPE) TO_GET(#RETCODE #INVDATE)              

IF         COND('#RETCODE *NE ''OK''')                       

GOTO       LABEL(L1)                                         

ENDIF                                                        

********** Add to list                                       

ADD_ENTRY  TO_LIST(#LIST1)                                   

********** Close the document to release memory              

USE        BUILTIN(DOM_CLOSE_DOCUMENT) WITH_ARGS(#DOCHANDLE) 

           TO_GET(#RETCODE)                                  

IF         COND('#RETCODE *NE ''OK''')                       

GOTO       LABEL(L1)                                         

ENDIF                                                        

**********                                                   

USE        BUILTIN(DOM_GET_NXT_DOCUMENT) WITH_ARGS(#IDTHANDLE

           #LSTNOTEID) TO_GET(#RETCODE #NOTEID)              

ENDWHILE                                                     

**********                                                   

ENDIF                                                        

**********                                                   

USE        BUILTIN(DOM_END_SEARCH_DOCS) WITH_ARGS(#IDTHANDLE)

           TO_GET(#RETCODE)                                  

********** Show selected documents in a list                 

DISPLAY    FIELDS((#NUMNOTES)) BROWSELIST(#LIST1) EXIT_KEY(*YES

           L1) MENU_KEY(*YES L1)                             

********** Select documents from list to be updated          

SELECTLIST NAMED(#LIST1) GET_ENTRYS(*SELECT)                 

********** Open the selected document                        

USE        BUILTIN(DOM_OPEN_DOCUMENT) WITH_ARGS(#DBHANDLE    

           #NOTEID) TO_GET(#RETCODE #DOCHANDLE)              

IF         COND('#RETCODE *NE ''OK''')                       

GOTO       LABEL(L1)                                         

ENDIF                                                        

********** Update the invoice amount in selected documents   

CHANGE     FIELD(#INVAMT) TO('#INVAMT + 10')                 

CHANGE     FIELD(#ITEMNAME) TO(INVAMT)                       

CHANGE     FIELD(#ITEMTYPE) TO(1)                            

USE        BUILTIN(DOM_UPDATE_ITEM) WITH_ARGS(#DOCHANDLE     

           #ITEMNAME #ITEMTYPE #DUMMY #INVAMT) TO_GET(#RETCODE)

IF         COND('#RETCODE *NE ''OK''')                       

GOTO       LABEL(L1)                                         

ENDIF                                                        

********** Update the selected document in the database      

USE        BUILTIN(DOM_UPDATE_DOCUMENT) WITH_ARGS(#DOCHANDLE)

           TO_GET(#RETCODE)                                  

IF         COND('#RETCODE *NE ''OK''')                       

GOTO       LABEL(L1)                                         

ENDIF                                                        

********** Close the document to release memory              

USE        BUILTIN(DOM_CLOSE_DOCUMENT) WITH_ARGS(#DOCHANDLE) 

           TO_GET(#RETCODE)                                  

IF         COND('#RETCODE *NE ''OK''')                       

GOTO       LABEL(L1)                                         

ENDIF                                                        

ENDSELECT                                                    

**********                                                   

END_LOOP                                                     

********** Close the database upon exit or an error           

L1  USE        BUILTIN(DOM_CLOSE_DATABASE) WITH_ARGS(#DBHANDLE)

               TO_GET(#RETCODE)                              

    ********** End of RDML commands **********