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

Notification form automatically filled by system

Former Member
0 Likes
845

Hello Experts,

I have created a program to make fast entry in service notification creation but what i want is when user enter customer number into respective field then whatever the data available for that customer in custom table should be filled automatically on screen in respective fields. I have used KNA1-KUNNR as Customer Number field and my custom table is ZCS_T_SERVNOTE. So i have tried with PAI module:  Module zcs_readkunum  ON request. But its not working if you have any idea how to achieve this please help me. Here is the code and screen shot.

PROGRAM  zcs_servnote.

TABLES: zcs_t_servnote,KNA1,T356_T,CRHD_V1,QPCT.

DATA:  g_str_servnote TYPE zcs_t_servnote,

       g_str_custname TYPE KNA1,

       g_str_priotxt  TYPE T356_T,

       g_str_category TYPE QPCT.

DATA: ok_code TYPE sy-ucomm,

      save_ok LIKE ok_code.

DATA: g_rcl_customcontainer TYPE REF TO cl_gui_custom_container,

      g_rcl_texteditor TYPE REF TO cl_gui_textedit,

      g_sys_repid LIKE sy-repid,

      l_text TYPE string,

      l_cursor TYPE ZCS_T_SERVNOTE.

CONSTANTS: g_con_linelength TYPE i VALUE 256.

INCLUDE zcs_servnote_status_0100o01.

INCLUDE zcs_servnote_user_command_0i01.

PAI:-

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

***INCLUDE ZCS_SERVNOTE_USER_COMMAND_0I01 .

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

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

*&      Module  USER_COMMAND_0100  INPUT

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

*       text

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

MODULE user_command_0100 INPUT.

  DATA: r_str_return              TYPE bapiret2,

        l_str_number              TYPE bapi2080_nothdre-notif_no,

        l_str_notifheader         TYPE bapi2080_nothdri,

        l_str_partner             TYPE bapi2080_notpartnri,

        l_str_notif_type          TYPE bapi2080-notif_type VALUE 'Y1',

        l_str_notifheader_export  TYPE bapi2080_nothdre,

        l_str_notifplant          TYPE bapi2080_notitemi,

        l_str_notif               TYPE bapi2080,

        l_str_longtexts           TYPE bapi2080_notfulltxti-text_line.

  DATA: l_tab_longtexts           TYPE STANDARD TABLE OF bapi2080_notfulltxti,

        l_tab_partner             TYPE STANDARD TABLE OF bapi2080_notpartnri,

        l_tab_return              TYPE STANDARD TABLE OF bapiret2.

  GET CURSOR FIELD l_cursor.

  ok_code = sy-ucomm.

  CASE ok_code.

    WHEN 'SAVE'.

      l_str_notifheader-refobjecttype = 'BUS2080'.

      l_str_notifheader-short_text    = zcs_t_servnote-qmtxt.

      l_str_notifheader-priority      = t356_t-priok.

      l_str_notifheader-planplant     = zcs_t_servnote-plant.

      l_str_notifheader-pm_wkctr      = zcs_t_servnote-lgwid.

      l_str_notifheader-purch_no_c    = zcs_t_servnote-bstnk.

      l_str_notifheader-breakdown     = zcs_t_servnote-msaus.

      l_str_notif-contact             = zcs_t_servnote-parnr.

      l_str_notifplant-dl_codegrp     = qpct-codegruppe.

      l_str_notifplant-dl_code        = qpct-code.

      l_str_notifheader-strmlfndate   = sy-datum.

      l_str_notifheader-strmlfntime   = sy-uzeit.

      l_str_partner-partn_role        =  'AG'.

      l_str_partner-partner           = kna1-kunnr.

      APPEND l_str_partner TO l_tab_partner.

      l_str_partner-partn_role        =  'AP'.

      l_str_partner-partner           = kna1-kunnr.

      APPEND l_str_partner TO l_tab_partner.

      l_str_partner-partn_role        =  'YY'.

      l_str_partner-partner           =  zcs_t_servnote-bname.

      APPEND l_str_partner TO l_tab_partner.

* Saving Long Text into Table

      CALL METHOD g_rcl_texteditor->get_textstream

        EXPORTING

          only_when_modified     = cl_gui_textedit=>true

        IMPORTING

          text                   = l_text

        EXCEPTIONS

          error_cntl_call_method = 1

          not_supported_by_gui   = 2

          OTHERS                 = 3.

      l_str_longtexts = l_text.

      APPEND l_str_longtexts TO l_tab_longtexts.

* Service Notification Creation

      CALL FUNCTION 'BAPI_SERVNOT_CREATE'

        EXPORTING

          notif_type         = l_str_notif_type

          notifheader        = l_str_notifheader

        IMPORTING

          notifheader_export = l_str_notifheader_export

        TABLES

          notifpartnr        = l_tab_partner

          return             = l_tab_return

          longtexts          = l_tab_longtexts.

* Generation of Success Message

      l_str_number = l_str_notifheader_export-notif_no.

      IF l_str_number IS NOT INITIAL.

        MESSAGE s000(zcs) WITH l_str_number.

        CALL FUNCTION 'BAPI_SERVNOT_SAVE'

          EXPORTING

            number = l_str_number.

        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

* Clears screen for next entry

        PERFORM zcs_clearscreen.

* Saving Long Text into Table

        CALL METHOD g_rcl_texteditor->get_textstream

          EXPORTING

            only_when_modified     = cl_gui_textedit=>true

          IMPORTING

            text                   = l_text

          EXCEPTIONS

            error_cntl_call_method = 1

            not_supported_by_gui   = 2

            OTHERS                 = 3.

        l_str_longtexts = l_text.

        APPEND l_str_longtexts TO l_tab_longtexts.

        IF sy-subrc <> 0.

          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

        ENDIF.

      ENDIF.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

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

*&      Module  EXIT  INPUT

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

*       text

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

MODULE exit INPUT.

  ok_code = sy-ucomm.

  CASE ok_code.

    WHEN 'BACK'.

      LEAVE TO SCREEN 0.

    WHEN 'EXIT'.

      LEAVE PROGRAM.

    WHEN 'CANCEL'.

      LEAVE PROGRAM.

  ENDCASE.

ENDMODULE.                 " EXIT  INPUT

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

*&      Module  MESG_MANDATOR  INPUT

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

*       text

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

*Making fields Madatory dynamically

MODULE zcs_mandator INPUT.

  CHECK sy-ucomm EQ 'SAVE'.

  IF zcs_t_servnote-qmtxt IS INITIAL.

    MESSAGE 'Please enter description' TYPE 'E'.

  ENDIF.

  IF qpct-code IS INITIAL.

    MESSAGE 'Please enter Categorization' TYPE 'E'.

  ENDIF.

*  IF zcs_t_servnote-contact IS INITIAL.

*    MESSAGE 'Please enter cutomer contact person' TYPE 'E'.

*  ENDIF.

  IF zcs_t_servnote-arbpl IS INITIAL.

    MESSAGE 'Please enter work center' TYPE 'E'.

  ENDIF.

  IF zcs_t_servnote-plant IS INITIAL.

    MESSAGE 'Please enter Plant' TYPE 'E'.

  ENDIF.

  IF t356_t-priok IS INITIAL.

    MESSAGE 'Please enter Priority' TYPE 'E'.

  ENDIF.

  IF  zcs_t_servnote-bname IS INITIAL.

    MESSAGE 'Please enter Person responsible' TYPE 'E'.

  ENDIF.

ENDMODULE.                 " MESG_MANDATOR  INPUT

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

*&      Form  ZCS_CLEARSCREEN

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM zcs_clearscreen .

  CLEAR: zcs_t_servnote-qmtxt.

  CLEAR: kna1-kunnr.

  CLEAR: kna1-name1.

  CLEAR: zcs_t_servnote-kunum.

  CLEAR: zcs_t_servnote-bstnk.

  CLEAR: zcs_t_servnote-msaus.

  CLEAR: zcs_t_servnote-cust_list.

  CLEAR: qpct-code.

  CLEAR: qpct-kurztext.

  CLEAR: zcs_t_servnote-parnr.

  CLEAR: zcs_t_servnote-oteil.

  CLEAR: zcs_t_servnote-priok.

  CLEAR: zcs_t_servnote-contact.

  CLEAR: zcs_t_servnote-arbpl.

  CLEAR: zcs_t_servnote-ktext.

  CLEAR: t356_t-priok.

  CLEAR: t356_t-priokx.

  CLEAR: zcs_t_servnote-priokx.

  CLEAR: zcs_t_servnote-bname.

  CLEAR: zcs_t_servnote-pername.

ENDFORM.                    " ZCS_CLEARSCREEN4.

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

*&      Module  ZCS_READCUSTNO  INPUT

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

*       text

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

MODULE zcs_readcustno INPUT.

  SELECT SINGLE * FROM kna1 INTO g_str_custname

       WHERE kunnr EQ kna1-kunnr.

  IF sy-subrc EQ 0.

    kna1-kunnr = g_str_custname-kunnr.

    kna1-name1 = g_str_custname-name1.

  ENDIF.

  ENDMODULE.                 " ZCS_READCUSTNO  INPUT

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

*&      Module  ZCS_READKUNUM  INPUT

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

*       text

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

MODULE zcs_readkunum INPUT.

     IF kna1-kunnr EQ zcs_t_servnote-kunum AND kna1-name1 EQ zcs_t_servnote-cust_list.

      SELECT SINGLE * FROM zcs_t_servnote INTO g_str_servnote

          WHERE kunum EQ zcs_t_servnote-kunum.

      IF sy-subrc EQ 0.

*        zcs_t_servnote-kunum = g_str_servnote-kunum.

*    zcs_t_servnote-cust_list = g_str_servnote-cust_list.

        zcs_t_servnote-bstnk = g_str_servnote-bstnk.

*    zcs_t_servnote-oteil = g_str_servnote-oteil.

        zcs_t_servnote-parnr = g_str_servnote-parnr.

        zcs_t_servnote-contact = g_str_servnote-contact.

        zcs_t_servnote-msaus = g_str_servnote-msaus.

        zcs_t_servnote-arbpl = g_str_servnote-arbpl.

        zcs_t_servnote-bname = g_str_servnote-bname.

        zcs_t_servnote-pername = g_str_servnote-pername.

      ENDIF.

    ENDIF.

ENDMODULE.                 " ZCS_READKUNUM  INPUT

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

*&      Module  ZCS_PRIOTXT  INPUT

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

*       text

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

MODULE zcs_priotxt INPUT.

  SELECT SINGLE * FROM t356_t INTO g_str_priotxt

      WHERE priok EQ t356_t-priok AND artpr EQ 'AC' AND spras EQ 'EN'.

  IF sy-subrc EQ 0.

    t356_t = g_str_priotxt.

  ENDIF.

ENDMODULE.                 " ZCS_PRIOTXT  INPUT

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

*&      Module  ZCS_CATEGORY  INPUT

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

*       text

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

MODULE zcs_category INPUT.

  SELECT SINGLE * FROM qpct INTO g_str_category

     WHERE code EQ qpct-code.

  IF sy-subrc EQ 0.

    qpct = g_str_category.

  ENDIF.

ENDMODULE.                 " ZCS_CATEGORY  INPUT

PBO:-

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

***INCLUDE ZCS_SERVNOTE_STATUS_0100O01 .

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

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

*&      Module  STATUS_0100  OUTPUT

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

*       text

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

MODULE status_0100 OUTPUT.

  SET PF-STATUS 'STATUS_100'.

  SET TITLEBAR 'TITLE_100'.

  zcs_t_servnote-qmart = 'Y1'.

  QPCT-CODEGRUPPE = 'MODULE2'.

  zcs_t_servnote-plant = '7000'.

   CASE l_cursor.

  WHEN 'ZCS_T_SERVNOTE-QMTXT'.

    SET CURSOR FIELD 'KNA1-KUNNR'.

  WHEN 'KNA1-KUNNR'.

    SET CURSOR FIELD 'ZCS_T_SERVNOTE-BSTNK'.

  WHEN 'ZCS_T_SERVNOTE-BSTNK'.

    SET CURSOR FIELD 'QPCT-CODE'.

  WHEN 'QPCT-CODE'.

    SET CURSOR FIELD 'ZCS_T_SERVNOTE-PARNR'.

  WHEN 'ZCS_T_SERVNOTE-PARNR'.

    SET CURSOR FIELD 'ZCS_T_SERVNOTE-ARBPL'.

  WHEN 'ZCS_T_SERVNOTE-ARBPL'.

    SET CURSOR FIELD 'T356_T-PRIOK'.

  WHEN 'T356_T-PRIOK'.

    SET CURSOR FIELD 'ZCS_T_SERVNOTE-BNAME'.

ENDCASE.

  IF g_rcl_texteditor IS INITIAL.

    g_sys_repid = sy-repid.

    CREATE OBJECT g_rcl_customcontainer

      EXPORTING

        container_name              = 'Z_CUSTOM_CONTAINER'

      EXCEPTIONS

        cntl_error                  = 1

        cntl_system_error           = 2

        create_error                = 3

        lifetime_error              = 4

        lifetime_dynpro_dynpro_link = 5.

    CREATE OBJECT g_rcl_texteditor

      EXPORTING

        parent                     = g_rcl_customcontainer

        wordwrap_mode              = cl_gui_textedit=>wordwrap_at_fixed_position

        wordwrap_position          = g_con_linelength

        wordwrap_to_linebreak_mode = cl_gui_textedit=>true.

    CALL METHOD g_rcl_texteditor->set_toolbar_mode

      EXPORTING

        toolbar_mode = cl_gui_textedit=>false.

    CALL METHOD g_rcl_texteditor->set_statusbar_mode

      EXPORTING

        statusbar_mode = cl_gui_textedit=>false.

  ENDIF.

  LOOP AT SCREEN.

    IF zcs_t_servnote-parnr IS NOT INITIAL.

      DATA: first_name LIKE zcs_t_servnote-fname,

            last_name LIKE zcs_t_servnote-lname.

      SELECT SINGLE fname lname FROM zcs_t_servnote INTO (first_name,last_name).

      IF sy-subrc = 0.

        CONCATENATE first_name last_name INTO zcs_t_servnote-contact SEPARATED BY space.

      ENDIF.

    ENDIF.

  ENDLOOP.

  LOOP AT SCREEN.

    IF zcs_t_servnote-bname IS NOT INITIAL.

      DATA: f_name LIKE zcs_t_servnote-name1,

            l_name LIKE zcs_t_servnote-name2.

      SELECT SINGLE name1 name2 FROM zcs_t_servnote INTO (f_name,l_name).

      IF sy-subrc = 0.

        CONCATENATE f_name l_name INTO zcs_t_servnote-pername SEPARATED BY space.

      ENDIF.

    ENDIF.

  ENDLOOP.

  LOOP AT SCREEN.

    IF screen-group1 = 'GR1'.

      screen-required = '2'.     "set as mandatory

    ENDIF.

    MODIFY SCREEN.

  ENDLOOP.

ENDMODULE.                 " STATUS_0100  OUTPUT

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

*&      Module  CLEAR_OK_CODE  OUTPUT

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

*       text

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

MODULE clear_ok_code OUTPUT.

  save_ok = ok_code.

  CLEAR ok_code.

  CASE save_ok.

    WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.

      LEAVE PROGRAM.

  ENDCASE.

ENDMODULE.                 " CLEAR_OK_CODE  OUTPUT

FLOW LOGIC:-

process before output.

  module status_0100.

  module set_cursor.

process after input.

  module exit at exit-command.

  chain.

    field zcs_t_servnote-qmtxt.

    field kna1-kunnr.

*    field zcs_t_servnote-kunum.

*    field zcs_t_servnote-otgrp.

*    field zcs_t_servnote-oteil.

*    field zcs_t_servnote-contact.

    field zcs_t_servnote-arbpl.

    field zcs_t_servnote-plant.

*    field zcs_t_servnote-priok.

    field zcs_t_servnote-bname.

    module zcs_mandator.

  endchain.

   field KNA1-KUNNR module zcs_readcustno on request.

   field KNA1-KUNNR module zcs_readkunum on request.

   field T356_T-PRIOK module zcs_priotxt on request.

*   field CRHD_V1-ARBPL module zcs_workctr on request.

   field QPCT-CODE module zcs_category on request.

*   field ZCS_V_WRKCTR-ARBPL module zcs_wrkctr on request.

  module user_command_0100.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
737

Hello experts,

I have got what was missing, I have  just made a change in SELECT statement in the following module

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

*&      Module  ZCS_READCUSTNO  INPUT

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

*       text

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

MODULE zcs_readcustno INPUT.

  SELECT SINGLE * FROM kna1 INTO g_str_custname

       WHERE kunnr EQ kna1-kunnr.

  IF sy-subrc EQ 0.

    kna1-kunnr = g_str_custname-kunnr.

    kna1-name1 = g_str_custname-name1.

  ENDIF.

  ENDMODULE.                 " ZCS_READCUSTNO  INPUT

Those are:

SELECT SINGLE kunnr name1 FROM KNA1 INTO (zcs_t_servnote-kunum, zcs_t_servnonte-cust_list)

WHERE kunnr EQ zcs_t_servnote-kunum.

Hello Experts,

I have created a program to make fast entry in service notification creation but what i want is when user enter customer number into respective field then whatever the data available for that customer in custom table should be filled automatically on screen in respective fields. I have used KNA1-KUNNR as Customer Number field and my custom table is ZCS_T_SERVNOTE. So i have tried with PAI module:  Module zcs_readkunum  ON request. But its not working if you have any idea how to achieve this please help me. Here is the code and screen shot.

PROGRAM  zcs_servnote.

TABLES: zcs_t_servnote,KNA1,T356_T,CRHD_V1,QPCT.

DATA:  g_str_servnote TYPE zcs_t_servnote,

       g_str_custname TYPE KNA1,

       g_str_priotxt  TYPE T356_T,

       g_str_category TYPE QPCT.

DATA: ok_code TYPE sy-ucomm,

      save_ok LIKE ok_code.

DATA: g_rcl_customcontainer TYPE REF TO cl_gui_custom_container,

      g_rcl_texteditor TYPE REF TO cl_gui_textedit,

      g_sys_repid LIKE sy-repid,

      l_text TYPE string,

      l_cursor TYPE ZCS_T_SERVNOTE.

CONSTANTS: g_con_linelength TYPE i VALUE 256.

INCLUDE zcs_servnote_status_0100o01.

INCLUDE zcs_servnote_user_command_0i01.

PAI:-

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

***INCLUDE ZCS_SERVNOTE_USER_COMMAND_0I01 .

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

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

*&      Module  USER_COMMAND_0100  INPUT

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

*       text

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

MODULE user_command_0100 INPUT.

  DATA: r_str_return              TYPE bapiret2,

        l_str_number              TYPE bapi2080_nothdre-notif_no,

        l_str_notifheader         TYPE bapi2080_nothdri,

        l_str_partner             TYPE bapi2080_notpartnri,

        l_str_notif_type          TYPE bapi2080-notif_type VALUE 'Y1',

        l_str_notifheader_export  TYPE bapi2080_nothdre,

        l_str_notifplant          TYPE bapi2080_notitemi,

        l_str_notif               TYPE bapi2080,

        l_str_longtexts           TYPE bapi2080_notfulltxti-text_line.

  DATA: l_tab_longtexts           TYPE STANDARD TABLE OF bapi2080_notfulltxti,

        l_tab_partner             TYPE STANDARD TABLE OF bapi2080_notpartnri,

        l_tab_return              TYPE STANDARD TABLE OF bapiret2.

  GET CURSOR FIELD l_cursor.

  ok_code = sy-ucomm.

  CASE ok_code.

    WHEN 'SAVE'.

      l_str_notifheader-refobjecttype = 'BUS2080'.

      l_str_notifheader-short_text    = zcs_t_servnote-qmtxt.

      l_str_notifheader-priority      = t356_t-priok.

      l_str_notifheader-planplant     = zcs_t_servnote-plant.

      l_str_notifheader-pm_wkctr      = zcs_t_servnote-lgwid.

      l_str_notifheader-purch_no_c    = zcs_t_servnote-bstnk.

      l_str_notifheader-breakdown     = zcs_t_servnote-msaus.

      l_str_notif-contact             = zcs_t_servnote-parnr.

      l_str_notifplant-dl_codegrp     = qpct-codegruppe.

      l_str_notifplant-dl_code        = qpct-code.

      l_str_notifheader-strmlfndate   = sy-datum.

      l_str_notifheader-strmlfntime   = sy-uzeit.

      l_str_partner-partn_role        =  'AG'.

      l_str_partner-partner           = kna1-kunnr.

      APPEND l_str_partner TO l_tab_partner.

      l_str_partner-partn_role        =  'AP'.

      l_str_partner-partner           = kna1-kunnr.

      APPEND l_str_partner TO l_tab_partner.

      l_str_partner-partn_role        =  'YY'.

      l_str_partner-partner           =  zcs_t_servnote-bname.

      APPEND l_str_partner TO l_tab_partner.

* Saving Long Text into Table

      CALL METHOD g_rcl_texteditor->get_textstream

        EXPORTING

          only_when_modified     = cl_gui_textedit=>true

        IMPORTING

          text                   = l_text

        EXCEPTIONS

          error_cntl_call_method = 1

          not_supported_by_gui   = 2

          OTHERS                 = 3.

      l_str_longtexts = l_text.

      APPEND l_str_longtexts TO l_tab_longtexts.

* Service Notification Creation

      CALL FUNCTION 'BAPI_SERVNOT_CREATE'

        EXPORTING

          notif_type         = l_str_notif_type

          notifheader        = l_str_notifheader

        IMPORTING

          notifheader_export = l_str_notifheader_export

        TABLES

          notifpartnr        = l_tab_partner

          return             = l_tab_return

          longtexts          = l_tab_longtexts.

* Generation of Success Message

      l_str_number = l_str_notifheader_export-notif_no.

      IF l_str_number IS NOT INITIAL.

        MESSAGE s000(zcs) WITH l_str_number.

        CALL FUNCTION 'BAPI_SERVNOT_SAVE'

          EXPORTING

            number = l_str_number.

        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

* Clears screen for next entry

        PERFORM zcs_clearscreen.

* Saving Long Text into Table

        CALL METHOD g_rcl_texteditor->get_textstream

          EXPORTING

            only_when_modified     = cl_gui_textedit=>true

          IMPORTING

            text                   = l_text

          EXCEPTIONS

            error_cntl_call_method = 1

            not_supported_by_gui   = 2

            OTHERS                 = 3.

        l_str_longtexts = l_text.

        APPEND l_str_longtexts TO l_tab_longtexts.

        IF sy-subrc <> 0.

          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

        ENDIF.

      ENDIF.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

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

*&      Module  EXIT  INPUT

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

*       text

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

MODULE exit INPUT.

  ok_code = sy-ucomm.

  CASE ok_code.

    WHEN 'BACK'.

      LEAVE TO SCREEN 0.

    WHEN 'EXIT'.

      LEAVE PROGRAM.

    WHEN 'CANCEL'.

      LEAVE PROGRAM.

  ENDCASE.

ENDMODULE.                 " EXIT  INPUT

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

*&      Module  MESG_MANDATOR  INPUT

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

*       text

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

*Making fields Madatory dynamically

MODULE zcs_mandator INPUT.

  CHECK sy-ucomm EQ 'SAVE'.

  IF zcs_t_servnote-qmtxt IS INITIAL.

    MESSAGE 'Please enter description' TYPE 'E'.

  ENDIF.

  IF qpct-code IS INITIAL.

    MESSAGE 'Please enter Categorization' TYPE 'E'.

  ENDIF.

*  IF zcs_t_servnote-contact IS INITIAL.

*    MESSAGE 'Please enter cutomer contact person' TYPE 'E'.

*  ENDIF.

  IF zcs_t_servnote-arbpl IS INITIAL.

    MESSAGE 'Please enter work center' TYPE 'E'.

  ENDIF.

  IF zcs_t_servnote-plant IS INITIAL.

    MESSAGE 'Please enter Plant' TYPE 'E'.

  ENDIF.

  IF t356_t-priok IS INITIAL.

    MESSAGE 'Please enter Priority' TYPE 'E'.

  ENDIF.

  IF  zcs_t_servnote-bname IS INITIAL.

    MESSAGE 'Please enter Person responsible' TYPE 'E'.

  ENDIF.

ENDMODULE.                 " MESG_MANDATOR  INPUT

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

*&      Form  ZCS_CLEARSCREEN

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM zcs_clearscreen .

  CLEAR: zcs_t_servnote-qmtxt.

  CLEAR: kna1-kunnr.

  CLEAR: kna1-name1.

  CLEAR: zcs_t_servnote-kunum.

  CLEAR: zcs_t_servnote-bstnk.

  CLEAR: zcs_t_servnote-msaus.

  CLEAR: zcs_t_servnote-cust_list.

  CLEAR: qpct-code.

  CLEAR: qpct-kurztext.

  CLEAR: zcs_t_servnote-parnr.

  CLEAR: zcs_t_servnote-oteil.

  CLEAR: zcs_t_servnote-priok.

  CLEAR: zcs_t_servnote-contact.

  CLEAR: zcs_t_servnote-arbpl.

  CLEAR: zcs_t_servnote-ktext.

  CLEAR: t356_t-priok.

  CLEAR: t356_t-priokx.

  CLEAR: zcs_t_servnote-priokx.

  CLEAR: zcs_t_servnote-bname.

  CLEAR: zcs_t_servnote-pername.

ENDFORM.                    " ZCS_CLEARSCREEN4.

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

*&      Module  ZCS_READCUSTNO  INPUT

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

*       text

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

MODULE zcs_readcustno INPUT.

  SELECT SINGLE * FROM kna1 INTO g_str_custname

       WHERE kunnr EQ kna1-kunnr.

  IF sy-subrc EQ 0.

    kna1-kunnr = g_str_custname-kunnr.

    kna1-name1 = g_str_custname-name1.

  ENDIF.

  ENDMODULE.                 " ZCS_READCUSTNO  INPUT

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

*&      Module  ZCS_READKUNUM  INPUT

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

*       text

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

MODULE zcs_readkunum INPUT.

     IF kna1-kunnr EQ zcs_t_servnote-kunum AND kna1-name1 EQ zcs_t_servnote-cust_list.

      SELECT SINGLE * FROM zcs_t_servnote INTO g_str_servnote

          WHERE kunum EQ zcs_t_servnote-kunum.

      IF sy-subrc EQ 0.

*        zcs_t_servnote-kunum = g_str_servnote-kunum.

*    zcs_t_servnote-cust_list = g_str_servnote-cust_list.

        zcs_t_servnote-bstnk = g_str_servnote-bstnk.

*    zcs_t_servnote-oteil = g_str_servnote-oteil.

        zcs_t_servnote-parnr = g_str_servnote-parnr.

        zcs_t_servnote-contact = g_str_servnote-contact.

        zcs_t_servnote-msaus = g_str_servnote-msaus.

        zcs_t_servnote-arbpl = g_str_servnote-arbpl.

        zcs_t_servnote-bname = g_str_servnote-bname.

        zcs_t_servnote-pername = g_str_servnote-pername.

      ENDIF.

    ENDIF.

ENDMODULE.                 " ZCS_READKUNUM  INPUT

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

*&      Module  ZCS_PRIOTXT  INPUT

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

*       text

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

MODULE zcs_priotxt INPUT.

  SELECT SINGLE * FROM t356_t INTO g_str_priotxt

      WHERE priok EQ t356_t-priok AND artpr EQ 'AC' AND spras EQ 'EN'.

  IF sy-subrc EQ 0.

    t356_t = g_str_priotxt.

  ENDIF.

ENDMODULE.                 " ZCS_PRIOTXT  INPUT

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

*&      Module  ZCS_CATEGORY  INPUT

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

*       text

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

MODULE zcs_category INPUT.

  SELECT SINGLE * FROM qpct INTO g_str_category

     WHERE code EQ qpct-code.

  IF sy-subrc EQ 0.

    qpct = g_str_category.

  ENDIF.

ENDMODULE.                 " ZCS_CATEGORY  INPUT

PBO:-

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

***INCLUDE ZCS_SERVNOTE_STATUS_0100O01 .

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

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

*&      Module  STATUS_0100  OUTPUT

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

*       text

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

MODULE status_0100 OUTPUT.

  SET PF-STATUS 'STATUS_100'.

  SET TITLEBAR 'TITLE_100'.

  zcs_t_servnote-qmart = 'Y1'.

  QPCT-CODEGRUPPE = 'MODULE2'.

  zcs_t_servnote-plant = '7000'.

   CASE l_cursor.

  WHEN 'ZCS_T_SERVNOTE-QMTXT'.

    SET CURSOR FIELD 'KNA1-KUNNR'.

  WHEN 'KNA1-KUNNR'.

    SET CURSOR FIELD 'ZCS_T_SERVNOTE-BSTNK'.

  WHEN 'ZCS_T_SERVNOTE-BSTNK'.

    SET CURSOR FIELD 'QPCT-CODE'.

  WHEN 'QPCT-CODE'.

    SET CURSOR FIELD 'ZCS_T_SERVNOTE-PARNR'.

  WHEN 'ZCS_T_SERVNOTE-PARNR'.

    SET CURSOR FIELD 'ZCS_T_SERVNOTE-ARBPL'.

  WHEN 'ZCS_T_SERVNOTE-ARBPL'.

    SET CURSOR FIELD 'T356_T-PRIOK'.

  WHEN 'T356_T-PRIOK'.

    SET CURSOR FIELD 'ZCS_T_SERVNOTE-BNAME'.

ENDCASE.

  IF g_rcl_texteditor IS INITIAL.

    g_sys_repid = sy-repid.

    CREATE OBJECT g_rcl_customcontainer

      EXPORTING

        container_name              = 'Z_CUSTOM_CONTAINER'

      EXCEPTIONS

        cntl_error                  = 1

        cntl_system_error           = 2

        create_error                = 3

        lifetime_error              = 4

        lifetime_dynpro_dynpro_link = 5.

    CREATE OBJECT g_rcl_texteditor

      EXPORTING

        parent                     = g_rcl_customcontainer

        wordwrap_mode              = cl_gui_textedit=>wordwrap_at_fixed_position

        wordwrap_position          = g_con_linelength

        wordwrap_to_linebreak_mode = cl_gui_textedit=>true.

    CALL METHOD g_rcl_texteditor->set_toolbar_mode

      EXPORTING

        toolbar_mode = cl_gui_textedit=>false.

    CALL METHOD g_rcl_texteditor->set_statusbar_mode

      EXPORTING

        statusbar_mode = cl_gui_textedit=>false.

  ENDIF.

  LOOP AT SCREEN.

    IF zcs_t_servnote-parnr IS NOT INITIAL.

      DATA: first_name LIKE zcs_t_servnote-fname,

            last_name LIKE zcs_t_servnote-lname.

      SELECT SINGLE fname lname FROM zcs_t_servnote INTO (first_name,last_name).

      IF sy-subrc = 0.

        CONCATENATE first_name last_name INTO zcs_t_servnote-contact SEPARATED BY space.

      ENDIF.

    ENDIF.

  ENDLOOP.

  LOOP AT SCREEN.

    IF zcs_t_servnote-bname IS NOT INITIAL.

      DATA: f_name LIKE zcs_t_servnote-name1,

            l_name LIKE zcs_t_servnote-name2.

      SELECT SINGLE name1 name2 FROM zcs_t_servnote INTO (f_name,l_name).

      IF sy-subrc = 0.

        CONCATENATE f_name l_name INTO zcs_t_servnote-pername SEPARATED BY space.

      ENDIF.

    ENDIF.

  ENDLOOP.

  LOOP AT SCREEN.

    IF screen-group1 = 'GR1'.

      screen-required = '2'.     "set as mandatory

    ENDIF.

    MODIFY SCREEN.

  ENDLOOP.

ENDMODULE.                 " STATUS_0100  OUTPUT

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

*&      Module  CLEAR_OK_CODE  OUTPUT

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

*       text

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

MODULE clear_ok_code OUTPUT.

  save_ok = ok_code.

  CLEAR ok_code.

  CASE save_ok.

    WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.

      LEAVE PROGRAM.

  ENDCASE.

ENDMODULE.                 " CLEAR_OK_CODE  OUTPUT

FLOW LOGIC:-

process before output.

  module status_0100.

  module set_cursor.

process after input.

  module exit at exit-command.

  chain.

    field zcs_t_servnote-qmtxt.

    field kna1-kunnr.

*    field zcs_t_servnote-kunum.

*    field zcs_t_servnote-otgrp.

*    field zcs_t_servnote-oteil.

*    field zcs_t_servnote-contact.

    field zcs_t_servnote-arbpl.

    field zcs_t_servnote-plant.

*    field zcs_t_servnote-priok.

    field zcs_t_servnote-bname.

    module zcs_mandator.

  endchain.

   field KNA1-KUNNR module zcs_readcustno on request.

   field KNA1-KUNNR module zcs_readkunum on request.

   field T356_T-PRIOK module zcs_priotxt on request.

*   field CRHD_V1-ARBPL module zcs_workctr on request.

   field QPCT-CODE module zcs_category on request.

*   field ZCS_V_WRKCTR-ARBPL module zcs_wrkctr on request.

  module user_command_0100.

3 REPLIES 3
Read only

nabheetscn
SAP Champion
SAP Champion
0 Likes
737

CAn you please check in debugging what is happening. After PAI it will go to PBO and i see there you have clear fields


Read only

Former Member
0 Likes
737

Check the following code section for the screen update


  chain.

    field kna1-kunnr Module  ZXXXXX on request.

    field zcs_t_servnote-qmtxt.

    field zcs_t_servnote-arbpl.

    field zcs_t_servnote-plant.

    field zcs_t_servnote-bname.

    module zcs_mandator.

  endchain


Write all validations for the field Kunnr in module ZXXXXX and the code to update subsequent fields

Module  ZXXXXX will run on change of field Kunnr.

If done the following codes can be commented

   field KNA1-KUNNR module zcs_readcustno on request.

   field KNA1-KUNNR module zcs_readkunum on request.


I am also not quite sure on how the above 2 will work since Ideally we use a single on request for a field......

Read only

Former Member
0 Likes
738

Hello experts,

I have got what was missing, I have  just made a change in SELECT statement in the following module

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

*&      Module  ZCS_READCUSTNO  INPUT

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

*       text

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

MODULE zcs_readcustno INPUT.

  SELECT SINGLE * FROM kna1 INTO g_str_custname

       WHERE kunnr EQ kna1-kunnr.

  IF sy-subrc EQ 0.

    kna1-kunnr = g_str_custname-kunnr.

    kna1-name1 = g_str_custname-name1.

  ENDIF.

  ENDMODULE.                 " ZCS_READCUSTNO  INPUT

Those are:

SELECT SINGLE kunnr name1 FROM KNA1 INTO (zcs_t_servnote-kunum, zcs_t_servnonte-cust_list)

WHERE kunnr EQ zcs_t_servnote-kunum.