В первую очередь определитесь, каким образом выводится ALV - через ФМ или классами/методами. Поищите в программе строку REUSE_ALV (нашли - значит у вас ФМ). Если не нашлось, то ищите alvgrid.
Поскольку я сама использую в основном ФМ, то постараюсь осветить этот вариант. Всякие кнопки, меню и прочие элементы интерфейса хранятся в т.н. GUI Status (см. Help по PF-STATUS). У программы может быть несколько этих статусов и они могут вызываться из программы динамически, по мере надобности. Кроме того, можно вызвать какой-нибудь статус, "прикрыв", например, несколько кнопок. Вот пример вызова ALV ФМ с заданием своего статуса:
Code:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = fieldcat[]
i_save = 'X'
TABLES
t_outtab = i_output.
*&---------------------------------------------------------------------*
*& Form set_pf_status
*----------------------------------------------------------------------*
* -->RT_EXTAB Functions to be excluded
*----------------------------------------------------------------------*
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
IF route_is_closed = 'X'.
SET PF-STATUS 'MAIN_SCREEN' EXCLUDING '&SAVE'.
ELSE.
SET PF-STATUS 'MAIN_SCREEN'.
ENDIF.
ENDFORM. "set_pf_status
В данном примере на экране в зависимости от значения переменной route_is_closed будет или не будет показана кнопка &SAVE.
Если никаких SET PF-STATUS нету, то должен бы вызываться стандартный ALV статус (см. статус STANDARD в function group SALV) со всеми возможными кнопками.
По описанным вами симптомам возможны такие варианты:
1) Кнопок на самом деле и не было (бывают такие потемнения разума у юзеров).
2) В программе отсутствующие кнопки намеренно скрыты. При этом могли быть перепутаны коды кнопок и прикрыты не те.
3) Предыдущий статус был заменен новым и кнопки "потерялись" в процессе.
Посмотрите, не было ли каких-нибудь недавних изменений в программе. Это можно увидеть в ABAP Editor (транзакция SE38 или SE80 - дело вкуса), меню Utilities -> Versions -> Version Management. Там же можно сравнить код в двух разных версиях, чтобы посмотреть, какие конкретно изменения были сделаны.
Также советую сравнить версию в продуктиве с версией в development - может программист сделал какие-то изменения и они либо еще не перенесены, либо перенеслись неправильно.
Вот еще полезная ссылка про ALV (правда документ немного устарел):
http://www.abap4.it/download/ALV.pdf