先CALL FM: 'I_CHANGE_STATUS' 修改状态,但是这个FM不会刷新销售订单里前台的状态,所以还需要调用BDC刷新一下
代码如下:
READ TABLE gt_data WITH KEY chk = abap_true. IF sy-subrc NE 0. MESSAGE s001(00) WITH '请至少选中一行数据处理!' DISPLAY LIKE 'E'. RETURN. ENDIF. ***** 弹框提示 * Confirmation CLEAR:lv_answer,lt_t_msg[]. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING text_question = '是否确认进行审核操作?' IMPORTING answer = lv_answer EXCEPTIONS ##FM_SUBRC_OK text_not_found = 1 OTHERS = 2. IF sy-subrc <> 0. ENDIF. CHECK lv_answer EQ '1'. " OK LOOP AT gt_data WHERE chk = abap_true. CALL FUNCTION 'I_CHANGE_STATUS' EXPORTING objnr = gt_data-objnr "对象编号 estat_inactive = 'E0001' "原状态 estat_active = 'E0002' "新状态 stsma = 'ZSD01' ”状态参数文件 EXCEPTIONS cannot_update = 1 OTHERS = 2. IF sy-subrc <> 0. gt_data-mess = |审核失败|. ELSE. PERFORM call_va02. "调用va02刷新状态 IF gt_data-mess IS INITIAL. gt_data-mess = |审核成功|. ENDIF. ENDIF. MODIFY gt_data TRANSPORTING mess. ENDLOOP. *&---------------------------------------------------------------------* *& Form CALL_VA02 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM call_va02 . DATA: l_mode TYPE c VALUE 'N', l_msg(220). REFRESH bdcdata[] . CLEAR bdcdata . CLEAR: messtab,messtab[]. PERFORM bdc_dynpro USING 'SAPMV45A' '0102'. PERFORM bdc_field USING 'VBAK-VBELN' gt_data-vbeln. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_dynpro USING 'SAPMV45A' '4008'. PERFORM bdc_field USING 'BDC_OKCODE' '=POPO'. PERFORM bdc_dynpro USING 'SAPMV45A' '0251'. PERFORM bdc_field USING 'RV45A-POSNR' gt_data-posnr. PERFORM bdc_field USING 'BDC_OKCODE' '=POSI'. PERFORM bdc_dynpro USING 'SAPMV45A' '4008'. PERFORM bdc_field USING 'RV45A-VBAP_SELKZ(01)' 'X'. PERFORM bdc_field USING 'BDC_OKCODE' '=ITEM'. PERFORM bdc_dynpro USING 'SAPMV45A' '4003'. PERFORM bdc_field USING 'BDC_OKCODE' '=T\11'. PERFORM bdc_dynpro USING 'SAPMV45A' '4003'. PERFORM bdc_field USING 'BDC_OKCODE' '/EBACK'. PERFORM bdc_dynpro USING 'SAPMV45A' '4008'. PERFORM bdc_field USING 'BDC_OKCODE' '=SICH'. IF gv_option-dismode EQ space. gv_option-dismode = l_mode. ENDIF. gv_option-updmode = 'S'. gv_option-racommit = 'X'. gv_option-cattmode = ''. gv_option-nobinpt = 'X'. CALL TRANSACTION 'VA02' USING bdcdata OPTIONS FROM gv_option MESSAGES INTO messtab. LOOP AT messtab WHERE msgtyp = 'E' OR msgtyp = 'A'. MESSAGE ID messtab-msgid TYPE messtab-msgtyp NUMBER messtab-msgnr INTO l_msg WITH messtab-msgv1 messtab-msgv2 messtab-msgv3 messtab-msgv4. l_msg = l_msg && ';'. gt_data-mess = gt_data-mess && l_msg. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form BDC_DYNPRO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->PROGRAM text * -->DYNPRO text *----------------------------------------------------------------------* FORM bdc_dynpro USING program dynpro. CLEAR bdcdata. bdcdata-program = program. bdcdata-dynpro = dynpro. bdcdata-dynbegin = 'X'. APPEND bdcdata. ENDFORM. "BDC_DYNPRO *&---------------------------------------------------------------------* *& Form BDC_FIELD *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->FNAM text * -->FVAL text *----------------------------------------------------------------------* FORM bdc_field USING fnam fval. CLEAR bdcdata. bdcdata-fnam = fnam. bdcdata-fval = fval. APPEND bdcdata. ENDFORM. "BDC_FIELD
下一篇: 没有了