You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:36:04