Javascript中的Java - 将数组/列值传递给Hashmap

时间:2018-05-28 02:57:09

标签: javascript java sap

Hello Javascript Experts,

我有一个要求,我必须使用JavaScript将一些值传递给SAP功能模块。 请参阅SAP中输入参数的附加快照,其中我需要使用javaScript传递值。 https://i.stack.imgur.com/PtiYw.png

我需要传递值(快照中突出显示为黄色)

Row
IT_VALUES
Column         APPLID  | FILEDNAME |  F  |  LOW
                       |           |     |
Values         LO_SRS  | PLANT     |  V  |  4060

Row             Values
ID_DIALOGID     DIA_LO_SRS
ID_PERSKEYTP    U
ID_PERSKEY      USERID
ID_ORIGIN       A

我能够传递ID_DIALOGID_PERSKEYID_PERSKEYTYPID_ORIGIN的行值,而不会出现任何问题(请参阅下面的代码)。

Row             Values
ID_DIALOGID     DIA_LO_SRS
ID_PERSKEYTP    U
ID_PERSKEY      USERID
ID_ORIGIN       A

- 的JavaScript -

// Main function: ztest    
function ztest(Par){    
   importClass(java.util.HashMap); 
    var inputParams = new HashMap();
    inputParams.put("ID_DIALOG", 'DIA_LO_SRS');
    inputParams.put("ID_PERSKEYTYP", 'U');
    inputParams.put("ID_PERSKEY", 'USERID');
    inputParams.put("ID_ORIGIN", 'A' );
    return inputParams;
}

但输入字段IT_VALUES是SAP中的内部表,有4列

Row
IT_VALUES
Column        APPLID  | FILEDNAME |  F  |  LOW

我必须在IT_VALUES

中传递以下列值
Row
IT_VALUES
Column         APPLID  | FILEDNAME |  F  |  LOW
                       |           |     |
Values         LO_SRS  | PLANT     |  V  |  4060

我想我可以使用数组

var arr = {
             IT_VALUES : 
               [
                 {
                   APPLID        : "LO_SRS",
                   FEILDNAME     : "PLANT",
                   F             : "V",
                   LOW           : "4060"
                 }
               ]
           } 

或对象

var arr = function() 
{
   return {APPLID: 'LO_SRS', FIELDNAME: 'PLANT', F: 'V', LOW : '4060'}
}

var it_values = arr();

但我不知道如何将列值传递给hashmap。

    var inputParams = new HashMap();
    inputParams.put("IT_VALUES",????????????????????????????????????)
    inputParams.put("ID_DIALOG", 'DIA_LO_SRS');
    inputParams.put("ID_PERSKEYTYP", 'U');
    inputParams.put("ID_PERSKEY", 'USERID');
    inputParams.put("ID_ORIGIN", 'A' );
    return inputParams;
}

var bapiRet = mConnection.runFunction("FPB_PERS_POST_FOR_DIALOG", inputParams);

请帮助......:)

1 个答案:

答案 0 :(得分:0)

听起来您想知道如何将对象分配给另一个对象中的键。为了澄清,您的arr函数正在返回一个对象,而不是一个数组。

var arr = function() {
  // - this is called an object
  return {
    APPLID: 'LO_SRS',
    FIELDNAME: 'PLANT',
    F: 'V',
    LOW : '4060',
  };
};

你可以将它传递给任何其他对象,例如inputParams,javascript中没有HashMap,只需使用其他对象:

var inputParams = {};
inputParams["IT_VALUES"] = it_values;
inputParams["ID_DIALOG"] = 'DIA_LO_SRS';
// etc...
return inputParams;

或者你可以这样做:

var inputParams = {
  IT_VALUES: it_values,
  ID_DIALOG: 'DIA_LO_SRS',
  // etc...
};

return inputParams;

希望有所帮助