Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Problem with Call Transaction

Former Member
0 Likes
1,853

Hi, I have looked through the posts and have not seen this question or answer. I have a custom ALV report with a hotspot that calls transaction FBL3N. I am calling it passing bdcdata for all of the options on the selection screen. It brings up the list for FBL3N just fine. But when the user clicks on a drill down on that report, the screen goes back to my custom report. Therefore the user can not drill down into FBL3N.

Here is how I am calling the transaction:

CALL TRANSACTION 'FBL3N' USING bdctab MODE 'E'

MESSAGES INTO t_mess.

Am I missing something or is this standard?

I also tried calling this from the FM ABAP4_CALL_TRANSACTION STARTING NEW TASK 'GLTEST' and had the same results. It would open the transaction in the new window but as soon as the I click the drill down the screen would disappear.

Mike

7 REPLIES 7
Read only

Former Member
0 Likes
1,365

Hi,

Since you are using mode E , may be there is no error raised when there is a call transaction made due to which it directly goes to the list.

Mode 'E' stops only when there is an error message raised otherwise the transaction is run at the backround.

better to use mode 'A' if you want the user to see the transaction

Regards,

Siddarth.

Read only

0 Likes
1,365

Thanks, I tried using 'A' but it shows the intial screen with the OK-Code of '\8' and I have to hit enter to get to the second screen.

Read only

Former Member
0 Likes
1,365

Hi,

Try using SUBMIT RFITEMGL as the program behind it is a report.

Please check the help for the SUBMIT statement on how to pass the parameters..

Ex..

SUBMIT RFITEMGL 
               AND RETURN.

Thanks

Naren

Read only

0 Likes
1,365

I will try this next. Will this allow the user to drill down into FBL3N?

Thanks

Mike

Read only

Former Member
0 Likes
1,365

Try using this.

DATA: i_rsparam TYPE TABLE OF rsparams.

SUBMIT rfitemgl

WITH SELECTION-TABLE i_rsparam

AND RETURN.

maintain the selection criteria in i_rsparam.

Read only

Former Member
0 Likes
1,365

It may not like it that you are using batch input. You could try setting NOBINPT in the option table.

Rob

Read only

Sougata
Active Contributor
0 Likes
1,365

Hi Michael,

I'm doing the same as you but no problems drilling down into FBL3N and coming back to my program. Here's my code


CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
    METHODS:
      on_link_click
        FOR EVENT link_click OF cl_salv_events_table
        IMPORTING row
                  column.
ENDCLASS.                    "lcl_handle_events DEFINITION

CLASS lcl_handle_events IMPLEMENTATION.
  METHOD on_link_click.
    PERFORM process_my_link_click USING row
                                        column.
  ENDMETHOD.                 "on_link_click
ENDCLASS.                    "lcl_handle_events IMPLEMENTATION

FORM process_my_link_click USING    pv_row    TYPE salv_de_row
                                    pv_column TYPE salv_de_column.
  FIELD-SYMBOLS: <ls_contr_det> TYPE ty_contr_det.

* Get the values for the selected report line.
  READ TABLE gt_contr_det ASSIGNING <ls_contr_det> INDEX pv_row.
  CHECK sy-subrc EQ 0.
  PERFORM call_transaction_fbl3n USING <ls_contr_det>-objectid.

ENDFORM.                    " process_my_link_click

FORM call_transaction_fbl3n USING pv_objectid    TYPE saknr.

  DATA: ls_bdcdata   TYPE bdcdata,
        lt_bdcdata   TYPE bdcdata_tab,
        ls_opt       TYPE ctu_params.         "<-----check this

  ls_bdcdata-program  = 'RFITEMGL'.
  ls_bdcdata-dynpro   = '1000'.
  ls_bdcdata-dynbegin = 'X'.
  APPEND ls_bdcdata TO lt_bdcdata.

  CLEAR ls_bdcdata.
  ls_bdcdata-fnam = 'BDC_CURSOR'.
  ls_bdcdata-fval = 'SD_SAKNR-LOW'.
  APPEND ls_bdcdata TO lt_bdcdata.

  CLEAR ls_bdcdata.
  ls_bdcdata-fnam = 'SD_SAKNR-LOW'.
  ls_bdcdata-fval = pv_objectid.
  APPEND ls_bdcdata TO lt_bdcdata.

  CLEAR ls_bdcdata.
  ls_bdcdata-fnam = 'SD_BUKRS-LOW'.
  ls_bdcdata-fval = gv_bukrs.
  APPEND ls_bdcdata TO lt_bdcdata.

  CLEAR ls_bdcdata.
  ls_bdcdata-fnam = 'X_OPSEL'.
  ls_bdcdata-fval = aba_true.
  APPEND ls_bdcdata TO lt_bdcdata.

  CLEAR ls_bdcdata.
  ls_bdcdata-fnam = 'PA_STIDA'.
  ls_bdcdata-fval = gv_date.
  APPEND ls_bdcdata TO lt_bdcdata.

  CLEAR ls_bdcdata.
  ls_bdcdata-fnam = 'BDC_OKCODE'.
  ls_bdcdata-fval = '=ONLI'.
  APPEND ls_bdcdata TO lt_bdcdata.

  ls_opt-dismode = 'E'.

  CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
    EXPORTING
      tcode  = 'FBL3N'
    EXCEPTIONS
      ok     = 0
      not_ok = 1
      OTHERS = 2.

  IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    CALL TRANSACTION 'FBL3N' USING lt_bdcdata OPTIONS FROM ls_opt.
  ENDIF.

ENDFORM.                    " CALL_TRANSACTION_FBL3N

Below is additional information on how I'm calling the SLV


FORM show_slv.

  IF gt_contr_det IS NOT INITIAL.
    IF go_container IS BOUND.
      CALL METHOD go_container->free
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 3.

      CREATE OBJECT go_container
        EXPORTING
          repid          = sy-repid
          dynnr          = '0100'
          container_name = 'CONTROL1'.
    ENDIF.

    TRY.
        cl_salv_table=>factory(
          EXPORTING
            r_container  = go_container
          IMPORTING
            r_salv_table = go_table
          CHANGING
            t_table      = gt_contr_det ).
      CATCH cx_salv_msg.
    ENDTRY.

    PERFORM: define_layout,
             define_layout_save_restriction,
             define_functions,
             define_events.

    go_table->display( ).
  ELSE.
    IF go_container IS BOUND AND go_table IS BOUND.
      CALL METHOD go_container->free
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 3.
    ENDIF.
  ENDIF.

ENDFORM.                    " SHOW_SLV

FORM define_events .

  DATA: lo_events TYPE REF TO cl_salv_events_table,
        lo_event_handler TYPE REF TO lcl_handle_events.

* register to the events of cl_salv_table
  lo_events = go_table->get_event( ).

* create object for handling the events of cl_salv_table
  CREATE OBJECT lo_event_handler.
* - register the event after link / hotspot click
  SET HANDLER lo_event_handler->on_link_click FOR lo_events.

ENDFORM.                    " DEFINE_EVENTS

This code is working and no issues with drilldown on FBL3N, can you look into what's missing in your code from this one? May be the option:


data: ls_opt  TYPE ctu_params.
.........
" then when calling the transaction, the OPTIONS parameter.....
CALL TRANSACTION 'FBL3N' USING lt_bdcdata OPTIONS FROM ls_opt.

I'm on ECC6.0.

Hope this helps,

Cheers,

Sougata.