本文主要是介绍SUBMIT ukm_rfdkli20更新客户信贷数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
业务需求
要求通过执行程序ukm_rfdkli20,将跑出来的交货单下发给外围系统
实现思路
SUBMIT ukm_rfdkli20程序的时候,会弹出一些屏幕,所以需要利用后台作业去跑,因为跑出来数据在另一个子屏幕里面,所以我们没办法直接通过SUBMIT获取到数据,最后发现程序跑完之后,系统会更新v_ukm_item表,所以我的想法是,利用UUID生成后台作业名,然后判断此UUID的后台作业已经实行完毕,再查v_ukm_item表进行数据下发。
具体逻辑参考代码
DATA lo_uuid TYPE REF TO if_system_uuid.DATA lv_uuid_x16 TYPE sysuuid_x16. "DATA lv_uuid_c26 TYPE sysuuid_c26.LOOP AT gt_kunnr ASSIGNING FIELD-SYMBOL(<fs_kunnr>) .TRY.lo_uuid = cl_uuid_factory=>create_system_uuid( ).lv_uuid_x16 = lo_uuid->create_uuid_x16( ).lo_uuid->convert_uuid_x16(EXPORTINGuuid = lv_uuid_x16IMPORTINGuuid_c26 = lv_uuid_c26 ).CATCH cx_uuid_error.ENDTRY.<fs_kunnr>-uuid = lv_uuid_c26 .ENDLOOP .LOOP AT gt_kunnr INTO gs_kunnr .CALL FUNCTION 'ZSD001' "STARTING NEW TASK gs_kunnr-kunnr
* PERFORMING frm_task_end ON END OF TASKEXPORTINGkunnr = gs_kunnr-kunnruuid = gs_kunnr-uuidEXCEPTIONScommunication_failure = 1system_failure = 2resource_failure = 3.* WAIT UNTIL gt_vukm IS NOT INITIAL.PERFORM frm_task_end USING gs_kunnr-kunnr .CLEAR : gs_kunnr .ENDLOOP .
FUNCTION zsd001.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(KUNNR) TYPE KUNNR OPTIONAL
*" VALUE(UUID) TYPE CHAR26 OPTIONAL
*"--------------------------------------------------------------------DATA : lr_alv_data TYPE REF TO data .FIELD-SYMBOLS <lt_alv_data> TYPE ANY TABLE .DATA: number TYPE tbtcjob-jobcount,name TYPE tbtcjob-jobname,print_parameters TYPE pri_params.DATA: it_seltab TYPE TABLE OF rsparams,iw_seltab LIKE LINE OF it_seltab.RANGES:r_kunnr FOR knvv-kunnr,r_kkber FOR knvv-kkber.name = uuid .r_kunnr-sign = 'I'.r_kunnr-option = 'EQ'.r_kunnr-low = kunnr.APPEND r_kunnr.r_kkber-sign = 'I'.r_kkber-option = 'EQ'.r_kkber-low = '1000'.APPEND r_kkber .cl_salv_bs_runtime_info=>set(display = abap_truemetadata = abap_falsedata = abap_true ).CALL FUNCTION 'JOB_OPEN'EXPORTINGjobname = nameIMPORTINGjobcount = numberEXCEPTIONScant_create_job = 1invalid_job_data = 2jobname_missing = 3OTHERS = 4.IF sy-subrc = 0.SUBMIT ukm_rfdkli20WITH sdchd = 'X'WITH testlauf = ''WITH pkunnr IN r_kunnrWITH pkkber IN r_kkberTO SAP-SPOOLSPOOL PARAMETERS print_parametersWITHOUT SPOOL DYNPROVIA JOB name NUMBER numberAND RETURN.IF sy-subrc = 0.CALL FUNCTION 'JOB_CLOSE'EXPORTINGjobcount = numberjobname = namestrtimmed = 'X'EXCEPTIONScant_start_immediate = 1invalid_startdate = 2jobname_missing = 3job_close_failed = 4job_nosteps = 5job_notex = 6lock_failed = 7OTHERS = 8.IF sy-subrc = 0.ENDIF.ENDIF .ENDIF.
ENDFUNCTION.
FORM frm_task_end USING gv_kunnr.DATA : ls_likpvb TYPE likpvb,lt_likpvb TYPE TABLE OF likpvb.READ TABLE gt_kunnr INTO DATA(ls_kunnr) WITH KEY kunnr = gv_kunnr .IF sy-subrc = 0 .DO 50 TIMES.SELECT SINGLE COUNT(*) FROM tbtco WHERE jobname = ls_kunnr-uuid AND status = 'F' .IF sy-subrc = 0 .SELECT * FROM v_ukm_item INTO TABLE @gt_vukm WHERE partner = @gv_kunnr AND objtype = 'LIKP' .LOOP AT gt_vukm INTO gs_vukm .gs_vbeln-vbeln = gs_vukm-objkey+0(10) .APPEND gs_vbeln TO gt_vbeln .CLEAR : gs_vukm ,gs_vbeln .ENDLOOP .LOOP AT gt_vbeln ASSIGNING FIELD-SYMBOL(<fs_vbeln>) .SELECT SINGLE * FROM likp INTO @DATA(ls_likp) WHERE vbeln = @<fs_vbeln>-vbeln AND cmgst = 'A' AND wbstk <> 'C' .MOVE-CORRESPONDING ls_likp TO ls_likpvb .APPEND ls_likpvb TO lt_likpvb .CLEAR : ls_likpvb .IF sy-subrc = 0 . "下发全域CALL FUNCTION 'ZPOFM_OUTB_DLV_STATUS_SEND'EXPORTINGim_type = '02'TABLESit_likp = lt_likpvb.APPEND <fs_vbeln> TO gt_alv .ENDIF .CLEAR : lt_likpvb ,ls_likpvb ,ls_likp .ENDLOOP .EXIT .ELSE .WAIT UP TO 2 SECONDS .ENDIF .ENDDO.ENDIF .
ENDFORM.
这篇关于SUBMIT ukm_rfdkli20更新客户信贷数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!