PERFORM frm_set_default_value USING 'CK11N' .
PERFORM frm_dynpro USING 'SAPLCKDI' '4610' 'X'.
PERFORM frm_dynpro USING '' 'BDC_OKCODE' '/00'.
PERFORM frm_dynpro USING '' 'CKI64A-WERKS' p_werks .
PERFORM frm_dynpro USING '' 'CKI64A-MATNR' s_matnr-low .
PERFORM frm_dynpro USING '' 'CKI64A-TVERS' '1' .
PERFORM frm_dynpro USING '' 'CKI64A-KLVAR' 'ZPC1' .
PERFORM frm_dynpro USING 'SAPLCKDI' '4610' 'X'.
PERFORM frm_dynpro USING '' 'BDC_OKCODE' '=SAVE'.
PERFORM frm_bdc CHANGING gw_mes-ztype gw_mes-msg .
FORM frm_set_default_value USING i_tcode TYPE any .
FREE : lt_bdcdata, lt_bdcmsg,ls_bdcparams ,ls_tcode.
MOVE i_tcode TO ls_tcode .
MOVE ‘N’ TO ls_bdcparams-dismode .
MOVE ‘S’ TO ls_bdcparams-updmode .
- L_BDCPARAMS-DISMODE = ‘N’. " 处理方式(A:显示所有屏幕 E:显示错误 N:后台的处理 P:Background processing; debugging possible)
- L_BDCPARAMS-UPDMODE = ‘L’. " 更新模式(L:本地的 S:同步 A:异步的)
- L_BDCPARAMS-CATTMODE = ’ '. " CATT session(空:No CATT N:CATT without individual screen control A:CATT with individual screen control)
- L_BDCPARAMS-DEFSIZE = ‘X’. " 缺省屏幕大小(空:NO X:YES)
- L_BDCPARAMS-RACOMMIT = ‘X’. " COMMIT 是不完全的(空:NO X:YES)
- L_BDCPARAMS-NOBINPT = ‘X’. " 非批输入(空:NO X:YES)
ENDFORM. " FRM_SET_DEFAULT_VALUE
FORM frm_dynpro USING parameters1 TYPE any
parameters2 TYPE any
parameters3 .
DATA ls_bdcdata TYPE bdcdata .
IF parameters1 IS NOT INITIAL .
MOVE : parameters1 TO ls_bdcdata-program ,
parameters2 TO ls_bdcdata-dynpro ,
parameters3 TO ls_bdcdata-dynbegin .
ELSE .
MOVE : parameters2 TO ls_bdcdata-fnam ,
parameters3 TO ls_bdcdata-fval .
CONDENSE ls_bdcdata-fnam NO-GAPS.
CONDENSE ls_bdcdata-fval NO-GAPS.
ENDIF .
APPEND ls_bdcdata TO lt_bdcdata .
CLEAR ls_bdcdata .
ENDFORM. " FRM_DYNPRO
FORM frm_bdc CHANGING i_type TYPE clike
i_message TYPE any .
DATA ls_bdcmsg TYPE bdcmsgcoll .
CALL TRANSACTION ls_tcode USING lt_bdcdata
OPTIONS FROM ls_bdcparams
MESSAGES INTO lt_bdcmsg .
DELETE lt_bdcmsg WHERE msgid EQ ‘00’ AND msgnr EQ ‘001’ .
LOOP AT lt_bdcmsg INTO ls_bdcmsg WHERE msgtyp CA ‘EA’.
MOVE ‘E’ TO i_type .
PERFORM frm_bdcmsg USING ls_bdcmsg CHANGING i_message .
ENDLOOP .
IF i_type IS INITIAL .
LOOP AT lt_bdcmsg INTO ls_bdcmsg WHERE msgtyp EQ ‘S’.
MOVE ‘S’ TO i_type .
PERFORM frm_bdcmsg USING ls_bdcmsg CHANGING i_message .
ENDLOOP .
ENDIF .
ENDFORM. " FRM_BDC