Application Development 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: 

AT USER-COMMAND IN NORMAL REPORT

Former Member
0 Kudos

Please do not have your subject in ALL CAPITALS

Hi Experts,

Please advice,

I am having three fields in output first one is directly fetched from table and other two are variables.

ITAB-MENGE = fetched data.

ITAB-UCOMM = user command.

AT SELECTION-SCREEN OUTPUT

when the user press ENTER

ITAB-SUM = ITAB-MENGE + ITAB-UCOMM.

For eq:

Suppose if:

ITAB-MENGE = 100

and if the user enters the value in ITAB-UCOMM = 200

and when the user press enter the sum should display on the other field ITAB-SUM

Note: I am using normal write statement ( not ALV ) & I am not using any parameters in selection screen all these has to fired on output screen

Thanks

R.Karthik

Edited by: Karthik R on Feb 28, 2009 3:34 PM

Edited by: Matt on Mar 1, 2009 7:18 PM

1 ACCEPTED SOLUTION

I355602
Advisor
Advisor
0 Kudos

Hi,

Refer code:-


REPORT  Z19TG7_1 NO STANDARD PAGE HEADING.

TABLES : LFA1.

TYPES : BEGIN OF VENDOR,
        LIFNR LIKE LFA1-LIFNR,
        NAME1 LIKE LFA1-NAME1,
        END OF VENDOR,

        BEGIN OF VENDOR1,
        LIFNR LIKE LFA1-LIFNR,
        NAME1 LIKE LFA1-NAME1,
        ORT01 LIKE LFA1-ORT01,
        LAND1 LIKE LFA1-LAND1,
        BUKRS LIKE LFB1-BUKRS,
        END OF VENDOR1.

DATA : VENDOR_TAB TYPE STANDARD TABLE OF VENDOR INITIAL SIZE 20 WITH HEADER LINE,
       VENDOR1_TAB TYPE STANDARD TABLE OF VENDOR1 INITIAL SIZE 20 WITH HEADER LINE,
       CB.
*       WAS_USED.

TOP-OF-PAGE DURING LINE-SELECTION.
  WRITE SY-LSIND.

START-OF-SELECTION.

  SET PF-STATUS 'Z19TG7_1_PF'.

  SELECT LIFNR NAME1
  FROM LFA1
  INTO TABLE VENDOR_TAB.

AT USER-COMMAND.

  CASE SY-UCOMM.

    WHEN 'VL'.

      IF SY-LSIND = 1.

        SET PF-STATUS SPACE.

        DO.

          CLEAR CB.

          READ LINE SY-INDEX FIELD VALUE CB.

          IF SY-SUBRC <> 0.
            EXIT.
          ELSE.

            CHECK CB = 'X'.

            MODIFY CURRENT LINE : FIELD VALUE CB FROM SPACE.

            SELECT A~LIFNR A~NAME1 A~ORT01 A~LAND1 B~BUKRS
            FROM LFA1 AS A
            LEFT OUTER JOIN LFB1 AS B
            ON A~LIFNR = B~LIFNR
            INTO TABLE VENDOR1_TAB
            WHERE A~LIFNR = VENDOR_TAB-LIFNR.

            LOOP AT VENDOR1_TAB.

              WRITE : / 'Vendor ID:' NO-GAP, VENDOR1_TAB-LIFNR,
                      / 'Vendor Name :' NO-GAP, VENDOR1_TAB-NAME1,
                      / 'City :' NO-GAP, VENDOR1_TAB-ORT01,
                      / 'Land :' NO-GAP, VENDOR1_TAB-LAND1,
                      / 'Country Code :' NO-GAP, VENDOR1_TAB-BUKRS.

              ULINE.

            ENDLOOP.

          ENDIF.

        ENDDO.

      ENDIF.

  ENDCASE.

END-OF-SELECTION.

  WRITE : /1 'CB', 5 TEXT-001, 18 TEXT-002.
  ULINE.

  LOOP AT VENDOR_TAB.

    WRITE : /1 CB AS CHECKBOX, 5 VENDOR_TAB-LIFNR, 18 VENDOR_TAB-NAME1.

    HIDE : VENDOR_TAB-LIFNR.

  ENDLOOP.

  ULINE.

Hope this helps you.

Regards,

Tarun

11 REPLIES 11

faisal_altaf2
Active Contributor
0 Kudos

Hi, Karthik,

Please Past your Code for better understanding it is not clear what you want and where the user entering the Value ?

May be the following Code will help you to solve out your problem,

DATA: BEGIN OF it OCCURS 10,
  menge TYPE i,
  ucomm TYPE i,
  sum TYPE i,
  END OF it.

SELECT-OPTIONS soucomm FOR it-ucomm NO-EXTENSION NO INTERVALS.
it-menge = 10.
DO 5 TIMES.
  APPEND it TO it.
  ADD 10 TO : it-menge.
ENDDO.

LOOP AT it INTO it.
  it-ucomm = soucomm-low.
  it-sum = it-menge + it-ucomm.
  MODIFY it FROM it INDEX sy-tabix.
  WRITE: / it-menge, it-ucomm , it-sum.
ENDLOOP.

INITIALIZATION.

  soucomm-low = 200.
  APPEND soucomm TO soucomm.

Kind Regards,

Faisal

0 Kudos

Hi Faisal,

Thanks for your post, but it does'nt meet my requirement.

As I cannot use ucomm in select-options.

In my output one field will be in edit-mode( with no data in it ) and another field is menge.

When the user enters some value in the field which in edit-mode ( in out-put / report ) and then press

enter the sum of menge and the value manully entered by the user should display in another field( with on data ).

I have not done this report in ALV but in normal report.

Please advice.

Karthik

0 Kudos

Hi,

it is not possible to catch ENTER event in the list. The only way you can use is to create a hotspot and then catch this click. Check out the code below (taken from standard SAP help):


DATA: input_field TYPE c LENGTH 100,
      line_num TYPE i.

START-OF-SELECTION.
  WRITE 'Input text:'.
  SET BLANK LINES ON.
  FORMAT INPUT.
  WRITE / input_field.
  FORMAT INPUT OFF.
  WRITE / '>>> OK <<<' COLOR 5 HOTSPOT.

AT LINE-SELECTION.
  IF sy-lisel = '>>> OK <<<'.
    line_num = sy-lilli - 1.
    READ LINE line_num FIELD VALUE input_field.
    WRITE:   'The input was:',
           /  input_field.
  ENDIF.

Regards,

Karol

Edited by: Karol Seman on Mar 1, 2009 8:24 PM

0 Kudos

HI, Karthi,

Please Past your code if you can to get the appropriate answer.

Kind Regards,

Faisal

Former Member
0 Kudos

Hi,

Check this Code..

PARAMETERs:
   p_val1 TYPE i DEFAULT '100',
   p_val2 TYPE i,
   p_comm TYPE char4.


AT SELECTION-SCREEN OUTPUT.
  If p_comm Eq 'SUM'.
    p_val2 = p_val2 + p_val1.
  ENDIF.

Former Member
0 Kudos

Hi,

Note: I am using normal write statement ( not ALV ) & I am not using any parameters in selection screen all these has to fired on output screen

with the above note you mean to say that you dont have selection-screen in the program but you have input fields on the list...

Is this what you meant... by the above statement

Regards,

Siddarth

0 Kudos

Hi Sidharth,

No, I meant that I am not using any parameter for ucomm.

Thanks

Karthik

0 Kudos

Hi, Karthik

Please Test My Sample Code int the following Thread Hope will solve out your problem,

[Sample Code for you|;

Please Reply if any Issue,

Kind Regards,

Faisal

matt
Active Contributor
0 Kudos

Please do not have your subject in ALL CAPITALS

Former Member
0 Kudos

At first create the pf status in start-of -selection evenmt.

SET PF-STATUS 'PF_SUM' EXCLUDING p_rt_extab.

(where p_rt_extab TYPE slis_t_extab) and declare the function code for enter (ENT) in that pf status.

then,

AT USER-COMMAND.

case SY-UCOMM.

when 'ENT'.

result = num1 + num2.

endcase.

regards,

Nilay.

I355602
Advisor
Advisor
0 Kudos

Hi,

Refer code:-


REPORT  Z19TG7_1 NO STANDARD PAGE HEADING.

TABLES : LFA1.

TYPES : BEGIN OF VENDOR,
        LIFNR LIKE LFA1-LIFNR,
        NAME1 LIKE LFA1-NAME1,
        END OF VENDOR,

        BEGIN OF VENDOR1,
        LIFNR LIKE LFA1-LIFNR,
        NAME1 LIKE LFA1-NAME1,
        ORT01 LIKE LFA1-ORT01,
        LAND1 LIKE LFA1-LAND1,
        BUKRS LIKE LFB1-BUKRS,
        END OF VENDOR1.

DATA : VENDOR_TAB TYPE STANDARD TABLE OF VENDOR INITIAL SIZE 20 WITH HEADER LINE,
       VENDOR1_TAB TYPE STANDARD TABLE OF VENDOR1 INITIAL SIZE 20 WITH HEADER LINE,
       CB.
*       WAS_USED.

TOP-OF-PAGE DURING LINE-SELECTION.
  WRITE SY-LSIND.

START-OF-SELECTION.

  SET PF-STATUS 'Z19TG7_1_PF'.

  SELECT LIFNR NAME1
  FROM LFA1
  INTO TABLE VENDOR_TAB.

AT USER-COMMAND.

  CASE SY-UCOMM.

    WHEN 'VL'.

      IF SY-LSIND = 1.

        SET PF-STATUS SPACE.

        DO.

          CLEAR CB.

          READ LINE SY-INDEX FIELD VALUE CB.

          IF SY-SUBRC <> 0.
            EXIT.
          ELSE.

            CHECK CB = 'X'.

            MODIFY CURRENT LINE : FIELD VALUE CB FROM SPACE.

            SELECT A~LIFNR A~NAME1 A~ORT01 A~LAND1 B~BUKRS
            FROM LFA1 AS A
            LEFT OUTER JOIN LFB1 AS B
            ON A~LIFNR = B~LIFNR
            INTO TABLE VENDOR1_TAB
            WHERE A~LIFNR = VENDOR_TAB-LIFNR.

            LOOP AT VENDOR1_TAB.

              WRITE : / 'Vendor ID:' NO-GAP, VENDOR1_TAB-LIFNR,
                      / 'Vendor Name :' NO-GAP, VENDOR1_TAB-NAME1,
                      / 'City :' NO-GAP, VENDOR1_TAB-ORT01,
                      / 'Land :' NO-GAP, VENDOR1_TAB-LAND1,
                      / 'Country Code :' NO-GAP, VENDOR1_TAB-BUKRS.

              ULINE.

            ENDLOOP.

          ENDIF.

        ENDDO.

      ENDIF.

  ENDCASE.

END-OF-SELECTION.

  WRITE : /1 'CB', 5 TEXT-001, 18 TEXT-002.
  ULINE.

  LOOP AT VENDOR_TAB.

    WRITE : /1 CB AS CHECKBOX, 5 VENDOR_TAB-LIFNR, 18 VENDOR_TAB-NAME1.

    HIDE : VENDOR_TAB-LIFNR.

  ENDLOOP.

  ULINE.

Hope this helps you.

Regards,

Tarun