fix: create 命令 --package 透传修复——args.package 此前全库 0 引用,DDIC 对象一律静默落 $TMP;_create_ddic 补 package 参数传递,实测 create 直落 ZINT 包成功(B1 试点 FS-201 全量 DDIC 依赖此修复落地)

This commit is contained in:
吴让宇
2026-09-14 07:30:53 +08:00
parent f9d08774fd
commit 43037e2379
2 changed files with 14 additions and 10 deletions
+11 -8
View File
@@ -924,7 +924,8 @@ def cmd_create(args: argparse.Namespace, client: ADTClient) -> None:
return
if obj_type in DDIC_TYPES:
_create_ddic(args, client, obj_type, name, description, corr_nr, definition_file)
package = getattr(args, "package", None) or "$TMP"
_create_ddic(args, client, obj_type, name, description, corr_nr, definition_file, package)
return
if source_file:
@@ -936,8 +937,9 @@ def cmd_create(args: argparse.Namespace, client: ADTClient) -> None:
print(f"\n → 正在创建对象...")
try:
package = getattr(args, "package", None) or "$TMP"
created_uri, created_src_uri = client.create_object(
obj_type, name, description, corr_nr, source
obj_type, name, description, corr_nr, source, package
)
except Exception as e:
print(f" ✗ 创建失败: {e}")
@@ -1016,6 +1018,7 @@ def _create_ddic(
description: str,
corr_nr: str | None,
definition_file: str | None,
package: str = "$TMP",
) -> None:
"""创建 DDIC 对象(domain/dataelement/table/structure/tabletype)。"""
from sapcli.ddic import (
@@ -1043,7 +1046,7 @@ def _create_ddic(
lowercase=data.get("lowercase", False),
fix_values=data.get("fix_values", []),
)
definition_body = defn.to_xml(name.upper(), description)
definition_body = defn.to_xml(name.upper(), description, package)
elif obj_type == "dataelement":
defn = DataElementDefinition(
datatype=data.get("datatype", "CHAR"),
@@ -1051,7 +1054,7 @@ def _create_ddic(
decimals=data.get("decimals", 0),
domain_name=data.get("domain_name", ""),
)
definition_body = defn.to_xml(name.upper(), description)
definition_body = defn.to_xml(name.upper(), description, package)
elif obj_type == "table":
fields = [
TableField(
@@ -1091,15 +1094,15 @@ def _create_ddic(
key_type=data.get("key_type", "#USER_DEFINED"),
access_mode=data.get("access_mode", "#STANDARD"),
)
definition_body = defn.to_xml(name.upper(), description)
definition_body = defn.to_xml(name.upper(), description, package)
if definition_body is None:
if obj_type == "domain":
defn = DomainDefinition()
definition_body = defn.to_xml(name.upper(), description)
definition_body = defn.to_xml(name.upper(), description, package)
elif obj_type == "dataelement":
defn = DataElementDefinition()
definition_body = defn.to_xml(name.upper(), description)
definition_body = defn.to_xml(name.upper(), description, package)
elif obj_type == "table":
defn = TableDefinition(fields=[
TableField(name="key_field", type_name="char10", not_null=True),
@@ -1117,7 +1120,7 @@ def _create_ddic(
print(f"\n → 正在创建 DDIC 对象...")
try:
created_uri, created_src_uri = client.create_ddic_object(
obj_type, name, definition_body, corr_nr
obj_type, name, definition_body, corr_nr, package
)
except Exception as e:
print(f" ✗ 创建失败: {e}")