Максимальное количество дополнительных полей в инфо-типе

В этой заметке предлагаю попробовать поломать систему, или, если быть точнее, узнать ее предельные возможности. А возможности ее узнавать буду в поисках ответа на вопрос: какое максимальное количество дополнительных полей в инфо-типе кадрового администрирования может быть?

Задача

Узнать максимально допустимое количество полей, которое может быть добавлено в стандартный инфо-тип кадрового администрирования. Требуется уточнение, что меня интересует не само количество полей, а допустимая длина элементов данных для этих полей. В качестве испытуемого будет использоваться инфо-тип 0290 - "Documents and Certificates (CIS)".

См. Data Elements

Рисунок 1.

Подсчет длины всех используемых полей в таблице

Для начала я хочу обратить внимание на количество актуальных полей, используемых в таблице инфо-типа. Немного забегая вперед скажу, что это может помочь мне избежать ошибочных ситуаций в дальнейшем. Через транзакцию SE11 я сложу длины всех полей таблицы, представленных в столбце Length

Рисунок 2.

Итоговая сумма - 1884. Запоминаю это число, так как оно может понадобиться мне в обозримом будущем.

Расширение инфо-типа

См. Enhancing an Infotype Included in the SAP Standard System

Расширяю стандартный инфо-тип, заполнив инклюд CI_P0290 некоторым количеством полей большой длины (тип CHAR300)

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

Рисунок 3.

Внимательный читатель уже нашел в чем заключается решение этой проблемы, изучив справочный материал вендора

См. Enhancing an Infotype Included in the SAP Standard System

Constraints

  • The following infotypes are not included in the enhancement concept:

    • Actions (infotype 0000)

      • Additional Actions (infotype 0302)

      • Time Management infotypes (2nnn)

      • Leave Entitlement (infotype 0005)

      • Maternity Protection/Parental Leave (infotype 0080)

      • Military Service (infotype 0081)

      • Leave Entitlement Compensation (infotype 0083)

      • Time Quota Compensation (infotype 0416)

      • Applicant Actions (infotype 4000)

  • The length of the data field structure PSnnnn together with the CI include must not exceed 1500 bytes.

  • If you include additional fields in the Organizational Assignment infotype (0001), you cannot use them as selection fields.

Я превысил максимально допустимое значение длины полей таблицы. В связи с чем статус таблицы PA0290 вместе с заполненным инклюдом меняется на Partly active

Рисунок 4.

См. Activating ABAP Dictionary Types

При попытке создать новую запись инфо-типа я получаю дамп вида

Решение проблемы

Уверен, что представленная мной длина элементов данных для полей инфо-типа скорее избыточна, и вряд ли может быть объективно задействована в каком-либо из инфо-типов кадрового администрирования. Можно считать смоделированную ситуацию скорее абсурдной, чем реальной. Но есть один нюанс... в дебри которого углубляться я не буду. Скажу лишь, что по данной проблеме есть два решения, одно из которых относится к прочтению некоторых SAP инструкций, ссылки на которые представлены ниже:

Второе решение сводится к выполнению простой арифметической операции, заключающейся в вычислении допустимой длины элементов данных для новых полей в таблице, включая уже существующие (См. пункт # 1. Подсчет длины всех используемых полей в таблице). Так, убери я несколько доп. полей, чтобы уместиться в лимит 4030, который представлен в системе SAP, проблема будет решена.

P.S. При выполнении расширений стандартных инфо-типов вам может понадобиться транзакция SE14. О ней много интересного написано вот тут The Database Utility.

Update

Чтобы не заниматься подозрительными и нецелесобзраными операциями подсчета длин всех полей таблицы (См. пункт Подсчет длины всех используемых полей в таблице) можно воспользоваться соответствующей функцией. Находясь в транзакции SE11 выберите в меню Extras -> Table Length

Рисунок 5.

Система уже выполнила все необходимые подсчеты

Рисунок 6.

За данную подсказку большое спасибо читателю Роману.

Read more