Java внутри Javascript - передача значений массива / столбца в Hashmap - PullRequest
0 голосов
/ 28 мая 2018

Здравствуйте, Javascript Experts,

У меня есть требование, при котором я должен передать некоторые значения в функциональный модуль SAP с помощью JavaScript.Пожалуйста, смотрите прикрепленный снимок для входных параметров в 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_DIALOG, ID_PERSKEY, ID_PERSKEYTYP, ID_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

IЯ должен передать значения ниже столбца в 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"
                 }
               ]
           } 

или Object

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

var it_values = arr();

, но я не знаюкак передать значения столбцов в хэш-карту.

    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 голосов
/ 06 июня 2018

Звучит так, будто вы хотите знать, как назначить объект клавише в другом объекте.Чтобы уточнить, ваша 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;

надеюсь, что поможет

...