zhongl 发表于 2015-9-20 13:18:39

SAP data migration: Create billing plan for sales

  引用:翱翔云天
    report ZUP2
       no standard page heading line-size 255.
  
  
  *include bdcrecx1.
parameters: dataset LIKE RLGRAP-FILENAME.
PARAMETERS: P_MODE LIKE CTU_PARAMS-DISMODE DEFAULT 'E'.
*       Batchinputdata of single transaction
DATA:   BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE.
*       messages of call transaction
DATA:   MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
*
*** Generated data section with specific formatting - DO NOT CHANGE***
data: begin of record,
      VBELN(030),
      POSNR(006),
      MLBEZ(005),
      WAERS(005),
      FAKSP(002),
      FAREG(001),
      FKSAF(001),
      FPTTP(002),
      FKARV(004),
      MLSTN(012),
      FPFIX(001),
      AFDAT(010),
      FPROZ(010),
      FAKWR(025),
      end of record.
DATA: ITAB LIKE STANDARD TABLE OF RECORD WITH HEADER LINE.
DATA: TEMP LIKE STANDARD TABLE OF RECORD WITH HEADER LINE.
*** End generated data section ***
start-of-selection.
perform UPLOAD_FILE.
CHECK NOT ITAB[] IS INITIAL.
SORT ITAB BY VBELN POSNR.
LOOP AT ITAB .
RECORD = ITAB.
TEMP = RECORD.
APPEND TEMP.
* The first sales document, step into the first screen
AT NEW VBELN.
    perform bdc_dynpro      using 'SAPMV45A' '0102'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'VBAK-VBELN'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'VBAK-VBELN'
                                  record-VBELN.
ENDAT.
* A new item input, follow the second screen
AT END OF POSNR.
    perform bdc_dynpro      using 'SAPMV45A' '4001'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=POPO'.
    perform bdc_dynpro      using 'SAPMV45A' '0251'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RV45A-POSNR'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=POSI'.
    perform bdc_field       using 'RV45A-POSNR'
                                  RECORD-POSNR.
    perform bdc_dynpro      using 'SAPMV45A' '4001'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ITEM'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'VBAP-POSNR(01)'.
    perform bdc_dynpro      using 'SAPMV45A' '4003'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=T\05'.
*   Process the billing plan
    LOOP AT TEMP.
      perform bdc_dynpro      using 'SAPLV60F' '4001'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=ANLE'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'FPLT-AFDAT(02)'.
      perform bdc_field       using 'FPLT-AFDAT(02)'
                                    TEMP-AFDAT.
      perform bdc_field       using 'FPLT-MLBEZ(02)'
                                    TEMP-MLBEZ.
*      perform bdc_field       using 'FPLT-WAERS(02)'
*                                    TEMP-WAERS.
      perform bdc_field       using 'FPLT-FAKSP(02)'
                                    TEMP-FAKSP.
      perform bdc_field       using 'FPLT-FAREG(02)'
                                    TEMP-FAREG.
*      perform bdc_field       using 'FPLT-FKSAF(02)'
*                                    TEMP-FKSAF.
      perform bdc_field       using 'FPLT-FPTTP(02)'
                                    TEMP-FPTTP.
      perform bdc_field       using 'FPLT-FKARV(02)'
                                    TEMP-FKARV.
*      perform bdc_field       using 'FPLT-MLSTN(02)'
*                                    TEMP-MLSTN.
      perform bdc_field       using 'FPLT-FPFIX(02)'
                                    TEMP-FPFIX.
      perform bdc_field       using 'FPLT-FPROZ(02)'
                                    TEMP-FPROZ.
      perform bdc_field       using 'FPLT-FAKWR(02)'
                                    TEMP-FAKWR.
    ENDLOOP.
*   Leave to item screen
    perform bdc_dynpro      using 'SAPLV60F' '4001'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=T\01'.
    perform bdc_dynpro      using 'SAPMV45A' '4003'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/EBACK'.
    CLEAR: TEMP,TEMP[].
ENDAT.
* A sales docu end, save the changes
AT END OF VBELN.
    perform bdc_dynpro      using 'SAPMV45A' '4001'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SICH'.
    perform bdc_dynpro      using 'SAPLSPO2' '0101'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=OPT1'.
    CALL TRANSACTION 'VA02' USING BDCDATA
                     MODE   P_MODE
                     UPDATE 'S'
                     MESSAGES INTO MESSTAB.
    read table messtab with key MSGTYP = 'E'.
    IF SY-SUBRC = 0.
      WRITE: / record-VBELN.
    ENDIF.
    CLEAR: BDCDATA,BDCDATA[].
ENDAT.
ENDLOOP.
*&---------------------------------------------------------------------*
*&      FormUPLOAD_FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_DATASETtext
*----------------------------------------------------------------------*
FORM UPLOAD_FILE.
CALL FUNCTION 'WS_UPLOAD'
   EXPORTING
   FILENAME                      = DATASET
   FILETYPE                      = 'DAT'
    TABLES
      DATA_TAB                      = ITAB
   EXCEPTIONS
   CONVERSION_ERROR            = 1
   FILE_OPEN_ERROR               = 2
   FILE_READ_ERROR               = 3
   INVALID_TYPE                  = 4
   NO_BATCH                      = 5
   UNKNOWN_ERROR               = 6
   INVALID_TABLE_WIDTH         = 7
   GUI_REFUSE_FILETRANSFER       = 8
   CUSTOMER_ERROR                = 9
   OTHERS                        = 10
            .
ENDFORM.                  " UPLOAD_FILE
*----------------------------------------------------------------------*
*      Start new screen                                              *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM= PROGRAM.
BDCDATA-DYNPRO   = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
*----------------------------------------------------------------------*
*      Insert field                                                *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> SPACE.
    CLEAR BDCDATA.
    BDCDATA-FNAM = FNAM.
    BDCDATA-FVAL = FVAL.
    APPEND BDCDATA.
ENDIF.
ENDFORM.
页: [1]
查看完整版本: SAP data migration: Create billing plan for sales