Wednesday, March 18, 2015



Table control examples

*&---------------------------------------------------------------------*
*& Report  Z_DB_TABLECONTROL                                           *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*
REPORT  Z_DB_TABLECONTROL.
TABLES: MARA.
CONTROLS MATERIAL TYPE TABLEVIEW USING SCREEN 130.
TYPES: BEGIN OF ST_MARA,
       MATNR TYPE MARA-MATNR,
       ERSDA TYPE MARA-ERSDA,
       ERNAM TYPE MARA-ERNAM,
       LAEDA TYPE MARA-LAEDA,
       END OF ST_MARA.
DATA: IT_ST TYPE TABLE OF ST_MARA,
      WA_ST TYPE ST_MARA,
      IT_MARA TYPE MARA,
      WA_MARA TYPE MARA,
      OK_CODE LIKE SY-UCOMM.
CALL SCREEN 130.
*&---------------------------------------------------------------------*
*&      Module  V1  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE V1 INPUT.
CASE OK_CODE.
WHEN 'SAVE'.
WA_ST-MATNR = MARA-MATNR.
WA_ST-ERSDA = MARA-ERSDA.
WA_ST-ERNAM = MARA-ERNAM.
WA_ST-LAEDA = MARA-LAEDA.
MOVE-CORRESPONDING WA_ST TO WA_MARA.
INSERT INTO MARA VALUES WA_MARA.
WHEN 'DELETE'.
WA_ST-MATNR = MARA-MATNR.
WA_ST-ERSDA = MARA-ERSDA.
WA_ST-ERNAM = MARA-ERNAM.
WA_ST-LAEDA = MARA-LAEDA.
MOVE-CORRESPONDING  WA_ST TO WA_MARA.
DELETE MARA FROM WA_MARA.
WHEN 'MODIFY'.
WA_ST-MATNR = MARA-MATNR.
WA_ST-ERSDA = MARA-ERSDA.
WA_ST-ERNAM = MARA-ERNAM.
WA_ST-LAEDA = MARA-LAEDA.
MOVE-CORRESPONDING  WA_ST TO WA_MARA.
MODIFY MARA FROM WA_MARA.
ENDCASE.
ENDMODULE.                 " V1  INPUT
*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE EXIT INPUT.
IF OK_CODE = 'EXIT'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.                 " EXIT  INPUT
Create a screen by number 130 and provide the following attributes: 
 
LAYOUT:
 
ELEMENT LIST:
 
FLOW LOGIC.
 
EXECUTE: 




http://scn.sap.com/thread/1067760




Simple Table Control

Table control is one of a ABAP displaying mechanisms. With the help of Table control we can see the output table in different visibility approach. Here we have developed a Module Pool program where a simple table control has been incorporated.

The output of the table control is like following:

1. Initial screen where we have to give the Transaction Code to run the Module Pool Program.


2. This is the first screen where we have to give the Purchase Order number in the input field. DISPLAY button will display the entered PO details at the second screen. CLEAR button will clear the entered data in the input field. Also we can see the title is coming for the first screen.


3. If nothing is give here then an Information message will come by clicking DISPLAY button.


4. Now we are giving a valid PO which has 22 items like follows.


5. By clicking on DISPLAY button we are going to the second screen where the Table Control is there to display the Item wise details as per Output table structure.


6. Now if we Scroll down by putting the mouse pointer on the Table Control then we shall go to the next slot of records as following.


7. By clicking on the BACK or EXIT or CANCEL button we shall come back to the first screen with a blank input field.

8. Now we are giving another PO and click on DISPLAY button.


9. New list will be coming with the same format but data are different. Here previous data will not be there. The entered PO contains 311 Items as follows.


10. By scroll down we can go to the last slot of data as follows.


11. By clicking BACK we shall come back to first screen like follows.


Following is the Coding for various Modules:

*&---------------------------------------------------------------------*
*& Module Pool       ZSR_MOD
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*


INCLUDE zsr_top                                 .  " global Data
INCLUDE zsr_o01                                 .  " PBO-Modules
INCLUDE zsr_i01                                 .  " PAI-Modules
INCLUDE zsr_f01                                 .  " FORM-Routines


Top Include:

*&---------------------------------------------------------------------*
*& Include ZSR_TOP                                           Module Pool      ZSR_MOD
*&
*&---------------------------------------------------------------------*

PROGRAM  zsr_mod.

TABLES: ekko, ekpo.

TYPES: BEGIN OF ty_ekko,
        ebeln TYPE ekko-ebeln,
        bukrs TYPE ekko-bukrs,
        ernam TYPE ekko-ernam,
        lifnr TYPE ekko-lifnr,
       END OF ty_ekko,

       BEGIN OF ty_ekpo,
         ebeln TYPE ekpo-ebeln,
         ebelp TYPE ekpo-ebelp,
         matnr TYPE ekpo-matnr,
         werks TYPE ekpo-werks,
         lgort TYPE ekpo-lgort,
       END OF ty_ekpo,

       BEGIN OF ty_out,
        ebeln TYPE ekko-ebeln,
        ebelp TYPE ekpo-ebelp,
        ernam TYPE ekko-ernam,
        matnr TYPE ekpo-matnr,
        werks TYPE ekpo-werks,
        lgort TYPE ekpo-lgort,
        bukrs TYPE ekko-bukrs,
        lifnr TYPE ekko-lifnr,
       END OF ty_out.

DATA: ok_code1 TYPE sy-ucomm,
      ok_code2 TYPE sy-ucomm,
      editable TYPE i.

DATA: wa_ekko TYPE ty_ekko,
      wa_ekpo TYPE ty_ekpo,
      wa_out  TYPE ty_out,
      it_ekko TYPE STANDARD TABLE OF ty_ekko,
      it_ekpo TYPE STANDARD TABLE OF ty_ekpo,
      it_out  TYPE STANDARD TABLE OF ty_out WITH HEADER LINE.

CONTROLS: tab_ctrl TYPE TABLEVIEW USING SCREEN 9001.


Include for PBO:

*&---------------------------------------------------------------------*
*&  Include           ZSR_O01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  STATUS_9000  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_9000 OUTPUT.

  SET PF-STATUS 'GUI_9000'.
  SET TITLEBAR 'TITLE_9000'.

ENDMODULE.                 " STATUS_9000  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  TABLE_CTRL  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE table_ctrl OUTPUT.

  CLEAR: ekko, ekpo.
  ekko-ebeln = wa_out-ebeln.
  ekpo-ebelp = wa_out-ebelp.
  ekko-ernam = wa_out-ernam.
  ekpo-matnr = wa_out-matnr.
  ekpo-werks = wa_out-werks.
  ekpo-lgort = wa_out-lgort.
  ekko-bukrs = wa_out-bukrs.
  ekko-lifnr = wa_out-lifnr.
  CLEAR wa_out.

ENDMODULE.                 " TABLE_CTRL  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_9001  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_9001 OUTPUT.

  SET PF-STATUS 'GUI_9001'.
  SET TITLEBAR 'TITLE_9001'.

ENDMODULE.                 " STATUS_9001  OUTPUT


Include for PAI:

*&---------------------------------------------------------------------*
*&  Include           ZSR_I01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT.

  IF ok_code1 IS NOT INITIAL.
    CASE ok_code1.
      WHEN 'BACK'.
        PERFORM leave_program.
      WHEN 'EXIT'.
        PERFORM leave_program.
      WHEN 'CANCEL'.
        PERFORM leave_program.
      WHEN 'DISP'.
        PERFORM display_po_details.
      WHEN 'CLR'.
        PERFORM clear_screen.
    ENDCASE.
  ENDIF.

ENDMODULE.                 " USER_COMMAND_9000  INPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9001  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_9001 INPUT.

  IF ok_code1 IS NOT INITIAL.
    CASE ok_code2.
      WHEN 'BACK'.
        PERFORM leave_program.
      WHEN 'EXIT'.
        PERFORM leave_program.
      WHEN 'CANCEL'.
        PERFORM leave_program.
    ENDCASE.
  ENDIF.

ENDMODULE.                 " USER_COMMAND_9001  INPUT
*&---------------------------------------------------------------------*
*&      Module  MODIFY_TABLE_CTRL  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE modify_table_ctrl INPUT.

  READ TABLE it_out INTO wa_out
  INDEX tab_ctrl-current_line.

  IF sy-subrc = 0.
    MODIFY it_out INDEX tab_ctrl-current_line FROM wa_out.
  ENDIF.

ENDMODULE.                 " MODIFY_TABLE_CTRL  INPUT


Include for Subroutine:

*&---------------------------------------------------------------------*
*&  Include           ZSR_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  LEAVE_PROGRAM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM leave_program .

  "Refreshing all Internal Tables
  REFRESH: it_out[], it_ekko, it_ekpo.

  "Clearing work area with Screen fields
  CLEAR: it_out, ekko, ekpo.

  "Clearing OK_CODE for new user command
  CLEAR: ok_code1, ok_code2.

  "Going back to initial screen
  LEAVE TO SCREEN 0.

ENDFORM.                    " LEAVE_PROGRAM
*&---------------------------------------------------------------------*
*&      Form  CLEAR_SCREEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM clear_screen .

  CLEAR ekko-ebeln.
  SET SCREEN 9000.

ENDFORM.                    " CLEAR_SCREEN
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_PO_DETAILS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display_po_details .

  IF ekko-ebeln IS NOT INITIAL.
    "Selection of PO Header based Screen 1 PO
    SELECT ebeln bukrs ernam lifnr
      FROM ekko INTO TABLE it_ekko
      WHERE ebeln = ekko-ebeln.

    IF sy-subrc = 0.
      SORT it_ekko BY ebeln.

      "Selection of PO Item for all entries in header table
      SELECT ebeln ebelp matnr werks lgort
        FROM ekpo INTO TABLE it_ekpo
        FOR ALL ENTRIES IN it_ekko
        WHERE ebeln = it_ekko-ebeln.

      IF sy-subrc = 0.
        SORT it_ekpo BY ebeln.
      ELSE.
        MESSAGE 'Item not found' TYPE 'I'.
      ENDIF.

    ELSE.
      MESSAGE 'PO doesn''t exist' TYPE 'I'.
    ENDIF.

    IF it_ekpo IS NOT INITIAL.
      LOOP AT it_ekpo INTO wa_ekpo.
        READ TABLE it_ekko INTO wa_ekko
        WITH KEY ebeln = wa_ekpo-ebeln
        BINARY SEARCH.

        IF sy-subrc = 0.
          "Preparing Output table of Table Control
          wa_out-ebeln = wa_ekko-ebeln.
          wa_out-ebelp = wa_ekpo-ebelp.
          wa_out-ernam = wa_ekko-ernam.
          wa_out-matnr = wa_ekpo-matnr.
          wa_out-werks = wa_ekpo-werks.
          wa_out-lgort = wa_ekpo-lgort.
          wa_out-bukrs = wa_ekko-bukrs.
          wa_out-lifnr = wa_ekko-lifnr.
          APPEND wa_out TO it_out.
          CLEAR: wa_out, wa_ekko, wa_ekpo.
        ENDIF.
      ENDLOOP.
    ENDIF.

  ELSE.
    MESSAGE 'Please Select Valid PO' TYPE 'I'.
  ENDIF.

  IF it_out[] IS NOT INITIAL.

    "Output table is Sorted out by Item
    SORT it_out[] BY ebelp.

    "Table Control is refreshed before get into of this
    REFRESH CONTROL 'TAB_CTRL' FROM SCREEN 9001.

    "Calling Table control screen
    CALL SCREEN 9001.
  ENDIF.

ENDFORM.                    " DISPLAY_PO_DETAILS


Coding for Screen - 1:

PROCESS BEFORE OUTPUT.
  MODULE status_9000.

PROCESS AFTER INPUT.
  MODULE user_command_9000.


Coding for Screen - 2:

PROCESS BEFORE OUTPUT.

  "Module for PF Status & Title Bar of 2nd Screen
  MODULE status_9001.

  "Looping at Output table to pass value to Table Control
  LOOP AT it_out INTO wa_out WITH CONTROL tab_ctrl.

    "Module to pass the value to Screen Fields
    MODULE table_ctrl.
  ENDLOOP.


PROCESS AFTER INPUT.

  "Looping at Output table to fetch next set of values
  LOOP AT it_out.

    "Module to modify Output table with Current Line Index
    MODULE modify_table_ctrl.
  ENDLOOP.

  "Module for using Button on the screen - 2
  MODULE user_command_9001.

http://sapabap-4.blogspot.in/2013/06/simple-table-control.html


badi for infotypes





METHOD if_ex_hrpad00infty~after_input.

  DATA lv_datum               TYPE datum.
  DATA lv_adrs                TYPE text60.
  DATA lv_check(10)           TYPE n VALUE '1234567890'.
  DATA lv_days                TYPE  tfmatage.
  DATA lv_months              TYPE  tfmatage.
  DATA lv_years               TYPE  tfmatage.
  DATA badi_message_handler   TYPE REF TO cl_hrpa_message_list.
  DATA message_handler        TYPE REF TO if_hrpa_message_handler.
  DATA msg                    TYPE symsg.
  DATA is_ok                  TYPE boole_d.
*  CONSTANTS :

  CREATE OBJECT badi_message_handler.
  message_handler = badi_message_handler.
  msg-msgid = 'ZHR'."'YHBN'.
  msg-msgty = 'E'.
  msg-msgno = '030'.
*  msg-msgv1 =  c_ . "'Invalid Plan'(z09).
  DATA : ls_p0591 TYPE p0591.
  IF new_innnn-infty = '0591'.
    CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
      EXPORTING
        prelp = new_innnn
      IMPORTING
        pnnnn = ls_p0591.

    IF ls_p0591-dat01 IS NOT INITIAL
      AND ls_p0591-dat01 GT 0.
      IF  ls_p0591-gra01 IS INITIAL .
        lv_datum      =  ls_p0591-dat01.
        lv_adrs       =  ls_p0591-gra01.
      ENDIF.
    ENDIF.

    IF ls_p0591-dat02 IS NOT INITIAL
    AND ls_p0591-dat02 GT 0.

      IF  ls_p0591-gra02 IS INITIAL .
        lv_datum      =  ls_p0591-dat02.
        lv_adrs       =  ls_p0591-gra02.
      ENDIF.
    ENDIF.

    IF ls_p0591-dat03 IS NOT INITIAL
      AND ls_p0591-dat03 GT 0.

      IF  ls_p0591-gra03 IS INITIAL .
        lv_datum      =  ls_p0591-dat03.
        lv_adrs       =  ls_p0591-gra03.
      ENDIF.

    ENDIF.
    IF ls_p0591-dat04 IS NOT INITIAL
        AND ls_p0591-dat04 GT 0.

      IF  ls_p0591-gra04 IS INITIAL .
        lv_datum      =  ls_p0591-dat04.
        lv_adrs       =  ls_p0591-gra04.
      ENDIF.

    ENDIF.

    IF ls_p0591-dat05 IS NOT INITIAL
      AND ls_p0591-dat05 GT 0.

      IF  ls_p0591-gra05 IS INITIAL .
        lv_datum      =  ls_p0591-dat05.
        lv_adrs       =  ls_p0591-gra05.
      ENDIF.
    ENDIF.
    IF   lv_datum  IS NOT INITIAL
        AND lv_adrs IS INITIAL .

      CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
        EXPORTING
          i_date_from    = lv_datum
*         I_KEY_DAY_FROM =
          i_date_to      = sy-datum
*         I_KEY_DAY_TO   =
*         I_FLG_SEPARATE = ' '
        IMPORTING
          e_days         = lv_days
          e_months       = lv_months
          e_years        = lv_years.

      IF  lv_years  LT 18 AND lv_adrs IS INITIAL .

        CALL METHOD message_handler->add_message
          EXPORTING
            message = msg
            cause   = message_handler->unknown.
        is_ok   = space.
        badi_message_handler->add_messages( message_handler ).

        RAISE error_with_message.
      ENDIF.
      CLEAR : lv_datum,
              lv_adrs,
              lv_days,
              lv_months,
              lv_years.

    ENDIF.
*BREAK ABAP07.
*     data : lv_name1(30) type c.
***--logic for gratuity nominations
*    if ls_p0591-nam01 is not initial.
*      lv_name1 = ls_p0591-nam01.
*    endif.
*
**set PARAMETER ID 'ABC' FIELD LV_NAME1.
*EXPORT LV_NAME1 FROM LV_NAME1 TO MEMORY ID 'LV_NAME1'.

  ENDIF.

*  IF new_innnn-infty = '0008'.
*
*    DATA:
*        ls_p0008     TYPE p0008.
*
*    CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
*      EXPORTING
*        prelp = new_innnn
*      IMPORTING
*        pnnnn = ls_p0008.
*
*
*    DATA : lv_char(10)  TYPE c.
*    DATA: lv_chr(10)    TYPE c,
*          lv_num        TYPE p.
*
*    lv_chr =  new_innnn-data1+92(10).
**lv_num
*    CALL FUNCTION 'MOVE_CHAR_TO_NUM'
*      EXPORTING
*        chr             = lv_chr
*      IMPORTING
*        num             = lv_num
*      EXCEPTIONS
*        convt_no_number = 1
*        convt_overflow  = 2
*        OTHERS          = 3.
*    IF sy-subrc <> 0.
** Implement suitable error handling here
*    ENDIF.
*  ENDIF.
ENDMETHOD.







METHOD if_ex_hrpad00infty~after_input .

  CHECK i001p-molga     EQ '21' AND
        new_innnn-infty EQ '2006'.

  DATA:
*    lt_0001 TYPE TABLE OF p0001,
*    lt_0007 TYPE TABLE OF p0007,
*    lt_0008 TYPE TABLE OF p0008,
*    lt_0016 TYPE TABLE OF p0016,
*    lv_quomo TYPE quomo,
    ls_2006 TYPE p2006,
    ls_old_2006 TYPE p2006,
    lv_mandt TYPE sy-mandt,
    lv_ok TYPE c.
  INCLUDE mp326011.

  PERFORM use_3260 IN PROGRAM mp326000
                   USING      new_innnn-begda
                              i001p-molga
                              lv_ok.
  CHECK lv_ok IS NOT INITIAL.
* A 3260 használatban van!

  CLASS cl_hr_pnnnn_type_cast DEFINITION LOAD.

  CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
    EXPORTING
      prelp = new_innnn
    IMPORTING
      pnnnn = ls_2006.
  PERFORM memory_id IN PROGRAM mp326000
                    USING      gv_memory_id.
  IMPORT gv_from_3260 TO gv_from_3260
         FROM MEMORY ID gv_memory_id.
  IF sy-subrc NE 0.
    CLEAR gv_from_3260.
  ENDIF.
  IF gv_from_3260 NE '3260'.
* { C5066700 2009.12.13 - Nem pontos kulccsal ellenőrizzük
*    CALL FUNCTION 'HR_READ_INFOTYPE'
*      EXPORTING
**       TCLAS                 = 'A'
*        pernr                 = ls_2006-pernr
*        infty                 = '0001'
*        begda                 = ls_2006-begda
*        endda                 = ls_2006-endda
**       BYPASS_BUFFER         = ' '
**       LEGACY_MODE           = ' '
**     IMPORTING
**       SUBRC                 =
*      TABLES
*        infty_tab             = lt_0001
*      EXCEPTIONS
*        infty_not_found       = 1
*        OTHERS                = 2.
*    CALL FUNCTION 'HR_READ_INFOTYPE'
*      EXPORTING
**       TCLAS                 = 'A'
*        pernr                 = ls_2006-pernr
*        infty                 = '0007'
*        begda                 = ls_2006-begda
*        endda                 = ls_2006-endda
**       BYPASS_BUFFER         = ' '
**       LEGACY_MODE           = ' '
**     IMPORTING
**       SUBRC                 =
*      TABLES
*        infty_tab             = lt_0007
*      EXCEPTIONS
*        infty_not_found       = 1
*        OTHERS                = 2.
*    CALL FUNCTION 'HR_READ_INFOTYPE'
*      EXPORTING
**       TCLAS                 = 'A'
*        pernr                 = ls_2006-pernr
*        infty                 = '0008'
*        begda                 = ls_2006-begda
*        endda                 = ls_2006-endda
**       BYPASS_BUFFER         = ' '
**       LEGACY_MODE           = ' '
**     IMPORTING
**       SUBRC                 =
*      TABLES
*        infty_tab             = lt_0008
*      EXCEPTIONS
*        infty_not_found       = 1
*        OTHERS                = 2.
*    CALL FUNCTION 'HR_READ_INFOTYPE'
*      EXPORTING
**       TCLAS                 = 'A'
*        pernr                 = ls_2006-pernr
*        infty                 = '0016'
*        begda                 = ls_2006-begda
*        endda                 = ls_2006-endda
**       BYPASS_BUFFER         = ' '
**       LEGACY_MODE           = ' '
**     IMPORTING
**       SUBRC                 =
*      TABLES
*        infty_tab             = lt_0016
*      EXCEPTIONS
*        infty_not_found       = 1
*        OTHERS                = 2.
*    PERFORM det_quomo IN PROGRAM saplhrlv
*                      TABLES     lt_0001
*                                 lt_0007
*                                 lt_0008
*                                 lt_0016
*                      USING      ls_2006-begda
*                                 ls_2006-pernr
*                      CHANGING   lv_quomo.
*    SELECT SINGLE mandt
*           INTO lv_mandt
*           FROM t5hpbs64
*           WHERE mopgk  EQ i503-konty
*           AND   mozko  EQ i001p-mozko
*           AND   quomo  EQ lv_quomo
*           AND   endda  GE ls_2006-begda
*           AND   begda  LE ls_2006-endda
*           AND   zosker EQ ls_2006-ktart.
    SELECT SINGLE mandt
           INTO lv_mandt
           FROM t5hpbs64
           WHERE endda  GE ls_2006-begda
           AND   begda  LE ls_2006-endda
           AND   zosker EQ ls_2006-ktart.
* } C5066700 2009.12.13 - Nem pontos kulccsal ellenőrizzük
    IF sy-subrc EQ 0.
* { A felhasználás kezdete és vége változhat!
      CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
        EXPORTING
          prelp = old_innnn
        IMPORTING
          pnnnn = ls_old_2006.
      CLEAR: ls_2006-desta,
             ls_2006-deend,
             ls_2006-aedtm,
             ls_2006-uname,
             ls_old_2006-desta,
             ls_old_2006-deend,
             ls_old_2006-aedtm,
             ls_old_2006-uname.
      IF ls_2006 NE ls_old_2006 OR
         ipsyst-ioper EQ 'DEL'  OR
         ipsyst-ioper EQ 'LIS9' OR
         ipsyst-ioper EQ 'EDQ'  OR
         ipsyst-ioper EQ 'MEDQ' OR
         ipsyst-ioper EQ 'DLIM'.
        MESSAGE e801(hrpbshu).
      ENDIF.
* } A felhasználás kezdete és vége változhat!
    ELSE.
* { C5066700 2009.12.03 - Nem pontos kulccsal ellenőrizzük
*      SELECT SINGLE mandt
*             INTO lv_mandt
*             FROM t5hpbs64
*             WHERE mopgk  EQ i503-konty
*             AND   mozko  EQ i001p-mozko
*             AND   quomo  EQ lv_quomo
*             AND   endda  GE ls_2006-begda
*             AND   begda  LE ls_2006-endda
*             AND   fajta  EQ ls_2006-ktart.
      SELECT SINGLE mandt
             INTO lv_mandt
             FROM t5hpbs64
             WHERE endda  GE ls_2006-begda
             AND   begda  LE ls_2006-endda
             AND   fajta  EQ ls_2006-ktart
             AND   zosker NE space.
* } C5066700 2009.12.03 - Nem pontos kulccsal ellenőrizzük
      IF sy-subrc EQ 0.
        MESSAGE e801(hrpbshu).
      ENDIF.
    ENDIF.
  ENDIF.
ENDMETHOD.

   
                             Enhancement of IT0001







 *----------------------------------------------------------------------*
*   INCLUDE ZP000120                                                   *
*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Module  MOD_PBO  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE module_pbo_0001 OUTPUT.

  TABLES:zhrdesignation.

  DATA:
     lwa_desig           TYPE zhrdesignation,
     lwa_disp            TYPE zhr_discipline,
     lt_desig            TYPE TABLE OF zhrdesignation.

  DATA:
     gv_txt              TYPE zhrdetxt,
     gv_discp            TYPE zhr_distxt.

  IF  p0001-zzdesig IS NOT INITIAL.
    SELECT SINGLE * FROM zhrdesignation INTO lwa_desig
                   WHERE spras EQ sy-langu
                     AND desig = p0001-zzdesig.

    IF gv_txt IS INITIAL.
      gv_txt = lwa_desig-detxt.
    ENDIF.
    IF sy-subrc NE 0.
      MESSAGE i000(zhr) WITH p0001-zzdesig.
      CLEAR : p0001-zzdesig, zhrdesignation-detxt.
    ENDIF.
  ENDIF.

  IF p0001-zz_disp IS NOT INITIAL.

    SELECT SINGLE * FROM zhr_discipline INTO lwa_disp WHERE code EQ p0001-zz_disp.

    IF gv_discp IS INITIAL.
      gv_discp = lwa_disp-dis_txt.
    ENDIF.
    IF sy-subrc NE 0.
      MESSAGE i028(zhr) WITH p0001-zz_disp.

    ENDIF.

  ENDIF.

*  SELECT SINGLE detxt FROM zhrdesignation INTO gv_txt WHERE spras EQ sy-langu AND
*                                                      desig EQ p0001-zzdesig.




ENDMODULE.                 " MOD_PBO  OUTPUT


*----------------------------------------------------------------------*
*  MODULE f_getdesignations
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE f_getdesignations.

**  DATA lt_desig TYPE TABLE OF zhrdesignation.
  DATA:
     lt_retval           TYPE TABLE OF ddshretval,
     lwa_retval          TYPE ddshretval.

*  FIELD-SYMBOLS <fs_retval> TYPE ddshretval.
*  FIELD-SYMBOLS <fs_field> TYPE any.
*  DATA loc_field1 TYPE string.
*  DATA loc_field2 TYPE string.
  DATA: lt_fields TYPE TABLE OF dynpread,
      ls_fields  LIKE LINE OF lt_fields.
**
  CLEAR: lt_desig, lt_retval.
**
*--To get the Designation details.
  SELECT * FROM zhrdesignation INTO TABLE lt_desig.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'DESIG'
      value_org       = 'S'
*     DYNPPROG        = SY-REPID
*     DYNPNR          = SY-DYNNR
      dynprofield     = 'P0001-ZZDESIG'
    TABLES
      value_tab       = lt_desig
*     field_tab       = field_tab
      return_tab      = lt_retval
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.
*  IF sy-subrc = 0.
*    READ TABLE lt_retval ASSIGNING <fs_retval> INDEX 1.
*    IF sy-subrc = 0.
*      SPLIT <fs_retval>-retfield AT '-' INTO loc_field1 loc_field2.
*      ASSIGN COMPONENT loc_field2 OF STRUCTURE p0001 TO <fs_field>.
*      <fs_field>  = <fs_retval>-fieldval.
*      CLEAR: loc_field1, loc_field2.
*      UNASSIGN <fs_field>.
*    ENDIF.
*  ENDIF.

  IF sy-subrc EQ 0.
    READ TABLE lt_retval INTO lwa_retval INDEX 1.
    p0001-zzdesig = lwa_retval-fieldval.
  ENDIF.

  READ TABLE lt_desig INTO zhrdesignation WITH KEY desig = p0001-zzdesig ."<fs_retval>-fieldval.
  IF sy-subrc = 0.
***--Setting the Dynpro value back.
    CLEAR: ls_fields, lt_fields.
**
    ls_fields-fieldname = 'P0001-ZZ_CATCODE'.
    ls_fields-fieldvalue = zhrdesignation-cat_code.
    APPEND ls_fields TO lt_fields.
    CLEAR: ls_fields.

    ls_fields-fieldname = 'P0001-ZZ_SCALE'.
    ls_fields-fieldvalue = zhrdesignation-scale.
    APPEND ls_fields TO lt_fields.
    CLEAR: ls_fields.

    ls_fields-fieldname = 'P0001-ZZ_GRADE'.
    ls_fields-fieldvalue = zhrdesignation-grade.
    APPEND ls_fields TO lt_fields.
    CLEAR: ls_fields.
**
    ls_fields-fieldname = 'GV_TXT'."ZHRDESIGNATION-DETXT'.
    ls_fields-fieldvalue = zhrdesignation-detxt.
    APPEND ls_fields TO lt_fields.
    CLEAR: ls_fields.
**
****        ls_fields-fieldname = 'ZHRDESIGNATION-SHTXT'.
****        ls_fields-fieldvalue = zhrdesignation-shtxt.
****        APPEND ls_fields TO lt_fields.
****        CLEAR: ls_fields.
**
    IF lt_fields IS NOT INITIAL.
      CALL FUNCTION 'DYNP_VALUES_UPDATE'
        EXPORTING
          dyname               = sy-cprog
          dynumb               = sy-dynnr
        TABLES
          dynpfields           = lt_fields
        EXCEPTIONS
          invalid_abapworkarea = 1
          invalid_dynprofield  = 2
          invalid_dynproname   = 3
          invalid_dynpronummer = 4
          invalid_request      = 5
          no_fielddescription  = 6
          undefind_error       = 7
          OTHERS               = 8.
      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.
  ENDIF.
**    ENDIF.
**  ENDIF.


ENDMODULE.                    "f_getdesignations