Да просто… через задницу. Существует два вида табличных инфотипов в системе: одностраничные и многостраничные. Как загружать табличные инфотипы? Я до сегодняшнего дня умел грузить одностраничные инфотипы. Сегодня я научился многостраничные заливать бочками.
Да, сразу оговорюсь, что речь идет о загрузке без единой строчки ABAP. С АБАПом и дурак сможет. Наиболее типичные инфотипы это 8, 293, 294, 28. Одностраничный инфотип, это который содержит таблицу и нам не нужно ее прокручивать вниз. Многостраничный инфотип содержит ту же таблицу, но в ней столько данных, что приходится нажимать скроллинг вниз (прокрутку, кнопку PageDn).
Для загрузки одностраничного инфотипа хитрость простая. При записи LSMW нужно в каждое поле таблицы что-то внести, чтобы LSMW создала в Recording поля вида Q0293-BETRG(01), Q0293-BETRG(02) и так далее. То есть, мы можем обратиться к каждому полю, видимому на экране через его порядковый номер сверху. 01, 02, 03 и так далее. Для каждого такого поля можно создать свою переменную в том же Recording.
Если мы записываем многостраничный инфотип, когда нам нужно пролистать таблицу вниз, то дела становятся интереснее. Для этого нам нужно специально сказать при записи, что мы хотим сделать скроллинг вниз. Нажатие на кнопку PageDn или мышкой на стрелочку внизу не поможет. Для этого мы окне команд пишем «P+«. Этот волшебный код пролистнет таблицу на одну страницу вниз. И теперь самое важное! Нумерация строк опять начинается с 01, 02 и так далее.
Так, для загрузки 15 значений в ИТ0293 нужно записать на первой странице 8 значений напротив каждой строчки. Затем нажать P+ в окне транзакций. И снова записать 7 оставшихся значений.
В записи у нас будет на первом экране
Q0293-BETRG(01)
Q0293-BETRG(02)
…
Q0293-BETRG(08)
Затем будет
MP029300 2000
BDC_CURSOR P0293-BEGDA
BDC_OKCODE =P+
P0293-BEGDA 25.02.2019 BEGDA Начало срока действия
BDC_SUBSCR SAPMP50A
А дальше опять
Q0293-BETRG(01)
Q0293-BETRG(02)
…
Q0293-BETRG(07)
Все эти поля можно вписать руками (кроме BDC_OKCODE). Для этого идем в меню Edit -> Add Screen Field (Extended).

3 комментария
Константин Полушкин
Виталий, вот с этим батч-инпутом с перемоткой есть прикол. Если прога для использования юзерми, у которых обычно моники меньше чем у консов и абаперов, то нужно по минимуму вносить данных на экран. Сталкивался в ERP с тем что на большом монике и на маленьком разное количество строк для ввода. Это связано с тем, что подэкран на который поместили таблицу имеет настройки автосайзинга и высчитывается это на стороне фронтенда рабочей станции. И странно то, что в обычном пакетнике P+ означает перемотка только на одну строку. А P++ в конец таблицы.
VirVit
Пользователи обычно не грузят данные. А конс, который загружает данные, обычно пишет пакетник и запускает на одном компьютере. Поэтому для 99% случаев должно работать.
Константин Полушкин
Если BAPI не хватает, и приходится действия пользователя оборачивать в BDC то такое можно встретить. Вспомнил где столкнулся, в ERP PP подбор партий, нужно вставить список сырья с указанием склада. Сырья зачастую больше чем на один экран ввода.