SAP RFC: параметр_типа RFTYPE_TABLE: значение uc_length?

Я взял хороший пример clientPrintDescription.py и изменил его на вернуть HTML.

Теперь я вижу это:

screenshot-uc_length-is-16

Поскольку тип параметра RFCTYPE_TABLE, я думаю, что nuc_length и uc_length не играют роли. Я прав, или оба значения (здесь 16) имеют какое-то значение, если RFCTYPE_TABLE?


person guettli    schedule 02.10.2019    source источник
comment
Отвечает ли это на ваш вопрос? SAP RFC: nuc_length vs uc_length   -  person Suncatcher    schedule 29.10.2020
comment
@Suncatcher Я не знаю, отвечает ли это на мой вопрос, так как я сменил задание и больше не кодирую ABAP.   -  person guettli    schedule 29.10.2020


Ответы (2)


Переменная, которая представляет собой строку символов, строку байтов, внутреннюю таблицу, ссылку или упакованный компонент, по сути, представляет собой указатель, который статически занимает 8 байтов в памяти и относится к другому месту в расширенной памяти. .

«nuc_length» и «uc_length» всегда имеют одно и то же значение для этих типов. Только переменные, содержащие символы, имеют разные значения для «nuc_length» и «uc_length».

Я не понимаю, почему python показывает 16 байтов для внутренней таблицы, это должно быть 8 байтов.

person Sandra Rossi    schedule 02.10.2019

Я не знаком с Python, но я просмотрел исходную программу (printDescription.c в файле samples.zip https://wiki.scn.sap.com/wiki/x/zz27Gg), и объясняет, что делает эта программа:

Для каждого параметра функционального модуля печатается общая «ширина» (строки) этого параметра. (Это в основном сумма ширины всех его полей плюс некоторые отступы.)

Итак, в вашем случае: «IV_DYNAMIC_PARAMETER_LIST» - это таблица, тип строки которой представляет собой структуру с двумя полями: «KEY» типа STRING и «VALUE» типа STRING. Как уже упоминала выше Сандра, переменные типы ABAP, включая тип STRING, реализуются с помощью механизма указателя, поэтому имеют ширину 8.

Два поля шириной 8, без заполнения, дают общую ширину 16 для этого типа строки таблицы.

person Lanzelot    schedule 11.02.2020