*--------------------------------------------------------------*
* FORM ERROR_HANDLING *
*--------------------------------------------------------------*
* Заполнить таблицу ошибок *
*--------------------------------------------------------------*
* --> PERNR *
* --> ARBGB *
* --> MSGTY *
* --> MSGNO *
* --> MSGV1 *
* --> MSGV2 *
* --> MSGV3 *
* --> MSGV4 *
*--------------------------------------------------------------*
FORM ERROR_HANDLING USING PERNR ARBGB MSGTY MSGNO
MSGV1 MSGV2 MSGV3 MSGV4.
CLEAR ERROR_TABLE.
ERROR_TABLE-PERNR = PERNR.
ERROR_TABLE-ARBGB = ARBGB.
ERROR_TABLE-MSGTY = MSGTY.
ERROR_TABLE-MSGNO = MSGNO.
ERROR_TABLE-MSGV1 = MSGV1.
ERROR_TABLE-MSGV2 = MSGV2.
ERROR_TABLE-MSGV3 = MSGV3.
ERROR_TABLE-MSGV4 = MSGV4.
APPEND ERROR_TABLE.
ENDFORM.
| Глава: Таблицы БД экспорта/импорта Тема: Экспорт и импорт объектов данных |
| · Выполнение экспорта и импорта объектов данных пользовательского кластера ZZ посредством команд EXPORT и IMPORT |
|
REPORT RPSOL070.
TABLES: PCL1.
INCLUDE: RPC1ZZ00. "Определение кластера ZZ
*-- Заполнить ключ кластера
ZZ-KEY-GROUP = '99'.
ZZ-KEY-DATE = SY-DATUM.
ZZ-KEY-SEQNO = '001'.
*-- Заполнить объект данных
NAMES-LASTNAME = 'Calk'.
NAMES-FIRSTNAME = 'Kathy'.
*-- Экспортировать запись в базу данных PCL1
EXPORT NAMES TO DATABASE PCL1(ZZ) ID ZZ-KEY.
IF SY-SUBRC EQ 0.
WRITE: 'Сохранение в файле PCL1 успешно для
ключа' (001),ZZ-KEY.
ENDIF.
*-- Заполнить ключ кластера
ZZ-KEY-SEQNO = '002'.
*-- Заполнить объект данных
NAMES-LASTNAME = 'Matthau'.
NAMES-FIRSTNAME = 'Walter'.
*-- Экспортировать запись в базу данных PCL1
EXPORT NAMES TO DATABASE PCL1(ZZ) ID ZZ-KEY.
IF SY-SUBRC EQ 0.
WRITE: TEXT-001, ZZ-KEY.
ENDIF.
REPORT RPSOL071.
TABLES: PCL1.
INCLUDE: RPC1ZZ00. "Определение кластера ZZ
*-- Заполнить ключ кластера
ZZ-KEY-GROUP = '99'.
ZZ-KEY-DATE = SY-DATUM.
ZZ-KEY-SEQNO = '001'.
*-- Импортировать запись из базы данных PCL1
IMPORT NAMES FROM DATABASE PCL1(ZZ) ID ZZ-KEY.
IF SY-SUBRC EQ 0.
WRITE: / NAMES-LASTNAME,
NAMES-FIRSTNAME.
ELSE.
WRITE: / 'Не найдены записи для ключа'(001), ZZ-KEY.
ENDIF.
*-- Заполнить ключ кластера
ZZ-KEY-SEQNO = '002'.
*-- Импортировать запись из базы данных PCL1
IMPORT NAMES FROM DATABASE PCL1(ZZ) ID ZZ-KEY.
IF SY-SUBRC EQ 0.
WRITE: / NAMES-LASTNAME,
NAMES-FIRSTNAME.
ELSE.
WRITE: / TEXT-001, ZZ-KEY.
ENDIF.
| Глава: Таблицы БД экспорта/импорта Тема: Экспорт и импорт объектов данных через буфер |
| · Выполнение экспорта и импорта объектов данных пользовательского кластера ZZ с помощью макросов |
|
REPORT RPSOL080.
TABLES: PCL1,PCL2.
INCLUDE: RPC1ZZ00. "Определение кластера ZZ
INCLUDE: RPPPXD00. " Определение буфера (I)
DATA: BEGIN OF COMMON PART BUFFER.
INCLUDE: RPPPXD10. " Определение буфера (II)
DATA: END OF COMMON PART BUFFER.
*-- Заполнить ключ кластера
ZZ-KEY-GROUP = '99'.
ZZ-KEY-DATE = SY-DATUM.
ZZ-KEY-SEQNO = '001'.
*-- Заполнить объект данных
NAMES-LASTNAME = 'Calk'.
NAMES-FIRSTNAME = 'Kathy'.
*-- Экспортировать запись в базу данных PCL1
RP-EXP-C1-ZZ.
IF RP-IMP-ZZ-SUBRC = 0.
WRITE: / 'Запись данных экспортирована в буфер'(001),
ZZ-KEY.
ENDIF.
*-- Заполнить ключ кластера
ZZ-KEY-SEQNO = '002'.
*-- Заполнить объект данных
NAMES-LASTNAME = 'Matthau'.
NAMES-FIRSTNAME = 'Walter'.
*-- Экспортировать запись в базу данных PCL1
RP-EXP-C1-ZZ.
IF RP-IMP-ZZ-SUBRC = 0.
WRITE: / TEXT-001, ZZ-KEY.
ENDIF.
*-- Перенести буфер в базу данных
PERFORM PREPARE_UPDATE USING 'V'.
*-- Подпрограммы
INCLUDE: RPPPXM00. " Подпрограммы буфера
REPORT RPSOL081.
TABLES: PCL1,PCL2.
INCLUDE: RPC1ZZ00. "Определение кластера ZZ
INCLUDE: RPPPXD00. " Определение буфера (I)
DATA: BEGIN OF COMMON PART BUFFER.
INCLUDE: RPPPXD10. " Определение буфера (II)
DATA: END OF COMMON PART BUFFER.
*-- Заполнить ключ кластера
ZZ-KEY-GROUP = '99'.
ZZ-KEY-DATE = SY-DATUM.
ZZ-KEY-SEQNO = '001'.
*-- IMPORT запись из базы данных PCL1
RP-IMP-C1-ZZ.
IF RP-IMP-ZZ-SUBRC = 0.
WRITE: / NAMES-LASTNAME,
NAMES-FIRSTNAME.
ELSE.
WRITE: / 'Не найдены записи для ключа'(001), ZZ-KEY.
ENDIF.
*-- Заполнить ключ кластера
ZZ-KEY-SEQNO = '002'.
*-- IMPORT запись из базы данных PCL1
RP-IMP-C1-ZZ.
IF RP-IMP-ZZ-SUBRC = 0.
WRITE: / NAMES-LASTNAME,
NAMES-FIRSTNAME.
ELSE.
WRITE: / TEXT-001, ZZ-KEY.
ENDIF.
*--
INCLUDE: RPPPXM00. " Подпрограммы буфера
| Глава: Таблицы БД экспорта/импорта Тема: Вывод результатов расчета зарплаты |
| · Считывание кластерного каталога с помощью CU_READ_RGDIR · Обработка кластерного каталога с помощью CD_EVALUATION_PERIODS · Вывод видов оплаты из таблицы результатов RT |
| · Отделу расчета зарплаты Вашего предприятия требуется список с видами оплаты из таблицы результатов расчета зарплаты |
REPORT RPSOL090.
TABLES: PCL1,
PCL2,
PERNR.
TABLES: T512T, "Тексты видов оплаты
T549A. "Единицы расчета
INFOTYPES: 0001. "Организационное присвоение
INCLUDE: RPC2RX00. "Определение кластера RX(I)
INCLUDE: RPC2RXX0. "Определение кластера RX(II)
INCLUDE: RPPPXD00. "Определение буфера (I)
DATA: BEGIN OF COMMON PART BUFFER.
INCLUDE: RPPPXD10. " Определение буфера (II)
DATA: END OF COMMON PART BUFFER.
* Данные таблицы, содержащие каталог к файлу результатов расчета PCL2
DATA: BEGIN OF RGDIR OCCURS 100.
INCLUDE STRUCTURE PC261.
DATA: END OF RGDIR.
DATA: BEGIN OF EVPDIR OCCURS 100.
INCLUDE STRUCTURE PC261.
DATA: END OF EVPDIR.
DATA: COUNTRY LIKE T001P-MOLGA,
PERIOD LIKE PC261-INPER
SELECT-OPTIONS: P_STATUS FOR RGDIR-SRTZA DEFAULT 'A'.
START-OF-SELECTION.
SELECT SINGLE * FROM T549A WHERE ABKRS = PNPXABKR.
*-- Обработка
GET PERNR.
RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA.
CALL FUNCTION 'CU_READ_RGDIR'
EXPORTING
PERSNR = P0001-PERNR
IMPORTING
MOLGA = COUNTRY
TABLES
IN_RGDIR = RGDIR
EXCEPTIONS
NO_RECORD_FOUND = 1
OTHERS = 2
IF SY-SUBRC = 1.
WRITE: / 'Не найдены записи для '(001), PERNR-PERNR.
ENDIF.
PERIOD = PN-PAPER.
CALL FUNCTION 'CD_EVALUATION_PERIODS'
EXPORTING
BONUS_DATE = '00000000'
INPER_MODIF = T549A-PERMO
INPER = PERIOD
PAY_TYPE = ' '
PAY_IDENT = ' '
TABLES
RGDIR = RGDIR
EVPDIR = EVPDIR
* iabkrs =
EXCEPTIONS
NO_RECORD_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 1.
WRITE: / ''Не найдены записи для '(001), PN-PAPER.
ELSE.
LOOP AT EVPDIR WHERE SRTZA IN P_STATUS.
*-- Заполнить ключ RX
RX-KEY-PERNR = P0001-PERNR.
RX-KEY-SEQNO = EVPDIR-SEQNR.
*-- Импортировать запись из базы данных PCL2
RP-IMP-C2-RX.
IF RP-IMP-RX-SUBRC = 0.
PERFORM PRINT_RX.
ELSE.
WRITE: / 'Запросы буфера не удались (002).
ENDIF.
ENDLOOP.
ENDIF.
*-- Подпрограммы
INCLUDE RPPPXM00. "PCL1/PCL2-Буфер
*--------------------------------------------------------------*
* FORM PRINT_RX *
*--------------------------------------------------------------*
* Печатать результаты расчета *
*--------------------------------------------------------------*
FORM PRINT_RX.
FORMAT INTENSIFIED ON.
WRITE: / P0001-PERNR,
P0001-ENAME(15),
P0001-WERKS,
P0001-BTRTL.
FORMAT INTENSIFIED OFF.
SKIP 1.
WRITE: / 'Для-период/единица расчета: '(003),
30 EVPDIR-FPPER+4(2),
EVPDIR-FPPER+0(4),
EVPDIR-ABKRS,
/ 'В-период/единица расчета: '(004),
30 EVPDIR-INPER+4(2),
EVPDIR-INPER+0(4),
EVPDIR-IABKRS.
SKIP 1.
WRITE: 'Таблица результатов: '(005).
SKIP 1.
LOOP AT RT.
PERFORM RE512T USING COUNTRY RT-LGART.
WRITE: / RT-LGART,
T512T-LGTXT,
RT-BETRG CURRENCY RT-AMT_CURR.
ENDLOOP.
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.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 |







