cancel
Showing results for 
Search instead for 
Did you mean: 

smartform query

Former Member
0 Kudos

Hello,

currently i'm modifying a program use for printing receipt. The display is in REUSE_ALV_LIST_DISPLAY.

I create s pf-status 'BADZ' so i can trigger the smartform. But my problem is when i click the 'Print' button that I add

it skip the AT USER-COMMEND.

please help me...

thank you...

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hai use Like this:

CASE COMMAND.
    WHEN '&IC1'.

      SET PF-STATUS 'ZCHECK'.           "Firstly Set PF Status here*


      SELECT * FROM ZSD_TEN_ITM_bd INTO TABLE iSD_TEN_ITM_bd
                                      WHERE tno EQ wa_VSDTENDER-tno
                                        and tyr EQ wa_VSDTENDER-tyr
                                        and posnr eq wa_VSDTENDER-posnr.

      if sy-subrc eq 0.
        perform build_fieldcatalog1.
        perform build_settings.
*       Perform t_eventcat.
        call function 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            i_callback_program = sy-repid
            is_layout          = i_settings
            I_CALLBACK_PF_STATUS_SET = 'ZCHECK'
            i_grid_title       = 'Bidders Detail Acc.To Tender No.'
            IT_EVENTS          = T_EVENTCAT
            it_fieldcat        = i_fieldcat1
          TABLES
            t_outtab           = ISD_TEN_ITM_bd.
      endif.
  endcase.

Former Member
0 Kudos

Hi,

In order for the user command to trigger you need to maintain an entry for teh USER-COMMAND event in the it_events internal talbe before you pass it to the reuse_alv--FM, YOu have to populate the same as below:

DATA : L_WA_EVENTS TYPE SLIS_ALV_EVENT. "For events CLEAR L_WA_EVENTS. L_WA_EVENTS-NAME = USER_COMMAND. L_WA_EVENTS-FORM = 'USER_COMMAND;. APPEND L_WA_EVENTS TO I_EVENTS_PART.

Regards,

Himanshu

Former Member
0 Kudos

hello,,,

this is what i did.

START-OF-SELECTION.

GET PERNR.

PERFORM VALIDATE_DATES.

PERFORM GET_DATA.

END-OF-SELECTION.

PERFORM SET_PF_STATUS.

PERFORM ALV_DISP

AT USER-COMMAND.

IF SY-UCOMM = 'PRINT'.

IF P_CTYP EQ 'SL' OR P_CTYP EQ 'SC' OR P_CTYP EQ 'SH' OR

P_CTYP EQ 'PM' OR P_CTYP EQ 'PH'.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'ZHRPYHPHRSBR0_V1'

IMPORTING

FM_NAME = FNAME.

IF SY-SUBRC <> 0.

ENDIF.

CALL FUNCTION FNAME

EXPORTING

OUTPUT_OPTIONS = GS_SSFCOMPOP

S_TEXT1 = S_TEXT1.

IF SY-SUBRC <> 0.

ENDIF.

ENDIF.

ENDIF.

&----


*& Form SET_PF_STATUS

&----


FORM SET_PF_STATUS.

SET PF-STATUS 'BADZ'.

ENDFORM. " SET_PF_STATUS

&----


*& Form ALV_DISP

&----


FORM ALV_DISP .

DATA: BEGIN OF LT_OUTTAB3 OCCURS 0,

PERNR(8) TYPE C,

RMNTH(10) TYPE C,

RYEAR(4) TYPE C,

ISSDATE LIKE SY-DATUM,

RECEIPT(10) TYPE C,

TOTAL(12) TYPE C,

END OF LT_OUTTAB3.

DATA: LT_OUTTAB TYPE STANDARD TABLE OF HPHRSBR0_ALV1 WITH HEADER LINE.

DATA: LT_OUTTAB2 TYPE STANDARD TABLE OF ZHPHRSBR0_ALV1 WITH HEADER LINE.

CONSTANTS LC_STRUCTURE_NAME TYPE DD02L-TABNAME VALUE 'HPHRSBR0_ALV1'.

CONSTANTS LC_STRUCTURE_NAME2 TYPE DD02L-TABNAME VALUE 'ZHPHRSBR0_ALV1'.

CONSTANTS LC_STRUCTURE_NAME3 TYPE DD02L-TABNAME VALUE 'ZHPHRSBR0_ALV2'.

CLEAR GS_OUTTAB.

GS_LAYOUT-LIST_APPEND = 'Y'.

GS_LAYOUT-MIN_LINESIZE = '100'.

GS_LAYOUT-MAX_LINESIZE = '100'.

IF P_CTYP EQ 'SS'.

PERFORM FIELDCATLOG_BUILD USING LC_STRUCTURE_NAME2

CHANGING GT_FIELDCAT .

*------getting data into local internal table

LOOP AT GT_OUTTAB INTO GS_OUTTAB .

GV_TABIX = SY-TABIX.

APPEND GS_OUTTAB TO LT_OUTTAB2.

AT END OF PERNR.

GV_PERNR = GS_OUTTAB-PERNR.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_PF_STATUS_SET = 'BADZ'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IS_LAYOUT = GS_LAYOUT

IT_FIELDCAT = GT_FIELDCAT

IT_EVENTS = GT_EVENTS

TABLES

T_OUTTAB = LT_OUTTAB2

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

EXIT.

ENDAT.

ENDLOOP.

ENDIF.

**When I try to execute the "PRINT" during debugging mode it skip the AT USER-COMMAND.

please help....

Edited by: Bernadette6184 on Aug 17, 2009 9:49 AM

Edited by: Bernadette6184 on Aug 17, 2009 9:53 AM

Former Member
0 Kudos

Hai

For displaying ALV list you use REUSE_ALV_LIST_DISPLAY function its OK.

Now in Function you are using this

I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'

For next Purpose like for smartform output

This is what you are calling user_command subroutine Now Do like this.

FORM USER_COMMAND USING COMMAND LIKE SY-UCOMM SELFIELD TYPE SLIS_SELFIELD.
CASE COMMAND.
    WHEN '&IC1'.

  IF P_CTYP EQ 'SL'
       OR P_CTYP EQ 'SC'
       OR P_CTYP EQ 'SH'
       OR P_CTYP EQ 'PM'
       OR P_CTYP EQ 'PH'.

      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
       EXPORTING
          FORMNAME = 'ZHRPYHPHRSBR0_V1'
      IMPORTING
         FM_NAME = W_FNAME.

      IF SY-SUBRC eq 0.
      ENDIF.

      CALL FUNCTION W_FNAME
        EXPORTING
          OUTPUT_OPTIONS = GS_SSFCOMPOP
          S_TEXT1        = S_TEXT1.
      IF SY-SUBRC eq 0.
         ENDIF.
endif.
endcase.
endform "USER_COMMAND

I hope it will work.

Answers (0)