取工作日曆數據

當需要讀取0007的日工作計劃的時候可以使用到這個

TCODE:PT63

做法,將PT63的值直接取出來

            LOOP AT LT_QUERYCONDITION INTO LS_QUERYCONDITION.
              READ TABLE LT_PA0105 ASSIGNING <fs_pa0105> WITH KEY USRID = LS_QUERYCONDITION-WORK_EMAIL.
              IF SY-SUBRC EQ 0.

                LV_WORKSCHEDULE_BEGDA = LS_QUERYCONDITION-WORKSCHEDULE_BEGDA.
                LV_WORKSCHEDULE_ENDDA = LS_QUERYCONDITION-WORKSCHEDULE_ENDDA.

                CLEAR:LS_DATA,SEL_TAB.

                CL_SALV_BS_RUNTIME_INFO=>SET(
                  DISPLAY  = ABAP_FALSE
                  METADATA = ABAP_FALSE
                  DATA     = ABAP_TRUE  ).

                CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
                  EXPORTING
                    CURR_REPORT = 'RPTPSH10'
                  TABLES
                    SELECTION_TABLE = SEL_TAB.
              LOOP AT SEL_TAB ASSIGNING FIELD-SYMBOL(<FS_SEL_TAB>).

                IF <FS_SEL_TAB>-selname = 'PNPBEGDA'.
                  <FS_SEL_TAB>-sign = 'I'.
                  <FS_SEL_TAB>-option = 'EQ'.
                  <FS_SEL_TAB>-LOW = LV_WORKSCHEDULE_BEGDA.
                ENDIF.

                IF <FS_SEL_TAB>-selname = 'PNPENDDA'.
                  <FS_SEL_TAB>-sign = 'I'.
                  <FS_SEL_TAB>-option = 'EQ'.
                  <FS_SEL_TAB>-LOW = LV_WORKSCHEDULE_ENDDA.
                ENDIF.

                IF <FS_SEL_TAB>-selname = 'PNPTIMR1'.
                  <FS_SEL_TAB>-sign = 'I'.
                  <FS_SEL_TAB>-option = 'EQ'.
                  <FS_SEL_TAB>-LOW = SPACE.
                ENDIF.

                IF <FS_SEL_TAB>-selname = 'PNPTIMR2'.
                  <FS_SEL_TAB>-sign = 'I'.
                  <FS_SEL_TAB>-option = 'EQ'.
                  <FS_SEL_TAB>-LOW = SPACE.
                ENDIF.

                IF <FS_SEL_TAB>-selname = 'PNPTIMR3'.
                  <FS_SEL_TAB>-sign = 'I'.
                  <FS_SEL_TAB>-option = 'EQ'.
                  <FS_SEL_TAB>-LOW = SPACE.
                ENDIF.

                IF <FS_SEL_TAB>-selname = 'PNPTIMR4'.
                  <FS_SEL_TAB>-sign = 'I'.
                  <FS_SEL_TAB>-option = 'EQ'.
                  <FS_SEL_TAB>-LOW = SPACE.
                ENDIF.

                IF <FS_SEL_TAB>-selname = 'PNPTIMR5'.
                  <FS_SEL_TAB>-sign = 'I'.
                  <FS_SEL_TAB>-option = 'EQ'.
                  <FS_SEL_TAB>-LOW = SPACE.
                ENDIF.

                IF <FS_SEL_TAB>-selname = 'PNPTIMR6'.
                  <FS_SEL_TAB>-sign = 'I'.
                  <FS_SEL_TAB>-option = 'EQ'.
                  <FS_SEL_TAB>-LOW = 'X'.
                ENDIF.

                IF <FS_SEL_TAB>-selname = 'PNPPERNR'.
                  <FS_SEL_TAB>-sign = 'I'.
                  <FS_SEL_TAB>-option = 'EQ'.
                  <FS_SEL_TAB>-LOW = <FS_PA0105>-PERNR.
                ENDIF.
              ENDLOOP.

              TRY .

                SUBMIT RPTPSH10
                  WITH SELECTION-TABLE SEL_TAB
                  AND RETURN.

              CATCH CX_ROOT INTO DATA(LV_CX_TOOR).

              ENDTRY.

              TRY.

                CL_SALV_BS_RUNTIME_INFO=>GET_DATA_REF(
                  IMPORTING R_DATA = LS_DATA ).
                  ASSIGN LS_DATA->* TO <LT_DATA>.

                  MOVE-CORRESPONDING LS_QUERYCONDITION TO LS_WORKSCHEDULE.
                  LOOP AT <LT_DATA> ASSIGNING FIELD-SYMBOL(<FS_DATA>).
                    ASSIGN COMPONENT 'TPROG' OF STRUCTURE <FS_DATA> TO <FS_VALUE>.
                    IF <FS_VALUE> NE 'OFF'.

                      ASSIGN COMPONENT 'DATUM' OF STRUCTURE <FS_DATA> TO <FS_VALUE>.

                      ASSIGN COMPONENT 'TPROG' OF STRUCTURE <FS_DATA> TO <FS_VALUE>.

                    ENDIF.

                    AT LAST.
   
                    ENDAT.

                  ENDLOOP.

                  IF SY-SUBRC EQ 0 AND LV_TYPE NE 'E'.
                    LV_TYPE = 'S'.
                    LV_MESSAGE = TEXT-S01.
                  ELSEIF LV_TYPE NE 'E'.
                    LV_TYPE = 'E'.
                    LV_MESSAGE = TEXT-E04.
                  ENDIF.
                CATCH CX_SALV_BS_SC_RUNTIME_INFO.

                ENDTRY.

                CL_SALV_BS_RUNTIME_INFO=>CLEAR_ALL( ).

              ENDIF.
            ENDLOOP.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章