CONVERSION_EXIT_ALPHA_INPUT

本文介绍了一种在数字编号前自动添加0的方法,适用于财务科目查询及凭证编号转换等场景。通过该方法,可以确保查询程序能正确处理较短的数字编号。
功能:
给输入的数字编号添加前置 0,以便让查询程序正确处理。多数用在财务科目的查询,对于各种凭证编号和物料号,如果查询无法获得所需结果,也可以考虑尝试用此函数进行转换。

输入参数:
INPUT:不限制类型,必须输入。原始编号。
输出参数:
OUTPUT:日期类型。计算出的结果。

测试结果:
如果 INPUT 输入为纯数字(就是只有 0~9 之间的字符),结果就是前置很多 0 的数字。
如果 INPUT 输入不为纯数字(就是包含 0~9 之外的字符),结果就跟输入值一样。

疑问:
在把值返回给程序中的数据字段时,会自动根据字段长度剔除前置的 0,这是如何做到的。  
"Z25 SELECT SINGLE * INTO @DATA(ls_matdoc_z25) FROM matdoc WHERE xblnr = @iv_mtsnr AND bwart = 'Z25'. IF ls_matdoc_z25 IS INITIAL. CLEAR :ls_goodsmvt_header,ls_goodsmvt_code,lt_goodsmvt_item,lt_return. ls_goodsmvt_header-pstng_date = sy-datum."po_budat."物料凭证过帐日期 ls_goodsmvt_header-doc_date = iv_bldat."物料凭证创建日期. ls_goodsmvt_header-ref_doc_no = iv_mtsnr."OA流程号 ls_goodsmvt_header-header_txt = iv_bktxt."凭证抬头文本 * LS_GOODSMVT_HEADER-PR_UNAME = SY-UNAME."用户 ls_goodsmvt_code-gm_code = '03'. "对应MB1A LOOP AT t_data_input. CLEAR ls_goodsmvt_item. IF t_data_input-menge = 0. CONTINUE. ENDIF. READ TABLE lt_mara INTO DATA(ls_mara_z25) WITH KEY matnr = t_data_input-matnr BINARY SEARCH. IF sy-subrc = 0. ls_goodsmvt_item-entry_uom = ls_mara_z25-meins. ENDIF. CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT' "物料加前导零 EXPORTING input = t_data_input-matnr IMPORTING output = t_data_input-matnr. ls_goodsmvt_item-material = t_data_input-matnr. ls_goodsmvt_item-entry_qnt = t_data_input-menge. "数量 ls_goodsmvt_item-plant = t_data_input-werks. "工厂 ls_goodsmvt_item-stge_loc = t_data_input-lgort. "库存地 ls_goodsmvt_item-costcenter = t_data_input-kostl. "成本中心 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = ls_goodsmvt_item-costcenter IMPORTING output = ls_goodsmvt_item-costcenter . ls_goodsmvt_item-move_type = 'Z25'. "移动类型 ls_goodsmvt_item-batch = t_data_input-charg. "批次 ls_goodsmvt_item-serialno_auto_numberassignment = 'X'. APPEND ls_goodsmvt_item TO lt_goodsmvt_item. ENDLOOP. IF lt_goodsmvt_item IS NOT INITIAL. CLEAR lt_return. CALL FUNCTION 'BAPI_GOODSMVT_CREATE' "调用BAPI领料过账 EXPORTING goodsmvt_header = ls_goodsmvt_header "抬头数据 goodsmvt_code = ls_goodsmvt_code IMPORTING materialdocument = materialdocument "凭证号 matdocumentyear = matdocumentyear TABLES goodsmvt_item = lt_goodsmvt_item "明细数据 return = lt_return. "返回消息 LOOP AT lt_return INTO ls_return WHERE type = 'E' OR type = 'A'. e_message = e_message && ls_return-message. ENDLOOP. IF sy-subrc = 0. e_status = 'E'. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. CLEAR: ev_mblnr_ch,ev_mjahr_ch. ev_mblnr_ch = materialdocument. ev_mjahr_ch = matdocumentyear. e_message = TEXT-026. e_status = 'S'. "记录申请人和过账人账号 CLEAR: ls_ztmm009,lt_ztmm009. ls_ztmm009-mblnr = ev_mblnr_ch. ls_ztmm009-mjahr = ev_mjahr_ch. ls_ztmm009-usnam = iv_usnam."申请人账号 ls_ztmm009-name_text = iv_usnam_post."仓库过账人账号 ls_ztmm009-bktxt = iv_bktxt. APPEND ls_ztmm009 TO lt_ztmm009. MODIFY ztmm009 FROM TABLE lt_ztmm009. ENDIF. ENDIF. ELSE. ev_mblnr_ch = ls_matdoc_z25-mblnr. ev_mjahr_ch = ls_matdoc_z25-mjahr. e_message = '执行成功!'. e_status = 'S'. ENDIF. 解释一下
最新发布
11-21
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值