ABAP:ME21N状态栏添加自定义按钮
SE38:LMEGUICJL---->代码增强点
ENHANCEMENT 1 Z_SEND_PO_TO_OA. "active version IF im_fcode = 'OA'. DATA: ls_return TYPE zscomm03, lv_bsart TYPE ekko-bsart. DATA: lv_status TYPE zshr0004, ls_ekko TYPE ekko. CLEAR im_fcode. DATA: wa_ebeln TYPE ebeln. DATA: wa_bukrs TYPE bukrs. DATA: lv_flag. IF sy-tcode = 'ME21N'. GET PARAMETER ID 'BES' FIELD wa_ebeln. SELECT SINGLE bukrs INTO wa_bukrs FROM ekko WHERE ebeln = wa_ebeln. ELSE. DATA: field(50). FIELD-SYMBOLS: <dbcnt> TYPE any. field = '(SAPLMEGUI)MEPO_TOPLINE-EBELN'. ASSIGN (field) TO <dbcnt>. wa_ebeln = <dbcnt>. SELECT SINGLE bukrs INTO wa_bukrs FROM ekko WHERE ebeln = wa_ebeln. ENDIF. IF wa_ebeln IS INITIAL. IF sy-langu = 'E'. MESSAGE w001(00) WITH 'Po not found, please check the data!'DISPLAY LIKE 'W'. ELSE. MESSAGE w001(00) WITH '未找到PO,请检查数据!'DISPLAY LIKE 'W'. ENDIF. ENDIF. CHECK wa_ebeln IS NOT INITIAL. IF sy-mandt = '320' OR sy-mandt = '620' OR sy-mandt = '820'. SELECT SINGLE bsart FROM ekko INTO lv_bsart WHERE ebeln = wa_ebeln. IF lv_bsart = 'NB' OR lv_bsart = 'FNB' OR lv_bsart = 'ZNBS' OR lv_bsart = 'GDZC' OR lv_bsart = 'GXWX' OR lv_bsart = 'LXCG'. SELECT SINGLE * INTO ls_ekko FROM ekko WHERE ebeln = wa_ebeln. IF ls_ekko-frgzu IS NOT INITIAL AND ls_ekko-frggr = 'P1' AND ls_ekko-frgsx = 'P1'. MESSAGE '采购订单已审批,请勿发送OA' TYPE 'E'. ENDIF. CALL FUNCTION 'ZFMMM_PO_SEND' EXPORTING iv_ifid = '003' iv_ebeln = wa_ebeln IMPORTING es_return = ls_return. IF ls_return-type <> 'W'. lv_status-code = ls_return-type. lv_status-message = ls_return-message. ENDIF. ENDIF. ELSE. DATA: lr_bukrs TYPE RANGE OF bukrs, ls_bukrs LIKE LINE OF lr_bukrs, lr_ebeln TYPE RANGE OF ebeln, ls_ebeln LIKE LINE OF lr_ebeln. CLEAR:lr_bukrs[],lr_bukrs,ls_bukrs,lr_ebeln[],lr_ebeln,ls_ebeln. ls_bukrs-sign = 'I'. ls_bukrs-option = 'EQ'. ls_bukrs-low = wa_bukrs. APPEND ls_bukrs TO lr_bukrs. ls_ebeln-sign = 'I'. ls_ebeln-option = 'EQ'. ls_ebeln-low = wa_ebeln. APPEND ls_ebeln TO lr_ebeln. EXPORT oa_flag = 'X' TO MEMORY ID zpo_send_oa_memory_id=>oa_flag. SUBMIT zmmi0004 WITH s_bukrs IN lr_bukrs WITH s_ebeln IN lr_ebeln AND RETURN. IMPORT oa_return TO lv_status FROM MEMORY ID zpo_send_oa_memory_id=>oa_stauts. FREE MEMORY ID zpo_send_oa_memory_id=>oa_stauts. ENDIF. IF lv_status-code = 'E'. MESSAGE s001(00) WITH lv_status-message DISPLAY LIKE 'W'. ELSEIF lv_status-code = 'S'. IF sy-langu = 'E'. MESSAGE s001(00) WITH 'Po sent OA successfully!'DISPLAY LIKE 'S'. ELSE. MESSAGE s001(00) WITH 'PO 发送 OA 成功!'DISPLAY LIKE 'S'. ENDIF. ELSE. DATA l_ekko LIKE ekko. CLEAR l_ekko. SELECT SINGLE * INTO l_ekko FROM ekko WHERE ebeln = wa_ebeln. IF l_ekko-frgzu IS NOT INITIAL AND l_ekko-frggr = 'P1' AND l_ekko-frgsx = 'P1'. IF sy-langu = 'E'. MESSAGE s001(00) WITH 'Po has been sent to OA, no need to re execute!'DISPLAY LIKE 'S'. ELSE. MESSAGE s001(00) WITH 'PO已经发送 OA,不需要重新执行!'DISPLAY LIKE 'S'. ENDIF. ELSEIF l_ekko-frgzu IS INITIAL. IF sy-langu = 'E'. MESSAGE s001(00) WITH 'Po does not need to be sent to OA for approval!'DISPLAY LIKE 'S'. ELSE. MESSAGE s001(00) WITH 'PO不需要发送OA审批!'DISPLAY LIKE 'S'. ENDIF. ELSE. IF sy-langu = 'E'. MESSAGE s001(00) WITH 'The Po has been approved and does not need to be sent to OA for approval!'DISPLAY LIKE 'S'. ELSE. MESSAGE s001(00) WITH 'PO已经审批通过,不需要发送OA审批!'DISPLAY LIKE 'S'. ENDIF. ENDIF. ENDIF. ENDIF. ENDENHANCEMENT.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示