fix: create 命令 --package 透传修复——args.package 此前全库 0 引用,DDIC 对象一律静默落 $TMP;_create_ddic 补 package 参数传递,实测 create 直落 ZINT 包成功(B1 试点 FS-201 全量 DDIC 依赖此修复落地)
This commit is contained in:
@@ -341,6 +341,7 @@ class DdicMixin:
|
|||||||
name: str,
|
name: str,
|
||||||
definition_body: str,
|
definition_body: str,
|
||||||
corr_nr: str | None = None,
|
corr_nr: str | None = None,
|
||||||
|
package: str = "$TMP",
|
||||||
) -> tuple[str, str | None]:
|
) -> tuple[str, str | None]:
|
||||||
config = get_type_config(obj_type)
|
config = get_type_config(obj_type)
|
||||||
obj_uri = config.format_obj_uri(name.lower())
|
obj_uri = config.format_obj_uri(name.lower())
|
||||||
@@ -350,7 +351,7 @@ class DdicMixin:
|
|||||||
# 先 POST 集合端点创建对象实体,再 PUT 写入 DDL 定义。
|
# 先 POST 集合端点创建对象实体,再 PUT 写入 DDL 定义。
|
||||||
# 之前直接 _put_ddl_source,PUT 到尚未创建的对象 /source/main 返回 405。
|
# 之前直接 _put_ddl_source,PUT 到尚未创建的对象 /source/main 返回 405。
|
||||||
obj_name = name.upper()
|
obj_name = name.upper()
|
||||||
body = self._build_create_body(obj_type, obj_name, obj_name)
|
body = self._build_create_body(obj_type, obj_name, obj_name, package)
|
||||||
collection_url = config.collection_uri
|
collection_url = config.collection_uri
|
||||||
params: dict[str, str] = {}
|
params: dict[str, str] = {}
|
||||||
if corr_nr:
|
if corr_nr:
|
||||||
@@ -375,7 +376,7 @@ class DdicMixin:
|
|||||||
self._put_ddl_source(src_uri, definition_body, "", corr_nr)
|
self._put_ddl_source(src_uri, definition_body, "", corr_nr)
|
||||||
else:
|
else:
|
||||||
obj_name = name.upper()
|
obj_name = name.upper()
|
||||||
body = self._build_create_body(obj_type, obj_name, obj_name)
|
body = self._build_create_body(obj_type, obj_name, obj_name, package)
|
||||||
collection_url = config.collection_uri
|
collection_url = config.collection_uri
|
||||||
params: dict[str, str] = {}
|
params: dict[str, str] = {}
|
||||||
if corr_nr:
|
if corr_nr:
|
||||||
|
|||||||
@@ -924,7 +924,8 @@ def cmd_create(args: argparse.Namespace, client: ADTClient) -> None:
|
|||||||
return
|
return
|
||||||
|
|
||||||
if obj_type in DDIC_TYPES:
|
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
|
return
|
||||||
|
|
||||||
if source_file:
|
if source_file:
|
||||||
@@ -936,8 +937,9 @@ def cmd_create(args: argparse.Namespace, client: ADTClient) -> None:
|
|||||||
|
|
||||||
print(f"\n → 正在创建对象...")
|
print(f"\n → 正在创建对象...")
|
||||||
try:
|
try:
|
||||||
|
package = getattr(args, "package", None) or "$TMP"
|
||||||
created_uri, created_src_uri = client.create_object(
|
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:
|
except Exception as e:
|
||||||
print(f" ✗ 创建失败: {e}")
|
print(f" ✗ 创建失败: {e}")
|
||||||
@@ -1016,6 +1018,7 @@ def _create_ddic(
|
|||||||
description: str,
|
description: str,
|
||||||
corr_nr: str | None,
|
corr_nr: str | None,
|
||||||
definition_file: str | None,
|
definition_file: str | None,
|
||||||
|
package: str = "$TMP",
|
||||||
) -> None:
|
) -> None:
|
||||||
"""创建 DDIC 对象(domain/dataelement/table/structure/tabletype)。"""
|
"""创建 DDIC 对象(domain/dataelement/table/structure/tabletype)。"""
|
||||||
from sapcli.ddic import (
|
from sapcli.ddic import (
|
||||||
@@ -1043,7 +1046,7 @@ def _create_ddic(
|
|||||||
lowercase=data.get("lowercase", False),
|
lowercase=data.get("lowercase", False),
|
||||||
fix_values=data.get("fix_values", []),
|
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":
|
elif obj_type == "dataelement":
|
||||||
defn = DataElementDefinition(
|
defn = DataElementDefinition(
|
||||||
datatype=data.get("datatype", "CHAR"),
|
datatype=data.get("datatype", "CHAR"),
|
||||||
@@ -1051,7 +1054,7 @@ def _create_ddic(
|
|||||||
decimals=data.get("decimals", 0),
|
decimals=data.get("decimals", 0),
|
||||||
domain_name=data.get("domain_name", ""),
|
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":
|
elif obj_type == "table":
|
||||||
fields = [
|
fields = [
|
||||||
TableField(
|
TableField(
|
||||||
@@ -1091,15 +1094,15 @@ def _create_ddic(
|
|||||||
key_type=data.get("key_type", "#USER_DEFINED"),
|
key_type=data.get("key_type", "#USER_DEFINED"),
|
||||||
access_mode=data.get("access_mode", "#STANDARD"),
|
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 definition_body is None:
|
||||||
if obj_type == "domain":
|
if obj_type == "domain":
|
||||||
defn = DomainDefinition()
|
defn = DomainDefinition()
|
||||||
definition_body = defn.to_xml(name.upper(), description)
|
definition_body = defn.to_xml(name.upper(), description, package)
|
||||||
elif obj_type == "dataelement":
|
elif obj_type == "dataelement":
|
||||||
defn = DataElementDefinition()
|
defn = DataElementDefinition()
|
||||||
definition_body = defn.to_xml(name.upper(), description)
|
definition_body = defn.to_xml(name.upper(), description, package)
|
||||||
elif obj_type == "table":
|
elif obj_type == "table":
|
||||||
defn = TableDefinition(fields=[
|
defn = TableDefinition(fields=[
|
||||||
TableField(name="key_field", type_name="char10", not_null=True),
|
TableField(name="key_field", type_name="char10", not_null=True),
|
||||||
@@ -1117,7 +1120,7 @@ def _create_ddic(
|
|||||||
print(f"\n → 正在创建 DDIC 对象...")
|
print(f"\n → 正在创建 DDIC 对象...")
|
||||||
try:
|
try:
|
||||||
created_uri, created_src_uri = client.create_ddic_object(
|
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:
|
except Exception as e:
|
||||||
print(f" ✗ 创建失败: {e}")
|
print(f" ✗ 创建失败: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user