CK11N 成本滚算
一、BAPI :CK_F_MATERIAL_CALC
1、使用BAPI跑CK11N,如果数据错误会导致自建程序直接退出,在循环中不会继续向下执行。
CALL FUNCTION 'CK_F_MATERIAL_CALC'
EXPORTING
klvar = 'PPC1'
matnr = gs_data-matnr
werks = gs_data-werks
losgr = '1.0'
tvers = '01'
kadat = sy-datum
bidat = '99991231'
aldat = sy-datum
bwdat = sy-datum
s_dunkel = 'X'
s_update = 'S'
* s_no_commit = ' '
* s_repetitive = ' '
* s_sngl_lock = 'X'
* u_kalsm = ' '
IMPORTING
f_keko_exp = lkeko
TABLES
t_keph_exp = lkeph
EXCEPTIONS
wrong_call = 1
keph_not_found = 2
locked = 3
OTHERS = 4.
IF lkeko-kalnr IS NOT INITIAL.
gs_data-msage = '成本估算成功!'.
gs_data-flag1 = 'X'.
ELSE.
gs_data-msage = '成本估算失败!'.
gs_data-flag1 = ''.
ENDIF.
二、BDC
1、使用BDC跑CK11N没有发现报错信息(如果有遇到能带出报错信息的望指点),只能在跑CK11后对表KEKO进行验证是否跑成功.
*BDC录屏,按照顺序填
PERFORM bdc_dynpro USING 'SAPLCKDI' '4610'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'CKI64A-KLVAR' 'PPC1'.
PERFORM bdc_field USING 'CKI64A-TVERS' '1'.
PERFORM bdc_field USING 'CKI64A-MATNR' p_matnr.
PERFORM bdc_field USING 'CKI64A-WERKS' p_werks.
PERFORM bdc_dynpro USING 'SAPLCKDI' '4610'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'BDC_CURSOR' 'CKI64A-BWDAT'.
PERFORM bdc_field USING 'CKI64A-KADAT' sy-datum.
PERFORM bdc_field USING 'CKI64A-BIDAT' '99991231'.
PERFORM bdc_field USING 'CKI64A-ALDAT' sy-datum.
PERFORM bdc_field USING 'CKI64A-BWDAT' sy-datum.
PERFORM bdc_dynpro USING 'SAPLCKDI' '4610'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SAVE'.
PERFORM bdc_field USING 'CKI64A-MATNR' p_matnr.
PERFORM bdc_field USING 'CKI64A-WERKS' p_werks.
PERFORM bdc_field USING 'CKI64A-BEZUG' '1'.
PERFORM bdc_field USING 'CKI64A-SICHT' '1'.
*然后是调用事物代码:
CALL TRANSACTION 'CK11N' USING gt_bdcdata
MODE p_mode
MESSAGES INTO gt_msgtab
UPDATE 'S'. "批导更新模式(A = '异步',S = '同步')