Quantcast
Channel: SCN : All Content - ABAP Development
Viewing all 8332 articles
Browse latest View live

Internal order status update from STATUS_CHANGE_INTERN

$
0
0

Hi,

 

I need to update the status of Internal orders (Closed,Teco). I checked FM STATUS_CHANGE_INTERN this looks ok for status update.

The problem with this FM is it updates the status of orders in JEST table but not in database table AUFK or COAS.

 

When i check the status for Internal orders in KO03 the status is changed but in COAS it is not updating the status, Field PHAS0 to PHAS3 which identofies the statuses created, Released, Teco and Closed are not updating.

 

I am not sure whether it is correct or not to use this FM in this case. I can see it is being used in many other custom programs also in the same way as i am using in my program.

 

Does anyone faced the same issue?

 

Regards,

Kamlesh


ABAP program freezes on MODIFY dbtab from wa

$
0
0

Hello All,

 

 

I have a report than has been working properly from January, today the program stops completely working at "MODIFY dbtab from wa" sentence.

 

 

It occurs only when the dbtab must update a registry in the table; Because if the insertion is a completely new registry the report works well.

 

   

The dbtab specs are: Transparent Table

 

 

Logical storage parameters:

 

Data class         APPL0   Master data, transparent tables

 

Size category      7       Data records expected: 84,000 to 160,000 (actually has 32k entries)

 

 

Buffering allowed but switched of

 

 

Total fields size: 3718

  

 

 

Any help would be appreciated.

Checkbox for ALV grid column

$
0
0

Hi ,

I am using  cl_gui_alv_grid class .

I have made the field catalog for 3 column "A" ,"B" ,"C" as check box .

I have requirement that if I select one check box of a column(A) then other check box in that column should be unchecked .

 

 

 

Kindly suggest me how to proceed .

 

Regards,
Saurabh

Unassign field symbol of Loop while modifying the contents

$
0
0

Folks,

 

Is it the right way to unassign a field symbol of the concerned loop ie<fs_itab1>?

If I Unassign within the loop it is going for dump whereas outside the loop it is not.

 

Do we have any other better ways to clear ie unassign the field symbol of loop within the loop at the end of every iteration.?

Is it wrong to unassign the field symbol of the concerned loop within the loop at the end of every iteration ?

 

DATA:itab1  TYPE STANDARD TABLE OF ztable1,        itab2      TYPE STANDARD TABLE OF ztable2.            
FIELD-SYMBOLS:<fs_itab1>  TYPE ztable1,                                 <fs_itab2>    TYPE ztable2,
LOOP AT itab1 ASSIGNING <fs_itab1>.
READ TABLE itab2 ASSIGNING <fs_itab2> WITH KEY fp_irn = <fs_itab1>-fp_irn                                                                               pspid = iv_pspid                                                                               grp_taskid = iv_task_id.
IF sy-subrc = 0.  <fs_itab1>-upd_user = sy-uname.  ENDIF.
UNASSIGN:<fs_itab2>.
ENDLOOP.
UNASSIGN:<fs_itab1>.

 

Thanks,

K.Kiran.

Want to Park Accounting Document using BAPI_ACC_DOCUMENT_POST

$
0
0

Hi All,

 

I have a requirement to park a document through BASIC TYPE ACC_DOCUMENT03 and Message type ACC_DOCUMENT.

The Document is successfully getting posted using BAPI_ACC_DOCUMENT_POST.But its not getting parked. I tried to change field STATUS_NEW in ACCTHD but its not helping.

 

Could someone please suggest how to get this resolved.Hope i can use the same BAPI and park the document.

 

Regards,

Anand R

sending email from SAP

$
0
0

Hi ,

I am trying to send the customer invoice (f.62) pdf to customers ,at the same time it should keep in the sap outbox also.

 

Here my concern is

suppose A is executing the transaction so it should keep a copy of the E-mail in A's SAP out box.

but sender ID would be a constant name which is different from A.(for exaple xyz always)

 

I am using the class  cl_bcs->SEND_REQUEST to send the email

how can I achieve this functionality.

 

Thanks

Vivek

Cannot we upload more than 10K records from excel multiple sheets to internal table in sap abap

$
0
0

Hi Experts,

 

Read multiple sheets of an Excel file into SAP through ABAP - Code Gallery - SCN Wiki

 

Please check above link, i have written logic based on above link for uploading data from multiple excel sheets  to internal table. But the problem is the below internal table(I_DATA-ROW) row length is 4-Char. so the excel file sheet data is uploading only 9999 records  to internal table (I_DATA). But as per  my Excel per sheet more than 40K-Records has to upload to internal table. So anybody help me on this which is best way to achieve this functionality.

 

CALL METHOD iref_spreadsheet->get_ranges_data

        EXPORTING

          no_flush  = ''

          all       = ''

*        updating  = -1

*        rangesdef =

        IMPORTING

        contents  = i_data

          error     = iref_error

*        retcode   =

        CHANGING

          ranges    = i_ranges

 

Thanks

surender

Can't Activate Append Search Help

$
0
0

Hello Experts!

 

I'm apliyng note 1917941.

It;s a manual configuration and this is the first Step.

 

- Enter search help QMES and press Display.

- Choose the menu options "Goto -> Append Search Help".

- Enter the append name CS_NOTIF_ES_APPEND_V2 and press Return. - Short Description: Enterprise Search input help append for service notification Switch to the Included Search Help tab page. - Assign search help CS_NOTIF_ES

- Press Parameter Assignment and create and accept the proposal.

 

 

I do all and when i try to activate this error is showed in the activation log.

 

No values can be returned from contained search help CS_NOTIF_ES_ADVANCED_E  (is included in CS_NOTIF_ES)



I don't have options to change parameter asigment. Anybody know what is happening?

 

Thanks!


How to get all changed grid data

$
0
0

Hi, everyone.


I need some help with this:  After an ALV is displayed, the user needs to change some of the columns order (he is supposed to make it in different ways, not predictable ones).   Then, when he clicks on my customized button "Download to file" the information must be downloaded in CSV format and it must keep the columns order the user set.

 

My code, in the User Command routine says:

 

 

FORM user_command USING r_ucomm LIKE sy-ucomm

                         rs_selfield TYPE slis_selfield.

 

   DATA: ref_grid TYPE REF TO cl_gui_alv_grid"Create REF_GRID as an instance of class CL_GUI_ALV_GRID

         lv_is_valid"necessary for method 'check changed data'.

 

   rs_selfield-refresh = 'X'.

 

   CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'

     IMPORTING

       e_grid = ref_grid.

 

 

 

Here is the point where I need to find the way to capture de current grid data (just as the user set it).

Right now I am eager to find how to get all changed grid data into a table ( I supposse it is a table where it gets in).  After that, I'll try to solve the downloading-in-CSV-format issue.  But, in the meanwhile, I need to solve my first problem.

 

Recently, I read a short article wich mentions that the class CL_GUI_ALV_GRID has this method  GET_CELL_DATA from where I can obtain the data I need, but since I have not worked with ABAP until now, I have no idea about how to make it work.  (I don't find the way to give or retrieve paramethers from it - I just don't know how to use it).

 

I don't necessary need to use that method.  Any other way to solve this would be just great for me.

 

Thanks in advance.

Transaction FINT - Customer enhancement - ZF_INTITAR_SF

$
0
0

Hello,

 

I activated customer extension in the main screen of FINT Transaction.

 

I want to fill this field and use the data in the smartforms ZF_INTITAR_SF.

 

How can I transport the data from include rfintitaruserext to smartforms ZF_INTITAR_SF.


Thanks in advance for your help !!


Best regards

Changes To Address In Vendor Master Data

$
0
0

Hi All,

 

Is there any functional module which can display all the address related changes done vendor master data?

 

We need to capture address related changes in new z report.

 

Change log tables CDHDR and CDPOS has address related fields but they are number of fields to capture. We are looking at one FM to which we can pass vendor number and get all the address related changes reported.

 

Thanks in advance

How I can get the current activity

$
0
0

Hi,

I'm working with a BAdI and I need to check the current activity (create, modify or visualization, for example). There is a function module with whom I can check the current activity of the user?

how to write file to application server

$
0
0

Hi Group,

 

Can any body give me some idea how to write the a file on

Application server.

BAPI_USER_CHANGE change password in a different system

$
0
0

Hello Abap Gurus,

 

I am having an issue with BAPI_USER_CHANGE. All the client data is centralized in system 250, so, we need to perform password change for any other system in 250. I am writing a program to change user´s password when lock but this program needs to be executed from any system.

 

How can I use BAPI_USER_CHANGE to change password for system 700 for example? if i execute it in system 700 it does not work because client data is centralized in 250, and if i execute it in 250 it changes 250 password, not 700. Does anyone know if i can use this FM differently so that it works for me, or anyone knows any other BAPI i can use?

 

FYI, i was also trying batch input to SU01 to perform the password change, however, the system selection is performed in an ALV table that cannot be used in BDC. So i have pretty much ruled out this option.

 

Best Regards,

 

Gustavo

Native SQL - Error forming SQL Query "where in (12, 23)"

$
0
0

Hi

 

I am trying to execute a native sql query in a function module.

 

Below is my code snippet:

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

FUNCTION GET_CANDIDATES.

"----------------------------------------------------------------------

*"*"Local Interface:

*"  IMPORTING

*"     VALUE(resume_numbers) TYPE  OCS_STRING

*"  TABLES

*"      CANDIDATES STRUCTURE  CANDITABLE

*"----------------------------------------------------------------------

 

DATA: candidates_line TYPE ZMFCANDIDATE.

 

 

EXEC SQL.

   CONNECT TO 'Oracle_CON_Name'

ENDEXEC.

 

 

EXEC SQL.

   OPEN cursor FOR

   SELECT column1, column2, column3, column4from table_name

      where column2 in ( resume_numbers)

ENDEXEC.

 

 

DO.

   CLEAR candidates_line.

 

EXEC SQL.

   FETCH NEXT cursor INTO :candidates_line.

 

ENDEXEC.

 

IF sy-subrc <> 0.

   EXIT.

ELSE.

    APPEND candidates_line TO CANDIDATES.

  ENDIF.

 

ENDDO.

 

EXEC SQL.

   CLOSE cursor

ENDEXEC.

 

exec sql.

   DISCONNECT 'Oracle_CON_Name'

ENDEXEC.


ENDFUNCTION.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


It is throwing exception while executing "FETCH NEXT cursor INTO :candidates_line.".


I doubt that the sql query is not being formed properly. "where column2 in ( resume_numbers)"  could be the issue.


When i have changed this to "where column2 = resume_numbers", it is working. But i need to pass multiple numbers to get multiple records of the candidates.


Any help will be great.


Thanks




Unable to see F4 help for Domain fixed values when displaying the table data

$
0
0

Hi,

 

I have a Z table where i have created a new field in it. In Domain i have maintained Value range (single vals) (seen from the attached screen shot S1.jpg). But when i display the data, for this field i'm unable see the F4 help (unable to see the dropdown, seen from the attached screen shot S2.jpg).

 

What could be the reason here?

 

Thanks,

Sk

Push notificaton to IOS and android

$
0
0

Hi all,

 

 

Is there any way in ABAP in which when we are subscribed to service in a ABAP system through mobile  .

 

The service should send notifications to IOS or Andriod when the mobile is online.

 

The message notification will have a link to a particular application,

 

 

Thanks Prasad

ABAP Webdynpro: LinkToURL (mailto:) property issue

$
0
0

Hello SAP Gurus,

 

I have a question here for all ABAP Webdynpro experts.

I have created a Table inside a Webdynpro using UI Element, and then one of the column is LinkToURL.

 

I could able to use the "mailto" option and open my default mail with To,Subject and Body populated.

 

My only issue here is, when I click the URL, it opens a new window in my browser always. Then I have to go and close it manually.

 

Is there any way, how to close it default or not even opening a new window in browser.

 

Regards

Vipin

XD01 update from table

$
0
0

Hi All ,

 

we have a req to upload the the data from z table to XD01 transaction ...

 

we have to capture the data from a zscreen ,

then update a ztable and the xd01 transaction in parallel .

Please suggest ? how to capture the data and perform a BAPI ?

BDC

$
0
0

Hi,

 

I am working on a bdc program.I want to upload 3 numerical values(amount in document currency-wrbtr)293,00

1 293,00

1.293,00

1293.00

I was able to upload 3 values by changing decimal notation.But 1.293,00 is failing.I am also sending the code of my program .Can anyone help me find some solution for this?

 

I think in FORM SPLIT-DATA error occurs in this part of the code.

 

MOVE t_item-wrbtr TO v_wrbtr.

  DO.

   REPLACE ',' WITH '' INTO v_wrbtr.

   condense v_wrbtr  no-gaps.

  ENDDO.

  • END OF SRR 25764

      WRITE v_wrbtr TO wa_item-wrbtr.

 

REPORT  zfie070_doc_upload   MESSAGE-ID fb.

*----

-


  •        Tabellen

*----

-


TABLES:

         dd02l,

         bgr00,                        " Mappenvorsatz

         bbkpf,                        " Belegkopf + Tcode

         bbseg,                        " Belegsegment.

         bbtax,                        " Belegsteuern.

         bwith,                        " Quellensteuer

         bselk,                        " Selektionsdaten Kopf

         bselp.                        " Selektionsdaten Position

 

TABLES:  tbsl.                         " Buchungsschlüssel

TABLES:  t041a.                        " Ausgleichsvorgänge

TABLES:  t100.                         " Nachrichten

 

TYPE-POOLS slis.

DATA:

    no_prot     VALUE 'X'.

 

DATA:

    saprl       LIKE sy-saprl,

    sysid       LIKE sy-sysid,

    new_gn,

    gdate       LIKE sy-datum,

    gtime       LIKE sy-uzeit.

 

 

 

DATA:

    BEGIN OF tabtab OCCURS 3,

        tabname     LIKE dd02l-tabname,

        vorhanden,

    END OF tabtab.

 

DATA:

    BEGIN OF rep OCCURS 700,

        z(72),

    END OF rep.

 

DATA:   BEGIN OF ftpost OCCURS 100.

        INCLUDE STRUCTURE ftpost.

DATA:   END OF ftpost.

 

DATA:   BEGIN OF ftclear OCCURS 20.

        INCLUDE STRUCTURE ftclear.

DATA:   END OF ftclear.

 

DATA:   BEGIN OF fttax OCCURS 0.

        INCLUDE STRUCTURE fttax.

DATA:   END OF fttax.

 

DATA:   BEGIN OF xblntab  OCCURS 2.

        INCLUDE STRUCTURE blntab.

DATA:   END OF xblntab.

 

 

DATA:    BEGIN OF save_ftclear.

        INCLUDE STRUCTURE ftclear.

DATA:    END OF save_ftclear.

 

*------- Tabelle T_BBKPF enthält Belegkopf + Tcode  -

-


DATA:    t_bbkpf LIKE bbkpf OCCURS 1.

 

*------- Tabelle T_BBSEG enthält Belegsegment -

-


DATA:    t_bbseg LIKE bbseg_di OCCURS 50.

 

*------- Tabelle T_BBTAX enthält Steuerdaten -

-


DATA:    t_bbtax LIKE bbtax OCCURS 50.

 

*------- Tabelle T_BWITH enthält Quellensteuerdaten -

-


DATA:    t_bwith LIKE bwith_di OCCURS 50.

 

*------- Tabelle FFILE enthält alle Datensätze -

-


DATA:    BEGIN OF tfile OCCURS 0,

           rec(3300)  TYPE c,

         END OF tfile.

DATA:    BEGIN OF efile OCCURS 100,

           rec(3300)  TYPE c,

         END OF efile.

DATA:    BEGIN OF ertab OCCURS 5,

           rec(3300)  TYPE c,

         END OF ertab.

 

  • SRR-25080 Begin.

 

    • file for header records.

DATA:    BEGIN OF t1_file OCCURS 0,

           rec(3300)  TYPE c,

         END OF t1_file.

  • SRR-25080 End.

 

*------- Feld-Informationen aus NAMETAB -

-


DATA:    BEGIN OF nametab OCCURS 120.

        INCLUDE STRUCTURE dntab.

DATA:    END OF nametab.

 

*------- Tabelle XT001 -

-


DATA:    BEGIN OF xt001 OCCURS 5.

        INCLUDE STRUCTURE t001.

DATA:    END OF xt001.

 

*------- Tabelle XTBSL -

-


DATA:    BEGIN OF xtbsl OCCURS 10.

        INCLUDE STRUCTURE tbsl.

DATA:    END OF xtbsl.

 

 

*------- Tabelle XT041A -

-


DATA:    BEGIN OF xt041a OCCURS 5,

           auglv        LIKE t041a-auglv,

         END OF xt041a.

 

*eject

*----


*

  •        Strukturen

*----


*

*------- Initialstrukturen -

-


DATA:    BEGIN OF i_bbkpf.

        INCLUDE STRUCTURE bbkpf.       " Belegkopf

DATA:    END OF i_bbkpf.

 

DATA:    BEGIN OF i_bbseg.

        INCLUDE STRUCTURE bbseg.       " Belegsegment

DATA:    END OF i_bbseg.

 

DATA:    BEGIN OF i_bbtax.

        INCLUDE STRUCTURE bbtax.       " Belegsteuern

DATA:    END OF i_bbtax.

 

DATA:    BEGIN OF i_bselk.

        INCLUDE STRUCTURE bselk.       " Selektionsdaten Kopf

DATA:    END OF i_bselk.

 

DATA:    BEGIN OF i_bselp.

        INCLUDE STRUCTURE bselp.       " Selektionsdaten Position

DATA:    END OF i_bselp.

 

DATA:    BEGIN OF i_bwith.

        INCLUDE STRUCTURE bwith.       " Quellensteuer

DATA:    END OF i_bwith.

 

*------- Hilfsstrukturen für Direct Input -

-


DATA:    BEGIN OF wa_bbseg_di.

        INCLUDE STRUCTURE bbseg_di.

DATA:    END OF wa_bbseg_di.

 

DATA:    BEGIN OF wa_bwith_di.

        INCLUDE STRUCTURE bwith_di.

DATA:    END OF wa_bwith_di.

 

DATA:    BEGIN OF trans OCCURS 0,

           x     TYPE c,

           c_00  TYPE c VALUE ' ',

           soh   TYPE c,

           c_01  TYPE c VALUE ' ',

           stx   TYPE c,

           c_02  TYPE c VALUE ' ',

           etx   TYPE c,

           c_03  TYPE c VALUE ' ',

           eot   TYPE c,

           c_04  TYPE c VALUE ' ',

           enq   TYPE c,

           c_05  TYPE c VALUE ' ',

           ack   TYPE c,

           c_06  TYPE c VALUE ' ',

           bel   TYPE c,

           c_07  TYPE c VALUE ' ',

           bs    TYPE c,

           c_08  TYPE c VALUE ' ',

           ht    TYPE c,

           c_09  TYPE c VALUE ' ',

           lf    TYPE c,

           c_0a  TYPE c VALUE ' ',

           vt    TYPE c,

           c_0b  TYPE c VALUE ' ',

           ff    TYPE c,

           c_0c  TYPE c VALUE ' ',

           cr    TYPE c,

           c_0d  TYPE c VALUE ' ',

           so    TYPE c,

           c_0e  TYPE c VALUE ' ',

           si    TYPE c,

           c_0f  TYPE c VALUE ' ',

           dle   TYPE c,

           c_10  TYPE c VALUE ' ',

           dc1   TYPE c,

           c_11  TYPE c VALUE ' ',

           dc2   TYPE c,

           c_12  TYPE c VALUE ' ',

           dc3   TYPE c,

           c_13  TYPE c VALUE ' ',

           dc4   TYPE c,

           c_14  TYPE c VALUE ' ',

           nak   TYPE c,

           c_15  TYPE c VALUE ' ',

           syn   TYPE c,

           c_16  TYPE c VALUE ' ',

           etb   TYPE c,

           c_17  TYPE c VALUE ' ',

           can   TYPE c,

           c_18  TYPE c VALUE ' ',

           em    TYPE c,                                "#EC NO_M_RISC3

           c_19  TYPE c VALUE ' ',

           sub   TYPE c,

           c_1a  TYPE c VALUE ' ',

           esc   TYPE c,

           c_1b  TYPE c VALUE ' ',

           fs    TYPE c,

           c_1c  TYPE c VALUE ' ',

           gs    TYPE c,

           c_1d  TYPE c VALUE ' ',

           rs    TYPE c,

           c_1e  TYPE c VALUE ' ',

           us    TYPE c,

           c_1f  TYPE c VALUE ' ',

         END OF trans.

 

 

*------- Workarea zum Lesen der BI-Sätze -

-


*------- wa, ertab, tfile und efile muessen mindestens so lang sein

*------- wie die laengste Batchinput-Struktur BBSEG + kundeneigene

*------- Felder im Include CI_COBL_BI.

*------- Laenge der BBSEG ohne CI_COBL_BI (Stand 3.0F) 1861 Bytes

DATA:    BEGIN OF wa,

           char1(3300)  TYPE c,

         END OF wa.

 

*eject

*----


*

  •        Einzelfelder

*----


*

DATA:    beleg_count(6) TYPE c,        " Anz. Belege je Mappe

         beleg_break(6) TYPE c,        " Anz. Belege je Mappe

         bukrs          LIKE bbseg-newbk,   " Buchungskreis

         bbkpf_ok(1)    TYPE c,        " Belegkopf übergeben

         bbseg_count(3) TYPE n,        " Anz. BSEGS pro Beleg

         bbseg_tax(1)   TYPE c.        " Steuer über BBSEG eingegeb

 

DATA:    char(40)       TYPE c,        " Char. Hilfsfeld

         char1(1)       TYPE c,        " Char. Hilfsfeld

         char2(40)      TYPE c,        " Char. Hilfsfeld

         tfile_fill(1)  TYPE c,        " X=TFILE schon gefüllt

         tfsave_fill(1)  TYPE c,       " X=TFSAVE schon gefüllt

         commit_count(4) TYPE n,       " Zähler für Commit

         all_commit LIKE tbist-aktnum. " Anzahl der Belege bis zum

" letzten COMMIT

 

DATA:    dyn_name(12)   TYPE c.        " Dynproname

 

DATA:    error_run(1)   TYPE c.        " X = error processing

 

DATA:    fcode(5)       TYPE c,        " Funktionscode

         function       LIKE  rfipi-funct.  " B= BDC, C= Call Trans

" D-DIRECT INPUT

DATA:    group_count(6) TYPE c,        " Anzahl Mappen

         group_open(1)  TYPE c.        " X=Mappe schon geöffnet

 

DATA:    ln_bbseg(8)    TYPE p,        " Länge des BBSEG

         ln_bbkpf(8)    TYPE p,        " Länge des BBKPF

         ln_bselk(8)    TYPE p,        " Länge des BSELK

         ln_bselp(8)    TYPE p.        " Länge des BSELP

 

DATA:    mode           LIKE  rfpdo-allgazmd.

DATA:    msgvn          LIKE sy-msgv1, " Hilfsfeld Message-Variable

         msgid          LIKE sy-msgid,

         msgty          LIKE sy-msgty,

         msgno          LIKE sy-msgno,

         msgv1          LIKE sy-msgv1,

         msgv2          LIKE sy-msgv2,

         msgv3          LIKE sy-msgv3,

         msgv4          LIKE sy-msgv4.

 

DATA:    n(2)           TYPE n,        " Hilfsfeld num.

         nodata(1)      TYPE c,        " Keine BI-Daten für Feld

         nodata_old     LIKE nodata.   " NODATA gemerkt

 

DATA:    prefix_p       LIKE tcurp-prefix_p, "price-based rate prefix

         prefix_m       LIKE tcurp-prefix_p. "quantity-based rate prefix

 

DATA:    refe1(8)       TYPE p.        " Hilfsfeld gepackt

 

DATA:    satz2_count(6) TYPE c,        " Anz. Sätze(Typ2) je Trans.

         satz2_cnt_akt  LIKE satz2_count,   " Anz. Sätze(Typ2) - 1

         save_tbnam     LIKE bbseg-tbnam,   " gemerkter Tabellenname

         save_bgr00     LIKE bgr00,    " gemerkter BGR00

         subrc          LIKE sy-subrc, " Subrc

         count          TYPE i.        " Anz. Belege

 

DATA:    tabix(2)       TYPE n,        " Tabelleninex

         tbist_aktiv(1) TYPE c,        " Restart aktiv?

         text(200)      TYPE c,        " Messagetext

         text1(40)      TYPE c,        " Messagetext

         text2(40)      TYPE c,        " Messagetext

         text3(40)      TYPE c,        " Messagetext

         tfill_ftpost   TYPE i,        " Anz. Einträge in FTPOST

         tfill_t_bbseg  TYPE i,        " Anz. Einträge in T_BBSEG

         tfill_t_bwith  TYPE i,        " Anz. Einträge in T_BWITH

         tfill_tfile    TYPE i,        " Anz. Einträge in TFILE

         tfill_ertab    TYPE i,        " Anz. Einträge in ERTAB

         tfill_ftc(3)   TYPE n,        " Anz. Einträge in FTC

         tfill_ftk(3)   TYPE n,        " Anz. Einträge in FTK

         tfill_ftz(3)   TYPE n,        " Anz. Einträge in FTZ

         tfill_041a(1)  TYPE n.        " Anz. Einträge in XT041A

 

 

DATA:    wert(60)       TYPE c,        " Hilfsfeld Feldinhalt

         wt_count       TYPE i.        " Zähler Quellensteuer

 

DATA:    xbdcc          LIKE rfipi-xbdcc,   " X=BDC bei Error in CallTra

         xeof(1)        TYPE c,        " X=End of File erreicht

         xmess_bbkpf-sende(1) TYPE c,  " Message gesendet für BBKPF

         xmess_bbseg-sende(1) TYPE c,  " Message gesendet für BBSEG

         xmess_bbtax-sende(1) TYPE c,  " Message gesendet für BBTAX

  •        XMWST          LIKE BKPF-XMWST,    " Steuer rechnen

         xnewg(1)       TYPE c,        " X=Neue Mappe

         xftclear(1).                  " Append FTCLEAR durchfuehren?

 

  • DATAs wichtig für Wiederaufsetzbarkeit

DATA: aktnum LIKE tbist-aktnum.   " Zähler für aktuell bearbeiteter Satz

DATA: startnum LIKE tbist-aktnum.      " erster zu bearbeitender Satz

*ata: is_error.                   " übergebene Satznummer war fehlerhaft

DATA: numerror LIKE tbist-numerror.    " Anzahl Fehler in diesem Schritt

DATA: olderror LIKE tbist-numerror.    " Anzahl Fehler aus dem

" vorherigen Job.

DATA: lasterrnum LIKE tbist-lastnum.   "Letzte Fehlernummer

DATA: nostart LIKE tbist-nostarting VALUE 'X'. " Start-Infos schreiben ?

DATA: jobid LIKE tbtco-jobname.

DATA: jobid_ext LIKE tbtco-jobname.

CONSTANTS:   pack_size TYPE i VALUE '250',

             c_msgid   LIKE sy-msgid VALUE 'FB'.

 

TABLES: terrd,

        tfsave.

 

*----

-


  •        Konstanten und Field-Symbols

*----

-


DATA:    c_nodata(1)    TYPE c VALUE '/',   " Default für NODATA

         xon                   VALUE 'X'.   " Flag eingeschaltet

 

DATA:    fmf1ges(1)     TYPE x VALUE '20'.  " Beide Flags aus: Input.

DATA:    fmb1num(1)     TYPE x VALUE '10'.  "       "

 

DATA:    max_commit(4)  TYPE n.        " Max. Belege je Commit

 

DATA:    rep_name_a(8)  TYPE c VALUE 'SAPMF05A'. " Mpool SAPMF05A

DATA:    rep_name_c(8)  TYPE c VALUE 'SAPLFCPD'. " Mpool SAPLFCPD

DATA:    rep_name_k(8)  TYPE c VALUE 'SAPLKACB'. " Mpool SAPLKACB

 

 

FIELD-SYMBOLS:            TYPE ANY.

 

*****DATA DECLARATIONS FROM Z PROGRAM ZFIE070_UPLOAD

*Header Table

TYPES  : BEGIN OF d_header,

           header LIKE char1,                         "DEVK928551

           bukrs LIKE bkpf-bukrs,"Company code

           blart LIKE bkpf-blart,"Document Type

           bldat LIKE bkpf-bldat,"Document date

           budat LIKE bkpf-budat,"Posting date

           waers LIKE bkpf-waers,"Currency

  •           kursf LIKE bbkpf-kursf,"Exchange rate      "DEVK919700

           xblnr LIKE bkpf-xblnr,"Reference

           bktxt LIKE bkpf-bktxt,"Doc header text

           stodt LIKE bkpf-stodt,"Reversal Date

  •           monat LIKE bkpf-monat,"Period              "DEVK919700

  •           wwert LIKE bkpf-wwert,"Translation Date    "DEVK919700

           stgrd LIKE bkpf-stgrd," Reversal Reason

        END OF d_header,

 

*Item Table

        BEGIN OF d_item,

           item  LIKE char1,                             "DEVK928551

           posnr LIKE vbap-posnr,

           bschl LIKE bseg-bschl,"Posting Key

           shkzg LIKE bseg-shkzg,"D (Debit) or C (Credit)

           hkont LIKE bseg-hkont,"Ac No.

           wrbtr TYPE bbseg-wrbtr, "Amount in Doc Currency

  •           bukrs LIKE bkpf-bukrs,"Company code              "DEVK919700

           kostl LIKE bseg-kostl,"Cost center

           prctr LIKE bseg-prctr,"Profit center

           pprct LIKE bseg-pprct,"Partner Profit Center

  •           vbund LIKE bseg-vbund,"Trading partner           "DEVK919700

           aufnr LIKE bseg-aufnr,"Order

           mwskz LIKE bseg-mwskz,"Tax Code

           sgtxt LIKE bseg-sgtxt,"Line item text

           zzcgrp LIKE bseg-zzcgrp,"Customer Group

           zzplat LIKE bseg-zzplat,"Platform

           zzpdt LIKE bseg-zzpdt,"Product Code              "SIR-06394

           bewar LIKE bseg-bewar,"Transaction Type

  •           projk LIKE bseg-projk,"WBS Element              " SRR-19244

           projk LIKE bbseg-projk,"WBS Element              " SRR-19244

 

           zuonr LIKE bseg-zuonr,"Assignment no.

  •           dmbtr TYPE bbseg-dmbtr,"Amount in local Currency "DEVK919700

           pernr LIKE bseg-pernr, "Personnel No.

        END OF d_item,

 

*----

-


    Begin of insertion SRR-23776

  • Data declaration for SRR-23776

 

*--- Adding further validations according to company codes

  •    for all NA companies and document type(KR, KG, KA, DR, DG, DA

  •    and YI) to trigger transaction FB01 to create document

            BEGIN OF d_constant,                            " DEVK928551

            mandt     TYPE mandt,

            objid     TYPE zzobjid,

            pname     TYPE progname,

            fname     TYPE fieldname,

            counter   TYPE count,

            fval      TYPE fieldvalue,

            END  OF d_constant,

 

  • End of data declaration for   SRR-23776

*----

-


    End of insertion SRR-23776

 

*Internal Table to get the raw data from file

        BEGIN OF d_rawdata,

            record(1000) TYPE c,

        END OF d_rawdata,

 

        BEGIN OF d_output1,

        status(10) TYPE c,

        mestyp LIKE bdcmsgcoll-msgtyp,

        text LIKE t100-text,

        END OF d_output1.

 

*SRR-25080 Begin.

    • file for item records.

data: BEGIN OF t_temp occurs 0.

         include structure bbseg.

data:    posnr like vbap-posnr,

      END OF t_temp.

*SRR-25080 End.

 

************************************************************************

  • Work areas

************************************************************************

DATA : wa_header  TYPE d_header,

       wa_item    TYPE d_item,

       wa_rawdata TYPE d_rawdata,

       wa_bdcdata TYPE bdcdata,

       wa_mestab TYPE bdcmsgcoll,

       wa_output1 TYPE d_output1.

 

DATA : wa_bbkpf TYPE  bbkpf,

       wa_bbseg TYPE  bbseg,

       wa_bgr00 TYPE  bgr00.

 

DATA:  wa_accountgl         LIKE  bapiacgl09,

       wa_currencyamount    LIKE  bapiaccr09,

       wa_extension2        LIKE  bapiparex,

       wa_return            LIKE  bapiret2,

       wa_documentheader    LIKE  bapiache09,

       wa_zbapi_te_acctit   LIKE  zbapi_te_acctit,

 

*SRR-25080 Begin.

       wafile like tfile,

       wa1_file like t1_file,

       wa_temp like t_temp.

*SRR-25080 END.

*----

-


*Variables

*----

-


DATA:  v_text    LIKE t100-text,

       v_copy_text LIKE t100-text,

       c_40(3) TYPE c VALUE 40,

       record_count TYPE i,

  •       v_kursf(15) TYPE c,               "DEVK919700

       v_wrbtr(13) TYPE c,

  •       v_dmbtr(13) TYPE c,               "DEVK919700

       v_bldat(10) TYPE c,

       v_budat(10) TYPE c,

       v_stodt(10) TYPE c,

  •       v_wwert(10) TYPE c,               "DEVK919700

       v_bukrs(10) TYPE c,

       v_blart(10) TYPE c,

       m1 TYPE c VALUE 'H',

       v_key(3) TYPE c,

       v_h,

       v_jv_total(10) TYPE c,

       v_t_id(10) TYPE c,

       v_aloc(10) TYPE c,

       v_shkzg LIKE bseg-shkzg,

       c_error(10) TYPE c VALUE 'FAILED',

       c_success(15) TYPE c VALUE 'SUCCESS',

       c_n TYPE c VALUE 'N',

       c_s TYPE c VALUE 'S',

       c_h TYPE c VALUE 'H',

       c_e TYPE c VALUE 'E',

       c_fv50(6) TYPE c VALUE 'FV50',

       c_fbs1(6) TYPE c VALUE 'FBS1',

       c_fb01(6) TYPE c VALUE 'FB01',

       c_x TYPE c VALUE 'X'.

 

DATA: v_lines(10) TYPE n,

      v_index TYPE c,

      v_hkont(30) TYPE c,

      v_mwskz(30) TYPE c,

      v_zounr(30) TYPE c,

      v_sgtxt(30) TYPE c,

      v_kostl(30) TYPE c,

      v_aufnr(30) TYPE c,

      v_prctr(30) TYPE c,

      v_projk(30) TYPE c,

      c_10(3) TYPE c VALUE 10.

 

 

DATA: v_count TYPE i,

      v_pg_count LIKE konp-kopos,

      v_tabix LIKE konp-kopos,

*SRR-25080 Begin.

      v_net TYPE i,

      v_flag(1) TYPE c,

      v_check(1) TYPE c,

      v_counter(1) TYPE i.

*SRR-25080 End.

 

************************************************************************

  • Internal Tables

************************************************************************

DATA: t_header    TYPE STANDARD TABLE OF d_header WITH HEADER LINE,

      t_hedr_temp TYPE STANDARD TABLE OF d_header WITH HEADER LINE,

      t_item      TYPE STANDARD TABLE OF d_item   WITH HEADER LINE,

      t_item_temp TYPE STANDARD TABLE OF d_item   WITH HEADER LINE,

      t_rawdata   TYPE STANDARD TABLE OF d_rawdata,

      t_bdcdata   TYPE STANDARD TABLE OF bdcdata,

      t_messtab   TYPE STANDARD TABLE OF bdcmsgcoll,

      t_output1   TYPE STANDARD TABLE OF d_output1,

 

  • ---- Begin of insertion SRR-23776

  • table to hold north american company codes and

  • document type(KR, KG, KA, DR, DG, DA and YI)

      t_constant  TYPE STANDARD TABLE OF d_constant,    " DEVK928551

 

*----

-


    Begin of insertion SRR-23776

  • work area to hold data coming from t_constants

       wa_constant LIKE LINE OF t_constant.             " DEVK928551

*----

-


    End of insertion SRR-23776

  • ---- End of insertion SRR-23776

  • Cpnstants

DATA :

       c_objectid_070 TYPE c LENGTH 4 VALUE 'E070'.

 

 

DATA : t_accountgl      TYPE STANDARD TABLE OF bapiacgl09,

       t_currencyamount TYPE STANDARD TABLE OF bapiaccr09,

       t_extension2     TYPE STANDARD TABLE OF bapiparex,

       t_return         TYPE STANDARD TABLE OF bapiret2.

 

DATA : t_field_catalog  TYPE slis_t_fieldcat_alv,

       w_fieldcat TYPE slis_fieldcat_alv,

       ls_layout TYPE slis_layout_alv.

 

*----

-


*Constants

*----

-


CONSTANTS: c_delim        TYPE x           VALUE '09'       ,

           c_session_name LIKE bgr00-group VALUE 'E070_POST',

           c_sep          TYPE c           VALUE '/'        .

 

 

*eject

 

*----


*

  •        Selektionsbild                                                *

*----


*

*------- Aufbau des Selektionsbildes

************************************************************************

  •        Falls 'Call Transaction ... Using ...' gewünscht, bitte die

  •        die NO-DISPLAY-Zeilen bei Parameters ausstenen

  •        Vor der Benutzung des 'Call Transaction ... Using ...'

  •        bitte die Datei prüfen.

************************************************************************

***The existing selection is not  displayed instead we have a custome

***selection screen

*SELECTION-SCREEN SKIP 1.

 

PARAMETERS: ds_name     LIKE rfpdo-rfbifile NO-DISPLAY.  " Dateiname

 

*SELECTION-SCREEN SKIP 1.

*SELECTION-SCREEN ULINE.

*SELECTION-SCREEN SKIP 1.

 

PARAMETERS: fl_check    LIKE rfpdo-rfbichck NO-DISPLAY,

            os_xon      LIKE  rfpdo-rfbioldstr NO-DISPLAY.

*SELECTION-SCREEN SKIP 1.

*SELECTION-SCREEN ULINE.

*SELECTION-SCREEN SKIP 1.

PARAMETERS: callmode    LIKE rfpdo-rfbifunct NO-DISPLAY,

            max_comm(4) TYPE n DEFAULT '1000' NO-DISPLAY,

            pa_xprot(1) TYPE c NO-DISPLAY.

  •                                              NO-DISPLAY.

  •           ANZ_MODE:        A=alles N=nichts E=Error

PARAMETERS: anz_mode    LIKE rfpdo-allgazmd    DEFAULT 'N'

                                               NO-DISPLAY.

  •           UPDATE:          S=Synchron A=Asynchron

PARAMETERS: update      LIKE rfpdo-allgvbmd    DEFAULT 'S'

                                               NO-DISPLAY.

 

  • info messages as popup, log or no info

*SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.

PARAMETERS: xpop  TYPE c NO-DISPLAY, "RADIOBUTTON GROUP RBL1,

            xlog  TYPE c NO-DISPLAY, "RADIOBUTTON GROUP RBL1,

            xinf  TYPE c NO-DISPLAY. "RADIOBUTTON GROUP RBL1.

SELECTION-SCREEN END   OF BLOCK bl1.

 

*AT SELECTION-SCREEN ON CALLMODE.

  • IF CALLMODE NA 'BCD'.

  •    MESSAGE E031.

  • ENDIF.

 

MOVE: space  TO  fl_check ,

      'B'    TO  callmode ,

      950    TO  max_comm ,

      'X'    TO  xlog     ,

      space  TO  xpop     ,

      space  TO  xinf     .

 

 

 

************************************************************************

  • Selection Screen

************************************************************************

 

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

 

PARAMETERS p_file LIKE rlgrap-filename.      "Filename & Filepath

 

SELECTION-SCREEN END OF BLOCK b1 .

 

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.

 

PARAMETERS:p_park RADIOBUTTON GROUP grp1 DEFAULT 'X', "Parking Doc

           p_act RADIOBUTTON GROUP grp1.              "Actual Doc

  •          p_reg RADIOBUTTON GROUP grp1,           "Regular Doc

  •          p_error as checkbox default 'X'.        "for error mode

SELECTION-SCREEN END OF BLOCK b2 .

  • SIR-06394 Begin

SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE text-018.

SELECTION-SCREEN COMMENT 1(79)  text-015.

SELECTION-SCREEN COMMENT /1(79) text-016.

SELECTION-SCREEN COMMENT /1(79) text-017.

SELECTION-SCREEN END OF BLOCK A1.

  • SIR-06394 End.

*F4 help for getting the Local Filename

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

 

  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

    CHANGING

      file_name     = p_file

    EXCEPTIONS

      mask_too_long = 1

      OTHERS        = 2.

  IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

 

*eject

*----


*

  • START-OF-SELECTION                                           *

*----


*

START-OF-SELECTION.

 

*----


*

  •        Hauptablauf                                                   *

*----


*

 

  • Informationen zu Z-Strukturen einlesen

  SELECT * FROM dd02l WHERE ( tabname = 'ZBSEG' OR

                              tabname = 'ZSELP' )

                      AND   as4local = 'A'

                      AND   tabclass = 'INTTAB'.

    MOVE-CORRESPONDING dd02l TO tabtab.

    APPEND tabtab.

  ENDSELECT.

 

  • Informationen aus RFBIBL02 einlesen

  READ REPORT 'RFBIBL02' INTO rep.

  READ TABLE rep INDEX 5.           "read release

  saprl = rep-z+30.

  READ TABLE rep INDEX 6.

  sysid = rep-z+30.

  READ TABLE rep INDEX 12.

  PERFORM tables_pruefen.

  READ TABLE rep INDEX 13.

  PERFORM tables_pruefen.

 

  READ TABLE rep INDEX 3.             "read generated date

  gdate = rep-z+30.

  READ TABLE rep INDEX 4.             "read generated time

  gtime = rep-z+30.

  • Informationen zum Include COPABBSEG einlesen

  SELECT * FROM dd02l WHERE tabname = 'COPABBSEG'

                             AND   as4local = 'A'

                             AND   tabclass = 'INTTAB'.

    IF  dd02l-as4date GT gdate

    OR ( dd02l-as4date EQ gdate AND dd02l-as4time GT gtime ).

      MOVE-CORRESPONDING dd02l TO tabtab.

      APPEND tabtab.

    ENDIF.

  ENDSELECT.

 

  • Informationen zu BBSEG einlesen

  SELECT * FROM dd02l WHERE tabname = 'BBSEG'

                             AND   as4local = 'A'

                             AND   tabclass = 'INTTAB'.

    IF  dd02l-as4date GT gdate

    OR ( dd02l-as4date EQ gdate AND dd02l-as4time GT gtime ).

      MOVE-CORRESPONDING dd02l TO tabtab.

      APPEND tabtab.

    ENDIF.

  ENDSELECT.

 

  LOOP AT tabtab WHERE vorhanden = space.

    new_gn = xon.

    EXIT.

  ENDLOOP.

 

 

  • Neugenerierung von RFBIBL02 wenn notwendig.

  IF saprl <> sy-saprl OR sysid <> sy-sysid OR new_gn = xon.

    SUBMIT rfbiblg0 AND RETURN.

  ENDIF.

 

 

  • Report RFBIBL01 aufrufen

  • SUBMIT RFBIBL01 WITH  DS_NAME   =   DS_NAME

  •                  WITH  FL_CHECK  =   FL_CHECK

  •                  WITH  OS_XON    =   OS_XON

  •                  WITH  CALLMODE  =   CALLMODE

  •                  WITH  MAX_COMM  =   MAX_COMM

  •                  WITH  PA_XPROT  =   PA_XPROT

  •                  WITH  ANZ_MODE  =   ANZ_MODE

  •                  WITH  UPDATE    =   UPDATE

  •                  WITH  XPOP      =   XPOP

  •                  WITH  XLOG      =   XLOG

  •                  WITH  XINF      =   XINF

  •                  AND RETURN.

 

*------- Aufbau des Selektionsbildes -

-


*selection-screen skip 1.

*

*parameters: DS_NAME     like RFPDO-RFBIFILE.  " Dateiname

*

*selection-screen skip 1.

*selection-screen uline.

*selection-screen skip 1.

*

*parameters: FL_CHECK    like RFPDO-RFBICHCK,    " Datei nur prüfen

  •            OS_XON      like RFPDO-RFBIOLDSTR.  " Alte Strukturen

*

*selection-screen skip 1.

*selection-screen uline.

*selection-screen skip 1.

*parameters: CALLMODE    like RFPDO-RFBIFUNCT obligatory,

  •            MAX_COMM(4) type N default '1000',  " Max Belege pro Commit

  •            PA_XPROT(1) type C.        " erweitertes Protokoll

    •           ANZ_MODE:        A=alles N=nichts E=Error

*parameters: ANZ_MODE    like RFPDO-ALLGAZMD    default 'N'.

    •                                              NO-DISPLAY.

    •           UPDATE:          S=Synchron A=Asynchron

*parameters: UPDATE      like RFPDO-ALLGVBMD    default 'S'.

    •                                              NO-DISPLAY.

*

    • infomessages

*selection-screen skip 1.

*selection-screen begin of block BL1.

*parameters: XPOP  type C radiobutton group RBL1,

  •            XLOG  type C radiobutton group RBL1,

  •            XINF  type C radiobutton group RBL1.

*selection-screen end   of block BL1.

*

*eject

************************************************************************

  •        Hauptablauf

************************************************************************

  CLEAR: xeof, xnewg,

         group_count, beleg_count,

         satz2_count, satz2_cnt_akt,

         error_run,

         wt_count,

         commit_count, count.

  max_commit = max_comm.

 

*------- init log

  CALL FUNCTION 'FI_MESSAGE_INIT'.

 

*------- Datei nur prüfen? -

-


  IF fl_check NE space.

    PERFORM log_msg USING c_msgid 'I' '018' ds_name space space space.

  ENDIF.

 

*------- Call Transaction .. Using ..? -

-


*F XCALL NE SPACE.

  • XBDCC    = 'X'.

  • FUNCTION = 'C'.

  • IF FL_CHECK NE SPACE.

  •   MESSAGE I022.

  • ELSE.

  •   MESSAGE I021.

  • ENDIF.

*LSE.

  • FUNCTION = 'B'.

*NDIF.

 

 

  CASE callmode.

    WHEN 'B'.

      function = 'B'.

    WHEN 'C'.

      function = 'C'.

      IF sy-batch NE 'X'.

  •     MESSAGE A899 WITH 'Bei Call Transaktion muß Report im Batch'.

      ENDIF.

    WHEN 'D'.

      function = 'D'.

      IF sy-batch NE 'X'.

  •     MESSAGE A899 WITH 'Bei Fast Input muß Report im Batch laufen'.

      ENDIF.

  ENDCASE.

 

  PERFORM get_restart_info.

 

 

*IF tfile_fill IS INITIAL.              " TFILE wurde noch nicht gefüllt

  IF tfsave_fill IS INITIAL.

    PERFORM read_dataset_into_table_tfile.

  ENDIF.

 

  PERFORM loop_at_table_tfile.

  PERFORM error_processing.

  PERFORM call_bi_close_entry.

  COMMIT WORK.

  PERFORM log_print.

  CALL FUNCTION 'DEQUEUE_ALL'.

 

*eject.

************************************************************************

  •        Interne Perform-Routinen

************************************************************************

*eject

*----

-


  •        Form  AUGLV_PRUEFEN    "AUGLV_TESTING

*----

-


  •        Ausgleichsvorgang aus T041A ermitteln;

  •        Balance process out of T041A determine;

*----

-


FORM auglv_pruefen.

  IF tfill_041a   = 0.

    SELECT * FROM t041a.

      xt041a-auglv = t041a-auglv.

      APPEND xt041a.

    ENDSELECT.

    DESCRIBE TABLE xt041a LINES tfill_041a.

    IF tfill_041a = 0.

      PERFORM log_msg USING c_msgid 'I' '171'

                            beleg_count space space space.

      PERFORM log_abort USING c_msgid '013'.

    ENDIF.

  ENDIF.

 

  tabix = 0.

  IF bbkpf-auglv(1) = nodata

  OR bbkpf-auglv    = space.

    PERFORM log_msg USING c_msgid 'I' '162'

                          beleg_count space space space.

    PERFORM log_msg USING c_msgid 'I' '016'

                          space space space space.

    PERFORM dump_wa USING 'BBKPF'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

  LOOP AT xt041a WHERE auglv = bbkpf-auglv.

    tabix = sy-tabix.

    EXIT.

  ENDLOOP.

  IF tabix = 0.

    PERFORM log_msg USING c_msgid 'I' '163'

                          beleg_count bbkpf-auglv space space.

    PERFORM log_msg USING c_msgid 'I' '016'

                         space space space space.

    PERFORM dump_wa USING 'BBKPF'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

ENDFORM.                               "auglv_pruefen

 

*eject

*----

-


  •        Form  AUGLV_SETZEN

*----

-


  •        Ausgleichsvorgang aus T041A ermitteln;

  •        entsprechenden Ausgleichsvorgang im Loop ankreuzen.

*----

-


*ORM AUGLV_SETZEN.

  • TABIX = 0.

  • IF BBKPF-AUGLV(1) = NODATA

  • OR BBKPF-AUGLV    = SPACE.

  •   MESSAGE I162 WITH BELEG_COUNT.

  •   MESSAGE I016.

  •   PERFORM DUMP_WA USING 'BBKPF'.

  •   MESSAGE A013.

  • ENDIF.

  • LOOP AT XT041A WHERE AUGLV = BBKPF-AUGLV.

  •   TABIX = SY-TABIX.

  •   EXIT.

  • ENDLOOP.

  • IF TABIX = 0.

  •   MESSAGE I163 WITH BELEG_COUNT BBKPF-AUGLV.

  •   MESSAGE I016.

  •   PERFORM DUMP_WA USING 'BBKPF'.

  •   MESSAGE A013.

  • ENDIF.

*

*------- Ausgleichsvorgang im Loop ankreuzen -

-


  • IF FL_CHECK = SPACE.

  •   CLEAR FTA.

  •   FTA-FNAM(12)   = 'RF05A-XPOS1('.

  •   FTA-FNAM+12(2) = TABIX.

  •   FTA-FNAM+14(1) = ')'.

  •   FTA-FVAL       = 'X'.

  •   APPEND FTA.

  • ENDIF.

*NDFORM.

 

*eject

*----

-


  •        FORM BBKPF_ERWEITERUNG_PRUEFEN.

*----

-


  •        Falls der Kunde eine alte BBKPF-Struktur benutzt werden die

  •        neuen Felder mit NODATA initialisiert.

*----

-


FORM bbkpf_erweiterung_pruefen.

 

  IF bbkpf-sende(1) NE nodata.

*------- BBKPF-Erweiterung um XBWAE zu 4.6C

    IF bbkpf-xbwae(1) NE nodata.

*------- BBKPF-Erweiterung um XPRFG zu 4.5B

      IF bbkpf-xprfg(1) NE nodata.

*------- BBKPF-Erweiterung zu 4.5B: AUGTX

        IF bbkpf-augtx(1) NE nodata.

*------- BBKPF-Erweiterung zu 4.5B: KURSF_M(10)

          IF bbkpf-kursf_m(1) NE nodata.

 

*------- BBKPF-Erweiterung zu 4.0C: STGRD(2),

            IF bbkpf-stgrd(1) NE nodata.

*------- BBKPF-Erweiterung zu 4.0A: BRNCH(4), NUMPG(3)

              IF bbkpf-brnch(1) NE nodata.

*------- BBKPF-Erweiterung zu 3.0A: DOCID(10), BARCD(40),STODT

                IF bbkpf-docid(1) NE nodata.

*------- BBKPF-Erweiterung zu 2.2A: XMWST(1)

                  IF bbkpf-xmwst(1) NE nodata.

*------- BBKPF-Erweiterung zu 2.1A: VBUND --

                    bbkpf-vbund(1) = nodata.

                  ENDIF.

 

                  bbkpf-xmwst(1) = nodata.

                ENDIF.

 

                bbkpf-docid(1) = nodata.

                bbkpf-barcd(1) = nodata.

                bbkpf-stodt(1) = nodata.

              ENDIF.

 

              bbkpf-brnch(1) = nodata.

              bbkpf-numpg(1) = nodata.

            ENDIF.

 

            bbkpf-stgrd(1) = nodata.

          ENDIF.

 

          bbkpf-kursf_m(1) = nodata.

        ENDIF.

 

        bbkpf-augtx(1) = nodata.

      ENDIF.

      bbkpf-xprfg(1) = nodata.

    ENDIF.

    bbkpf-xbwae(1) = nodata.

 

    IF xmess_bbkpf-sende NE 'X'.

      PERFORM log_msg USING c_msgid 'I' '174'

                            beleg_count 'BBKPF' nodata space.

      PERFORM log_msg USING c_msgid 'I' '023' 'BBKPF' space space space.

      PERFORM log_msg USING c_msgid 'I' '024' space space space space.

      PERFORM log_msg USING c_msgid 'I' '025' 'BBKPF' space space space.

      xmess_bbkpf-sende = 'X'.

    ENDIF.

  ENDIF.

ENDFORM.                               "bbkpf_erweiterung_pruefen

 

 

 

*eject

*----

-


  •        FORM BBSEG_ERWEITERUNG_PRUEFEN.

*----

-


  •        Falls der Kunde eine alte BBSEG-Struktur benutzt, werden die

  •        neuen Felder mit NODATA initialisiert.

*----

-


FORM bbseg_erweiterung_pruefen.

  IF bbseg-sende(1) NE nodata.

 

  • ueberpruefen, ob die in der BBSEG-Struktur vorhandenen Includes

  • aktiv sind. Wenn ja kann Erweiterungspruefung (beruecksichtigt nur

  • Felder aus dem Standard) nicht durchgefuehrt werden.

 

    CALL FUNCTION 'DD_EXIST_TABLE'

      EXPORTING

        tabname = 'SI_BBSEGV'

        status  = 'A'

      IMPORTING

        subrc   = subrc.

 

    IF subrc = 0.

      PERFORM log_msg USING c_msgid 'I' '872'

                            'SI_BBSEGV' space space space.

      EXIT.

    ENDIF.

*------- BBSEG-Erweiterung 4.7: IBAN, VALID_FROM

    IF bbseg-valid_from(1) NE nodata.

*------- BBSEG-Erweiterung 4.7: GRANT_NBR, FKBER_LONG, ERLKZ

      IF bbseg-erlkz(1) NE nodata.

 

*----

-


BBSEG-Erweiterung CESSION_KZ

        IF bbseg-cession_kz(1) NE nodata.

*------- BBSEG-Erweiterung 4.7: DTAMS

          IF bbseg-dtams(1) NE nodata.

*------- BBSEG-Erweiterung: BKREF

            IF bbseg-bkref(1) NE nodata.

*------- BBSEG-Erweiterung: RECNNR, E_MIVE

              IF bbseg-recnnr(1) NE nodata.

*------- BBSEG-Erweiterung: ANRED (Anrede CpD)

                IF bbseg-anred  NE nodata.

*------- BBSEG-Erweiterung: IDXSP

                  IF bbseg-idxsp(1) NE nodata.

*------- BBSEG-Erweiterung zu 4.6B: J_1KFREPRE, J_1KFTBUS, J_1KFTIND

                    IF bbseg-j_1kfrepre(1) NE nodata.

 

*------- BBSEG-Erweiterung Immobilien zu 4.5B, Umzug von KI3,

*------- WENR, GENR, GRNR, MENR, MIVE, NKSL, EMPSL, SVWNR, SBERI

*------- andere Felder: KKBER, EMPFB, KURSR_M

                      IF bbseg-wenr(1) NE nodata.

*------- BBSEG-Erweiterung zu 4.0C: PYCUR,PYAMT,BUPLA,SECCO,LSTAR,EGDEB

                        IF bbseg-pycur(1) NE nodata.

*------- BBSEG-Erweiterung zu 4.0B: DTAWS

                          IF bbseg-dtaws(1) NE nodata.

*------- BBSEG-Erweiterung zu 4.0A: XNEGP,GRICD,GRIRG,GITYP,FITYP,

  •                                   STCDT,STKZN,STCD3,STCD4,...,DTWS4

                            IF bbseg-xnegp(1) NE nodata.

 

*------- BBSEG-Erweiterung zu 3.1H: FIPEX

                              IF bbseg-fipex(1) NE nodata.

*------- BBSEG-Erweiterung zu 3.0F: RSTGR

                                IF bbseg-rstgr(1) NE nodata.

*------- BBSEG-Erweiterung zu 3.0E: VBUND,FKBER,DABRZ,XSTBA

                                  IF bbseg-vbund(1) NE nodata.

*------- BBSEG-Erweiterung zu 3.0D: WDATE, WGBKZ, XAKTZ, WNAME, WORT1,

  •                                   WBZOG, WORT2, WBANK, WLZBP, DISKP,

  •                                   DISKT, WINFW, WINHW, WEVWV, WSTAT,

  •                                   WMWKZ, WSTKZ

                                    IF bbseg-wdate(1) NE nodata.

 

*------- BBSEG-Erweiterung zu 3.0A: XREF1(11), XREF2(12),

  •                                   KBLPOS(3), KBLNR(10)

                                      IF bbseg-xref1(1) NE nodata.

*------- BBSEG-Erweiterung zu 2.2A: PPRCT(10), PROJK(24), UZAWE(2),

  •                                   TXJCD(10), FISTL(16), GEBER(10),

  •                                   DMBE2(16), DMBE3(16), PARGB(4),

                                        IF bbseg-pprct(1) NE nodata.

*------- BBSEG-Erweiterung zu 2.1D: XEGDR, RECID

                                          IF bbseg-xegdr(1) NE nodata.

*------- BBSEG-Erweiterung zu 2.1C: NPLNR, VORNR

 

                                            bbseg-nplnr(1)   = nodata.

                                            bbseg-vornr(1)   = nodata.

                                          ENDIF.

 

                                          bbseg-xegdr(1)   = nodata.

                                          bbseg-recid(1)   = nodata.

                                        ENDIF.

 

                                        bbseg-pprct(1)  = nodata.

                                        bbseg-projk(1)  = nodata.

                                        bbseg-uzawe(1)  = nodata.

                                        bbseg-txjcd(1)  = nodata.

                                        bbseg-fistl(1)  = nodata.

                                        bbseg-geber(1)  = nodata.

                                        bbseg-dmbe2(1)  = nodata.

                                        bbseg-dmbe3(1)  = nodata.

                                        bbseg-pargb(1)  = nodata.

                                      ENDIF.

 

                                      bbseg-xref1(1)   = nodata.

                                      bbseg-xref2(1)   = nodata.

                                      bbseg-kblpos(1)  = nodata.

                                      bbseg-kblnr(1)   = nodata.

 

                                    ENDIF.

                                    bbseg-wdate(1)   = nodata.

                                    bbseg-wgbkz(1)   = nodata.

                                    bbseg-xaktz(1)   = nodata.

                                    bbseg-wname(1)   = nodata.

                                    bbseg-wort1(1)   = nodata.

                                    bbseg-wbzog(1)   = nodata.

                                    bbseg-wort2(1)   = nodata.

                                    bbseg-wbank(1)   = nodata.

                                    bbseg-wlzbp(1)   = nodata.

                                    bbseg-diskp(1)   = nodata.

                                    bbseg-diskt(1)   = nodata.

                                    bbseg-winfw(1)   = nodata.

                                    bbseg-winhw(1)   = nodata.

                                    bbseg-wevwv(1)   = nodata.

                                    bbseg-wstat(1)   = nodata.

                                    bbseg-wmwkz(1)   = nodata.

                                    bbseg-wstkz(1)   = nodata.

                                  ENDIF.

 

                                  bbseg-vbund(1)   = nodata.

                                  bbseg-fkber(1)   = nodata.

                                  bbseg-dabrz(1)   = nodata.

                                  bbseg-xstba(1)   = nodata.

                                ENDIF.

 

                                bbseg-rstgr(1)   = nodata.

                              ENDIF.

 

                              bbseg-fipex(1)   = nodata.

 

                            ENDIF.

 

                            bbseg-xnegp(1)   = nodata.

                            bbseg-gricd(1)   = nodata.

                            bbseg-grirg(1)   = nodata.

                            bbseg-gityp(1)   = nodata.

                            bbseg-fityp(1)   = nodata.

                            bbseg-stcdt(1)   = nodata.

                            bbseg-stkzn(1)   = nodata.

                            bbseg-stcd3(1)   = nodata.

                            bbseg-stcd4(1)   = nodata.

                            bbseg-xref3(1)   = nodata.

                            bbseg-kidno(1)   = nodata.

                            bbseg-dtws1(1)   = nodata.

                            bbseg-dtws2(1)   = nodata.

                            bbseg-dtws3(1)   = nodata.

                            bbseg-dtws4(1)   = nodata.

                          ENDIF.

 

                          bbseg-dtaws(1)   = nodata.

                        ENDIF.

 

                        bbseg-pycur(1)   = nodata.

                        bbseg-pyamt(1)   = nodata.

                        bbseg-bupla(1)   = nodata.

                        bbseg-secco(1)   = nodata.

                        bbseg-lstar(1)   = nodata.

                        bbseg-egdeb(1)   = nodata.

 

                      ENDIF.

                      bbseg-wenr(1)   = nodata.

                      bbseg-genr(1)   = nodata.

                      bbseg-grnr(1)   = nodata.

                      bbseg-menr(1)   = nodata.

                      bbseg-mive(1)   = nodata.

                      bbseg-nksl(1)   = nodata.

                      bbseg-empsl(1)   = nodata.

                      bbseg-svwnr(1)   = nodata.

                      bbseg-sberi(1)   = nodata.

                      bbseg-kkber(1)   = nodata.

                      bbseg-empfb(1)   = nodata.

                      bbseg-kursr_m(1) = nodata.

 

                    ENDIF.

                    bbseg-j_1kfrepre(1) = nodata.

                    bbseg-j_1kftbus(1)  = nodata.

                    bbseg-j_1kftind(1)  = nodata.

                  ENDIF.

                  bbseg-idxsp(1) = nodata.

                ENDIF.

                bbseg-anred(1) = nodata.

              ENDIF.

              bbseg-recnnr(1) = nodata.

              bbseg-e_mive(1) = nodata.

            ENDIF.

            bbseg-bkref(1) = nodata.

          ENDIF.

          bbseg-dtams(1) = nodata.

        ENDIF.

        bbseg-cession_kz(1) = nodata.

      ENDIF.

      bbseg-grant_nbr(1) = nodata.

      bbseg-fkber_long(1) = nodata.

      bbseg-erlkz(1) = nodata.

    ENDIF.

    bbseg-iban(1) = nodata.

    bbseg-valid_from(1) = nodata.

 

    IF xmess_bbseg-sende NE 'X'.

      PERFORM log_msg USING c_msgid 'I' '174'

                            beleg_count 'BBSEG' nodata space.

      PERFORM log_msg USING c_msgid 'I' '023'

                            'BBSEG' space space space.

      PERFORM log_msg USING c_msgid 'I' '024'

                            space space space space.

      PERFORM log_msg USING c_msgid 'I' '025'

                            'BBSEG' space space space.

      xmess_bbseg-sende = 'X'.

    ENDIF.

  ENDIF.

ENDFORM.                               "bbseg_erweiterung_pruefen

 

*eject

*----

-


  •        FORM BBTAX_ERWEITERUNG_PRUEFEN.

*----

-


  •        Falls der Kunde eine alte BBTAX-Struktur benutzt werden die

  •        neuen Felder mit NODATA initialisiert.

*----

-


FORM bbtax_erweiterung_pruefen.

 

  IF bbtax-sende(1) NE nodata.

*------- BBTAX-Erweiterung zu 4.0A: H2STE(16), H3STE(16)

    bbtax-h2ste(1) = nodata.

    bbtax-h3ste(1) = nodata.

 

 

    IF xmess_bbtax-sende NE 'X'.

      PERFORM log_msg USING c_msgid 'I' '174'

                            beleg_count 'BBTAX' nodata space.

      PERFORM log_msg USING c_msgid 'I' '023'

                            'BBTAX' space space space.

      PERFORM log_msg USING c_msgid 'I' '024'

                            space space space space.

      PERFORM log_msg USING c_msgid 'I' '025'

                            'BBTAX' space space space.

      xmess_bbtax-sende = 'X'.

    ENDIF.

  ENDIF.

ENDFORM.                               "bbtax_erweiterung_pruefen

 

 

*eject

*----

-


  •        Form  BELEG_ABSCHLIESSEN

*----

-


FORM beleg_abschliessen.

  CHECK fl_check = space.

  IF bbkpf-tcode = 'FB01'

  OR bbkpf-tcode = 'FBB1'                                   "P30K125019

  OR bbkpf-tcode = 'FBS1'

  OR bbkpf-tcode = 'FBV1'.             "4.0

    CALL FUNCTION 'POSTING_INTERFACE_DOCUMENT'

      EXPORTING

        i_tcode  = bbkpf-tcode

      IMPORTING

        e_subrc  = subrc

        e_msgid  = msgid

        e_msgty  = msgty

        e_msgno  = msgno

        e_msgv1  = msgv1

        e_msgv2  = msgv2

        e_msgv3  = msgv3

        e_msgv4  = msgv4

      TABLES

        t_ftpost = ftpost

        t_fttax  = fttax

        t_blntab = xblntab

      EXCEPTIONS

        OTHERS   = 1.

 

  ELSEIF bbkpf-tcode = 'FB05'.

  • Falls nur BSELK aber kein BSELP übergeben wurde, so wurden die Daten

  • aus der int. Tabelle SAVE_FTCLEAR noch nicht in die Tabelle FTCLEAR

  • uebertragen.

    IF NOT xftclear IS INITIAL.

      ftclear = save_ftclear.

      APPEND ftclear.

    ENDIF.

 

    CALL FUNCTION 'POSTING_INTERFACE_CLEARING'

      EXPORTING

        i_auglv   = bbkpf-auglv

        i_tcode   = bbkpf-tcode

      IMPORTING

        e_subrc   = subrc

        e_msgid   = msgid

        e_msgty   = msgty

        e_msgno   = msgno

        e_msgv1   = msgv1

        e_msgv2   = msgv2

        e_msgv3   = msgv3

        e_msgv4   = msgv4

      TABLES

        t_ftpost  = ftpost

        t_ftclear = ftclear

        t_fttax   = fttax

        t_blntab  = xblntab

      EXCEPTIONS

        OTHERS    = 1.

  ENDIF.

 

 

 

  IF function = 'B'.

*------- Batch Input  -

-


    IF NOT sy-subrc IS INITIAL.

      IF NOT error_run IS INITIAL.

        PERFORM log_msg USING sy-msgid 'I' sy-msgno

                              sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

        PERFORM log_msg USING c_msgid 'I' '622'

                              beleg_count group_count space space.

        PERFORM log_msg USING c_msgid 'I' '014'

                              'BBKPF' space space space.

      ELSE.

        PERFORM log_msg USING sy-msgid 'I' sy-msgno

                              sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

        PERFORM log_msg USING c_msgid 'I' '622'

                              beleg_count group_count space space.

        PERFORM dump_wa USING 'BBKPF'.

        PERFORM log_abort USING c_msgid '013'.

      ENDIF.

    ENDIF.

    IF NOT sy-subrc IS INITIAL.

      PERFORM log_msg USING sy-msgid 'I' sy-msgno

                            sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

      PERFORM log_msg USING c_msgid 'I' '622'

                            beleg_count group_count space space.

      PERFORM dump_wa USING 'BBKPF'.

      PERFORM log_abort USING c_msgid '013'.

    ENDIF.

*------- Commit Work? -

-


    commit_count = commit_count + 1.

    IF commit_count = max_commit.

      COMMIT WORK.

      CALL FUNCTION 'DEQUEUE_ALL'.

      CLEAR commit_count.

    ENDIF.

  ELSE.

*------- Call Transaction -

-


    IF subrc IS INITIAL AND sy-subrc IS INITIAL.

      LOOP AT xblntab.

        PERFORM log_msg USING 'F5' 'I' '312'

                              xblntab-belnr xblntab-bukrs space space.

      ENDLOOP.

    ELSE.

      IF NOT subrc IS INITIAL.

        PERFORM log_msg USING msgid 'I' msgno

                              msgv1 msgv2 msgv3 msgv4.

      ELSE.

        PERFORM log_msg USING sy-msgid 'I' sy-msgno

                              sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

      ENDIF.

 

      PERFORM export_error_data.

    ENDIF.

    commit_count = commit_count + 1.

*------- bei Call Trans Commit Work nach jedem Beleg -

-


    PERFORM call_bi_end_akt_number.

    COMMIT WORK.

    CALL FUNCTION 'DEQUEUE_ALL'.

  ENDIF.

 

  REFRESH: ftpost, ftclear, fttax, xblntab.

  CLEAR:   ftpost, ftclear, fttax, xblntab.

ENDFORM.                               "beleg_abschliessen

 

 

*eject

*----

-


  •        Form  BELEG_ABSCHLIESSEN_OLD.

*----

-


FORM beleg_abschliessen_old.

  • CHECK FL_CHECK = SPACE.

*

*------- Batch-Input erstellen -

-


  • IF XCALL = SPACE.

  •   CALL FUNCTION 'BDC_INSERT'

  •     EXPORTING TCODE     = BBKPF-TCODE

  •     TABLES    DYNPROTAB = FT.

*

*------- zunächst 'Call Transaction', nur bei Fehlern Batch-Input -

-


  • ELSE.

  •   CALL TRANSACTION BBKPF-TCODE USING  FT

  •                                MODE   ANZ_MODE

  •                                UPDATE UPDATE.

  •   SUBRC = SY-SUBRC.

  •   PERFORM MESSAGE_CALL_TRANSACTION.

  •   IF SUBRC NE 0.

  •     IF GROUP_OPEN NE 'X'.

  •       PERFORM MAPPE_OEFFNEN.

  •     ENDIF.

  •     CALL FUNCTION 'BDC_INSERT'

  •       EXPORTING TCODE     = BBKPF-TCODE

  •       TABLES    DYNPROTAB = FT.

  •   ENDIF.

  • ENDIF.

*

*------- Commit Work? -

-


  • COMMIT_COUNT = COMMIT_COUNT + 1.

  • IF COMMIT_COUNT = MAX_COMMIT.

  •   COMMIT WORK.

  •   CLEAR COMMIT_COUNT.

  • ENDIF.

ENDFORM.                               "beleg_abschliessen_old

 

 

*eject

*----

-


  •        Form  DATENSATZ_PRUEFEN

*----

-


  •        Prüfung des Datensatzes (Typ 2):

  •        Tabellenname angegeben und gültig ?

  •        Tabellen in richtiger Reihenfolge übergeben ?

*----

-


FORM datensatz_pruefen.

  satz2_count = satz2_count + 1.

 

*------- wurde ein Kopfsatz übergeben ? -

-


  IF bbkpf_ok IS INITIAL.

    PERFORM log_msg USING c_msgid 'I' '151'

                          group_count space space space.

    PERFORM log_msg USING c_msgid 'I' '015'

                          space space space space.

    PERFORM dump_wa USING 'BGR00'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

 

*------- Kennzeichen für Datensatz (Typ 2) gesetzt ? -

-


  IF wa(1) NE '2'.

    PERFORM log_msg USING c_msgid 'I' '152'

                          beleg_count satz2_count wa(1) space.

    PERFORM log_msg USING c_msgid 'I' '016'

                          space space space space.

    PERFORM dump_wa USING 'BBKPF'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

 

  • Daten werden wegen der Feldlänge-Erweiterung des Feldes TBNAM

  • von 10B (<4.0) auf 30B verschoben

  IF ( os_xon = xon ) AND ( error_run NE 'X' ).

    SHIFT wa BY 20 PLACES RIGHT.

    wa(31) = wa+20(11).

    IF wa+2(29) = 'SELP'.

      PERFORM bselp_field_lenght_convert CHANGING wa.

    ENDIF.

  ENDIF.

 

*------- Tabellenname angegeben ? -

-


  IF wa+1(1)  = nodata

  OR wa+1(30) = space.

    PERFORM log_msg USING c_msgid 'I' '153'

                          beleg_count satz2_count space space.

    PERFORM log_msg USING c_msgid 'I' '016'

                          space space space space.

    PERFORM dump_wa USING 'BBKPF'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

 

*------- erlaubte Tabellen? -

-


  IF  wa+1(30) NE 'BBSEG'

  AND wa+1(30) NE 'BWITH'

  AND wa+1(30) NE 'BBTAX'

  AND wa+1(30) NE 'BSELK'

  AND wa+1(30) NE 'BSELP'

  AND wa+1(13) NE 'ZBSEG'

  AND wa+1(30) NE 'ZSELP'.

    PERFORM log_msg USING c_msgid 'I' '164'

                          beleg_count satz2_count wa+1(30) space.

    PERFORM log_msg USING c_msgid 'I' '016'

                          space space space space.

    PERFORM dump_wa USING 'BBKPF'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

  IF (   bbkpf-tcode EQ 'FB01'

      OR bbkpf-tcode EQ 'FBB1'                              "P30K125019

      OR bbkpf-tcode EQ 'FBS1'

      OR bbkpf-tcode EQ 'FBV1' )       "4.0

  AND NOT (    wa+1(30)    EQ 'BBSEG'

            OR wa+1(30)    EQ 'ZBSEG'

            OR wa+1(30)    EQ 'BWITH'

            OR wa+1(30)    EQ 'BBTAX' ).

    PERFORM log_msg USING c_msgid 'I' '165'

                       beleg_count satz2_count wa+1(30) bbkpf-tcode(20).

    PERFORM log_msg USING c_msgid 'I' '016'

                          space space space space.

    PERFORM dump_wa USING 'BBKPF'.

    IF wa+1(30) = 'BSELK'.

      bselk = i_bselk.

      bselk = wa.                                           "#EC ENHOK

      PERFORM log_msg USING c_msgid 'I' '017'

                          space space space space.

      PERFORM dump_wa USING 'BSELK'.

    ENDIF.

    IF wa+1(30) = 'BSELP'.

      bselp = i_bselp.

      bselp = wa.                                           "#EC ENHOK

      PERFORM log_msg USING c_msgid 'I' '017'

                          space space space space.

      PERFORM dump_wa USING 'BSELP'.

    ENDIF.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

*------ Quellensteuer

  IF ( bbkpf-tcode NE 'FB01' AND

       bbkpf-tcode NE 'FBV1' )

       AND wa+1(30) EQ 'BWITH'.

    PERFORM log_msg USING c_msgid 'I' '165'

                       beleg_count satz2_count wa+1(30) bbkpf-tcode(20).

    PERFORM log_msg USING c_msgid 'I' '016'

                          space space space space.

    PERFORM dump_wa USING 'BBKPF'.

    bwith = i_bwith.

    bwith = wa.                                             "#EC ENHOK

    PERFORM log_msg USING c_msgid 'I' '017'

                          space space space space.

    PERFORM dump_wa USING 'BWITH'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

*------ Quellensteuer: Direct Input erst zu 4.0C

  • if wa+1(10) eq 'BWITH' and

  •     function = 'D'.

  •    message i199 with beleg_count satz2_count wa+1(10).

  •    message i016.

  •    perform dump_wa using 'BBKPF'.

  •    bwith = i_bwith.

  •    bwith = wa.

  •    message i017.

  •    perform dump_wa using 'BWITH'.

  •    message a013.

  • endif.

 

*------- Tabellen in erlaubter Reihenfolge (bei FB05)? -

-


  IF bbkpf-tcode = 'FB05'.

    IF wa+1(30) EQ 'BBSEG'.

      IF bselk NE i_bselk

      OR bselp NE i_bselp.

        PERFORM log_msg USING c_msgid 'I' '166'

                              beleg_count space space space.

        PERFORM log_msg USING c_msgid 'I' '016'

                              space space space space.

        PERFORM dump_wa USING 'BBKPF'.

        bbseg = i_bbseg.

        bbseg = wa.                                         "#EC ENHOK

        PERFORM log_msg USING c_msgid 'I' '017'

                              space space space space.

        PERFORM dump_wa USING 'BBSEG'.

        PERFORM log_abort USING c_msgid '013'.

      ENDIF.

    ENDIF.

    IF  wa+1(30)   EQ 'BSELP'

    OR  wa+1(30)   EQ 'ZSELP'.

      IF bselk      EQ i_bselk.

        PERFORM log_msg USING c_msgid 'I' '167'

                              beleg_count space space space.

        PERFORM log_msg USING c_msgid 'I' '016'

                              space space space space.

        PERFORM dump_wa USING 'BBKPF'.

        PERFORM log_msg USING c_msgid 'I' '017'

                              space space space space.

        bselp = i_bselp.

        bselp = wa.                                         "#EC ENHOK

        PERFORM dump_wa USING 'BSELP'.

        PERFORM log_abort USING c_msgid '013'.

      ENDIF.

    ENDIF.

  ENDIF.

ENDFORM.                               "datensatz_pruefen

 

*eject

*----

-


  •        Form  DATENSATZ_TRANSPORTIEREN

*----

-


  •        Datensatz (Typ 2) verarbeiten

  •        Falls der Kunde eigene Strukturen verwendet, sind diese

  •        bereits in die B-Strukturen übertragen worden

*----

-


FORM datensatz_transportieren.

  CASE wa+2(09).

 

*----

-


  •        BBSEG Belegsegment

*----

-


    WHEN 'BSEG'.

      save_tbnam = 'BBSEG'.

 

      PERFORM bbseg_erweiterung_pruefen.        "test bbseg_expansion_

 

*------- Prüfen und Übertragen der Kontonummer (DUMMYX/NEWKO) -

-


      IF  bbseg-dummyx(1) NE nodata                         "Note 559106

      AND bbseg-dummyx    NE space                          "Note 559106

      AND bbseg-newko(1)  NE nodata

      AND bbseg-newko     NE space

      AND bbseg-dummyx    NE bbseg-newko.                   "Note 559106

        PERFORM log_msg USING c_msgid 'I' '175'

                beleg_count satz2_count bbseg-dummyx space. "Note 559106

        PERFORM log_msg USING c_msgid 'I' '176'

                              bbseg-newko space space space.

        PERFORM log_msg USING c_msgid 'I' '177'

                              space space space space.

        PERFORM log_msg USING c_msgid 'I' '016'

                              space space space space.

        PERFORM dump_wa USING 'BBKPF'.

        PERFORM log_msg USING c_msgid 'I' '017'

                              space space space space.

        PERFORM dump_wa USING 'BBSEG'.

        PERFORM log_abort USING c_msgid '013'.

      ENDIF.

      IF  bbseg-dummyx(1) NE nodata                         "Note 559106

      AND bbseg-dummyx    NE space                          "Note 559106

      AND bbseg-newko(1)  NE nodata

      AND bbseg-newko     NE space

      AND bbseg-dummyx    EQ bbseg-newko.                   "Note 559106

        CLEAR bbseg-dummyx.                                 "Note 559106

        bbseg-dummyx = nodata.                              "Note 559106

      ENDIF.

      IF  bbseg-dummyx(1) NE nodata                         "Note 559106

      AND bbseg-dummyx    NE space.                         "Note 559106

        bbseg-newko = bbseg-dummyx.                         "Note 559106

        CLEAR bbseg-dummyx.                                 "Note 559106

        bbseg-dummyx = nodata.                              "Note 559106

      ENDIF.

 

      IF bbseg-newko    EQ space

      OR bbseg-newko    EQ nodata.

        PERFORM log_msg USING c_msgid 'I' '145'

                              beleg_count satz2_count space space.

        PERFORM log_msg USING c_msgid 'I' '016'

                              space space space space.

        PERFORM dump_wa USING 'BBKPF'.

        PERFORM log_msg USING c_msgid 'I' '017'

                              space space space space.

        PERFORM dump_wa USING 'BBSEG'.

        PERFORM log_abort USING c_msgid '013'.

      ENDIF.

 

  • Entweder Finanzposition FIPOS oder FIPEX füllen.

  • Beim gefülltem FIPOS wird das FIPEX ignoriert.

      IF  bbseg-fipos(1) NE nodata

      AND bbseg-fipos    NE space

      AND bbseg-fipex(1) NE nodata

      AND bbseg-fipex    NE space.

        PERFORM log_msg USING c_msgid 'I' '060'

                              beleg_count satz2_count 'FIPOS' 'FIPEX'.

        PERFORM log_msg USING c_msgid 'I' '061'

                              beleg_count satz2_count 'FIPEX' space.

        PERFORM log_msg USING c_msgid 'I' '899'

                              'BBSEG-FIPOS' '=' bbseg-fipos space.

        PERFORM log_msg USING c_msgid 'I' '899'

                              'BBSEG-FIPEX' '=' bbseg-fipex space.

        CLEAR bbseg-fipex.

        bbseg-fipex = nodata.

      ENDIF.

 

  • Inhalt von FKBER in FKBER_LONG schreiben.

  • Falls beide Felder gefüllt sind, wird FKBER ignoriert

      IF bbseg-fkber(1) NE nodata

 

      AND bbseg-fkber   NE space.

        IF bbseg-fkber_long(1) NE nodata

        AND bbseg-fkber_long NE space.

          PERFORM log_msg USING c_msgid 'I' '060'

                          beleg_count satz2_count 'FKBER' 'FKBER_LONG'.

          PERFORM log_msg USING c_msgid 'I' '061'

                          beleg_count satz2_count 'FKBER' space.

          PERFORM log_msg USING c_msgid 'I' '899'

                          'BBSEG-FKBER' '=' bbseg-fkber space.

          PERFORM log_msg USING c_msgid 'I' '899'

                          'BBSEG-FKBER_LONG' '=' bbseg-fkber_long space.

        ELSE.

          bbseg-fkber_long = bbseg-fkber.

        ENDIF.

        CLEAR bbseg-fkber.

        bbseg-fkber(1) = nodata.

      ENDIF.

 

      IF  bbseg-kursr(1)   NE nodata

      AND bbseg-kursr      NE space

      AND bbseg-kursr_m(1) NE nodata

      AND bbseg-kursr_m    NE space.

        PERFORM log_msg USING c_msgid 'I' '060'

                              beleg_count satz2_count 'KURSR' 'KURSR_M'.

        PERFORM log_msg USING c_msgid 'I' '016'

                              space space space space.

        PERFORM dump_wa USING 'BBKPF'.

        PERFORM log_msg USING c_msgid 'I' '017'

                              space space space space.

        PERFORM dump_wa USING 'BBSEG'.

        PERFORM log_abort USING c_msgid '013'.

      ENDIF.

 

*------ IBAN Daten nur uebertragen, wenn Bankdaten vorhanden

 

      IF bbseg-iban NE nodata OR

         bbseg-valid_from    NE nodata.

        IF bbseg-iban       EQ nodata OR

           bbseg-valid_from EQ nodata OR

           bbseg-bankn      EQ nodata OR

           bbseg-bankl      EQ nodata OR

           bbseg-banks      EQ nodata.

          bbseg-iban  = nodata.

          bbseg-valid_from = nodata.

          PERFORM log_msg USING c_msgid 'I' '061'

           beleg_count satz2_count 'IBAN' space.

          IF bbseg-bankn EQ nodata OR

             bbseg-banks EQ nodata OR

             bbseg-bankl EQ nodata.

            PERFORM log_msg USING 'F8' 'I' '025'

               space space space space.

          ENDIF.

        ENDIF.

      ENDIF.

 

*------ Kontoart ermitteln

      PERFORM kontoart_ermitteln.

      bbseg_count = bbseg_count + 1.

 

*------ Quellensteuer: Zähler inkrementieren (Debitor/Kreditor-Zeilen)

      IF xtbsl-koart = 'D' OR

         xtbsl-koart = 'K'.

        wt_count = wt_count + 1.

      ENDIF.

 

      PERFORM fill_ftpost_with_bbseg_data USING bbseg_count.

      PERFORM fill_fttax_from_bbseg.

 

*----

-


  •        BWITH Quellensteuer

*----

-


    WHEN 'WITH'.

      IF bwith-witht    EQ space

      OR bwith-witht    EQ nodata.

        PERFORM log_msg USING c_msgid 'I' '145'

                              beleg_count satz2_count space space.

        PERFORM log_msg USING c_msgid 'I' '016'

                              space space space space.

        PERFORM dump_wa USING 'BBKPF'.

        PERFORM log_msg USING c_msgid 'I' '017'

                              space space space space.

        PERFORM dump_wa USING 'BWITH'.

        PERFORM log_abort USING c_msgid '013'.

      ENDIF.

 

      PERFORM fill_ftpost_with_bwith_data USING bbseg_count.

 

*----

-


  •        BBSEG Belegsteuern

*----

-


    WHEN 'BTAX'.

      IF bbseg_tax = 'X'.

  •       Abbruch: Steuern entweder neu oder alt übergeben

        PERFORM log_msg USING c_msgid 'I' '178'

                              beleg_count satz2_count space space.

        PERFORM log_msg USING c_msgid 'I' '179'

                              space space space space.

        PERFORM log_msg USING c_msgid 'I' '016'

                              space space space space.

        PERFORM dump_wa USING 'BBKPF'.

        PERFORM log_msg USING c_msgid 'I' '017'

                              space space space space.

        PERFORM dump_wa USING 'BBSEG'.

        PERFORM log_abort USING c_msgid '013'.

      ENDIF.

      IF bbkpf-xmwst = 'X'.

*------ Abbruch: Steuern entweder rechnen oder BBTAX übergeben -

-


        PERFORM log_msg USING c_msgid 'I' '149'

                              beleg_count satz2_count space space.

        PERFORM log_msg USING c_msgid 'I' '016'

                              space space space space.

        PERFORM dump_wa USING 'BBKPF'.

        PERFORM log_msg USING c_msgid 'I' '017'

                              space space space space.

        PERFORM dump_wa USING 'BBTAX'.

        PERFORM log_abort USING c_msgid '013'.

      ENDIF.

 

      PERFORM fill_fttax_with_bbtax_data.

 

*----

-


  •        BSELK Selektionskopf (FB05)

*----

-


    WHEN 'SELK'.

      CLEAR xftclear.

      PERFORM move_bselk_to_save_ftclear.

*----

-


Selektion mit Avis , Nach Alter sortieren -

-


      IF bselk-avsid(1) NE nodata.     "Avis

        ftclear = save_ftclear.

        APPEND ftclear.

        CLEAR save_tbnam.

      ELSE.

        xftclear = 'X'.

        save_tbnam = 'BSELK'.

      ENDIF.

 

*----

-


  •        BSELP Selektionspositionen (FB05)

*----

-


    WHEN 'SELP'.

      IF save_tbnam NE space.

        CASE save_tbnam.

          WHEN 'BSELP'.

          WHEN 'BSELK'.

          WHEN OTHERS.

  •           vor BSELP muß BSELP oder BSELK kommen!

            PERFORM log_msg USING c_msgid 'I' '146'

                                  beleg_count wa+1(10) space space.

            PERFORM log_msg USING c_msgid 'I' '016'

                              space space space space.

            PERFORM dump_wa USING 'BBKPF'.

            PERFORM log_abort USING c_msgid '013'.

        ENDCASE.

      ENDIF.

      save_tbnam = 'BSELP'.

      PERFORM fill_ftclear_with_bselp_data.

  ENDCASE.

ENDFORM.                               "datensatz_transportieren

 

*eject

*----

-


  •        Form  DUMP_WA

*----

-


  •        Im Abbruchfall soll der fehlerhafte Satz ausgedumpt werden.

*----

-


FORM dump_wa USING table.

  CALL FUNCTION 'NAMETAB_GET'

    EXPORTING

      langu          = sy-langu

      tabname        = table

    TABLES

      nametab        = nametab

    EXCEPTIONS

      no_texts_found = 1.

  LOOP AT nametab.

    CLEAR char.

    char(5)    = nametab-tabname.

    char+5(1)  = '-'.

    char+6(10) = nametab-fieldname.

    ASSIGN (char) TO .

    PERFORM log_msg USING c_msgid 'I' '014'

                           char wert space space.

 

  ENDLOOP.

ENDFORM.                               "dump_wa

 

 

*eject

*----

-


  •        Form  KOPFSATZ_LESEN

*----

-


  •        Kopfdaten in Workarea lesen

*----

-


FORM kopfsatz_lesen.

  CLEAR wa.

  READ DATASET ds_name INTO wa.

 

*------- End of File erreicht ? --> Exit -

-


  IF sy-subrc NE 0.

    xeof = 'X'.

    EXIT.

  ENDIF.

 

  IF wa(1) NE '1'.

    PERFORM log_msg USING c_msgid 'I' '151'

                          group_count space space space.

    PERFORM log_msg USING c_msgid 'I' '015'

                          space space space space.

    PERFORM dump_wa USING 'BGR00'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

ENDFORM.                               "kopfsatz_lesen

 

*eject

*----

-


  •        Form  KOPFSATZ_BEARBEITEN

*----

-


  •        Transportieren und bearbeiten

  •        der eingelesenen Belegkopfdaten.

  •        Globale BI-Feldtabelle initialisieren .

  •        Schalter und Strukturen initialisieren.

*----

-


FORM kopfsatz_bearbeiten.

  • REFRESH FT.

  bbkpf =  i_bbkpf.

  bbseg =  i_bbseg.

  bbtax =  i_bbtax.

  bselk =  i_bselk.

  bselp =  i_bselp.

  bwith =  i_bwith.

  CLEAR: satz2_count, satz2_cnt_akt, wt_count, bbseg_count.

  CLEAR: save_tbnam, fcode, bbseg_tax.

  REFRESH: ftpost, ftclear, fttax.

  REFRESH: t_bbkpf, t_bbseg, t_bbtax, t_bwith.

 

  • Daten werden wegen der Feldlänge-Erweiterung des Feldes TCODE

  • von 4B (<4.0) auf 20B verschoben

  IF ( os_xon = xon ) AND ( error_run NE 'X' ).

    SHIFT wa BY 16 PLACES RIGHT.

    wa(21) = wa+16(5).

  ENDIF.

 

  bbkpf = wa.                                               "#EC ENHOK

 

  PERFORM bbkpf_erweiterung_pruefen.

 

  beleg_count = beleg_count + 1.

  "record_count

  count = count + 1.

 

*------ Place to set a soft break-point -

-


  IF beleg_count = beleg_break.

    beleg_break = beleg_count.

  ENDIF.

 

*------- Tcode übergeben / Tcode erlaubt ? -

-


  IF bbkpf-tcode(1) EQ nodata

  OR bbkpf-tcode    EQ space.

    PERFORM log_msg USING c_msgid 'I' '161'

                          beleg_count space space space.

    PERFORM log_msg USING c_msgid 'I' '016'

                          space space space space.

    PERFORM dump_wa USING 'BBKPF'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

  IF  bbkpf-tcode NE 'FB01'

  AND bbkpf-tcode NE 'FBS1'

  AND bbkpf-tcode NE 'FBB1'                                 "P30K125019

  AND bbkpf-tcode NE 'FB05'

  AND bbkpf-tcode NE 'FBV1'.           "4.0

    PERFORM log_msg USING c_msgid 'I' '154'

                          beleg_count bbkpf-tcode space space.

    PERFORM log_msg USING c_msgid 'I' '016'

                          space space space space.

    PERFORM dump_wa USING 'BBKPF'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

 

*------- FB05: --> Ausgleichsvorgang auf Gültigkeit überpruefne -

-


  IF  bbkpf-tcode  = 'FB05'.

    PERFORM auglv_pruefen.

  ENDIF.

 

*------- BBKPF-Bukrs übergeben / merken -

-


  IF bbkpf-bukrs(1) EQ nodata

  OR bbkpf-bukrs    EQ space.

    PERFORM log_msg USING c_msgid 'I' '160'

                          beleg_count space space space.

    PERFORM log_msg USING c_msgid 'I' '016'

                          space space space space.

    PERFORM dump_wa USING 'BBKPF'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

 

  bukrs = bbkpf-bukrs.

 

  IF  bbkpf-kursf(1)   NE nodata

  AND bbkpf-kursf      NE space

  AND bbkpf-kursf_m(1) NE nodata

  AND bbkpf-kursf_m    NE space.

    PERFORM log_msg USING c_msgid 'I' '210'

                          beleg_count 'KURSF' 'KURSF_M' space.

    PERFORM log_msg USING c_msgid 'I' '016'

                          space space space space.

    PERFORM dump_wa USING 'BBKPF'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

 

  PERFORM fill_ftpost_with_bbkpf_data.

  bbkpf_ok = 'X'.

ENDFORM.                               "kopfsatz_bearbeiten

 

*eject

*----

-


  •        Form  MAPPE_OEFFNEN " open portfolio

*----

-


  •        Öffnen der Buchungsschnittstelle

*----

-


FORM mappe_oeffnen.                              " open portfolio

 

  CHECK function NE 'D'.

 

*----

-


Interne Buchungsschnittstelle initialisieren

  CALL FUNCTION 'POSTING_INTERFACE_START'

    EXPORTING

      i_function = function

      i_client   = bgr00-mandt

      i_group    = bgr00-group

      i_xbdcc    = xbdcc

      i_holddate = bgr00-start

      i_keep     = bgr00-xkeep

      i_mode     = anz_mode

      i_update   = update

      i_user     = bgr00-usnam.

 

  IF function = 'B'.

    PERFORM log_msg USING c_msgid 'I' '007'

                          group_count bgr00-group space space.

  ENDIF.

  group_open = 'X'.

ENDFORM.                               "mappe_oeffnen

 

 

*eject

*----

-


  •        Form  MAPPE_PRUEFEN_OEFFNEN

*----

-


  •        Prüfen/Bearbeiten der Daten im Mappenvorsatz.

  •        Sonderzeichen für NODATA bestimmen

  •        Öffnen der BDC-Queue für Datentransfer

  •        Initialstrukturen mit NODATA erzeugen

*----

-


FORM mappe_pruefen_oeffnen.

  CLEAR bgr00.

  bgr00 = wa.                                               "#EC ENHOK

  group_count = group_count + 1.

 

*------- Mappenname gesetzt ? -

-


  IF bgr00-group = space.

    PERFORM log_msg USING c_msgid 'I' '011'

                          group_count space space space.

    PERFORM log_msg USING c_msgid 'I' '015'

                          space space space space.

    PERFORM dump_wa USING 'BGR00'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

 

*------- Mandant gesetzt / richtig gesetzt? -

-


  IF bgr00-mandt IS INITIAL.

    PERFORM log_msg USING c_msgid 'I' '005'

                          group_count space space space.

    PERFORM log_msg USING c_msgid 'I' '015'

                          space space space space.

    PERFORM dump_wa USING 'BGR00'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

  IF bgr00-mandt NE sy-mandt.

    PERFORM log_msg USING c_msgid 'I' '006'

                          group_count bgr00-mandt sy-mandt space.

    PERFORM log_msg USING c_msgid 'I' '015'

                          space space space space.

    PERFORM dump_wa USING 'BGR00'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

 

*------- Username gesetzt ? -

-


  IF bgr00-usnam = space.

    PERFORM log_msg USING c_msgid 'I' '009'

                          group_count space space space.

    PERFORM log_msg USING c_msgid 'I' '015'

                          space space space space.

    PERFORM dump_wa USING 'BGR00'.

    PERFORM log_abort USING c_msgid '013'.

  ENDIF.

 

*------- Sonderzeichen NODATA prüfen/übernehmen -

-


  IF bgr00-nodata = space.

    nodata = c_nodata.

  ELSE.

    IF bgr00-nodata BETWEEN '0' AND '9'

    OR bgr00-nodata BETWEEN 'A' AND 'I'

    OR bgr00-nodata BETWEEN 'J' AND 'R'

    OR bgr00-nodata BETWEEN 'S' AND 'Z'

    OR bgr00-nodata BETWEEN 'a' AND 'i'

    OR bgr00-nodata BETWEEN 'j' AND 'r'

    OR bgr00-nodata BETWEEN 's' AND 'z'

    OR bgr00-nodata EQ      '+'        " wegen Zentrale

    OR bgr00-nodata EQ      '*'        " wegen Mehrwertst. rechnen

    OR bgr00-nodata EQ      '='.       " wegen Matchcode

      PERFORM log_msg USING c_msgid 'I' '010'

                            group_count bgr00-nodata space space.

      PERFORM log_msg USING c_msgid 'I' '015'

                            space space space space.

      PERFORM dump_wa USING 'BGR00'.

      PERFORM log_abort USING c_msgid '013'.

    ENDIF.

    nodata = bgr00-nodata.

  ENDIF.

  PERFORM log_msg USING c_msgid 'I' '012'

                        group_count nodata space space.

 

 

*------- Mappe öffnen -

-


  IF  fl_check = space.

    PERFORM mappe_oeffnen.            " open portfolio

  ENDIF.

 

*------- Flags, Zähler initialisieren -

-


  CLEAR: xnewg, beleg_count, satz2_count, satz2_cnt_akt, wt_count.

 

*------- Initialstrukturen erzeugen (NODATA-Sonderzeichen -

-


*----


INIT_STRUCTURES_PRODUCING----

-


  IF nodata NE nodata_old.

    PERFORM init_strukturen_erzeugen(rfbibli0) USING nodata.

    PERFORM init_bbkpf(rfbibli0) USING i_bbkpf.

    PERFORM init_bbseg(rfbibli0) USING i_bbseg.

    PERFORM init_bbtax(rfbibli0) USING i_bbtax.

    PERFORM init_bselk(rfbibli0) USING i_bselk.

    PERFORM init_bselp(rfbibli0) USING i_bselp.

    PERFORM init_bwith(rfbibli0) USING i_bwith.

    nodata_old = nodata.

  ENDIF.

ENDFORM.                               "mappe_pruefen_oeffnen

 

*eject

*----

-


  •        Form  MAPPE_SCHLIESSEN

*----

-


FORM mappe_schliessen.

  IF fl_check = space.

    IF group_open = 'X'.

      CALL FUNCTION 'POSTING_INTERFACE_END'.

      IF function = 'B'.

        PERFORM log_msg USING c_msgid 'I' '008'

                        group_count bgr00-group space space.

      ENDIF.

      CLEAR group_open.

    ENDIF.

  ELSE.

    IF group_count > 0.

      PERFORM log_msg USING c_msgid 'I' '019'

                      group_count bgr00-group space space.

    ENDIF.

  ENDIF.

ENDFORM.                               "mappe_schliessen

 

*eject

*----

-


  •        Form  MAPPEN_WECHSEL

*----

-


  •        Neuer Mappenvorsatz wurde gesendet.

  •        Aktuelle Mappe wird geschlosssen, neue Mappe geöffnet.

*----

-


FORM mappen_wechsel.                   "portfolios change

  PERFORM mappe_schliessen.            "close portfolio

  PERFORM mappe_pruefen_oeffnen.       "Portfolio_test open_.

ENDFORM.                               "mappen_wechsel

 

*eject

*----

-


  •        Form  MESSAGE_AUSGEBEN

*----

-


  •        'Call Transaction .. Using ..'

  •        Meldung ins Protokoll ausgeben.

*----

-


FORM message_call_transaction.

 

*------- neuer Eintrag aus T100 -

-


  IF t100-sprsl NE sy-langu

  OR t100-arbgb NE sy-msgid

  OR t100-msgnr NE sy-msgno.

    CLEAR: text, text1, text2, text3, msgvn.

    SELECT SINGLE * FROM t100 WHERE sprsl = sy-langu

                              AND   arbgb = sy-msgid

                              AND   msgnr = sy-msgno.

    IF sy-subrc = 0.

      text = t100-text.

      DO 4 TIMES VARYING msgvn FROM sy-msgv1 NEXT sy-msgv2.

        IF text CA '$'.

          REPLACE '$' WITH msgvn INTO text.

          CONDENSE text.

        ENDIF.

        IF text CA '&'.

          REPLACE '&' WITH msgvn INTO text.

          CONDENSE text.

        ENDIF.

      ENDDO.

      text1 = text(40).

      text2 = text+40(40).

      text3 = text+80(40).

      PERFORM log_msg USING c_msgid 'I' '172'

                      beleg_count text1 text2 text3.

    ELSE.

      PERFORM log_msg USING c_msgid 'I' '173'

                      beleg_count sy-msgno sy-msgv1 sy-msgv2.

    ENDIF.

 

*------- gleicher Eintrag aus T100 -

-


  ELSE.

    IF text NE space.

      CLEAR: text, text1, text2, text3, msgvn.

      text = t100-text.

      DO 4 TIMES VARYING msgvn FROM sy-msgv1 NEXT sy-msgv2.

        IF text CA '$'.

          REPLACE '$' WITH msgvn INTO text.

          CONDENSE text.

        ENDIF.

        IF text CA '&'.

          REPLACE '&' WITH msgvn INTO text.

          CONDENSE text.

        ENDIF.

      ENDDO.

      text1 = text(40).

      text2 = text+40(40).

      text3 = text+80(40).

      PERFORM log_msg USING c_msgid 'I' '172'

                      beleg_count text1 text2 text3.

    ELSE.

      PERFORM log_msg USING c_msgid 'I' '173'

                      beleg_count sy-msgno sy-msgv1 sy-msgv2.

    ENDIF.

  ENDIF.

ENDFORM.                               "message_call_transaction

 

*eject

*----

-


  •        Form  SAVE_DATENSATZ_BEARBEITEN

*----

-


FORM save_datensatz_bearbeiten.

  satz2_cnt_akt = satz2_count.

 

ENDFORM.                               "save_datensatz_bearbeiten

 

*eject

*----

-


  •        Form  KONTOART_ERMITTELN.

*----

-


FORM kontoart_ermitteln.

 

  LOOP AT xtbsl WHERE bschl = bbseg-newbs.

    EXIT.

  ENDLOOP.

  IF sy-subrc NE 0.

    SELECT SINGLE * FROM tbsl WHERE bschl = bbseg-newbs.

    IF sy-subrc = 0.

      xtbsl = tbsl.

      APPEND xtbsl.

    ELSE.

      PERFORM log_msg USING c_msgid 'I' '156'

                            beleg_count satz2_cnt_akt bbseg-newbs space.

      PERFORM log_msg USING c_msgid 'I' '016'

                            space space space space.

      PERFORM dump_wa USING 'BBKPF'.

      PERFORM log_msg USING c_msgid 'I' '017'

                            space space space space.

      PERFORM dump_wa USING 'BBSEG'.

      PERFORM log_abort USING c_msgid '013'.

    ENDIF.

  ENDIF.

ENDFORM.                               "kontoart_ermitteln

 

*eject

*----

-


  •        Form  VBUND_SENDEN

*----

-


FORM vbund_senden.

  • CHECK FL_CHECK = SPACE.

*

  • CLEAR FT.

  • FT-PROGRAM  = 'SAPLF014'.

  • FT-DYNPRO   = '0100'.

  • FT-DYNBEGIN = 'X'.

  • APPEND FT.

*

  • CLEAR FT.

  • FT-FNAM = 'RF014-VBUND'.

  • FT-FVAL = BBKPF-VBUND.

  • APPEND FT.

*

ENDFORM.                               "vbund_senden

 

 

*eject

*----

-


  •        Form  MOVE_BSELK_TO_SAVE_FTCLEAR.

*----

-


  •        Selektionskopfdaten in SAVE_FTCLEAR sichern für

  •        Initialisierung von FTCLEAR

*----

-


FORM move_bselk_to_save_ftclear.

  CLEAR save_ftclear.

  IF bselk-agkon(1) NE nodata.

    save_ftclear-agkon = bselk-agkon.

  ENDIF.

  IF bselk-agkoa(1) NE nodata.

    save_ftclear-agkoa = bselk-agkoa.

  ENDIF.

  IF bselk-xnops(1) NE nodata.

    save_ftclear-xnops = bselk-xnops.

  ENDIF.

  IF bselk-agbuk(1) NE nodata.

    save_ftclear-agbuk = bselk-agbuk.

  ENDIF.

  IF bselk-agums(1) NE nodata.

    save_ftclear-agums = bselk-agums.

  ENDIF.

  IF bselk-avsid(1) NE nodata.         "Avis

    save_ftclear-avsid = bselk-avsid.  "Avis

  ENDIF.                               "Avis

  IF bselk-xfifo(1) NE nodata.

    save_ftclear-xfifo = bselk-xfifo.

  ENDIF.

ENDFORM.                               "move_bselk_to_save_ftclear

 

 

*eject

*----

-


  •        Form  FILL_FTTAX_FROM_BBSEG.

*----

-


  • Diese Routine hat die Aufgabe die FTTAX mit Daten aus BBSEG zu füllen

  • Durch das neue Steuerhandling ab 2.2 sind die Steuerdaten in FTTAX

  • zu übergeben.

  • Durch diese Routine wird in einfachen Fällen eine Aufwärts-

  • kompatibilität gewährleistet

*----

-


FORM fill_fttax_from_bbseg.

  CLEAR fttax.

  IF       xtbsl-koart  =  'S'

  AND (    bbseg-wmwst(1) NE nodata

        OR bbseg-mwsts(1) NE nodata ).

    IF bbkpf-xmwst  = 'X'.

  •     Abbruch: Wenn XMWST übergeben,muß in Steuerfeldern NODATA stehen

      PERFORM log_msg USING c_msgid 'I' '148'

                            beleg_count satz2_count space space.

      PERFORM log_msg USING c_msgid 'I' '899'

                            'BBSEG-WMWST' '=' bbseg-wmwst space.

      PERFORM log_msg USING c_msgid 'I' '899'

                            'BBSEG-MWSTS' '=' bbseg-mwsts space.

      PERFORM dump_wa USING 'BBKPF'.

      PERFORM log_abort USING c_msgid '013'.

    ENDIF.

 

*------- Steuer wird über BBSEG versorgt -

-


    bbseg_tax = 'X'.

 

*------- Ausstieg bei Direct Input wg. Performance -

-


    CHECK function NE 'D'.                                  "30C

 

    IF bbseg-wmwst = '' OR bbseg-mwsts = ''.

      READ TABLE ftpost INDEX 1.

      IF ftpost-fnam NE 'BKPF-XMWST'.

        CLEAR: ftpost.

        ftpost-stype = 'K'.

        ftpost-count = '001'.

        ftpost-fnam = 'BKPF-XMWST'.

        ftpost-fval = 'X'.

        INSERT ftpost INDEX 1.

      ENDIF.

    ELSE.

      IF bbseg-wmwst(1) NE nodata.

        fttax-fwste = bbseg-wmwst.

      ENDIF.

      IF bbseg-mwsts(1) NE nodata.

        fttax-hwste = bbseg-mwsts.

      ENDIF.

      fttax-mwskz = bbseg-mwskz.

      fttax-bschl = bbseg-newbs.

      APPEND fttax.

    ENDIF.

  ENDIF.

ENDFORM.                               "fill_fttax_from_bbseg

 

*eject

************************************************************************

  •      Include   Generiertes Coding ......

************************************************************************

INCLUDE rfbibl02.

 

*&----


*

*&      Form  LOOP_AT_TABLE_TFILE

*&----


*

  •       text                                                           *

*----


*

FORM loop_at_table_tfile.

  DATA: counter(5) TYPE n.

  CLEAR group_count .

 

  PERFORM set_global_variable.

 

  DO.

    counter = counter + 1.

    IF function NE 'B' AND sy-batch = 'X'.

      jobid_ext+27(5) = counter.

      IMPORT tfile FROM DATABASE tfsave(fi) ID jobid_ext.

      IF sy-subrc <> 0 .

        EXIT.

      ENDIF.

    ELSE.

      IF counter > 1.

        EXIT.

      ENDIF.

    ENDIF.

 

    LOOP AT tfile.

      wa = tfile-rec.

      IF sy-tabix = 1 AND counter = 1.

*------- erster Satz muss Mappensatz sein -

-


*----

-


first sentence must be portfolios sentence "SRR 23649

        IF wa(1) NE '0'.

          PERFORM log_msg USING c_msgid 'I' '004'

                                ds_name space space space.

          PERFORM log_abort USING c_msgid '013'.

        ENDIF.

        save_bgr00 = wa.                                    "#EC ENHOK

      ENDIF.

 

      CASE wa(1).

        WHEN '0'.

*------- neue Mappe -

-


*----


new portfolio *----SRR 23649

          PERFORM letzten_beleg_abschliessen.    "lock last_record_

          PERFORM mappen_wechsel.

        WHEN '1'.

 

*----- Kopfsatz *Head sentence--

-


*----- Beleg abschliessen *Lock record--

-


          PERFORM letzten_beleg_abschliessen.   "lock last_record_

          PERFORM kopfsatz_bearbeiten.          "process head sentence

          PERFORM fill_t_bbkpf.

          REFRESH ertab.

          ertab = wa.

          APPEND ertab.

        WHEN '2'.

*----- Belegsegment *Record segment--

-


          PERFORM datensatz_pruefen.            "test record

          satz2_cnt_akt = satz2_count - 1.

          PERFORM wa_daten_uebertragen.        "transmit wa_data_

          PERFORM datensatz_transportieren.    "transport record

          PERFORM fill_t_bbseg.

          PERFORM fill_t_bwith.

          PERFORM fill_t_bbtax.

          ertab = wa.

          APPEND ertab.

        WHEN OTHERS.

*------- ungültiger Satztyp -

-


          satz2_count = satz2_count + 1.

          PERFORM log_msg USING c_msgid 'I' '152'

                          beleg_count satz2_count wa(1) space.

          PERFORM log_msg USING c_msgid 'I' '016'

                          space space space space.

          PERFORM dump_wa USING 'BBKPF'.

          PERFORM log_abort USING c_msgid '013'.

      ENDCASE.

    ENDLOOP.

 

    REFRESH tfile.

  ENDDO.

  PERFORM letzten_beleg_abschliessen.          "lock last_record_

 

  PERFORM mappe_schliessen.                    "close portfolio

*------- letzter CALL_BI_END_AKT_NUMBER  -

-


  PERFORM call_bi_end_akt_number.

  COMMIT WORK.

  CALL FUNCTION 'DEQUEUE_ALL'.

  CLEAR commit_count.

ENDFORM.                               " LOOP_AT_TABLE_TFILE

 

 

 

*&----


*

*&      Form  READ_DATASET_INTO_TABLE_TFILE

*&----


*

  •       lesen der Datei und speichers der Sätze in Tabelle TFILE       *

*----


*

FORM read_dataset_into_table_tfile.

  DATA: new_pak TYPE i.

  DATA: counter(5) TYPE n,

        v_currency     LIKE ekko-waers,       "currency

        l_tabix        LIKE sy-tabix,          "Index

        l_items_line   LIKE sy-index.

 

*------- Datei öffnen -

-


 

  • OPEN DATASET ds_name IN TEXT MODE ENCODING DEFAULT FOR INPUT.

*uploads the data from XL

  PERFORM gui_upload.

  PERFORM split_data.

 

 

*---Begin of Commenting for SRR23649

 

*----- now called in perform split_data its

**-- Populate BGR00 Structure

  • PERFORM f_create_bgr00.

**-- Create BBKPF structure and pass it to I_POST Table.

  •    PERFORM f_create_bbkpf.

  •    Loop at t_item.

**-- Populate BBSEG Structure

  •        PERFORM f_create_bbseg.

  • ENDLOOP.

*

*---End ofCommenting for SRR23649

 

 

 

*------- Satz in Tabelle füllen, falls ungleich Space -

-


  IF NOT tfile IS INITIAL.

    PERFORM check_tfile.

    APPEND tfile.

  ENDIF.

 

*------ beim BI (und evtl. CT und DI, falls diese nicht ueber BMV0

*------ sondern direkt durch RFBIBL00 aufgerufen wurden) existiert

*------ keine eindeutige Job-Id, daher wird die interne Tabelle TFILE

*------ am Stueck und nicht paketweise abgespeichert.

*------ Wenn man CT oder DI ueber BMV0 einplant, so ist SY-BATCH

*------ gesetzt.

  IF function NE 'B' AND sy-batch = 'X'.

    new_pak = sy-tabix MOD pack_size.

    IF new_pak = 0.

      counter = counter + 1.

      jobid_ext+27(5) = counter.

      EXPORT tfile TO DATABASE tfsave(fi) ID jobid_ext.

      REFRESH tfile.

    ENDIF.

  ENDIF.

 

 

  IF new_pak NE 0.                     "gibt es Zeilen zum Uebertragen?

    counter = counter + 1.

    jobid_ext+27(5) = counter.

    EXPORT tfile TO DATABASE tfsave(fi) ID jobid_ext.

    REFRESH tfile.

  ENDIF.

 

ENDFORM.                               " READ_DATASET_INTO_TABLE_TFILE

 

 

 

*&----


*

*&      Form  CHECK_TFILE

*&----


*

  •       Prüfen der Tabelle TFILE                                       *

*----


*

FORM check_tfile.

  STATICS: bbkpf_cnt TYPE i.

 

*------- Plausibilitätsprüfungen bei Belegköpfen -

-


  IF tfile+0(1) = '1'.

    IF  function CA 'DC'

    AND fl_check IS INITIAL.

      bbkpf_cnt = bbkpf_cnt + 1.

      IF sy-batch NE 'X'

      AND bbkpf_cnt > 20.

        PERFORM log_msg USING c_msgid 'I' '032'

                              space space space space.

        PERFORM log_abort USING c_msgid '013'.

      ENDIF.

    ENDIF.

    IF function = 'D'

    AND ( tfile+1(4) EQ 'FB05'

    OR    tfile+1(4) EQ 'FBS1' ).

      PERFORM log_msg USING c_msgid 'I' '033'

                              space space space space.

      PERFORM log_abort USING c_msgid '013'.

    ENDIF.

  ENDIF.

 

ENDFORM.                               " CHECK_TFILE

 

 

*&----


*

*&      Form  ERROR_PROCESSING

*&----


*

  •       text                                                           *

*----


*

FORM error_processing.

  CHECK function NE 'B'.

  CHECK fl_check = space.

  REFRESH: efile, tfile.

  IMPORT save_bgr00 efile FROM DATABASE terrd(fi) ID jobid.

  LOOP AT efile.

    tfile = efile.

    APPEND tfile.

  ENDLOOP.

  DESCRIBE TABLE tfile LINES tfill_tfile.

 

  IF tfill_tfile > 0.

    IF tbist_aktiv NE 'X'.

      DELETE FROM DATABASE terrd(fi) ID jobid.

    ENDIF.

    function = 'B'.

    error_run = 'X'.

    CLEAR: startnum, all_commit, commit_count, numerror,  count.

    tfile = save_bgr00.                                     "#EC ENHOK

    INSERT tfile INDEX 1.

    PERFORM loop_at_table_tfile.

  ENDIF.

ENDFORM.                               " ERROR_PROCESSING

 

*&----


*

*&      Form  LETZTEN_BELEG_ABSCHLIESSEN

*&----


*

  •       text                                                           *

*----


*

FORM letzten_beleg_abschliessen.

 

  IF count > startnum.

    IF function = 'D'.

      DESCRIBE TABLE t_bbseg LINES tfill_t_bbseg.

      IF tfill_t_bbseg > 0.

        PERFORM fast_input.

      ENDIF.

    ELSE.

      DESCRIBE TABLE ftpost LINES tfill_ftpost.

      IF tfill_ftpost > 0.

        PERFORM beleg_abschliessen.    "lock record

      ENDIF.

    ENDIF.

  ENDIF.

  CLEAR: bbkpf_ok.

ENDFORM.                               " LETZTEN_BELEG_ABSCHLIESSEN

 

*&----


*

*&      Form  FAST_ENTRY

*&----


*

  •       text                                                           *

*----


*

FORM fast_input.

  DATA: bukrs LIKE bkpf-bukrs,

        gjahr LIKE bkpf-gjahr,

        belnr LIKE bkpf-belnr.

 

  CHECK fl_check = space.

  IF bbkpf-tcode = 'FB01' OR bbkpf-tcode = 'FBB1'.

  • Batch-Input FLAG for Check doc type

    sy-binpt = 'X'.

    CALL FUNCTION 'AC_DOCUMENT_DIRECT_INPUT'

      EXPORTING

        i_nodata      = nodata

        i_grpid       = bgr00-group

      IMPORTING

        e_bukrs       = bukrs

        e_gjahr       = gjahr

        e_belnr       = belnr

      TABLES

        t_bbkpf       = t_bbkpf

        t_bbseg       = t_bbseg

        t_bbtax       = t_bbtax

        t_bwith       = t_bwith

      EXCEPTIONS

        error_message = 01.

    IF sy-subrc IS INITIAL.

      IF pa_xprot = 'X'.

        PERFORM log_msg USING 'F5' 'I' '312'

                        belnr bukrs space space.

      ENDIF.

    ELSE.

      IF sy-msgty = 'A'.

        PERFORM log_msg USING sy-msgid 'I' sy-msgno

                              sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

        PERFORM log_abort USING c_msgid '013'.

      ELSE.

        IF sy-batch IS INITIAL.

          PERFORM log_msg USING sy-msgid 'I' sy-msgno

                                sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

        ENDIF.

      ENDIF.

      PERFORM export_error_data.

    ENDIF.

  ELSE.

    MESSAGE w033.

    PERFORM export_error_data.

  ENDIF.

 

*------- Commit Work? -

-


  commit_count = commit_count + 1.

  IF commit_count = max_commit.

    PERFORM call_bi_end_akt_number.

    COMMIT WORK.

    CALL FUNCTION 'DEQUEUE_ALL'.

    CLEAR commit_count.

  ENDIF.

 

  • Refresh muß hier erfolgen, da im Fehlerfall nicht im FBS initialisiert

  • werden kann

*

  REFRESH: t_bbkpf,

           t_bbseg,

           t_bwith,

           t_bbtax.

  CLEAR:   t_bbkpf,                                         "30C

           t_bbseg,                                         "30C

           t_bwith,

           t_bbtax.                                         "30C

ENDFORM.                               " FAST_ENTRY

 

*&----


*

*&      Form  FILL_T_BBKPF

*&----


*

FORM fill_t_bbkpf.

  CHECK function = 'D'.

  APPEND bbkpf TO t_bbkpf.

ENDFORM.                               " FILL_T_BBKPF

 

*&----


*

*&      Form  FILL_T_BBSEG

*&----


*

  •       text                                                           *

*----


*

FORM fill_t_bbseg.

  CHECK function = 'D'.

  IF wa+2(9) = 'BSEG'.

*------- falls ZBSEG wurde diese bereits in BBSEG gemoved -

-


  •    append bbseg to t_bbseg.

    CLEAR wa_bbseg_di.

    MOVE-CORRESPONDING bbseg TO wa_bbseg_di.

    IF xtbsl-koart = 'D' OR

       xtbsl-koart = 'K'.

      wa_bbseg_di-wt_key = wt_count.

    ENDIF.

    APPEND wa_bbseg_di TO t_bbseg.

  ENDIF.

ENDFORM.                               " FILL_T_BBSEG

 

*&----


*

*&      Form  FILL_T_BBTAX

*&----


*

  •       text                                                           *

*----


*

FORM fill_t_bbtax.

  CHECK function = 'D'.

  IF wa+2(9) = 'BTAX'.

    APPEND bbtax TO t_bbtax.

  ENDIF.

ENDFORM.                               " FILL_T_BBSEG

 

*eject

*&----


*

*&      Form  GET_RESTART_INFO

*&----


*

  •       text                                                           *

*----


*

FORM get_restart_info.

  DATA: action.                                             " thk 30F

  DATA: counter(5) TYPE n.

 

  CHECK function NE 'B'.                                    "30C+

  CHECK fl_check = space.                                   "30C

  • Startnummer holen

  IF sy-batch = 'X'.

  • THK zu 30F: Aufruf jetzt mit importing-parameter (Periodische Jobs)

  •   CALL FUNCTION 'GET_JOB_RUNTIME_INFO'

  •        IMPORTING

  •             JOBNAME         = JOBNAME

  •        EXCEPTIONS

  •             NO_RUNTIME_INFO = 01.

  •   IF SY-SUBRC NE 0.

  •     MESSAGE A051.

  •   ENDIF.

    CALL FUNCTION 'BI_GET_STARTING_NUMBER'

      IMPORTING

        jobid              = jobid

        actual_number      = startnum

        action             = action

        lasterrnum         = lasterrnum

        numerrors          = olderror

      EXCEPTIONS

        wrong_status_found = 02

        not_found          = 03.

 

    IF function NE 'B'.                                     "QHA30C+

      CASE sy-subrc.

        WHEN 0.                                             "QHA30C+

  • begin P30K110179

          IF jobid+27(5) NE space.

            PERFORM log_msg USING c_msgid 'I' '209'

                                  jobid '27' space space.

            PERFORM log_abort USING c_msgid '013'.

          ENDIF.

          jobid_ext = jobid.

          CASE action.

            WHEN 'E'.                  " Fehler nachbuchen

              PERFORM log_msg USING c_msgid 'I' '034'

                              space space space space.

              PERFORM log_abort USING c_msgid '013'.

            WHEN ' '.                  " Neustart

              DELETE FROM DATABASE terrd(fi) ID jobid.      "31H

              DO.

                counter = counter + 1.

                jobid_ext+27(5) = counter.

                DELETE FROM DATABASE tfsave(fi) ID jobid_ext.

                IF sy-subrc <> 0 .

                  EXIT.

                ENDIF.

              ENDDO.

              PERFORM execute_bi_end_akt_number.

            WHEN 'R'.                  " Wiederaufsetzen (Restart)

              all_commit = startnum.

              tfsave_fill = 'X'.

              PERFORM log_msg USING c_msgid 'I' '059'

                                    jobid space space space.

          ENDCASE.

  • end P30K110179

 

          tbist_aktiv = 'X'.                                "QHA30C+

        WHEN 2.

          PERFORM log_msg USING c_msgid 'I' '053'

                                space space space space.

          PERFORM log_abort USING c_msgid '013'.

        WHEN 3.

          PERFORM log_msg USING c_msgid 'I' '054'

                                space space space space.

          PERFORM log_abort USING c_msgid '013'.

      ENDCASE.

 

      IF startnum NE 0.

        PERFORM log_msg USING c_msgid 'I' '055'

                              startnum space space space.

      ENDIF.

    ELSE.

      IF sy-subrc = 0.

        tbist_aktiv = 'X'.

      ENDIF.

    ENDIF.

  •   ELSEIF STARTNUM = 0.

  •     MESSAGE I899 WITH 'Diese Mappe wird zum ersten Mal angefasst'.

  •      "WICHTIG!

  •      DELETE ETAB FROM DATABASE ....

  •   ELSE.

  •     IF IS_ERROR = 'X'.

  •      MESSAGE I899 WITH 'File' DS_NAME 'letzter Fehler bei' STARTNUM.

  •     ELSE.

  •        MESSAGE I899 WITH 'File' DS_NAME 'Fortsetzung bei' STARTNUM.

  •     ENDIF.

  •   ENDIF.

  ELSE.

    startnum = 0.

  •   IS_ERROR = SPACE.

    jobid   = 'RFBIBL00_'.

    jobid+9 = sy-uname.

    DELETE FROM DATABASE terrd(fi) ID jobid.

  ENDIF.

 

ENDFORM.                               " GET_STARTING_NUMBER

 

*&----


*

*&      Form  CALL_BI_END_AKT_NUMBER

*&----


*

  •       text                                                           *

*----


*

FORM call_bi_end_akt_number.

  • CHECK SY-BATCH = 'X'.

  CHECK fl_check = space.              "QHA->Steinwedel

  • CHECK NOT jobid IS INITIAL.

  CHECK function NE 'B'.

  CHECK tbist_aktiv = 'X'.

 

  all_commit = all_commit + commit_count.

  PERFORM execute_bi_end_akt_number.

  CLEAR commit_count.

  CLEAR numerror.

 

ENDFORM.                               " CALL_BI_END_AKT_NUMBER

 

 

*&----


*

*&      Form  EXECUTE_BI_END_AKT_NUMBER

*&----


*

  •       text                                                           *

*----


*

FORM execute_bi_end_akt_number.

 

  CALL FUNCTION 'BI_END_AKT_NUMBER'

       EXPORTING

            jobname          = jobid

            actual_number    = all_commit

            number_of_errors = numerror"eine relative Zahl,

               "Anzahl Fehler seit dem letzem(!) COMMIT, wird im FB

                                       "kumuliert.

  •           EXTERNAL_NUMBER  = 'interne Nummernvergabe'

       EXCEPTIONS

            internal_error   = 01

            not_found        = 02.

 

  CASE sy-subrc.

    WHEN 0.

  •       MESSAGE I899 WITH 'BI_END_AKT_NUMBER' BELEG_COUNT.     "30Ctest

    WHEN 1.

      ROLLBACK WORK.

      PERFORM log_msg USING c_msgid 'I' '056'

                              space space space space.

      PERFORM log_abort USING c_msgid '013'.

    WHEN 2.

      ROLLBACK WORK.

      PERFORM log_msg USING c_msgid 'I' '054'

                              jobid space space space.

      PERFORM log_abort USING c_msgid '013'.

  ENDCASE.

 

ENDFORM.                               " EXECUTE_BI_END_AKT_NUMBER

 

 

 

*eject

*&----


*

*&      Form  EXPORT_ERROR_DATA

*&----


*

  •       text                                                           *

*----


*

FORM export_error_data.

  DESCRIBE TABLE ertab LINES tfill_ertab.

  CHECK tfill_ertab > 0.

 

  IMPORT save_bgr00 efile FROM DATABASE terrd(fi) ID jobid.

 

  LOOP AT ertab.

    efile = ertab.

    APPEND efile.

  ENDLOOP.

 

  EXPORT save_bgr00 efile TO DATABASE terrd(fi) ID jobid.

  numerror = numerror + 1.

ENDFORM.                               " EXPORT_ERROR_DATA

 

*eject

*&----


*

*&      Form  CALL_BI_CLOSE_ENTRY

*&----


*

  •       text                                                           *

*----


*

FORM call_bi_close_entry.

  DATA: counter(5) TYPE n.

  IF tbist_aktiv = 'X' AND sy-batch = 'X'.

    CALL FUNCTION 'BI_CLOSE_ENTRY'

      EXPORTING

        jobname        = jobid

      EXCEPTIONS

        internal_error = 01

        not_found      = 02.

 

    CASE sy-subrc.

      WHEN 0.

        DELETE FROM DATABASE terrd(fi) ID jobid.

        DO.

          counter = counter + 1.

          jobid_ext+27(5) = counter.

          DELETE FROM DATABASE tfsave(fi) ID jobid_ext.

          IF sy-subrc <> 0 .

            EXIT.

          ENDIF.

        ENDDO.

      WHEN 1.

        PERFORM log_msg USING c_msgid 'I' '057'

                             space space space space.

        PERFORM log_abort USING c_msgid '013'.

      WHEN 2.

        PERFORM log_msg USING c_msgid 'I' '054'

                              jobid space space space.

        PERFORM log_abort USING c_msgid '013'.

    ENDCASE.

  ELSE.

    IF function NE 'B'.

      DELETE FROM DATABASE terrd(fi) ID jobid.

    ENDIF.

  ENDIF.

 

  • delete tfsave also in test run

  IF fl_check EQ 'X' AND function NE 'B' AND sy-batch = 'X'.

    counter = 0.

    DO.

      counter = counter + 1.

      jobid_ext+27(5) = counter.

      DELETE FROM DATABASE tfsave(fi) ID jobid_ext.

      IF sy-subrc <> 0 .

        EXIT.

      ENDIF.

    ENDDO.

  ENDIF.

 

ENDFORM.                               " CALL_BI_CLOSE_ENTRY

*&----


*

*&      Form  FILL_T_BWITH

*&----


*

  •       text

*----


*

  • -->  p1        text

  • <--  p2        text

*----


*

FORM fill_t_bwith.

  CHECK function = 'D'.

  IF wa+2(9) = 'WITH'.

  •    append bwith to t_bwith.

    CLEAR wa_bwith_di.

    MOVE-CORRESPONDING bwith TO wa_bwith_di.

    wa_bwith_di-wt_key = wt_count.

    APPEND wa_bwith_di TO t_bwith.

  ENDIF.

ENDFORM.                               " FILL_T_BWITH

 

*eject

*&----


*

*&      Form  BSELP_FIELD_LENGHT_CONVERT

*&----


*

  •       Die Länge der Felder BSELP-FELDN, BSELP-SLVON und BSELP-SLBIS

  •       wird angepasst                                                 *

  •       Feld           Länge vor 4.0A        Länge ab 4.0A             *

  •       BSELP-FELDN     5                    30

  •       BSELP-SLVON    20                    30

  •       BSELP-SLBIS    20                    30

*

  • ---> p_wa          aktuelle Zeile mit alten Feldlängen

  • <--- p_wa          aktuelle Zeile mit neuen Feldlängen

*----


*

FORM bselp_field_lenght_convert CHANGING p_wa.

  DATA: wa_tmp(2600) TYPE c,           " help work area

        offset_o TYPE i,               " old offset (<4.0A)

        offset_n TYPE i.               " new offset (>= 4.0A)

 

  CLEAR wa_tmp.

  wa_tmp(31) = p_wa(31).

  offset_n = 31.

  offset_o = 31.

  DO 18 TIMES.

    wa_tmpoffset_n(5) = p_waoffset_o(5).

    offset_n = offset_n + 30.

    offset_o = offset_o + 5.

    DO 2 TIMES.

      wa_tmpoffset_n(20) = p_waoffset_o(20).

      offset_n = offset_n + 30.

      offset_o = offset_o + 20.

    ENDDO.

  ENDDO.

  CLEAR p_wa.

  p_wa = wa_tmp.

ENDFORM.                               "bselp_field_lenght_convert

 

*&----


*

*&      Form  set_global_variable

*&----


*

  •       text

*----


*

  • -->  p1        text

  • <--  p2        text

*----


*

FORM set_global_variable.

 

  CHECK function NE 'D'.

  • -----  read currency exchange rate prefixes --------------------------

  CALL FUNCTION 'RATE_GET_PREFIXES'

    EXPORTING

      client   = sy-mandt

    IMPORTING

      prefix_p = prefix_p

      prefix_m = prefix_m.

 

 

ENDFORM.                               " set_global_variable

 

 

*----


*

*&      Form  LOG_MSG

*&----


*

  •       collects info messages for log or displays pop up

*----


*

FORM log_msg USING    i_msgid LIKE sy-msgid

                      i_msgty LIKE sy-msgty

                      i_msgno LIKE sy-msgno

                      i_msgv1

                      i_msgv2

                      i_msgv3

                      i_msgv4.

 

  • declaration

  DATA: h_fimsg LIKE fimsg.

 

  CHECK xinf EQ space.

 

  IF xlog = 'X'.

 

  • log the message with the message handler

    h_fimsg-msgid = i_msgid.

    h_fimsg-msgty = i_msgty.

    h_fimsg-msgno = i_msgno.

    h_fimsg-msgv1 = i_msgv1. CONDENSE h_fimsg-msgv1.

    h_fimsg-msgv2 = i_msgv2. CONDENSE h_fimsg-msgv2.

    h_fimsg-msgv3 = i_msgv3. CONDENSE h_fimsg-msgv3.

    h_fimsg-msgv4 = i_msgv4. CONDENSE h_fimsg-msgv4.

    CALL FUNCTION 'FI_MESSAGE_COLLECT'

      EXPORTING

        i_fimsg       = h_fimsg

        i_xappn       = 'X'

      EXCEPTIONS

        msgid_missing = 1

        msgno_missing = 2

        msgty_missing = 3

        OTHERS        = 4.

 

  ELSEIF xpop = 'X'.

  • popup

    MESSAGE ID     i_msgid

            TYPE   i_msgty

            NUMBER i_msgno

            WITH   i_msgv1 i_msgv2 i_msgv3 i_msgv4.

  ENDIF.

 

ENDFORM.                               " LOG_MSG

*&----


*

*&      Form  log_print

*&----


*

  •       display log

*----


*

FORM log_print.

 

  IF xlog = 'X'.

    IF NOT sy-batch IS INITIAL.

      CALL FUNCTION 'FI_MESSAGE_PROTOCOL'

        EXCEPTIONS

          no_message = 1

          not_batch  = 2

          OTHERS     = 3.

    ELSE.

      CALL FUNCTION 'FI_MESSAGE_PRINT'

        EXPORTING

          i_xausn = 'X'

          i_comsg = 0

        EXCEPTIONS

          OTHERS  = 0.

    ENDIF.

  ENDIF.

 

ENDFORM.                    " log_print

 

*&----


*

*&      Form  log_abort

*&----


*

  •       foreground: stop program / background: message aXXX

*----


*

 

FORM log_abort USING i_msgid LIKE sy-msgid

                     i_msgno LIKE sy-msgno.

 

  IF sy-batch IS INITIAL.

    IF xlog = 'X'.

      PERFORM log_msg USING i_msgid 'I' i_msgno

                            space space space space.

    ENDIF.

    PERFORM log_print.

    ROLLBACK WORK.

    IF xpop = 'X'.                                          "Note 559106

      MESSAGE ID i_msgid                                    "Note 559106

              TYPE 'I'                                      "Note 559106

              NUMBER i_msgno.                               "Note 559106

    ELSEIF xlog = 'X' OR xinf = 'X' .                       "Note 559106

      MESSAGE ID i_msgid                                    "Note 559106

      TYPE 'S'                                              "Note 559106

      NUMBER i_msgno.                                       "Note 559106

    ENDIF.                                                  "Note 559106

    STOP.

  ELSE.

    PERFORM log_print.

    MESSAGE ID i_msgid

            TYPE 'A'

            NUMBER i_msgno.

  ENDIF.

 

ENDFORM.                    " log_abort

*----


*

  •        FORM TABLES_PRUEFEN                                           *

*----


*

  •        Prüfen ob zur TABLES-Anweisung Tabelle vorhanden ist          *

*----


*

FORM tables_pruefen.

 

  IF rep(6) = 'TABLES'.

    tabtab = space.

    tabtab-tabname = rep+7(6).

    READ TABLE tabtab.

    IF sy-subrc = 0.

      tabtab-vorhanden = xon.

      MODIFY tabtab INDEX sy-tabix.

    ELSE.

      new_gn = xon.

    ENDIF.

  ENDIF.

 

ENDFORM.                    "TABLES_PRUEFEN

*&----


*

*&      Form  gui_upload

*&----


*

  •       text

*----


*

FORM gui_upload .

  DATA w_file  TYPE string.

 

  MOVE p_file TO w_file.

 

 

  CALL FUNCTION 'GUI_UPLOAD'

    EXPORTING

      filename                = w_file

    TABLES

      data_tab                = t_rawdata

    EXCEPTIONS

      file_open_error         = 1

      file_read_error         = 2

      no_batch                = 3

      gui_refuse_filetransfer = 4

      invalid_type            = 5

      no_authority            = 6

      unknown_error           = 7

      bad_data_format         = 8

      header_not_allowed      = 9

      separator_not_allowed   = 10

      header_too_long         = 11

      unknown_dp_error        = 12

      access_denied           = 13

      dp_out_of_memory        = 14

      disk_full               = 15

      dp_timeout              = 16

      OTHERS                  = 17.

  .

  IF sy-subrc <> 0.

    MESSAGE e000 WITH text-008.

  ENDIF.

 

ENDFORM.                    " gui_upload

*&----


*

*&      Form  SPLIT_DATA

*&----


*

  •     Splitting data in header and line item details from

  •     uploaded file and passing it in tfile internal structure

  •     used to update the final file FTPOST

*----


*

FORM split_data .

  • DATA: l_kursf TYPE bkpf-kursf,           "DEVK919700

  DATA: l_wrbtr TYPE bseg-wrbtr,

        l_dmbtr TYPE bseg-dmbtr.

 

  CLASS cl_abap_conv_in_ce DEFINITION LOAD.

 

  DATA : c_delim(1) TYPE c,

         c_delim_dyn TYPE CHAR1,

         c_delim_cmp TYPE CHAR1 VALUE '#'.

 

  c_delim = cl_abap_conv_in_ce=>uccp('0009').

 

****Begin of Insertion by DEVK928551

*----Deleting empty rows from t_rawdata

  LOOP AT t_rawdata INTO wa_rawdata.

    IF  wa_rawdata-record+0(1) IS INITIAL.

      DELETE t_rawdata index sy-tabix.

    ENDIF.

 

    IF wa_rawdata-record+0(1) EQ '#'.

      DELETE t_rawdata index sy-tabix.

    ENDIF.

  ENDLOOP.

*-- Populate BGR00 Structure

  PERFORM f_create_bgr00.

 

****End of Insertion by DEVK928551

  DESCRIBE TABLE t_rawdata LINES record_count.

 

  CHECK record_count NE 0.

 

  REFRESH: t_header,

           t_item.

 

  LOOP AT t_rawdata INTO wa_rawdata.

 

     WRITE   wa_rawdata-record+0(1) TO c_delim_dyn.

 

     IF wa_rawdata-record+0(1) = c_h.

 

*SRR-25080 Begin.

 

      if v_flag = ' 'and

        v_net eq '0'.

        wa_bbkpf-xmwst = nodata.

      ELSE.

        wa_bbkpf-xmwst = 'X'.    "Calculate tax automatically

      ENDIF.

 

      if v_check = 'X'.

    • To append the header records.

        APPEND  wa_bbkpf TO t1_file.

        clear : v_flag,

                v_net.

      ENDIF.

*SRR-25080 End.

 

 

      CLEAR: wa_header.

  •            v_kursf.                       "DEVK919700

 

      SPLIT wa_rawdata-record AT c_delim INTO

         v_h

         wa_header-bukrs

         wa_header-blart

         v_bldat

         v_budat

         wa_header-waers

  •         v_kursf                            "DEVK919700

         wa_header-xblnr

         wa_header-bktxt

         v_stodt

  •         wa_header-monat                    "DEVK919700

  •         v_wwert                            "DEVK919700

         v_jv_total

         v_t_id

         wa_header-stgrd

         IN CHARACTER MODE.

 

  •      MOVE v_kursf TO l_kursf.               "DEVK919700

  •      WRITE l_kursf TO wa_header-kursf.      "DEVK919700

 

*Changing the date format .

      PERFORM format_date CHANGING v_bldat.

      PERFORM format_date CHANGING v_budat.

      PERFORM format_date CHANGING v_stodt.

  •      PERFORM format_date CHANGING v_wwert.  "DEVK919700

 

      MOVE v_bldat TO wa_header-bldat.

      MOVE v_budat TO wa_header-budat.

      MOVE v_stodt TO wa_header-stodt.

  •      MOVE v_wwert TO wa_header-wwert.       "DEVK919700

 

      APPEND wa_header TO t_header.

 

*-----Begin of Insertion SRR23649     "DEVK928551

      PERFORM f_fill_bbkpf.

*-----End of Insertion   SRR23649     "DEVK928551

 

 

    ELSEIF c_delim_dyn NE c_delim_cmp.

 

      CLEAR :wa_item,

             v_wrbtr.

 

  • SRR-25080 Begin.

**Flag to check that the item records for a particular header have been

*read.

      v_check = 'X'.

  • SRR-25080 End.

 

      SPLIT wa_rawdata-record AT c_delim INTO

          wa_item-posnr

          wa_item-bschl

          wa_item-hkont

          v_wrbtr

  •          wa_item-bukrs                       "DEVK919700

          wa_item-kostl

          wa_item-prctr

          wa_item-pprct

  •          wa_item-vbund                       "DEVK919700

          wa_item-aufnr

          wa_item-mwskz

          v_aloc

          wa_item-sgtxt

          wa_item-zzcgrp

          wa_item-zzplat

  •          wa_item-zzpdt                        "SIR-06394 (SIR-7142)

          wa_item-bewar

          wa_item-projk

          wa_item-zuonr

  •          v_dmbtr                             "DEVK919700

          wa_item-pernr

          wa_item-zzpdt.                        "SIR-7142

  •            v_dmbtr TO l_dmbtr.               "DEVK919700

 

  • Start of SRR-17283

  •      MOVE: v_wrbtr TO l_wrbtr.

  •      WRITE l_wrbtr TO wa_item-wrbtr.

  • BEGIN OF SRR 25764

  •      REPLACE ',' WITH '.' INTO v_wrbtr.      "SRR25080

  MOVE t_item-wrbtr TO v_wrbtr.

  DO.

   REPLACE ',' WITH '' INTO v_wrbtr.

   condense v_wrbtr  no-gaps.

  ENDDO.

  • END OF SRR 25764

      WRITE v_wrbtr TO wa_item-wrbtr.

  • End of SRR-17283

 

  •      WRITE l_dmbtr TO wa_item-dmbtr.         "DEVK919700

*Selecting debit/credit indicator according to the posting key

*and populating the same in item table

 

  • Start of SRR-18527

  •      SELECT SINGLE shkzg FROM bseg

  •             INTO v_shkzg

  •             WHERE bschl = wa_item-bschl.

      SELECT SINGLE shkzg FROM tbsl

             INTO v_shkzg

             WHERE bschl = wa_item-bschl.

  • End of SRR-18527

 

      MOVE v_shkzg TO wa_item-shkzg.

      CLEAR v_shkzg.

  •     CLEAR wa_item-vbund.                     "DEVK919700

          APPEND wa_item TO t_item.

  •     ENDIF.

 

*------ Begin of Insertion SRR23649           "DEVK928551

        PERFORM fill_bbseg.

*------ End of Insertion SRR23649             "DEVK928551

 

  • SRR-25080 Begin.

**Determining the sum of debit & Credit amounts.

      IF wa_item-bschl eq '40'.

        v_net = v_net + wa_item-wrbtr.

      ELSEIF wa_item-bschl eq '50'.

        v_net = v_net - wa_item-wrbtr.

      else.

    • Check for GL Accounts.

        v_flag = 'X'.

      ENDIF.

 

      IF wa_item-mwskz eq ' '.

    • Check for tax code.

        v_flag = 'X'.

      ENDIF.

 

    ENDIF.

 

  ENDLOOP.

 

     if v_flag = ' 'and

       v_net eq '0'.

       wa_bbkpf-xmwst = c_sep .

     ELSE.

       wa_bbkpf-xmwst = 'X'.    "Calculate tax automatically

     ENDIF.

 

     if v_check = 'X'.

    • To append the last header record.

       APPEND  wa_bbkpf TO t1_file.

       clear : v_flag,

               v_net.

     ENDIF.

 

    • To append the header & item records to final table.

   LOOP at t1_file.

       wa1_file = t1_file.

       wafile = wa1_file.

       append wafile to tfile.

       delete table t1_file.

 

       CLEAR: wafile,

              wa1_file.

 

 

       LOOP at t_temp.

    • Counter to check no. of item records under each header.

         if t_temp-posnr > v_counter.

           wafile = t_temp.

           append wafile to tfile.

           DELETE table t_temp.

           v_counter = v_counter + 1.

 

           CLEAR: wafile,

                  wa_temp.

         ELSE.   "SRR25080

           EXIT. "SRR25080

         ENDIF.

       ENDLOOP.

       clear v_counter.

 

 

     ENDLOOP.

 

 

*SRR-25080 End.

 

 

ENDFORM.                    " SPLIT_DATA

*----


*

  •      Form  format_date

*----


*

  •       text

*----


*

FORM format_date

    CHANGING change_date.

  DATA: l_date(10) TYPE c.

 

  CONCATENATE change_date6(4) change_date0(2) change_date+3(2)

    INTO l_date SEPARATED BY space.

  CONDENSE l_date NO-GAPS.

  MOVE l_date TO change_date.

 

 

 

ENDFORM.                    " format_date

*&----


*

*&      Form  f_create_bgr00

*&----


*

  •       text

*----


*

  • -->  p1        text

  • <--  p2        text

*----


*

FORM f_create_bgr00 .

*-- Fill BGR00 struture and pass to table T_POST

  CLEAR wa_bgr00.

  wa_bgr00-stype        =    0.

  wa_bgr00-group        =    c_session_name. " 'BDC SESSION NAME'.

  wa_bgr00-mandt        =    sy-mandt.

  wa_bgr00-usnam        =    sy-uname.

  wa_bgr00-start        =    ' '.

  wa_bgr00-xkeep        =    'X'.

  wa_bgr00-nodata       =    c_sep.

  APPEND  wa_bgr00 TO tfile.

 

ENDFORM.                    " f_create_bgr00

*&----


*

*&      Form  f_create_bbkpf

*&----


*

  •      This Perform is commented for SRR-23649

  •      This functionality is called in previous

  •      perfrom split_data.

*----


*

FORM f_create_bbkpf .

  • DATA :l_con_date(10) TYPE c,

  •        v_no_of_fieldsin_bbkpf TYPE i,

  •        v_flag.

**-- Getting the No of Fields in the Structure BBKPF

  • DESCRIBE FIELD wa_bbkpf TYPE v_flag

  •                    COMPONENTS v_no_of_fieldsin_bbkpf.

  • CLEAR v_flag.

*

*

  • CLEAR wa_bbkpf.

  • READ TABLE t_hedr_temp INTO wa_header INDEX 1.

  • IF sy-subrc EQ 0.

  •    wa_bbkpf-stype = 1.

*

**-----Begin of insertion SRR-23776            "  DEVK928551

*

  •    CLEAR     wa_constant.

  •    REFRESH   t_constant[].

    • fetching all company codes and document types from

    • zconstant table

*

  •    SELECT * FROM zconstant

  •    INTO TABLE t_constant

  •    WHERE objid = c_objectid_070

  •    AND   pname = sy-repid.

    • comparing comapny codes with NA company codes

  •    READ TABLE t_constant INTO wa_constant

  •    WITH KEY fval = wa_header-bukrs

  •    TRANSPORTING NO FIELDS.

    • Comparing document types existing in the

    • program if company codes exist

  •    IF sy-subrc EQ 0.

  •      READ TABLE t_constant INTO wa_constant

  •      WITH KEY fval = wa_header-blart

  •      TRANSPORTING NO FIELDS.

    • if company codes relates to north america and document type is

    • (KR, KG, KA, DR, DG, DA and YI) calling transaction FB01

  •      IF sy-subrc = 0.

  •        wa_bbkpf-tcode =   'FB01'.

    • if company code exist but document type does not exist

    • continue with normal processing

  •      ELSEIF p_act EQ 'X'.

  •        wa_bbkpf-tcode =   'FBS1'.

  •      ELSEIF p_park EQ 'X'.

  •        wa_bbkpf-tcode =   'FBV1'.

  •      ENDIF.

    • if company code does not exist continue with normal processing

*

*

*

  •    ELSEIF p_act EQ 'X'.

  •      wa_bbkpf-tcode =   'FBS1'.

  •    ELSEIF p_park EQ 'X'.

  •      wa_bbkpf-tcode =   'FBV1'.

  •    ENDIF.

**----

-


End of Insertion SRR-23776         "  DEVK928551

*

  •    WRITE: wa_header-budat TO wa_bbkpf-budat.

  •    WRITE: wa_header-bldat TO wa_bbkpf-bldat.

  •    WRITE: wa_header-stodt TO wa_bbkpf-stodt.

  •    wa_bbkpf-blart = wa_header-blart.

  •    wa_bbkpf-bukrs = wa_header-bukrs.

    •   wa_bbkpf-monat = wa_header-monat.       "  DEVK919700

  •    wa_bbkpf-xmwst = 'X'.    "Calculate tax automatically

  •    wa_bbkpf-waers = wa_header-waers.

  •    wa_bbkpf-xblnr = wa_header-xblnr.

    •    wa_bbkpf-kursf = wa_header-kursf.      "DEVK919700

  •    wa_bbkpf-bktxt = wa_header-bktxt.

    •    wa_bbkpf-wwert = wa_header-wwert.      "DEVK919700

  •    wa_bbkpf-stgrd = wa_header-stgrd.

*

***--- Assigning the Structures to field symbols

  •    ASSIGN wa_bbkpf TO <f1>.

  •    DO v_no_of_fieldsin_bbkpf TIMES.

  •      ASSIGN COMPONENT sy-index OF STRUCTURE <f1> TO <f3>.

  •      IF <f3> IS INITIAL.

  •         <f3> = c_sep.

  •      ENDIF.

  •    ENDDO.

  •    APPEND  wa_bbkpf TO tfile.

  •    CLEAR wa_bbkpf.                      "DEVK928551

  • ENDIF.

 

ENDFORM.                    " f_create_bbkpf

*&----


*

*&      Form  f_create_bbseg

*&----


*

  •      This Perform is commented for SRR-23649

  •      This functionality is called in previous

  •      perfrom split_data.

*----


*

FORM f_create_bbseg .

 

  • DATA v_flag(1).

  • DATA v_no_of_fieldsin_bbseg TYPE i.

**-- Getting the No of Fields in the Structure ZBSEG

  • DESCRIBE FIELD wa_bbseg TYPE v_flag

  •                    COMPONENTS v_no_of_fieldsin_bbseg.

*

  • CLEAR wa_bbseg.

*

    • ----- Begin of change SRR23649

    • changes include renaming of t_item to

    • t_item_temp

  • wa_bbseg-stype  = 2.              "Record Type

  • wa_bbseg-tbnam  = 'BBSEG'.        "Table Name

  • wa_bbseg-kostl  = t_item-kostl.   "Cost Centre

  • wa_bbseg-prctr  = t_item-prctr.

  • wa_bbseg-newbs  = t_item-bschl.    "Posting Key

  • wa_bbseg-newko  = t_item-hkont.    "Ac No.

  • wa_bbseg-wrbtr  = t_item-wrbtr.    "Amount in Doc Currency

    • wa_bbseg-rke_bukrs  = t_item-bukrs. "Company code     "DEVK919700

  • wa_bbseg-pprct  = t_item-pprct.    "Partner Profit Center

    • wa_bbseg-vbund  = t_item-vbund.    "Trading partner  "DEVK919700

  • wa_bbseg-aufnr  = t_item-aufnr.    "Order

  • wa_bbseg-mwskz  = t_item-mwskz.    "Tax Code

  • wa_bbseg-sgtxt  = t_item-sgtxt.    "Line item text

  • wa_bbseg-zzcgrp = t_item-zzcgrp.   "Customer Group

  • wa_bbseg-zzplat = t_item-zzplat.   "Platform

    • wa_bbseg-newbw  = t_item-bewar.    "Transaction Type

  • wa_bbseg-projk  = t_item-projk.    "WBS Element

  • wa_bbseg-zuonr  = t_item-zuonr.    "Assignment no.

**Begin of deletion DEVK919700

    • wa_bbseg-dmbtr  = t_item-dmbtr.    "Amount in local Currency

**End of deletion DEVK919700

  • wa_bbseg-pernr  = t_item-pernr.    "Personnel No.

  • wa_bbseg-bewar  = t_item-bewar.    "Transaction type

***--- Filling with Special Character.

  • ASSIGN wa_bbseg TO <f1>.

  • DO v_no_of_fieldsin_bbseg TIMES.

  •    ASSIGN COMPONENT sy-index OF STRUCTURE <f1> TO <f3>.

  •    IF <f3> IS INITIAL.

  •      <f3> = c_sep.

  •    ENDIF.

  • ENDDO.

  • APPEND wa_bbseg  TO tfile.

 

ENDFORM.                    " f_create_bbseg

*&----


*

*&      Form  f_fill_bbkpf

*&----


*

  •      Perform to fill bbkpf table which will be used to fill

  •      final internal structure tfile

*----


*

form f_fill_bbkpf .

 

DATA :  l_con_date(10) TYPE c,

        v_no_of_fieldsin_bbkpf TYPE i,

        v_flag.

*-- Getting the No of Fields in the Structure BBKPF

  DESCRIBE FIELD wa_bbkpf TYPE v_flag

                    COMPONENTS v_no_of_fieldsin_bbkpf.

  CLEAR v_flag.

 

 

  CLEAR wa_bbkpf.

    wa_bbkpf-stype = 1.

 

*-----Begin of insertion SRR-23776            "  DEVK928551

 

    CLEAR     wa_constant.

    REFRESH   t_constant[].

  • fetching all company codes and document types from

  • zconstant table

 

    SELECT * FROM zconstant

    INTO TABLE t_constant

    WHERE objid = c_objectid_070

    AND   pname = sy-repid.

  • comparing comapny codes with NA company codes

    READ TABLE t_constant INTO wa_constant

    WITH KEY fval = wa_header-bukrs

    TRANSPORTING NO FIELDS.

  • Comparing document types existing in the

  • program if company codes exist

    IF sy-subrc EQ 0.

      READ TABLE t_constant INTO wa_constant

      WITH KEY fval = wa_header-blart

      TRANSPORTING NO FIELDS.

  • if company codes relates to north america and document type is

  • (KR, KG, KA, DR, DG, DA and YI) calling transaction FB01

      IF sy-subrc = 0.

        wa_bbkpf-tcode =   'FB01'.

  • if company code exist but document type does not exist

  • continue with normal processing

      ELSEIF p_act EQ 'X'.

        wa_bbkpf-tcode =   'FBS1'.

      ELSEIF p_park EQ 'X'.

        wa_bbkpf-tcode =   'FBV1'.

      ENDIF.

  • if company code does not exist continue with normal processing

 

    ELSEIF p_act EQ 'X'.

      wa_bbkpf-tcode =   'FBS1'.

    ELSEIF p_park EQ 'X'.

      wa_bbkpf-tcode =   'FBV1'.

    ENDIF.

 

*-----End of insertion SRR-23776            "  DEVK928551

 

    wa_header-header = v_h.

 

    WRITE: wa_header-budat TO wa_bbkpf-budat.

    WRITE: wa_header-bldat TO wa_bbkpf-bldat.

    WRITE: wa_header-stodt TO wa_bbkpf-stodt.

    wa_bbkpf-blart = wa_header-blart.

    wa_bbkpf-bukrs = wa_header-bukrs.

  •   wa_bbkpf-monat = wa_header-monat.       "DEVK919700

  •   wa_bbkpf-xmwst = 'X'.    "Calculate tax automatically     SRR-25080

    wa_bbkpf-waers = wa_header-waers.

    wa_bbkpf-xblnr = wa_header-xblnr.

  •    wa_bbkpf-kursf = wa_header-kursf.      "DEVK919700

    wa_bbkpf-bktxt = wa_header-bktxt.

  •    wa_bbkpf-wwert = wa_header-wwert.      "DEVK919700

    wa_bbkpf-stgrd = wa_header-stgrd.

 

**--- Assigning the Structures to field symbols

    ASSIGN wa_bbkpf TO  = c_sep.

      ENDIF.

    ENDDO.

 

*SRR-25080 Begin

  •    APPEND  wa_bbkpf TO t1_file.

  •    CLEAR wa_bbkpf.                         "DEVK928551

*SRR-25080 End.

 

endform.                    " f_fill_bbkpf

*&----


*

*&      Form  fill_bbseg

*&----


*

  •       Filling item level details in final file

  •       tfile

*----


*

 

 

form fill_bbseg .

DATA v_flag(1).

   wa_item-item = 'i'.

  •          DATA v_flag(1).

  DATA v_no_of_fieldsin_bbseg TYPE i.

 

*-- Getting the No of Fields in the Structure ZBSEG

  DESCRIBE FIELD wa_bbseg TYPE v_flag

                    COMPONENTS v_no_of_fieldsin_bbseg.

 

  CLEAR wa_bbseg.

 

  • ----- Begin of change SRR23649

  • changes include renaming of t_item to

  • t_item_temp

  IF wa_item-bschl is not initial.

  wa_bbseg-stype  = 2.              "Record Type

  wa_bbseg-tbnam  = 'BBSEG'.        "Table Name

  wa_bbseg-kostl  = wa_item-kostl.   "Cost Centre

  wa_bbseg-prctr  = wa_item-prctr.

  wa_bbseg-newbs  = wa_item-bschl.    "Posting Key

  wa_bbseg-newko  = wa_item-hkont.    "Ac No.

  wa_bbseg-wrbtr  = wa_item-wrbtr.    "Amount in Doc Currency

  • wa_bbseg-rke_bukrs  = t_item-bukrs. "Company code     "DEVK919700

  wa_bbseg-pprct  = wa_item-pprct.    "Partner Profit Center

  • wa_bbseg-vbund  = t_item-vbund.    "Trading partner  "DEVK919700

  wa_bbseg-aufnr  = wa_item-aufnr.    "Order

  wa_bbseg-mwskz  = wa_item-mwskz.    "Tax Code

  wa_bbseg-sgtxt  = wa_item-sgtxt.    "Line item text

  wa_bbseg-zzcgrp = wa_item-zzcgrp.   "Customer Group

  wa_bbseg-zzplat = wa_item-zzplat.   "Platform

  wa_bbseg-zzpdt  = wa_item-zzpdt.    "Product Code     "SIR-06394

  • wa_bbseg-newbw  = t_item-bewar.    "Transaction Type

  wa_bbseg-projk  = wa_item-projk.    "WBS Element

  wa_bbseg-zuonr  = wa_item-zuonr.    "Assignment no.

*Begin of deletion DEVK919700

  • wa_bbseg-dmbtr  = t_item-dmbtr.    "Amount in local Currency

*End of deletion DEVK919700

  wa_bbseg-pernr  = wa_item-pernr.    "Personnel No.

  wa_bbseg-bewar  = wa_item-bewar.    "Transaction type

**--- Filling with Special Character.

  ASSIGN wa_bbseg TO  = c_sep.

    ENDIF.

  ENDDO.

  • SRR-25080 Begin.

  move wa_bbseg to wa_temp.

  wa_temp-posnr = wa_item-posnr.

  APPEND wa_temp to t_temp.

  ENDIF.

*----

-


End of Insertion SRR  23649      "  DEVK928551

 

endform.                    " fill_bbseg

 

Regards,

Hema

 

Viewing all 8332 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>