【SAP自动化】(2)状态栏消息处理

该代码实现了一个用于处理和解析SAP状态栏消息的工具类。包括`SapMessageType`枚举,`SapStatusMessage`类用于存储消息信息,以及`SapStatusBar`类用于从SAP会话中获取消息。通过`get_message`静态方法,可以从指定的状态栏中提取消息类型、消息文本、ID、编号等详细信息。此外,还定义了`SapMessages`类来标识特定消息的参数含义。

点下面,不迷路

前言

为了方便,SAP状态栏消息处理,创建实用类。

代码实现


class SapMessageType(enum.Enum):
    SUCCESS = "S"
    WARNING = "W"
    ERROR = "E"
    ABORT = "A"
    INFORMATION = "I"


class SapStatusMessage:
    def __init__(self, message_as_popup, message_type, message_text, message_id, message_number, message_parameters):
        self.message_as_popup = message_as_popup
        self.message_type = SapMessageType(message_type)
        self.message_text = message_text
        self.message_id = message_id
        self.message_number = message_number
        self.message_parameters = message_parameters


class SapStatusBar:

    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, 'instance'):
            cls.instance = super().__new__(cls, *args, **kwargs)
        return cls.instance

    @staticmethod
    def get_message(session, status_bar):
        message = None
        if session and status_bar:
            try:
                bar = session.findById(status_bar)
                message_type = bar.MessageType.strip()
                if message_type:
                    message_as_popup = bar.MessageAsPopup
                    message_text = bar.Text.strip()
                    message_id = bar.MessageId.strip()
                    message_number = bar.MessageNumber.strip()
                    parameters = SAP_MESSAGES.get(message_id + message_number, [str(i) for i in range(8)])
                    message_parameters = {name: bar.MessageParameter(i).strip() for i, name in enumerate(parameters)}
                    message = SapStatusMessage(
                        message_as_popup, message_type, message_text,
                        message_id, message_number, message_parameters
                    )
            except Exception as _:
                pass
        return message


# 标识SAP的消息信息,提取需要的数据。
#
# 名称: [ID][NUMBER]
# 对应的参数含义。
SAP_MESSAGES = {
    'F5149': ('date',)
}


class SapMessages:
    """
    标识SAP的消息信息,提取需要的数据。

    名称: [ID][NUMBER]
    对应的参数含义。
    """
    F5149 = ('date')

以上代码仅提供了一种处理消息方式,请酌情参考使用。
仅供参考,如有帮助不胜荣幸,请关注,点赞。
如需转载请注明出处。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值