Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9129

Re: bdc tablecontrol for basicpay

$
0
0

REPORT ZBASICPAY_CONTROL.

 

 

 

 

              TYPE-POOLS SLIS.

              TABLES:PERNR,RP50G,Q0008.

               INFOTYPES:0008.

 

 

              SELECTION-SCREEN:BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.

                PARAMETERS:P_FILE TYPE RLGRAP-FILENAME.

                 SELECTION-SCREEN:END OF BLOCK B1.

 

 

 

 

 

 

                          TYPES:BEGIN OF TY_PA30,

                            PERNR(30) TYPE C,

                            BEGDA(10) TYPE C,

                            ENDDA(10) TYPE C,

                            TRFAR(2) TYPE C,

                            TRFGB(2) TYPE C,

                            TRFGR(5) TYPE C,

                            LGART(5) TYPE C,

                            BETRG(6) TYPE C,

                            ANZHL(5) TYPE C,

                            END OF TY_PA30.

 

 

 

 

                  DATA: WA_PA30 TYPE TY_PA30,

                        IT_PA30 TYPE TABLE OF TY_PA30.

 

 

 

 

                     DATA:WA_BDCDATA TYPE BDCDATA,

                         IT_BDCDATA TYPE TABLE OF BDCDATA.

 

 

                     DATA:WA_BDCMSGCOLL TYPE BDCMSGCOLL,

                          IT_BDCMSGCOLL TYPE TABLE OF BDCMSGCOLL.

                       

                         DATA: N(2) TYPE N,

                              CNT(2) TYPE N,

                              FLD(20) TYPE C,

                                 X(2) TYPE N,

                                COUNT TYPE I.

 

 

 

 

                       DATA: V_MSG TYPE STRING.

 

 

                    TYPES:BEGIN OF TY_ERROR,

                            RECORDS TYPE I,

                             MESSAGE(100) TYPE C,

                            END OF TY_ERROR.

 

 

 

 

                       DATA:WA_ERROR TYPE TY_ERROR,

                            IT_ERROR TYPE TABLE OF TY_ERROR.

 

 

                           DATA:WA_FCAT TYPE SLIS_FIELDCAT_ALV,

                                IT_FCAT TYPE SLIS_T_FIELDCAT_ALV.

 

 

                    DATA:BEGIN OF WA_LGART,

                         LGA01(5) TYPE C,

                        END OF WA_LGART.

              

                    DATA:BEGIN OF WA_BETRG,

                          BET01(6) TYPE C,

                         END OF WA_BETRG.

 

 

                   DATA:BEGIN OF WA_ANZHL,

                        ANZ01(5) TYPE C,

                        END OF WA_ANZHL.

 

 

                 DATA:IT_LGART LIKE TABLE OF WA_LGART,

                      IT_BETRG LIKE TABLE OF WA_BETRG,

                      IT_ANZHL LIKE TABLE OF WA_ANZHL.

 

 

 

 

                        DATA: FNAM TYPE STRING.

                          AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

                            

                             PERFORM OPEN_FILE.

                             START-OF-SELECTION.

 

 

                             PERFORM UPLOAD_DATA.

                            PERFORM PROCESS_DATA.

                           PERFORM DISPLAY_ERRORS.

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

*& Form OPEN_FILE

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

* text

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

* --> p1 text

* <-- p2 text

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

                      

                              FORM OPEN_FILE .

                        CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

                          CHANGING

                        FILE_NAME = P_FILE.

                          ENDFORM. " OPEN_FILE

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

*& Form UPLOAD_DATA

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

* text

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

* --> p1 text

* <-- p2 text

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

 

 

 

 

                          FORM UPLOAD_DATA .

                              FNAM = P_FILE.

                     CALL FUNCTION 'GUI_UPLOAD'

                       EXPORTING

                        FILENAME = FNAM

                       HAS_FIELD_SEPARATOR = 'X'

                        

                            TABLES

                      DATA_TAB = IT_PA30.

                           ENDFORM. " UPLOAD_DATA

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

*& Form PROCESS_DATA

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

* text

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

* --> p1 text

* <-- p2 text

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

FORM PROCESS_DATA .

LOOP AT IT_PA30 INTO WA_PA30.

REFRESH :IT_BDCDATA,IT_LGART,IT_BETRG,IT_ANZHL.

SPLIT:WA_PA30-LGART AT ',' INTO TABLE IT_LGART,

WA_PA30-BETRG AT ',' INTO TABLE IT_BETRG,

WA_PA30-ANZHL AT ',' INTO TABLE IT_ANZHL.

perform bdc_dynpro using 'SAPMP50A' '1000'.

perform bdc_field using 'BDC_OKCODE' '=INS'.

perform bdc_field using 'RP50G-PERNR' WA_PA30-PERNR.

perform bdc_field using 'RP50G-TIMR6' 'X'.

perform bdc_field using 'BDC_CURSOR' 'RP50G-CHOIC'.

perform bdc_field using 'RP50G-CHOIC' '0008'.

perform bdc_dynpro using 'MP000800' '2000'.

perform bdc_field using 'BDC_OKCODE' 'UPD'.

perform bdc_field using 'P0008-BEGDA' WA_PA30-BEGDA.

perform bdc_field using 'P0008-ENDDA' WA_PA30-ENDDA.

perform bdc_field using 'P0008-TRFAR' WA_PA30-TRFAR.

perform bdc_field using 'P0008-TRFGB' WA_PA30-TRFGB.

perform bdc_field using 'P0008-TRFGR' WA_PA30-TRFGR.

perform bdc_field using 'P0008-ANCUR' 'EUR'.

perform bdc_field using 'Q0008-IBBEG' '14.11.2014'.

perform bdc_field using 'P0008-WAERS' 'EUR'.

LOOP AT IT_LGART INTO WA_LGART.

N = N + 1.

ENDLOOP.

CNT = 01.

X = 01.

perform bdc_dynpro using 'MP000800' '2000'.

DO N TIMES.

IF CNT > 5.

CNT = 01.

perform bdc_field using 'BDC_CURSOR' 'Q0008-LGART(01)'.

perform bdc_field using 'BDC_OKCODE' '=P+'.

perform bdc_dynpro using 'MP000800' '2000'.

perform bdc_field using 'BDC_OKCODE' '=ENTR'.

ENDIF.

LOOP AT IT_LGART INTO WA_LGART FROM X TO X.

CONCATENATE 'Q0008-LGART( ' CNT ')' INTO FLD.

PERFORM BDC_FIELD USING FLD WA_LGART-LGA01.

ENDLOOP.

LOOP AT IT_BETRG INTO WA_BETRG FROM X TO X.

CONCATENATE 'Q0008-BETRG( ' CNT ')' INTO FLD.

PERFORM BDC_FIELD USING FLD WA_BETRG-BET01.

ENDLOOP.

LOOP AT IT_ANZHL INTO WA_ANZHL FROM X TO X.

CONCATENATE 'Q0008-ANZHL( ' CNT ')' INTO FLD.

PERFORM BDC_FIELD USING FLD WA_ANZHL-ANZ01.

ENDLOOP.

X = X + 1.

CNT = CNT + 1.

ENDDO.

CALL TRANSACTION 'PA30' USING IT_BDCDATA MODE 'A' UPDATE 'A' MESSAGES INTO IT_BDCMSGCOLL.

LOOP AT IT_BDCMSGCOLL INTO WA_BDCMSGCOLL.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = WA_BDCMSGCOLL-MSGID

LANG = SY-LANGU

NO = WA_BDCMSGCOLL-MSGNR

V1 = WA_BDCMSGCOLL-MSGV1

V2 = WA_BDCMSGCOLL-MSGV2

V3 = WA_BDCMSGCOLL-MSGV3

V4 = WA_BDCMSGCOLL-MSGV4

IMPORTING

MSG = V_MSG.

IF SY-SUBRC EQ 0.

COUNT = COUNT + 1.

WA_ERROR-RECORDS = COUNT.

WA_ERROR-MESSAGE = V_MSG.

APPEND WA_ERROR TO IT_ERROR.

ENDIF.

ENDLOOP.

ENDLOOP.

ENDFORM. " PROCESS_DATA

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

*& Form DISPLAY_ERRORS

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

* text

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

* --> p1 text

* <-- p2 text

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

FORM DISPLAY_ERRORS .

WA_FCAT-FIELDNAME = 'RECORDS'.

WA_FCAT-SELTEXT_M = 'S.NO'.

WA_FCAT-OUTPUTLEN = '5'.

APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = 'MESSAGE'.

WA_FCAT-SELTEXT_M = 'STATUS'.

WA_FCAT-OUTPUTLEN = '100'.

APPEND WA_FCAT TO IT_FCAT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

IT_FIELDCAT = IT_FCAT

TABLES

T_OUTTAB = IT_ERROR.

ENDFORM. " DISPLAY_ERRORS

FORM BDC_DYNPRO USING PROG SCREEN.

CLEAR WA_BDCDATA.

WA_BDCDATA-PROGRAM = PROG.

WA_BDCDATA-DYNPRO = SCREEN.

WA_BDCDATA-DYNBEGIN = 'X'.

APPEND WA_BDCDATA TO IT_BDCDATA.

ENDFORM. "BDC_DYNPRO

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

* Insert field *

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

FORM BDC_FIELD USING FIELD VALUE.

CLEAR WA_BDCDATA.

WA_BDCDATA-FNAM = FIELD.

WA_BDCDATA-FVAL = VALUE.

APPEND WA_BDCDATA TO IT_BDCDATA.

ENDFORM.


Viewing all articles
Browse latest Browse all 9129

Trending Articles