我想获取有关报告的信息。我想知道如果我这样调用报告可以使用哪些值:
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.
但是结果总是空的。
我在做什么错? BAPI_XBP_READ_SELSCREEN
是实现我目标的正确方法吗?
答案 0 :(得分:1)
这是有关“为什么BAPI_XBP_READ_SELSCREEN
不起作用”的答案,而不是有关“如何检索选择屏幕参数”这一主要问题的答案。
我不确定,但是我猜BAPI_XBP_READ_SELSCREEN
不起作用,因为您没有应用XBP的通常逻辑。
XBP(“外部后台处理”)是用于从外部调度程序中调度作业的API库。它基于其他API所使用的XMI(“外部管理接口”框架),并且提供了常见功能,尤其是日志。
XMI和基于XMI的应用程序均支持RFC,因此可以远程调用它们。
要使用基于XMI的API,最低要求为:
BAPI_XMI_LOGON
打开一个会话,以使用您要使用的API库。对于XBP,请使用参数INTERFACE ='XBP'和VERSION ='3.0'(或所需的版本)。参数EXTCOMPANY和EXTPRODUCT可以是任何值,仅当在同一会话期间使用了不同的XMI API库且必须传递相同的值时才使用它们。BAPI_XBP_READ_SELSCREEN
)。请注意,有一个“外部用户”参数,它是一个自由字段,可以用作外部应用程序的标识符。此值与日志一起存储,以便您可以通过外部应用程序显示或检索XMI日志(事务RZ15)。BAPI_XMI_LOGOFF
BAPI_TRANSACTION_COMMIT
提交日志更改答案 1 :(得分:1)
我刚刚使用以下程序成功测试了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.
答案 2 :(得分:0)
请检查用户名“ foo”。如果foo不是外部用户,那么由于错误的外部用户,结果将为空。
致谢
乌马尔·阿卜杜拉