Tuesday, 23 May 2017

CAT2 FM HELP_START Function Module Exit


function help_start.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Function Module HELP_START, Start                                                                                                                 A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZWBS_F4_HELP_CAT2.    "active version

 IF SY-TCODE 'CAT2' AND HELP_INFOS-FIELDNAME 'RPROJ' AND HELP_INFOS-DYNPROFLD 'CATSD-RPROJ'
         AND HELP_INFOS-DYNPPROG 'SAPLCATS'AND HELP_INFOS-MENUFUNCT 'HC' .
      TYPESBEGIN OF TY_PA0000,
               PERNR TYPE PA0000-PERNR,
               ENDDA TYPE PA0000-ENDDA,
               BEGDA TYPE PA0000-BEGDA,
               STAT2 TYPE PA0000-STAT2,
             END OF TY_PA0000.
      DATA  GT_PA0000 TYPE TABLE OF TY_PA0000,
              GS_PA0000 TYPE TY_PA0000.

      TYPES BEGIN OF TY_EMP,
                OBJID    TYPE HRP1001-OBJID,
                VARYF    TYPE HRP1001-VARYF,
                BEGDA    TYPE HRP1001-BEGDA,
                ENDDA    TYPE HRP1001-ENDDA,
                SOBID    TYPE HRP1001-SOBID,
                PROZT    TYPE HRP1001-PROZT,
                DEL_FLAG,
              END OF TY_EMP.
      DATA :  GT_HRP1001 TYPE TABLE OF TY_EMP,
              GS_HRP1001 TYPE TY_EMP.

      TYPES BEGIN OF TY_FINAL,
                WBS        TYPE PRPS-POSID,
                WBS_NAME   TYPE PRPS-POST1,
              END OF TY_FINAL.
      DATA :  GT_FINAL TYPE TABLE OF TY_FINAL,
              GS_FINAL TYPE TY_FINAL.
      DATA W_RETURN TYPE  BAPIRETURN1.
      DATAP_RECORD TYPE P9011.
      DATA LV_SEQNR       TYPE PA9011-SEQNR,
             LV_CHECK_PERNR TYPE PA9011-PERNR.
      DATA LV_START_DATE TYPE SY-DATUM,
             LV_END_DATE   TYPE SY-DATUM.

      TYPESBEGIN OF TY_PA9011,
               PERNR     TYPE PA9011-PERNR,
               SUBTY     TYPE PA9011-SUBTY,
               OBJPS     TYPE PA9011-OBJPS,
               SPRPS     TYPE PA9011-SPRPS,
               ENDDA     TYPE PA9011-ENDDA,
               BEGDA     TYPE PA9011-BEGDA,
               SEQNR     TYPE PA9011-SEQNR,
               AEDTM     TYPE PA9011-AEDTM,
               UNAME     TYPE PA9011-UNAME,
               CLNT_CODE TYPE PA9011-CLNT_CODE,
               CLIENT    TYPE PA9011-CLIENT,
               TEAM_CODE TYPE PA9011-TEAM_CODE,
               TEAM      TYPE PA9011-TEAM,
               BILLABLE  TYPE PA9011-BILLABLE,
             END OF TY_PA9011.
      DATA GT_PA9011 TYPE TABLE OF TY_PA9011,
             GS_PA9011 TYPE PA9011.

      DATA LV_PSPHI TYPE PRPS-PSPHI.
      DATA LV_FNAME     TYPE CHAR40,
             LV_LNAME     TYPE CHAR40,
             LV_EMPNO     TYPE CHAR10,
             G_MESSAGE_V1 TYPE STRING,
             G_MESSAGE_V2 TYPE STRING,
             G_MESSAGE_V3 TYPE STRING,
             G_MESSAGE_V4 TYPE STRING.
DATAW_FIELD(40).
FIELD-SYMBOLS<FS_START_DATE>.

DATAW_PERNR(40).
FIELD-SYMBOLS<FS_PERNR>.

DATA LV_DATE TYPE CHAR10.
      TYPES BEGIN OF TY_EMP1,
                EMPLOYEE_NO   TYPE PA0001-PERNR,
                EMPLOYEE_NAME TYPE PA0001-ENAME,
              END OF TY_EMP1.
      DATA :  GT_FINAL1 TYPE TABLE OF TY_EMP1,
              GS_FINAL1 TYPE TY_EMP1.
      DATA LV_PROJ  TYPE PRPS-POSID.
      DATA GV_PRPS TYPE PRPS.
      DATA LV_INDEX TYPE VALUE 1.
TYPES T_RETURN_TAB  TYPE DDSHRETVAL.
DATAI_RETURN_TAB TYPE STANDARD TABLE OF T_RETURN_TAB,
      W_RETURN_TAB TYPE T_RETURN_TAB.
DATAI_DYNPFIELDS LIKE STANDARD TABLE OF DYNPREAD,
      W_DYNPFIELDS TYPE DYNPREAD.

    W_PERNR '(SAPLCATS)CATSFIELDS-PERNR'.
    ASSIGN (W_PERNR)  TO <FS_PERNR>.
    CONDENSE <FS_PERNR>.
      IF GT_PA0000[] IS INITIAL.
        SELECT
              PERNR
              ENDDA
              BEGDA
              STAT2
              FROM PA0000
              INTO TABLE GT_PA0000
              WHERE PERNR <FS_PERNR>
              AND STAT2 '3'.
      ENDIF.

      IF GT_PA0000[] IS NOT INITIAL.
        CLEAR GT_HRP1001[].
        SELECT
              OBJID
              VARYF
              BEGDA
              ENDDA
              SOBID
              PROZT
              FROM HRP1001
              INTO CORRESPONDING FIELDS OF TABLE GT_HRP1001
              FOR ALL ENTRIES IN GT_PA0000
              WHERE OBJID GT_PA0000-PERNR
              AND OTYPE 'P'
              AND SCLAS 'PJ' .
      ENDIF.
*    W_FIELD = '(SAPLCATS)CATSFIELDS-DATEFROM'.
*    ASSIGN (W_FIELD)  TO <FS_START_DATE>.
*    CONDENSE <FS_START_DATE>.
*          LV_DATE = <FS_START_DATE>.
    data gv_workdate type char10,
       mid3(3).
clear gv_workdate.
IMPORT gv_workdate TO gv_workdate FROM MEMORY ID mid3.
LV_DATE gv_workdate.
      LV_INDEX 1.
      IF GT_HRP1001[] IS NOT INITIAL.
        LOOP AT GT_HRP1001 INTO GS_HRP1001.
          IF LV_DATE BETWEEN GS_HRP1001-BEGDA AND GS_HRP1001-ENDDA.
            GS_HRP1001-DEL_FLAG ''.
          ELSE.
            GS_HRP1001-DEL_FLAG 'X'.
          ENDIF.
          MODIFY GT_HRP1001 FROM GS_HRP1001 INDEX LV_INDEX TRANSPORTING DEL_FLAG.
          CLEAR GS_HRP1001.
          LV_INDEX LV_INDEX + 1.
        ENDLOOP.
        DELETE GT_HRP1001 WHERE DEL_FLAG 'X'.
      ENDIF.
      IF GT_HRP1001[] IS NOT INITIAL.
        CLEAR GT_FINAL[].
        LOOP AT GT_HRP1001 INTO GS_HRP1001.
          CONCATENATE 'PR' GS_HRP1001-SOBID INTO GS_HRP1001-SOBID.
          CONDENSE GS_HRP1001-SOBID.

          CLEAR LV_PSPHI,LV_PROJ,GV_PRPS.
          DATA LV_PS_POSNR TYPE PRPS-PSPNR.
          SELECT SINGLE PSPNR POST1 FROM PRPS INTO LV_PS_POSNR,GS_FINAL-WBS_NAME WHERE OBJNR GS_HRP1001-SOBID.

          CALL FUNCTION 'CJDW_PRPS_SELECT_SINGLE'
            EXPORTING
              POSNR             LV_PS_POSNR
            IMPORTING
              E_PRPS            GV_PRPS
            EXCEPTIONS
              MISSING_PARAMETER 1
              NOT_FOUND         2
              OTHERS            3.

          GS_FINAL-WBS LV_PS_POSNR.

          CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
            EXPORTING
              INPUT  GS_FINAL-WBS
            IMPORTING
              OUTPUT GS_FINAL-WBS.
           APPEND GS_FINAL TO GT_FINAL.
          CLEAR GS_FINAL.
          LV_INDEX LV_INDEX + 1.
        ENDLOOP.
      ENDIF.
IF GT_FINAL[] IS NOT INITIAL.
  CLEAR I_RETURN_TAB[],I_DYNPFIELDS[].
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
       RETFIELD               'WBS'
       DYNPPROG               =  'SAPLCATS'
       DYNPNR                 =  '2200'
       DYNPROFIELD            'CATSD-RPROJ'
        WINDOW_TITLE           ' F4 HELP FOR WBS'
       VALUE_ORG              'S'
      TABLES
        VALUE_TAB              =   GT_FINAL
        RETURN_TAB  I_RETURN_TAB.
      IF SY-SUBRC AND LINESI_RETURN_TAB 1.
        READ TABLE I_RETURN_TAB INTO W_RETURN_TAB INDEX 1.
        SELECTION 'X'.
        SELECT_VALUE =  W_RETURN_TAB-FIELDVAL.
        EXIT.
      ENDIF.
ENDIF.
EXIT.
ENDIF.
**********************************

ENDENHANCEMENT.
*$*$-End:   (1)---------------------------------------------------------------------------------$*$*

No comments:

Post a Comment