ABAP-自动开启财务SAP账期功能

OA->SAP系统流程申请开启账期

1、开启财务账期(OB52)

1       CALL FUNCTION 'ZFM_FI_OB52'
2         EXPORTING
3           IV_BUKRS   = LV_BUKRS
4           IV_GJAHR   = LV_GJAHR
5           IV_POPER   = LV_POPER
6         IMPORTING
7           EV_TYPE    = LV_STATUS
8           EV_MESSAGE = LV_MESSAGE
 1   DATA: LS_T001B   TYPE T001B.
 2   DATA: BDCDATA    LIKE BDCDATA    OCCURS 0 WITH HEADER LINE,
 3         GV_MODE    VALUE 'N',
 4         LT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
 5         LV_MSG     TYPE STRING.
 6 
 7   DEFINE BDC_DYNPRO.
 8     CLEAR BDCDATA.
 9     BDCDATA-PROGRAM  = &1.
10     BDCDATA-DYNPRO   = &2.
11     BDCDATA-DYNBEGIN = 'X'.
12     APPEND BDCDATA.
13   END-OF-DEFINITION.
14 
15   DEFINE BDC_FIELD.
16     CLEAR BDCDATA.
17     BDCDATA-FNAM = &1.
18     BDCDATA-FVAL = &2.
19     CONDENSE BDCDATA-FVAL.
20     APPEND BDCDATA.
21   END-OF-DEFINITION.
22 
23   BDC_DYNPRO 'SAPLSPO4'   '0300'.
24   BDC_FIELD: 'BDC_CURSOR' 'SVALD-VALUE(01)',
25              'BDC_OKCODE' '=FURT',
26              'SVALD-VALUE(01)' IV_BUKRS.
27   BDC_DYNPRO 'SAPL0F00'   '0068'.
28   BDC_FIELD: 'BDC_CURSOR' 'V_T001B_COFIB-TOYE1(06)',
29              'BDC_OKCODE' '=SAVE',
30              'V_T001B_COFIB-TOPE1(01)' IV_POPER,
31              'V_T001B_COFIB-TOPE1(02)' IV_POPER,
32              'V_T001B_COFIB-TOPE1(03)' IV_POPER,
33              'V_T001B_COFIB-TOPE1(04)' IV_POPER,
34              'V_T001B_COFIB-TOPE1(05)' IV_POPER,
35              'V_T001B_COFIB-TOPE1(06)' IV_POPER,
36              'V_T001B_COFIB-TOYE1(01)' IV_GJAHR,
37              'V_T001B_COFIB-TOYE1(02)' IV_GJAHR,
38              'V_T001B_COFIB-TOYE1(03)' IV_GJAHR,
39              'V_T001B_COFIB-TOYE1(04)' IV_GJAHR,
40              'V_T001B_COFIB-TOYE1(05)' IV_GJAHR,
41              'V_T001B_COFIB-TOYE1(06)' IV_GJAHR.
42   BDC_DYNPRO 'SAPL0F00'   '0068'.
43   BDC_FIELD: 'BDC_CURSOR' 'V_T001B_COFIB-TOYE1(06)',
44              'BDC_OKCODE' '=BACK'.
45 
46   REFRESH LT_MESSTAB.
47   CALL TRANSACTION 'OB52' USING BDCDATA
48                            MODE GV_MODE
49                          UPDATE 'S'
50                   MESSAGES INTO LT_MESSTAB.
51 
52   READ TABLE LT_MESSTAB WITH KEY MSGTYP = 'S'.
53   IF SY-SUBRC = 0.
54     CLEAR LS_T001B.
55     SELECT SINGLE * INTO LS_T001B FROM T001B WHERE BUKRS = IV_BUKRS.
56     IF LS_T001B-TOYE1 = IV_GJAHR AND LS_T001B-TOPE1 = IV_POPER.
57       EV_TYPE  = 'S'.
58       EV_MESSAGE = '财务账期' && IV_GJAHR && '' && IV_POPER && '已打开'.
59     ELSE.
60       EV_TYPE  = 'E'.
61       EV_MESSAGE = '财务账期开启失败,请查看是否被其它账号锁定后重新传输!'.
62     ENDIF.
63   ELSE.
64     LOOP AT LT_MESSTAB WHERE MSGTYP = 'E'.
65       CALL FUNCTION 'MESSAGE_TEXT_BUILD'  "消息编号及变量使用函数转换为消息内容输出
66         EXPORTING
67           MSGID               = LT_MESSTAB-MSGID
68           MSGNR               = LT_MESSTAB-MSGNR
69           MSGV1               = LT_MESSTAB-MSGV1
70           MSGV2               = LT_MESSTAB-MSGV2
71           MSGV3               = LT_MESSTAB-MSGV3
72           MSGV4               = LT_MESSTAB-MSGV4
73         IMPORTING
74           MESSAGE_TEXT_OUTPUT = LV_MSG.
75       CLEAR LT_MESSTAB .
76     ENDLOOP.
77 
78     IF LV_MSG IS INITIAL .
79       READ TABLE LT_MESSTAB INDEX 1.
80       IF SY-SUBRC = 0.
81         MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 INTO LV_MSG.
82       ENDIF.
83     ENDIF.
84 
85     EV_TYPE  = 'E'.
86     EV_MESSAGE = LV_MSG.
87   ENDIF.
88 
89   REFRESH BDCDATA.
View Code
2、开启物料账期(MMPV)
1      CALL FUNCTION 'ZFM_FI_MMPV'
2         EXPORTING
3           IV_BUKRS   = LV_BUKRS
4           IV_GJAHR   = LV_GJAHR
5           IV_POPER   = LV_LFMON
6         IMPORTING
7           EV_TYPE    = LV_STATUS
8           EV_MESSAGE = LV_MESSAGE
 1   DATA: LS_MARV    TYPE MARV,
 2         LS_OPTIONS TYPE CTU_PARAMS.
 3   DATA: BDCDATA    LIKE BDCDATA    OCCURS 0 WITH HEADER LINE,
 4         LT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
 5         LV_MSG     TYPE STRING.
 6 
 7   DEFINE BDC_DYNPRO.
 8     CLEAR BDCDATA.
 9     BDCDATA-PROGRAM  = &1.
10     BDCDATA-DYNPRO   = &2.
11     BDCDATA-DYNBEGIN = 'X'.
12     APPEND BDCDATA.
13   END-OF-DEFINITION.
14 
15   DEFINE BDC_FIELD.
16     CLEAR BDCDATA.
17     BDCDATA-FNAM = &1.
18     BDCDATA-FVAL = &2.
19     CONDENSE BDCDATA-FVAL.
20     APPEND BDCDATA.
21   END-OF-DEFINITION.
22 
23   BDC_DYNPRO 'RMMMPERI'   '1000'.
24   BDC_FIELD: 'BDC_CURSOR' 'I_LFMON',
25              'BDC_OKCODE' '=ONLI',
26              'I_VBUKR'    IV_BUKRS,
27              'I_BBUKR'    IV_BUKRS,
28              'I_LFMON'    IV_POPER,
29              'I_LFGJA'    IV_GJAHR,
30              'I_XCOMP'    'X'.
31 
32   LS_OPTIONS-DISMODE  = 'N'. "设置显示模式为'N'(无显示)
33   LS_OPTIONS-UPDMODE  = 'S'. "设置更新模式为'S'(同步更新)
34   LS_OPTIONS-RACOMMIT = 'X'. "设置RACOMMIT为'X'(提交后不等待)
35 
36   REFRESH LT_MESSTAB.
37   CALL TRANSACTION 'MMPV' USING BDCDATA
38                    OPTIONS FROM LS_OPTIONS
39                   MESSAGES INTO LT_MESSTAB.
40 
41   READ TABLE LT_MESSTAB WITH KEY MSGTYP = 'S'.
42   IF SY-SUBRC = 0.
43     CLEAR LS_MARV.
44     SELECT SINGLE * FROM MARV INTO LS_MARV WHERE BUKRS = IV_BUKRS.
45     IF LS_MARV-LFGJA = IV_GJAHR AND LS_MARV-LFMON = IV_POPER.
46       EV_TYPE  = 'S'.
47       EV_MESSAGE = '公司代码' && IV_BUKRS && '物料账期已开启'.
48     ELSE.
49       EV_TYPE  = 'E'.
50       EV_MESSAGE = '公司代码' && IV_BUKRS && '物料账期开启失败'.
51     ENDIF.
52   ELSE.
53     LOOP AT LT_MESSTAB WHERE MSGTYP = 'E'.
54       CALL FUNCTION 'MESSAGE_TEXT_BUILD'  "消息编号及变量使用函数转换为消息内容输出
55         EXPORTING
56           MSGID               = LT_MESSTAB-MSGID
57           MSGNR               = LT_MESSTAB-MSGNR
58           MSGV1               = LT_MESSTAB-MSGV1
59           MSGV2               = LT_MESSTAB-MSGV2
60           MSGV3               = LT_MESSTAB-MSGV3
61           MSGV4               = LT_MESSTAB-MSGV4
62         IMPORTING
63           MESSAGE_TEXT_OUTPUT = LV_MSG.
64       CLEAR LT_MESSTAB .
65     ENDLOOP.
66 
67     IF LV_MSG IS INITIAL .
68       READ TABLE LT_MESSTAB INDEX 1.
69       IF SY-SUBRC = 0.
70         MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 INTO LV_MSG.
71       ENDIF.
72     ENDIF.
73 
74     EV_TYPE  = 'E'.
75     EV_MESSAGE = LV_MSG.
76   ENDIF.
77 
78   REFRESH BDCDATA.
View Code

 

posted @ 2026-01-29 10:04  万有主任  阅读(5)  评论(0)    收藏  举报