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

module pool programming

Former Member
0 Likes
659

hey,

i have 2 screens in which for the same field i need to display F4 help thru

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'.

how do i modularize my code ?

currently in screen 100, under PAI i have

FIELD KUNNR MODULE XXXX.

and in a separate include i have

MODULE XXXX INPUT.

endmodule..

i need a similar code for screen 200, but i dont want to replicate the code..

so where and how do i write a single piece of code for F4 help and call that (i need to pass the field as paramater i suppose). can anyone explain clearly and give me sample code ? thks

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
630

Combined and Reuasble code.

PROGRAM  ztest_duplica.

DATA: kunnr1(10),
      kunnr2(10).
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0200 INPUT.

  CASE sy-ucomm.
    WHEN 'BACK'.

      LEAVE TO SCREEN '100'.
    WHEN 'NEXT'.

      LEAVE TO SCREEN '200'.
  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
*&      Module  get_help  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE get_help INPUT.

  DATA:i_retab TYPE TABLE OF  ddshretval,
       wa_ret TYPE ddshretval.

  TYPES: BEGIN OF x_itab,
  kunnr TYPE kunnr,    "it should be type to some standard data element
  END OF x_itab.

  FIELD-SYMBOLS: <fs> TYPE ANY.
  CLEAR : kunnr1, kunnr2.
  DATA: dynfield  TYPE help_info-dynprofld,
        wa_itab TYPE x_itab,
        i_tab LIKE TABLE OF wa_itab WITH HEADER LINE.
  CLEAR  dynfield.
  IF sy-dynnr = '0100'.
    dynfield = 'KUNNR1'.
  ELSE.
    dynfield = 'KUNNR2'.
  ENDIF.

  SELECT kunnr FROM kna1
      INTO TABLE i_tab
      UP TO 20 ROWS.

  "retfield we will pass the column name we are going to get from f4
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield    = 'KUNNR'   "<---Return field column name
      dynpprog    = sy-repid
      dynpnr      = sy-dynnr
      dynprofield = dynfield
      value_org   = 'S'
    TABLES
      value_tab   = i_tab
      return_tab  = i_retab.
  IF sy-subrc EQ 0.
    READ TABLE i_retab INTO wa_ret INDEX 1.
    ASSIGN (dynfield) TO <fs> .
    <fs> = wa_ret-fieldval .
    UNASSIGN <fs>.
  ENDIF.
ENDMODULE.                 " get_help  INPUT

Flow logic for 100 screen

screen consists of Input field pointing to KUNNR1, and a Button to NEXT to 200 screen .

PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
 MODULE USER_COMMAND_0200.

process on value-request.

field kunnr1 module get_help.

Flow logic for 200 screen.

screen consists of Input field pointing to KUNNR2, and a Button to back to 100 screen .

PROCESS BEFORE OUTPUT.
* MODULE STATUS_0200.
*
PROCESS AFTER INPUT.
  MODULE user_command_0200.

PROCESS ON VALUE-REQUEST.

  FIELD kunnr2 MODULE get_help.

Create a Tcode and Intitial screen 100. and check it .

Regards

Vijay Babu Dudla

3 REPLIES 3
Read only

Former Member
0 Likes
630

Sdnuser,

i think you need to have your code replicate casue PAI is seperate for both screen so we cant use the FM for both screen in one hit.

either you can use macro and use this marco in both screen here you can save effrot for replicate your code.but its not a good idea.

Amit.

Read only

Former Member
0 Likes
630

Call a perform in both the Modules. and write your code in the perform.

Does that work?

~RK.

Read only

Former Member
0 Likes
631

Combined and Reuasble code.

PROGRAM  ztest_duplica.

DATA: kunnr1(10),
      kunnr2(10).
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0200 INPUT.

  CASE sy-ucomm.
    WHEN 'BACK'.

      LEAVE TO SCREEN '100'.
    WHEN 'NEXT'.

      LEAVE TO SCREEN '200'.
  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
*&      Module  get_help  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE get_help INPUT.

  DATA:i_retab TYPE TABLE OF  ddshretval,
       wa_ret TYPE ddshretval.

  TYPES: BEGIN OF x_itab,
  kunnr TYPE kunnr,    "it should be type to some standard data element
  END OF x_itab.

  FIELD-SYMBOLS: <fs> TYPE ANY.
  CLEAR : kunnr1, kunnr2.
  DATA: dynfield  TYPE help_info-dynprofld,
        wa_itab TYPE x_itab,
        i_tab LIKE TABLE OF wa_itab WITH HEADER LINE.
  CLEAR  dynfield.
  IF sy-dynnr = '0100'.
    dynfield = 'KUNNR1'.
  ELSE.
    dynfield = 'KUNNR2'.
  ENDIF.

  SELECT kunnr FROM kna1
      INTO TABLE i_tab
      UP TO 20 ROWS.

  "retfield we will pass the column name we are going to get from f4
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield    = 'KUNNR'   "<---Return field column name
      dynpprog    = sy-repid
      dynpnr      = sy-dynnr
      dynprofield = dynfield
      value_org   = 'S'
    TABLES
      value_tab   = i_tab
      return_tab  = i_retab.
  IF sy-subrc EQ 0.
    READ TABLE i_retab INTO wa_ret INDEX 1.
    ASSIGN (dynfield) TO <fs> .
    <fs> = wa_ret-fieldval .
    UNASSIGN <fs>.
  ENDIF.
ENDMODULE.                 " get_help  INPUT

Flow logic for 100 screen

screen consists of Input field pointing to KUNNR1, and a Button to NEXT to 200 screen .

PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
 MODULE USER_COMMAND_0200.

process on value-request.

field kunnr1 module get_help.

Flow logic for 200 screen.

screen consists of Input field pointing to KUNNR2, and a Button to back to 100 screen .

PROCESS BEFORE OUTPUT.
* MODULE STATUS_0200.
*
PROCESS AFTER INPUT.
  MODULE user_command_0200.

PROCESS ON VALUE-REQUEST.

  FIELD kunnr2 MODULE get_help.

Create a Tcode and Intitial screen 100. and check it .

Regards

Vijay Babu Dudla