abuser написал(а):
Пожалуйста порекомендуйте, как лучше сделать нижеследующий код, для огромнейшего количества, которые будут идти вместо ................., иначе говоря, как лучше оптимизировать?
loop at dtab.
select * from pa0002 where pernr = dtab-pernr.
dtab-midnm like pa0002-midnm,
. . . . . . . . . . . . . . . . . . . . .
dtab-nachn like pa0002-nachn,
modify DTAB index sy-tabix.
endselect.
Если мне не изменяет память, то РА0002 это персональные данные, то бишь ФИО и т.д. Следовательно у человека эта запись может быть только одна. Поэтому лучше написать:
loop at dbtab.
select single * from pa0002 where pernr = dbtab-pernr.
if sy-subrc = 0.
move-corresponding pa0002 to dbtab.
modify dbtab.
endif.
endloop.
А ещё лучше инфо-типы читать с помощью ФМ "HR_READ_INFOTYPE".
Например:
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
PERNR = PERNR_P
INFTY = '0002'
BEGDA = DATE_P
ENDDA = DATE_P
TABLES
INFTY_TAB = p0002
EXCEPTIONS
INFTY_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0.
read table p0002 index 1.
ELSE.
clear p0002.
ENDIF.
"ПЛЮС" данной фишки заключается в том, что проверяются все возможные полномочия пользователя, соответственно у вас не будет болеть голова об этом
Удачи !