按:ZILOG是我开发的一个SAP
ABAP生态产品的接口日志平台,或者叫做接口快照和管理平台,很多时候用户不能完整的利用ZILOG提供的各种功能,只会简单的查询一下日志,很多提高工作效率的功能都不会用,所以今天特意写了一个使用说明。
小甲:老师,好久没有更新公众号了呀,忙啥呢?
老白:工作忙嘛,同时在完善月结平台和一键配置等,还有就是把ZILOG升级为ZILOG 2.0了!
小甲:ZILOG我知道啊,最好用的接口日志工具,没有之一!我见过好多咨询或者甲方公司都有自己的日志程序,但是不论是对接口的性能影响、查看日志的易用性和功能性、改造原有函数的难易程度等都跟ZILOG没法比呢!
老白:哈哈,你那还是初始版本的ZILOG,只能说是有一个日志的功能,升级后的版本完全重写,结构设计更加合理,加上了管理的功能,而且程序查询性能提升了很多~~~N倍!可以吊打所有你见过的接口日志平台,包括升级前的ZILOG。
小甲:这么牛叉?那我得看看,老师你给我演示演示?
老白:好呀,先看一下核心的查询功能。
查询界面还是保持了原来的风格,加了几个筛选字段,可以根据调用日期、账号、函数名、时间戳、消息类型等等查询,也可以进一步根据函数参数的具体内容查询
点击执行,出来接口调用的抬头数据,这个数据记录了接口或者说函数调用的日期、日志流水码、序号、时间戳、记录位置、用时、明细数据的大小、服务器、调用账号、调用终端、调用的场景、是否重复记录、返回的消息类型和消息文本。一个流水码就是一次函数调用,用序号标注这是本次调用的第几次记录,记录的位置和个数取决于程序代码,最多可以记录9次,一般来说呢,是函数开始记录一次,函数结束(或者跳出)记录一次,分别使用位置B和R表示。
小甲:老师,这个地方比起ZILOG 1.0来多了几个东西,流水码、数据大小、运行服务器这几个我能看出来是什么意思,那个“场景”和“重复记录”是啥意思?
老白:场景指的就是这个函数被调用的时候,它所在的运行环境,给你看下场景列表你就清楚了
小甲:哦,这个啊,那在分析问题或者统计接口调用的时候很有用啊!那那个“重复记录”呢?
老白:因为咱这个接口日志其实就是对函数的日志,有时候接口调用一次会执行多个函数呀,如果多个函数都启用了ZILOG记录,那么只有第一个执行的函数不是重复记录,后面再执行的函数就都算是重复记录了。还有就是,如果是在同一个程序循环执行某个函数,那么除了第一次,其他的也算是重复记录。
小甲:晓得晓得,老师你继续
老白:双击ALV的一行,就可以看到记录的明细数据了,比如我双击序号为1的一行,也就是传入数据
可以看到传入了日期和销售组织。
如果我双击序号2的那一行呢,可以看到接口返回的数据
小甲:真直观啊!延续了ZILOG最大的特点哈,数据查看直观且方便,这个也是ZILOG最牛的地方了,比起XML或者JSON展示好用太多了!
老白:是啊,作为一个日志或者说快照平台,ZILOG做的就是记录下函数的所有参数的值,比如函数开始传入的各个参数、函数中间的参数值、调用结束后函数传出的参数的值等,相当于给当时的函数的值照一张相,然后在查询的时候使用最友好的方式把这些记录的值展示出来。
小甲:晓得晓得,这些无关紧要的话就不要打这么多字了吧?
老白:不打字打你啊?
小甲:嘻嘻,我的意思是还有那么多功能没有介绍呢,要不我把我的疑问提出来老师挨个给我解答一下?如果有啥窍门呢也一起告诉我?
老白:那必须的,开发一款产品不就是希望使用者把所有的功能都能了解并使用吗?你开始吧!
小甲:首先呢,虽然目前使用的展示方式很直观,但是有时候我还是需要JSON格式的,比如我要把参数以JSON的格式给外部系统,让他们根据这些参数做调试,或者是有些参数是深层结构,也没法使用当前的展示方式。。。
老白:嗯,这个属于基操,你只需要这两个按钮
第一个按钮“JSON”,是展示所有的参数
如果想看单独一个参数的JSON呢,就把鼠标光标点到要看的参数上,然后点“单个参数JSON”,比如我只看参数IT_VKORG的JSON格式
小甲:NICE!相当的NICE啊!不仅以非常漂亮的格式展示了JSON,还能控制展开的层数!
老白:那必须的!这个地方借鉴了网上一个JSON转格式化HTML的代码,在此感谢一下

!
小甲:老师,要是这个参数本身就是JSON格式呢?再转一次JSON岂不是就没法用这么好看的格式了?比如下面这种
用你刚才的方法展示出来就是下面这样了,很不NICE啊
老白:这个时候你就需要点另一个按钮啦,有请“JSON变量”功能~
小甲:顶呱呱!老师顶呱呱!还有一个常用的功能,就是我想把接口传入的数据直接放到SE37函数的测试数据里面,因为有些函数的参数挨个录入数据太痛苦了,不堪回首啊
老白:那必须可以!你只需要轻轻点一下“SE37测试数据”,然后说一句芝麻开门~
小甲:这是一个能把人感动哭的功能 
老白:基操~基操~~
小甲:老师,最前面那几个上下左右图标按钮是干啥的?
老白:这几个按钮呢,是为了查看明细的时候不用返回到上一个界面就能更改不同的抬头行明细,第一个和第四个是分别对应ALV数据的上一行和下一行,至于中间两个呢,是更改同一次调用的不同序号,可以很方便的来回切换传入值和传出值
小甲:哦哦,那那个“复制参数值”,我感觉没啥用啊,直接在界面上用鼠标划一下不就复制了?
老白:那是很短的参数才可以直接在界面上划一下复制,要是这个参数是一个STRING类型的JSON串,是可以很长很长的哦,这个时候界面都没法显示完整,怎么复制呢?比如下面这个
是一个文本接近30M的一个庞然大物,本来这个“复制参数值”是复制到剪贴板的,对这种特长的字符串,剪贴板已经放不下了,只能下载到本地的临时文件夹,然后用记事本一类的软件自动打开。说到这儿安利一个很棒的文本文件编辑软件Emeditor,最好用的文本处理软件,没有之一!
小甲:老师考虑得太周到啦!那那个“Stack”是干啥的呢?
老白:这个呢,跟运行场景那个功能有点像,不过这个是详细的程序栈,记录了程序是怎么执行到这个函数的,你比如常见的有这么几种:
分别代表了RFC调用、前台执行、RESTful调用等场景,这个在解决问题的时候也是很有用的哦!
小甲:有点意思!如果是运维一个不怎么熟悉的系统,这个功能那是非常的有用啊。
老白:还行吧,大部分时候用不上这个功能,但是一旦用上,那就是很好用的一个功能。
小甲:老师,前面说到了把数据放到SE37的测试数据里面,但是有些公司不允许在PRD系统调试,需要到测试系统或者前置系统去调试,那怎么把数据填到里面呢?没有办法了吧?
老白:为师早就想到了,只要是先把ZILOG的数据下载下来,然后再上传到可以调试的系统,就可以在测试系统使用这个功能了。
怎么样?是不是特别细心特别周到呢?
小甲:牛牛牛!还得是老师你啊!还有一个问题啊,有些推送数据的接口,因为网络或者对方系统的原因,推送不成功,待恢复正常后需要再次推送,这个能不能不做重复推送程序而用ZILOG来做呢?也就是说我想批量执行ZILOG记录的一些数据,而不是一个一个的放到SE37测试数据执行。
老白:那必须可以,只要选中需要再次执行的记录,然后点“再次运行函数”就行了
小甲:我就知道肯定有办法的哈,现在这种功能我都已经感觉是理所应当了。。。老师现在还有一个运维中经常遇到的问题,比如突然发现今天接口有点问题,需要把几万接口调用的数据下载下来,这个怎么办呢?
老白:这个批量导出数据明细呢,有两个办法,一个是以ZILOG展示明细的方式导出,一个是以JSON的格式导出,还是以刚才的函数为例
“导出明细”功能会导出为:
跟ZILOG看到的是一样的,而导出JSON呢,会导出以下格式JSON文本,一行数据对应ALV的一行
小甲:如果我仅仅要导出自己需要的字段呢?比如我只要参数IT_VKORG的VKORG字段和参数REBATE_CUSTOMERMGROUP的KUNNR字段
老白:这两种方式都能只导出自己想要的参数,但是JSON导出还可以指定结构/内表的列,就如你这个需求,可以这样:
这样,导出来的文件里面就只有你需要的字段了,然后再使用Emeditor的功能把数据整理一下
怎么样?是不是很爽?
小甲: 
我以前都是挨个点开复制出来的。。。科技是第一生产力啊。。。我看还有一个FIND,看起来是查找,这个有啥作用呢?
老白:这个是根据参数的值来搜索数据的,比如我希望根据根据AEDAT_FROM来搜索数据,只要把鼠标光标定位到参数上,然后点“FIND”
程序就会自动把补充搜索部分填上,然后运算符和字符串可以根据需求填上,再执行,就可以把满足条件的数据搜出来了
小甲:
,I
get!至于明细里面的内表下载,和ALV查看功能我看不需要介绍了,就是普通的下载内表和ALV GRID方式查看内表呗?
老白:也不能说普通,尤其是这个下载功能,为了下载大内表还是做了不少工作滴,你分别使用SE16N和ZILOG导出一个50万数据的表就知道这个下载有多快了
小甲:反正是一切都做到了极致呗?
老白:确实是这样,因为我对程序的性能有很高的要求,高性能是我写代码的第一。。。
小甲:好啦好啦耳朵都听出来茧子啦!
老白:嘻嘻,其实这个查看界面还有一些很暖心的小功能,比如双击置顶行能跳转到函数SE37界面
...