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

I need a help it's tracking wrongly..

Former Member
0 Likes
851

Hi,

I have create a program if i will give value for P_VKORG and select-options as vbeln for dynamic F4 but it tracking wrongly..please check the below codes.

*&---------------------------------------------------------------------*

*& Report  ZSHAN_DYN1

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  ZSHAN_DYN1.

tables: vbak.

types: begin of t_vbak,

       vbeln type vbak-vbeln,

       vkorg type vbak-vkorg,

       end of t_vbak.

*--------------------------------------------------------------*

*Data Declaration

*--------------------------------------------------------------*

data:it_vbak type table of t_vbak,

       wa_vbak type t_vbak,

       it_return type table of ddshretval,

       wa_return type ddshretval,

       it_dynpfields type table of dynpread,

       wa_dynpfields type dynpread.

*--------------------------------------------------------------*

*Selection-Screen

*--------------------------------------------------------------*

selection-screen: begin of block b1 with frame.

PARAMETERS: p_vkorg TYPE vbak-vkorg OBLIGATORY.

select-options: so_vbeln for vbak-vbeln.

selection-screen: end of block b1.

*--------------------------------------------------------------*

*Selection-Screen on Value-Request

*--------------------------------------------------------------*

AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_VBELN-LOW.

   REFRESH it_dynpfields.

   wa_dynpfields-fieldname = 'P_VKORG'.

   APPEND wa_dynpfields TO it_dynpfields.

*Get plant value on the selection screen

   CALL FUNCTION 'DYNP_VALUES_READ'

     EXPORTING

       dyname               = sy-repid

       dynumb               = sy-dynnr

     TABLES

       dynpfields           = it_dynpfields

     EXCEPTIONS

       invalid_abapworkarea = 1

       invalid_dynprofield  = 2

       invalid_dynproname   = 3

       invalid_dynpronummer = 4

       invalid_request      = 5

       no_fielddescription  = 6

       invalid_parameter    = 7

       undefind_error       = 8

       double_conversion    = 9

       stepl_not_found      = 10

       OTHERS               = 11.

   READ TABLE it_dynpfields INTO wa_dynpfields

          WITH KEY fieldname = 'P_VKORG'.

   IF sy-subrc = 0.

       wa_vbak-vbeln = wa_dynpfields-fieldvalue.

   ENDIF.

*Get values from the database based on plant

   SELECT vbeln

          vkorg

          UP TO 10 ROWS

          INTO TABLE it_vbak

          FROM vbak where vkorg eq p_vkorg and vbeln in so_vbeln.

   CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

     EXPORTING

       retfield        = 'VBELN'

       value_org       = 'S'

     TABLES

       value_tab       = it_vbak

       return_tab      = it_return

     EXCEPTIONS

       parameter_error = 1

       no_values_found = 2

       OTHERS          = 3.

   READ TABLE it_return INTO wa_return INDEX 1.

   IF sy-subrc = 0.

     so_vbeln = wa_return-fieldval.

   ENDIF.

6 REPLIES 6
Read only

paul_bakker2
Active Contributor
0 Likes
815

Hi,

So what exactly is the problem? What do you mean by 'tracking wrongly'? More info please.

cheers

Paul

Read only

arivazhagan_sivasamy
Active Contributor
0 Likes
815

Hi,

Please write a code below.

SELECT vbeln

           vkorg

           UP TO 10 ROWS

           INTO TABLE it_vbak

           FROM vbak where vkorg eq wa_dynpfields-fieldvalue and vbeln in so_vbeln.

P_VKORG value is getting clear here.

So pass value like above vkorg eq wa_dynpfields-fieldvalue.

Arivazhagan S

Read only

former_member186413
Participant
0 Likes
815

Hi ,

Why you use

   CALL FUNCTION 'DYNP_VALUES_READ' ?

Read only

sivaganesh_krishnan
Contributor
0 Likes
815

Hi shanmuga,

Just do some changes in statement after read .

READ TABLE it_dynpfields INTO wa_dynpfields

           WITH KEY fieldname = 'P_VKORG'.

    IF sy-subrc = 0.

       p_vkorg = wa_dynpfields-fieldvalue.

    ENDIF.

*Get values from the database based on plant

    SELECT vbeln

           vkorg

           UP TO 10 ROWS

           INTO TABLE it_vbak

           FROM vbak where vkorg eq p_vkorg and vbeln in so_vbeln.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

      EXPORTING

        retfield        = 'VBELN'

        value_org       = 'S'

      TABLES

        value_tab       = it_vbak

        return_tab      = it_return

      EXCEPTIONS

        parameter_error = 1

        no_values_found = 2

        OTHERS          = 3.

    READ TABLE it_return INTO wa_return INDEX 1.

    IF sy-subrc = 0.

      so_vbeln-low = wa_return-fieldval.

    ENDIF.

Regards,

Sivaganesh.

Read only

former_member209120
Active Contributor
0 Likes
815

Hi Shanmuga R

Try like this

TABLES: vbak.

TYPES: BEGIN OF t_vbak,
        vbeln TYPE vbak-vbeln,
        vkorg TYPE vbak-vkorg,
        END OF t_vbak.

*--------------------------------------------------------------*
*Data Declaration
*--------------------------------------------------------------*
DATA:it_vbak TYPE TABLE OF t_vbak,
      wa_vbak TYPE t_vbak,
      lt_dynp   TYPE TABLE OF dynpread,
      lt_return TYPE TABLE OF ddshretval.

FIELD-SYMBOLS: <fs_dynp>   TYPE dynpread,
                <fs_return> TYPE ddshretval.

*--------------------------------------------------------------*
*Selection-Screen
*--------------------------------------------------------------*
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_vkorg TYPE vbak-vkorg OBLIGATORY.
SELECT-OPTIONS: so_vbeln FOR vbak-vbeln.
SELECTION-SCREEN: END OF BLOCK b1.

*--------------------------------------------------------------*
*Selection-Screen on Value-Request
*--------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_vbeln-low.

* Fill parameters to get values
    APPEND INITIAL LINE TO lt_dynp ASSIGNING <fs_dynp>.
    <fs_dynp>-fieldname = 'P_VKORG'.


*Get plant value on the selection screen

   CALL FUNCTION 'DYNP_VALUES_READ'
     EXPORTING
       dyname               = sy-repid
       dynumb               = sy-dynnr
     TABLES
       dynpfields           = lt_dynp
     EXCEPTIONS
       invalid_abapworkarea = 1
       invalid_dynprofield  = 2
       invalid_dynproname   = 3
       invalid_dynpronummer = 4
       invalid_request      = 5
       no_fielddescription  = 6
       invalid_parameter    = 7
       undefind_error       = 8
       double_conversion    = 9
       stepl_not_found      = 10
       OTHERS               = 11.

   IF sy-subrc = 0.
     READ TABLE lt_dynp ASSIGNING <fs_dynp> WITH KEY fieldname = 'P_VKORG'.
   IF sy-subrc = 0.
    IF <fs_dynp>-fieldvalue IS NOT INITIAL.
*Get values from the database based on plant

   SELECT vbeln
          vkorg
          UP TO 10 ROWS
          INTO TABLE it_vbak
          FROM vbak WHERE vkorg EQ <fs_dynp>-fieldvalue.

    IF sy-subrc = 0.
* Show Help
            CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
              EXPORTING
               retfield         = 'VBELN'
                dynpprog         = sy-repid
                dynpnr           = sy-dynnr
                value_org        = 'S'
              TABLES
                value_tab        = it_vbak
                return_tab       = lt_return
              EXCEPTIONS
                parameter_error  = 1
               no_values_found  = 2
                others           = 3.

             IF sy-subrc = 0.
              READ TABLE lt_return ASSIGNING <fs_return> INDEX 1.
              IF sy-subrc = 0.
                so_vbeln-low = <fs_return>-fieldval.
              ENDIF.
            ENDIF.
          ELSE.
            MESSAGE s888(sabapdocu) WITH 'There is no Sales Document for  Sales Organization' <fs_dynp>-fieldvalue.

          ENDIF.

        ELSE.

          MESSAGE s888(sabapdocu) WITH 'Enter Sales Organization'.

        ENDIF.

      ENDIF.

    ENDIF.

  START-OF-SELECTION.

Read only

former_member226225
Contributor
0 Likes
815

Hi Shan,,

Instead of this Read Statement.

READ TABLE it_dynpfields INTO wa_dynpfields

          WITH KEY fieldname = 'P_VKORG'.

   IF sy-subrc = 0.

       wa_vbak-vbeln = wa_dynpfields-fieldvalue.

   ENDIF.

Chek this if it Works,

READ TABLE it_dynpfields INTO wa_dynpfields

          WITH KEY fieldname = 'P_VKORG'.

   IF sy-subrc = 0.

       wa_vbak-vkorg = wa_dynpfields-fieldvalue.

   ENDIF.

Thanks & Regards,

Raghunadh Kodali.