修改SAP SCRIPT表单发件人地址 从公司代码0055取数该如何操作
解决方案
1. 修改位置选择
优先在驱动程序中修改,SAPscript表单仅负责数据渲染,数据获取逻辑放在驱动程序中更符合SAP开发规范,后续维护成本更低。仅当需要调整地址展示格式时,才需要修改表单。
2. 驱动程序修改步骤
你需要将原来的地址取数逻辑替换为直接取会计核算区域(公司代码)0055的地址,公司代码的地址存储在表T001的ADRNR字段中,参考修改代码如下:
DATA: lv_bukrs TYPE bukrs VALUE '0055', lv_adrnr TYPE adrnr. * 取公司代码0055对应的地址编号 SELECT SINGLE adrnr FROM t001 INTO lv_adrnr WHERE bukrs = lv_bukrs. IF sy-subrc = 0. CLEAR addr_selection. addr_selection-addrnumber = lv_adrnr. * 按地址编号获取完整地址信息 CALL FUNCTION 'ADDR_GET' EXPORTING address_selection = addr_selection address_group = ' ' IMPORTING sadr = zsdsadr EXCEPTIONS OTHERS = 1. IF sy-subrc NE 0. CLEAR zsdsadr. ELSE. SELECT SINGLE landk FROM t005 INTO zsdsadr-land1 WHERE land1 = zsdsadr-land1. ENDIF. ENDIF. vbdkl-sland = zsdsadr-land1. * 原代码中MOVE-CORRESPONDING zsdsadr TO zsdsadr为无效代码,可直接删除
3. 表单可选优化调整
你当前表单中地址行存在硬编码的, Germany,如果公司代码0055所属国家不是德国,需要删除该硬编码,替换为变量&ZSDSADR-LAND1&。
另外你表单中注释掉的ADDRESS...ENDADDRESS是SAPscript标准地址渲染语法,会自动匹配对应国家的地址展示规范,比手动拼接字段更可靠,可取消注释替换现有手动写的地址行,参考修改后表单代码:
SB <H5>Shipper:</> /: ADDRESS DELIVERY PARAGRAPH SB /: STREET &ZSDSADR-STRAS& /: POBOX &ZSDSADR-PFACH& CODE &ZSDSADR-PSTL2& CITY &ZSDSADR-PFORT& /: POSTCODE &ZSDSADR-PSTLZ& /: CITY &ZSDSADR-ORT01&, &ZSDSADR-ORT02& /: REGION &ZSDSADR-REGIO& /: COUNTRY &ZSDSADR-LAND1& /: FROMCOUNTRY &ZSDSADR-LAND1& /: ENDADDRESS /: INCLUDE ZVGF_TEL_ZET5 OBJECT TEXT ID ZVGF PARAGRAPH SB
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

