该示例主要用于做增强字段的修改,其他标准字段增加对应结构即可
DATA: lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE, lt_ext TYPE STANDARD TABLE OF bapiparex WITH HEADER LINE, lt_extx TYPE STANDARD TABLE OF bapiparex WITH HEADER LINE, ls_headerx TYPE bapisdh1x, ls_header_ex TYPE zssale_header_ex. DATA: l_msg(220), l_string TYPE string, l_valuepart1(240), l_field(20). FIELD-SYMBOLS: <fs_alv> TYPE typ_alv, <fs_field> TYPE any. DATA: lt_alv TYPE STANDARD TABLE OF typ_alv WITH HEADER LINE. lt_alv[] = gt_alv[]. DELETE lt_alv WHERE sel = ''. IF lt_alv[] IS INITIAL. MESSAGE '请选择需要修改的行!' TYPE 'S' DISPLAY LIKE 'E'. EXIT. ENDIF. LOOP AT lt_alv. IF lt_alv-type = 'E'. lt_alv-msg = '该数据仍存在错误信息,请修正后再导入!' && lt_alv-msg. ELSE. CLEAR: lt_return[],lt_return,lt_ext[],lt_ext,lt_extx[],lt_extx, ls_header_ex,lt_alv-msg. ls_header_ex-vbeln = lt_alv-vbeln. ls_header_ex-zqhz = lt_alv-zqhz. lt_ext-structure = 'ZSSALE_HEADER_EX'. lt_ext-valuepart1 = ls_header_ex. APPEND lt_ext. CLEAR: ls_header_ex,lt_ext. * ls_bape_vbakx-vbeln = lt_alv-vbeln. * ls_bape_vbakx-zqhz = 'X'. * lt_extx-structure = 'BAPE_VBAKX'. * lt_extx-valuepart1 = ls_bape_vbakx. * APPEND lt_extx. * CLEAR: ls_bape_vbakx,lt_extx. ls_headerx-updateflag = 'U'. CALL FUNCTION 'BAPI_SALESORDER_CHANGE' EXPORTING salesdocument = lt_alv-vbeln order_header_inx = ls_headerx TABLES return = lt_return[] extensionin = lt_ext[] * extensionex = lt_extx[] . LOOP AT lt_return WHERE type CA 'EAX'. CALL FUNCTION 'MESSAGE_TEXT_BUILD' EXPORTING msgid = lt_return-id msgnr = lt_return-number msgv1 = lt_return-message_v1 msgv2 = lt_return-message_v2 msgv3 = lt_return-message_v3 msgv4 = lt_return-message_v4 IMPORTING message_text_output = l_msg. lt_alv-msg = lt_alv-msg && l_msg && ';'. ENDLOOP. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. lt_alv-type = 'E'. lt_alv-sicon = c_red. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. lt_alv-type = 'S'. lt_alv-sicon = c_green. lt_alv-msg = '修改成功!'. ENDIF. ENDIF. LOOP AT gt_alv ASSIGNING <fs_alv> WHERE vbeln = lt_alv-vbeln AND sel = 'X'. <fs_alv>-type = lt_alv-type. <fs_alv>-sicon = lt_alv-sicon. <fs_alv>-msg = lt_alv-msg. ENDLOOP.
使用增强字段还需要在如下结构中增加对应的增强字段
之后在BADI ES_BADI_SD_SALES_BAPI 方法 MOVE_EXTENSIONIN 下增加如下代码
DATA: ls_header_ex TYPE zssale_header_ex, ls_ext TYPE bapiparex. "抬头 READ TABLE it_extensionin INTO ls_ext WITH KEY structure = 'ZSSALE_HEADER_EX'. IF sy-subrc = 0. ls_header_ex = ls_ext-valuepart1. IF ls_header_ex-zzlj IS NOT INITIAL. cs_vbakkom-zzlj = ls_header_ex-zzlj. cs_vbakkomx-zzlj = 'X'. ENDIF. IF ls_header_ex-zqhz IS NOT INITIAL. cs_vbakkom-zqhz = ls_header_ex-zqhz. cs_vbakkomx-zqhz = 'X'. ENDIF. ENDIF.
上一篇: 物料主数据相关权限...