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

Call transacton using bdcdata

0 Likes
1,112

Dear Experts,

In one of my programs I need to launch ‘LX02’ transaction and get back the stock level for the specific material (lv_matnr) in a specific warehouse (lv_lgnum) with a specific storage type (lv_ltkze).

First, I tried setting parameters and calling transaction with the skipping of the first screen:

SET PARAMETER ID: 
'LGN' FIELD lv_lgnum,
'LGT' FIELD lv_ltkze,
'MAT' FIELD lv_matnr.

CALL TRANSACTION 'LX02' AND SKIP FIRST SCREEN.

Result – LX02 returns stock levels for all materials on that specific warehouse with specified storage type, i.e. it ignores the parameter ‘MAT’.

Second, I tried submitting report with a selection table:

DATA: 
t_params TYPE TABLE OF rsparams,
wa_params TYPE rsparams.

          wa_params-selname = 'S1_LGNUM'.
          wa_params-kind    = 'S'.
          wa_params-sign    = 'I'.
          wa_params-option  = 'EQ'.
          wa_params-low     = lv_lgnum.
          wa_params-high     = lv_lgnum.
          APPEND wa_params TO t_params.
          CLEAR wa_params.

          wa_params-selname = 'S1_LGTYP'.
          wa_params-kind    = 'S'.
          wa_params-sign    = 'I'.
          wa_params-option  = 'EQ'.
          wa_params-low     = lv_ltkze.
          wa_params-high     = lv_ltkze.
          APPEND wa_params TO t_params.
          CLEAR wa_params.

          wa_params-selname = '%%DYN001'.
          wa_params-kind    = 'S'.
          wa_params-sign    = 'I'.
          wa_params-option  = 'EQ'.
          wa_params-low     = lv_matnr.
          wa_params-high     = lv_matnr.
          APPEND wa_params TO t_params.
          CLEAR wa_params.

SUBMIT rls10020 WITH SELECTION-TABLE t_params AND RETURN.

Result - LX02 returns stock levels for all materials on that specific warehouse with specified storage type, i.e. it turns blind eye on the value of material number.

Finally, now I try to call transaction using bdcdata:

DATA: 
it_bdcdata TYPE TABLE OF bdcdata,
wa_it_bdcdata LIKE LINE OF it_bdcdata


 “Start the transaction
  CLEAR wa_it_bdcdata.
  wa_it_bdcdata-program  = 'RLS10020'.
  wa_it_bdcdata-dynpro   = '1000'.
  wa_it_bdcdata-dynbegin = 'X'.
  APPEND wa_it_bdcdata  TO it_bdcdata.

“capture warehouse number field and fill it with value
  CLEAR wa_it_bdcdata.
  wa_it_bdcdata-fnam  = 'BDC_CURSOR'.
  wa_it_bdcdata-fval = 'S1_LGNUM'.
  APPEND wa_it_bdcdata  TO it_bdcdata.

  CLEAR wa_it_bdcdata.
  wa_it_bdcdata-fnam  = 'S1_LGNUM'.
  wa_it_bdcdata-fval = lv_lgnum.
  APPEND wa_it_bdcdata  TO it_bdcdata.

“capture storage type field and fill it with alue
  CLEAR wa_it_bdcdata.
  wa_it_bdcdata-fnam  = 'BDC_CURSOR'.
  wa_it_bdcdata-fval = 'S1_LGTYP-LOW'.
  APPEND wa_it_bdcdata  TO it_bdcdata.

  CLEAR wa_it_bdcdata.
  wa_it_bdcdata-fnam  = 'S1_LGTYP-LOW'.
  wa_it_bdcdata-fval = '702'.
  APPEND wa_it_bdcdata  TO it_bdcdata.

“imitate the click on the button “Dynamic selection@ (Shift + F4) (red rectangle #1)
  CLEAR wa_it_bdcdata.
  wa_it_bdcdata-fnam  = 'BDC_OKCODE'.
  wa_it_bdcdata-fval = '=DYNS'.
  APPEND wa_it_bdcdata  TO it_bdcdata.

  CLEAR wa_it_bdcdata.
  wa_it_bdcdata-program  = 'RLS10020'.
  wa_it_bdcdata-dynpro   = '1000'.
  wa_it_bdcdata-dynbegin = 'X'.
  APPEND wa_it_bdcdata  TO it_bdcdata.

“imitate the click on the “material” item in the “quants” window (red rectangle #2)
  CLEAR wa_it_bdcdata.
  wa_it_bdcdata-fnam  = 'BDC_OKCODE'.
  wa_it_bdcdata-fval = '=%_GC 145 25'.
  APPEND wa_it_bdcdata  TO it_bdcdata.

“capture material number field and fill it with value (red rectangle #3)
  CLEAR wa_it_bdcdata.
  wa_it_bdcdata-fnam  = 'BDC_CURSOR'.
  wa_it_bdcdata-fval = '%%DYN001-LOW'.
  APPEND wa_it_bdcdata  TO it_bdcdata.

  CLEAR wa_it_bdcdata.
  wa_it_bdcdata-fnam  = '%%DYN001-LOW'.
  wa_it_bdcdata-fval = lv_matnr.
  APPEND wa_it_bdcdata  TO it_bdcdata.

Result – nothing is returned at all.

Please may you help me with this issue? What is it that I am getting wrong?

1 ACCEPTED SOLUTION
Read only

RaymondGiuseppi
Active Contributor
910

Look in documentation of SUBMIT statement for the WITH FREE SELECTIONS option (Also read dynamic selections documentation)

2 REPLIES 2
Read only

RaymondGiuseppi
Active Contributor
911

Look in documentation of SUBMIT statement for the WITH FREE SELECTIONS option (Also read dynamic selections documentation)

Read only

0 Likes
910

The solution was to create own variant of transaction and save it. Then grab the okcode "/EGET" and "=DYNS". Below is the code snippet:

REPORT [zreport].

DATA: 
lv_lgnum TYPE lgnum,
lv_ltkze  TYPE mlgn_ltkze,
lv_matnr TYPE matnr.

DATA:
it_bdcdata TYPE TABLE OF bdcdata,
wa_it_bdcdata LIKE LINE OF it_bdcdata.

START-OF-SELECTION.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-program  = 'RLS10020'.
wa_it_bdcdata-dynpro   = '1000'.
wa_it_bdcdata-dynbegin = 'X'.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-fnam  = 'BDC_OKCODE'.
wa_it_bdcdata-fval = '/EGET'.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-program  = 'SAPMSSY0'.
wa_it_bdcdata-dynpro   = '0120'.
wa_it_bdcdata-dynbegin = 'X'.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-fnam  = 'BDC_CURSOR'.
wa_it_bdcdata-fval = '04/09'.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-fnam  = 'BDC_OKCODE'.
wa_it_bdcdata-fval = '=PICK'.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-program  = 'RLS10020'.
wa_it_bdcdata-dynpro   = '1000'.
wa_it_bdcdata-dynbegin = 'X'.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-fnam  = 'BDC_OKCODE'.
wa_it_bdcdata-fval = '=DYNS'.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-program  = 'RLS10020'.
wa_it_bdcdata-dynpro   = '1000'.
wa_it_bdcdata-dynbegin = 'X'.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-fnam  = 'BDC_CURSOR'.
wa_it_bdcdata-fval = '%%DYN001-LOW'.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-fnam  = '%%DYN001-LOW'.
wa_it_bdcdata-fval = lv_matnr.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-fnam  = 'S1_LGNUM'.
wa_it_bdcdata-fval = lv_lgnum.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-fnam  = 'S1_LGTYP-LOW'.
wa_it_bdcdata-fval = lv_ltkze.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-fnam  = 'S1_LGTYP-HIGH'.
wa_it_bdcdata-fval = lv_ltkze.
APPEND wa_it_bdcdata  TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-fnam  = 'BDC_OKCODE'.
wa_it_bdcdata-fval = 'ONLI'.
APPEND wa_it_bdcdata  TO it_bdcdata.

CALL TRANSACTION 'LX02' USING it_bdcdata MODE 'E'.