1. 程式人生 > 其它 >java 輸出變數引數名_根據變數值取得變數的引數名

java 輸出變數引數名_根據變數值取得變數的引數名

技術標籤:java 輸出變數引數名

寫作於2017年2月17日。

Java和ABAP只能根據字串通過反射獲得變數的metadata,像標題描述的這個需求聽起來有點怪。需求是Mervin實現Range search時需要根據range table的內容來動態拼OPEN SQL,OPEN SQL裡的statement必須是range table的變數名。

AG9:

這四個引數模擬search支援的attribute,如果runtime時候哪個引數傳了值進去,就把哪個引數名拼到SQL去:

a658f646e0ec42cf0b7e3c95eaf9f748.png

具體實現:

 method BUILD_SQL.* Jerry: move this logic to constructor!! data: lt_arg TYPE TABLE OF SEOSUBCODF. SELECT * INTO TABLE lt_arg FROM SEOSUBCODF WHERE clsname = 'ZCL_SQL' and cmpname = 'BUILD_SQL'.* Jerry: end. DATA: lv_result TYPE string value 'select from XXX'. LOOP AT lt_arg ASSIGNING FIELD-SYMBOL(). ASSIGN (-sconame) TO FIELD-SYMBOL(). IF sy-subrc = 0 and  IS NOT INITIAL. lv_result = | { lv_result } WHERE { -sconame } = {  } |. ENDIF. ENDLOOP. WRITE: / lv_result. endmethod.

測試:

ca450fe3a7c8a5931e7230dca48d48b8.png

輸出:

引數名已經動態拼到SQL裡去了:

81f6b3b07cb738e43dbc5feb3513e56d.png