Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие авар.doc
Скачиваний:
62
Добавлен:
02.09.2019
Размер:
2.34 Mб
Скачать

Вызов последовательности планирования из abap

Пример использования: после загрузки фактических данных в SAP BW нужно выполнить последовательность планирования для выполнения пересчетов в бюджетной модели.

FUNCTION Z_S_START_CHECK. *"---------------------------------------------------------------------- *"*"Локальный интерфейс: *"  IMPORTING *"     VALUE(LS_ORGUNIT) TYPE  /BIC/OISORGUNIT *"     VALUE(LS_PARAM) TYPE  ZSCHECK_PARAM *"  EXPORTING *"     VALUE(ZSGUID_22) TYPE  ZSGUID_22 *"     VALUE(ZSBAPIRET2) TYPE  ZSBAPIRET2 *"----------------------------------------------------------------------   DATA:         L_SEQNM TYPE RSPLS_SEQNM,         L_SCREEN_MODE TYPE RSPLS_SCREEN_MODE,         L_VAR_HANDLE TYPE RSR_HANDLE,         LT_BAPIRET TYPE TABLE OF BAPIRET2,         LS_BAPIRET TYPE BAPIRET2,         LT_VALUES TYPE RSR_T_VARIABLE_VALUES,         LS_VAL TYPE RSRRANGEEXT,         L_SUBRC TYPE SY-SUBRC.   DATA:         LS_GUID22 TYPE GUID_22,         S1 TYPE STRING,         S2 TYPE STRING.   FIELD-SYMBOLS:                  <FS_LINE> TYPE ANY,                  <FS_VAR_ID> TYPE ANY,                  <FS_VNAM> TYPE ANY,                  <FS_VALUES> TYPE RSR_T_RANGEEX,                  <FS_VALUES_L> TYPE RSRRANGEEXT. ИМЯ ПОСЛЕДОВАТЕЛЬНОСТИ ПЛАНИРОВАНИЯ   L_SEQNM = 'SF00_P02_2'. Получение handle контейнера переменных   CALL FUNCTION 'RSPLSSE_PLSEQ_SCREEN_NECESSARY'     EXPORTING       I_SEQNM       = L_SEQNM       I_OBJVERS     = 'A'     IMPORTING       E_SCREEN_MODE = L_SCREEN_MODE       E_VAR_HANDLE  = L_VAR_HANDLE     TABLES       E_TK_RETURN   = LT_BAPIRET. Считывание контейнера переменных   CALL FUNCTION 'RSR_VAR_GET_VALUES'     EXPORTING       I_VAR_CONT_HANDLE = L_VAR_HANDLE     IMPORTING       E_T_VALUES        = LT_VALUES       E_SUBRC           = L_SUBRC     TABLES       E_T_RETURN        = LT_BAPIRET.   LOOP AT LT_VALUES ASSIGNING <FS_LINE>.     CLEAR LS_VAL.     ASSIGN COMPONENT 'VAR_ID' OF STRUCTURE <FS_LINE> TO <FS_VAR_ID>.     ASSIGN COMPONENT 'VNAM' OF STRUCTURE <FS_VAR_ID> TO <FS_VNAM>.     ASSIGN COMPONENT 'VALUES' OF STRUCTURE <FS_LINE> TO <FS_VALUES>.     LOOP AT <FS_VALUES> ASSIGNING <FS_VALUES_L>.       DELETE <FS_VALUES>.     ENDLOOP.     CASE <FS_VNAM>.       WHEN 'SVAR_0FISCPER3_S0'.         LS_VAL-SIGN = 'I'.         LS_VAL-OPT = 'EQ'.         LS_VAL-LOW_EXT = LS_PARAM-FISCPER3.         LS_VAL-HIGH_EXT = ''.         APPEND LS_VAL TO <FS_VALUES>.       WHEN 'SVAR_0FISCYEAR_S0'.         LS_VAL-SIGN = 'I'.         LS_VAL-OPT = 'EQ'.         LS_VAL-LOW_EXT = LS_PARAM-FISCYEAR.         LS_VAL-HIGH_EXT = ''.         APPEND LS_VAL TO <FS_VALUES>.       WHEN 'SVAR_SFORM_I1'.       WHEN 'SVAR_SCHKRULE_S0'.         LS_VAL-SIGN = 'I'.         LS_VAL-OPT = 'EQ'.         LS_VAL-LOW_EXT = LS_PARAM-SCHKRULE.         LS_VAL-HIGH_EXT = ''.         APPEND LS_VAL TO <FS_VALUES>.       WHEN 'SVAR_SVERSION_S0'.         LS_VAL-SIGN = 'I'.         LS_VAL-OPT = 'EQ'.         LS_VAL-LOW_EXT = LS_PARAM-SVERSION.         LS_VAL-HIGH_EXT = ''.         APPEND LS_VAL TO <FS_VALUES>.       WHEN 'SVAR_SORGUNIT_I0'.         LS_VAL-SIGN = 'I'.         LS_VAL-OPT = 'EQ'.         LS_VAL-LOW_EXT = LS_ORGUNIT.         LS_VAL-HIGH_EXT = ''.         APPEND LS_VAL TO <FS_VALUES>.       WHEN OTHERS.         MESSAGE W001(00) WITH 'Параметры посл. план. изменены'.     ENDCASE.   ENDLOOP. Сохранение значений переменных в контейнер   CALL FUNCTION 'RSR_VAR_SET_VALUES'     EXPORTING       I_VAR_CONT_HANDLE = L_VAR_HANDLE       I_T_VALUES        = LT_VALUES     IMPORTING       E_SUBRC           = L_SUBRC     TABLES       E_T_RETURN        = LT_BAPIRET. Запуск последовательности планирования   CALL FUNCTION 'RSPLSSE_PLSEQ_EXECUTE'     EXPORTING       I_SEQNM        = L_SEQNM       I_FAST_ENQUEUE = 'X'     TABLES       E_TK_RETURN    = LT_BAPIRET.   LOOP AT LT_BAPIRET INTO LS_BAPIRET WHERE     ID = 'ZSCHK' AND     NUMBER = 998.     SPLIT LS_BAPIRET-MESSAGE AT '=' INTO S1 S2.     LS_GUID22 = S2.     APPEND LS_GUID22 TO ZSGUID_22.   ENDLOOP.   LOOP AT LT_BAPIRET INTO LS_BAPIRET WHERE     ( ID = 'RSPLS' OR       ID = 'RSPLF' ) AND     TYPE EQ 'E'.     APPEND LS_BAPIRET TO ZSBAPIRET2.   ENDLOOP. ENDFUNCTION.