刷新信贷SAP提供的标准的程序RVKRED77
该程序的主要逻辑是:
计算当前信贷存入S066/S067表,每次计算之前都会清空这个两个表,VA02修改销售订单也会刷新信贷但这个建立S066/S067已计算好的信贷基础上,不会修改S066/S067数据
如上如有问题请留言
如下代码实现JOB,但是要配合已设定的JOB使用
REPORT zjob_check_rvkred77.
- 事务代码: ZJOB_CHECK_RVKRED77
- 程序名称:
- 程序目的: 信贷程序RVKRED77 JOB检查,如果关闭就重新开启
- 程序类型: ABAP/4 程序 ,实时JOB检查
- 应用类型: 信贷程序RVKRED77 JOB检查
- 开发人员:
*(修改日志)-------------------------------------------------------- - 日志号 修改人 修改时间 修改说明 传输号码
-
TABLES vbak.
DATA:g_number TYPE tbtcjob-jobcount,
g_name TYPE tbtcjob-jobname,
g_print_parameters TYPE pri_params VALUE ‘LP01’.
"BDC数据
DATA:bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA:messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
DATA:bdcmode TYPE c VALUE ‘N’,
bdcupdate TYPE c VALUE ‘L’.
DATA:gv_mes TYPE string,
l_number TYPE sy-msgno,
l_msgv1 TYPE sy-msgv1,
l_msgv2 TYPE sy-msgv2,
l_msgv3 TYPE sy-msgv3,
l_msgv4 TYPE sy-msgv4.
SELECT-OPTIONS:s_kkber FOR vbak-kkber NO-DISPLAY.
--------------------------------------------------------------------
*INITIALIZATION
--------------------------------------------------------------------
INITIALIZATION.
"初始化七个公司贷方控制范围
s_kkber-sign = ‘I’. s_kkber-option = ‘EQ’. s_kkber-low = ‘1001’. APPEND s_kkber.
s_kkber-sign = ‘I’. s_kkber-option = ‘EQ’. s_kkber-low = ‘1101’. APPEND s_kkber.
s_kkber-sign = ‘I’. s_kkber-option = ‘EQ’. s_kkber-low = ‘1201’. APPEND s_kkber.
s_kkber-sign = ‘I’. s_kkber-option = ‘EQ’. s_kkber-low = ‘1301’. APPEND s_kkber.
s_kkber-sign = ‘I’. s_kkber-option = ‘EQ’. s_kkber-low = ‘1501’. APPEND s_kkber.
s_kkber-sign = ‘I’. s_kkber-option = ‘EQ’. s_kkber-low = ‘2101’. APPEND s_kkber.
s_kkber-sign = ‘I’. s_kkber-option = ‘EQ’. s_kkber-low = ‘2301’. APPEND s_kkber.
--------------------------------------------------------------------
*START-OF-SELECTION
--------------------------------------------------------------------
START-OF-SELECTION.
DO.
"检查JOB是否执行
SELECT SINGLE *
INTO @DATA(ls_tbtco)
FROM tbtco
WHERE jobname = '信贷处理JOB-7个公司-RVKRED77'
AND sdlstrtdt = @sy-datum
AND ( status = 'R' OR status = 'F').
IF sy-subrc <> 0.
"SM12 BDC解锁 likp lips vbak vbap
PERFORM frm_sm12_bdc USING 'LIKP'.
PERFORM frm_sm12_bdc USING 'LIPS'.
PERFORM frm_sm12_bdc USING 'VBAK'.
PERFORM frm_sm12_bdc USING 'VBAP'.
PERFORM frm_sm12_bdc USING 'VBRK'.
CLEAR g_number.
"创建已计划状态的JOB
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = '信贷处理JOB-7个公司-RVKRED77'
IMPORTING
jobcount = g_number
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc = 0.
"JOB内容
SUBMIT rvkred77
WITH kkber IN s_kkber "信贷控制范围
WITH protb = 'X' "日志?(X)
TO SAP-SPOOL "打印机参数设置
SPOOL PARAMETERS g_print_parameters "打印机格式
WITHOUT SPOOL DYNPRO
USER syst-uname
VIA JOB '信贷处理JOB-7个公司-RVKRED77' NUMBER g_number
AND RETURN.
IF sy-subrc = 0.
"释放已计划的JOB,JOB状态为活动
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = g_number
jobname = '信贷处理JOB-7个公司-RVKRED77'
strtimmed = 'X'
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF sy-uzeit > '060000'.
EXIT .
ENDIF.
WAIT UP TO 5 SECONDS.
ENDDO.
--------------------------------------------------------------------
*END-OF-SELECTION
--------------------------------------------------------------------
END-OF-SELECTION.
----------------------------------------------------------------------
-
Start new screen *
----------------------------------------------------------------------
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = ‘X’.
APPEND bdcdata.
ENDFORM.
----------------------------------------------------------------------
-
Insert field *
----------------------------------------------------------------------
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_SM12_BDC
&---------------------------------------------------------------------
-
SM12 BDC解锁 likp lips vbak vbap
----------------------------------------------------------------------
-
-->P_0111 text
----------------------------------------------------------------------
FORM frm_sm12_bdc USING p_0111.
REFRESH:bdcdata,
messtab.
PERFORM bdc_dynpro USING ‘RSENQRR2’ ‘1100’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘SEQG3-GNAME’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=GO’.
PERFORM bdc_field USING ‘SEQG3-GNAME’
p_0111.
PERFORM bdc_field USING ‘SEQG3-GCLIENT’
sy-mandt.
PERFORM bdc_field USING ‘SEQG3-GUNAME’
‘*’.
PERFORM bdc_dynpro USING ‘SAPMSSY0’ ‘0120’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘04/03’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=&ALL’.
PERFORM bdc_dynpro USING ‘SAPMSSY0’ ‘0120’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘04/03’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=DELM’.
PERFORM bdc_dynpro USING ‘SAPLSPO1’ ‘0100’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=YES’.
PERFORM bdc_dynpro USING ‘SAPMSSY0’ ‘0120’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=BACK’.
CALL TRANSACTION ‘SM12’ USING bdcdata MODE bdcmode UPDATE bdcupdate
MESSAGES INTO messtab .
COMMIT WORK AND WAIT.
- LOOP AT messtab .
- CLEAR: gv_mes,l_number,l_msgv1,l_msgv2,l_msgv3,l_msgv4.
- l_number = messtab-msgnr.
- l_msgv1 = messtab-msgv1.
- l_msgv2 = messtab-msgv2.
- l_msgv3 = messtab-msgv3.
- l_msgv4 = messtab-msgv4.
- CALL FUNCTION ‘MESSAGE_TEXT_BUILD’
-
EXPORTING
-
msgid = messtab-msgid
-
msgnr = l_number
-
msgv1 = l_msgv1
-
msgv2 = l_msgv2
-
msgv3 = l_msgv3
-
msgv4 = l_msgv4
-
IMPORTING
-
message_text_output = gv_mes.
- WRITE gv_mes.
- ENDLOOP.
ENDFORM.