获取有关报告可用参数的信息

时间:2018-11-01 14:16:59

标签: sap abap

我想获取有关报告的信息。我想知道如果我这样调用报告可以使用哪些值:

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是实现我目标的正确方法吗?

3 个答案:

答案 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库且必须传递相同的值时才使用它们。
  • 调用所需的API(在您的情况下为BAPI_XBP_READ_SELSCREEN)。请注意,有一个“外部用户”参数,它是一个自由字段,可以用作外部应用程序的标识符。此值与日志一起存储,以便您可以通过外部应用程序显示或检索XMI日志(事务RZ15)。
  • 致电BAPI_XMI_LOGOFF
  • 调用BAPI_TRANSACTION_COMMIT提交日志更改
  • 关闭RFC连接(如果XMI和API被远程调用)

答案 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不是外部用户,那么由于错误的外部用户,结果将为空。

致谢

乌马尔·阿卜杜拉