Abap 通过XBP获取有关报表可用参数的信息
我想了解有关报告的信息。如果我这样调用报告,我想知道哪些值可用:Abap 通过XBP获取有关报表可用参数的信息,abap,Abap,我想了解有关报告的信息。如果我这样调用报告,我想知道哪些值可用: SUBMIT (IV_REPORT_NAME) WITH SELECTION-TABLE selection_table AND RETURN. 以下是我的尝试: FUNCTION /FOO/GET_REPORT_INFO. *"---------------------------------------------------------------------- *"*"Lokale Schnittstelle:
SUBMIT (IV_REPORT_NAME)
WITH SELECTION-TABLE selection_table
AND RETURN.
以下是我的尝试:
FUNCTION /FOO/GET_REPORT_INFO.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(IV_REPORT_NAME) TYPE PROGRAMM
*" EXPORTING
*" VALUE(EV_RESULT_JSON) TYPE STRING
*"----------------------------------------------------------------------
DATA:
ld_return TYPE BAPIRET2,
it_selscreen_info TYPE STANDARD TABLE OF BAPI_SELSCREEN_INFO,"TABLES PARAM
wa_selscreen_info LIKE LINE OF it_selscreen_info,
it_selscreen_texts TYPE STANDARD TABLE OF TEXTPOOL,"TABLES PARAM
wa_selscreen_texts LIKE LINE OF it_selscreen_texts,
ld_external_user_name TYPE BAPIXMLOGR-EXTUSER.
ld_external_user_name = 'foo'.
CALL FUNCTION 'BAPI_XBP_READ_SELSCREEN'
EXPORTING
program = IV_REPORT_NAME
external_user_name = ld_external_user_name
IMPORTING
return = ld_return
TABLES
selscreen_info = it_selscreen_info
.
ev_result_json = /ui2/cl_json=>serialize( data = it_selscreen_info pretty_name = /ui2/cl_json=>pretty_mode-low_case ).
IF sy-subrc <> 0.
MESSAGE |Error sy-subrc: { sy-subrc }| TYPE 'E'.
ENDIF.
ENDFUNCTION.
FUNCTION/FOO/GET\u REPORT\u INFO。
*"----------------------------------------------------------------------
*“*”Lokale Schnittstelle:
*“进口
*“值(IV_报告_名称)类型程序
*“出口
*“值(EV_结果_JSON)类型字符串
*"----------------------------------------------------------------------
数据:
ld_返回类型BAPIRET2,
it_selscreen_info类型BAPI_selscreen_info的标准表格,“表格参数
wa_selscreen_信息,如it_selscreen_信息行,
它是文本池的文本类型标准表,“表参数”
wa_selscreen_文本,如it_selscreen_文本行,
ld_外部_用户名类型BAPIXMLOGR-EXTUSER。
ld_外部_用户名='foo'。
调用函数“BAPI\u XBP\u READ\u SELSCREEN”
出口
程序=IV\u报告\u名称
外部用户名称=ld\u外部用户名称
进口
return=ld\u return
桌子
selscreen\u info=it\u selscreen\u info
.
ev_result_json=/ui2/cl_json=>serialize(data=it\u selscreen\u info pretty\u name=/ui2/cl_json=>pretty\u mode-low\u case)。
如果sy subrc为0。
消息|错误sy subrc:{sy subrc}|类型为“E”。
恩迪夫。
ENDFUNCTION。
但结果总是空的
我做错了什么?BAPI\u XBP\u READ\u SELSCREEN
是实现我目标的正确方法吗?请检查用户名“foo”。如果foo不是外部用户,那么由于外部用户错误,结果将为空
问候,
Umar Abdullah请检查用户名“foo”。如果foo不是外部用户,那么由于外部用户错误,结果将为空
问候,
Umar Abdullah这是一个关于“为什么BAPI\u XBP\u READ\u SELSCREEN
不起作用”的答案,而不是关于“如何检索选择屏幕参数”这一主要问题的答案
我不确定,但我猜BAPI\u XBP\u READ\u SELSCREEN
不起作用,因为您没有应用XBP的常规逻辑
XBP(“外部后台处理”)是一个API库,用于从外部调度器调度作业。它基于其他API使用的XMI(“外部管理接口”框架),它提供了常见的特性,尤其是日志
XMI和基于XMI的应用程序支持RFC,因此可以远程调用它们
要使用基于XMI的API,最低要求是:
- 调用函数模块
打开一个会话以使用您想要使用的API库。对于XBP,使用参数接口='XBP'和版本='3.0'(或您想要的版本)。EXTCOMPANY和EXTPRODUCT参数可以是任何值,它们仅在同一会话期间使用不同的XMI API库时使用,必须传递相同的值BAPI\u XMI\u LOGON
- 调用所需的API(
)。注意,有一个“外部用户”参数,它是一个自由字段,是外部应用程序的标识符。该值与日志一起存储,以便您可以通过外部应用程序(事务RZ15)显示或检索XMI日志BAPI\u XBP\u READ\u SELSCREEN
- 呼叫
BAPI\u XMI\u注销
- 调用
提交日志更改BAPI\u TRANSACTION\u COMMIT
- 关闭RFC连接(如果远程调用了XMI和API)
BAPI\u XBP\u READ\u SELSCREEN
不起作用”的答案,而不是关于“如何检索选择屏幕参数”这一主要问题的答案
我不确定,但我猜BAPI\u XBP\u READ\u SELSCREEN
不起作用,因为您没有应用XBP的常规逻辑
XBP(“外部后台处理”)是一个API库,用于从外部调度器调度作业。它基于其他API使用的XMI(“外部管理接口”框架),它提供了常见的特性,尤其是日志
XMI和基于XMI的应用程序支持RFC,因此可以远程调用它们
要使用基于XMI的API,最低要求是:
- 调用函数模块
打开一个会话以使用您想要使用的API库。对于XBP,使用参数接口='XBP'和版本='3.0'(或您想要的版本)。EXTCOMPANY和EXTPRODUCT参数可以是任何值,它们仅在同一会话期间使用不同的XMI API库时使用,必须传递相同的值BAPI\u XMI\u LOGON
- 调用所需的API(
)。注意,有一个“外部用户”参数,它是一个自由字段,是外部应用程序的标识符。该值与日志一起存储,以便您可以通过外部应用程序(事务RZ15)显示或检索XMI日志BAPI\u XBP\u READ\u SELSCREEN
- 呼叫
BAPI\u XMI\u注销
- 调用
提交日志更改BAPI\u TRANSACTION\u COMMIT
- 关闭RFC连接(如果远程调用了XMI和API)
DATA rfcdest TYPE rfcdest.
rfcdest = ''. " XBP is well suited for RFC, but this test doesn't need remote call.
CALL FUNCTION 'BAPI_XMI_LOGON'
DESTINATION rfcdest
EXPORTING
extcompany = 'ABAPERS&CO'
extproduct = 'NICEJOBSCHEDULER'
interface = 'XBP'
version = '3.0'.
DATA: selscreen_info TYPE STANDARD TABLE OF bapi_selscreen_info,
selscreen_texts TYPE STANDARD TABLE OF textpool.
CALL FUNCTION 'BAPI_XBP_READ_SELSCREEN'
DESTINATION rfcdest
EXPORTING
program = 'BTCAUX10'
external_user_name = 'SRO'
sel_text_lang = 'E' " English
TABLES
selscreen_info = selscreen_info
selscreen_texts = selscreen_texts.
CALL FUNCTION 'BAPI_XMI_LOGOFF'
DESTINATION rfcdest.
IF rfcdest IS NOT INITIAL. " if you use RFC, close the connection!
CALL FUNCTION 'RFC_CONNECTION_CLOSE'
EXPORTING
destination = rfcdest
EXCEPTIONS
destination_not_open = 1
OTHERS = 2.
ENDIF.
我刚刚用下面的程序成功地测试了BAPI_XBP_READ_SELSCREEN(请处理异常),因此我认为使用它是一个好主意:
DATA rfcdest TYPE rfcdest.
rfcdest = ''. " XBP is well suited for RFC, but this test doesn't need remote call.
CALL FUNCTION 'BAPI_XMI_LOGON'
DESTINATION rfcdest
EXPORTING
extcompany = 'ABAPERS&CO'
extproduct = 'NICEJOBSCHEDULER'
interface = 'XBP'
version = '3.0'.
DATA: selscreen_info TYPE STANDARD TABLE OF bapi_selscreen_info,
selscreen_texts TYPE STANDARD TABLE OF textpool.
CALL FUNCTION 'BAPI_XBP_READ_SELSCREEN'
DESTINATION rfcdest
EXPORTING
program = 'BTCAUX10'
external_user_name = 'SRO'
sel_text_lang = 'E' " English
TABLES
selscreen_info = selscreen_info
selscreen_texts = selscreen_texts.
CALL FUNCTION 'BAPI_XMI_LOGOFF'
DESTINATION rfcdest.
IF rfcdest IS NOT INITIAL. " if you use RFC, close the connection!
CALL FUNCTION 'RFC_CONNECTION_CLOSE'
EXPORTING
destination = rfcdest
EXCEPTIONS
destination_not_open = 1
OTHERS = 2.
ENDIF.
我很不确定外部用户名是什么意思。我试图使用SY-UNAME,但失败了。你知道为什么需要这个参数吗?@guettli我不知道
BAPI\u XBP\u READ\u SELSCREEN
但我知道XBP(“外部后台处理”)。它是用于从外部调度器调度作业的API。它基于其他API使用的XMI(“外部管理接口”框架),它提供了常见的特性,尤其是日志。在XMI中,“外部用户”是一个自由字段,是用户的标识符