Глава: Ракурсы - СОЕДИНЕНИЕ и ПРОЕКЦИЯ

Тема: Проекция на поля инфо-типов

·  Проекция на определенные поля внутри ракурса соединения двух инфо-типов

·  Считывание текстов из табличных записей, зависимых от времени

·  Руководству Вашего предприятия требуется список сотрудников с указанием присвоенных им должностей

REPORT RPSOL030.
*-- Описание
TABLES: PERNR,
T513S. "Коды должностей
INFOTYPES: 0001, "Организационное присвоение
0002. "Персональные данные
DATA: NAME(80).
SELECT-OPTIONS: NATION FOR P0002-NATIO.
*-- Обработка
GET PERNR.
PROVIDE NACHN VORNA FROM P0002
STELL FROM P0001 BETWEEN PN/BEGDA AND PN/ENDDA.
CHECK NATION.
IF P0001_VALID EQ 'X'.
CONCATENATE P0002-NACHN P0002-VORNA INTO NAME
SEPARATED BY SPACE.
IF P0001-STELL NE SPACE.
PERFORM RE513S.
WRITE: / PERNR-PERNR,
P0002-BEGDA,
P0002-ENDDA,
NAME(20),
P0001-STELL,
T513S-STLTX(15).
ENDIF.
ENDIF.
ENDPROVIDE.

*--------------------------------------------------------------*
* FORM RE513S *
*--------------------------------------------------------------*
* Считать код должности *
*--------------------------------------------------------------*
FORM RE513S.
CHECK SY-LANGU NE T513S-SPRSL OR
P0001-STELL NE T513S-STELL OR
P0001-BEGDA LT T513S-BEGDA OR
P0001-BEGDA GT T513S-ENDDA.
SELECT * FROM T513S
WHERE SPRSL EQ SY-LANGU
AND STELL EQ P0001-STELL
AND ENDDA GE P0001-BEGDA
AND BEGDA LE P0001-BEGDA.
ENDSELECT.
IF SY-SUBRC NE 0.
CLEAR T513S.
WRITE: / 'Нет записей в T513S для кода должности (001),
P0001-STELL.
REJECT.
ENDIF.
ENDFORM.

НЕ нашли? Не то? Что вы ищете?

Глава: Специфические Команды

Тема: Макросы

·  Предоставление последней записи, действительной в периоде выбора данных, с помощью макроса RP_PROVIDE_FROM_LAST

·  Считывание таблицы Раздел/подраздел персонала с помощью макроса RP-READ-T001P

·  Руководству Вашего предприятия требуется список сотрудников, имеющих периодические выплаты/удержания.

REPORT RPSOL040.
*-- Описание
TABLES: PERNR,
T512T, "Текст вида оплаты
T001P. "Производственный участок
INFOTYPES: 0001, "Организационное присвоение
0002, "Персональные данные
0014. "Периодические выплаты и удержания
DATA: LINES LIKE SY-INDEX.
*-- Обработка
GET PERNR.
DESCRIBE TABLE P0014 LINES LINES.
IF LINES GT 0.
RP_PROVIDE_FROM_LAST P0001 SPACE PN/BEGDA PN/ENDDA.
RP-READ-T001P P0001-WERKS P0001-BTRTL SPACE.
WRITE: / PERNR-PERNR,
P0001-ENAME(20),
P0001-WERKS.
PROVIDE * FROM P0014 BETWEEN PN/BEGDA AND PN/ENDDA.
CHECK P0014-BETRG NE 0.
PERFORM PRINT USING
P0014-LGART
P0014-BETRG
P0014-BEGDA
P0014-ENDDA.
ENDPROVIDE.
ENDIF.

*--------------------------------------------------------------*
* FORM PRINT *
*--------------------------------------------------------------*
* Печатать список *
*--------------------------------------------------------------*
FORM PRINT USING
VALUE(WTYPE)
VALUE(AMOUNT)
VALUE(BEGDA)
VALUE(ENDDA).
PERFORM RE512T USING T001P-MOLGA WTYPE.
WRITE: / WTYPE UNDER NAME,
T512T-LGTXT,
AMOUNT,
BEGDA,
ENDDA.
ENDFORM.
*--------------------------------------------------------------*
* FORM RE512T *
*--------------------------------------------------------------*
* Читать тексты вида оплаты *
*--------------------------------------------------------------*
FORM RE512T USING VALUE(COUNTRY_GROUPING)
VALUE(WTYPE).
CHECK T512T-SPRSL NE SY-LANGU
OR T512T-MOLGA NE COUNTRY_GROUPING
OR T512T-LGART NE WTYPE.
SELECT SINGLE * FROM T512T
WHERE SPRSL EQ SY-LANGU
AND MOLGA EQ COUNTRY_GROUPING
AND LGART EQ WTYPE.
IF SY-SUBRC NE 0.
CLEAR T512T.
ENDIF.
ENDFORM.


Глава: Временные данные

Тема: Кумулятивные данные по отсутствиям

·  Считывание временных данных с помощью макроса RP-READ-ALL-TIME-ITY

·  Обработка временных данных с помощью внутренней таблицы

·  Руководству Вашего предприятия требуется обзор времени отсутствия сотрудников

REPORT RPSOL050.
TABLES: PERNR,
T554T, "Текст отсутствия
T001P. "Производственные участки
INFOTYPES: 0001, "Организационное присвоение
2001 MODE N. "Отсутствия
DATA: BEGIN OF ABSTAB OCCURS 20,
BUKRS LIKE P0001-BUKRS,
WERKS LIKE P0001-WERKS,
BTRTL LIKE T001P-BTRTL,
AWART LIKE P2001-AWART,
ABWTG LIKE P2001-ABWTG,
END OF ABSTAB.
INITIALIZATION.
PNPTIMED = ‘Y’.

GET PERNR.
RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA.
MOVE-CORRESPONDING: P0001 TO ABSTAB.
RP-READ-ALL-TIME-ITY PN-BEGDA PN-ENDDA.
LOOP AT P2001.
IF P2001-ABWTG GT 0.
MOVE-CORRESPONDING P2001 TO ABSTAB.
COLLECT ABSTAB.
ENDIF.
ENDLOOP.

END-OF-SELECTION.
SORT ABSTAB.
LOOP AT ABSTAB.
FORMAT INTENSIFIED OFF.
AT NEW BTRTL.
RP-READ-T001P ABSTAB-WERKS ABSTAB-BTRTL SPACE.
ENDAT.
PERFORM RE554T USING T001P-MOABW ABSTAB-AWART.
PERFORM PRINT.
AT END OF BTRTL. "Подраздел персонала
FORMAT INTENSIFIED ON.
SUM.
CLEAR T554T. PERFORM PRINT.
ENDAT.
AT END OF WERKS. "Раздел персонала
FORMAT INTENSIFIED ON.
SUM.
CLEAR T554T. PERFORM PRINT.
ENDAT.
AT END OF BUKRS. "Балансовая единица
FORMAT INTENSIFIED ON.
SUM.
CLEAR T554T. PERFORM PRINT.
SKIP.
ENDAT.
AT LAST.
FORMAT INTENSIFIED ON.
SUM.
CLEAR T554T. PERFORM PRINT.
SKIP.
ENDAT.
ENDLOOP.
*--------------------------------------------------------------*
* FORM PRINT *
*--------------------------------------------------------------*
* Печатать накопленные дни отсутствия *
*--------------------------------------------------------------*
FORM PRINT.
WRITE: / ABSTAB-BUKRS,
8 ABSTAB-WERKS,
14 ABSTAB-BTRTL,
20 ABSTAB-AWART,
26 T554T-ATEXT,
60 ABSTAB-ABWTG.
ENDFORM.
*--------------------------------------------------------------*
* FORM RE554T *
*--------------------------------------------------------------*
* Читать тексты отсутствий *
*--------------------------------------------------------------*
FORM RE554T USING VALUE(GROUPING)"Группировка подразделов для отсутствий
VALUE(ABSENCE).
CHECK T554T-SPRSL NE SY-LANGU
OR T554T-MOABW NE GROUPING
OR T554T-AWART NE ABSENCE.
SELECT SINGLE * FROM T554T
WHERE SPRSL = SY-LANGU
AND MOABW = GROUPING
AND AWART = ABSENCE.
IF SY-SUBRC NE 0.
CLEAR T554T.
ENDIF.
ENDFORM.


Глава: Повторяющиеся структуры и представление списком

Тема: Оцененные напрямую выплаты по сотруднику

·  Анализ повторяющихся структур в инфо-типе Основные выплаты

·  Вывод списка в форме экранной таблицы с помощью функционального модуля HR_DISPLAY_BASIC_LIST

·  Руководителям отделов Вашего предприятия для дальнейшей обработки на ПК требуется список сотрудников с оцененными напрямую видами оплаты в основных выплатах

REPORT RPSOL060.
*-- Описание
TABLES: PERNR.
INFOTYPES: 0001, "Организационное присвоение
0008. "Основные выплаты
DATA: BEGIN OF WTYPE, "Рабочая область для видов оплаты
LGANN LIKE P0008-LGA01,
BETNN LIKE P0008-BET01,
END OF WTYPE.
DATA: BEGIN OF BP_TABLE OCCURS 10, "Таблица основных выплат
PERNR LIKE PERNR-PERNR,
ENAME LIKE P0001-ENAME,
TOTAL(30),
WAERS LIKE P0008-WAERS,
END OF BP_TABLE.
DATA: BEGIN OF FIELDNAMES OCCURS 3. "Имена полей экранной таблицы
TITLE(60),
TABLE(6),
FIELD(10),
TYPE(1),
END OF FIELDNAMES.
DATA: BEGIN OF ERROR_TABLE OCCURS 10. "Таблица ошибок
INCLUDE STRUCTURE HRERROR.
DATA: END OF ERROR_TABLE.

DATA: TOTAL LIKE P0008-BET01, "Итого основных выплат
DATEFIELD(10),
HEADLINE(80).

INITIALIZATION.
PNPBEGDA = SY-DATUM.

START-OF-SELECTION.
RP_SET_DATA_INTERVAL ‘P0001’ PN-BEGDA PN-ENDDA.
*-- Обработка
GET PERNR.
RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA.
IF PNP-SW-FOUND NE '1'
* MESSAGE I102 WITH PERNR-PERNR.
PERFORM ERROR_HANDLING USING PERNR-PERNR '70' 'I' '102'
SPACE P0001-INFTY SPACE SPACE.
REJECT.
ENDIF.

RP_PROVIDE_FROM_LAST P0008 SPACE PN-BEGDA PN-ENDDA.
DO 20 TIMES
VARYING WTYPE
FROM P0008-LGA01
NEXT P0008-LGA02.
IF WTYPE IS INITIAL.
EXIT.
ENDIF.
ADD WTYPE-BETNN TO TOTAL.
ENDDO.
IF TOTAL GT 0.
MOVE-CORRESPONDING P0001 TO BP_TABLE.
MOVE-CORRESPONDING P0008 TO BP_TABLE.
WRITE TOTAL TO BP_TABLE-TOTAL DECIMALS 2.
APPEND BP_TABLE.
CLEAR: TOTAL, BP_TABLE.
ENDIF.

END-OF-SELECTION.
PERFORM FILL_FIELDNAMES.
PERFORM DEF_HEADER.

CALL FUNCTION 'HR_DISPLAY_BASIC_LIST'
EXPORTING
BASIC_LIST_TITLE = TEXT-001
FILE_NAME = SY-REPID
HEAD_LINE1 = TEXT-002
HEAD_LINE2 = HEADLINE
* FOOT_NOTE1 = ' '
* FOOT_NOTE2 = ' '
* FOOT_NOTE3 = ' '
* LAY_OUT = 0
* DYN_PUSHBUTTON_TEXT1 =
* DYN_PUSHBUTTON_TEXT2 =
* DYN_PUSHBUTTON_TEXT3 =
* DYN_PUSHBUTTON_TEXT4 =
* DYN_PUSHBUTTON_TEXT5 =
* DYN_PUSHBUTTON_TEXT6 =
* DATA_STRUCTURE = ' '
* HEAD_LINE3 = ' '
* HEAD_LINE4 = ' '
* CURRENT_REPORT =
* LIST_LEVEL = ' '
* ADDITIONAL_OPTIONS = ' '
* WORD_DOCUMENT =
* IMPORTING
* RETURN_CODE =
TABLES
DATA_TAB = BP_TABLE
FIELDNAME_TAB = FIELDNAMES
* SELECT_TAB =
ERROR_TAB = ERROR_TABLE
EXCEPTIONS
DOWNLOAD_PROBLEM = 1
NO_DATA_TAB_ENTRIES = 2
TABLE_MISMATCH = 3
PRINT_PROBLEMS = 4
OTHERS = 5.

IF SY-SUBRC = 2.
WRITE: 'Таблица сотрудников пустая.'(005).
ENDIF.

*--------------------------------------------------------------*
* FORM FILL_FIELDNAMES *
*--------------------------------------------------------------*
* Заполнить имена полей таблицы *
*--------------------------------------------------------------*
FORM FILL_FIELDNAMES.
FIELDNAMES-TABLE = 'PERNR'.
FIELDNAMES-FIELD = 'PERNR'.
FIELDNAMES-TYPE = 'X'.
APPEND FIELDNAMES.
CLEAR FIELDNAMES.

FIELDNAMES-TABLE = 'P0001'.
FIELDNAMES-FIELD = 'ENAME'.
APPEND FIELDNAMES.
CLEAR FIELDNAMES.

FIELDNAMES-TITLE = 'Сумма оцененных напрямую выплат (003).
APPEND FIELDNAMES.
CLEAR FIELDNAMES.

FIELDNAMES-TABLE = 'P0008'.
FIELDNAMES-FIELD = 'WAERS'.
APPEND FIELDNAMES.
CLEAR FIELDNAMES.
ENDFORM.

*-------------------------------------------------------------*
* FORM DEF_HEADER *
*-------------------------------------------------------------*
* Заполнить заголовок *
*-------------------------------------------------------------*
FORM DEF_HEADER.
HEADLINE = 'Контрольная дата:'(004).
WRITE PN-BEGDA TO DATEFIELD DD/MM/YYYY.
CONCATENATE HEADLINE DATEFIELD INTO HEADLINE SEPARATED BY
SPACE.
ENDFORM.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12